lkml.org 
[lkml]   [2008]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/4] PCI: Run ACPI _OSC method on root bridges only
    Date
    From: Andrew Patterson <andrew.patterson@hp.com>

    According to the PCI Firmware Specification Revision 3.0 section 4.5, _OSC
    should only be called on a root brdige. Here is the relevant passage: "The
    _OSC interface defined in this section applies only to Host Bridge ACPI
    devices that originate PCI, PCI-X, or PCI Express hierarchies". Changed the
    code to find the parent root bridge of the device and call _OSC on that.

    Signed-off-by: Andrew Patterson <andrew.patterson@hp.com>
    ---

    drivers/pci/pcie/aer/aerdrv_acpi.c | 22 ++++++----------------
    1 files changed, 6 insertions(+), 16 deletions(-)

    diff --git a/drivers/pci/pcie/aer/aerdrv_acpi.c b/drivers/pci/pcie/aer/aerdrv_acpi.c
    index f685bf5..8c199ae 100644
    --- a/drivers/pci/pcie/aer/aerdrv_acpi.c
    +++ b/drivers/pci/pcie/aer/aerdrv_acpi.c
    @@ -31,23 +31,13 @@ int aer_osc_setup(struct pcie_device *pciedev)
    {
    acpi_status status = AE_NOT_FOUND;
    struct pci_dev *pdev = pciedev->port;
    - acpi_handle handle = DEVICE_ACPI_HANDLE(&pdev->dev);
    - struct pci_bus *parent;
    + acpi_handle handle = 0;

    - while (!handle) {
    - if (!pdev || !pdev->bus->parent)
    - break;
    - parent = pdev->bus->parent;
    - if (!parent->self)
    - /* Parent must be a host bridge */
    - handle = acpi_get_pci_rootbridge_handle(
    - pci_domain_nr(parent),
    - parent->number);
    - else
    - handle = DEVICE_ACPI_HANDLE(
    - &(parent->self->dev));
    - pdev = parent->self;
    - }
    + /* Find root host bridge */
    + while (pdev->bus && pdev->bus->self)
    + pdev = pdev->bus->self;
    + handle = acpi_get_pci_rootbridge_handle(
    + pci_domain_nr(pdev->bus), pdev->bus->number);

    if (handle) {
    pcie_osc_support_set(OSC_EXT_PCI_CONFIG_SUPPORT);


    \
     
     \ /
      Last update: 2008-01-23 01:21    [W:0.022 / U:59.820 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site