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.
>
>
>
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox