Re: [PATCH] hwmon: (asus_atk0110) Don't load if ACPI resources aren't enforced

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

 



ACPI people,

Do you have any objection to the patch below, or can I push it upstream?

On Tue, 9 Mar 2010 13:56:36 +0100, Jean Delvare wrote:
> When the user passes the kernel parameter acpi_enforce_resources=lax,
> the ACPI resources are no longer protected, so a native driver can
> make use of them. In that case, we do not want the asus_atk0110 to be
> loaded. Unfortunately, this driver loads automatically due to its
> MODULE_DEVICE_TABLE, so the user ends up with two drivers loaded for
> the same device - this is bad.
> 
> So I suggest that we prevent the asus_atk0110 driver from loading if
> acpi_enforce_resources=lax.
> 
> Signed-off-by: Jean Delvare <khali@xxxxxxxxxxxx>
> Cc: Luca Tettamanti <kronos.it@xxxxxxxxx>
> Cc: Len Brown <lenb@xxxxxxxxxx>
> ---
> Luca, what do you think? I had the idea to write this patch after
> seeing this bug report:
> https://bugzilla.novell.com/show_bug.cgi?id=580988
> I'm not sure if the driver conflict is the root cause of the problem,
> but it certainly did not help.
> 
> Another approach would be to hide the ATK0110 ACPI device itself, but I
> don't know if it is possible?
> 
>  drivers/acpi/osl.c           |    9 +++++++++
>  drivers/hwmon/asus_atk0110.c |    7 +++++++
>  include/linux/acpi.h         |    2 ++
>  3 files changed, 18 insertions(+)
> 
> --- linux-2.6.34-rc1.orig/drivers/acpi/osl.c	2010-03-09 08:24:52.000000000 +0100
> +++ linux-2.6.34-rc1/drivers/acpi/osl.c	2010-03-09 13:38:49.000000000 +0100
> @@ -1206,6 +1206,15 @@ int acpi_check_mem_region(resource_size_
>  EXPORT_SYMBOL(acpi_check_mem_region);
>  
>  /*
> + * Let drivers know whether the resource checks are effective
> + */
> +int acpi_resources_are_enforced(void)
> +{
> +	return acpi_enforce_resources == ENFORCE_RESOURCES_STRICT;
> +}
> +EXPORT_SYMBOL(acpi_resources_are_enforced);
> +
> +/*
>   * Acquire a spinlock.
>   *
>   * handle is a pointer to the spinlock_t.
> --- linux-2.6.34-rc1.orig/drivers/hwmon/asus_atk0110.c	2010-02-25 09:12:22.000000000 +0100
> +++ linux-2.6.34-rc1/drivers/hwmon/asus_atk0110.c	2010-03-09 13:23:50.000000000 +0100
> @@ -1406,6 +1406,13 @@ static int __init atk0110_init(void)
>  {
>  	int ret;
>  
> +	/* Make sure it's safe to access the device through ACPI */
> +	if (!acpi_resources_are_enforced()) {
> +		pr_err("atk: Resources not safely usable due to "
> +		       "acpi_enforce_resources kernel parameter\n");
> +		return -EBUSY;
> +	}
> +
>  	ret = acpi_bus_register_driver(&atk_driver);
>  	if (ret)
>  		pr_info("atk: acpi_bus_register_driver failed: %d\n", ret);
> --- linux-2.6.34-rc1.orig/include/linux/acpi.h	2010-02-25 09:13:22.000000000 +0100
> +++ linux-2.6.34-rc1/include/linux/acpi.h	2010-03-09 13:46:33.000000000 +0100
> @@ -247,6 +247,8 @@ int acpi_check_region(resource_size_t st
>  int acpi_check_mem_region(resource_size_t start, resource_size_t n,
>  		      const char *name);
>  
> +int acpi_resources_are_enforced(void);
> +
>  #ifdef CONFIG_PM_SLEEP
>  void __init acpi_no_s4_hw_signature(void);
>  void __init acpi_old_suspend_ordering(void);
> 
> 


-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux