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" 16d6454270SMarkus Armbruster #include "migration/vmstate.h" 170b8fa32fSMarkus Armbruster #include "qemu/module.h" 188d8a30d1SEric Auger #include "qemu/error-report.h" 1962d95512SEric Auger 2062d95512SEric Auger static void amd_xgbe_realize(DeviceState *dev, Error **errp) 2162d95512SEric Auger { 2262d95512SEric Auger VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev); 2362d95512SEric Auger VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev); 2462d95512SEric Auger 258d8a30d1SEric Auger warn_report("-device vfio-amd-xgbe is deprecated"); 2662d95512SEric Auger vdev->compat = g_strdup("amd,xgbe-seattle-v1a"); 27a49531ebSEric Auger vdev->num_compat = 1; 2862d95512SEric Auger 2962d95512SEric Auger k->parent_realize(dev, errp); 3062d95512SEric Auger } 3162d95512SEric Auger 3262d95512SEric Auger static const VMStateDescription vfio_platform_amd_xgbe_vmstate = { 33da56e330SLi Qiang .name = "vfio-amd-xgbe", 3462d95512SEric Auger .unmigratable = 1, 3562d95512SEric Auger }; 3662d95512SEric Auger 37*12d1a768SPhilippe Mathieu-Daudé static void vfio_amd_xgbe_class_init(ObjectClass *klass, const void *data) 3862d95512SEric Auger { 3962d95512SEric Auger DeviceClass *dc = DEVICE_CLASS(klass); 4062d95512SEric Auger VFIOAmdXgbeDeviceClass *vcxc = 4162d95512SEric Auger VFIO_AMD_XGBE_DEVICE_CLASS(klass); 42bf853881SPhilippe Mathieu-Daudé device_class_set_parent_realize(dc, amd_xgbe_realize, 43bf853881SPhilippe Mathieu-Daudé &vcxc->parent_realize); 4462d95512SEric Auger dc->desc = "VFIO AMD XGBE"; 4562d95512SEric Auger dc->vmsd = &vfio_platform_amd_xgbe_vmstate; 4662d95512SEric Auger } 4762d95512SEric Auger 4862d95512SEric Auger static const TypeInfo vfio_amd_xgbe_dev_info = { 4962d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 5062d95512SEric Auger .parent = TYPE_VFIO_PLATFORM, 5162d95512SEric Auger .instance_size = sizeof(VFIOAmdXgbeDevice), 5262d95512SEric Auger .class_init = vfio_amd_xgbe_class_init, 5362d95512SEric Auger .class_size = sizeof(VFIOAmdXgbeDeviceClass), 5462d95512SEric Auger }; 5562d95512SEric Auger 5662d95512SEric Auger static void register_amd_xgbe_dev_type(void) 5762d95512SEric Auger { 5862d95512SEric Auger type_register_static(&vfio_amd_xgbe_dev_info); 5962d95512SEric Auger } 6062d95512SEric Auger 6162d95512SEric Auger type_init(register_amd_xgbe_dev_type) 62