 9d9ae0f07b
			
		
	
	
		9d9ae0f07b
		
	
	
	
	
		
			
			Add an empty element to the interfaces array, which is consistent with the behavior of other devices in qemu and fixes the crash on arm64. 0 0x0000fffff5c18550 in () at /usr/lib64/libc.so.6 1 0x0000fffff6c9cd6c in g_strdup () at /usr/lib64/libglib-2.0.so.0 2 0x0000aaaaab4945d8 in g_strdup_inline (str=<optimized out>) at /usr/include/glib-2.0/glib/gstrfuncs.h:321 3 type_new (info=info@entry=0xaaaaabc1b2c8 <virtio_gpu_rutabaga_pci_info>) at ../qom/object.c:133 4 0x0000aaaaab494f14 in type_register_internal (info=0xaaaaabc1b2c8 <virtio_gpu_rutabaga_pci_info>) at ../qom/object.c:143 5 type_register (info=0xaaaaabc1b2c8 <virtio_gpu_rutabaga_pci_info>) at ../qom/object.c:152 6 type_register_static (info=0xaaaaabc1b2c8 <virtio_gpu_rutabaga_pci_info>) at ../qom/object.c:157 7 type_register_static_array (infos=<optimized out>, nr_infos=<optimized out>) at ../qom/object.c:165 8 0x0000aaaaab6147e8 in module_call_init (type=type@entry=MODULE_INIT_QOM) at ../util/module.c:109 9 0x0000aaaaab10a0ec in qemu_init_subsystems () at ../system/runstate.c:817 10 0x0000aaaaab10d334 in qemu_init (argc=13, argv=0xfffffffff198) at ../system/vl.c:2760 11 0x0000aaaaaae4da6c in main (argc=<optimized out>, argv=<optimized out>) at ../system/main.c:47 Signed-off-by: Cong Liu <liucong2@kylinos.cn> Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20231031012515.15504-1-liucong2@kylinos.cn>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-or-later */
 | |
| 
 | |
| #include "qemu/osdep.h"
 | |
| #include "qapi/error.h"
 | |
| #include "qemu/module.h"
 | |
| #include "hw/pci/pci.h"
 | |
| #include "hw/qdev-properties.h"
 | |
| #include "hw/virtio/virtio.h"
 | |
| #include "hw/virtio/virtio-bus.h"
 | |
| #include "hw/virtio/virtio-gpu-pci.h"
 | |
| #include "qom/object.h"
 | |
| 
 | |
| #define TYPE_VIRTIO_GPU_RUTABAGA_PCI "virtio-gpu-rutabaga-pci"
 | |
| OBJECT_DECLARE_SIMPLE_TYPE(VirtIOGPURutabagaPCI, VIRTIO_GPU_RUTABAGA_PCI)
 | |
| 
 | |
| struct VirtIOGPURutabagaPCI {
 | |
|     VirtIOGPUPCIBase parent_obj;
 | |
| 
 | |
|     VirtIOGPURutabaga vdev;
 | |
| };
 | |
| 
 | |
| static void virtio_gpu_rutabaga_initfn(Object *obj)
 | |
| {
 | |
|     VirtIOGPURutabagaPCI *dev = VIRTIO_GPU_RUTABAGA_PCI(obj);
 | |
| 
 | |
|     virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
 | |
|                                 TYPE_VIRTIO_GPU_RUTABAGA);
 | |
|     VIRTIO_GPU_PCI_BASE(obj)->vgpu = VIRTIO_GPU_BASE(&dev->vdev);
 | |
| }
 | |
| 
 | |
| static const TypeInfo virtio_gpu_rutabaga_pci_info[] = {
 | |
|     {
 | |
|         .name = TYPE_VIRTIO_GPU_RUTABAGA_PCI,
 | |
|         .parent = TYPE_VIRTIO_GPU_PCI_BASE,
 | |
|         .instance_size = sizeof(VirtIOGPURutabagaPCI),
 | |
|         .instance_init = virtio_gpu_rutabaga_initfn,
 | |
|         .interfaces = (InterfaceInfo[]) {
 | |
|             { INTERFACE_CONVENTIONAL_PCI_DEVICE },
 | |
|             { },
 | |
|         }
 | |
|     },
 | |
| };
 | |
| 
 | |
| DEFINE_TYPES(virtio_gpu_rutabaga_pci_info)
 | |
| 
 | |
| module_obj(TYPE_VIRTIO_GPU_RUTABAGA_PCI);
 | |
| module_kconfig(VIRTIO_PCI);
 | |
| module_dep("hw-display-virtio-gpu-pci");
 |