GNU Linux-libre 4.9.311-gnu1
[releases.git] / drivers / acpi / scan.c
1 /*
2  * scan.c - support for transforming the ACPI namespace into individual objects
3  */
4
5 #include <linux/module.h>
6 #include <linux/init.h>
7 #include <linux/slab.h>
8 #include <linux/kernel.h>
9 #include <linux/acpi.h>
10 #include <linux/signal.h>
11 #include <linux/kthread.h>
12 #include <linux/dmi.h>
13 #include <linux/nls.h>
14 #include <linux/dma-mapping.h>
15
16 #include <asm/pgtable.h>
17
18 #include "internal.h"
19
20 #define _COMPONENT              ACPI_BUS_COMPONENT
21 ACPI_MODULE_NAME("scan");
22 extern struct acpi_device *acpi_root;
23
24 #define ACPI_BUS_CLASS                  "system_bus"
25 #define ACPI_BUS_HID                    "LNXSYBUS"
26 #define ACPI_BUS_DEVICE_NAME            "System Bus"
27
28 #define ACPI_IS_ROOT_DEVICE(device)    (!(device)->parent)
29
30 #define INVALID_ACPI_HANDLE     ((acpi_handle)empty_zero_page)
31
32 /*
33  * If set, devices will be hot-removed even if they cannot be put offline
34  * gracefully (from the kernel's standpoint).
35  */
36 bool acpi_force_hot_remove;
37
38 static const char *dummy_hid = "device";
39
40 static LIST_HEAD(acpi_dep_list);
41 static DEFINE_MUTEX(acpi_dep_list_lock);
42 LIST_HEAD(acpi_bus_id_list);
43 static DEFINE_MUTEX(acpi_scan_lock);
44 static LIST_HEAD(acpi_scan_handlers_list);
45 DEFINE_MUTEX(acpi_device_lock);
46 LIST_HEAD(acpi_wakeup_device_list);
47 static DEFINE_MUTEX(acpi_hp_context_lock);
48
49 /*
50  * The UART device described by the SPCR table is the only object which needs
51  * special-casing. Everything else is covered by ACPI namespace paths in STAO
52  * table.
53  */
54 static u64 spcr_uart_addr;
55
56 struct acpi_dep_data {
57         struct list_head node;
58         acpi_handle master;
59         acpi_handle slave;
60 };
61
62 void acpi_scan_lock_acquire(void)
63 {
64         mutex_lock(&acpi_scan_lock);
65 }
66 EXPORT_SYMBOL_GPL(acpi_scan_lock_acquire);
67
68 void acpi_scan_lock_release(void)
69 {
70         mutex_unlock(&acpi_scan_lock);
71 }
72 EXPORT_SYMBOL_GPL(acpi_scan_lock_release);
73
74 void acpi_lock_hp_context(void)
75 {
76         mutex_lock(&acpi_hp_context_lock);
77 }
78
79 void acpi_unlock_hp_context(void)
80 {
81         mutex_unlock(&acpi_hp_context_lock);
82 }
83
84 void acpi_initialize_hp_context(struct acpi_device *adev,
85                                 struct acpi_hotplug_context *hp,
86                                 int (*notify)(struct acpi_device *, u32),
87                                 void (*uevent)(struct acpi_device *, u32))
88 {
89         acpi_lock_hp_context();
90         hp->notify = notify;
91         hp->uevent = uevent;
92         acpi_set_hp_context(adev, hp);
93         acpi_unlock_hp_context();
94 }
95 EXPORT_SYMBOL_GPL(acpi_initialize_hp_context);
96
97 int acpi_scan_add_handler(struct acpi_scan_handler *handler)
98 {
99         if (!handler)
100                 return -EINVAL;
101
102         list_add_tail(&handler->list_node, &acpi_scan_handlers_list);
103         return 0;
104 }
105
106 int acpi_scan_add_handler_with_hotplug(struct acpi_scan_handler *handler,
107                                        const char *hotplug_profile_name)
108 {
109         int error;
110
111         error = acpi_scan_add_handler(handler);
112         if (error)
113                 return error;
114
115         acpi_sysfs_add_hotplug_profile(&handler->hotplug, hotplug_profile_name);
116         return 0;
117 }
118
119 bool acpi_scan_is_offline(struct acpi_device *adev, bool uevent)
120 {
121         struct acpi_device_physical_node *pn;
122         bool offline = true;
123
124         /*
125          * acpi_container_offline() calls this for all of the container's
126          * children under the container's physical_node_lock lock.
127          */
128         mutex_lock_nested(&adev->physical_node_lock, SINGLE_DEPTH_NESTING);
129
130         list_for_each_entry(pn, &adev->physical_node_list, node)
131                 if (device_supports_offline(pn->dev) && !pn->dev->offline) {
132                         if (uevent)
133                                 kobject_uevent(&pn->dev->kobj, KOBJ_CHANGE);
134
135                         offline = false;
136                         break;
137                 }
138
139         mutex_unlock(&adev->physical_node_lock);
140         return offline;
141 }
142
143 static acpi_status acpi_bus_offline(acpi_handle handle, u32 lvl, void *data,
144                                     void **ret_p)
145 {
146         struct acpi_device *device = NULL;
147         struct acpi_device_physical_node *pn;
148         bool second_pass = (bool)data;
149         acpi_status status = AE_OK;
150
151         if (acpi_bus_get_device(handle, &device))
152                 return AE_OK;
153
154         if (device->handler && !device->handler->hotplug.enabled) {
155                 *ret_p = &device->dev;
156                 return AE_SUPPORT;
157         }
158
159         mutex_lock(&device->physical_node_lock);
160
161         list_for_each_entry(pn, &device->physical_node_list, node) {
162                 int ret;
163
164                 if (second_pass) {
165                         /* Skip devices offlined by the first pass. */
166                         if (pn->put_online)
167                                 continue;
168                 } else {
169                         pn->put_online = false;
170                 }
171                 ret = device_offline(pn->dev);
172                 if (acpi_force_hot_remove)
173                         continue;
174
175                 if (ret >= 0) {
176                         pn->put_online = !ret;
177                 } else {
178                         *ret_p = pn->dev;
179                         if (second_pass) {
180                                 status = AE_ERROR;
181                                 break;
182                         }
183                 }
184         }
185
186         mutex_unlock(&device->physical_node_lock);
187
188         return status;
189 }
190
191 static acpi_status acpi_bus_online(acpi_handle handle, u32 lvl, void *data,
192                                    void **ret_p)
193 {
194         struct acpi_device *device = NULL;
195         struct acpi_device_physical_node *pn;
196
197         if (acpi_bus_get_device(handle, &device))
198                 return AE_OK;
199
200         mutex_lock(&device->physical_node_lock);
201
202         list_for_each_entry(pn, &device->physical_node_list, node)
203                 if (pn->put_online) {
204                         device_online(pn->dev);
205                         pn->put_online = false;
206                 }
207
208         mutex_unlock(&device->physical_node_lock);
209
210         return AE_OK;
211 }
212
213 static int acpi_scan_try_to_offline(struct acpi_device *device)
214 {
215         acpi_handle handle = device->handle;
216         struct device *errdev = NULL;
217         acpi_status status;
218
219         /*
220          * Carry out two passes here and ignore errors in the first pass,
221          * because if the devices in question are memory blocks and
222          * CONFIG_MEMCG is set, one of the blocks may hold data structures
223          * that the other blocks depend on, but it is not known in advance which
224          * block holds them.
225          *
226          * If the first pass is successful, the second one isn't needed, though.
227          */
228         status = acpi_walk_namespace(ACPI_TYPE_ANY, handle, ACPI_UINT32_MAX,
229                                      NULL, acpi_bus_offline, (void *)false,
230                                      (void **)&errdev);
231         if (status == AE_SUPPORT) {
232                 dev_warn(errdev, "Offline disabled.\n");
233                 acpi_walk_namespace(ACPI_TYPE_ANY, handle, ACPI_UINT32_MAX,
234                                     acpi_bus_online, NULL, NULL, NULL);
235                 return -EPERM;
236         }
237         acpi_bus_offline(handle, 0, (void *)false, (void **)&errdev);
238         if (errdev) {
239                 errdev = NULL;
240                 acpi_walk_namespace(ACPI_TYPE_ANY, handle, ACPI_UINT32_MAX,
241                                     NULL, acpi_bus_offline, (void *)true,
242                                     (void **)&errdev);
243                 if (!errdev || acpi_force_hot_remove)
244                         acpi_bus_offline(handle, 0, (void *)true,
245                                          (void **)&errdev);
246
247                 if (errdev && !acpi_force_hot_remove) {
248                         dev_warn(errdev, "Offline failed.\n");
249                         acpi_bus_online(handle, 0, NULL, NULL);
250                         acpi_walk_namespace(ACPI_TYPE_ANY, handle,
251                                             ACPI_UINT32_MAX, acpi_bus_online,
252                                             NULL, NULL, NULL);
253                         return -EBUSY;
254                 }
255         }
256         return 0;
257 }
258
259 static int acpi_scan_hot_remove(struct acpi_device *device)
260 {
261         acpi_handle handle = device->handle;
262         unsigned long long sta;
263         acpi_status status;
264
265         if (device->handler && device->handler->hotplug.demand_offline
266             && !acpi_force_hot_remove) {
267                 if (!acpi_scan_is_offline(device, true))
268                         return -EBUSY;
269         } else {
270                 int error = acpi_scan_try_to_offline(device);
271                 if (error)
272                         return error;
273         }
274
275         ACPI_DEBUG_PRINT((ACPI_DB_INFO,
276                 "Hot-removing device %s...\n", dev_name(&device->dev)));
277
278         acpi_bus_trim(device);
279
280         acpi_evaluate_lck(handle, 0);
281         /*
282          * TBD: _EJD support.
283          */
284         status = acpi_evaluate_ej0(handle);
285         if (status == AE_NOT_FOUND)
286                 return -ENODEV;
287         else if (ACPI_FAILURE(status))
288                 return -EIO;
289
290         /*
291          * Verify if eject was indeed successful.  If not, log an error
292          * message.  No need to call _OST since _EJ0 call was made OK.
293          */
294         status = acpi_evaluate_integer(handle, "_STA", NULL, &sta);
295         if (ACPI_FAILURE(status)) {
296                 acpi_handle_warn(handle,
297                         "Status check after eject failed (0x%x)\n", status);
298         } else if (sta & ACPI_STA_DEVICE_ENABLED) {
299                 acpi_handle_warn(handle,
300                         "Eject incomplete - status 0x%llx\n", sta);
301         }
302
303         return 0;
304 }
305
306 static int acpi_scan_device_not_present(struct acpi_device *adev)
307 {
308         if (!acpi_device_enumerated(adev)) {
309                 dev_warn(&adev->dev, "Still not present\n");
310                 return -EALREADY;
311         }
312         acpi_bus_trim(adev);
313         return 0;
314 }
315
316 static int acpi_scan_device_check(struct acpi_device *adev)
317 {
318         int error;
319
320         acpi_bus_get_status(adev);
321         if (adev->status.present || adev->status.functional) {
322                 /*
323                  * This function is only called for device objects for which
324                  * matching scan handlers exist.  The only situation in which
325                  * the scan handler is not attached to this device object yet
326                  * is when the device has just appeared (either it wasn't
327                  * present at all before or it was removed and then added
328                  * again).
329                  */
330                 if (adev->handler) {
331                         dev_warn(&adev->dev, "Already enumerated\n");
332                         return -EALREADY;
333                 }
334                 error = acpi_bus_scan(adev->handle);
335                 if (error) {
336                         dev_warn(&adev->dev, "Namespace scan failure\n");
337                         return error;
338                 }
339                 if (!adev->handler) {
340                         dev_warn(&adev->dev, "Enumeration failure\n");
341                         error = -ENODEV;
342                 }
343         } else {
344                 error = acpi_scan_device_not_present(adev);
345         }
346         return error;
347 }
348
349 static int acpi_scan_bus_check(struct acpi_device *adev)
350 {
351         struct acpi_scan_handler *handler = adev->handler;
352         struct acpi_device *child;
353         int error;
354
355         acpi_bus_get_status(adev);
356         if (!(adev->status.present || adev->status.functional)) {
357                 acpi_scan_device_not_present(adev);
358                 return 0;
359         }
360         if (handler && handler->hotplug.scan_dependent)
361                 return handler->hotplug.scan_dependent(adev);
362
363         error = acpi_bus_scan(adev->handle);
364         if (error) {
365                 dev_warn(&adev->dev, "Namespace scan failure\n");
366                 return error;
367         }
368         list_for_each_entry(child, &adev->children, node) {
369                 error = acpi_scan_bus_check(child);
370                 if (error)
371                         return error;
372         }
373         return 0;
374 }
375
376 static int acpi_generic_hotplug_event(struct acpi_device *adev, u32 type)
377 {
378         switch (type) {
379         case ACPI_NOTIFY_BUS_CHECK:
380                 return acpi_scan_bus_check(adev);
381         case ACPI_NOTIFY_DEVICE_CHECK:
382                 return acpi_scan_device_check(adev);
383         case ACPI_NOTIFY_EJECT_REQUEST:
384         case ACPI_OST_EC_OSPM_EJECT:
385                 if (adev->handler && !adev->handler->hotplug.enabled) {
386                         dev_info(&adev->dev, "Eject disabled\n");
387                         return -EPERM;
388                 }
389                 acpi_evaluate_ost(adev->handle, ACPI_NOTIFY_EJECT_REQUEST,
390                                   ACPI_OST_SC_EJECT_IN_PROGRESS, NULL);
391                 return acpi_scan_hot_remove(adev);
392         }
393         return -EINVAL;
394 }
395
396 void acpi_device_hotplug(struct acpi_device *adev, u32 src)
397 {
398         u32 ost_code = ACPI_OST_SC_NON_SPECIFIC_FAILURE;
399         int error = -ENODEV;
400
401         lock_device_hotplug();
402         mutex_lock(&acpi_scan_lock);
403
404         /*
405          * The device object's ACPI handle cannot become invalid as long as we
406          * are holding acpi_scan_lock, but it might have become invalid before
407          * that lock was acquired.
408          */
409         if (adev->handle == INVALID_ACPI_HANDLE)
410                 goto err_out;
411
412         if (adev->flags.is_dock_station) {
413                 error = dock_notify(adev, src);
414         } else if (adev->flags.hotplug_notify) {
415                 error = acpi_generic_hotplug_event(adev, src);
416                 if (error == -EPERM) {
417                         ost_code = ACPI_OST_SC_EJECT_NOT_SUPPORTED;
418                         goto err_out;
419                 }
420         } else {
421                 int (*notify)(struct acpi_device *, u32);
422
423                 acpi_lock_hp_context();
424                 notify = adev->hp ? adev->hp->notify : NULL;
425                 acpi_unlock_hp_context();
426                 /*
427                  * There may be additional notify handlers for device objects
428                  * without the .event() callback, so ignore them here.
429                  */
430                 if (notify)
431                         error = notify(adev, src);
432                 else
433                         goto out;
434         }
435         if (!error)
436                 ost_code = ACPI_OST_SC_SUCCESS;
437
438  err_out:
439         acpi_evaluate_ost(adev->handle, src, ost_code, NULL);
440
441  out:
442         acpi_bus_put_acpi_device(adev);
443         mutex_unlock(&acpi_scan_lock);
444         unlock_device_hotplug();
445 }
446
447 static void acpi_free_power_resources_lists(struct acpi_device *device)
448 {
449         int i;
450
451         if (device->wakeup.flags.valid)
452                 acpi_power_resources_list_free(&device->wakeup.resources);
453
454         if (!device->power.flags.power_resources)
455                 return;
456
457         for (i = ACPI_STATE_D0; i <= ACPI_STATE_D3_HOT; i++) {
458                 struct acpi_device_power_state *ps = &device->power.states[i];
459                 acpi_power_resources_list_free(&ps->resources);
460         }
461 }
462
463 static void acpi_device_release(struct device *dev)
464 {
465         struct acpi_device *acpi_dev = to_acpi_device(dev);
466
467         acpi_free_properties(acpi_dev);
468         acpi_free_pnp_ids(&acpi_dev->pnp);
469         acpi_free_power_resources_lists(acpi_dev);
470         kfree(acpi_dev);
471 }
472
473 static void acpi_device_del(struct acpi_device *device)
474 {
475         struct acpi_device_bus_id *acpi_device_bus_id;
476
477         mutex_lock(&acpi_device_lock);
478         if (device->parent)
479                 list_del(&device->node);
480
481         list_for_each_entry(acpi_device_bus_id, &acpi_bus_id_list, node)
482                 if (!strcmp(acpi_device_bus_id->bus_id,
483                             acpi_device_hid(device))) {
484                         ida_simple_remove(&acpi_device_bus_id->instance_ida, device->pnp.instance_no);
485                         if (ida_is_empty(&acpi_device_bus_id->instance_ida)) {
486                                 list_del(&acpi_device_bus_id->node);
487                                 kfree_const(acpi_device_bus_id->bus_id);
488                                 kfree(acpi_device_bus_id);
489                         }
490                         break;
491                 }
492
493         list_del(&device->wakeup_list);
494         mutex_unlock(&acpi_device_lock);
495
496         acpi_power_add_remove_device(device, false);
497         acpi_device_remove_files(device);
498         if (device->remove)
499                 device->remove(device);
500
501         device_del(&device->dev);
502 }
503
504 static BLOCKING_NOTIFIER_HEAD(acpi_reconfig_chain);
505
506 static LIST_HEAD(acpi_device_del_list);
507 static DEFINE_MUTEX(acpi_device_del_lock);
508
509 static void acpi_device_del_work_fn(struct work_struct *work_not_used)
510 {
511         for (;;) {
512                 struct acpi_device *adev;
513
514                 mutex_lock(&acpi_device_del_lock);
515
516                 if (list_empty(&acpi_device_del_list)) {
517                         mutex_unlock(&acpi_device_del_lock);
518                         break;
519                 }
520                 adev = list_first_entry(&acpi_device_del_list,
521                                         struct acpi_device, del_list);
522                 list_del(&adev->del_list);
523
524                 mutex_unlock(&acpi_device_del_lock);
525
526                 blocking_notifier_call_chain(&acpi_reconfig_chain,
527                                              ACPI_RECONFIG_DEVICE_REMOVE, adev);
528
529                 acpi_device_del(adev);
530                 /*
531                  * Drop references to all power resources that might have been
532                  * used by the device.
533                  */
534                 acpi_power_transition(adev, ACPI_STATE_D3_COLD);
535                 put_device(&adev->dev);
536         }
537 }
538
539 /**
540  * acpi_scan_drop_device - Drop an ACPI device object.
541  * @handle: Handle of an ACPI namespace node, not used.
542  * @context: Address of the ACPI device object to drop.
543  *
544  * This is invoked by acpi_ns_delete_node() during the removal of the ACPI
545  * namespace node the device object pointed to by @context is attached to.
546  *
547  * The unregistration is carried out asynchronously to avoid running
548  * acpi_device_del() under the ACPICA's namespace mutex and the list is used to
549  * ensure the correct ordering (the device objects must be unregistered in the
550  * same order in which the corresponding namespace nodes are deleted).
551  */
552 static void acpi_scan_drop_device(acpi_handle handle, void *context)
553 {
554         static DECLARE_WORK(work, acpi_device_del_work_fn);
555         struct acpi_device *adev = context;
556
557         mutex_lock(&acpi_device_del_lock);
558
559         /*
560          * Use the ACPI hotplug workqueue which is ordered, so this work item
561          * won't run after any hotplug work items submitted subsequently.  That
562          * prevents attempts to register device objects identical to those being
563          * deleted from happening concurrently (such attempts result from
564          * hotplug events handled via the ACPI hotplug workqueue).  It also will
565          * run after all of the work items submitted previosuly, which helps
566          * those work items to ensure that they are not accessing stale device
567          * objects.
568          */
569         if (list_empty(&acpi_device_del_list))
570                 acpi_queue_hotplug_work(&work);
571
572         list_add_tail(&adev->del_list, &acpi_device_del_list);
573         /* Make acpi_ns_validate_handle() return NULL for this handle. */
574         adev->handle = INVALID_ACPI_HANDLE;
575
576         mutex_unlock(&acpi_device_del_lock);
577 }
578
579 static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
580                                 void (*callback)(void *))
581 {
582         acpi_status status;
583
584         if (!device)
585                 return -EINVAL;
586
587         *device = NULL;
588
589         status = acpi_get_data_full(handle, acpi_scan_drop_device,
590                                     (void **)device, callback);
591         if (ACPI_FAILURE(status) || !*device) {
592                 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
593                                   handle));
594                 return -ENODEV;
595         }
596         return 0;
597 }
598
599 int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device)
600 {
601         return acpi_get_device_data(handle, device, NULL);
602 }
603 EXPORT_SYMBOL(acpi_bus_get_device);
604
605 static void get_acpi_device(void *dev)
606 {
607         if (dev)
608                 get_device(&((struct acpi_device *)dev)->dev);
609 }
610
611 struct acpi_device *acpi_bus_get_acpi_device(acpi_handle handle)
612 {
613         struct acpi_device *adev = NULL;
614
615         acpi_get_device_data(handle, &adev, get_acpi_device);
616         return adev;
617 }
618
619 void acpi_bus_put_acpi_device(struct acpi_device *adev)
620 {
621         put_device(&adev->dev);
622 }
623
624 static struct acpi_device_bus_id *acpi_device_bus_id_match(const char *dev_id)
625 {
626         struct acpi_device_bus_id *acpi_device_bus_id;
627
628         /* Find suitable bus_id and instance number in acpi_bus_id_list. */
629         list_for_each_entry(acpi_device_bus_id, &acpi_bus_id_list, node) {
630                 if (!strcmp(acpi_device_bus_id->bus_id, dev_id))
631                         return acpi_device_bus_id;
632         }
633         return NULL;
634 }
635
636 static int acpi_device_set_name(struct acpi_device *device,
637                                 struct acpi_device_bus_id *acpi_device_bus_id)
638 {
639         struct ida *instance_ida = &acpi_device_bus_id->instance_ida;
640         int result;
641
642         result = ida_simple_get(instance_ida, 0, ACPI_MAX_DEVICE_INSTANCES, GFP_KERNEL);
643         if (result < 0)
644                 return result;
645
646         device->pnp.instance_no = result;
647         dev_set_name(&device->dev, "%s:%02x", acpi_device_bus_id->bus_id, result);
648         return 0;
649 }
650
651 int acpi_device_add(struct acpi_device *device,
652                     void (*release)(struct device *))
653 {
654         struct acpi_device_bus_id *acpi_device_bus_id;
655         int result;
656
657         if (device->handle) {
658                 acpi_status status;
659
660                 status = acpi_attach_data(device->handle, acpi_scan_drop_device,
661                                           device);
662                 if (ACPI_FAILURE(status)) {
663                         acpi_handle_err(device->handle,
664                                         "Unable to attach device data\n");
665                         return -ENODEV;
666                 }
667         }
668
669         /*
670          * Linkage
671          * -------
672          * Link this device to its parent and siblings.
673          */
674         INIT_LIST_HEAD(&device->children);
675         INIT_LIST_HEAD(&device->node);
676         INIT_LIST_HEAD(&device->wakeup_list);
677         INIT_LIST_HEAD(&device->physical_node_list);
678         INIT_LIST_HEAD(&device->del_list);
679         mutex_init(&device->physical_node_lock);
680
681         mutex_lock(&acpi_device_lock);
682
683         acpi_device_bus_id = acpi_device_bus_id_match(acpi_device_hid(device));
684         if (acpi_device_bus_id) {
685                 result = acpi_device_set_name(device, acpi_device_bus_id);
686                 if (result)
687                         goto err_unlock;
688         } else {
689                 acpi_device_bus_id = kzalloc(sizeof(*acpi_device_bus_id),
690                                              GFP_KERNEL);
691                 if (!acpi_device_bus_id) {
692                         result = -ENOMEM;
693                         goto err_unlock;
694                 }
695                 acpi_device_bus_id->bus_id =
696                         kstrdup_const(acpi_device_hid(device), GFP_KERNEL);
697                 if (!acpi_device_bus_id->bus_id) {
698                         kfree(acpi_device_bus_id);
699                         result = -ENOMEM;
700                         goto err_unlock;
701                 }
702
703                 ida_init(&acpi_device_bus_id->instance_ida);
704
705                 result = acpi_device_set_name(device, acpi_device_bus_id);
706                 if (result) {
707                         kfree_const(acpi_device_bus_id->bus_id);
708                         kfree(acpi_device_bus_id);
709                         goto err_unlock;
710                 }
711
712                 list_add_tail(&acpi_device_bus_id->node, &acpi_bus_id_list);
713         }
714
715         if (device->parent)
716                 list_add_tail(&device->node, &device->parent->children);
717
718         if (device->wakeup.flags.valid)
719                 list_add_tail(&device->wakeup_list, &acpi_wakeup_device_list);
720         mutex_unlock(&acpi_device_lock);
721
722         if (device->parent)
723                 device->dev.parent = &device->parent->dev;
724         device->dev.bus = &acpi_bus_type;
725         device->dev.release = release;
726         result = device_add(&device->dev);
727         if (result) {
728                 dev_err(&device->dev, "Error registering device\n");
729                 goto err;
730         }
731
732         result = acpi_device_setup_files(device);
733         if (result)
734                 printk(KERN_ERR PREFIX "Error creating sysfs interface for device %s\n",
735                        dev_name(&device->dev));
736
737         return 0;
738
739  err:
740         mutex_lock(&acpi_device_lock);
741         if (device->parent)
742                 list_del(&device->node);
743         list_del(&device->wakeup_list);
744
745  err_unlock:
746         mutex_unlock(&acpi_device_lock);
747
748         acpi_detach_data(device->handle, acpi_scan_drop_device);
749         return result;
750 }
751
752 /* --------------------------------------------------------------------------
753                                  Device Enumeration
754    -------------------------------------------------------------------------- */
755 static struct acpi_device *acpi_bus_get_parent(acpi_handle handle)
756 {
757         struct acpi_device *device = NULL;
758         acpi_status status;
759
760         /*
761          * Fixed hardware devices do not appear in the namespace and do not
762          * have handles, but we fabricate acpi_devices for them, so we have
763          * to deal with them specially.
764          */
765         if (!handle)
766                 return acpi_root;
767
768         do {
769                 status = acpi_get_parent(handle, &handle);
770                 if (ACPI_FAILURE(status))
771                         return status == AE_NULL_ENTRY ? NULL : acpi_root;
772         } while (acpi_bus_get_device(handle, &device));
773         return device;
774 }
775
776 acpi_status
777 acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd)
778 {
779         acpi_status status;
780         acpi_handle tmp;
781         struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
782         union acpi_object *obj;
783
784         status = acpi_get_handle(handle, "_EJD", &tmp);
785         if (ACPI_FAILURE(status))
786                 return status;
787
788         status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer);
789         if (ACPI_SUCCESS(status)) {
790                 obj = buffer.pointer;
791                 status = acpi_get_handle(ACPI_ROOT_OBJECT, obj->string.pointer,
792                                          ejd);
793                 kfree(buffer.pointer);
794         }
795         return status;
796 }
797 EXPORT_SYMBOL_GPL(acpi_bus_get_ejd);
798
799 static int acpi_bus_extract_wakeup_device_power_package(acpi_handle handle,
800                                         struct acpi_device_wakeup *wakeup)
801 {
802         struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
803         union acpi_object *package = NULL;
804         union acpi_object *element = NULL;
805         acpi_status status;
806         int err = -ENODATA;
807
808         if (!wakeup)
809                 return -EINVAL;
810
811         INIT_LIST_HEAD(&wakeup->resources);
812
813         /* _PRW */
814         status = acpi_evaluate_object(handle, "_PRW", NULL, &buffer);
815         if (ACPI_FAILURE(status)) {
816                 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PRW"));
817                 return err;
818         }
819
820         package = (union acpi_object *)buffer.pointer;
821
822         if (!package || package->package.count < 2)
823                 goto out;
824
825         element = &(package->package.elements[0]);
826         if (!element)
827                 goto out;
828
829         if (element->type == ACPI_TYPE_PACKAGE) {
830                 if ((element->package.count < 2) ||
831                     (element->package.elements[0].type !=
832                      ACPI_TYPE_LOCAL_REFERENCE)
833                     || (element->package.elements[1].type != ACPI_TYPE_INTEGER))
834                         goto out;
835
836                 wakeup->gpe_device =
837                     element->package.elements[0].reference.handle;
838                 wakeup->gpe_number =
839                     (u32) element->package.elements[1].integer.value;
840         } else if (element->type == ACPI_TYPE_INTEGER) {
841                 wakeup->gpe_device = NULL;
842                 wakeup->gpe_number = element->integer.value;
843         } else {
844                 goto out;
845         }
846
847         element = &(package->package.elements[1]);
848         if (element->type != ACPI_TYPE_INTEGER)
849                 goto out;
850
851         wakeup->sleep_state = element->integer.value;
852
853         err = acpi_extract_power_resources(package, 2, &wakeup->resources);
854         if (err)
855                 goto out;
856
857         if (!list_empty(&wakeup->resources)) {
858                 int sleep_state;
859
860                 err = acpi_power_wakeup_list_init(&wakeup->resources,
861                                                   &sleep_state);
862                 if (err) {
863                         acpi_handle_warn(handle, "Retrieving current states "
864                                          "of wakeup power resources failed\n");
865                         acpi_power_resources_list_free(&wakeup->resources);
866                         goto out;
867                 }
868                 if (sleep_state < wakeup->sleep_state) {
869                         acpi_handle_warn(handle, "Overriding _PRW sleep state "
870                                          "(S%d) by S%d from power resources\n",
871                                          (int)wakeup->sleep_state, sleep_state);
872                         wakeup->sleep_state = sleep_state;
873                 }
874         }
875
876  out:
877         kfree(buffer.pointer);
878         return err;
879 }
880
881 static void acpi_wakeup_gpe_init(struct acpi_device *device)
882 {
883         static const struct acpi_device_id button_device_ids[] = {
884                 {"PNP0C0C", 0},
885                 {"PNP0C0D", 0},
886                 {"PNP0C0E", 0},
887                 {"", 0},
888         };
889         struct acpi_device_wakeup *wakeup = &device->wakeup;
890         acpi_status status;
891         acpi_event_status event_status;
892
893         wakeup->flags.notifier_present = 0;
894
895         /* Power button, Lid switch always enable wakeup */
896         if (!acpi_match_device_ids(device, button_device_ids)) {
897                 wakeup->flags.run_wake = 1;
898                 if (!acpi_match_device_ids(device, &button_device_ids[1])) {
899                         /* Do not use Lid/sleep button for S5 wakeup */
900                         if (wakeup->sleep_state == ACPI_STATE_S5)
901                                 wakeup->sleep_state = ACPI_STATE_S4;
902                 }
903                 acpi_mark_gpe_for_wake(wakeup->gpe_device, wakeup->gpe_number);
904                 device_set_wakeup_capable(&device->dev, true);
905                 return;
906         }
907
908         acpi_setup_gpe_for_wake(device->handle, wakeup->gpe_device,
909                                 wakeup->gpe_number);
910         status = acpi_get_gpe_status(wakeup->gpe_device, wakeup->gpe_number,
911                                      &event_status);
912         if (ACPI_FAILURE(status))
913                 return;
914
915         wakeup->flags.run_wake = !!(event_status & ACPI_EVENT_FLAG_HAS_HANDLER);
916 }
917
918 static void acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
919 {
920         int err;
921
922         /* Presence of _PRW indicates wake capable */
923         if (!acpi_has_method(device->handle, "_PRW"))
924                 return;
925
926         err = acpi_bus_extract_wakeup_device_power_package(device->handle,
927                                                            &device->wakeup);
928         if (err) {
929                 dev_err(&device->dev, "_PRW evaluation error: %d\n", err);
930                 return;
931         }
932
933         device->wakeup.flags.valid = 1;
934         device->wakeup.prepare_count = 0;
935         acpi_wakeup_gpe_init(device);
936         /* Call _PSW/_DSW object to disable its ability to wake the sleeping
937          * system for the ACPI device with the _PRW object.
938          * The _PSW object is depreciated in ACPI 3.0 and is replaced by _DSW.
939          * So it is necessary to call _DSW object first. Only when it is not
940          * present will the _PSW object used.
941          */
942         err = acpi_device_sleep_wake(device, 0, 0, 0);
943         if (err)
944                 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
945                                 "error in _DSW or _PSW evaluation\n"));
946 }
947
948 static void acpi_bus_init_power_state(struct acpi_device *device, int state)
949 {
950         struct acpi_device_power_state *ps = &device->power.states[state];
951         char pathname[5] = { '_', 'P', 'R', '0' + state, '\0' };
952         struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
953         acpi_status status;
954
955         INIT_LIST_HEAD(&ps->resources);
956
957         /* Evaluate "_PRx" to get referenced power resources */
958         status = acpi_evaluate_object(device->handle, pathname, NULL, &buffer);
959         if (ACPI_SUCCESS(status)) {
960                 union acpi_object *package = buffer.pointer;
961
962                 if (buffer.length && package
963                     && package->type == ACPI_TYPE_PACKAGE
964                     && package->package.count)
965                         acpi_extract_power_resources(package, 0, &ps->resources);
966
967                 ACPI_FREE(buffer.pointer);
968         }
969
970         /* Evaluate "_PSx" to see if we can do explicit sets */
971         pathname[2] = 'S';
972         if (acpi_has_method(device->handle, pathname))
973                 ps->flags.explicit_set = 1;
974
975         /* State is valid if there are means to put the device into it. */
976         if (!list_empty(&ps->resources) || ps->flags.explicit_set)
977                 ps->flags.valid = 1;
978
979         ps->power = -1;         /* Unknown - driver assigned */
980         ps->latency = -1;       /* Unknown - driver assigned */
981 }
982
983 static void acpi_bus_get_power_flags(struct acpi_device *device)
984 {
985         u32 i;
986
987         /* Presence of _PS0|_PR0 indicates 'power manageable' */
988         if (!acpi_has_method(device->handle, "_PS0") &&
989             !acpi_has_method(device->handle, "_PR0"))
990                 return;
991
992         device->flags.power_manageable = 1;
993
994         /*
995          * Power Management Flags
996          */
997         if (acpi_has_method(device->handle, "_PSC"))
998                 device->power.flags.explicit_get = 1;
999
1000         if (acpi_has_method(device->handle, "_IRC"))
1001                 device->power.flags.inrush_current = 1;
1002
1003         if (acpi_has_method(device->handle, "_DSW"))
1004                 device->power.flags.dsw_present = 1;
1005
1006         /*
1007          * Enumerate supported power management states
1008          */
1009         for (i = ACPI_STATE_D0; i <= ACPI_STATE_D3_HOT; i++)
1010                 acpi_bus_init_power_state(device, i);
1011
1012         INIT_LIST_HEAD(&device->power.states[ACPI_STATE_D3_COLD].resources);
1013
1014         /* Set the defaults for D0 and D3hot (always supported). */
1015         device->power.states[ACPI_STATE_D0].flags.valid = 1;
1016         device->power.states[ACPI_STATE_D0].power = 100;
1017         device->power.states[ACPI_STATE_D3_HOT].flags.valid = 1;
1018
1019         /*
1020          * Use power resources only if the D0 list of them is populated, because
1021          * some platforms may provide _PR3 only to indicate D3cold support and
1022          * in those cases the power resources list returned by it may be bogus.
1023          */
1024         if (!list_empty(&device->power.states[ACPI_STATE_D0].resources)) {
1025                 device->power.flags.power_resources = 1;
1026                 /*
1027                  * D3cold is supported if the D3hot list of power resources is
1028                  * not empty.
1029                  */
1030                 if (!list_empty(&device->power.states[ACPI_STATE_D3_HOT].resources))
1031                         device->power.states[ACPI_STATE_D3_COLD].flags.valid = 1;
1032         }
1033
1034         if (acpi_bus_init_power(device))
1035                 device->flags.power_manageable = 0;
1036 }
1037
1038 static void acpi_bus_get_flags(struct acpi_device *device)
1039 {
1040         /* Presence of _STA indicates 'dynamic_status' */
1041         if (acpi_has_method(device->handle, "_STA"))
1042                 device->flags.dynamic_status = 1;
1043
1044         /* Presence of _RMV indicates 'removable' */
1045         if (acpi_has_method(device->handle, "_RMV"))
1046                 device->flags.removable = 1;
1047
1048         /* Presence of _EJD|_EJ0 indicates 'ejectable' */
1049         if (acpi_has_method(device->handle, "_EJD") ||
1050             acpi_has_method(device->handle, "_EJ0"))
1051                 device->flags.ejectable = 1;
1052 }
1053
1054 static void acpi_device_get_busid(struct acpi_device *device)
1055 {
1056         char bus_id[5] = { '?', 0 };
1057         struct acpi_buffer buffer = { sizeof(bus_id), bus_id };
1058         int i = 0;
1059
1060         /*
1061          * Bus ID
1062          * ------
1063          * The device's Bus ID is simply the object name.
1064          * TBD: Shouldn't this value be unique (within the ACPI namespace)?
1065          */
1066         if (ACPI_IS_ROOT_DEVICE(device)) {
1067                 strcpy(device->pnp.bus_id, "ACPI");
1068                 return;
1069         }
1070
1071         switch (device->device_type) {
1072         case ACPI_BUS_TYPE_POWER_BUTTON:
1073                 strcpy(device->pnp.bus_id, "PWRF");
1074                 break;
1075         case ACPI_BUS_TYPE_SLEEP_BUTTON:
1076                 strcpy(device->pnp.bus_id, "SLPF");
1077                 break;
1078         default:
1079                 acpi_get_name(device->handle, ACPI_SINGLE_NAME, &buffer);
1080                 /* Clean up trailing underscores (if any) */
1081                 for (i = 3; i > 1; i--) {
1082                         if (bus_id[i] == '_')
1083                                 bus_id[i] = '\0';
1084                         else
1085                                 break;
1086                 }
1087                 strcpy(device->pnp.bus_id, bus_id);
1088                 break;
1089         }
1090 }
1091
1092 /*
1093  * acpi_ata_match - see if an acpi object is an ATA device
1094  *
1095  * If an acpi object has one of the ACPI ATA methods defined,
1096  * then we can safely call it an ATA device.
1097  */
1098 bool acpi_ata_match(acpi_handle handle)
1099 {
1100         return acpi_has_method(handle, "_GTF") ||
1101                acpi_has_method(handle, "_GTM") ||
1102                acpi_has_method(handle, "_STM") ||
1103                acpi_has_method(handle, "_SDD");
1104 }
1105
1106 /*
1107  * acpi_bay_match - see if an acpi object is an ejectable driver bay
1108  *
1109  * If an acpi object is ejectable and has one of the ACPI ATA methods defined,
1110  * then we can safely call it an ejectable drive bay
1111  */
1112 bool acpi_bay_match(acpi_handle handle)
1113 {
1114         acpi_handle phandle;
1115
1116         if (!acpi_has_method(handle, "_EJ0"))
1117                 return false;
1118         if (acpi_ata_match(handle))
1119                 return true;
1120         if (ACPI_FAILURE(acpi_get_parent(handle, &phandle)))
1121                 return false;
1122
1123         return acpi_ata_match(phandle);
1124 }
1125
1126 bool acpi_device_is_battery(struct acpi_device *adev)
1127 {
1128         struct acpi_hardware_id *hwid;
1129
1130         list_for_each_entry(hwid, &adev->pnp.ids, list)
1131                 if (!strcmp("PNP0C0A", hwid->id))
1132                         return true;
1133
1134         return false;
1135 }
1136
1137 static bool is_ejectable_bay(struct acpi_device *adev)
1138 {
1139         acpi_handle handle = adev->handle;
1140
1141         if (acpi_has_method(handle, "_EJ0") && acpi_device_is_battery(adev))
1142                 return true;
1143
1144         return acpi_bay_match(handle);
1145 }
1146
1147 /*
1148  * acpi_dock_match - see if an acpi object has a _DCK method
1149  */
1150 bool acpi_dock_match(acpi_handle handle)
1151 {
1152         return acpi_has_method(handle, "_DCK");
1153 }
1154
1155 static acpi_status
1156 acpi_backlight_cap_match(acpi_handle handle, u32 level, void *context,
1157                           void **return_value)
1158 {
1159         long *cap = context;
1160
1161         if (acpi_has_method(handle, "_BCM") &&
1162             acpi_has_method(handle, "_BCL")) {
1163                 ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found generic backlight "
1164                                   "support\n"));
1165                 *cap |= ACPI_VIDEO_BACKLIGHT;
1166                 if (!acpi_has_method(handle, "_BQC"))
1167                         printk(KERN_WARNING FW_BUG PREFIX "No _BQC method, "
1168                                 "cannot determine initial brightness\n");
1169                 /* We have backlight support, no need to scan further */
1170                 return AE_CTRL_TERMINATE;
1171         }
1172         return 0;
1173 }
1174
1175 /* Returns true if the ACPI object is a video device which can be
1176  * handled by video.ko.
1177  * The device will get a Linux specific CID added in scan.c to
1178  * identify the device as an ACPI graphics device
1179  * Be aware that the graphics device may not be physically present
1180  * Use acpi_video_get_capabilities() to detect general ACPI video
1181  * capabilities of present cards
1182  */
1183 long acpi_is_video_device(acpi_handle handle)
1184 {
1185         long video_caps = 0;
1186
1187         /* Is this device able to support video switching ? */
1188         if (acpi_has_method(handle, "_DOD") || acpi_has_method(handle, "_DOS"))
1189                 video_caps |= ACPI_VIDEO_OUTPUT_SWITCHING;
1190
1191         /* Is this device able to retrieve a video ROM ? */
1192         if (acpi_has_method(handle, "_ROM"))
1193                 video_caps |= ACPI_VIDEO_ROM_AVAILABLE;
1194
1195         /* Is this device able to configure which video head to be POSTed ? */
1196         if (acpi_has_method(handle, "_VPO") &&
1197             acpi_has_method(handle, "_GPD") &&
1198             acpi_has_method(handle, "_SPD"))
1199                 video_caps |= ACPI_VIDEO_DEVICE_POSTING;
1200
1201         /* Only check for backlight functionality if one of the above hit. */
1202         if (video_caps)
1203                 acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
1204                                     ACPI_UINT32_MAX, acpi_backlight_cap_match, NULL,
1205                                     &video_caps, NULL);
1206
1207         return video_caps;
1208 }
1209 EXPORT_SYMBOL(acpi_is_video_device);
1210
1211 const char *acpi_device_hid(struct acpi_device *device)
1212 {
1213         struct acpi_hardware_id *hid;
1214
1215         if (list_empty(&device->pnp.ids))
1216                 return dummy_hid;
1217
1218         hid = list_first_entry(&device->pnp.ids, struct acpi_hardware_id, list);
1219         return hid->id;
1220 }
1221 EXPORT_SYMBOL(acpi_device_hid);
1222
1223 static void acpi_add_id(struct acpi_device_pnp *pnp, const char *dev_id)
1224 {
1225         struct acpi_hardware_id *id;
1226
1227         id = kmalloc(sizeof(*id), GFP_KERNEL);
1228         if (!id)
1229                 return;
1230
1231         id->id = kstrdup_const(dev_id, GFP_KERNEL);
1232         if (!id->id) {
1233                 kfree(id);
1234                 return;
1235         }
1236
1237         list_add_tail(&id->list, &pnp->ids);
1238         pnp->type.hardware_id = 1;
1239 }
1240
1241 /*
1242  * Old IBM workstations have a DSDT bug wherein the SMBus object
1243  * lacks the SMBUS01 HID and the methods do not have the necessary "_"
1244  * prefix.  Work around this.
1245  */
1246 static bool acpi_ibm_smbus_match(acpi_handle handle)
1247 {
1248         char node_name[ACPI_PATH_SEGMENT_LENGTH];
1249         struct acpi_buffer path = { sizeof(node_name), node_name };
1250
1251         if (!dmi_name_in_vendors("IBM"))
1252                 return false;
1253
1254         /* Look for SMBS object */
1255         if (ACPI_FAILURE(acpi_get_name(handle, ACPI_SINGLE_NAME, &path)) ||
1256             strcmp("SMBS", path.pointer))
1257                 return false;
1258
1259         /* Does it have the necessary (but misnamed) methods? */
1260         if (acpi_has_method(handle, "SBI") &&
1261             acpi_has_method(handle, "SBR") &&
1262             acpi_has_method(handle, "SBW"))
1263                 return true;
1264
1265         return false;
1266 }
1267
1268 static bool acpi_object_is_system_bus(acpi_handle handle)
1269 {
1270         acpi_handle tmp;
1271
1272         if (ACPI_SUCCESS(acpi_get_handle(NULL, "\\_SB", &tmp)) &&
1273             tmp == handle)
1274                 return true;
1275         if (ACPI_SUCCESS(acpi_get_handle(NULL, "\\_TZ", &tmp)) &&
1276             tmp == handle)
1277                 return true;
1278
1279         return false;
1280 }
1281
1282 static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,
1283                                 int device_type)
1284 {
1285         acpi_status status;
1286         struct acpi_device_info *info;
1287         struct acpi_pnp_device_id_list *cid_list;
1288         int i;
1289
1290         switch (device_type) {
1291         case ACPI_BUS_TYPE_DEVICE:
1292                 if (handle == ACPI_ROOT_OBJECT) {
1293                         acpi_add_id(pnp, ACPI_SYSTEM_HID);
1294                         break;
1295                 }
1296
1297                 status = acpi_get_object_info(handle, &info);
1298                 if (ACPI_FAILURE(status)) {
1299                         pr_err(PREFIX "%s: Error reading device info\n",
1300                                         __func__);
1301                         return;
1302                 }
1303
1304                 if (info->valid & ACPI_VALID_HID) {
1305                         acpi_add_id(pnp, info->hardware_id.string);
1306                         pnp->type.platform_id = 1;
1307                 }
1308                 if (info->valid & ACPI_VALID_CID) {
1309                         cid_list = &info->compatible_id_list;
1310                         for (i = 0; i < cid_list->count; i++)
1311                                 acpi_add_id(pnp, cid_list->ids[i].string);
1312                 }
1313                 if (info->valid & ACPI_VALID_ADR) {
1314                         pnp->bus_address = info->address;
1315                         pnp->type.bus_address = 1;
1316                 }
1317                 if (info->valid & ACPI_VALID_UID)
1318                         pnp->unique_id = kstrdup(info->unique_id.string,
1319                                                         GFP_KERNEL);
1320                 if (info->valid & ACPI_VALID_CLS)
1321                         acpi_add_id(pnp, info->class_code.string);
1322
1323                 kfree(info);
1324
1325                 /*
1326                  * Some devices don't reliably have _HIDs & _CIDs, so add
1327                  * synthetic HIDs to make sure drivers can find them.
1328                  */
1329                 if (acpi_is_video_device(handle))
1330                         acpi_add_id(pnp, ACPI_VIDEO_HID);
1331                 else if (acpi_bay_match(handle))
1332                         acpi_add_id(pnp, ACPI_BAY_HID);
1333                 else if (acpi_dock_match(handle))
1334                         acpi_add_id(pnp, ACPI_DOCK_HID);
1335                 else if (acpi_ibm_smbus_match(handle))
1336                         acpi_add_id(pnp, ACPI_SMBUS_IBM_HID);
1337                 else if (list_empty(&pnp->ids) &&
1338                          acpi_object_is_system_bus(handle)) {
1339                         /* \_SB, \_TZ, LNXSYBUS */
1340                         acpi_add_id(pnp, ACPI_BUS_HID);
1341                         strcpy(pnp->device_name, ACPI_BUS_DEVICE_NAME);
1342                         strcpy(pnp->device_class, ACPI_BUS_CLASS);
1343                 }
1344
1345                 break;
1346         case ACPI_BUS_TYPE_POWER:
1347                 acpi_add_id(pnp, ACPI_POWER_HID);
1348                 break;
1349         case ACPI_BUS_TYPE_PROCESSOR:
1350                 acpi_add_id(pnp, ACPI_PROCESSOR_OBJECT_HID);
1351                 break;
1352         case ACPI_BUS_TYPE_THERMAL:
1353                 acpi_add_id(pnp, ACPI_THERMAL_HID);
1354                 break;
1355         case ACPI_BUS_TYPE_POWER_BUTTON:
1356                 acpi_add_id(pnp, ACPI_BUTTON_HID_POWERF);
1357                 break;
1358         case ACPI_BUS_TYPE_SLEEP_BUTTON:
1359                 acpi_add_id(pnp, ACPI_BUTTON_HID_SLEEPF);
1360                 break;
1361         }
1362 }
1363
1364 void acpi_free_pnp_ids(struct acpi_device_pnp *pnp)
1365 {
1366         struct acpi_hardware_id *id, *tmp;
1367
1368         list_for_each_entry_safe(id, tmp, &pnp->ids, list) {
1369                 kfree_const(id->id);
1370                 kfree(id);
1371         }
1372         kfree(pnp->unique_id);
1373 }
1374
1375 /**
1376  * acpi_dma_supported - Check DMA support for the specified device.
1377  * @adev: The pointer to acpi device
1378  *
1379  * Return false if DMA is not supported. Otherwise, return true
1380  */
1381 bool acpi_dma_supported(struct acpi_device *adev)
1382 {
1383         if (!adev)
1384                 return false;
1385
1386         if (adev->flags.cca_seen)
1387                 return true;
1388
1389         /*
1390         * Per ACPI 6.0 sec 6.2.17, assume devices can do cache-coherent
1391         * DMA on "Intel platforms".  Presumably that includes all x86 and
1392         * ia64, and other arches will set CONFIG_ACPI_CCA_REQUIRED=y.
1393         */
1394         if (!IS_ENABLED(CONFIG_ACPI_CCA_REQUIRED))
1395                 return true;
1396
1397         return false;
1398 }
1399
1400 /**
1401  * acpi_get_dma_attr - Check the supported DMA attr for the specified device.
1402  * @adev: The pointer to acpi device
1403  *
1404  * Return enum dev_dma_attr.
1405  */
1406 enum dev_dma_attr acpi_get_dma_attr(struct acpi_device *adev)
1407 {
1408         if (!acpi_dma_supported(adev))
1409                 return DEV_DMA_NOT_SUPPORTED;
1410
1411         if (adev->flags.coherent_dma)
1412                 return DEV_DMA_COHERENT;
1413         else
1414                 return DEV_DMA_NON_COHERENT;
1415 }
1416
1417 static void acpi_init_coherency(struct acpi_device *adev)
1418 {
1419         unsigned long long cca = 0;
1420         acpi_status status;
1421         struct acpi_device *parent = adev->parent;
1422
1423         if (parent && parent->flags.cca_seen) {
1424                 /*
1425                  * From ACPI spec, OSPM will ignore _CCA if an ancestor
1426                  * already saw one.
1427                  */
1428                 adev->flags.cca_seen = 1;
1429                 cca = parent->flags.coherent_dma;
1430         } else {
1431                 status = acpi_evaluate_integer(adev->handle, "_CCA",
1432                                                NULL, &cca);
1433                 if (ACPI_SUCCESS(status))
1434                         adev->flags.cca_seen = 1;
1435                 else if (!IS_ENABLED(CONFIG_ACPI_CCA_REQUIRED))
1436                         /*
1437                          * If architecture does not specify that _CCA is
1438                          * required for DMA-able devices (e.g. x86),
1439                          * we default to _CCA=1.
1440                          */
1441                         cca = 1;
1442                 else
1443                         acpi_handle_debug(adev->handle,
1444                                           "ACPI device is missing _CCA.\n");
1445         }
1446
1447         adev->flags.coherent_dma = cca;
1448 }
1449
1450 void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,
1451                              int type, unsigned long long sta)
1452 {
1453         INIT_LIST_HEAD(&device->pnp.ids);
1454         device->device_type = type;
1455         device->handle = handle;
1456         device->parent = acpi_bus_get_parent(handle);
1457         device->fwnode.type = FWNODE_ACPI;
1458         acpi_set_device_status(device, sta);
1459         acpi_device_get_busid(device);
1460         acpi_set_pnp_ids(handle, &device->pnp, type);
1461         acpi_init_properties(device);
1462         acpi_bus_get_flags(device);
1463         device->flags.match_driver = false;
1464         device->flags.initialized = true;
1465         acpi_device_clear_enumerated(device);
1466         device_initialize(&device->dev);
1467         dev_set_uevent_suppress(&device->dev, true);
1468         acpi_init_coherency(device);
1469         /* Assume there are unmet deps until acpi_device_dep_initialize() runs */
1470         device->dep_unmet = 1;
1471 }
1472
1473 void acpi_device_add_finalize(struct acpi_device *device)
1474 {
1475         dev_set_uevent_suppress(&device->dev, false);
1476         kobject_uevent(&device->dev.kobj, KOBJ_ADD);
1477 }
1478
1479 static int acpi_add_single_object(struct acpi_device **child,
1480                                   acpi_handle handle, int type,
1481                                   unsigned long long sta)
1482 {
1483         int result;
1484         struct acpi_device *device;
1485         struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
1486
1487         device = kzalloc(sizeof(struct acpi_device), GFP_KERNEL);
1488         if (!device) {
1489                 printk(KERN_ERR PREFIX "Memory allocation error\n");
1490                 return -ENOMEM;
1491         }
1492
1493         acpi_init_device_object(device, handle, type, sta);
1494         /*
1495          * For ACPI_BUS_TYPE_DEVICE getting the status is delayed till here so
1496          * that we can call acpi_bus_get_status() and use its quirk handling.
1497          * Note this must be done before the get power-/wakeup_dev-flags calls.
1498          */
1499         if (type == ACPI_BUS_TYPE_DEVICE)
1500                 if (acpi_bus_get_status(device) < 0)
1501                         acpi_set_device_status(device, 0);
1502
1503         acpi_bus_get_power_flags(device);
1504         acpi_bus_get_wakeup_device_flags(device);
1505
1506         result = acpi_device_add(device, acpi_device_release);
1507         if (result) {
1508                 acpi_device_release(&device->dev);
1509                 return result;
1510         }
1511
1512         acpi_power_add_remove_device(device, true);
1513         acpi_device_add_finalize(device);
1514         acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
1515         ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Added %s [%s] parent %s\n",
1516                 dev_name(&device->dev), (char *) buffer.pointer,
1517                 device->parent ? dev_name(&device->parent->dev) : "(null)"));
1518         kfree(buffer.pointer);
1519         *child = device;
1520         return 0;
1521 }
1522
1523 static acpi_status acpi_get_resource_memory(struct acpi_resource *ares,
1524                                             void *context)
1525 {
1526         struct resource *res = context;
1527
1528         if (acpi_dev_resource_memory(ares, res))
1529                 return AE_CTRL_TERMINATE;
1530
1531         return AE_OK;
1532 }
1533
1534 static bool acpi_device_should_be_hidden(acpi_handle handle)
1535 {
1536         acpi_status status;
1537         struct resource res;
1538
1539         /* Check if it should ignore the UART device */
1540         if (!(spcr_uart_addr && acpi_has_method(handle, METHOD_NAME__CRS)))
1541                 return false;
1542
1543         /*
1544          * The UART device described in SPCR table is assumed to have only one
1545          * memory resource present. So we only look for the first one here.
1546          */
1547         status = acpi_walk_resources(handle, METHOD_NAME__CRS,
1548                                      acpi_get_resource_memory, &res);
1549         if (ACPI_FAILURE(status) || res.start != spcr_uart_addr)
1550                 return false;
1551
1552         acpi_handle_info(handle, "The UART device @%pa in SPCR table will be hidden\n",
1553                          &res.start);
1554
1555         return true;
1556 }
1557
1558 static int acpi_bus_type_and_status(acpi_handle handle, int *type,
1559                                     unsigned long long *sta)
1560 {
1561         acpi_status status;
1562         acpi_object_type acpi_type;
1563
1564         status = acpi_get_type(handle, &acpi_type);
1565         if (ACPI_FAILURE(status))
1566                 return -ENODEV;
1567
1568         switch (acpi_type) {
1569         case ACPI_TYPE_ANY:             /* for ACPI_ROOT_OBJECT */
1570         case ACPI_TYPE_DEVICE:
1571                 if (acpi_device_should_be_hidden(handle))
1572                         return -ENODEV;
1573
1574                 *type = ACPI_BUS_TYPE_DEVICE;
1575                 /*
1576                  * acpi_add_single_object updates this once we've an acpi_device
1577                  * so that acpi_bus_get_status' quirk handling can be used.
1578                  */
1579                 *sta = ACPI_STA_DEFAULT;
1580                 break;
1581         case ACPI_TYPE_PROCESSOR:
1582                 *type = ACPI_BUS_TYPE_PROCESSOR;
1583                 status = acpi_bus_get_status_handle(handle, sta);
1584                 if (ACPI_FAILURE(status))
1585                         return -ENODEV;
1586                 break;
1587         case ACPI_TYPE_THERMAL:
1588                 *type = ACPI_BUS_TYPE_THERMAL;
1589                 *sta = ACPI_STA_DEFAULT;
1590                 break;
1591         case ACPI_TYPE_POWER:
1592                 *type = ACPI_BUS_TYPE_POWER;
1593                 *sta = ACPI_STA_DEFAULT;
1594                 break;
1595         default:
1596                 return -ENODEV;
1597         }
1598
1599         return 0;
1600 }
1601
1602 bool acpi_device_is_present(struct acpi_device *adev)
1603 {
1604         if (adev->status.present || adev->status.functional)
1605                 return true;
1606
1607         adev->flags.initialized = false;
1608         return false;
1609 }
1610
1611 static bool acpi_scan_handler_matching(struct acpi_scan_handler *handler,
1612                                        const char *idstr,
1613                                        const struct acpi_device_id **matchid)
1614 {
1615         const struct acpi_device_id *devid;
1616
1617         if (handler->match)
1618                 return handler->match(idstr, matchid);
1619
1620         for (devid = handler->ids; devid->id[0]; devid++)
1621                 if (!strcmp((char *)devid->id, idstr)) {
1622                         if (matchid)
1623                                 *matchid = devid;
1624
1625                         return true;
1626                 }
1627
1628         return false;
1629 }
1630
1631 static struct acpi_scan_handler *acpi_scan_match_handler(const char *idstr,
1632                                         const struct acpi_device_id **matchid)
1633 {
1634         struct acpi_scan_handler *handler;
1635
1636         list_for_each_entry(handler, &acpi_scan_handlers_list, list_node)
1637                 if (acpi_scan_handler_matching(handler, idstr, matchid))
1638                         return handler;
1639
1640         return NULL;
1641 }
1642
1643 void acpi_scan_hotplug_enabled(struct acpi_hotplug_profile *hotplug, bool val)
1644 {
1645         if (!!hotplug->enabled == !!val)
1646                 return;
1647
1648         mutex_lock(&acpi_scan_lock);
1649
1650         hotplug->enabled = val;
1651
1652         mutex_unlock(&acpi_scan_lock);
1653 }
1654
1655 static void acpi_scan_init_hotplug(struct acpi_device *adev)
1656 {
1657         struct acpi_hardware_id *hwid;
1658
1659         if (acpi_dock_match(adev->handle) || is_ejectable_bay(adev)) {
1660                 acpi_dock_add(adev);
1661                 return;
1662         }
1663         list_for_each_entry(hwid, &adev->pnp.ids, list) {
1664                 struct acpi_scan_handler *handler;
1665
1666                 handler = acpi_scan_match_handler(hwid->id, NULL);
1667                 if (handler) {
1668                         adev->flags.hotplug_notify = true;
1669                         break;
1670                 }
1671         }
1672 }
1673
1674 static void acpi_device_dep_initialize(struct acpi_device *adev)
1675 {
1676         struct acpi_dep_data *dep;
1677         struct acpi_handle_list dep_devices;
1678         acpi_status status;
1679         int i;
1680
1681         adev->dep_unmet = 0;
1682
1683         if (!acpi_has_method(adev->handle, "_DEP"))
1684                 return;
1685
1686         status = acpi_evaluate_reference(adev->handle, "_DEP", NULL,
1687                                         &dep_devices);
1688         if (ACPI_FAILURE(status)) {
1689                 dev_dbg(&adev->dev, "Failed to evaluate _DEP.\n");
1690                 return;
1691         }
1692
1693         for (i = 0; i < dep_devices.count; i++) {
1694                 struct acpi_device_info *info;
1695                 int skip;
1696
1697                 status = acpi_get_object_info(dep_devices.handles[i], &info);
1698                 if (ACPI_FAILURE(status)) {
1699                         dev_dbg(&adev->dev, "Error reading _DEP device info\n");
1700                         continue;
1701                 }
1702
1703                 /*
1704                  * Skip the dependency of Windows System Power
1705                  * Management Controller
1706                  */
1707                 skip = info->valid & ACPI_VALID_HID &&
1708                         !strcmp(info->hardware_id.string, "INT3396");
1709
1710                 kfree(info);
1711
1712                 if (skip)
1713                         continue;
1714
1715                 dep = kzalloc(sizeof(struct acpi_dep_data), GFP_KERNEL);
1716                 if (!dep)
1717                         return;
1718
1719                 dep->master = dep_devices.handles[i];
1720                 dep->slave  = adev->handle;
1721                 adev->dep_unmet++;
1722
1723                 mutex_lock(&acpi_dep_list_lock);
1724                 list_add_tail(&dep->node , &acpi_dep_list);
1725                 mutex_unlock(&acpi_dep_list_lock);
1726         }
1727 }
1728
1729 static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
1730                                       void *not_used, void **return_value)
1731 {
1732         struct acpi_device *device = NULL;
1733         int type;
1734         unsigned long long sta;
1735         int result;
1736
1737         acpi_bus_get_device(handle, &device);
1738         if (device)
1739                 goto out;
1740
1741         result = acpi_bus_type_and_status(handle, &type, &sta);
1742         if (result)
1743                 return AE_OK;
1744
1745         if (type == ACPI_BUS_TYPE_POWER) {
1746                 acpi_add_power_resource(handle);
1747                 return AE_OK;
1748         }
1749
1750         acpi_add_single_object(&device, handle, type, sta);
1751         if (!device)
1752                 return AE_CTRL_DEPTH;
1753
1754         acpi_scan_init_hotplug(device);
1755         acpi_device_dep_initialize(device);
1756
1757  out:
1758         if (!*return_value)
1759                 *return_value = device;
1760
1761         return AE_OK;
1762 }
1763
1764 static int acpi_check_spi_i2c_slave(struct acpi_resource *ares, void *data)
1765 {
1766         bool *is_spi_i2c_slave_p = data;
1767
1768         if (ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
1769                 return 1;
1770
1771         /*
1772          * devices that are connected to UART still need to be enumerated to
1773          * platform bus
1774          */
1775         if (ares->data.common_serial_bus.type != ACPI_RESOURCE_SERIAL_TYPE_UART)
1776                 *is_spi_i2c_slave_p = true;
1777
1778          /* no need to do more checking */
1779         return -1;
1780 }
1781
1782 static void acpi_default_enumeration(struct acpi_device *device)
1783 {
1784         struct list_head resource_list;
1785         bool is_spi_i2c_slave = false;
1786
1787         /*
1788          * Do not enumerate SPI/I2C slaves as they will be enumerated by their
1789          * respective parents.
1790          */
1791         INIT_LIST_HEAD(&resource_list);
1792         acpi_dev_get_resources(device, &resource_list, acpi_check_spi_i2c_slave,
1793                                &is_spi_i2c_slave);
1794         acpi_dev_free_resource_list(&resource_list);
1795         if (!is_spi_i2c_slave) {
1796                 acpi_create_platform_device(device, NULL);
1797                 acpi_device_set_enumerated(device);
1798         } else {
1799                 blocking_notifier_call_chain(&acpi_reconfig_chain,
1800                                              ACPI_RECONFIG_DEVICE_ADD, device);
1801         }
1802 }
1803
1804 static const struct acpi_device_id generic_device_ids[] = {
1805         {ACPI_DT_NAMESPACE_HID, },
1806         {"", },
1807 };
1808
1809 static int acpi_generic_device_attach(struct acpi_device *adev,
1810                                       const struct acpi_device_id *not_used)
1811 {
1812         /*
1813          * Since ACPI_DT_NAMESPACE_HID is the only ID handled here, the test
1814          * below can be unconditional.
1815          */
1816         if (adev->data.of_compatible)
1817                 acpi_default_enumeration(adev);
1818
1819         return 1;
1820 }
1821
1822 static struct acpi_scan_handler generic_device_handler = {
1823         .ids = generic_device_ids,
1824         .attach = acpi_generic_device_attach,
1825 };
1826
1827 static int acpi_scan_attach_handler(struct acpi_device *device)
1828 {
1829         struct acpi_hardware_id *hwid;
1830         int ret = 0;
1831
1832         list_for_each_entry(hwid, &device->pnp.ids, list) {
1833                 const struct acpi_device_id *devid;
1834                 struct acpi_scan_handler *handler;
1835
1836                 handler = acpi_scan_match_handler(hwid->id, &devid);
1837                 if (handler) {
1838                         if (!handler->attach) {
1839                                 device->pnp.type.platform_id = 0;
1840                                 continue;
1841                         }
1842                         device->handler = handler;
1843                         ret = handler->attach(device, devid);
1844                         if (ret > 0)
1845                                 break;
1846
1847                         device->handler = NULL;
1848                         if (ret < 0)
1849                                 break;
1850                 }
1851         }
1852
1853         return ret;
1854 }
1855
1856 static void acpi_bus_attach(struct acpi_device *device)
1857 {
1858         struct acpi_device *child;
1859         acpi_handle ejd;
1860         int ret;
1861
1862         if (ACPI_SUCCESS(acpi_bus_get_ejd(device->handle, &ejd)))
1863                 register_dock_dependent_device(device, ejd);
1864
1865         acpi_bus_get_status(device);
1866         /* Skip devices that are not present. */
1867         if (!acpi_device_is_present(device)) {
1868                 acpi_device_clear_enumerated(device);
1869                 device->flags.power_manageable = 0;
1870                 return;
1871         }
1872         if (device->handler)
1873                 goto ok;
1874
1875         if (!device->flags.initialized) {
1876                 device->flags.power_manageable =
1877                         device->power.states[ACPI_STATE_D0].flags.valid;
1878                 if (acpi_bus_init_power(device))
1879                         device->flags.power_manageable = 0;
1880
1881                 device->flags.initialized = true;
1882         }
1883
1884         ret = acpi_scan_attach_handler(device);
1885         if (ret < 0)
1886                 return;
1887
1888         device->flags.match_driver = true;
1889         if (ret > 0) {
1890                 acpi_device_set_enumerated(device);
1891                 goto ok;
1892         }
1893
1894         ret = device_attach(&device->dev);
1895         if (ret < 0)
1896                 return;
1897
1898         if (ret > 0 || !device->pnp.type.platform_id)
1899                 acpi_device_set_enumerated(device);
1900         else
1901                 acpi_default_enumeration(device);
1902
1903  ok:
1904         list_for_each_entry(child, &device->children, node)
1905                 acpi_bus_attach(child);
1906
1907         if (device->handler && device->handler->hotplug.notify_online)
1908                 device->handler->hotplug.notify_online(device);
1909 }
1910
1911 void acpi_walk_dep_device_list(acpi_handle handle)
1912 {
1913         struct acpi_dep_data *dep, *tmp;
1914         struct acpi_device *adev;
1915
1916         mutex_lock(&acpi_dep_list_lock);
1917         list_for_each_entry_safe(dep, tmp, &acpi_dep_list, node) {
1918                 if (dep->master == handle) {
1919                         acpi_bus_get_device(dep->slave, &adev);
1920                         if (!adev)
1921                                 continue;
1922
1923                         adev->dep_unmet--;
1924                         if (!adev->dep_unmet)
1925                                 acpi_bus_attach(adev);
1926                         list_del(&dep->node);
1927                         kfree(dep);
1928                 }
1929         }
1930         mutex_unlock(&acpi_dep_list_lock);
1931 }
1932 EXPORT_SYMBOL_GPL(acpi_walk_dep_device_list);
1933
1934 /**
1935  * acpi_bus_scan - Add ACPI device node objects in a given namespace scope.
1936  * @handle: Root of the namespace scope to scan.
1937  *
1938  * Scan a given ACPI tree (probably recently hot-plugged) and create and add
1939  * found devices.
1940  *
1941  * If no devices were found, -ENODEV is returned, but it does not mean that
1942  * there has been a real error.  There just have been no suitable ACPI objects
1943  * in the table trunk from which the kernel could create a device and add an
1944  * appropriate driver.
1945  *
1946  * Must be called under acpi_scan_lock.
1947  */
1948 int acpi_bus_scan(acpi_handle handle)
1949 {
1950         void *device = NULL;
1951
1952         if (ACPI_SUCCESS(acpi_bus_check_add(handle, 0, NULL, &device)))
1953                 acpi_walk_namespace(ACPI_TYPE_ANY, handle, ACPI_UINT32_MAX,
1954                                     acpi_bus_check_add, NULL, NULL, &device);
1955
1956         if (device) {
1957                 acpi_bus_attach(device);
1958                 return 0;
1959         }
1960         return -ENODEV;
1961 }
1962 EXPORT_SYMBOL(acpi_bus_scan);
1963
1964 /**
1965  * acpi_bus_trim - Detach scan handlers and drivers from ACPI device objects.
1966  * @adev: Root of the ACPI namespace scope to walk.
1967  *
1968  * Must be called under acpi_scan_lock.
1969  */
1970 void acpi_bus_trim(struct acpi_device *adev)
1971 {
1972         struct acpi_scan_handler *handler = adev->handler;
1973         struct acpi_device *child;
1974
1975         list_for_each_entry_reverse(child, &adev->children, node)
1976                 acpi_bus_trim(child);
1977
1978         adev->flags.match_driver = false;
1979         if (handler) {
1980                 if (handler->detach)
1981                         handler->detach(adev);
1982
1983                 adev->handler = NULL;
1984         } else {
1985                 device_release_driver(&adev->dev);
1986         }
1987         /*
1988          * Most likely, the device is going away, so put it into D3cold before
1989          * that.
1990          */
1991         acpi_device_set_power(adev, ACPI_STATE_D3_COLD);
1992         adev->flags.initialized = false;
1993         acpi_device_clear_enumerated(adev);
1994 }
1995 EXPORT_SYMBOL_GPL(acpi_bus_trim);
1996
1997 static int acpi_bus_scan_fixed(void)
1998 {
1999         int result = 0;
2000
2001         /*
2002          * Enumerate all fixed-feature devices.
2003          */
2004         if (!(acpi_gbl_FADT.flags & ACPI_FADT_POWER_BUTTON)) {
2005                 struct acpi_device *device = NULL;
2006
2007                 result = acpi_add_single_object(&device, NULL,
2008                                                 ACPI_BUS_TYPE_POWER_BUTTON,
2009                                                 ACPI_STA_DEFAULT);
2010                 if (result)
2011                         return result;
2012
2013                 device->flags.match_driver = true;
2014                 result = device_attach(&device->dev);
2015                 if (result < 0)
2016                         return result;
2017
2018                 device_init_wakeup(&device->dev, true);
2019         }
2020
2021         if (!(acpi_gbl_FADT.flags & ACPI_FADT_SLEEP_BUTTON)) {
2022                 struct acpi_device *device = NULL;
2023
2024                 result = acpi_add_single_object(&device, NULL,
2025                                                 ACPI_BUS_TYPE_SLEEP_BUTTON,
2026                                                 ACPI_STA_DEFAULT);
2027                 if (result)
2028                         return result;
2029
2030                 device->flags.match_driver = true;
2031                 result = device_attach(&device->dev);
2032         }
2033
2034         return result < 0 ? result : 0;
2035 }
2036
2037 static void __init acpi_get_spcr_uart_addr(void)
2038 {
2039         acpi_status status;
2040         struct acpi_table_spcr *spcr_ptr;
2041
2042         status = acpi_get_table(ACPI_SIG_SPCR, 0,
2043                                 (struct acpi_table_header **)&spcr_ptr);
2044         if (ACPI_SUCCESS(status))
2045                 spcr_uart_addr = spcr_ptr->serial_port.address;
2046         else
2047                 printk(KERN_WARNING PREFIX "STAO table present, but SPCR is missing\n");
2048 }
2049
2050 static bool acpi_scan_initialized;
2051
2052 int __init acpi_scan_init(void)
2053 {
2054         int result;
2055         acpi_status status;
2056         struct acpi_table_stao *stao_ptr;
2057
2058         acpi_pci_root_init();
2059         acpi_pci_link_init();
2060         acpi_processor_init();
2061         acpi_lpss_init();
2062         acpi_apd_init();
2063         acpi_cmos_rtc_init();
2064         acpi_container_init();
2065         acpi_memory_hotplug_init();
2066         acpi_pnp_init();
2067         acpi_int340x_thermal_init();
2068         acpi_amba_init();
2069         acpi_watchdog_init();
2070
2071         acpi_scan_add_handler(&generic_device_handler);
2072
2073         /*
2074          * If there is STAO table, check whether it needs to ignore the UART
2075          * device in SPCR table.
2076          */
2077         status = acpi_get_table(ACPI_SIG_STAO, 0,
2078                                 (struct acpi_table_header **)&stao_ptr);
2079         if (ACPI_SUCCESS(status)) {
2080                 if (stao_ptr->header.length > sizeof(struct acpi_table_stao))
2081                         printk(KERN_INFO PREFIX "STAO Name List not yet supported.");
2082
2083                 if (stao_ptr->ignore_uart)
2084                         acpi_get_spcr_uart_addr();
2085         }
2086
2087         mutex_lock(&acpi_scan_lock);
2088         /*
2089          * Enumerate devices in the ACPI namespace.
2090          */
2091         result = acpi_bus_scan(ACPI_ROOT_OBJECT);
2092         if (result)
2093                 goto out;
2094
2095         result = acpi_bus_get_device(ACPI_ROOT_OBJECT, &acpi_root);
2096         if (result)
2097                 goto out;
2098
2099         /* Fixed feature devices do not exist on HW-reduced platform */
2100         if (!acpi_gbl_reduced_hardware) {
2101                 result = acpi_bus_scan_fixed();
2102                 if (result) {
2103                         acpi_detach_data(acpi_root->handle,
2104                                          acpi_scan_drop_device);
2105                         acpi_device_del(acpi_root);
2106                         put_device(&acpi_root->dev);
2107                         goto out;
2108                 }
2109         }
2110
2111         acpi_gpe_apply_masked_gpes();
2112         acpi_update_all_gpes();
2113
2114         acpi_scan_initialized = true;
2115
2116  out:
2117         mutex_unlock(&acpi_scan_lock);
2118         return result;
2119 }
2120
2121 static struct acpi_probe_entry *ape;
2122 static int acpi_probe_count;
2123 static DEFINE_MUTEX(acpi_probe_mutex);
2124
2125 static int __init acpi_match_madt(struct acpi_subtable_header *header,
2126                                   const unsigned long end)
2127 {
2128         if (!ape->subtable_valid || ape->subtable_valid(header, ape))
2129                 if (!ape->probe_subtbl(header, end))
2130                         acpi_probe_count++;
2131
2132         return 0;
2133 }
2134
2135 int __init __acpi_probe_device_table(struct acpi_probe_entry *ap_head, int nr)
2136 {
2137         int count = 0;
2138
2139         if (acpi_disabled)
2140                 return 0;
2141
2142         mutex_lock(&acpi_probe_mutex);
2143         for (ape = ap_head; nr; ape++, nr--) {
2144                 if (ACPI_COMPARE_NAME(ACPI_SIG_MADT, ape->id)) {
2145                         acpi_probe_count = 0;
2146                         acpi_table_parse_madt(ape->type, acpi_match_madt, 0);
2147                         count += acpi_probe_count;
2148                 } else {
2149                         int res;
2150                         res = acpi_table_parse(ape->id, ape->probe_table);
2151                         if (!res)
2152                                 count++;
2153                 }
2154         }
2155         mutex_unlock(&acpi_probe_mutex);
2156
2157         return count;
2158 }
2159
2160 struct acpi_table_events_work {
2161         struct work_struct work;
2162         void *table;
2163         u32 event;
2164 };
2165
2166 static void acpi_table_events_fn(struct work_struct *work)
2167 {
2168         struct acpi_table_events_work *tew;
2169
2170         tew = container_of(work, struct acpi_table_events_work, work);
2171
2172         if (tew->event == ACPI_TABLE_EVENT_LOAD) {
2173                 acpi_scan_lock_acquire();
2174                 acpi_bus_scan(ACPI_ROOT_OBJECT);
2175                 acpi_scan_lock_release();
2176         }
2177
2178         kfree(tew);
2179 }
2180
2181 void acpi_scan_table_handler(u32 event, void *table, void *context)
2182 {
2183         struct acpi_table_events_work *tew;
2184
2185         if (!acpi_scan_initialized)
2186                 return;
2187
2188         if (event != ACPI_TABLE_EVENT_LOAD)
2189                 return;
2190
2191         tew = kmalloc(sizeof(*tew), GFP_KERNEL);
2192         if (!tew)
2193                 return;
2194
2195         INIT_WORK(&tew->work, acpi_table_events_fn);
2196         tew->table = table;
2197         tew->event = event;
2198
2199         schedule_work(&tew->work);
2200 }
2201
2202 int acpi_reconfig_notifier_register(struct notifier_block *nb)
2203 {
2204         return blocking_notifier_chain_register(&acpi_reconfig_chain, nb);
2205 }
2206 EXPORT_SYMBOL(acpi_reconfig_notifier_register);
2207
2208 int acpi_reconfig_notifier_unregister(struct notifier_block *nb)
2209 {
2210         return blocking_notifier_chain_unregister(&acpi_reconfig_chain, nb);
2211 }
2212 EXPORT_SYMBOL(acpi_reconfig_notifier_unregister);