From: Lv Zheng <lv.zheng@intel.com> To: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>, Len Brown <len.brown@intel.com> Cc: Lv Zheng <lv.zheng@intel.com>, Lv Zheng <zetalog@gmail.com>, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org Subject: [PATCH 6/6] ACPI/EC: Add GPE reference counting debugging messages. Date: Mon, 3 Nov 2014 13:16:43 +0800 [thread overview] Message-ID: <be7d8548073a305da9f2e995f372783584c85a60.1414988981.git.lv.zheng@intel.com> (raw) In-Reply-To: <cover.1414988981.git.lv.zheng@intel.com> This patch enhances debugging with the GPE reference count messages added. No functional changes. Signed-off-by: Lv Zheng <lv.zheng@intel.com> --- drivers/acpi/ec.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 7089081..5ac189b 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -31,6 +31,7 @@ /* Uncomment next line to get verbose printout */ /* #define DEBUG */ +#define DEBUG_REF 0 #define pr_fmt(fmt) "ACPI : EC: " fmt #include <linux/kernel.h> @@ -88,6 +89,13 @@ enum { #define ACPI_EC_COMMAND_POLL 0x01 /* Available for command byte */ #define ACPI_EC_COMMAND_COMPLETE 0x02 /* Completed last byte */ +#define ec_debug_ref(ec, fmt, ...) \ + do { \ + if (DEBUG_REF) \ + pr_debug("%lu: " fmt, ec->reference_count, \ + ## __VA_ARGS__); \ + } while (0) + /* ec.c is compiled in acpi namespace so this shows up as acpi.ec_delay param */ static unsigned int ec_delay __read_mostly = ACPI_EC_DELAY; module_param(ec_delay, uint, 0644); @@ -218,6 +226,7 @@ static void acpi_ec_enable_event(struct acpi_ec *ec) spin_unlock_irqrestore(&ec->lock, flags); return; } + ec_debug_ref(ec, "Increase poller(enable)\n"); set_bit(EC_FLAGS_EVENT_ENABLED, &ec->flags); if (test_bit(EC_FLAGS_EVENT_PENDING, &ec->flags)) { pr_debug("***** Event pending *****\n"); @@ -226,6 +235,7 @@ static void acpi_ec_enable_event(struct acpi_ec *ec) return; } acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease poller(enable)\n"); spin_unlock_irqrestore(&ec->lock, flags); } @@ -234,6 +244,7 @@ static void __acpi_ec_set_event(struct acpi_ec *ec) /* Hold reference for pending event */ if (!acpi_ec_submit_flushable_request(ec, false)) return; + ec_debug_ref(ec, "Increase poller(set)\n"); if (!test_and_set_bit(EC_FLAGS_EVENT_PENDING, &ec->flags)) { pr_debug("***** Event pending *****\n"); if (test_bit(EC_FLAGS_EVENT_ENABLED, &ec->flags)) { @@ -242,6 +253,7 @@ static void __acpi_ec_set_event(struct acpi_ec *ec) } } acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease poller(set)\n"); } static void __acpi_ec_complete_event(struct acpi_ec *ec) @@ -249,6 +261,7 @@ static void __acpi_ec_complete_event(struct acpi_ec *ec) if (test_and_clear_bit(EC_FLAGS_EVENT_PENDING, &ec->flags)) { /* Unhold reference for pending event */ acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease poller\n"); pr_debug("***** Event running *****\n"); } } @@ -471,6 +484,7 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, ret = -EINVAL; goto unlock; } + ec_debug_ref(ec, "Increase command\n"); /* following two actions should be kept atomic */ ec->curr = t; pr_debug("***** Command(%s) started *****\n", @@ -484,6 +498,7 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, ec->curr = NULL; /* Disable GPE for command processing (IBF=0/OBF=1) */ acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease command\n"); unlock: spin_unlock_irqrestore(&ec->lock, tmp); return ret; @@ -659,6 +674,7 @@ static void acpi_ec_start(struct acpi_ec *ec) pr_debug("+++++ Starting EC +++++\n"); /* Enable GPE for event processing (SCI_EVT=1) */ acpi_ec_submit_request(ec); + ec_debug_ref(ec, "Increase event\n"); pr_info("+++++ EC started +++++\n"); } spin_unlock_irqrestore(&ec->lock, flags); @@ -688,6 +704,7 @@ static void acpi_ec_stop(struct acpi_ec *ec) spin_lock_irqsave(&ec->lock, flags); /* Disable GPE for event processing (SCI_EVT=1) */ acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease event\n"); clear_bit(EC_FLAGS_STARTED, &ec->flags); clear_bit(EC_FLAGS_STOPPED, &ec->flags); pr_info("+++++ EC stopped +++++\n"); -- 1.7.10
WARNING: multiple messages have this Message-ID (diff)
From: Lv Zheng <lv.zheng@intel.com> To: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>, Len Brown <len.brown@intel.com> Cc: Lv Zheng <lv.zheng@intel.com>, Lv Zheng <zetalog@gmail.com>, <linux-kernel@vger.kernel.org>, linux-acpi@vger.kernel.org Subject: [PATCH 6/6] ACPI/EC: Add GPE reference counting debugging messages. Date: Mon, 3 Nov 2014 13:16:43 +0800 [thread overview] Message-ID: <be7d8548073a305da9f2e995f372783584c85a60.1414988981.git.lv.zheng@intel.com> (raw) In-Reply-To: <cover.1414988981.git.lv.zheng@intel.com> This patch enhances debugging with the GPE reference count messages added. No functional changes. Signed-off-by: Lv Zheng <lv.zheng@intel.com> --- drivers/acpi/ec.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 7089081..5ac189b 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -31,6 +31,7 @@ /* Uncomment next line to get verbose printout */ /* #define DEBUG */ +#define DEBUG_REF 0 #define pr_fmt(fmt) "ACPI : EC: " fmt #include <linux/kernel.h> @@ -88,6 +89,13 @@ enum { #define ACPI_EC_COMMAND_POLL 0x01 /* Available for command byte */ #define ACPI_EC_COMMAND_COMPLETE 0x02 /* Completed last byte */ +#define ec_debug_ref(ec, fmt, ...) \ + do { \ + if (DEBUG_REF) \ + pr_debug("%lu: " fmt, ec->reference_count, \ + ## __VA_ARGS__); \ + } while (0) + /* ec.c is compiled in acpi namespace so this shows up as acpi.ec_delay param */ static unsigned int ec_delay __read_mostly = ACPI_EC_DELAY; module_param(ec_delay, uint, 0644); @@ -218,6 +226,7 @@ static void acpi_ec_enable_event(struct acpi_ec *ec) spin_unlock_irqrestore(&ec->lock, flags); return; } + ec_debug_ref(ec, "Increase poller(enable)\n"); set_bit(EC_FLAGS_EVENT_ENABLED, &ec->flags); if (test_bit(EC_FLAGS_EVENT_PENDING, &ec->flags)) { pr_debug("***** Event pending *****\n"); @@ -226,6 +235,7 @@ static void acpi_ec_enable_event(struct acpi_ec *ec) return; } acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease poller(enable)\n"); spin_unlock_irqrestore(&ec->lock, flags); } @@ -234,6 +244,7 @@ static void __acpi_ec_set_event(struct acpi_ec *ec) /* Hold reference for pending event */ if (!acpi_ec_submit_flushable_request(ec, false)) return; + ec_debug_ref(ec, "Increase poller(set)\n"); if (!test_and_set_bit(EC_FLAGS_EVENT_PENDING, &ec->flags)) { pr_debug("***** Event pending *****\n"); if (test_bit(EC_FLAGS_EVENT_ENABLED, &ec->flags)) { @@ -242,6 +253,7 @@ static void __acpi_ec_set_event(struct acpi_ec *ec) } } acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease poller(set)\n"); } static void __acpi_ec_complete_event(struct acpi_ec *ec) @@ -249,6 +261,7 @@ static void __acpi_ec_complete_event(struct acpi_ec *ec) if (test_and_clear_bit(EC_FLAGS_EVENT_PENDING, &ec->flags)) { /* Unhold reference for pending event */ acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease poller\n"); pr_debug("***** Event running *****\n"); } } @@ -471,6 +484,7 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, ret = -EINVAL; goto unlock; } + ec_debug_ref(ec, "Increase command\n"); /* following two actions should be kept atomic */ ec->curr = t; pr_debug("***** Command(%s) started *****\n", @@ -484,6 +498,7 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, ec->curr = NULL; /* Disable GPE for command processing (IBF=0/OBF=1) */ acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease command\n"); unlock: spin_unlock_irqrestore(&ec->lock, tmp); return ret; @@ -659,6 +674,7 @@ static void acpi_ec_start(struct acpi_ec *ec) pr_debug("+++++ Starting EC +++++\n"); /* Enable GPE for event processing (SCI_EVT=1) */ acpi_ec_submit_request(ec); + ec_debug_ref(ec, "Increase event\n"); pr_info("+++++ EC started +++++\n"); } spin_unlock_irqrestore(&ec->lock, flags); @@ -688,6 +704,7 @@ static void acpi_ec_stop(struct acpi_ec *ec) spin_lock_irqsave(&ec->lock, flags); /* Disable GPE for event processing (SCI_EVT=1) */ acpi_ec_complete_request(ec); + ec_debug_ref(ec, "Decrease event\n"); clear_bit(EC_FLAGS_STARTED, &ec->flags); clear_bit(EC_FLAGS_STOPPED, &ec->flags); pr_info("+++++ EC stopped +++++\n"); -- 1.7.10
next prev parent reply other threads:[~2014-11-03 5:16 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-11-03 5:16 [PATCH 0/6] ACPI/EC: Cleanups of command flushing and event polling Lv Zheng 2014-11-03 5:16 ` Lv Zheng 2014-11-03 5:16 ` [PATCH 1/6] ACPI/EC: Introduce STARTED/STOPPED flags to replace BLOCKED flag Lv Zheng 2014-11-03 5:16 ` Lv Zheng 2014-11-05 2:52 ` Zheng, Lv 2014-11-05 2:52 ` Zheng, Lv 2014-11-18 13:23 ` Kirill A. Shutemov 2014-11-18 21:20 ` Rafael J. Wysocki 2014-11-19 8:55 ` Zheng, Lv 2014-11-19 8:55 ` Zheng, Lv 2014-11-19 12:16 ` Kirill A. Shutemov 2014-11-20 2:19 ` [RFC PATCH v3 1/2] ACPICA: Events: Remove duplicated sanity check in acpi_ev_enable_gpe() Lv Zheng 2014-11-20 2:19 ` Lv Zheng 2014-11-20 2:19 ` [RFC PATCH v3 2/2] ACPICA: Events: Introduce ACPI_GPE_HANDLER_RAW to fix 2 issues for the current GPE APIs Lv Zheng 2014-11-20 2:19 ` Lv Zheng 2014-11-20 2:20 ` [PATCH 1/6] ACPI/EC: Introduce STARTED/STOPPED flags to replace BLOCKED flag Zheng, Lv 2014-11-20 21:33 ` Kirill A. Shutemov 2014-11-21 0:42 ` Zheng, Lv 2014-11-21 0:55 ` Zheng, Lv 2014-11-20 2:34 ` Zheng, Lv 2014-11-20 21:34 ` Kirill A. Shutemov 2014-11-20 6:44 ` [RFC PATCH v4] ACPICA/Events: Add support to ensure GPE is disabled by default for handlers Lv Zheng 2014-11-20 6:44 ` Lv Zheng 2014-11-20 6:47 ` Zheng, Lv 2014-11-20 22:15 ` Kirill A. Shutemov 2014-11-21 1:36 ` Zheng, Lv 2015-02-06 0:57 ` [PATCH v2 0/5] ACPI / EC: Add reference counting for requests and cleans up the grace periods support Lv Zheng 2015-02-06 0:57 ` Lv Zheng 2015-02-06 0:57 ` [PATCH v2 1/5] ACPI / EC: Introduce STARTED/STOPPED flags to replace BLOCKED flag Lv Zheng 2015-02-06 0:57 ` Lv Zheng 2015-02-06 0:57 ` [PATCH v2 2/5] ACPI / EC: Add command flushing support Lv Zheng 2015-02-06 0:57 ` Lv Zheng 2015-02-06 0:58 ` [PATCH v2 3/5] ACPI / EC: Refine command storm prevention support Lv Zheng 2015-02-06 0:58 ` Lv Zheng 2015-02-06 0:58 ` [PATCH v2 4/5] ACPI / EC: Add query flushing support Lv Zheng 2015-02-06 0:58 ` Lv Zheng 2015-02-06 0:58 ` [PATCH v2 5/5] ACPI / EC: Add GPE reference counting debugging messages Lv Zheng 2015-02-06 0:58 ` Lv Zheng 2015-02-06 1:26 ` [PATCH v2 0/5] ACPI / EC: Add reference counting for requests and cleans up the grace periods support Rafael J. Wysocki 2015-02-09 2:23 ` Zheng, Lv 2015-02-09 2:23 ` Zheng, Lv 2015-02-12 1:17 ` Rafael J. Wysocki 2015-02-16 6:41 ` Zheng, Lv 2015-02-16 6:41 ` Zheng, Lv 2014-11-03 5:16 ` [PATCH 2/6] ACPI/EC: Enhance the checks to apply to QR_EC transactions Lv Zheng 2014-11-03 5:16 ` Lv Zheng 2014-11-03 5:16 ` [PATCH 3/6] ACPI/EC: Add reference counting for query handlers Lv Zheng 2014-11-03 5:16 ` Lv Zheng 2014-11-03 5:16 ` [PATCH 4/6] ACPI/EC: Add command flushing support Lv Zheng 2014-11-03 5:16 ` Lv Zheng 2014-11-03 5:16 ` [PATCH 5/6] ACPI/EC: Cleanup QR_SC command processing by adding a kernel thread to poll EC events Lv Zheng 2014-11-03 5:16 ` Lv Zheng 2014-11-12 1:16 ` Rafael J. Wysocki 2014-11-12 1:16 ` Rafael J. Wysocki 2014-11-13 2:31 ` Zheng, Lv 2014-11-13 2:31 ` Zheng, Lv 2014-11-13 2:58 ` Rafael J. Wysocki 2014-11-13 2:52 ` Zheng, Lv 2014-11-13 2:52 ` Zheng, Lv 2014-11-13 22:37 ` Rafael J. Wysocki 2014-11-14 1:21 ` Zheng, Lv 2014-11-14 1:21 ` Zheng, Lv 2014-11-14 23:38 ` Rafael J. Wysocki 2014-11-03 5:16 ` Lv Zheng [this message] 2014-11-03 5:16 ` [PATCH 6/6] ACPI/EC: Add GPE reference counting debugging messages Lv Zheng
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=be7d8548073a305da9f2e995f372783584c85a60.1414988981.git.lv.zheng@intel.com \ --to=lv.zheng@intel.com \ --cc=len.brown@intel.com \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=rafael.j.wysocki@intel.com \ --cc=zetalog@gmail.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.