mirror of https://gitee.com/openkylin/qemu.git
virtio-gpu property fixes, add testcase
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAABAgAGBQJVm5rAAAoJEEy22O7T6HE4Px4QANGC+gs7GUYVuD7vMwIb/nQr A9pTl9f2TDChXcMzEl7AgzJ2BtvsU1727GAWMHUQxuLIgxcIa/F6teW0ebTbh0ii SeVRWgAaFiWBaFOfoQsIQ5a9dFvEi/WwXGwJMfr4GLGqGAKc583FmbfBrP3eUSaM Isjdxi66WPGoBAP5Lf9MCDUnNOlNn9ekeGErBkI9RlbclQ5gwF2RgRcnDhtg2MLf JDw6GJ9JZCZM8JTad9IKb7kK8ACPlZY75Pca7sysrpVqs3cvoDgCzyQivyZxllRV tBojrBrykpaEzDPshu6a0PPI4a09wxXol68OmearUrEfWHGJJtUNTwKpEE0iwyFn P4GWwk0pDD4gJ31i83J6eU+ZqRdpW7W40KR+Ok0xCL7s6JuRo9QnFQGYtbLjxD9o 2bUNkkDi95d0CD4fyu0xSKt5phxcYqVw7aBjk3WsjmUCsN94Oi6OK16r++t/9xai X68D11tFJAzo4FhWNgFyw996kKbuuCaHGbXusadJSB6C8DqKTKXXyBSo1p8icDBj Oq6g+S1G9IvjUw061qwKSI8rU1nCrbTJ9WGGOpUYYM3+5MldDZ1DSR100BURieqG Zif2fWJALCCWnZHfFmN5kJGzVa5swdLoZmce+hEo/taOYVg2ulGvoWgaZgY6k/aL CKiBQe59o5jgG9XCdvq0 =sTBa -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/kraxel/tags/pull-vga-20150707-1' into staging virtio-gpu property fixes, add testcase # gpg: Signature made Tue Jul 7 10:24:16 2015 BST using RSA key ID D3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" * remotes/kraxel/tags/pull-vga-20150707-1: virtio-gpu: add to display-vga test virtio-gpu: use virtio_instance_init_common, fixup properties virtio-gpu: update console device property. Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
aeb72188e0
|
@ -17,7 +17,6 @@
|
|||
#include "hw/virtio/virtio-gpu.h"
|
||||
|
||||
static Property virtio_gpu_pci_properties[] = {
|
||||
DEFINE_VIRTIO_GPU_PROPERTIES(VirtIOGPUPCI, vdev.conf),
|
||||
DEFINE_VIRTIO_GPU_PCI_PROPERTIES(VirtIOPCIProxy),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
@ -25,13 +24,21 @@ static Property virtio_gpu_pci_properties[] = {
|
|||
static void virtio_gpu_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
|
||||
{
|
||||
VirtIOGPUPCI *vgpu = VIRTIO_GPU_PCI(vpci_dev);
|
||||
VirtIOGPU *g = &vgpu->vdev;
|
||||
DeviceState *vdev = DEVICE(&vgpu->vdev);
|
||||
int i;
|
||||
|
||||
qdev_set_parent_bus(vdev, BUS(&vpci_dev->bus));
|
||||
/* force virtio-1.0 */
|
||||
vpci_dev->flags &= ~VIRTIO_PCI_FLAG_DISABLE_MODERN;
|
||||
vpci_dev->flags |= VIRTIO_PCI_FLAG_DISABLE_LEGACY;
|
||||
object_property_set_bool(OBJECT(vdev), true, "realized", errp);
|
||||
|
||||
for (i = 0; i < g->conf.max_outputs; i++) {
|
||||
object_property_set_link(OBJECT(g->scanout[i].con),
|
||||
OBJECT(vpci_dev),
|
||||
"device", errp);
|
||||
}
|
||||
}
|
||||
|
||||
static void virtio_gpu_pci_class_init(ObjectClass *klass, void *data)
|
||||
|
@ -49,8 +56,9 @@ static void virtio_gpu_pci_class_init(ObjectClass *klass, void *data)
|
|||
static void virtio_gpu_initfn(Object *obj)
|
||||
{
|
||||
VirtIOGPUPCI *dev = VIRTIO_GPU_PCI(obj);
|
||||
object_initialize(&dev->vdev, sizeof(dev->vdev), TYPE_VIRTIO_GPU);
|
||||
object_property_add_child(obj, "virtio-backend", OBJECT(&dev->vdev), NULL);
|
||||
|
||||
virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
|
||||
TYPE_VIRTIO_GPU);
|
||||
}
|
||||
|
||||
static const TypeInfo virtio_gpu_pci_info = {
|
||||
|
|
|
@ -871,7 +871,7 @@ static void virtio_gpu_reset(VirtIODevice *vdev)
|
|||
}
|
||||
|
||||
static Property virtio_gpu_properties[] = {
|
||||
DEFINE_VIRTIO_GPU_PROPERTIES(VirtIOGPU, conf),
|
||||
DEFINE_PROP_UINT32("max_outputs", VirtIOGPU, conf.max_outputs, 1),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
|
|
|
@ -79,6 +79,7 @@ static void virtio_vga_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
|
|||
VirtIOGPU *g = &vvga->vdev;
|
||||
VGACommonState *vga = &vvga->vga;
|
||||
uint32_t offset;
|
||||
int i;
|
||||
|
||||
/* init vga compat bits */
|
||||
vga->vram_size_mb = 8;
|
||||
|
@ -120,6 +121,12 @@ static void virtio_vga_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
|
|||
|
||||
vga->con = g->scanout[0].con;
|
||||
graphic_console_set_hwops(vga->con, &virtio_vga_ops, vvga);
|
||||
|
||||
for (i = 0; i < g->conf.max_outputs; i++) {
|
||||
object_property_set_link(OBJECT(g->scanout[i].con),
|
||||
OBJECT(vpci_dev),
|
||||
"device", errp);
|
||||
}
|
||||
}
|
||||
|
||||
static void virtio_vga_reset(DeviceState *dev)
|
||||
|
@ -131,7 +138,6 @@ static void virtio_vga_reset(DeviceState *dev)
|
|||
}
|
||||
|
||||
static Property virtio_vga_properties[] = {
|
||||
DEFINE_VIRTIO_GPU_PROPERTIES(VirtIOVGA, vdev.conf),
|
||||
DEFINE_VIRTIO_GPU_PCI_PROPERTIES(VirtIOPCIProxy),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
@ -155,8 +161,9 @@ static void virtio_vga_class_init(ObjectClass *klass, void *data)
|
|||
static void virtio_vga_inst_initfn(Object *obj)
|
||||
{
|
||||
VirtIOVGA *dev = VIRTIO_VGA(obj);
|
||||
object_initialize(&dev->vdev, sizeof(dev->vdev), TYPE_VIRTIO_GPU);
|
||||
object_property_add_child(obj, "virtio-backend", OBJECT(&dev->vdev), NULL);
|
||||
|
||||
virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
|
||||
TYPE_VIRTIO_GPU);
|
||||
}
|
||||
|
||||
static TypeInfo virtio_vga_info = {
|
||||
|
|
|
@ -112,9 +112,6 @@ extern const GraphicHwOps virtio_gpu_ops;
|
|||
VIRTIO_PCI_FLAG_USE_IOEVENTFD_BIT, false), \
|
||||
DEFINE_PROP_UINT32("vectors", _state, nvectors, 3)
|
||||
|
||||
#define DEFINE_VIRTIO_GPU_PROPERTIES(_state, _conf_field) \
|
||||
DEFINE_PROP_UINT32("max_outputs", _state, _conf_field.max_outputs, 1)
|
||||
|
||||
#define VIRTIO_GPU_FILL_CMD(out) do { \
|
||||
size_t s; \
|
||||
s = iov_to_buf(cmd->elem.out_sg, cmd->elem.out_num, 0, \
|
||||
|
|
|
@ -135,6 +135,9 @@ check-qtest-pci-y += tests/display-vga-test$(EXESUF)
|
|||
gcov-files-pci-y += hw/display/vga.c
|
||||
gcov-files-pci-y += hw/display/cirrus_vga.c
|
||||
gcov-files-pci-y += hw/display/vga-pci.c
|
||||
gcov-files-pci-y += hw/display/virtio-gpu.c
|
||||
gcov-files-pci-y += hw/display/virtio-gpu-pci.c
|
||||
gcov-files-pci-$(CONFIG_VIRTIO_VGA) += hw/display/virtio-vga.c
|
||||
check-qtest-pci-y += tests/intel-hda-test$(EXESUF)
|
||||
gcov-files-pci-y += hw/audio/intel-hda.c hw/audio/hda-codec.c
|
||||
|
||||
|
|
|
@ -36,6 +36,20 @@ static void pci_multihead(void)
|
|||
qtest_end();
|
||||
}
|
||||
|
||||
static void pci_virtio_gpu(void)
|
||||
{
|
||||
qtest_start("-vga none -device virtio-gpu-pci");
|
||||
qtest_end();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_VIRTIO_VGA
|
||||
static void pci_virtio_vga(void)
|
||||
{
|
||||
qtest_start("-vga none -device virtio-vga");
|
||||
qtest_end();
|
||||
}
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ret;
|
||||
|
@ -46,6 +60,10 @@ int main(int argc, char **argv)
|
|||
qtest_add_func("/display/pci/stdvga", pci_stdvga);
|
||||
qtest_add_func("/display/pci/secondary", pci_secondary);
|
||||
qtest_add_func("/display/pci/multihead", pci_multihead);
|
||||
qtest_add_func("/display/pci/virtio-gpu", pci_virtio_gpu);
|
||||
#ifdef CONFIG_VIRTIO_VGA
|
||||
qtest_add_func("/display/pci/virtio-vga", pci_virtio_vga);
|
||||
#endif
|
||||
ret = g_test_run();
|
||||
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue