162d95512SEric Auger /* 262d95512SEric Auger * AMD XGBE VFIO device 362d95512SEric Auger * 462d95512SEric Auger * Copyright Linaro Limited, 2015 562d95512SEric Auger * 662d95512SEric Auger * Authors: 762d95512SEric Auger * Eric Auger <eric.auger@linaro.org> 862d95512SEric Auger * 962d95512SEric Auger * This work is licensed under the terms of the GNU GPL, version 2. See 1062d95512SEric Auger * the COPYING file in the top-level directory. 1162d95512SEric Auger * 1262d95512SEric Auger */ 1362d95512SEric Auger 14974dc73dSPeter Maydell #include "qemu/osdep.h" 1562d95512SEric Auger #include "hw/vfio/vfio-amd-xgbe.h" 1662d95512SEric Auger 1762d95512SEric Auger static void amd_xgbe_realize(DeviceState *dev, Error **errp) 1862d95512SEric Auger { 1962d95512SEric Auger VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev); 2062d95512SEric Auger VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev); 2162d95512SEric Auger 2262d95512SEric Auger vdev->compat = g_strdup("amd,xgbe-seattle-v1a"); 2362d95512SEric Auger 2462d95512SEric Auger k->parent_realize(dev, errp); 2562d95512SEric Auger } 2662d95512SEric Auger 2762d95512SEric Auger static const VMStateDescription vfio_platform_amd_xgbe_vmstate = { 2862d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 2962d95512SEric Auger .unmigratable = 1, 3062d95512SEric Auger }; 3162d95512SEric Auger 3262d95512SEric Auger static void vfio_amd_xgbe_class_init(ObjectClass *klass, void *data) 3362d95512SEric Auger { 3462d95512SEric Auger DeviceClass *dc = DEVICE_CLASS(klass); 3562d95512SEric Auger VFIOAmdXgbeDeviceClass *vcxc = 3662d95512SEric Auger VFIO_AMD_XGBE_DEVICE_CLASS(klass); 37*bf853881SPhilippe Mathieu-Daudé device_class_set_parent_realize(dc, amd_xgbe_realize, 38*bf853881SPhilippe Mathieu-Daudé &vcxc->parent_realize); 3962d95512SEric Auger dc->desc = "VFIO AMD XGBE"; 4062d95512SEric Auger dc->vmsd = &vfio_platform_amd_xgbe_vmstate; 41e4f4fb1eSEduardo Habkost /* Supported by TYPE_VIRT_MACHINE */ 42e4f4fb1eSEduardo Habkost dc->user_creatable = true; 4362d95512SEric Auger } 4462d95512SEric Auger 4562d95512SEric Auger static const TypeInfo vfio_amd_xgbe_dev_info = { 4662d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 4762d95512SEric Auger .parent = TYPE_VFIO_PLATFORM, 4862d95512SEric Auger .instance_size = sizeof(VFIOAmdXgbeDevice), 4962d95512SEric Auger .class_init = vfio_amd_xgbe_class_init, 5062d95512SEric Auger .class_size = sizeof(VFIOAmdXgbeDeviceClass), 5162d95512SEric Auger }; 5262d95512SEric Auger 5362d95512SEric Auger static void register_amd_xgbe_dev_type(void) 5462d95512SEric Auger { 5562d95512SEric Auger type_register_static(&vfio_amd_xgbe_dev_info); 5662d95512SEric Auger } 5762d95512SEric Auger 5862d95512SEric Auger type_init(register_amd_xgbe_dev_type) 59