mirror of https://github.com/xemu-project/xemu.git
Virtio-console conversion
Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
parent
2d72c5727f
commit
0e058a8a6a
6
hw/pc.c
6
hw/pc.c
|
@ -33,7 +33,6 @@
|
||||||
#include "boards.h"
|
#include "boards.h"
|
||||||
#include "monitor.h"
|
#include "monitor.h"
|
||||||
#include "fw_cfg.h"
|
#include "fw_cfg.h"
|
||||||
#include "virtio-console.h"
|
|
||||||
#include "hpet_emul.h"
|
#include "hpet_emul.h"
|
||||||
#include "watchdog.h"
|
#include "watchdog.h"
|
||||||
#include "smbios.h"
|
#include "smbios.h"
|
||||||
|
@ -1147,8 +1146,9 @@ static void pc_init1(ram_addr_t ram_size,
|
||||||
/* Add virtio console devices */
|
/* Add virtio console devices */
|
||||||
if (pci_enabled) {
|
if (pci_enabled) {
|
||||||
for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) {
|
for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) {
|
||||||
if (virtcon_hds[i])
|
if (virtcon_hds[i]) {
|
||||||
virtio_console_init(pci_bus, virtcon_hds[i]);
|
pci_create_simple(pci_bus, -1, "virtio-console");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "hw.h"
|
#include "hw.h"
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
#include "virtio-console.h"
|
|
||||||
#include "boards.h"
|
#include "boards.h"
|
||||||
#include "sysemu.h"
|
#include "sysemu.h"
|
||||||
#include "ppc440.h"
|
#include "ppc440.h"
|
||||||
|
@ -118,8 +117,9 @@ static void bamboo_init(ram_addr_t ram_size,
|
||||||
|
|
||||||
/* Add virtio console devices */
|
/* Add virtio console devices */
|
||||||
for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) {
|
for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) {
|
||||||
if (virtcon_hds[i])
|
if (virtcon_hds[i]) {
|
||||||
virtio_console_init(pcibus, virtcon_hds[i]);
|
pci_create_simple(pcibus, -1, "virtio-console");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Register network interfaces. */
|
/* Register network interfaces. */
|
||||||
|
|
|
@ -123,35 +123,31 @@ static int virtio_console_load(QEMUFile *f, void *opaque, int version_id)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *virtio_console_init(PCIBus *bus, CharDriverState *chr)
|
static void virtio_console_init(PCIDevice *pci_dev)
|
||||||
{
|
{
|
||||||
VirtIOConsole *s;
|
VirtIOConsole *s;
|
||||||
PCIDevice *d;
|
s = (VirtIOConsole *)virtio_init_pci(pci_dev, "virtio-console",
|
||||||
|
|
||||||
d = pci_register_device(bus, "virtio-console", sizeof(VirtIOConsole),
|
|
||||||
-1, NULL, NULL);
|
|
||||||
if (!d)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
s = (VirtIOConsole *)virtio_init_pci(d, "virtio-console",
|
|
||||||
PCI_VENDOR_ID_REDHAT_QUMRANET,
|
PCI_VENDOR_ID_REDHAT_QUMRANET,
|
||||||
PCI_DEVICE_ID_VIRTIO_CONSOLE,
|
PCI_DEVICE_ID_VIRTIO_CONSOLE,
|
||||||
PCI_VENDOR_ID_REDHAT_QUMRANET,
|
PCI_VENDOR_ID_REDHAT_QUMRANET,
|
||||||
VIRTIO_ID_CONSOLE,
|
VIRTIO_ID_CONSOLE,
|
||||||
PCI_CLASS_DISPLAY_OTHER, 0x00,
|
PCI_CLASS_DISPLAY_OTHER, 0x00,
|
||||||
0);
|
0);
|
||||||
if (s == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
s->vdev.get_features = virtio_console_get_features;
|
s->vdev.get_features = virtio_console_get_features;
|
||||||
|
|
||||||
s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input);
|
s->ivq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_input);
|
||||||
s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output);
|
s->dvq = virtio_add_queue(&s->vdev, 128, virtio_console_handle_output);
|
||||||
|
|
||||||
s->chr = chr;
|
s->chr = qdev_init_chardev(&pci_dev->qdev);
|
||||||
qemu_chr_add_handlers(chr, vcon_can_read, vcon_read, vcon_event, s);
|
qemu_chr_add_handlers(s->chr, vcon_can_read, vcon_read, vcon_event, s);
|
||||||
|
|
||||||
register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s);
|
register_savevm("virtio-console", -1, 1, virtio_console_save, virtio_console_load, s);
|
||||||
|
|
||||||
return &s->vdev;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void virtio_console_register_devices(void)
|
||||||
|
{
|
||||||
|
pci_qdev_register("virtio-console", sizeof(VirtIOConsole),
|
||||||
|
virtio_console_init);
|
||||||
|
}
|
||||||
|
|
||||||
|
device_init(virtio_console_register_devices)
|
||||||
|
|
|
@ -16,7 +16,4 @@
|
||||||
/* The ID for virtio console */
|
/* The ID for virtio console */
|
||||||
#define VIRTIO_ID_CONSOLE 3
|
#define VIRTIO_ID_CONSOLE 3
|
||||||
|
|
||||||
/* Creates a virtio console */
|
|
||||||
void *virtio_console_init(PCIBus *bus, CharDriverState *chr);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue