diff options
author | Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> | 2009-11-03 22:59:55 -0500 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-11-06 17:13:32 -0500 |
commit | 9b536e0b6164d8875b4a5bb66cc102dcf0badeba (patch) | |
tree | 508affb3c4e5e1193cdcf4c954f0e1219ea8175d /drivers/pci/hotplug | |
parent | e0cd5160346f5b88fe536f529066f102518f8acd (diff) |
PCI hotplug: fix oshp evaluation
If firmware doesn't grant over native hotplug control through ACPI
_OSC method, we must not evaluate OSHP.
Acked-by: Andrew Patterson <andrew.patterson@hp.com>
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/hotplug')
-rw-r--r-- | drivers/pci/hotplug/acpi_pcihp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/pci/hotplug/acpi_pcihp.c b/drivers/pci/hotplug/acpi_pcihp.c index a73028ec52e5..6833d7bdbbff 100644 --- a/drivers/pci/hotplug/acpi_pcihp.c +++ b/drivers/pci/hotplug/acpi_pcihp.c | |||
@@ -362,6 +362,8 @@ int acpi_get_hp_hw_control_from_firmware(struct pci_dev *pdev, u32 flags) | |||
362 | status = acpi_pci_osc_control_set(handle, flags); | 362 | status = acpi_pci_osc_control_set(handle, flags); |
363 | if (ACPI_SUCCESS(status)) | 363 | if (ACPI_SUCCESS(status)) |
364 | goto got_one; | 364 | goto got_one; |
365 | if (status == AE_SUPPORT) | ||
366 | goto no_control; | ||
365 | kfree(string.pointer); | 367 | kfree(string.pointer); |
366 | string = (struct acpi_buffer){ ACPI_ALLOCATE_BUFFER, NULL }; | 368 | string = (struct acpi_buffer){ ACPI_ALLOCATE_BUFFER, NULL }; |
367 | } | 369 | } |
@@ -394,10 +396,9 @@ int acpi_get_hp_hw_control_from_firmware(struct pci_dev *pdev, u32 flags) | |||
394 | if (ACPI_FAILURE(status)) | 396 | if (ACPI_FAILURE(status)) |
395 | break; | 397 | break; |
396 | } | 398 | } |
397 | 399 | no_control: | |
398 | dbg("Cannot get control of hotplug hardware for pci %s\n", | 400 | dbg("Cannot get control of hotplug hardware for pci %s\n", |
399 | pci_name(pdev)); | 401 | pci_name(pdev)); |
400 | |||
401 | kfree(string.pointer); | 402 | kfree(string.pointer); |
402 | return -ENODEV; | 403 | return -ENODEV; |
403 | got_one: | 404 | got_one: |