linux-embedded.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC 0/5] Speed booting by sorting exception tables at build time.
@ 2011-11-18 19:37 David Daney
  2011-11-18 19:37 ` [PATCH RFC 1/5] scripts: Add sortextable to sort the kernel's exception table David Daney
                   ` (5 more replies)
  0 siblings, 6 replies; 19+ messages in thread
From: David Daney @ 2011-11-18 19:37 UTC (permalink / raw)
  To: linux-mips, ralf, linux-kernel, linux-arch, linux-embedded, x86
  Cc: David Daney

From: David Daney <david.daney@cavium.com>

I noticed when booting MIPS64 kernels that sorting of the main
__ex_table was taking a long time (2,692,220 cycles or 3.3 mS at
800MHz to be exact).  That is not too bad for real silicon
implementations, but when running on a slow simulator, it can be
significant.

I can get this down to about 1,000,000 cycles by supplying a custom
swap function for the sort, but even better is to eliminate it
entirely by doing the sort at build time. That is the idea behind
this patch set.

Here is more or less what I did:

o A flag word is added to the kernel to indicate that the __ex_table
  is already sorted.  sort_main_extable() checks this and if it is
  clear, returns without doing the sort.

o I shamelessly stole code from recordmcount and created a new build
  time helper program 'sortextable'.  This is run on the final vmlinux
  image, it sorts the table, and then clears the flag word.

Potential areas for improvement:

o Sort module exception tables too.

o Get rit of the flag word, and assume that if an architecture supports
  build time sorting, that it must have been done.

o Add support for architectures other than MIPS and x86

Any comments most welcome,

David Daney (5):
  scripts: Add sortextable to sort the kernel's exception table.
  extable: Skip sorting if sorted at build time.
  kbuild/extable: Hook up sortextable into the build system.
  MIPS:  Select BUILDTIME_EXTABLE_SORT
  x86: Select BUILDTIME_EXTABLE_SORT

 Makefile              |   10 ++
 arch/mips/Kconfig     |    1 +
 arch/x86/Kconfig      |    1 +
 init/Kconfig          |    3 +
 kernel/extable.c      |    8 ++-
 scripts/.gitignore    |    1 +
 scripts/Makefile      |    1 +
 scripts/sortextable.c |  273 +++++++++++++++++++++++++++++++++++++++++++++++++
 scripts/sortextable.h |  168 ++++++++++++++++++++++++++++++
 9 files changed, 465 insertions(+), 1 deletions(-)
 create mode 100644 scripts/sortextable.c
 create mode 100644 scripts/sortextable.h

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2011-11-22 21:38 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-18 19:37 [PATCH RFC 0/5] Speed booting by sorting exception tables at build time David Daney
2011-11-18 19:37 ` [PATCH RFC 1/5] scripts: Add sortextable to sort the kernel's exception table David Daney
2011-11-20 23:22   ` Mike Frysinger
2011-11-21 18:25     ` David Daney
2011-11-21 18:50       ` Mike Frysinger
2011-11-21 19:16         ` David Daney
2011-11-21 20:08           ` Mike Frysinger
2011-11-20 23:26   ` H. Peter Anvin
2011-11-20 23:27     ` H. Peter Anvin
2011-11-20 23:28     ` David Woodhouse
2011-11-20 23:30       ` H. Peter Anvin
2011-11-21 18:51     ` David Daney
2011-11-18 19:37 ` [PATCH RFC 2/5] extable: Skip sorting if sorted at build time David Daney
2011-11-18 19:37 ` [PATCH RFC 3/5] kbuild/extable: Hook up sortextable into the build system David Daney
2011-11-20 13:45   ` Michal Marek
2011-11-22 21:38     ` David Daney
2011-11-18 19:37 ` [PATCH RFC 4/5] MIPS: Select BUILDTIME_EXTABLE_SORT David Daney
2011-11-18 19:37 ` [PATCH RFC 5/5] x86: " David Daney
2011-11-20 23:10 ` [PATCH RFC 0/5] Speed booting by sorting exception tables at build time Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).