Commit 92d8aff3 authored by Yinghai Lu's avatar Yinghai Lu Committed by Bjorn Helgaas

PCI/ACPI: acpiphp: Rename alloc_acpiphp_hp_work() to alloc_acpi_hp_work()

Will need to use it for PCI root bridge hotplug support, so rename
*acpiphp* to *acpi* and move to osc.c.  Also make kacpi_hotplug_wq static
after that.
Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
CC: Len Brown <lenb@kernel.org>
CC: linux-acpi@vger.kernel.org
parent e723f0b4
...@@ -84,8 +84,7 @@ static acpi_osd_handler acpi_irq_handler; ...@@ -84,8 +84,7 @@ static acpi_osd_handler acpi_irq_handler;
static void *acpi_irq_context; static void *acpi_irq_context;
static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpid_wq;
static struct workqueue_struct *kacpi_notify_wq; static struct workqueue_struct *kacpi_notify_wq;
struct workqueue_struct *kacpi_hotplug_wq; static struct workqueue_struct *kacpi_hotplug_wq;
EXPORT_SYMBOL(kacpi_hotplug_wq);
/* /*
* This list of permanent mappings is for memory that may be accessed from * This list of permanent mappings is for memory that may be accessed from
...@@ -1778,3 +1777,24 @@ void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state, ...@@ -1778,3 +1777,24 @@ void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state,
{ {
__acpi_os_prepare_sleep = func; __acpi_os_prepare_sleep = func;
} }
void alloc_acpi_hp_work(acpi_handle handle, u32 type, void *context,
void (*func)(struct work_struct *work))
{
struct acpi_hp_work *hp_work;
int ret;
hp_work = kmalloc(sizeof(*hp_work), GFP_KERNEL);
if (!hp_work)
return;
hp_work->handle = handle;
hp_work->type = type;
hp_work->context = context;
INIT_WORK(&hp_work->work, func);
ret = queue_work(kacpi_hotplug_wq, &hp_work->work);
if (!ret)
kfree(hp_work);
}
EXPORT_SYMBOL_GPL(alloc_acpi_hp_work);
...@@ -1203,34 +1203,6 @@ check_sub_bridges(acpi_handle handle, u32 lvl, void *context, void **rv) ...@@ -1203,34 +1203,6 @@ check_sub_bridges(acpi_handle handle, u32 lvl, void *context, void **rv)
return AE_OK ; return AE_OK ;
} }
struct acpiphp_hp_work {
struct work_struct work;
acpi_handle handle;
u32 type;
void *context;
};
static void alloc_acpiphp_hp_work(acpi_handle handle, u32 type,
void *context,
void (*func)(struct work_struct *work))
{
struct acpiphp_hp_work *hp_work;
int ret;
hp_work = kmalloc(sizeof(*hp_work), GFP_KERNEL);
if (!hp_work)
return;
hp_work->handle = handle;
hp_work->type = type;
hp_work->context = context;
INIT_WORK(&hp_work->work, func);
ret = queue_work(kacpi_hotplug_wq, &hp_work->work);
if (!ret)
kfree(hp_work);
}
static void _handle_hotplug_event_bridge(struct work_struct *work) static void _handle_hotplug_event_bridge(struct work_struct *work)
{ {
struct acpiphp_bridge *bridge; struct acpiphp_bridge *bridge;
...@@ -1239,11 +1211,11 @@ static void _handle_hotplug_event_bridge(struct work_struct *work) ...@@ -1239,11 +1211,11 @@ static void _handle_hotplug_event_bridge(struct work_struct *work)
.pointer = objname }; .pointer = objname };
struct acpi_device *device; struct acpi_device *device;
int num_sub_bridges = 0; int num_sub_bridges = 0;
struct acpiphp_hp_work *hp_work; struct acpi_hp_work *hp_work;
acpi_handle handle; acpi_handle handle;
u32 type; u32 type;
hp_work = container_of(work, struct acpiphp_hp_work, work); hp_work = container_of(work, struct acpi_hp_work, work);
handle = hp_work->handle; handle = hp_work->handle;
type = hp_work->type; type = hp_work->type;
...@@ -1346,8 +1318,7 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type, ...@@ -1346,8 +1318,7 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type,
* For now just re-add this work to the kacpi_hotplug_wq so we * For now just re-add this work to the kacpi_hotplug_wq so we
* don't deadlock on hotplug actions. * don't deadlock on hotplug actions.
*/ */
alloc_acpiphp_hp_work(handle, type, context, alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_bridge);
_handle_hotplug_event_bridge);
} }
static void _handle_hotplug_event_func(struct work_struct *work) static void _handle_hotplug_event_func(struct work_struct *work)
...@@ -1356,12 +1327,12 @@ static void _handle_hotplug_event_func(struct work_struct *work) ...@@ -1356,12 +1327,12 @@ static void _handle_hotplug_event_func(struct work_struct *work)
char objname[64]; char objname[64];
struct acpi_buffer buffer = { .length = sizeof(objname), struct acpi_buffer buffer = { .length = sizeof(objname),
.pointer = objname }; .pointer = objname };
struct acpiphp_hp_work *hp_work; struct acpi_hp_work *hp_work;
acpi_handle handle; acpi_handle handle;
u32 type; u32 type;
void *context; void *context;
hp_work = container_of(work, struct acpiphp_hp_work, work); hp_work = container_of(work, struct acpi_hp_work, work);
handle = hp_work->handle; handle = hp_work->handle;
type = hp_work->type; type = hp_work->type;
context = hp_work->context; context = hp_work->context;
...@@ -1422,8 +1393,7 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type, ...@@ -1422,8 +1393,7 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
* For now just re-add this work to the kacpi_hotplug_wq so we * For now just re-add this work to the kacpi_hotplug_wq so we
* don't deadlock on hotplug actions. * don't deadlock on hotplug actions.
*/ */
alloc_acpiphp_hp_work(handle, type, context, alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_func);
_handle_hotplug_event_func);
} }
static acpi_status static acpi_status
......
...@@ -310,6 +310,15 @@ struct acpi_eject_event { ...@@ -310,6 +310,15 @@ struct acpi_eject_event {
u32 event; u32 event;
}; };
struct acpi_hp_work {
struct work_struct work;
acpi_handle handle;
u32 type;
void *context;
};
void alloc_acpi_hp_work(acpi_handle handle, u32 type, void *context,
void (*func)(struct work_struct *work));
extern struct kobject *acpi_kobj; extern struct kobject *acpi_kobj;
extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int); extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
void acpi_bus_private_data_handler(acpi_handle, void *); void acpi_bus_private_data_handler(acpi_handle, void *);
......
...@@ -193,8 +193,6 @@ void acpi_os_fixed_event_count(u32 fixed_event_number); ...@@ -193,8 +193,6 @@ void acpi_os_fixed_event_count(u32 fixed_event_number);
/* /*
* Threads and Scheduling * Threads and Scheduling
*/ */
extern struct workqueue_struct *kacpi_hotplug_wq;
acpi_thread_id acpi_os_get_thread_id(void); acpi_thread_id acpi_os_get_thread_id(void);
acpi_status acpi_status
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment