[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 67/86] qpci_device_enable: Allow for command bits hardwired to 0
From: |
Michael S. Tsirkin |
Subject: |
[PULL 67/86] qpci_device_enable: Allow for command bits hardwired to 0 |
Date: |
Mon, 31 Oct 2022 08:53:51 -0400 |
From: Lev Kujawski <lkujaw@mailbox.org>
Devices like the PIIX3/4 IDE controller do not support certain modes
of operation, such as memory space accesses, and indicate this lack of
support by hardwiring the applicable bits to zero. Extend the QEMU
PCI device testing framework to accommodate such devices.
* tests/qtest/libqos/pci.h: Add the command_disabled word to indicate
bits hardwired to 0.
* tests/qtest/libqos/pci.c: Verify that hardwired bits are actually
hardwired.
Signed-off-by: Lev Kujawski <lkujaw@mailbox.org>
Message-Id: <20221024094621.512806-2-lkujaw@mailbox.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
tests/qtest/libqos/pci.h | 1 +
tests/qtest/libqos/pci.c | 13 +++++++------
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/tests/qtest/libqos/pci.h b/tests/qtest/libqos/pci.h
index 8389614523..eaedb98588 100644
--- a/tests/qtest/libqos/pci.h
+++ b/tests/qtest/libqos/pci.h
@@ -68,6 +68,7 @@ struct QPCIDevice
bool msix_enabled;
QPCIBar msix_table_bar, msix_pba_bar;
uint64_t msix_table_off, msix_pba_off;
+ uint16_t command_disabled;
};
struct QPCIAddress {
diff --git a/tests/qtest/libqos/pci.c b/tests/qtest/libqos/pci.c
index b23d72346b..4f3d28d8d9 100644
--- a/tests/qtest/libqos/pci.c
+++ b/tests/qtest/libqos/pci.c
@@ -220,18 +220,19 @@ int qpci_secondary_buses_init(QPCIBus *bus)
void qpci_device_enable(QPCIDevice *dev)
{
- uint16_t cmd;
+ const uint16_t enable_bits =
+ PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER;
+ uint16_t cmd, new_cmd;
/* FIXME -- does this need to be a bus callout? */
cmd = qpci_config_readw(dev, PCI_COMMAND);
- cmd |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER;
+ cmd |= enable_bits;
qpci_config_writew(dev, PCI_COMMAND, cmd);
/* Verify the bits are now set. */
- cmd = qpci_config_readw(dev, PCI_COMMAND);
- g_assert_cmphex(cmd & PCI_COMMAND_IO, ==, PCI_COMMAND_IO);
- g_assert_cmphex(cmd & PCI_COMMAND_MEMORY, ==, PCI_COMMAND_MEMORY);
- g_assert_cmphex(cmd & PCI_COMMAND_MASTER, ==, PCI_COMMAND_MASTER);
+ new_cmd = qpci_config_readw(dev, PCI_COMMAND);
+ new_cmd &= enable_bits;
+ g_assert_cmphex(new_cmd, ==, enable_bits & ~dev->command_disabled);
}
/**
--
MST
- [PULL 57/86] tests: acpi: update expected DSDT after ISA bridge is moved directly under PCI host bridge, (continued)
- [PULL 57/86] tests: acpi: update expected DSDT after ISA bridge is moved directly under PCI host bridge, Michael S. Tsirkin, 2022/10/31
- [PULL 58/86] tests: acpi: whitelist DSDT before generating ICH9_SMB AML automatically, Michael S. Tsirkin, 2022/10/31
- [PULL 59/86] acpi: add get_dev_aml_func() helper, Michael S. Tsirkin, 2022/10/31
- [PULL 60/86] acpi: enumerate SMB bridge automatically along with other PCI devices, Michael S. Tsirkin, 2022/10/31
- [PULL 61/86] tests: acpi: update expected blobs, Michael S. Tsirkin, 2022/10/31
- [PULL 62/86] tests: acpi: pc/q35 whitelist DSDT before \_GPE cleanup, Michael S. Tsirkin, 2022/10/31
- [PULL 63/86] acpi: pc/35: sanitize _GPE declaration order, Michael S. Tsirkin, 2022/10/31
- [PULL 65/86] hw/acpi/erst.c: Fix memory handling issues, Michael S. Tsirkin, 2022/10/31
- [PULL 64/86] tests: acpi: update expected blobs, Michael S. Tsirkin, 2022/10/31
- [PULL 66/86] MAINTAINERS: Add qapi/virtio.json to section "virtio", Michael S. Tsirkin, 2022/10/31
- [PULL 67/86] qpci_device_enable: Allow for command bits hardwired to 0,
Michael S. Tsirkin <=
- [PULL 68/86] hw/ide/piix: Ignore writes of hardwired PCI command register bits, Michael S. Tsirkin, 2022/10/31
- [PULL 70/86] hw/i386/pc.c: CXL Fixed Memory Window should not reserve e820 in bios, Michael S. Tsirkin, 2022/10/31
- [PULL 69/86] msix: Assert that specified vector is in range, Michael S. Tsirkin, 2022/10/31
- [PULL 72/86] hw/i386/acpi-build: Resolve redundant attribute, Michael S. Tsirkin, 2022/10/31
- [PULL 71/86] hw/i386/acpi-build: Remove unused struct, Michael S. Tsirkin, 2022/10/31
- [PULL 75/86] tests: acpi: add and whitelist *.hmat-noinitiator expected blobs, Michael S. Tsirkin, 2022/10/31
- [PULL 73/86] hw/i386/acpi-build: Resolve north rather than south bridges, Michael S. Tsirkin, 2022/10/31
- [PULL 74/86] hmat acpi: Don't require initiator value in -numa, Michael S. Tsirkin, 2022/10/31
- [PULL 76/86] tests: acpi: q35: add test for hmat nodes without initiators, Michael S. Tsirkin, 2022/10/31
- [PULL 77/86] tests: acpi: q35: update expected blobs *.hmat-noinitiators expected HMAT:, Michael S. Tsirkin, 2022/10/31