From: David Daney <david.daney@xxxxxxxxxx> 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