[Top] [All Lists]

[PATCH v2 0/5] Speed booting by sorting exception tables at build time.

To: Ralf Baechle <>, Thomas Gleixner <>, Ingo Molnar <>, "H. Peter Anvin" <>,, Linus Torvalds <>, Michal Marek <>
Subject: [PATCH v2 0/5] Speed booting by sorting exception tables at build time.
From: David Daney <>
Date: Thu, 19 Apr 2012 14:59:54 -0700
Cc:,, Andrew Morton <>, David Daney <>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=1pgys0B6Dxv5C7dn7k+0yr9R+FxUMsvgPoFpP2dxUjg=; b=ZdGeby46PuL3NNBAwGVCIcB2UT85Ps5FaXfRLREjtSFbky1zOHsogX0VivHKsSot04 z4iDKVRPoenYTMHFQUIYCfnjWtMlpUqh8ZemfSzNzyHlcVd7P7O34pbo3JyfgWIdvuR+ s9wPgAjdm85AiqE19ctGg5U3Tmit9tG8GBSDUUgeW5BN5m7sb4ZHbP4Ww3+A8ATqpENv lsHqNEqZp4UVvZuk0X7AQJdzAM5XrJhTmJjCTYMJIiXVLNQyPrV43cBCoOPXL5UPFmap baMdh88d5cGZwBVqpjmsS8Wue7VRDYIP7vpsoYVbO7JLYFGSxysiqfwh8AV27aQZdljs nopg==
From: David Daney <>

v2: Cosmetic changes only.  Cleanup makefile indentation.  Rebase MIPS
    and x86 Kconfig changes against 3.4-rc2.

    Michal Marek had suggested using $(call cmd,sortextable), but I
    wasn't able to figure out a good way to do that *and* have it print
    'SORTEX vmlinux', so I left it as I originally had it.


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

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

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.

 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


<Prev in Thread] Current Thread [Next in Thread>