All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Laszlo Ersek" <lersek@redhat.com>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>
Subject: [Qemu-devel] [PULL 21/33] pci-testdev: add optional memory bar
Date: Mon, 5 Nov 2018 13:16:45 -0500	[thread overview]
Message-ID: <20181105181353.39804-22-mst@redhat.com> (raw)
In-Reply-To: <20181105181353.39804-1-mst@redhat.com>

From: Gerd Hoffmann <kraxel@redhat.com>

Add memory bar to pci-testdev.  Size is configurable using the membar
property.  Setting the size to zero (default) turns it off.  Can be used
to check whether guests handle large pci bars correctly.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 docs/specs/pci-testdev.txt | 15 ++++++++++-----
 hw/misc/pci-testdev.c      | 19 +++++++++++++++++++
 2 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/docs/specs/pci-testdev.txt b/docs/specs/pci-testdev.txt
index 128ae222ef..4280a1e73c 100644
--- a/docs/specs/pci-testdev.txt
+++ b/docs/specs/pci-testdev.txt
@@ -1,11 +1,11 @@
 pci-test is a device used for testing low level IO
 
-device implements up to two BARs: BAR0 and BAR1.
-Each BAR can be memory or IO. Guests must detect
-BAR type and act accordingly.
+device implements up to three BARs: BAR0, BAR1 and BAR2.
+Each of BAR 0+1 can be memory or IO. Guests must detect
+BAR types and act accordingly.
 
