All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Peter Xu" <peterx@redhat.com>, "Greg Kurz" <groug@kaod.org>,
	qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
	"Cédric Le Goater" <clg@kaod.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Hervé Poussineau" <hpoussin@reactos.org>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: [PATCH v2 06/11] hw/pci-host/raven: Assert PCI I/O AddressSpace is based at 0x80000000
Date: Sat, 17 Apr 2021 12:30:23 +0200	[thread overview]
Message-ID: <20210417103028.601124-7-f4bug@amsat.org> (raw)
In-Reply-To: <20210417103028.601124-1-f4bug@amsat.org>

Commit 1ae1dc5ba24 ("raven: Set a correct PCI I/O memory region")
abused an AddressSpace API weakness which allows set non-zero base
address to AddressSpace root region. We will fix that in the next
commit. First add an assertion to ensure no regression is introduced.
As raven_io_address() is called by both MemoryRegionOps handlers, it
is a good place for such assert call.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/pci-host/raven.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c
index 730f31a8931..36652122424 100644
--- a/hw/pci-host/raven.c
+++ b/hw/pci-host/raven.c
@@ -141,6 +141,17 @@ static const MemoryRegionOps raven_intack_ops = {
 static inline hwaddr raven_io_address(PREPPCIState *s,
                                       hwaddr addr)
 {
+    /*
+     * We shouldn't access AddressSpace internals. However this assert
+     * is temporarily introduced to prove a subtle inconsistency from
+     * commit 1ae1dc5ba24 ("raven: Set a correct PCI I/O memory region"):
+     * AddressSpace root region must be zero-based, but the Raven use is not.
+     *
+     * Assert the root region is based on physical address 0x80000000
+     * until the issue is fixed.
+     */
+    assert(s->pci_io_as.root->addr == PCI_IO_BASE_ADDR);
+
     if (s->contiguous_map == 0) {
         /* 64 KB contiguous space for IOs */
         addr &= 0xFFFF;
-- 
2.26.3



  parent reply	other threads:[~2021-04-17 10:36 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-17 10:30 [PATCH v2 00/11] memory: Forbid mapping AddressSpace root MemoryRegion Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 01/11] hw/arm/aspeed: Do not directly map ram container onto main address bus Philippe Mathieu-Daudé
2021-04-20 18:28   ` Peter Xu
2021-04-21  5:53     ` Cédric Le Goater
2021-04-21 13:02       ` Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 02/11] hw/aspeed/smc: Use the RAM memory region for DMAs Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 03/11] hw/arm/aspeed: Do not sysbus-map mmio flash region directly, use alias Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 04/11] hw/pci-host: Rename Raven ASIC PCI bridge as raven.c Philippe Mathieu-Daudé
2021-04-19  0:46   ` David Gibson
2021-04-17 10:30 ` [PATCH v2 05/11] hw/pci-host/raven: Add PCI_IO_BASE_ADDR definition Philippe Mathieu-Daudé
2021-04-19  0:47   ` David Gibson
2021-04-17 10:30 ` Philippe Mathieu-Daudé [this message]
2021-04-19  1:00   ` [PATCH v2 06/11] hw/pci-host/raven: Assert PCI I/O AddressSpace is based at 0x80000000 David Gibson
2021-04-17 10:30 ` [PATCH v2 07/11] hw/pci-host/raven: Use MR alias for AS root, not sysbus mapped MR Philippe Mathieu-Daudé
2021-04-17 10:30 ` [RFC PATCH v2 08/11] hw/pci-host/raven: Remove pointless alias mapping onto system bus Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 09/11] hw/pci-host/prep: Do not directly map bus-master region onto main bus Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 10/11] memory: Make sure root MR won't be added as subregion Philippe Mathieu-Daudé
2021-04-17 10:30 ` [PATCH v2 11/11] hw/pci-host/raven: Remove temporary assertion 'root MR is zero-based' Philippe Mathieu-Daudé
2021-04-19  7:17 ` [PATCH v2 00/11] memory: Forbid mapping AddressSpace root MemoryRegion Cédric Le Goater
2021-04-19  9:48   ` Philippe Mathieu-Daudé
2021-04-20 19:07 ` Peter Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210417103028.601124-7-f4bug@amsat.org \
    --to=f4bug@amsat.org \
    --cc=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --cc=groug@kaod.org \
    --cc=hpoussin@reactos.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=peterx@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.