Commit 0e058a8a6aab56565677dc3a7f994b0c8f191a48
1 parent
2d72c572
Virtio-console conversion
Signed-off-by: Paul Brook <paul@codesourcery.com>
Showing
4 changed files
with
17 additions
and
24 deletions
hw/pc.c
| @@ -33,7 +33,6 @@ | @@ -33,7 +33,6 @@ | ||
| 33 | #include "boards.h" | 33 | #include "boards.h" |
| 34 | #include "monitor.h" | 34 | #include "monitor.h" |
| 35 | #include "fw_cfg.h" | 35 | #include "fw_cfg.h" |
| 36 | -#include "virtio-console.h" | ||
| 37 | #include "hpet_emul.h" | 36 | #include "hpet_emul.h" |
| 38 | #include "watchdog.h" | 37 | #include "watchdog.h" |
| 39 | #include "smbios.h" | 38 | #include "smbios.h" |
| @@ -1147,8 +1146,9 @@ static void pc_init1(ram_addr_t ram_size, | @@ -1147,8 +1146,9 @@ static void pc_init1(ram_addr_t ram_size, | ||
| 1147 | /* Add virtio console devices */ | 1146 | /* Add virtio console devices */ |
| 1148 | if (pci_enabled) { | 1147 | if (pci_enabled) { |
| 1149 | for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) { | 1148 | for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) { |
| 1150 | - if (virtcon_hds[i]) | ||
| 1151 | - virtio_console_init(pci_bus, virtcon_hds[i]); | 1149 | + if (virtcon_hds[i]) { |
| 1150 | + pci_create_simple(pci_bus, -1, "virtio-console"); | ||
| 1151 | + } | ||
| 1152 | } | 1152 | } |
| 1153 | } | 1153 | } |
| 1154 | } | 1154 | } |
hw/ppc440_bamboo.c
| @@ -16,7 +16,6 @@ | @@ -16,7 +16,6 @@ | ||
| 16 | #include "net.h" | 16 | #include "net.h" |
| 17 | #include "hw.h" | 17 | #include "hw.h" |
| 18 | #include "pci.h" | 18 | #include "pci.h" |
| 19 | -#include "virtio-console.h" | ||
| 20 | #include "boards.h" | 19 | #include "boards.h" |
| 21 | #include "sysemu.h" | 20 | #include "sysemu.h" |
| 22 | #include "ppc440.h" | 21 | #include "ppc440.h" |
| @@ -118,8 +117,9 @@ static void bamboo_init(ram_addr_t ram_size, | @@ -118,8 +117,9 @@ static void bamboo_init(ram_addr_t ram_size, | ||
| 118 | 117 | ||
| 119 | /* Add virtio console devices */ | 118 | /* Add virtio console devices */ |
| 120 | for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) { | 119 | for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) { |
| 121 | - if (virtcon_hds[i]) | ||
| 122 | - virtio_console_init(pcibus, virtcon_hds[i]); | 120 | + if (virtcon_hds[i]) { |
| 121 | + pci_create_simple(pcibus, -1, "virtio-console"); | ||
| 122 | + } | ||
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | /* Register network interfaces. */ | 125 | /* Register network interfaces. */ |
hw/virtio-console.c
| @@ -123,35 +123,31 @@ static int virtio_console_load(QEMUFile *f, void *opaque, int version_id) | @@ -123,35 +123,31 @@ static int virtio_console_load(QEMUFile *f, void *opaque, int version_id) | ||
| 123 | return 0; | 123 | return 0; |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | -void *virtio_console_init(PCIBus *bus, CharDriverState *chr) | 126 | +static void virtio_console_init(PCIDevice *pci_dev) |
| 127 | { | 127 | { |
| 128 | VirtIOConsole *s; | 128 | VirtIOConsole *s; |
| 129 | - PCIDevice *d; | ||
| 130 | - | ||
| 131 | - d = pci_register_device(bus, "virtio-console", sizeof(VirtIOConsole), | ||
| 132 | - -1, NULL, NULL); | ||
| 133 | - if (!d) | ||
| 134 | - return NULL; | ||
| 135 | - | ||
| 136 | - s = (VirtIOConsole *)virtio_init_pci(d, "virtio-console", | 129 | + s = (VirtIOConsole *)virtio_init_pci(pci_dev, "virtio-console", |
| 137 | PCI_VENDOR_ID_REDHAT_QUMRANET, | 130 | PCI_VENDOR_ID_REDHAT_QUMRANET, |
| 138 | PCI_DEVICE_ID_VIRTIO_CONSOLE, | 131 | PCI_DEVICE_ID_VIRTIO_CONSOLE, |
| 139 | PCI_VENDOR_ID_REDHAT_QUMRANET, | 132 | PCI_VENDOR_ID_REDHAT_QUMRANET, |
| 140 | VIRTIO_ID_CONSOLE, | 133 | VIRTIO_ID_CONSOLE, |
| 141 | PCI_CLASS_DISPLAY_OTHER, 0x00, | 134 | PCI_CLASS_DISPLAY_OTHER, 0x00, |
| 142 | 0); | 135 | 0); |
| 143 | - if (s == NULL) | ||
| 144 | - return NULL; | ||
| 145 | - | ||
| 146 | s->vdev.get_features = virtio_console_get_features; | 136 | s->vdev.get_features = virtio_console_get_features; |
| 147 | 137 | ||
| 148 | s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input); | 138 | s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input); |
| 149 | s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output); | 139 | s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output); |
| 150 | 140 | ||
| 151 | - s->chr = chr; | ||
| 152 | - qemu_chr_add_handlers(chr, vcon_can_read, vcon_read, vcon_event, s); | 141 | + s->chr = qdev_init_chardev(&pci_dev->qdev); |
| 142 | + qemu_chr_add_handlers(s->chr, vcon_can_read, vcon_read, vcon_event, s); | ||
| 153 | 143 | ||
| 154 | register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s); | 144 | register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s); |
| 145 | +} | ||
| 155 | 146 | ||
| 156 | - return &s->vdev; | 147 | +static void virtio_console_register_devices(void) |
| 148 | +{ | ||
| 149 | + pci_qdev_register("virtio-console", sizeof(VirtIOConsole), | ||
| 150 | + virtio_console_init); | ||
| 157 | } | 151 | } |
| 152 | + | ||
| 153 | +device_init(virtio_console_register_devices) |
hw/virtio-console.h