Re: [PATCH] ACPI: fix a regression of ACPI device driver autoloading

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

 



On Thu, 2008-03-20 at 16:40 +0800, Zhang, Rui wrote:
> From: Zhang Rui <rui.zhang@xxxxxxxxx>
> 
> Fix a regression of ACPI driver autoloading.
Good catch.
Patch looks correct.
This should still be 2.6.25 material?

> commit 3620f2f2f39e7870cf1a4fb2e34063a142f28716 sets the cid of
> ACPI video/dock/bay device and leaves the hid empty.
> As a result, "modalias" should export the cid for
> devices which don't have a hid.
> 
> ACPI Video driver is not autoloaded with
> commit 3620f2f2f39e7870cf1a4fb2e34063a142f28716 applied.
> "cat /sys/.../device:03(acpi video bus)/modalias" shows nothing.
> 
> ACPI Video driver is autoloaded after revert that commit.
> "cat /sys/.../LNXVIDEO:0x/modalias" shows "acpi:LNXVIDEO:"
> 
> ACPI Video driver is autoloaded with commit
> 3620f2f2f39e7870cf1a4fb2e34063a142f28716 and this patch applied.
> "cat /sys/.../device:03(acpi video bus)/modalias"
> shows "acpi:LNXVIDEO:"
> 
> CC: Thomas Renninger <trenn@xxxxxxxxxx>
> CC: Kay Sievers <kasievers@xxxxxxxxxx>
> CC: Frank Seidel <fseidel@xxxxxxx>
> CC: Len Brown: <len.brown@xxxxxxxxx>
> Signed-off-by: Zhang Rui <rui.zhang@xxxxxxxxx>

Signed-off-by: Thomas Renninger <trenn@xxxxxxx>

Thanks,

    Thomas
> 
> ---
>  drivers/acpi/scan.c |   18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> Index: linux-2.6/drivers/acpi/scan.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/scan.c
> +++ linux-2.6/drivers/acpi/scan.c
> @@ -39,20 +39,26 @@ static int create_modalias(struct acpi_d
>  			   int size)
>  {
>  	int len;
> +	int count;
>  
> -	if (!acpi_dev->flags.hardware_id)
> +	if (!acpi_dev->flags.hardware_id && !acpi_dev->flags.compatible_ids)
>  		return -ENODEV;
>  
> -	len = snprintf(modalias, size, "acpi:%s:",
> -		       acpi_dev->pnp.hardware_id);
> -	if (len < 0 || len >= size)
> -		return -EINVAL;
> +	len = snprintf(modalias, size, "acpi:");
>  	size -= len;
>  
> +	if (acpi_dev->flags.hardware_id) {
> +		count = snprintf(&modalias[len], size, "%s:",
> +				 acpi_dev->pnp.hardware_id);
> +		if (count < 0 || count >= size)
> +			return -EINVAL;
> +		len += count;
> +		size -= count;
> +	}
> +
>  	if (acpi_dev->flags.compatible_ids) {
>  		struct acpi_compatible_id_list *cid_list;
>  		int i;
> -		int count;
>  
>  		cid_list = acpi_dev->pnp.cid_list;
>  		for (i = 0; i < cid_list->count; i++) {
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux