[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] stdvga+bochs-display: add dummy mmio handler
From: |
Alistair Francis |
Subject: |
Re: [PATCH v2] stdvga+bochs-display: add dummy mmio handler |
Date: |
Fri, 21 Aug 2020 11:33:15 -0700 |
On Mon, Mar 9, 2020 at 3:00 AM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> The bochs-display mmio bar has some sub-regions with the actual hardware
> registers. What happens when the guest access something outside those
> regions depends on the archirecture. On x86 those reads succeed (and
> return 0xff I think). On risc-v qemu aborts.
>
> This patch adds handlers for the parent region, to make the wanted
> behavior explicit and to make things consistent across architectures.
>
> v2:
> - use existing unassigned_io_ops.
> - also cover stdvga.
>
> Cc: Alistair Francis <alistair23@gmail.com>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+ QEMU stable.
Can this be back ported to 5.0?
Without this patch the bochs device doesn't work with RISC-V.
Alistair
> ---
> hw/display/bochs-display.c | 4 ++--
> hw/display/vga-pci.c | 8 ++++----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c
> index 62085f9fc063..70eb619ef424 100644
> --- a/hw/display/bochs-display.c
> +++ b/hw/display/bochs-display.c
> @@ -284,8 +284,8 @@ static void bochs_display_realize(PCIDevice *dev, Error
> **errp)
> memory_region_init_io(&s->qext, obj, &bochs_display_qext_ops, s,
> "qemu extended regs", PCI_VGA_QEXT_SIZE);
>
> - memory_region_init(&s->mmio, obj, "bochs-display-mmio",
> - PCI_VGA_MMIO_SIZE);
> + memory_region_init_io(&s->mmio, obj, &unassigned_io_ops, NULL,
> + "bochs-display-mmio", PCI_VGA_MMIO_SIZE);
> memory_region_add_subregion(&s->mmio, PCI_VGA_BOCHS_OFFSET, &s->vbe);
> memory_region_add_subregion(&s->mmio, PCI_VGA_QEXT_OFFSET, &s->qext);
>
> diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c
> index b34632467399..6b9db86e363c 100644
> --- a/hw/display/vga-pci.c
> +++ b/hw/display/vga-pci.c
> @@ -249,8 +249,8 @@ static void pci_std_vga_realize(PCIDevice *dev, Error
> **errp)
>
> /* mmio bar for vga register access */
> if (d->flags & (1 << PCI_VGA_FLAG_ENABLE_MMIO)) {
> - memory_region_init(&d->mmio, NULL, "vga.mmio",
> - PCI_VGA_MMIO_SIZE);
> + memory_region_init_io(&d->mmio, OBJECT(dev), &unassigned_io_ops,
> NULL,
> + "vga.mmio", PCI_VGA_MMIO_SIZE);
>
> if (d->flags & (1 << PCI_VGA_FLAG_ENABLE_QEXT)) {
> qext = true;
> @@ -285,8 +285,8 @@ static void pci_secondary_vga_realize(PCIDevice *dev,
> Error **errp)
> s->con = graphic_console_init(DEVICE(dev), 0, s->hw_ops, s);
>
> /* mmio bar */
> - memory_region_init(&d->mmio, OBJECT(dev), "vga.mmio",
> - PCI_VGA_MMIO_SIZE);
> + memory_region_init_io(&d->mmio, OBJECT(dev), &unassigned_io_ops, NULL,
> + "vga.mmio", PCI_VGA_MMIO_SIZE);
>
> if (d->flags & (1 << PCI_VGA_FLAG_ENABLE_QEXT)) {
> qext = true;
> --
> 2.18.2
>
- Re: [PATCH v2] stdvga+bochs-display: add dummy mmio handler,
Alistair Francis <=