qemu-stable
[Top][All Lists]
Advanced

[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
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]