Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 316503
b: refs/heads/master
c: f4b57a3
h: refs/heads/master
i:
  316501: 5226af4
  316499: 4469632
  316495: 0aaaa71
v: v3
  • Loading branch information
Jiang Liu authored and Bjorn Helgaas committed Jun 22, 2012
1 parent a2aa6db commit eeb8d7f
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9c95111b330d2ddf851444528a7608f267cbb50c
refs/heads/master: f4b57a3b4352f72e461e362cb25917e28bdba80f
2 changes: 2 additions & 0 deletions trunk/drivers/acpi/pci_root.c
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,8 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
strcpy(acpi_device_class(device), ACPI_PCI_ROOT_CLASS);
device->driver_data = root;

root->mcfg_addr = acpi_pci_root_get_mcfg_addr(device->handle);

/*
* All supported architectures that use ACPI have support for
* PCI domains, so we indicate this in _OSC support capabilities.
Expand Down
14 changes: 14 additions & 0 deletions trunk/drivers/pci/pci-acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,20 @@ acpi_status pci_acpi_remove_pm_notifier(struct acpi_device *dev)
return remove_pm_notifier(dev, pci_acpi_wake_dev);
}

phys_addr_t acpi_pci_root_get_mcfg_addr(acpi_handle handle)
{
acpi_status status = AE_NOT_EXIST;
unsigned long long mcfg_addr;

if (handle)
status = acpi_evaluate_integer(handle, METHOD_NAME__CBA,
NULL, &mcfg_addr);
if (ACPI_FAILURE(status))
return 0;

return (phys_addr_t)mcfg_addr;
}

/*
* _SxD returns the D-state with the highest power
* (lowest D-state number) supported in the S-state "x".
Expand Down
1 change: 1 addition & 0 deletions trunk/include/acpi/acnames.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
#define METHOD_NAME__AEI "_AEI"
#define METHOD_NAME__PRW "_PRW"
#define METHOD_NAME__SRS "_SRS"
#define METHOD_NAME__CBA "_CBA"

/* Method names - these methods must appear at the namespace root */

Expand Down
1 change: 1 addition & 0 deletions trunk/include/acpi/acpi_bus.h
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ struct acpi_pci_root {

u32 osc_support_set; /* _OSC state of support bits */
u32 osc_control_set; /* _OSC state of control bits */
phys_addr_t mcfg_addr;
};

/* helper */
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/pci-acpi.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ extern acpi_status pci_acpi_remove_bus_pm_notifier(struct acpi_device *dev);
extern acpi_status pci_acpi_add_pm_notifier(struct acpi_device *dev,
struct pci_dev *pci_dev);
extern acpi_status pci_acpi_remove_pm_notifier(struct acpi_device *dev);
extern phys_addr_t acpi_pci_root_get_mcfg_addr(acpi_handle handle);

static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev)
{
Expand Down

0 comments on commit eeb8d7f

Please sign in to comment.