* [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage
@ 2023-06-26 16:01 Ani Sinha
2023-06-26 16:01 ` [PATCH v5 1/5] Revert "cputlb: Restrict SavedIOTLB to system emulation" Ani Sinha
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:01 UTC (permalink / raw)
To: qemu-devel
Cc: Ani Sinha, mst, imammedo, jusual, thuth, lvivier, michael.labiuk
Patches 1-4:
Fix tests so that devices do not use non-zero slots on the pcie root
ports. PCIE ports only have one slot, so PCIE devices can only be
plugged into slot 0 on a PCIE port.
Patch 5:
Enforce only one slot on PCIE port.
The test fixes must be applied before the QEMU change that checks for use
of a single slot in PCIE port.
CC: mst@redhat.com
CC: imammedo@redhat.com
CC: jusual@redhat.com
CC: thuth@redhat.com
CC: lvivier@redhat.com
CC: michael.labiuk@virtuozzo.com
Changelog:
=========
v5: no code changes - correct a mistake in the commit log message.
v4: reword commit log for patch 4.
v3: tags added. reword the error description in patch 5. Reword commit log in patch 4.
v2: add hd-geo-test fix as well as the actual QEMU code fix to the patchset.
The patches are added in the right order.
Ani Sinha (4):
tests/acpi: allow changes in DSDT.noacpihp table blob
tests/acpi/bios-tables-test: use the correct slot on the
pcie-root-port
tests/acpi/bios-tables-test: update acpi blob q35/DSDT.noacpihp
tests/qtest/hd-geo-test: fix incorrect pcie-root-port usage and
simplify test
Peter Maydell (1):
Revert "cputlb: Restrict SavedIOTLB to system emulation"
include/hw/core/cpu.h | 6 ++----
tests/data/acpi/q35/DSDT.noacpihp | Bin 8248 -> 8241 bytes
tests/qtest/bios-tables-test.c | 4 ++--
tests/qtest/hd-geo-test.c | 18 ++++++++----------
4 files changed, 12 insertions(+), 16 deletions(-)
--
2.39.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 1/5] Revert "cputlb: Restrict SavedIOTLB to system emulation"
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
@ 2023-06-26 16:01 ` Ani Sinha
2023-06-26 16:01 ` [PATCH v5 2/5] tests/acpi: allow changes in DSDT.noacpihp table blob Ani Sinha
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:01 UTC (permalink / raw)
To: qemu-devel, Eduardo Habkost, Marcel Apfelbaum,
Philippe Mathieu-Daudé, Yanan Wang
Cc: Peter Maydell, Richard Henderson
From: Peter Maydell <peter.maydell@linaro.org>
This reverts commit d7ee93e24359703debf4137f4cc632563aa4e8d1.
That commit tries to make a field in the CPUState struct not be
present when CONFIG_USER_ONLY is set. Unfortunately, you can't
conditionally omit fields in structs like this based on ifdefs that
are set per-target. If you try it, then code in files compiled
per-target (where CONFIG_USER_ONLY is or can be set) will disagree
about the struct layout with files that are compiled once-only (where
this kind of ifdef is never set).
This manifests specifically in 'make check-tcg' failing, because code
in cpus-common.c that sets up the CPUState::cpu_index field puts it
at a different offset from the code in plugins/core.c in
qemu_plugin_vcpu_init_hook() which reads the cpu_index field. The
latter then hits an assert because from its point of view every
thread has a 0 cpu_index. There might be other weird behaviour too.
Mostly we catch this kind of bug because the CONFIG_whatever is
listed in include/exec/poison.h and so the reference to it in
build-once source files will then cause a compiler error.
Unfortunately CONFIG_USER_ONLY is an exception to that: we have some
places where we use it in "safe" ways in headers that will be seen by
once-only source files (e.g. ifdeffing out function prototypes) and
it would be a lot of refactoring to be able to get to a position
where we could poison it. This leaves us in a "you have to be
careful to walk around the bear trap" situation...
Fixes: d7ee93e243597 ("cputlb: Restrict SavedIOTLB to system emulation")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20230620175712.1331625-1-peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
include/hw/core/cpu.h | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index ee8d6b40b3..4871ad85f0 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -226,7 +226,7 @@ struct CPUWatchpoint {
QTAILQ_ENTRY(CPUWatchpoint) entry;
};
-#if defined(CONFIG_PLUGIN) && !defined(CONFIG_USER_ONLY)
+#ifdef CONFIG_PLUGIN
/*
* For plugins we sometime need to save the resolved iotlb data before
* the memory regions get moved around by io_writex.
@@ -410,11 +410,9 @@ struct CPUState {
#ifdef CONFIG_PLUGIN
GArray *plugin_mem_cbs;
-#if !defined(CONFIG_USER_ONLY)
/* saved iotlb data from io_writex */
SavedIOTLB saved_iotlb;
-#endif /* !CONFIG_USER_ONLY */
-#endif /* CONFIG_PLUGIN */
+#endif
/* TODO Move common fields from CPUArchState here. */
int cpu_index;
--
2.39.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v5 2/5] tests/acpi: allow changes in DSDT.noacpihp table blob
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
2023-06-26 16:01 ` [PATCH v5 1/5] Revert "cputlb: Restrict SavedIOTLB to system emulation" Ani Sinha
@ 2023-06-26 16:01 ` Ani Sinha
2023-06-26 16:01 ` [PATCH v5 3/5] tests/acpi/bios-tables-test: use the correct slot on the pcie-root-port Ani Sinha
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:01 UTC (permalink / raw)
To: qemu-devel, Michael S. Tsirkin, Igor Mammedov, Ani Sinha
We are going to fix bio-tables-test in the next patch and hence need to
make sure the acpi tests continue to pass.
Signed-off-by: Ani Sinha <anisinha@redhat.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
---
tests/qtest/bios-tables-test-allowed-diff.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index dfb8523c8b..31df9c6187 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1 +1,2 @@
/* List of comma-separated changed AML files to ignore */
+"tests/data/acpi/q35/DSDT.noacpihp",
--
2.39.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v5 3/5] tests/acpi/bios-tables-test: use the correct slot on the pcie-root-port
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
2023-06-26 16:01 ` [PATCH v5 1/5] Revert "cputlb: Restrict SavedIOTLB to system emulation" Ani Sinha
2023-06-26 16:01 ` [PATCH v5 2/5] tests/acpi: allow changes in DSDT.noacpihp table blob Ani Sinha
@ 2023-06-26 16:01 ` Ani Sinha
2023-06-26 16:01 ` [PATCH v5 4/5] tests/acpi/bios-tables-test: update acpi blob q35/DSDT.noacpihp Ani Sinha
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:01 UTC (permalink / raw)
To: qemu-devel, Michael S. Tsirkin, Igor Mammedov, Ani Sinha
PCIE ports only have one slot, slot 0. Hence, non-zero slots are not available
for PCIE devices on PCIE root ports. Fix test_acpi_q35_tcg_no_acpi_hotplug()
so that the test does not use them.
Signed-off-by: Ani Sinha <anisinha@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
tests/qtest/bios-tables-test.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index ed1c69cf01..47ba20b957 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -1020,9 +1020,9 @@ static void test_acpi_q35_tcg_no_acpi_hotplug(void)
" -device pci-testdev,bus=nohprp,acpi-index=501"
" -device pcie-root-port,id=nohprpint,port=0x0,chassis=3,hotplug=off,"
"multifunction=on,addr=8.0"
- " -device pci-testdev,bus=nohprpint,acpi-index=601,addr=8.1"
+ " -device pci-testdev,bus=nohprpint,acpi-index=601,addr=0.1"
" -device pcie-root-port,id=hprp2,port=0x0,chassis=4,bus=nohprpint,"
- "addr=9.0"
+ "addr=0.2"
" -device pci-testdev,bus=hprp2,acpi-index=602"
, &data);
free_test_data(&data);
--
2.39.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v5 4/5] tests/acpi/bios-tables-test: update acpi blob q35/DSDT.noacpihp
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
` (2 preceding siblings ...)
2023-06-26 16:01 ` [PATCH v5 3/5] tests/acpi/bios-tables-test: use the correct slot on the pcie-root-port Ani Sinha
@ 2023-06-26 16:01 ` Ani Sinha
2023-06-26 16:01 ` [PATCH v5 5/5] tests/qtest/hd-geo-test: fix incorrect pcie-root-port usage and simplify test Ani Sinha
2023-06-26 16:06 ` [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
5 siblings, 0 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:01 UTC (permalink / raw)
To: qemu-devel, Michael S. Tsirkin, Igor Mammedov, Ani Sinha
Some fixes were committed in bios-tables-test in the previous commit. Update
the acpi blob and clear bios-tables-test-allowed-diff.h so that the test
continues to pass with the changes in the bios-tables-test.
Following is the asl diff between the old and the newly updated blob:
@@ -1,30 +1,30 @@
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20210604 (64-bit version)
* Copyright (c) 2000 - 2021 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
- * Disassembly of tests/data/acpi/q35/DSDT.noacpihp, Wed Jun 21 18:26:52 2023
+ * Disassembly of /tmp/aml-O8SU61, Wed Jun 21 18:26:52 2023
*
* Original Table Header:
* Signature "DSDT"
- * Length 0x00002038 (8248)
+ * Length 0x00002031 (8241)
* Revision 0x01 **** 32-bit table (V1), no 64-bit math support
- * Checksum 0x4A
+ * Checksum 0x89
* OEM ID "BOCHS "
* OEM Table ID "BXPC "
* OEM Revision 0x00000001 (1)
* Compiler ID "BXPC"
* Compiler Version 0x00000001 (1)
*/
DefinitionBlock ("", "DSDT", 1, "BOCHS ", "BXPC ", 0x00000001)
{
Scope (\)
{
OperationRegion (DBG, SystemIO, 0x0402, One)
Field (DBG, ByteAcc, NoLock, Preserve)
{
DBGB, 8
}
@@ -3148,48 +3148,48 @@
{
Name (_ADR, Zero) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Local0 = Package (0x01)
{
0x01F5
}
Return (EDSM (Arg0, Arg1, Arg2, Arg3, Local0))
}
}
}
Device (S40)
{
Name (_ADR, 0x00080000) // _ADR: Address
- Device (S41)
+ Device (S01)
{
- Name (_ADR, 0x00080001) // _ADR: Address
+ Name (_ADR, One) // _ADR: Address
Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
{
Local0 = Package (0x01)
{
0x0259
}
Return (EDSM (Arg0, Arg1, Arg2, Arg3, Local0))
}
}
- Device (S48)
+ Device (S02)
{
- Name (_ADR, 0x00090000) // _ADR: Address
+ Name (_ADR, 0x02) // _ADR: Address
Device (S00)
{
Name (_ADR, Zero) // _ADR: Address
}
}
}
Device (SF8)
{
Name (_ADR, 0x001F0000) // _ADR: Address
OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C)
Scope (\_SB)
{
Field (PCI0.SF8.PIRQ, ByteAcc, NoLock, Preserve)
{
PRQA, 8,
Signed-off-by: Ani Sinha <anisinha@redhat.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
---
tests/data/acpi/q35/DSDT.noacpihp | Bin 8248 -> 8241 bytes
tests/qtest/bios-tables-test-allowed-diff.h | 1 -
2 files changed, 1 deletion(-)
diff --git a/tests/data/acpi/q35/DSDT.noacpihp b/tests/data/acpi/q35/DSDT.noacpihp
index 6ab1f0e52543fcb7f84a7fd1327fe5aa42010565..8cab2f8eb9ae94e0165f3f17857ec7d080fb0e13 100644
GIT binary patch
delta 109
zcmdntu+f3bCD<jzP=SGgv2!Dri!7J3UQB$jQ@nt;?&b(tDMlAZ)?gEZc#e2SmmnSn
z1`dYkCY4|VLx=#Qh(x?gurE)65Gx~hBvZl?S0FDVGb=kGx=AwFzzCv>i)r&-xoSoL
DyqFtK
delta 94
zcmdn!u)~4NCD<jzLV<yS(Q6}@i!7IyUQB$jQ@nta-sT8dDMm#P)?gEZc#e2SmmnSn
k1`dYkCXHYdL#O~FP+)SuoHV~ou!#j+5huguZF1F&02bsG6#xJL
diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios-tables-test-allowed-diff.h
index 31df9c6187..dfb8523c8b 100644
--- a/tests/qtest/bios-tables-test-allowed-diff.h
+++ b/tests/qtest/bios-tables-test-allowed-diff.h
@@ -1,2 +1 @@
/* List of comma-separated changed AML files to ignore */
-"tests/data/acpi/q35/DSDT.noacpihp",
--
2.39.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v5 5/5] tests/qtest/hd-geo-test: fix incorrect pcie-root-port usage and simplify test
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
` (3 preceding siblings ...)
2023-06-26 16:01 ` [PATCH v5 4/5] tests/acpi/bios-tables-test: update acpi blob q35/DSDT.noacpihp Ani Sinha
@ 2023-06-26 16:01 ` Ani Sinha
2023-06-26 16:06 ` [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
5 siblings, 0 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:01 UTC (permalink / raw)
To: qemu-devel, Thomas Huth, Laurent Vivier, Paolo Bonzini
Cc: Ani Sinha, mst, imammedo, Michael Labiuk
The test attaches a SCSI controller to a non-zero slot and a pcie-to-pci bridge
on slot 0 on the same pcie-root-port. Since a downstream device can be attached
to a pcie-root-port only on slot 0, the above test configuration is not allowed.
Additionally using pcie.0 as id for pcie-root-port is incorrect as that id is
reserved only for the root bus.
In the test scenario, there is no need to attach a pcie-root-port to the
root complex. A SCSI controller can be attached to a pcie-to-pci bridge
which can then be directly attached to the root bus (pcie.0).
Fix the test and simplify it.
CC: mst@redhat.com
CC: imammedo@redhat.com
CC: Michael Labiuk <michael.labiuk@virtuozzo.com>
Signed-off-by: Ani Sinha <anisinha@redhat.com>
---
tests/qtest/hd-geo-test.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
index 5aa258a2b3..d08bffad91 100644
--- a/tests/qtest/hd-geo-test.c
+++ b/tests/qtest/hd-geo-test.c
@@ -784,14 +784,12 @@ static void test_override_scsi(void)
test_override(args, "pc", expected);
}
-static void setup_pci_bridge(TestArgs *args, const char *id, const char *rootid)
+static void setup_pci_bridge(TestArgs *args, const char *id)
{
- char *root, *br;
- root = g_strdup_printf("-device pcie-root-port,id=%s", rootid);
- br = g_strdup_printf("-device pcie-pci-bridge,bus=%s,id=%s", rootid, id);
+ char *br;
+ br = g_strdup_printf("-device pcie-pci-bridge,bus=pcie.0,id=%s", id);
- args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, root);
args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, br);
}
@@ -811,8 +809,8 @@ static void test_override_scsi_q35(void)
add_drive_with_mbr(args, empty_mbr, 1);
add_drive_with_mbr(args, empty_mbr, 1);
add_drive_with_mbr(args, empty_mbr, 1);
- setup_pci_bridge(args, "pcie.0", "br");
- add_scsi_controller(args, "lsi53c895a", "br", 3);
+ setup_pci_bridge(args, "pcie-pci-br");
+ add_scsi_controller(args, "lsi53c895a", "pcie-pci-br", 3);
add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30);
add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30);
add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0);
@@ -868,9 +866,9 @@ static void test_override_virtio_blk_q35(void)
};
add_drive_with_mbr(args, empty_mbr, 1);
add_drive_with_mbr(args, empty_mbr, 1);
- setup_pci_bridge(args, "pcie.0", "br");
- add_virtio_disk(args, 0, "br", 3, 10000, 120, 30);
- add_virtio_disk(args, 1, "br", 4, 9000, 120, 30);
+ setup_pci_bridge(args, "pcie-pci-br");
+ add_virtio_disk(args, 0, "pcie-pci-br", 3, 10000, 120, 30);
+ add_virtio_disk(args, 1, "pcie-pci-br", 4, 9000, 120, 30);
test_override(args, "q35", expected);
}
--
2.39.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
` (4 preceding siblings ...)
2023-06-26 16:01 ` [PATCH v5 5/5] tests/qtest/hd-geo-test: fix incorrect pcie-root-port usage and simplify test Ani Sinha
@ 2023-06-26 16:06 ` Ani Sinha
5 siblings, 0 replies; 7+ messages in thread
From: Ani Sinha @ 2023-06-26 16:06 UTC (permalink / raw)
To: qemu-devel
Cc: Michael S. Tsirkin, Igor Mammedov, Julia Suvorova, thuth, lvivier,
michael.labiuk
Scratch this … I will resend …
> On 26-Jun-2023, at 9:31 PM, Ani Sinha <anisinha@redhat.com> wrote:
>
> Patches 1-4:
> Fix tests so that devices do not use non-zero slots on the pcie root
> ports. PCIE ports only have one slot, so PCIE devices can only be
> plugged into slot 0 on a PCIE port.
>
> Patch 5:
> Enforce only one slot on PCIE port.
>
> The test fixes must be applied before the QEMU change that checks for use
> of a single slot in PCIE port.
>
> CC: mst@redhat.com
> CC: imammedo@redhat.com
> CC: jusual@redhat.com
> CC: thuth@redhat.com
> CC: lvivier@redhat.com
> CC: michael.labiuk@virtuozzo.com
>
> Changelog:
> =========
> v5: no code changes - correct a mistake in the commit log message.
>
> v4: reword commit log for patch 4.
>
> v3: tags added. reword the error description in patch 5. Reword commit log in patch 4.
>
> v2: add hd-geo-test fix as well as the actual QEMU code fix to the patchset.
> The patches are added in the right order.
>
>
> Ani Sinha (4):
> tests/acpi: allow changes in DSDT.noacpihp table blob
> tests/acpi/bios-tables-test: use the correct slot on the
> pcie-root-port
> tests/acpi/bios-tables-test: update acpi blob q35/DSDT.noacpihp
> tests/qtest/hd-geo-test: fix incorrect pcie-root-port usage and
> simplify test
>
> Peter Maydell (1):
> Revert "cputlb: Restrict SavedIOTLB to system emulation"
>
> include/hw/core/cpu.h | 6 ++----
> tests/data/acpi/q35/DSDT.noacpihp | Bin 8248 -> 8241 bytes
> tests/qtest/bios-tables-test.c | 4 ++--
> tests/qtest/hd-geo-test.c | 18 ++++++++----------
> 4 files changed, 12 insertions(+), 16 deletions(-)
>
> --
> 2.39.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-06-26 16:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-26 16:01 [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
2023-06-26 16:01 ` [PATCH v5 1/5] Revert "cputlb: Restrict SavedIOTLB to system emulation" Ani Sinha
2023-06-26 16:01 ` [PATCH v5 2/5] tests/acpi: allow changes in DSDT.noacpihp table blob Ani Sinha
2023-06-26 16:01 ` [PATCH v5 3/5] tests/acpi/bios-tables-test: use the correct slot on the pcie-root-port Ani Sinha
2023-06-26 16:01 ` [PATCH v5 4/5] tests/acpi/bios-tables-test: update acpi blob q35/DSDT.noacpihp Ani Sinha
2023-06-26 16:01 ` [PATCH v5 5/5] tests/qtest/hd-geo-test: fix incorrect pcie-root-port usage and simplify test Ani Sinha
2023-06-26 16:06 ` [PATCH v5 0/5] test and QEMU fixes to ensure proper PCIE device usage Ani Sinha
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).