Le 17 nov. 10 à 16:33, Kyle McMartin a écrit :
On Wed, Nov 17, 2010 at 09:38:08AM -0500, John David Anglin wrote:
I also agree that the kernel shouldn't fix unaligned accesses
occuring
in the kernel. It allows for sloppy coding and the fixup can be a
major performance hit on strict alignment machines like sparc and
hppa.
It would appear handle_unaligned can't always fixup kernel accesses.
At least, emulate_ldd causes a hpmc attempting to fixup the ldd in
init_page_buffers. This may be because this is a wrong code error
and the address is in someway invalid. Maybe more address checking
is needed.
I'll take a look at emulate_ldd. It's entirely possible that it's
broken
and we just haven't noticed because we would so rarely hit one in
userspace. (The only PA2.0 code I know of was the code Thibaut wrote
to
do ffmpeg in pa2.0 asm. I imagine something like that wouldn't take
unaligned traps if performance was desired... ;-)
Don't imagine too much when it comes to me, you'll always be
surprised ;-)
Since my initial code (which stayed at this stage, for lack of any
field use) was only trying to get the asm right in the first place
(you can see the code here, btw: http://www.parisc-linux.org/~varenet/dsputils_parisc.c.html
) I didn't bother doing unaligned accesses handling when I first
tried it, so it's actually very likely I did hit emulate_ldd quite a
lot. Fun fact, despite lots of unaligned accesses, that code performed
on par (and even slightly faster, IIRC) with the C implementation :^)
HTH
T-Bone
--
Thibaut VARÈNE
http://www.parisc-linux.org/~varenet/
--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html