public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
To: linux-ia64@vger.kernel.org
Subject: [PATCH] CMC/CPE: Reverse the order of fetching log and checking poll
Date: Fri, 08 Sep 2006 09:15:29 +0000	[thread overview]
Message-ID: <450134B1.6070503@jp.fujitsu.com> (raw)
In-Reply-To: <44FD3AFF.7050005@jp.fujitsu.com>

(Last patch was based on wrong/old kernel. This is repost.)

This patch reverses the order of fetching log from SAL and
checking poll threshold. This will fix following trivial issues:

- If SAL_GET_SATE_INFO is unbelievably slow (due to huge system
   or just its silly implementation) and if it takes more than
   1/5 sec, CMCI/CPEI will never switch to CMCP/CPEP.
- Assuming terrible flood of interrupt (continuous corrected
   errors let all CPUs enter to handler at once and bind them
   in it), CPUs will be serialized by IA64_LOG_LOCK(*).
   Now we check the poll threshold after the lock and log fetch,
   so we need to call SAL_GET_STATE_INFO (num_online_cpus() + 4)
   times in the worst case.
   if we can check the threshold before the lock, we can shut up
   interrupts quickly without waiting preceding log fetches, and
   the number of times will be reduced to (num_online_cpus()) in
   the same situation.

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>

---
  arch/ia64/kernel/mca.c |   18 ++++++++++--------
  1 files changed, 10 insertions(+), 8 deletions(-)

Index: linux-2.6.18-rc6/arch/ia64/kernel/mca.c
=================================--- linux-2.6.18-rc6.orig/arch/ia64/kernel/mca.c
+++ linux-2.6.18-rc6/arch/ia64/kernel/mca.c
@@ -344,9 +344,6 @@
  	/* SAL spec states this should run w/ interrupts enabled */
  	local_irq_enable();

-	/* Get the CPE error record and log it */
-	ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CPE);
-
  	spin_lock(&cpe_history_lock);
  	if (!cpe_poll_enabled && cpe_vector >= 0) {

@@ -375,7 +372,7 @@
  			mod_timer(&cpe_poll_timer, jiffies + MIN_CPE_POLL_INTERVAL);

  			/* lock already released, get out now */
-			return IRQ_HANDLED;
+			goto out;
  		} else {
  			cpe_history[index++] = now;
  			if (index = CPE_HISTORY_LENGTH)
@@ -383,6 +380,10 @@
  		}
  	}
  	spin_unlock(&cpe_history_lock);
+out:
+	/* Get the CPE error record and log it */
+	ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CPE);
+
  	return IRQ_HANDLED;
  }

@@ -1106,9 +1107,6 @@
  	/* SAL spec states this should run w/ interrupts enabled */
  	local_irq_enable();

-	/* Get the CMC error record and log it */
-	ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC);
-
  	spin_lock(&cmc_history_lock);
  	if (!cmc_polling_enabled) {
  		int i, count = 1; /* we know 1 happened now */
@@ -1141,7 +1139,7 @@
  			mod_timer(&cmc_poll_timer, jiffies + CMC_POLL_INTERVAL);

  			/* lock already released, get out now */
-			return IRQ_HANDLED;
+			goto out;
  		} else {
  			cmc_history[index++] = now;
  			if (index = CMC_HISTORY_LENGTH)
@@ -1149,6 +1147,10 @@
  		}
  	}
  	spin_unlock(&cmc_history_lock);
+out:
+	/* Get the CMC error record and log it */
+	ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC);
+
  	return IRQ_HANDLED;
  }



      reply	other threads:[~2006-09-08  9:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-05  8:53 [PATCH] CMC/CPE: Reverse the order of fetching log and checking poll Hidetoshi Seto
2006-09-08  9:15 ` Hidetoshi Seto [this message]

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=450134B1.6070503@jp.fujitsu.com \
    --to=seto.hidetoshi@jp.fujitsu.com \
    --cc=linux-ia64@vger.kernel.org \
    /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