[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC v2 1/2] hw/pci-host/gpex: Allow to generate preserve boot confi
From: |
chenxiang (M) |
Subject: |
Re: [RFC v2 1/2] hw/pci-host/gpex: Allow to generate preserve boot config DSM #5 |
Date: |
Wed, 29 Dec 2021 15:13:41 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
Hi Eric,
在 2021/10/5 16:53, Eric Auger 写道:
Add a 'preserve_config' field in struct GPEXConfig and
if set generate the DSM #5 for preserving PCI boot configurations.
The DSM presence is needed to expose RMRs.
At the moment the DSM generation is not yet enabled.
Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
include/hw/pci-host/gpex.h | 1 +
hw/pci-host/gpex-acpi.c | 12 ++++++++++++
2 files changed, 13 insertions(+)
diff --git a/include/hw/pci-host/gpex.h b/include/hw/pci-host/gpex.h
index fcf8b63820..3f8f8ec38d 100644
--- a/include/hw/pci-host/gpex.h
+++ b/include/hw/pci-host/gpex.h
@@ -64,6 +64,7 @@ struct GPEXConfig {
MemMapEntry pio;
int irq;
PCIBus *bus;
+ bool preserve_config;
};
int gpex_set_irq_num(GPEXHost *s, int index, int gsi);
diff --git a/hw/pci-host/gpex-acpi.c b/hw/pci-host/gpex-acpi.c
index e7e162a00a..7dab259379 100644
--- a/hw/pci-host/gpex-acpi.c
+++ b/hw/pci-host/gpex-acpi.c
@@ -164,6 +164,12 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg)
aml_append(dev, aml_name_decl("_PXM", aml_int(numa_node)));
}
+ if (cfg->preserve_config) {
+ method = aml_method("_DSM", 5, AML_SERIALIZED);
I notice there is a ACPI BIOS Error when booting virtual machine which
seems be caused by this patch as I add this patchset in my branch to
test the function of vsmmu.
It seems that it requires only 4 parameter for method _DSM, but use 5
parameters here.
The error log is as following:
[ 2.355459] ACPI BIOS Error (bug): Failure creating named object
[\_SB.PCI0._DSM], AE_ALREADY_EXISTS (20210930/dswload2-327)
[ 2.355467] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog
(20210930/psobject-221)
[ 2.355470] ACPI: Skipping parse of AML opcode: OpcodeName
unavailable (0x0014)
[ 2.355657] ACPI: 1 ACPI AML tables successfully acquired and loaded
[ 2.356321] ACPI: Interpreter enabled
[ 2.356323] ACPI: Using GIC for interrupt routing
[ 2.356333] ACPI: MCFG table detected, 1 entries
[ 2.361359] ARMH0011:00: ttyAMA0 at MMIO 0x9000000 (irq = 16,
base_baud = 0) is a SBSA
[ 2.619805] printk: console [ttyAMA0] enabled
[ 2.622114] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 2.622788] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM
ClockPM Segments MSI HPX-Type3]
[ 2.623776] acpi PNP0A08:00: _OSC: platform does not support [LTR]
[ 2.624600] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME
AER PCIeCapability]
[ 2.625721] acpi PNP0A08:00: ECAM area [mem
0x4010000000-0x401fffffff] reserved by PNP0C02:00
[ 2.626645] acpi PNP0A08:00: ECAM at [mem 0x4010000000-0x401fffffff]
for [bus 00-ff]
[ 2.627450] ACPI: Remapped I/O 0x000000003eff0000 to [io
0x0000-0xffff window]
[ 2.628229] ACPI BIOS Error (bug): \_SB.PCI0._DSM: Excess arguments -
ASL declared 5, ACPI requires 4 (20210930/nsarguments-166)
[ 2.629576] PCI host bridge to bus 0000:00
[ 2.630008] pci_bus 0000:00: root bus resource [mem
0x10000000-0x3efeffff window]
[ 2.630747] pci_bus 0000:00: root bus resource [io 0x0000-0xffff window]
[ 2.631405] pci_bus 0000:00: root bus resource [mem
0x8000000000-0xffffffffff window]
[ 2.632177] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 2.632731] ACPI BIOS Error (bug): \_SB.PCI0._DSM: Excess arguments -
ASL declared 5, ACPI requires 4 (20210930/nsarguments-166)
+ aml_append(method, aml_return(aml_int(0)));
+ aml_append(dev, method);
+ }
+
acpi_dsdt_add_pci_route_table(dev, cfg->irq);
/*
@@ -191,6 +197,12 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg)
aml_append(dev, aml_name_decl("_STR", aml_unicode("PCIe 0 Device")));
aml_append(dev, aml_name_decl("_CCA", aml_int(1)));
+ if (cfg->preserve_config) {
+ method = aml_method("_DSM", 5, AML_SERIALIZED);
+ aml_append(method, aml_return(aml_int(0)));
+ aml_append(dev, method);
+ }
+
acpi_dsdt_add_pci_route_table(dev, cfg->irq);
method = aml_method("_CBA", 0, AML_NOTSERIALIZED);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [RFC v2 1/2] hw/pci-host/gpex: Allow to generate preserve boot config DSM #5,
chenxiang (M) <=