]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.25/patches.arch/acpi_ec_provide_non_interrupt_mode_boot_param.patch
Updated xen patches taken from suse.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.arch / acpi_ec_provide_non_interrupt_mode_boot_param.patch
diff --git a/src/patches/suse-2.6.27.25/patches.arch/acpi_ec_provide_non_interrupt_mode_boot_param.patch b/src/patches/suse-2.6.27.25/patches.arch/acpi_ec_provide_non_interrupt_mode_boot_param.patch
new file mode 100644 (file)
index 0000000..2dd543b
--- /dev/null
@@ -0,0 +1,67 @@
+From: Alexey Starikovskiy <astarikovskiy@suse.de>
+Subject: ACPI: EC: Don't degrade to poll mode at storm automatically.
+References: bnc#446142
+Patch-Mainline: no
+
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+
+Not all users of semi-broken EC devices want to degrade to poll mode, so
+give them right to choose.
+
+Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
+---
+
+ Documentation/kernel-parameters.txt |    5 +++++
+ drivers/acpi/ec.c                   |   15 +++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -699,6 +699,11 @@ and is between 256 and 4096 characters.
+       eata=           [HW,SCSI]
++      ec_intr=        [HW,ACPI] ACPI Embedded Controller interrupt mode
++                      Format: <int>
++                      0: polling mode
++                      non-0: interrupt mode (default)
++
+       edd=            [EDD]
+                       Format: {"off" | "on" | "skip[mbr]"}
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -121,6 +121,8 @@ static struct acpi_ec {
+       spinlock_t curr_lock;
+ } *boot_ec, *first_ec;
++int acpi_ec_intr = 1; /* Default is interrupt mode */
++
+ /* 
+  * Some Asus system have exchanged ECDT data/command IO addresses.
+  */
+@@ -902,6 +904,8 @@ static int ec_install_handlers(struct ac
+                                 &acpi_ec_gpe_handler, ec);
+       if (ACPI_FAILURE(status))
+               return -ENODEV;
++      if (!acpi_ec_intr)
++              set_bit(EC_FLAGS_NO_GPE, &ec->flags);
+       acpi_set_gpe_type(NULL, ec->gpe, ACPI_GPE_TYPE_RUNTIME);
+       acpi_enable_gpe(NULL, ec->gpe, ACPI_NOT_ISR);
+       status = acpi_install_address_space_handler(ec->handle,
+@@ -1094,3 +1098,14 @@ static void __exit acpi_ec_exit(void)
+       return;
+ }
+ #endif        /* 0 */
++
++static int __init acpi_ec_set_intr_mode(char *str)
++{
++      if (!get_option(&str, &acpi_ec_intr)) {
++              acpi_ec_intr = 0;
++              return 0;
++      }
++      return 1;
++}
++
++__setup("ec_intr=", acpi_ec_set_intr_mode);