Mike Loptien ([email protected]) just uploaded a new patch set to gerrit, 
which you can find at http://review.coreboot.org/2735

-gerrit

commit 3e8a7bb57eb8a3096a35a46dcceded75bb61a853
Author: Mike Loptien <[email protected]>
Date:   Fri Mar 15 10:53:40 2013 -0600

    AMD DSDT: Add secondary bus range to PCI0
    
    Adding the 'WordBusNumber' macro to the PCI0
    CRES ResourceTemplate in the Persimmon DSDT.
    This sets up the bus number for the PCI0 device
    and the secondary bus number in the CRS method.
    This change came in response to a 'dmesg' error
    which states:
    '[FIRMWARE BUG]: ACPI: no secondary bus range in _CRS'
    
    By adding the 'WordBusNumber' macro, ACPI can set
    up a valid range for the PCIe downstream busses,
    thereby relieving the Linux kernel from "guessing"
    the valid range based off _BBN or assuming [0-0xFF].
    The Linux kernel code that checks this bus range is
    in `drivers/acpi/pci_root.c`.  PCI busses can have
    up to 256 secondary busses connected to them via
    a PCI-PCI bridge.  However, these busses do not
    have to be sequentially numbered, so leaving out a
    section of the range (eg. allowing [0-0x7F]) will
    unnecessarily restrict the downstream busses.
    
    This is the same change as made to Persimmon with
    change-id I44f22:
    http://review.coreboot.org/#/c/2592/
    
    Change-Id: I9017a7619b3b17e0e95ad0fe46d0652499289b00
    Signed-off-by: Mike Loptien <[email protected]>
---
 src/mainboard/amd/inagua/dsdt.asl        | 16 ++++++++++++++++
 src/mainboard/amd/south_station/dsdt.asl | 16 ++++++++++++++++
 src/mainboard/amd/union_station/dsdt.asl | 16 ++++++++++++++++
 3 files changed, 48 insertions(+)

diff --git a/src/mainboard/amd/inagua/dsdt.asl 
b/src/mainboard/amd/inagua/dsdt.asl
index 582ab7f..148d7b0 100644
--- a/src/mainboard/amd/inagua/dsdt.asl
+++ b/src/mainboard/amd/inagua/dsdt.asl
@@ -1477,6 +1477,22 @@ DefinitionBlock (
                        } /* end Ac97modem */
 
                        Name(CRES, ResourceTemplate() {
+                               /* Set the Bus number and Secondary Bus number 
for the PCI0 device
+                                * The Secondary bus range for PCI0 lets the 
system
+                                * know what bus values are allowed on the 
downstream
+                                * side of this PCI bus if there is a PCI-PCI 
bridge.
+                                * PCI busses can have 256 secondary busses 
which
+                                * range from [0-0xFF] but they do not need to 
be
+                                * sequential.
+                                */
+                               WordBusNumber (ResourceProducer, MinFixed, 
MaxFixed, PosDecode,
+                                       0x0000,         /* address granularity 
*/
+                                       0x0000,         /* range minimum */
+                                       0x00FF,         /* range maximum */
+                                       0x0000,         /* translation */
+                                       0x0100,         /* length */
+                                       ,, PSB0)        /* ResourceSourceIndex, 
ResourceSource, DescriptorName */
+
                                IO(Decode16, 0x0CF8, 0x0CF8, 1, 8)
 
                                WORDIO(ResourceProducer, MinFixed, MaxFixed, 
PosDecode, EntireRange,
diff --git a/src/mainboard/amd/south_station/dsdt.asl 
b/src/mainboard/amd/south_station/dsdt.asl
index 582ab7f..148d7b0 100644
--- a/src/mainboard/amd/south_station/dsdt.asl
+++ b/src/mainboard/amd/south_station/dsdt.asl
@@ -1477,6 +1477,22 @@ DefinitionBlock (
                        } /* end Ac97modem */
 
                        Name(CRES, ResourceTemplate() {
+                               /* Set the Bus number and Secondary Bus number 
for the PCI0 device
+                                * The Secondary bus range for PCI0 lets the 
system
+                                * know what bus values are allowed on the 
downstream
+                                * side of this PCI bus if there is a PCI-PCI 
bridge.
+                                * PCI busses can have 256 secondary busses 
which
+                                * range from [0-0xFF] but they do not need to 
be
+                                * sequential.
+                                */
+                               WordBusNumber (ResourceProducer, MinFixed, 
MaxFixed, PosDecode,
+                                       0x0000,         /* address granularity 
*/
+                                       0x0000,         /* range minimum */
+                                       0x00FF,         /* range maximum */
+                                       0x0000,         /* translation */
+                                       0x0100,         /* length */
+                                       ,, PSB0)        /* ResourceSourceIndex, 
ResourceSource, DescriptorName */
+
                                IO(Decode16, 0x0CF8, 0x0CF8, 1, 8)
 
                                WORDIO(ResourceProducer, MinFixed, MaxFixed, 
PosDecode, EntireRange,
diff --git a/src/mainboard/amd/union_station/dsdt.asl 
b/src/mainboard/amd/union_station/dsdt.asl
index da6f266..1d2435c 100644
--- a/src/mainboard/amd/union_station/dsdt.asl
+++ b/src/mainboard/amd/union_station/dsdt.asl
@@ -1478,6 +1478,22 @@ DefinitionBlock (
                        } /* end Ac97modem */
 
                        Name(CRES, ResourceTemplate() {
+                               /* Set the Bus number and Secondary Bus number 
for the PCI0 device
+                                * The Secondary bus range for PCI0 lets the 
system
+                                * know what bus values are allowed on the 
downstream
+                                * side of this PCI bus if there is a PCI-PCI 
bridge.
+                                * PCI busses can have 256 secondary busses 
which
+                                * range from [0-0xFF] but they do not need to 
be
+                                * sequential.
+                                */
+                               WordBusNumber (ResourceProducer, MinFixed, 
MaxFixed, PosDecode,
+                                       0x0000,         /* address granularity 
*/
+                                       0x0000,         /* range minimum */
+                                       0x00FF,         /* range maximum */
+                                       0x0000,         /* translation */
+                                       0x0100,         /* length */
+                                       ,, PSB0)        /* ResourceSourceIndex, 
ResourceSource, DescriptorName */
+
                                IO(Decode16, 0x0CF8, 0x0CF8, 1, 8)
 
                                WORDIO(ResourceProducer, MinFixed, MaxFixed, 
PosDecode, EntireRange,

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to