Re: [GIT PULL] x86 fixes

Heiko Carstens
2015-07-20T07:20:47Z

On Sat, Jul 18, 2015 at 05:18:10AM +0200, Ingo Molnar wrote:
> Linus,
>
> Please pull the latest x86-urgent-for-linus git tree from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-urgent-for-linus
>
> # HEAD: 5aaeb5c01c5b6c0be7b7aadbf3ace9f3a4458c3d x86/fpu, sched: Introduce CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT and use it on x86
>
> Two families of fixes:
>
> - Fix an FPU context related boot crash on newer x86 hardware with larger
> context sizes than what most people test. To fix this without ugly kludges or
> extensive reverts we had to touch core task allocator, to allow x86 to
> determine the task size dynamically, at boot time.
>
> I've tested it on a number of x86 platforms, and I cross-built it to a handful
> of architectures:
>
> (warns) (warns)
> testing x86-64: -git: pass ( 0), -tip: pass ( 0)
> testing x86-32: -git: pass ( 0), -tip: pass ( 0)
> testing arm: -git: pass ( 1359), -tip: pass ( 1359)
> testing cris: -git: pass ( 1031), -tip: pass ( 1031)
> testing m32r: -git: pass ( 1135), -tip: pass ( 1135)
> testing m68k: -git: pass ( 1471), -tip: pass ( 1471)
> testing mips: -git: pass ( 1162), -tip: pass ( 1162)
> testing mn10300: -git: pass ( 1058), -tip: pass ( 1058)
> testing parisc: -git: pass ( 1846), -tip: pass ( 1846)
> testing sparc: -git: pass ( 1185), -tip: pass ( 1185)
>
> ... so I hope the cross-arch impact 'none', as intended.
>
> (by Dave Hansen)

Unfortunately not true. It breaks the build on s390 since a couple of
displacements used in asm code now get too large:

arch/s390/kernel/entry.S:181: Error: operand out of range (0x00000000000018a8 is not between 0x0000000000000000 and 0x0000000000000fff)
arch/s390/kernel/entry.S:191: Error: operand out of range (0x00000000000018a8 is not between 0x0000000000000000 and 0x0000000000000fff)
arch/s390/kernel/entry.S:423: Error: operand out of range (0x0000000000001924 is not between 0x0000000000000000 and 0x0000000000000fff)
arch/s390/kernel/entry.S:437: Error: operand out of range (0x00000000000018e8 is not between 0x0000000000000000 and 0x0000000000000fff)
arch/s390/kernel/entry.S:438: Error: operand out of range (0x00000000000018e0 is not between 0x0000000000000000 and 0x0000000000000fff)
arch/s390/kernel/entry.S:439: Error: operand out of range (0x00000000000018f0 is not between 0x0000000000000000 and 0x0000000000000fff)
make[1]: *** [arch/s390/kernel/entry.o] Error 1

Let's see how we can fix this.