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: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> CC: Len Brown <lenb@kernel.org> CC: linux-acpi@vger.kernel.org
This commit is contained in:
committed by
Bjorn Helgaas
parent
e723f0b4f4
commit
92d8aff3a3
@@ -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,
|
|||||||
{
|
{
|
||||||
__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)
|
|||||||
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)
|
|||||||
.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,
|
|||||||
* 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)
|
|||||||
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,
|
|||||||
* 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 {
|
|||||||
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);
|
|||||||
/*
|
/*
|
||||||
* 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
|
||||||
|
Reference in New Issue
Block a user