All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Hildner <christian.hildner@hob.de>
To: linux-ia64@vger.kernel.org
Subject: Re: [patch 1/2] remove per-cpu ia64_phys_stacked_size_p8
Date: Fri, 24 Feb 2006 10:08:00 +0000	[thread overview]
Message-ID: <43FEDB00.2090407@hob.de> (raw)
In-Reply-To: <200602240233.k1O2Xeg05945@unix-os.sc.intel.com>

Kenneth,

self-modifing code isn't the straight forward way of programming. So 
wouldn't it be an idea to let the code crash instead of silently work 
with a potentially wrong number of registers here, if by any reason the 
patch mechanism doesn't work. I suppose the usage of a break instruction 
(with non_syscall number) to indicate failing/missing patch here. That 
would add another level of security here.

Christian

Chen, Kenneth W schrieb:

>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.
>
>  
>



  reply	other threads:[~2006-02-24 10:08 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 [this message]
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
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=43FEDB00.2090407@hob.de \
    --to=christian.hildner@hob.de \
    --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 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.