From: Feng Tang <feng.tang@intel.com>
To: Len Brown <lenb@kernel.org>, Len Brown <len.brown@intel.com>,
linux-acpi@vger.kernel.org
Cc: Alexey Starikovskiy <astarikovskiy@suse.de>,
Thomas Renninger <trenn@suse.de>,
Bob Moore <robert.moore@intel.com>,
Feng Tang <feng.tang@intel.com>
Subject: [PATCH 1/5] ACPI: EC: Make the GPE storm threshold a module parameter
Date: Tue, 11 Sep 2012 21:10:18 +0800 [thread overview]
Message-ID: <1347369022-10176-1-git-send-email-feng.tang@intel.com> (raw)
This is to solve bug https://bugzilla.kernel.org/show_bug.cgi?id=45151
The ACPI_EC_STORM_THRESHOLD was initially 20 when it's created, and was
changed to 8 in commit 06cf7d3c7 "ACPI: EC: lower interrupt storm treshold"
to fix another kernel bug 11892 by forcing the laptop in that bug to
work in polling mode. However in bug 45151, it works fine in interrupt
mode if we lift the threshold back to 20.
This patch makes the threshold a module parameter so that user has a
flexible option to chose a number according to their specific EC HW.
It doesn't affect current EC behavior.
Signed-off-by: Feng Tang <feng.tang@intel.com>
---
drivers/acpi/ec.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 7edaccc..615264c 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -71,9 +71,6 @@ enum ec_command {
#define ACPI_EC_UDELAY_GLK 1000 /* Wait 1ms max. to get global lock */
#define ACPI_EC_MSI_UDELAY 550 /* Wait 550us for MSI EC */
-#define ACPI_EC_STORM_THRESHOLD 8 /* number of false interrupts
- per one transaction */
-
enum {
EC_FLAGS_QUERY_PENDING, /* Query is pending */
EC_FLAGS_GPE_STORM, /* GPE storm detected */
@@ -87,6 +84,15 @@ static unsigned int ec_delay __read_mostly = ACPI_EC_DELAY;
module_param(ec_delay, uint, 0644);
MODULE_PARM_DESC(ec_delay, "Timeout(ms) waited until an EC command completes");
+/*
+ * If the number of false interrupts per one transaction exceeds
+ * this threshold, will think there is a GPE storm happened and
+ * will disable the GPE for normal transaction.
+ */
+static unsigned int ec_storm_threshold __read_mostly = 8;
+module_param(ec_storm_threshold, uint, 0644);
+MODULE_PARM_DESC(ec_storm_threshold, "Maxim false GPE numbers not considered as GPE storm");
+
/* If we find an EC via the ECDT, we need to keep a ptr to its context */
/* External interfaces use first EC only, so remember */
typedef int (*acpi_ec_query_func) (void *data);
@@ -319,7 +325,7 @@ static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t)
msleep(1);
/* It is safe to enable the GPE outside of the transaction. */
acpi_enable_gpe(NULL, ec->gpe);
- } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) {
+ } else if (t->irq_count > ec_storm_threshold) {
pr_info(PREFIX "GPE storm detected, "
"transactions will use polling mode\n");
set_bit(EC_FLAGS_GPE_STORM, &ec->flags);
--
1.7.1
next reply other threads:[~2012-09-11 13:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-11 13:10 Feng Tang [this message]
2012-09-11 13:10 ` [PATCH 2/5] ACPI: EC: Cleanup the member name for spinlock/mutex in struct acpi_ec Feng Tang
2012-09-11 13:10 ` [PATCH 3/5] ACPI: EC: Add more debug info and trivial code cleanup Feng Tang
2012-09-11 13:10 ` [PATCH 4/5] ACPI: Remove the useless check in osl.c Feng Tang
2012-09-11 13:10 ` [RFC PATCH 5/5] ACPI: EC: Don't count a SCI interrupt as a false one Feng Tang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1347369022-10176-1-git-send-email-feng.tang@intel.com \
--to=feng.tang@intel.com \
--cc=astarikovskiy@suse.de \
--cc=len.brown@intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=robert.moore@intel.com \
--cc=trenn@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).