dpc->function = function;
        dpc->context = context;
  
-       INIT_WORK(&dpc->work, acpi_os_execute_deferred);
-       queue = (type == OSL_NOTIFY_HANDLER) ? kacpi_notify_wq : kacpid_wq;
-       if (!queue_work(queue, &dpc->work)) {
+       if (!hp) {
+               INIT_WORK(&dpc->work, acpi_os_execute_deferred);
+               queue = (type == OSL_NOTIFY_HANDLER) ?
+                       kacpi_notify_wq : kacpid_wq;
+               ret = queue_work(queue, &dpc->work);
+       } else {
+               INIT_WORK(&dpc->work, acpi_os_execute_hp_deferred);
+               ret = schedule_work(&dpc->work);
+       }
+ 
+       if (!ret) {
 -              ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
 -                        "Call to queue_work() failed.\n"));
 +              printk(KERN_ERR PREFIX
 +                        "Call to queue_work() failed.\n");
                status = AE_ERROR;
                kfree(dpc);
        }