lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1242861486-7255-1-git-send-email-heukelum@fastmail.fm>
Date:	Thu, 21 May 2009 01:17:58 +0200
From:	Alexander van Heukelum <heukelum@...tmail.fm>
To:	Ingo Molnar <mingo@...e.hu>, LKML <linux-kernel@...r.kernel.org>
Cc:	Jan Beulich <JBeulich@...ell.com>,
	"H. Peter Anvin" <hpa@...or.com>,
	Cyrill Gorcunov <gorcunov@...il.com>,
	Alexander van Heukelum <heukelum@...tmail.fm>
Subject: [PATCH] i386, entry_32: cleanup

Hi Ingo and others!

Here is a new batch of patches to the entry code. I started
something similar a few months ago for x86_64, but I lack a
64-bit machine I can use to test at the moment, so I decided
to make a start on i386 instead.

This series takes on the SAVE_ALL macro, which expanded to a
pretty large number of instructions in every interrupt dispatcher
in entry_32.S. Instead, it now expands to a call to a function
(save_entry) that does the register saving and the preparation
needed to call C functions.

This also gets rid of the indirect call used in the interrupt
dispatcher. The old code does some interesting shuffle on the
stack to pass the address of the C handler to a common piece
of code. The new version creates a stub that for each interrupt,
where each stub calls save_entry, does a direct call to the
C handler and the jumps to a common return path.

I did some latency measurements and this code does not perform
significantly better or worse than the old code on a "Sempron
2400+". The original aim was to shrink entry_32.o, but this
goal was not reached. The size has not changes significantly,
mostly due to the due to the check for %ss==__ESPFIX_SS in the
exception stubs and the fact that the SAVE_ALL macro expanded
to a lot of small instructions. On the other hand, entry_32.S
shrunk by more than 10%:

 arch/x86/kernel/cpu/mcheck/mce_32.c |    6 +
 arch/x86/kernel/entry_32.S          |  513 +++++++++++------------------------
 2 files changed, 171 insertions(+), 348 deletions(-)

I'ld very much appreciate some more testing in the -x86 pool.

Greetings,
    Alexander
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