-Each BAR size is up to 4K bytes.
-Each BAR starts with the following header:
+BAR 0+1 size is up to 4K bytes each.
+BAR 0+1 starts with the following header:
 
 typedef struct PCITestDevHdr {
     uint8_t test;  <- write-only, starts a given test number
@@ -24,3 +24,8 @@ All registers are little endian.
 device is expected to always implement tests 0 to N on each BAR, and to add new
 tests with higher numbers.  In this way a guest can scan test numbers until it
 detects an access type that it does not support on this BAR, then stop.
+
+BAR2 is a 64bit memory bar, without backing storage.  It is disabled
+by default and can be enabled using the membar=<size> property.  This
+can be used to test whether guests handle pci bars of a specific
+(possibly quite large) size correctly.
diff --git a/hw/misc/pci-testdev.c b/hw/misc/pci-testdev.c
index 32041f535f..1282d151cb 100644
--- a/hw/misc/pci-testdev.c
+++ b/hw/misc/pci-testdev.c
@@ -85,6 +85,9 @@ typedef struct PCITestDevState {
     MemoryRegion portio;
     IOTest *tests;
     int current;
+
+    uint64_t membar_size;
+    MemoryRegion membar;
 } PCITestDevState;
 
 #define TYPE_PCI_TEST_DEV "pci-testdev"
@@ -253,6 +256,16 @@ static void pci_testdev_realize(PCIDevice *pci_dev, Error **errp)
     pci_register_bar(pci_dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &d->mmio);
     pci_register_bar(pci_dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &d->portio);
 
+    if (d->membar_size) {
+        memory_region_init(&d->membar, OBJECT(d), "pci-testdev-membar",
+                           d->membar_size);
+        pci_register_bar(pci_dev, 2,
+                         PCI_BASE_ADDRESS_SPACE_MEMORY |
+                         PCI_BASE_ADDRESS_MEM_PREFETCH |
+                         PCI_BASE_ADDRESS_MEM_TYPE_64,
+                         &d->membar);
+    }
+
     d->current = -1;
     d->tests = g_malloc0(IOTEST_MAX * sizeof *d->tests);
     for (i = 0; i < IOTEST_MAX; ++i) {
@@ -305,6 +318,11 @@ static void qdev_pci_testdev_reset(DeviceState *dev)
     pci_testdev_reset(d);
 }
 
+static Property pci_testdev_properties[] = {
+    DEFINE_PROP_SIZE("membar", PCITestDevState, membar_size, 0),
+    DEFINE_PROP_END_OF_LIST(),
+};
+
 static void pci_testdev_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
@@ -319,6 +337,7 @@ static void pci_testdev_class_init(ObjectClass *klass, void *data)
     dc->desc = "PCI Test Device";
     set_bit(DEVICE_CATEGORY_MISC, dc->categories);
     dc->reset = qdev_pci_testdev_reset;
+    dc->props = pci_testdev_properties;
 }
 
 static const TypeInfo pci_testdev_info = {
-- 
MST

  parent reply	other threads:[~2018-11-05 18:16 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-05 18:14 [Qemu-devel] [PULL 00/33] pci, pc, virtio: fixes, features Michael S. Tsirkin
2018-11-05 18:14 ` [Qemu-devel] [PULL 01/33] tests: Move tests/acpi-test-data/ to tests/data/acpi/ Michael S. Tsirkin
2018-11-06 13:27   ` Philippe Mathieu-Daudé
2018-11-05 18:14 ` [Qemu-devel] [PULL 02/33] tests: Move tests/hex-loader-check-data/ to tests/data/hex-loader/ Michael S. Tsirkin
2018-11-06 13:27   ` Philippe Mathieu-Daudé
2018-11-06 14:13     ` Michael S. Tsirkin
2018-11-06 15:15       ` Philippe Mathieu-Daudé
2018-11-06 15:31         ` Peter Maydell
2018-11-06 16:02           ` Michael S. Tsirkin
2018-11-06 16:08         ` Michael S. Tsirkin
2018-11-06 16:16         ` Laurent Vivier
2018-11-08 10:24           ` Stefan Hajnoczi
2018-11-08 14:30             ` Laurent Vivier
2018-11-08 15:15               ` Philippe Mathieu-Daudé
2018-11-05 18:14 ` [Qemu-devel] [PULL 03/33] configure: Rename FILES variable to LINKS Michael S. Tsirkin
2018-11-06 13:27   ` Philippe Mathieu-Daudé
2018-11-05 18:14 ` [Qemu-devel] [PULL 04/33] configure: Use LINKS loop for all build tree symlinks Michael S. Tsirkin
2018-11-05 18:15 ` [Qemu-devel] [PULL 05/33] virtio-blk: fix comment for virtio_blk_rw_complete Michael S. Tsirkin
2018-11-06  3:17   ` Dongli Zhang
2018-11-06  3:44     ` Michael S. Tsirkin
2018-11-05 18:15 ` [Qemu-devel] [PULL 06/33] intel_iommu: introduce vtd_reset_caches() Michael S. Tsirkin
2018-11-05 18:15 ` [Qemu-devel] [PULL 07/33] intel_iommu: better handling of dmar state switch Michael S. Tsirkin
2018-11-05 18:15 ` [Qemu-devel] [PULL 08/33] intel_iommu: move ce fetching out when sync shadow Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 09/33] intel_iommu: handle invalid ce for shadow sync Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 10/33] vhost-user-blk: start vhost when guest kicks Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 11/33] x86_iommu: move the kernel-irqchip check in common code Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 12/33] x86_iommu: move vtd_generate_msi_message in common file Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 13/33] x86_iommu/amd: remove V=1 check from amdvi_validate_dte() Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 14/33] x86_iommu/amd: make the address space naming consistent with intel-iommu Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 15/33] x86_iommu/amd: Prepare for interrupt remap support Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 16/33] x86_iommu/amd: Add interrupt remap support when VAPIC is not enabled Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 17/33] i386: acpi: add IVHD device entry for IOAPIC Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 18/33] x86_iommu/amd: Add interrupt remap support when VAPIC is enabled Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 19/33] x86_iommu/amd: Enable Guest virtual APIC support Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 20/33] MAINTAINERS: list "tests/acpi-test-data" files in ACPI/SMBIOS section Michael S. Tsirkin
2018-11-05 18:16 ` Michael S. Tsirkin [this message]
2018-11-05 18:16 ` [Qemu-devel] [PULL 22/33] hw/pci-host/x86: extract get_pci_hole64_start_value() helpers Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 23/33] hw/pci-host/x86: extend the 64-bit PCI hole relative to the fw-assigned base Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 24/33] bios-tables-test: prepare expected files for mmio64 Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 25/33] tests/bios-tables-test: add 64-bit PCI MMIO aperture round-up test on Q35 Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 26/33] hw/pci-bridge/xio3130: Remove unused functions Michael S. Tsirkin
2018-11-05 18:16 ` [Qemu-devel] [PULL 27/33] hw/pci-bridge/ioh3420: Remove unuseful header Michael S. Tsirkin
2018-11-05 18:17 ` [Qemu-devel] [PULL 28/33] hw/pci: Add missing include Michael S. Tsirkin
2018-11-05 18:17 ` [Qemu-devel] [PULL 29/33] pci_bridge: fix typo in comment Michael S. Tsirkin
2018-11-05 18:17 ` [Qemu-devel] [PULL 30/33] i440fx: use ARRAY_SIZE for pam_regions Michael S. Tsirkin
2018-11-05 18:17 ` [Qemu-devel] [PULL 31/33] piix: use TYPE_FOO constants than string constats Michael S. Tsirkin
2018-11-05 18:17 ` [Qemu-devel] [PULL 32/33] piix_pci: fix i440fx data sheet link Michael S. Tsirkin
2018-11-05 18:17 ` [Qemu-devel] [PULL 33/33] vhost-scsi: prevent using uninitialized vqs Michael S. Tsirkin
2018-11-06  8:18 ` [Qemu-devel] [PULL 00/33] pci, pc, virtio: fixes, features Thomas Huth
2018-11-06 11:07   ` Michael S. Tsirkin
2018-11-06 11:20     ` Peter Maydell
2018-11-06 12:39       ` Peter Maydell
2018-11-06 15:52         ` Laszlo Ersek

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=20181105181353.39804-22-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=lersek@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=peter.maydell@linaro.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 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.