From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Nicholas Piggin <npiggin@gmail.com>, Fabiano Rosas <farosas@suse.de>
Cc: John Snow <jsnow@redhat.com>, Laurent Vivier <lvivier@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Akihiko Odaki <akihiko.odaki@daynix.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
qemu-block@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH v3 2/4] qtest/libqos/pci: Enforce balanced iomap/unmap
Date: Mon, 20 Jan 2025 06:29:05 +0100 [thread overview]
Message-ID: <0584eb66-ab11-40ab-bf97-64299eaab52d@linaro.org> (raw)
In-Reply-To: <20250117172244.406206-3-npiggin@gmail.com>
Hi Nick,
Only nitpicking comments...
On 17/1/25 18:22, Nicholas Piggin wrote:
> Add assertions to ensure a BAR is not mapped twice, and only
> previously mapped BARs are unmapped. This can help catch some
> bugs.
>
> Reviewed-by: Fabiano Rosas <farosas@suse.de>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> tests/qtest/libqos/ahci.h | 1 +
> tests/qtest/libqos/pci.h | 2 ++
> tests/qtest/libqos/virtio-pci.h | 1 +
> tests/qtest/ahci-test.c | 2 ++
> tests/qtest/libqos/ahci.c | 6 ++++++
> tests/qtest/libqos/pci.c | 32 +++++++++++++++++++++++++++++++-
> tests/qtest/libqos/virtio-pci.c | 6 +++++-
> 7 files changed, 48 insertions(+), 2 deletions(-)
Maybe put the AHCI fix in a preliminary patch?
> diff --git a/tests/qtest/libqos/pci.h b/tests/qtest/libqos/pci.h
> index 83896145235..9dc82ea723a 100644
> --- a/tests/qtest/libqos/pci.h
> +++ b/tests/qtest/libqos/pci.h
Consider using a definition rather than a magic value:
#define PCI_BAR_COUNT 6
> @@ -65,6 +65,8 @@ struct QPCIDevice
> {
> QPCIBus *bus;
> int devfn;
> + bool bars_mapped[6];
> + QPCIBar bars[6];
> diff --git a/tests/qtest/libqos/pci.c b/tests/qtest/libqos/pci.c
> index a59197b9922..05089a5f24f 100644
> --- a/tests/qtest/libqos/pci.c
> +++ b/tests/qtest/libqos/pci.c
> @@ -93,12 +93,17 @@ QPCIDevice *qpci_device_find(QPCIBus *bus, int devfn)
> void qpci_device_init(QPCIDevice *dev, QPCIBus *bus, QPCIAddress *addr)
> {
> uint16_t vendor_id, device_id;
> + int i;
>
> qpci_device_set(dev, bus, addr->devfn);
> vendor_id = qpci_config_readw(dev, PCI_VENDOR_ID);
> device_id = qpci_config_readw(dev, PCI_DEVICE_ID);
> g_assert(!addr->vendor_id || vendor_id == addr->vendor_id);
> g_assert(!addr->device_id || device_id == addr->device_id);
> +
> + for (i = 0; i < 6; i++) {
> + g_assert(!dev->bars_mapped[i]);
> + }
> }
> @@ -572,12 +579,35 @@ QPCIBar qpci_iomap(QPCIDevice *dev, int barno, uint64_t *sizeptr)
> }
>
> bar.addr = loc;
> +
> + dev->bars_mapped[barno] = true;
> + dev->bars[barno] = bar;
> +
> return bar;
> }
>
> void qpci_iounmap(QPCIDevice *dev, QPCIBar bar)
> {
> - /* FIXME */
> + static const int bar_reg_map[] = {
> + PCI_BASE_ADDRESS_0, PCI_BASE_ADDRESS_1, PCI_BASE_ADDRESS_2,
> + PCI_BASE_ADDRESS_3, PCI_BASE_ADDRESS_4, PCI_BASE_ADDRESS_5,
> + };
> + int bar_reg;
> + int i;
> +
> + for (i = 0; i < 6; i++) {
> + if (!dev->bars_mapped[i]) {
> + continue;
> + }
> + if (dev->bars[i].addr == bar.addr) {
> + dev->bars_mapped[i] = false;
> + bar_reg = bar_reg_map[i];
> + qpci_config_writel(dev, bar_reg, 0xFFFFFFFF);
> + /* FIXME: the address space is leaked */
> + return;
> + }
> + }
> + g_assert_not_reached();
> }
Regards,
Phil.
next prev parent reply other threads:[~2025-01-20 5:33 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-17 17:22 [PATCH v3 0/4] qtest/libqos/pci: pci and msix fixes Nicholas Piggin
2025-01-17 17:22 ` [PATCH v3 1/4] qtest/libqos/pci: Do not write to PBA memory Nicholas Piggin
2025-01-17 17:22 ` [PATCH v3 2/4] qtest/libqos/pci: Enforce balanced iomap/unmap Nicholas Piggin
2025-01-20 5:29 ` Philippe Mathieu-Daudé [this message]
2025-01-21 4:39 ` Nicholas Piggin
2025-01-21 6:53 ` Philippe Mathieu-Daudé
2025-01-17 17:22 ` [PATCH v3 3/4] qtest/libqos/pci: Fix qpci_msix_enable sharing bar0 Nicholas Piggin
2025-01-17 17:22 ` [PATCH v3 4/4] qtest/libqos/pci: Factor msix entry helpers into pci common code Nicholas Piggin
2025-01-18 9:58 ` [PATCH v3 0/4] qtest/libqos/pci: pci and msix fixes Akihiko Odaki
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=0584eb66-ab11-40ab-bf97-64299eaab52d@linaro.org \
--to=philmd@linaro.org \
--cc=akihiko.odaki@daynix.com \
--cc=farosas@suse.de \
--cc=jsnow@redhat.com \
--cc=lvivier@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=npiggin@gmail.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).