qemu-devel
[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:35:24 -0700

On Fri, Aug 21, 2020 at 11:33 AM Alistair Francis <alistair23@gmail.com> wrote:
>
> 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?

Sorry, I meant 4.2

Alistair

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