[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-commits] [qemu/qemu] 42a62c: acpi: allow DSDT changes
From: |
Peter Maydell |
Subject: |
[Qemu-commits] [qemu/qemu] 42a62c: acpi: allow DSDT changes |
Date: |
Thu, 27 Aug 2020 15:15:27 -0700 |
Branch: refs/heads/master
Home: https://github.com/qemu/qemu
Commit: 42a62c20925e02aef0d849f92a0e9540888e79ae
https://github.com/qemu/qemu/commit/42a62c20925e02aef0d849f92a0e9540888e79ae
Author: Michael S. Tsirkin <mst@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M tests/qtest/bios-tables-test-allowed-diff.h
Log Message:
-----------
acpi: allow DSDT changes
We are updating all DSDTs with UID 0 for PCI Root.
Allow changes.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: af1b80ae56c9495999e8ccf7b70ef894378de642
https://github.com/qemu/qemu/commit/af1b80ae56c9495999e8ccf7b70ef894378de642
Author: Michael S. Tsirkin <mst@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/i386/acpi-build.c
Log Message:
-----------
i386/acpi: fix inconsistent QEMU/OVMF device paths
macOS uses ACPI UIDs to build the DevicePath for NVRAM boot options,
while OVMF firmware gets them via an internal channel through QEMU.
Due to a bug in QEMU ACPI currently UEFI firmware and ACPI have
different values, and this makes the underlying operating system
unable to report its boot option.
The particular node in question is the primary PciRoot (PCI0 in ACPI),
which for some reason gets assigned 1 in ACPI UID and 0 in the
DevicePath. This is due to the _UID assigned to it by build_dsdt in
hw/i386/acpi-build.c Which does not correspond to the primary PCI
identifier given by pcibus_num in hw/pci/pci.c
Reference with the device paths, OVMF startup logs, and ACPI table
dumps (SysReport):
https://github.com/acidanthera/bugtracker/issues/1050
In UEFI v2.8, section "10.4.2 Rules with ACPI _HID and _UID" ends with
the paragraph,
Root PCI bridges will use the plug and play ID of PNP0A03, This will
be stored in the ACPI Device Path _HID field, or in the Expanded
ACPI Device Path _CID field to match the ACPI name space. The _UID
in the ACPI Device Path structure must match the _UID in the ACPI
name space.
(See especially the last sentence.)
Considering *extra* root bridges / root buses (with bus number > 0),
QEMU's ACPI generator actually does the right thing; since QEMU commit
c96d9286a6d7 ("i386/acpi-build: more traditional _UID and _HID for PXB
root buses", 2015-06-11).
However, the _UID values for root bridge zero (on both i440fx and q35)
have always been "wrong" (from UEFI perspective), going back in QEMU to
commit 74523b850189 ("i386: add ACPI table files from seabios",
2013-10-14).
Even in SeaBIOS, these _UID values have always been 1; see commit
a4d357638c57 ("Port rombios32 code from bochs-bios.", 2008-03-08) for
i440fx, and commit ecbe3fd61511 ("seabios: q35: add dsdt", 2012-12-01)
for q35.
Cc: qemu-stable@nongnu.org
Suggested-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Vitaly Cheptsov <vit9696@protonmail.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Commit: 9b897b399eb1f6b71add88ed0bfaeabf63609115
https://github.com/qemu/qemu/commit/9b897b399eb1f6b71add88ed0bfaeabf63609115
Author: Michael S. Tsirkin <mst@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/arm/virt-acpi-build.c
Log Message:
-----------
arm/acpi: fix an out of spec _UID for PCI root
On ARM/virt machine type QEMU currently reports an incorrect _UID in
ACPI.
The particular node in question is the primary PciRoot (PCI0 in ACPI),
which gets assigned PCI0 in ACPI UID and 0 in the
DevicePath. This is due to the _UID assigned to it by build_dsdt in
hw/arm/virt-acpi-build.c Which does not correspond to the primary PCI
identifier given by pcibus_num in hw/pci/pci.c
In UEFI v2.8, section "10.4.2 Rules with ACPI _HID and _UID" ends with
the paragraph,
Root PCI bridges will use the plug and play ID of PNP0A03, This will
be stored in the ACPI Device Path _HID field, or in the Expanded
ACPI Device Path _CID field to match the ACPI name space. The _UID
in the ACPI Device Path structure must match the _UID in the ACPI
name space.
(See especially the last sentence.)
A similar bug has been reported on i386, on that architecture it has
been reported to confuse at least macOS which uses ACPI UIDs to build
the DevicePath for NVRAM boot options, while OVMF firmware gets them via
an internal channel through QEMU. When UEFI firmware and ACPI have
different values, this makes the underlying operating system unable to
report its boot option.
Cc: qemu-stable@nongnu.org
Reported-by: Vitaly Cheptsov <vit9696@protonmail.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Commit: c27c1cc3ca6b6177520dff066c0fb6bb6a0297d4
https://github.com/qemu/qemu/commit/c27c1cc3ca6b6177520dff066c0fb6bb6a0297d4
Author: Michael S. Tsirkin <mst@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M tests/data/acpi/disassemle-aml.sh
Log Message:
-----------
disassemble-aml: -o actually works
Turns out that option was borken due to weird iasl
command line handling. Fix it.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: af1dfe1ec0864e6700237a43cc36018176f9eba9
https://github.com/qemu/qemu/commit/af1dfe1ec0864e6700237a43cc36018176f9eba9
Author: Michael S. Tsirkin <mst@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M tests/data/acpi/pc/DSDT
M tests/data/acpi/pc/DSDT.acpihmat
M tests/data/acpi/pc/DSDT.bridge
M tests/data/acpi/pc/DSDT.cphp
M tests/data/acpi/pc/DSDT.dimmpxm
M tests/data/acpi/pc/DSDT.ipmikcs
M tests/data/acpi/pc/DSDT.memhp
M tests/data/acpi/pc/DSDT.numamem
M tests/data/acpi/q35/DSDT
M tests/data/acpi/q35/DSDT.acpihmat
M tests/data/acpi/q35/DSDT.bridge
M tests/data/acpi/q35/DSDT.cphp
M tests/data/acpi/q35/DSDT.dimmpxm
M tests/data/acpi/q35/DSDT.ipmibt
M tests/data/acpi/q35/DSDT.memhp
M tests/data/acpi/q35/DSDT.mmio64
M tests/data/acpi/q35/DSDT.numamem
M tests/data/acpi/q35/DSDT.tis
M tests/data/acpi/virt/DSDT
M tests/data/acpi/virt/DSDT.memhp
M tests/data/acpi/virt/DSDT.numamem
M tests/qtest/bios-tables-test-allowed-diff.h
Log Message:
-----------
acpi: update expected DSDT files with _UID changes
_UID of the PCI root has been changed to 0.
Update expected files accordingly, and re-enable their testing.
Full diff of changed files disassembly:
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.acpihmat.dsl
/tmp/new/tests/data/acpi/pc/DSDT.acpihmat.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.acpihmat.dsl 2020-08-04
17:37:55.727798633 -0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.acpihmat.dsl 2020-08-04
17:42:57.258859861 -0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.bridge.dsl
/tmp/new/tests/data/acpi/pc/DSDT.bridge.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.bridge.dsl 2020-08-04 17:37:55.737798601
-0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.bridge.dsl 2020-08-04 17:42:57.262859849
-0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.cphp.dsl
/tmp/new/tests/data/acpi/pc/DSDT.cphp.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.cphp.dsl 2020-08-04 17:37:55.745798576
-0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.cphp.dsl 2020-08-04 17:42:57.265859839
-0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.dimmpxm.dsl
/tmp/new/tests/data/acpi/pc/DSDT.dimmpxm.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.dimmpxm.dsl 2020-08-04
17:37:55.759798533 -0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.dimmpxm.dsl 2020-08-04
17:42:57.268859830 -0400
@@ -52,7 +52,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.dsl
/tmp/new/tests/data/acpi/pc/DSDT.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.dsl 2020-08-04 17:37:55.713798676
-0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.dsl 2020-08-04 17:42:57.256859867
-0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.ipmikcs.dsl
/tmp/new/tests/data/acpi/pc/DSDT.ipmikcs.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.ipmikcs.dsl 2020-08-04
17:37:55.765798514 -0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.ipmikcs.dsl 2020-08-04
17:42:57.270859824 -0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.memhp.dsl
/tmp/new/tests/data/acpi/pc/DSDT.memhp.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.memhp.dsl 2020-08-04 17:37:55.773798489
-0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.memhp.dsl 2020-08-04 17:42:57.273859814
-0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/pc/DSDT.numamem.dsl
/tmp/new/tests/data/acpi/pc/DSDT.numamem.dsl
--- /tmp/old/tests/data/acpi/pc/DSDT.numamem.dsl 2020-08-04
17:37:55.782798461 -0400
+++ /tmp/new/tests/data/acpi/pc/DSDT.numamem.dsl 2020-08-04
17:42:57.276859805 -0400
@@ -50,7 +50,7 @@
{
Name (_HID, EisaId ("PNP0A03") /* PCI Bus */) // _HID: Hardware ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
}
}
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.acpihmat.dsl
/tmp/new/tests/data/acpi/q35/DSDT.acpihmat.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.acpihmat.dsl 2020-08-04
17:37:55.911798060 -0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.acpihmat.dsl 2020-08-04
17:42:57.327859646 -0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.bridge.dsl
/tmp/new/tests/data/acpi/q35/DSDT.bridge.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.bridge.dsl 2020-08-04
17:37:55.920798032 -0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.bridge.dsl 2020-08-04
17:42:57.331859634 -0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.cphp.dsl
/tmp/new/tests/data/acpi/q35/DSDT.cphp.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.cphp.dsl 2020-08-04 17:37:55.930798001
-0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.cphp.dsl 2020-08-04 17:42:57.336859618
-0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.dimmpxm.dsl
/tmp/new/tests/data/acpi/q35/DSDT.dimmpxm.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.dimmpxm.dsl 2020-08-04
17:37:55.942797963 -0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.dimmpxm.dsl 2020-08-04
17:42:57.340859606 -0400
@@ -53,7 +53,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.dsl
/tmp/new/tests/data/acpi/q35/DSDT.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.dsl 2020-08-04 17:37:55.898798100
-0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.dsl 2020-08-04 17:42:57.323859659
-0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.ipmibt.dsl
/tmp/new/tests/data/acpi/q35/DSDT.ipmibt.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.ipmibt.dsl 2020-08-04
17:37:55.952797932 -0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.ipmibt.dsl 2020-08-04
17:42:57.344859593 -0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.memhp.dsl
/tmp/new/tests/data/acpi/q35/DSDT.memhp.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.memhp.dsl 2020-08-04 17:37:55.962797901
-0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.memhp.dsl 2020-08-04 17:42:57.348859581
-0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.mmio64.dsl
/tmp/new/tests/data/acpi/q35/DSDT.mmio64.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.mmio64.dsl 2020-08-04
17:37:55.972797870 -0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.mmio64.dsl 2020-08-04
17:42:57.351859572 -0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.numamem.dsl
/tmp/new/tests/data/acpi/q35/DSDT.numamem.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.numamem.dsl 2020-08-04
17:37:55.983797836 -0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.numamem.dsl 2020-08-04
17:42:57.354859562 -0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/q35/DSDT.tis.dsl
/tmp/new/tests/data/acpi/q35/DSDT.tis.dsl
--- /tmp/old/tests/data/acpi/q35/DSDT.tis.dsl 2020-08-04 17:37:55.993797804
-0400
+++ /tmp/new/tests/data/acpi/q35/DSDT.tis.dsl 2020-08-04 17:42:57.358859550
-0400
@@ -51,7 +51,7 @@
Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID:
Hardware ID
Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible
ID
Name (_ADR, Zero) // _ADR: Address
- Name (_UID, One) // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Method (_OSC, 4, NotSerialized) // _OSC: Operating System
Capabilities
{
CreateDWordField (Arg3, Zero, CDW1)
diff -ru /tmp/old/tests/data/acpi/virt/DSDT.dsl
/tmp/new/tests/data/acpi/virt/DSDT.dsl
--- /tmp/old/tests/data/acpi/virt/DSDT.dsl 2020-08-04 17:37:56.121797406
-0400
+++ /tmp/new/tests/data/acpi/virt/DSDT.dsl 2020-08-04 17:42:57.408859394
-0400
@@ -641,7 +641,7 @@
Name (_CID, "PNP0A03" /* PCI Bus */) // _CID: Compatible ID
Name (_SEG, Zero) // _SEG: PCI Segment
Name (_BBN, Zero) // _BBN: BIOS Bus Number
- Name (_UID, "PCI0") // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Name (_STR, Unicode ("PCIe 0 Device")) // _STR: Description String
Name (_CCA, One) // _CCA: Cache Coherency Attribute
Name (_PRT, Package (0x80) // _PRT: PCI Routing Table
diff -ru /tmp/old/tests/data/acpi/virt/DSDT.memhp.dsl
/tmp/new/tests/data/acpi/virt/DSDT.memhp.dsl
--- /tmp/old/tests/data/acpi/virt/DSDT.memhp.dsl 2020-08-04
17:37:56.129797381 -0400
+++ /tmp/new/tests/data/acpi/virt/DSDT.memhp.dsl 2020-08-04
17:42:57.411859385 -0400
@@ -643,7 +643,7 @@
Name (_CID, "PNP0A03" /* PCI Bus */) // _CID: Compatible ID
Name (_SEG, Zero) // _SEG: PCI Segment
Name (_BBN, Zero) // _BBN: BIOS Bus Number
- Name (_UID, "PCI0") // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Name (_STR, Unicode ("PCIe 0 Device")) // _STR: Description String
Name (_CCA, One) // _CCA: Cache Coherency Attribute
Name (_PRT, Package (0x80) // _PRT: PCI Routing Table
diff -ru /tmp/old/tests/data/acpi/virt/DSDT.numamem.dsl
/tmp/new/tests/data/acpi/virt/DSDT.numamem.dsl
--- /tmp/old/tests/data/acpi/virt/DSDT.numamem.dsl 2020-08-04
17:37:56.141797343 -0400
+++ /tmp/new/tests/data/acpi/virt/DSDT.numamem.dsl 2020-08-04
17:42:57.413859379 -0400
@@ -641,7 +641,7 @@
Name (_CID, "PNP0A03" /* PCI Bus */) // _CID: Compatible ID
Name (_SEG, Zero) // _SEG: PCI Segment
Name (_BBN, Zero) // _BBN: BIOS Bus Number
- Name (_UID, "PCI0") // _UID: Unique ID
+ Name (_UID, Zero) // _UID: Unique ID
Name (_STR, Unicode ("PCIe 0 Device")) // _STR: Description String
Name (_CCA, One) // _CCA: Cache Coherency Attribute
Name (_PRT, Package (0x80) // _PRT: PCI Routing Table
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: 3d7e78aa7777f052d72ec6070e611767f0db35ce
https://github.com/qemu/qemu/commit/3d7e78aa7777f052d72ec6070e611767f0db35ce
Author: Ani Sinha <ani@anisinha.ca>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/acpi/pcihp.c
M hw/acpi/piix4.c
M include/hw/acpi/pcihp.h
Log Message:
-----------
Introduce a new flag for i440fx to disable PCI hotplug on the root bus
We introduce a new global flag 'acpi-root-pci-hotplug' for i440fx with which
we can turn on or off PCI device hotplug on the root bus. This flag can be
used to prevent all PCI devices from getting hotplugged or unplugged from the
root PCI bus.
This feature is targetted mostly towards Windows VMs. It is useful in cases
where some hypervisor admins want to deploy guest VMs in a way so that the
users of the guest OSes are not able to hot-eject certain PCI devices from
the Windows system tray. Laine has explained the use case here in detail:
https://www.redhat.com/archives/libvir-list/2020-February/msg00110.html
Julia has resolved this issue for PCIE buses with the following commit:
530a0963184e57e71a5b538 ("pcie_root_port: Add hotplug disabling option")
This commit attempts to introduce similar behavior for PCI root buses used in
i440fx machine types (although in this case, we do not have a per-slot
capability to turn hotplug on or off).
Usage:
-global PIIX4_PM.acpi-root-pci-hotplug=off
By default, this option is enabled which means that hotplug is turned on for
the PCI root bus.
The previously existing flag 'acpi-pci-hotplug-with-bridge-support' for PCI-PCI
bridges remain as is and can be used along with this new flag to control PCI
hotplug on PCI bridges.
This change has been tested using a Windows 2012R2 server guest image and also
with a Windows 2019 server guest image on a Ubuntu 18.04 host using the latest
master qemu from upstream.
Signed-off-by: Ani Sinha <ani@anisinha.ca>
Message-Id: <20200821165403.26589-1-ani@anisinha.ca>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Commit: 1436f32a84c3fda61d0d80302e24d641d3f3f839
https://github.com/qemu/qemu/commit/1436f32a84c3fda61d0d80302e24d641d3f3f839
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/virtio/virtio-pci.c
M hw/virtio/virtio-pci.h
Log Message:
-----------
virtio-pci: add virtio_pci_optimal_num_queues() helper
Multi-queue devices achieve the best performance when each vCPU has a
dedicated queue. This ensures that virtqueue used notifications are
handled on the same vCPU that submitted virtqueue buffers. When another
vCPU handles the the notification an IPI will be necessary to wake the
submission vCPU and this incurs a performance overhead.
Provide a helper function that virtio-pci devices will use in later
patches to automatically select the optimal number of queues.
The function handles guests with large numbers of CPUs by limiting the
number of queues to fit within the following constraints:
1. The maximum number of MSI-X vectors.
2. The maximum number of virtqueues.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200818143348.310613-4-stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: 4e5163bd844429711b4d60d51030ab83048d80cd
https://github.com/qemu/qemu/commit/4e5163bd844429711b4d60d51030ab83048d80cd
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/scsi/vhost-user-scsi.c
M hw/scsi/virtio-scsi.c
M hw/virtio/vhost-scsi-pci.c
M hw/virtio/vhost-user-scsi-pci.c
M hw/virtio/virtio-scsi-pci.c
M include/hw/virtio/virtio-scsi.h
Log Message:
-----------
virtio-scsi: introduce a constant for fixed virtqueues
The event and control virtqueues are always present, regardless of the
multi-queue configuration. Define a constant so that virtqueue number
calculations are easier to read.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Message-Id: <20200818143348.310613-5-stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: 6a558822849fab604a1fcb71e7c4e528cafa21d9
https://github.com/qemu/qemu/commit/6a558822849fab604a1fcb71e7c4e528cafa21d9
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/core/machine.c
M hw/scsi/vhost-scsi.c
M hw/scsi/vhost-user-scsi.c
M hw/scsi/virtio-scsi.c
M hw/virtio/vhost-scsi-pci.c
M hw/virtio/vhost-user-scsi-pci.c
M hw/virtio/virtio-scsi-pci.c
M include/hw/virtio/virtio-scsi.h
Log Message:
-----------
virtio-scsi-pci: default num_queues to -smp N
Automatically size the number of virtio-scsi-pci, vhost-scsi-pci, and
vhost-user-scsi-pci request virtqueues to match the number of vCPUs.
Other transports continue to default to 1 request virtqueue.
A 1:1 virtqueue:vCPU mapping ensures that completion interrupts are
handled on the same vCPU that submitted the request. No IPI is
necessary to complete an I/O request and performance is improved. The
maximum number of MSI-X vectors and virtqueues limit are respected.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20200818143348.310613-6-stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: 9445e1e15e66c19e42bea942ba810db28052cd05
https://github.com/qemu/qemu/commit/9445e1e15e66c19e42bea942ba810db28052cd05
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/block/virtio-blk.c
M hw/core/machine.c
M hw/virtio/virtio-blk-pci.c
M include/hw/virtio/virtio-blk.h
Log Message:
-----------
virtio-blk-pci: default num_queues to -smp N
Automatically size the number of virtio-blk-pci request virtqueues to
match the number of vCPUs. Other transports continue to default to 1
request virtqueue.
A 1:1 virtqueue:vCPU mapping ensures that completion interrupts are
handled on the same vCPU that submitted the request. No IPI is
necessary to complete an I/O request and performance is improved. The
maximum number of MSI-X vectors and virtqueues limit are respected.
Performance improves from 78k to 104k IOPS on a 32 vCPU guest with 101
virtio-blk-pci devices (ioengine=libaio, iodepth=1, bs=4k, rw=randread
with NVMe storage).
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Message-Id: <20200818143348.310613-7-stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: a4eef0711b2cf7a7476c3e2c202a414b68a1baa0
https://github.com/qemu/qemu/commit/a4eef0711b2cf7a7476c3e2c202a414b68a1baa0
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/block/vhost-user-blk.c
M hw/core/machine.c
M hw/virtio/vhost-user-blk-pci.c
M include/hw/virtio/vhost-user-blk.h
Log Message:
-----------
vhost-user-blk-pci: default num_queues to -smp N
Automatically size the number of request virtqueues to match the number
of vCPUs. This ensures that completion interrupts are handled on the
same vCPU that submitted the request. No IPI is necessary to complete
an I/O request and performance is improved. The maximum number of MSI-X
vectors and virtqueues limit are respected.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Message-Id: <20200818143348.310613-8-stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Commit: c906e03909ec3eacbaa95367c1cb78a329a6c62f
https://github.com/qemu/qemu/commit/c906e03909ec3eacbaa95367c1cb78a329a6c62f
Author: Ying Fang <fangying1@huawei.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/smbios/smbios.c
M qemu-options.hx
Log Message:
-----------
hw/smbios: add options for type 4 max-speed and current-speed
Common VM users sometimes care about CPU speed, so we add two new
options to allow VM vendors to present CPU speed to their users.
Normally these information can be fetched from host smbios.
Strictly speaking, the "max speed" and "current speed" in type 4
are not really for the max speed and current speed of processor, for
"max speed" identifies a capability of the system, and "current speed"
identifies the processor's speed at boot (see smbios spec), but some
applications do not tell the differences.
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Ying Fang <fangying1@huawei.com>
Signed-off-by: Heyi Guo <guoheyi@huawei.com>
Message-Id: <20200806035634.376-2-fangying1@huawei.com>
Commit: e1647539b1d04f121b70f1f6f438976477450f10
https://github.com/qemu/qemu/commit/e1647539b1d04f121b70f1f6f438976477450f10
Author: Ying Fang <fangying1@huawei.com>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M tests/qtest/bios-tables-test.c
Log Message:
-----------
tests/bios-tables-test: add smbios cpu speed test
Add smbios type 4 CPU speed check for we added new options to set
smbios type 4 "max speed" and "current speed". The default value
should be 2000 when no option is specified, just as the old version
did.
We add the test case to one machine of each architecture, though it
doesn't really run on aarch64 platform for smbios test can't run on
uefi only platform yet.
Signed-off-by: Ying Fang <fangying1@huawei.com>
Signed-off-by: Heyi Guo <guoheyi@huawei.com>
Message-Id: <20200806035634.376-3-fangying1@huawei.com>
Commit: 19591e9e0938ea5066984553c256a043bd5d822f
https://github.com/qemu/qemu/commit/19591e9e0938ea5066984553c256a043bd5d822f
Author: Peter Maydell <peter.maydell@linaro.org>
Date: 2020-08-27 (Thu, 27 Aug 2020)
Changed paths:
M hw/acpi/pcihp.c
M hw/acpi/piix4.c
M hw/arm/virt-acpi-build.c
M hw/block/vhost-user-blk.c
M hw/block/virtio-blk.c
M hw/core/machine.c
M hw/i386/acpi-build.c
M hw/scsi/vhost-scsi.c
M hw/scsi/vhost-user-scsi.c
M hw/scsi/virtio-scsi.c
M hw/smbios/smbios.c
M hw/virtio/vhost-scsi-pci.c
M hw/virtio/vhost-user-blk-pci.c
M hw/virtio/vhost-user-scsi-pci.c
M hw/virtio/virtio-blk-pci.c
M hw/virtio/virtio-pci.c
M hw/virtio/virtio-pci.h
M hw/virtio/virtio-scsi-pci.c
M include/hw/acpi/pcihp.h
M include/hw/virtio/vhost-user-blk.h
M include/hw/virtio/virtio-blk.h
M include/hw/virtio/virtio-scsi.h
M qemu-options.hx
M tests/data/acpi/disassemle-aml.sh
M tests/data/acpi/pc/DSDT
M tests/data/acpi/pc/DSDT.acpihmat
M tests/data/acpi/pc/DSDT.bridge
M tests/data/acpi/pc/DSDT.cphp
M tests/data/acpi/pc/DSDT.dimmpxm
M tests/data/acpi/pc/DSDT.ipmikcs
M tests/data/acpi/pc/DSDT.memhp
M tests/data/acpi/pc/DSDT.numamem
M tests/data/acpi/q35/DSDT
M tests/data/acpi/q35/DSDT.acpihmat
M tests/data/acpi/q35/DSDT.bridge
M tests/data/acpi/q35/DSDT.cphp
M tests/data/acpi/q35/DSDT.dimmpxm
M tests/data/acpi/q35/DSDT.ipmibt
M tests/data/acpi/q35/DSDT.memhp
M tests/data/acpi/q35/DSDT.mmio64
M tests/data/acpi/q35/DSDT.numamem
M tests/data/acpi/q35/DSDT.tis
M tests/data/acpi/virt/DSDT
M tests/data/acpi/virt/DSDT.memhp
M tests/data/acpi/virt/DSDT.numamem
M tests/qtest/bios-tables-test.c
Log Message:
-----------
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
virtio,pc,acpi: features, fixes
better number of queues for vhost
smbios speed options
acpi fixes
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Thu 27 Aug 2020 13:33:49 BST
# gpg: using RSA key 5D09FD0871C8F85B94CA8A0D281F0DB8D28D5469
# gpg: issuer "mst@redhat.com"
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full]
# gpg: aka "Michael S. Tsirkin <mst@redhat.com>" [full]
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17 0970 C350 3912 AFBE 8E67
# Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA 8A0D 281F 0DB8 D28D 5469
* remotes/mst/tags/for_upstream:
tests/bios-tables-test: add smbios cpu speed test
hw/smbios: add options for type 4 max-speed and current-speed
vhost-user-blk-pci: default num_queues to -smp N
virtio-blk-pci: default num_queues to -smp N
virtio-scsi-pci: default num_queues to -smp N
virtio-scsi: introduce a constant for fixed virtqueues
virtio-pci: add virtio_pci_optimal_num_queues() helper
Introduce a new flag for i440fx to disable PCI hotplug on the root bus
acpi: update expected DSDT files with _UID changes
disassemble-aml: -o actually works
arm/acpi: fix an out of spec _UID for PCI root
i386/acpi: fix inconsistent QEMU/OVMF device paths
acpi: allow DSDT changes
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Compare: https://github.com/qemu/qemu/compare/ac8b279f1386...19591e9e0938
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-commits] [qemu/qemu] 42a62c: acpi: allow DSDT changes,
Peter Maydell <=