50 lines
2.0 KiB
Diff
50 lines
2.0 KiB
Diff
|
References: bnc#711219
|
||
|
|
||
|
# HG changeset patch
|
||
|
# User Xudong Hao <xudong.hao@intel.com>
|
||
|
# Date 1323113706 0
|
||
|
# Node ID 832fa3f3543298a7125cd5f996d1e28dd7ba47b1
|
||
|
# Parent 60ea36c0512b779f291bb6c007e1f05c16054ec2
|
||
|
tools/firmware: remove "_PS0/3" Method
|
||
|
|
||
|
Do not expose the ACPI power management "_PS0/3" Method to guest
|
||
|
firmware. According to section 3.4 of the APCI specification 4.0, PCI
|
||
|
device control the device power through its own specification but not
|
||
|
through APCI.
|
||
|
|
||
|
Qemu pushes "_PS0/3" to guest will cause a mess between ACPI PM and
|
||
|
PCI PM as a result of incorrect ACPI table shipped with the guest
|
||
|
BIOS, it may cause a failure of PCI device PM state transition(from
|
||
|
PCI_UNKNOWN to PCI_D0).
|
||
|
|
||
|
Signed-off-by: Xudong Hao <xudong.hao@intel.com>
|
||
|
Signed-off-by: Haitao Shan <haitao.shan@intel.com>
|
||
|
Committed-by: Keir Fraser <keir@xen.org>
|
||
|
|
||
|
--- a/tools/firmware/hvmloader/acpi/mk_dsdt.c
|
||
|
+++ b/tools/firmware/hvmloader/acpi/mk_dsdt.c
|
||
|
@@ -251,8 +251,6 @@ int main(int argc, char **argv)
|
||
|
* the ACPI event:
|
||
|
* _EJ0: eject a device
|
||
|
* _STA: return a device's status, e.g. enabled or removed
|
||
|
- * Other methods are optional:
|
||
|
- * _PS0/3: put them here for debug purpose
|
||
|
*
|
||
|
* Eject button would generate a general-purpose event, then the
|
||
|
* control method for this event uses Notify() to inform OSPM which
|
||
|
@@ -271,14 +269,6 @@ int main(int argc, char **argv)
|
||
|
stmt("Name", "_ADR, 0x%08x", ((slot & ~7) << 13) | (slot & 7));
|
||
|
/* _SUN == dev */
|
||
|
stmt("Name", "_SUN, 0x%08x", slot >> 3);
|
||
|
- push_block("Method", "_PS0, 0");
|
||
|
- stmt("Store", "0x%02x, \\_GPE.DPT1", slot);
|
||
|
- stmt("Store", "0x80, \\_GPE.DPT2");
|
||
|
- pop_block();
|
||
|
- push_block("Method", "_PS3, 0");
|
||
|
- stmt("Store", "0x%02x, \\_GPE.DPT1", slot);
|
||
|
- stmt("Store", "0x83, \\_GPE.DPT2");
|
||
|
- pop_block();
|
||
|
push_block("Method", "_EJ0, 1");
|
||
|
stmt("Store", "0x%02x, \\_GPE.DPT1", slot);
|
||
|
stmt("Store", "0x88, \\_GPE.DPT2");
|