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" 16*0b8fa32fSMarkus Armbruster #include "qemu/module.h" 1762d95512SEric Auger 1862d95512SEric Auger static void amd_xgbe_realize(DeviceState *dev, Error **errp) 1962d95512SEric Auger { 2062d95512SEric Auger VFIOPlatformDevice *vdev = VFIO_PLATFORM_DEVICE(dev); 2162d95512SEric Auger VFIOAmdXgbeDeviceClass *k = VFIO_AMD_XGBE_DEVICE_GET_CLASS(dev); 2262d95512SEric Auger 2362d95512SEric Auger vdev->compat = g_strdup("amd,xgbe-seattle-v1a"); 24a49531ebSEric Auger vdev->num_compat = 1; 2562d95512SEric Auger 2662d95512SEric Auger k->parent_realize(dev, errp); 2762d95512SEric Auger } 2862d95512SEric Auger 2962d95512SEric Auger static const VMStateDescription vfio_platform_amd_xgbe_vmstate = { 30da56e330SLi Qiang .name = "vfio-amd-xgbe", 3162d95512SEric Auger .unmigratable = 1, 3262d95512SEric Auger }; 3362d95512SEric Auger 3462d95512SEric Auger static void vfio_amd_xgbe_class_init(ObjectClass *klass, void *data) 3562d95512SEric Auger { 3662d95512SEric Auger DeviceClass *dc = DEVICE_CLASS(klass); 3762d95512SEric Auger VFIOAmdXgbeDeviceClass *vcxc = 3862d95512SEric Auger VFIO_AMD_XGBE_DEVICE_CLASS(klass); 39bf853881SPhilippe Mathieu-Daudé device_class_set_parent_realize(dc, amd_xgbe_realize, 40bf853881SPhilippe Mathieu-Daudé &vcxc->parent_realize); 4162d95512SEric Auger dc->desc = "VFIO AMD XGBE"; 4262d95512SEric Auger dc->vmsd = &vfio_platform_amd_xgbe_vmstate; 43e4f4fb1eSEduardo Habkost /* Supported by TYPE_VIRT_MACHINE */ 44e4f4fb1eSEduardo Habkost dc->user_creatable = true; 4562d95512SEric Auger } 4662d95512SEric Auger 4762d95512SEric Auger static const TypeInfo vfio_amd_xgbe_dev_info = { 4862d95512SEric Auger .name = TYPE_VFIO_AMD_XGBE, 4962d95512SEric Auger .parent = TYPE_VFIO_PLATFORM, 5062d95512SEric Auger .instance_size = sizeof(VFIOAmdXgbeDevice), 5162d95512SEric Auger .class_init = vfio_amd_xgbe_class_init, 5262d95512SEric Auger .class_size = sizeof(VFIOAmdXgbeDeviceClass), 5362d95512SEric Auger }; 5462d95512SEric Auger 5562d95512SEric Auger static void register_amd_xgbe_dev_type(void) 5662d95512SEric Auger { 5762d95512SEric Auger type_register_static(&vfio_amd_xgbe_dev_info); 5862d95512SEric Auger } 5962d95512SEric Auger 6062d95512SEric Auger type_init(register_amd_xgbe_dev_type) 61