tree: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git y2038-5.4-rc4 head: f42cacd62588facdaaa952c30c33e160ab6e116b commit: 78846d536689e1c25666b76356509166ddb7eec3 [133/264] x86: percpu: fix clang 32-bit build config: i386-randconfig-e001-201944 (attached as .config) compiler: gcc-7 (Debian 7.4.0-14) 7.4.0 reproduce: git checkout 78846d536689e1c25666b76356509166ddb7eec3 # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All errors (new ones prefixed by >>): arch/x86/kernel/ioport.c: In function 'ksys_ioperm': >> arch/x86/kernel/ioport.c:99:1: error: unsupported size for integer register } ^ -- arch/x86/kernel/process.c: In function '__switch_to_xtra': >> arch/x86/kernel/process.c:538:1: error: unsupported size for integer register } ^ -- arch/x86/kernel/cpu/intel_epb.c: In function 'intel_epb_restore': >> arch/x86/kernel/cpu/intel_epb.c:98:1: error: unsupported size for integer register } ^ -- arch/x86/kernel/fpu/core.c: In function 'kernel_fpu_begin': >> arch/x86/kernel/fpu/core.c:104:1: error: unsupported size for integer register } ^ vim +99 arch/x86/kernel/ioport.c ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 23 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 24 /* ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 25 * this changes the io permissions bitmap in the current task. ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 26 */ 66f4e88cc69da7 arch/x86/kernel/ioport.c Dominik Brodowski 2018-03-11 27 long ksys_ioperm(unsigned long from, unsigned long num, int turn_on) ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 28 { ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 29 struct thread_struct *t = ¤t->thread; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 30 struct tss_struct *tss; ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 31 unsigned int i, max_long, bytes, bytes_updated; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 32 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 33 if ((from + num <= from) || (from + num > IO_BITMAP_BITS)) ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 34 return -EINVAL; 96c4f67293e4cd arch/x86/kernel/ioport.c Matthew Garrett 2019-08-19 35 if (turn_on && (!capable(CAP_SYS_RAWIO) || 96c4f67293e4cd arch/x86/kernel/ioport.c Matthew Garrett 2019-08-19 36 security_locked_down(LOCKDOWN_IOPORT))) ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 37 return -EPERM; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 38 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 39 /* ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 40 * If it's the first ioperm() call in this thread's lifetime, set the ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 41 * IO bitmap up. ioperm() is much less timing critical than clone(), ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 42 * this is why we delay this operation until now: ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 43 */ ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 44 if (!t->io_bitmap_ptr) { 9a211abeaab74e arch/x86/kernel/ioport_32.c Thomas Gleixner 2008-01-30 45 unsigned long *bitmap = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); 9a211abeaab74e arch/x86/kernel/ioport_32.c Thomas Gleixner 2008-01-30 46 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 47 if (!bitmap) ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 48 return -ENOMEM; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 49 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 50 memset(bitmap, 0xff, IO_BITMAP_BYTES); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 51 t->io_bitmap_ptr = bitmap; b3cf257623fabd arch/i386/kernel/ioport.c Stephane Eranian 2006-07-09 52 set_thread_flag(TIF_IO_BITMAP); b7ffc44d5b2ea1 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-20 53 b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 54 /* b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 55 * Now that we have an IO bitmap, we need our TSS limit to be b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 56 * correct. It's fine if we are preempted after doing this: b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 57 * with TIF_IO_BITMAP set, context switches will keep our TSS b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 58 * limit correct. b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 59 */ b7ffc44d5b2ea1 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-20 60 preempt_disable(); b7ceaec112aa35 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-22 61 refresh_tss_limit(); b7ffc44d5b2ea1 arch/x86/kernel/ioport.c Andy Lutomirski 2017-02-20 62 preempt_enable(); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 63 } ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 64 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 65 /* ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 66 * do it in the per-thread copy and in the TSS ... ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 67 * ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 68 * Disable preemption via get_cpu() - we must not switch away ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 69 * because the ->io_bitmap_max value must match the bitmap ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 70 * contents: ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 71 */ c482feefe1aeb1 arch/x86/kernel/ioport.c Andy Lutomirski 2017-12-04 72 tss = &per_cpu(cpu_tss_rw, get_cpu()); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 73 da1016df85ed67 arch/x86/kernel/ioport.c Akinobu Mita 2011-02-16 74 if (turn_on) da1016df85ed67 arch/x86/kernel/ioport.c Akinobu Mita 2011-02-16 75 bitmap_clear(t->io_bitmap_ptr, from, num); da1016df85ed67 arch/x86/kernel/ioport.c Akinobu Mita 2011-02-16 76 else da1016df85ed67 arch/x86/kernel/ioport.c Akinobu Mita 2011-02-16 77 bitmap_set(t->io_bitmap_ptr, from, num); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 78 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 79 /* ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 80 * Search for a (possibly new) maximum. This is simple and stupid, ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 81 * to keep it obviously correct: ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 82 */ ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 83 max_long = 0; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 84 for (i = 0; i < IO_BITMAP_LONGS; i++) ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 85 if (t->io_bitmap_ptr[i] != ~0UL) ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 86 max_long = i; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 87 ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 88 bytes = (max_long + 1) * sizeof(unsigned long); ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 89 bytes_updated = max(bytes, t->io_bitmap_max); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 90 ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 91 t->io_bitmap_max = bytes; ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 92 ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 93 /* Update the TSS: */ ccafa59a0061d7 arch/x86/kernel/ioport.c mboton(a)gmail.com 2008-01-30 94 memcpy(tss->io_bitmap, t->io_bitmap_ptr, bytes_updated); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 95 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 96 put_cpu(); ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 97 ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 98 return 0; ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 @99 } ^1da177e4c3f41 arch/i386/kernel/ioport.c Linus Torvalds 2005-04-16 100 :::::: The code at line 99 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds :::::: CC: Linus Torvalds --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation