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

Bug#692436: [PATCH] asus-laptop: Do not call HWRS on init



On Fri, 2012-11-09 at 09:20 +0000, Corentin Chary wrote:
> On Fri, Nov 9, 2012 at 9:12 AM, Corentin Chary <corentin.chary@gmail.com> wrote:
> > On Fri, Nov 9, 2012 at 3:07 AM, Ben Hutchings <ben@decadent.org.uk> wrote:
> >> Since commit 8871e99f89b7 ('asus-laptop: HRWS/HWRS typo'), module
> >> initialisation is very slow on the Asus UL30A.  The HWRS method takes
> >> about 12 seconds to run, and subsequent initialisation also seems to
> >> be delayed.  Since we don't really need the result, don't bother
> >> calling it on init.  Those who are curious can still get the result
> >> through the 'infos' device attribute.
> >>
> >> Update the comment about HWRS in show_infos().
> >>
> >> Reported-by: ryan <draziw+deb@gmail.com>
> >> References: http://bugs.debian.org/692436
> >> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> >> Cc: <stable@vger.kernel.org> # v3.0+
> >> ---
> >>  drivers/platform/x86/asus-laptop.c |   17 ++++-------------
> >>  1 file changed, 4 insertions(+), 13 deletions(-)
> >>
> >> diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
> >> index 4b568df..a961156 100644
> >> --- a/drivers/platform/x86/asus-laptop.c
> >> +++ b/drivers/platform/x86/asus-laptop.c
> >> @@ -860,8 +860,10 @@ static ssize_t show_infos(struct device *dev,
> >>         /*
> >>          * The HWRS method return informations about the hardware.
> >>          * 0x80 bit is for WLAN, 0x100 for Bluetooth.
> >> +        * 0x40 for WWAN, 0x10 for WIMAX.
> >>          * The significance of others is yet to be found.
> >> -        * If we don't find the method, we assume the device are present.
> >> +        * We don't currently use this for device detection, and it
> >> +        * takes several seconds to run on some systems.
> >>          */
> >>         rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp);
> >>         if (!ACPI_FAILURE(rv))
> >> @@ -1682,7 +1684,7 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
> >>  {
> >>         struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
> >>         union acpi_object *model = NULL;
> >> -       unsigned long long bsts_result, hwrs_result;
> >> +       unsigned long long bsts_result;
> >>         char *string = NULL;
> >>         acpi_status status;
> >>
> >> @@ -1744,17 +1746,6 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
> >>         if (*string)
> >>                 pr_notice("  %s model detected\n", string);
> >>
> >> -       /*
> >> -        * The HWRS method return informations about the hardware.
> >> -        * 0x80 bit is for WLAN, 0x100 for Bluetooth,
> >> -        * 0x40 for WWAN, 0x10 for WIMAX.
> >> -        * The significance of others is yet to be found.
> >> -        */
> >> -       status =
> >> -           acpi_evaluate_integer(asus->handle, "HWRS", NULL, &hwrs_result);
> >> -       if (!ACPI_FAILURE(status))
> >> -               pr_notice("  HWRS returned %x", (int)hwrs_result);
> >> -
> >>         if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL))
> >>                 asus->have_rsts = true;
> >>
> >>
> >>
> >
> > Acked-by: Corentin Chary <corentin.chary@gmail.com>
> 
> Arg, at first I though it was another gmail quirk, but it seems that
> evolution broke your patch. Can you re-send it using git instead ?

It's not broken, it's just signed - 'git am' has no problem with this.
Well here it is again as an attachment.

Ben.

-- 
Ben Hutchings
The program is absolutely right; therefore, the computer must be wrong.
From 69c7946c5053359d36e05d47e07336fdbbc65a0d Mon Sep 17 00:00:00 2001
From: Ben Hutchings <ben@decadent.org.uk>
Date: Fri, 9 Nov 2012 02:43:00 +0000
Subject: [PATCH] asus-laptop: Do not call HWRS on init

Since commit 8871e99f89b7 ('asus-laptop: HRWS/HWRS typo'), module
initialisation is very slow on the Asus UL30A.  The HWRS method takes
about 12 seconds to run, and subsequent initialisation also seems to
be delayed.  Since we don't really need the result, don't bother
calling it on init.  Those who are curious can still get the result
through the 'infos' device attribute.

Update the comment about HWRS in show_infos().

Reported-by: ryan <draziw+deb@gmail.com>
References: http://bugs.debian.org/692436
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 drivers/platform/x86/asus-laptop.c |   17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index 4b568df..a961156 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -860,8 +860,10 @@ static ssize_t show_infos(struct device *dev,
 	/*
 	 * The HWRS method return informations about the hardware.
 	 * 0x80 bit is for WLAN, 0x100 for Bluetooth.
+	 * 0x40 for WWAN, 0x10 for WIMAX.
 	 * The significance of others is yet to be found.
-	 * If we don't find the method, we assume the device are present.
+	 * We don't currently use this for device detection, and it
+	 * takes several seconds to run on some systems.
 	 */
 	rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp);
 	if (!ACPI_FAILURE(rv))
@@ -1682,7 +1684,7 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
 {
 	struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
 	union acpi_object *model = NULL;
-	unsigned long long bsts_result, hwrs_result;
+	unsigned long long bsts_result;
 	char *string = NULL;
 	acpi_status status;
 
@@ -1744,17 +1746,6 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
 	if (*string)
 		pr_notice("  %s model detected\n", string);
 
-	/*
-	 * The HWRS method return informations about the hardware.
-	 * 0x80 bit is for WLAN, 0x100 for Bluetooth,
-	 * 0x40 for WWAN, 0x10 for WIMAX.
-	 * The significance of others is yet to be found.
-	 */
-	status =
-	    acpi_evaluate_integer(asus->handle, "HWRS", NULL, &hwrs_result);
-	if (!ACPI_FAILURE(status))
-		pr_notice("  HWRS returned %x", (int)hwrs_result);
-
 	if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL))
 		asus->have_rsts = true;
 

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: