aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/scan.c')
-rw-r--r--drivers/acpi/scan.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 65243b9dd868..32b340171d41 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -126,7 +126,7 @@ acpi_device_modalias_show(struct device *dev, struct device_attribute *attr, cha
126} 126}
127static DEVICE_ATTR(modalias, 0444, acpi_device_modalias_show, NULL); 127static DEVICE_ATTR(modalias, 0444, acpi_device_modalias_show, NULL);
128 128
129static bool acpi_scan_is_offline(struct acpi_device *adev) 129bool acpi_scan_is_offline(struct acpi_device *adev, bool uevent)
130{ 130{
131 struct acpi_device_physical_node *pn; 131 struct acpi_device_physical_node *pn;
132 bool offline = true; 132 bool offline = true;
@@ -135,7 +135,9 @@ static bool acpi_scan_is_offline(struct acpi_device *adev)
135 135
136 list_for_each_entry(pn, &adev->physical_node_list, node) 136 list_for_each_entry(pn, &adev->physical_node_list, node)
137 if (device_supports_offline(pn->dev) && !pn->dev->offline) { 137 if (device_supports_offline(pn->dev) && !pn->dev->offline) {
138 kobject_uevent(&pn->dev->kobj, KOBJ_CHANGE); 138 if (uevent)
139 kobject_uevent(&pn->dev->kobj, KOBJ_CHANGE);
140
139 offline = false; 141 offline = false;
140 break; 142 break;
141 } 143 }
@@ -267,7 +269,7 @@ static int acpi_scan_hot_remove(struct acpi_device *device)
267 acpi_status status; 269 acpi_status status;
268 270
269 if (device->handler->hotplug.demand_offline && !acpi_force_hot_remove) { 271 if (device->handler->hotplug.demand_offline && !acpi_force_hot_remove) {
270 if (!acpi_scan_is_offline(device)) 272 if (!acpi_scan_is_offline(device, true))
271 return -EBUSY; 273 return -EBUSY;
272 } else { 274 } else {
273 int error = acpi_scan_try_to_offline(device); 275 int error = acpi_scan_try_to_offline(device);