qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [v2 1/1] hw/i386/acpi-build: add OSHP method support for SHPC driver load
@ 2024-06-25  3:52 Shiyuan Gao via
  2024-06-27 13:45 ` Igor Mammedov
  0 siblings, 1 reply; 10+ messages in thread
From: Shiyuan Gao via @ 2024-06-25  3:52 UTC (permalink / raw)
  To: qemu-devel; +Cc: mst, imammedo, Shiyuan Gao

SHPC driver will be loaded fail in i440fx machine, the dmesg shows
that OS cannot get control of SHPC hotplug and hotplug device to
the PCI bridge will fail when we use SHPC Native type:

  [3.336059] shpchp 0000:00:03.0: Requesting control of SHPC hotplug via OSHP (\_SB_.PCI0.S28_)
  [3.337408] shpchp 0000:00:03.0: Requesting control of SHPC hotplug via OSHP (\_SB_.PCI0)
  [3.338710] shpchp 0000:00:03.0: Cannot get control of SHPC hotplug

Add OSHP method support for transfer control to the operating system,
after this SHPC driver will be loaded success and the hotplug device to
the PCI bridge will success when we use SHPC Native type.

  [1.703975] shpchp 0000:00:03.0: Requesting control of SHPC hotplug via OSHP (\_SB_.PCI0.S18_)
  [1.704934] shpchp 0000:00:03.0: Requesting control of SHPC hotplug via OSHP (\_SB_.PCI0)
  [1.705855] shpchp 0000:00:03.0: Gained control of SHPC hotplug (\_SB_.PCI0)
  [1.707054] shpchp 0000:00:03.0: HPC vendor_id 1b36 device_id 1 ss_vid 0 ss_did 0

Signed-off-by: Shiyuan Gao <gaoshiyuan@baidu.com>
---
v1 -> v2:
* add quote PCI firmware spec 3.0
* explain why an empty method is enough
---

 hw/i386/acpi-build.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index f4e366f64f..00f8abedf6 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1412,6 +1412,23 @@ static void build_acpi0017(Aml *table)
     aml_append(table, scope);
 }
 
+/*
+ * PCI Firmware Specification 3.0
+ * 4.8. The OSHP Control Method
+ */
+static Aml *build_oshp_method(void)
+{
+    Aml *method;
+
+    /*
+     * We don't use ACPI to control the SHPC, so just return
+     * success is enough.
+     */
+    method = aml_method("OSHP", 0, AML_NOTSERIALIZED);
+    aml_append(method, aml_return(aml_int(0x0)));
+    return method;
+}
+
 static void
 build_dsdt(GArray *table_data, BIOSLinker *linker,
            AcpiPmInfo *pm, AcpiMiscInfo *misc,
@@ -1452,6 +1469,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
         aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03")));
         aml_append(dev, aml_name_decl("_UID", aml_int(pcmc->pci_root_uid)));
         aml_append(dev, aml_pci_edsm());
+        aml_append(dev, build_oshp_method());
         aml_append(sb_scope, dev);
         aml_append(dsdt, sb_scope);
 
@@ -1586,6 +1604,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
                 aml_append(dev, build_q35_osc_method(true));
             } else {
                 aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03")));
+                aml_append(dev, build_oshp_method());
             }
 
             if (numa_node != NUMA_NODE_UNASSIGNED) {
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-07-02  9:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-25  3:52 [v2 1/1] hw/i386/acpi-build: add OSHP method support for SHPC driver load Shiyuan Gao via
2024-06-27 13:45 ` Igor Mammedov
2024-06-28  3:04   ` Gao,Shiyuan via
2024-06-28  3:12     ` Gao,Shiyuan via
2024-07-01  8:40     ` Igor Mammedov
2024-07-01  9:39       ` Gao,Shiyuan via
2024-07-01 13:19         ` Gerd Hoffmann
2024-07-01 14:27           ` Gao,Shiyuan via
2024-07-02  8:26             ` Igor Mammedov
2024-07-02  9:09               ` Gao,Shiyuan via

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).