[SeaBIOS] [PATCHv2 0/3] acpi: fix up EJ0 in DSDT

Amos Kong akong at redhat.com
Wed Sep 28 13:41:13 CEST 2011


----- Original Message -----
> This is a second iteration of the patch.  The patch has been
> significantly reworked to address (offline) comments by Gleb.
> 
> I think the infrastructure created is generic enough
> to be generally useful beyond the specific bug
> that I would like to fix. Specifically it
> will be able to find S3 Name to patch that,
> or process compiled CPU SSDT to avoid the need for
> hardcoded offsets.
> 
> Please comment.
> 
> Main changes:
> 	- tools rewritten in python
> 	- Original ASL retains _EJ0 methods, BIOS patches that to EJ0_
> 	- generic ACP_EXTRACT infrastructure that can match Method
>           and Name Operators
> 	- instead of matching specific method name, insert tags
> 	  in original DSL source and match that to AML


Patch looks good to me.
Acked-by: Amos Kong <akong at redhat.com>

> -----
> 
> Here's a bug: guest thinks it can eject VGA device and ISA bridge.
> 
> [root at dhcp74-172 ~]#lspci
> 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
> (rev 02)
> 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA
> [Natoma/Triton II]
> 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE
> [Natoma/Triton II]
> 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
> 00:02.0 VGA compatible controller: Cirrus Logic GD 5446
> 00:03.0 PCI bridge: Red Hat, Inc. Device 0001
> 00:04.0 Ethernet controller: Qumranet, Inc. Virtio network device
> 00:05.0 SCSI storage controller: Qumranet, Inc. Virtio block device
> 01:00.0 Ethernet controller: Intel Corporation 82540EM Gigabit
> Ethernet Controller (rev 03)
> 
> [root at dhcp74-172 ~]# ls /sys/bus/pci/slots/1/
> adapter  address  attention  latch  module  power
> [root at dhcp74-172 ~]# ls /sys/bus/pci/slots/2/
> adapter  address  attention  latch  module  power
> 
> [root at dhcp74-172 ~]# echo 0 > /sys/bus/pci/slots/2/power
> [root at dhcp74-172 ~]# lspci
> 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
> (rev 02)
> 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA
> [Natoma/Triton II]
> 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE
> [Natoma/Triton II]
> 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
> 00:03.0 PCI bridge: Red Hat, Inc. Device 0001
> 00:04.0 Ethernet controller: Qumranet, Inc. Virtio network device
> 00:05.0 SCSI storage controller: Qumranet, Inc. Virtio block device
> 01:00.0 Ethernet controller: Intel Corporation 82540EM Gigabit
> Ethernet Controller (rev 03)
> 
> This is wrong because slots 1 and 2 are marked as not hotpluggable
> in qemu.
> 
> The reason is that our acpi tables declare both _RMV with value 0,
> and _EJ0 method for these slots. What happens in this case
> is undocumented by ACPI spec, so linux ignores _RMV,
> and windows seems to ignore _EJ0.
> 
> The correct way to suppress hotplug is not to have _EJ0,
> so this is what this patch does: it probes PIIX and
> modifies DSDT to match.
> 
> With these patches applied, we get:
> 
> [root at dhcp74-172 ~]# ls /sys/bus/pci/slots/1/
> address
> [root at dhcp74-172 ~]# ls /sys/bus/pci/slots/2/
> address
> 
> 
> 
> Michael S. Tsirkin (3):
>   acpi: generate and parse mixed asl/aml listing
>   acpi: EJ0 method name patching
>   acpi: remove _RMV
> 
>  Makefile                         |   10 +-
>  src/acpi-dsdt.dsl                |   96 ++++++++-----------
>  src/acpi.c                       |   31 ++++++
>  tools/acpi_extract.py            |  195
>  ++++++++++++++++++++++++++++++++++++++
>  tools/acpi_extract_preprocess.py |   37 +++++++
>  5 files changed, 307 insertions(+), 62 deletions(-)
>  create mode 100755 tools/acpi_extract.py
>  create mode 100755 tools/acpi_extract_preprocess.py
> 
> --
> 1.7.5.53.gc233e
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 



More information about the SeaBIOS mailing list