diff options
Diffstat (limited to 'drivers/pci/hotplug/acpiphp_glue.c')
| -rw-r--r-- | drivers/pci/hotplug/acpiphp_glue.c | 19 | 
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index cb2fd01edda..b5dad9f3745 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -749,6 +749,24 @@ static int acpiphp_bus_trim(acpi_handle handle)  	return retval;  } +static void acpiphp_set_acpi_region(struct acpiphp_slot *slot) +{ +	struct acpiphp_func *func; +	union acpi_object params[2]; +	struct acpi_object_list arg_list; + +	list_for_each_entry(func, &slot->funcs, sibling) { +		arg_list.count = 2; +		arg_list.pointer = params; +		params[0].type = ACPI_TYPE_INTEGER; +		params[0].integer.value = ACPI_ADR_SPACE_PCI_CONFIG; +		params[1].type = ACPI_TYPE_INTEGER; +		params[1].integer.value = 1; +		/* _REG is optional, we don't care about if there is failure */ +		acpi_evaluate_object(func->handle, "_REG", &arg_list, NULL); +	} +} +  /**   * enable_device - enable, configure a slot   * @slot: slot to be enabled @@ -805,6 +823,7 @@ static int __ref enable_device(struct acpiphp_slot *slot)  	pci_bus_assign_resources(bus);  	acpiphp_sanitize_bus(bus);  	acpiphp_set_hpp_values(bus); +	acpiphp_set_acpi_region(slot);  	pci_enable_bridges(bus);  	pci_bus_add_devices(bus);  |