Loading tools/lguest/lguest.c +14 −3 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ typedef uint8_t u8; #include "../../include/uapi/linux/virtio_config.h" #include "../../include/uapi/linux/virtio_net.h" #include "../../include/uapi/linux/virtio_blk.h" #include <linux/virtio_console.h> #include "../../include/uapi/linux/virtio_console.h" #include "../../include/uapi/linux/virtio_rng.h" #include <linux/virtio_ring.h> #include "../../include/uapi/linux/virtio_pci.h" Loading Loading @@ -1687,6 +1687,15 @@ static void emulate_mmio_write(struct device *d, u32 off, u32 val, u32 mask) goto write_through16; case offsetof(struct virtio_pci_mmio, isr): errx(1, "%s: Unexpected write to isr", d->name); /* Weird corner case: write to emerg_wr of console */ case sizeof(struct virtio_pci_mmio) + offsetof(struct virtio_console_config, emerg_wr): if (strcmp(d->name, "console") == 0) { char c = val; write(STDOUT_FILENO, &c, 1); goto write_through32; } /* Fall through... */ default: errx(1, "%s: Unexpected write to offset %u", d->name, off); } Loading Loading @@ -2048,6 +2057,7 @@ static struct device *new_pci_device(const char *name, u16 type, static void setup_console(void) { struct device *dev; struct virtio_console_config conf; /* If we can save the initial standard input settings... */ if (tcgetattr(STDIN_FILENO, &orig_term) == 0) { Loading Loading @@ -2075,8 +2085,9 @@ static void setup_console(void) add_pci_virtqueue(dev, console_input); add_pci_virtqueue(dev, console_output); /* There's no configuration area for this device. */ no_device_config(dev); /* We need a configuration area for the emerg_wr early writes. */ add_pci_feature(dev, VIRTIO_CONSOLE_F_EMERG_WRITE); set_device_config(dev, &conf, sizeof(conf)); verbose("device %u: console\n", devices.device_num); } Loading Loading
tools/lguest/lguest.c +14 −3 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ typedef uint8_t u8; #include "../../include/uapi/linux/virtio_config.h" #include "../../include/uapi/linux/virtio_net.h" #include "../../include/uapi/linux/virtio_blk.h" #include <linux/virtio_console.h> #include "../../include/uapi/linux/virtio_console.h" #include "../../include/uapi/linux/virtio_rng.h" #include <linux/virtio_ring.h> #include "../../include/uapi/linux/virtio_pci.h" Loading Loading @@ -1687,6 +1687,15 @@ static void emulate_mmio_write(struct device *d, u32 off, u32 val, u32 mask) goto write_through16; case offsetof(struct virtio_pci_mmio, isr): errx(1, "%s: Unexpected write to isr", d->name); /* Weird corner case: write to emerg_wr of console */ case sizeof(struct virtio_pci_mmio) + offsetof(struct virtio_console_config, emerg_wr): if (strcmp(d->name, "console") == 0) { char c = val; write(STDOUT_FILENO, &c, 1); goto write_through32; } /* Fall through... */ default: errx(1, "%s: Unexpected write to offset %u", d->name, off); } Loading Loading @@ -2048,6 +2057,7 @@ static struct device *new_pci_device(const char *name, u16 type, static void setup_console(void) { struct device *dev; struct virtio_console_config conf; /* If we can save the initial standard input settings... */ if (tcgetattr(STDIN_FILENO, &orig_term) == 0) { Loading Loading @@ -2075,8 +2085,9 @@ static void setup_console(void) add_pci_virtqueue(dev, console_input); add_pci_virtqueue(dev, console_output); /* There's no configuration area for this device. */ no_device_config(dev); /* We need a configuration area for the emerg_wr early writes. */ add_pci_feature(dev, VIRTIO_CONSOLE_F_EMERG_WRITE); set_device_config(dev, &conf, sizeof(conf)); verbose("device %u: console\n", devices.device_num); } Loading