Re: [PATCH v9 06/11] PCI, ACPI, acpiphp: Rename alloc_acpiphp_hp_work() to alloc_acpi_hp_work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday, January 17, 2013 11:53:17 PM Yinghai Lu wrote:
> Will need to use it for pci root bridge hotplug support, rename
> *acpiphp* to *acpi* and move to osc.c.
> Also make kacpi_hotplug_wq static after that.
> 
> Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx>
> Cc: Len Brown <lenb@xxxxxxxxxx>
> Cc: linux-acpi@xxxxxxxxxxxxxxx
> ---
>  drivers/acpi/osl.c                 |   24 +++++++++++++++++++--
>  drivers/pci/hotplug/acpiphp_glue.c |   42 ++++++------------------------------
>  include/acpi/acpiosxf.h            |    9 +++++++-
>  3 files changed, 36 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 3ff2678..afcce46 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -84,8 +84,7 @@ static acpi_osd_handler acpi_irq_handler;
>  static void *acpi_irq_context;
>  static struct workqueue_struct *kacpid_wq;
>  static struct workqueue_struct *kacpi_notify_wq;
> -struct workqueue_struct *kacpi_hotplug_wq;
> -EXPORT_SYMBOL(kacpi_hotplug_wq);
> +static struct workqueue_struct *kacpi_hotplug_wq;
>  
>  /*
>   * 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;
>  }
> +
> +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(alloc_acpi_hp_work);

That should be EXPORT_SYMBOL_GPL().

> diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
> index 79db296..55e03b6 100644
> --- a/drivers/pci/hotplug/acpiphp_glue.c
> +++ b/drivers/pci/hotplug/acpiphp_glue.c
> @@ -1203,34 +1203,6 @@ check_sub_bridges(acpi_handle handle, u32 lvl, void *context, void **rv)
>  	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)
>  {
>  	struct acpiphp_bridge *bridge;
> @@ -1239,11 +1211,11 @@ static void _handle_hotplug_event_bridge(struct work_struct *work)
>  				      .pointer = objname };
>  	struct acpi_device *device;
>  	int num_sub_bridges = 0;
> -	struct acpiphp_hp_work *hp_work;
> +	struct acpi_hp_work *hp_work;
>  	acpi_handle handle;
>  	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;
>  	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
>  	 * don't deadlock on hotplug actions.
>  	 */
> -	alloc_acpiphp_hp_work(handle, type, context,
> -			      _handle_hotplug_event_bridge);
> +	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_bridge);
>  }
>  
>  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];
>  	struct acpi_buffer buffer = { .length = sizeof(objname),
>  				      .pointer = objname };
> -	struct acpiphp_hp_work *hp_work;
> +	struct acpi_hp_work *hp_work;
>  	acpi_handle handle;
>  	u32 type;
>  	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;
>  	type = hp_work->type;
>  	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
>  	 * don't deadlock on hotplug actions.
>  	 */
> -	alloc_acpiphp_hp_work(handle, type, context,
> -			      _handle_hotplug_event_func);
> +	alloc_acpi_hp_work(handle, type, context, _handle_hotplug_event_func);
>  }
>  
>  static acpi_status
> diff --git a/include/acpi/acpiosxf.h b/include/acpi/acpiosxf.h
> index 4315274..adab63c 100644
> --- a/include/acpi/acpiosxf.h
> +++ b/include/acpi/acpiosxf.h
> @@ -193,7 +193,14 @@ void acpi_os_fixed_event_count(u32 fixed_event_number);
>  /*
>   * Threads and Scheduling
>   */
> -extern struct workqueue_struct *kacpi_hotplug_wq;

include/acpi/acpiosxf.h is related to ACPICA, so while removing kacpi_hotplug_wq
from it should be OK, please put the rest into acpi_bus.h, preferably next to the
definition of acpi_eject_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));
>  
>  acpi_thread_id acpi_os_get_thread_id(void);

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux