public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
From: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
To: linux-ia64@vger.kernel.org
Subject: RE: [patch 1/2] remove per-cpu ia64_phys_stacked_size_p8
Date: Mon, 27 Feb 2006 19:26:45 +0000	[thread overview]
Message-ID: <200602271926.k1RJQjg02847@unix-os.sc.intel.com> (raw)
In-Reply-To: <200602240233.k1O2Xeg05945@unix-os.sc.intel.com>

Chen, Ken wrote on Thursday, February 23, 2006 6:34 PM
> It's not efficient to use a per-cpu variable just to store
> how many physical stack register a cpu has.  Ever since the
> incarnation of ia64 up till upcoming Montecito processor, that
> variable has "glued" to 96. Having a variable in memory means
> that the kernel is burning an extra cacheline access on every
> syscall and kernel exit path.  Such "static" value is better
> served with the instruction patching utility exists today.
> Convert ia64_phys_stacked_size_p8 into dynamic insn patching.
> 
> This also has a pleasant side effect of eliminating access to
> per-cpu area while psr.ic=0 in the kernel exit path. (fixable
> for per-cpu DTC work, but why bother?)
> 
> There are some concerns with the default value that the instruc-
> tion encoded in the kernel image.  It shouldn't be concerned.
> The reasons are:
> 
> (1) cpu_init() is called at CPU initialization.  In there, we
>     find out physical stack register size from PAL and patch
>     two instructions in kernel exit code.  The code in question
>     can not be executed before the patching is done.
> 
> (2) current implementation stores zero in ia64_phys_stacked_size_p8,
>     and that's what the current kernel exit path loads the value with.
>     With the new code, it is equivalent that we store reg size 96
>     in ia64_phys_stacked_size_p8, thus creating a better safety net.
>     Given (1) above can never fail, having (2) is just a bonus.
> 
> 
> All in all, this patch allow one less memory reference in the kernel
> exit path, thus reducing syscall and interrupt return latency; and
> avoid polluting potential useful data in the CPU cache.


I accidentally posted a variant of patch with IA64_NUM_PHYS_STACK_REG
set to 0 for the purpose of testing out correctness of instruction
patching.  Change that value to 96 as advertised.

- Ken



--- linux-2.6.15/include/asm-ia64/processor.h.orig	2006-02-27 12:19:47.793181185 -0800
+++ linux-2.6.15/include/asm-ia64/processor.h	2006-02-27 12:19:56.312712330 -0800
@@ -20,7 +20,7 @@
 #include <asm/ptrace.h>
 #include <asm/ustack.h>
 
-#define IA64_NUM_PHYS_STACK_REG	0
+#define IA64_NUM_PHYS_STACK_REG	96
 #define IA64_NUM_DBG_REGS	8
 /*
  * Limits for PMC and PMD are set to less than maximum architected values



  parent reply	other threads:[~2006-02-27 19:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-24  2:33 [patch 1/2] remove per-cpu ia64_phys_stacked_size_p8 Chen, Kenneth W
2006-02-24 10:08 ` Christian Hildner
2006-02-24 18:58 ` Chen, Kenneth W
2006-02-24 19:13 ` Chen, Kenneth W
2006-02-27  8:15 ` Christian Hildner
2006-02-27 19:26 ` Chen, Kenneth W [this message]
2006-10-13 17:05 ` Chen, Kenneth W

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=200602271926.k1RJQjg02847@unix-os.sc.intel.com \
    --to=kenneth.w.chen@intel.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