Skip to contentSkip to conversation

powerpc: build time sort extable

PATCH In review Nicholas Piggin 2 participants 2 messages Oct 7, 2016 – Oct 10, 2016 PowerPC

lore
Share & tools
lore

Nicholas Piggin

author reviewer
#0 lore raw

PATCH 1/1 powerpc: build time sort extable

Can we just switch this on? Powerpc does not use relative extables (that's a nice exercise left for the reader), so it should just use the standard sort.

This patch seems to work, famous last words...

Sorting probably only takes a few ms on any real hardware, but on on very large kernel configs, extable sorting can take several seconds in simulators and be a noticable cost to booting.

---
 arch/powerpc/Kconfig  | 1 +
 scripts/sortextable.c | 2 ++
 2 files changed, 3 insertions(+)
arch/powerpc/Kconfig +1 -0
index 927d2ab..2340483 100644
@@ -85,6 +85,7 @@ config ARCH_HAS_DMA_SET_COHERENT_MASK
 config PPC
 	bool
 	default y
+	select BUILDTIME_EXTABLE_SORT
 	select ARCH_MIGHT_HAVE_PC_PARPORT
 	select ARCH_MIGHT_HAVE_PC_SERIO
 	select BINFMT_ELF
scripts/sortextable.c +2 -0
index f453b7c..30337e1 100644
@@ -324,6 +324,8 @@ do_file(char const *const fname)
 	case EM_MICROBLAZE:
 	case EM_MIPS:
 	case EM_XTENSA:
+	case EM_PPC:
+	case EM_PPC64:
 		break;
 	}  /* end switch */
 
Signature · 1 line
2.9.3
#1 lore raw
Quoted 5 lines · Nicholas Piggin

Can we just switch this on? Powerpc does not use relative extables (that's a nice exercise left for the reader), so it should just use the standard sort.

This patch seems to work, famous last words...

Would be nice but ...

Quoted 3 lines

Sorting probably only takes a few ms on any real hardware, but on on very large kernel configs, extable sorting can take several seconds in simulators and be a noticable cost to booting.

(We even carried a patch for years to speed it up.)

Blows up for me at boot:

[ OK ] Started LSB: Control pmcd (the collection daemon for PCP).

Unable to handle kernel paging request for data at address 0x00000000
Faulting instruction address: 0xc000000000062d60
cpu 0x1: Vector: 300 (Data Access) at [c0000001d6687aa0]
    pc: c000000000062d60: __copy_tofrom_user_base+0x54/0x5b4
    lr: c0000000000633d8: copy_from_user+0x78/0xe0
    sp: c0000001d6687d20
   msr: 8000000000009033
   dar: 0
 dsisr: 40000000
  current = 0xc0000001d6601880
  paca    = 0xc000000007e00400	 softe: 0	 irq_happened: 0x01
    pid   = 7101, comm = docker

Linux version 4.8.0-compiler_gcc-6.2.0-11418-g4011878e4cd3 ([email protected]) (gcc version 6.2.0 (GCC) ) #219 SMP Mon Oct 10 14:48:04 AEDT 2016 enter ? for help
[link register ] c0000000000633d8 copy_from_user+0x78/0xe0
[c0000001d6687d20] c0000001d6687d90 (unreliable)
[c0000001d6687d60] c0000000001c7358 do_seccomp+0x78/0x6d0
[c0000001d6687dd0] c0000000000dc08c SyS_prctl+0x27c/0x670
[c0000001d6687e30] c00000000000bde4 system_call+0x38/0xfc
--- Exception: c01 (System Call) at 000000001025634c
SP (c8208d6cd8) is in userspace

cheers