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 14*974dc73dSPeter 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); 3762d95512SEric Auger vcxc->parent_realize = dc->realize; 3862d95512SEric Auger dc->realize = amd_xgbe_realize; 3962d95512SEric Auger dc->desc = "VFIO AMD XGBE"; 4062d95512SEric Auger dc->vmsd = &vfio_platform_amd_xgbe_vmstate; 4162d95512SEric Auger } 4262d95512SEric Auger 4362d95512SEric Auger static const TypeInfo vfio_amd_xgbe_dev_info = { 4462d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 4562d95512SEric Auger .parent = TYPE_VFIO_PLATFORM, 4662d95512SEric Auger .instance_size = sizeof(VFIOAmdXgbeDevice), 4762d95512SEric Auger .class_init = vfio_amd_xgbe_class_init, 4862d95512SEric Auger .class_size = sizeof(VFIOAmdXgbeDeviceClass), 4962d95512SEric Auger }; 5062d95512SEric Auger 5162d95512SEric Auger static void register_amd_xgbe_dev_type(void) 5262d95512SEric Auger { 5362d95512SEric Auger type_register_static(&vfio_amd_xgbe_dev_info); 5462d95512SEric Auger } 5562d95512SEric Auger 5662d95512SEric Auger type_init(register_amd_xgbe_dev_type) 57