tree: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.sched/core head: f83f0b0647162b099f62e62c203b1cfb90b40239 commit: f83f0b0647162b099f62e62c203b1cfb90b40239 [144/144] sched/headers: Remove the <linux/mm_types.h> dependency from <linux/sched.h> config: powerpc-sam440ep_defconfig (attached as .config) compiler: powerpc-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout f83f0b0647162b099f62e62c203b1cfb90b40239 # save the attached .config to linux build tree make.cross ARCH=powerpc
All errors (new ones prefixed by >>): In file included from arch/powerpc/lib/feature-fixups.c:24:0: arch/powerpc/lib/feature-fixups.c: In function 'apply_feature_fixups': >> arch/powerpc/lib/feature-fixups.c:178:16: error: '__start___mmu_ftr_fixup' >> undeclared (first use in this function) PTRRELOC(&__start___mmu_ftr_fixup), ^ arch/powerpc/include/asm/setup.h:22:30: note: in definition of macro 'PTRRELOC' #define PTRRELOC(x) ((typeof(x)) add_reloc_offset((unsigned long)(x))) ^ arch/powerpc/lib/feature-fixups.c:178:16: note: each undeclared identifier is reported only once for each function it appears in PTRRELOC(&__start___mmu_ftr_fixup), ^ arch/powerpc/include/asm/setup.h:22:30: note: in definition of macro 'PTRRELOC' #define PTRRELOC(x) ((typeof(x)) add_reloc_offset((unsigned long)(x))) ^ >> arch/powerpc/lib/feature-fixups.c:179:16: error: '__stop___mmu_ftr_fixup' >> undeclared (first use in this function) PTRRELOC(&__stop___mmu_ftr_fixup)); ^ arch/powerpc/include/asm/setup.h:22:30: note: in definition of macro 'PTRRELOC' #define PTRRELOC(x) ((typeof(x)) add_reloc_offset((unsigned long)(x))) ^ arch/powerpc/lib/feature-fixups.c: In function 'setup_feature_keys': >> arch/powerpc/lib/feature-fixups.c:202:2: error: implicit declaration of >> function 'mmu_feature_keys_init' [-Werror=implicit-function-declaration] mmu_feature_keys_init(); ^~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors vim +/__start___mmu_ftr_fixup +178 arch/powerpc/lib/feature-fixups.c 362e7701 Michael Ellerman 2008-06-24 18 #include <linux/string.h> 362e7701 Michael Ellerman 2008-06-24 19 #include <linux/init.h> 51c52e86 Michael Ellerman 2008-06-24 20 #include <asm/cputable.h> 51c52e86 Michael Ellerman 2008-06-24 21 #include <asm/code-patching.h> d715e433 Anton Blanchard 2011-11-14 22 #include <asm/page.h> d715e433 Anton Blanchard 2011-11-14 23 #include <asm/sections.h> 9402c684 Benjamin Herrenschmidt 2016-07-05 @24 #include <asm/setup.h> 9402c684 Benjamin Herrenschmidt 2016-07-05 25 #include <asm/firmware.h> 51c52e86 Michael Ellerman 2008-06-24 26 51c52e86 Michael Ellerman 2008-06-24 27 struct fixup_entry { 51c52e86 Michael Ellerman 2008-06-24 28 unsigned long mask; 51c52e86 Michael Ellerman 2008-06-24 29 unsigned long value; 51c52e86 Michael Ellerman 2008-06-24 30 long start_off; 51c52e86 Michael Ellerman 2008-06-24 31 long end_off; fac23fe4 Michael Ellerman 2008-06-24 32 long alt_start_off; fac23fe4 Michael Ellerman 2008-06-24 33 long alt_end_off; 51c52e86 Michael Ellerman 2008-06-24 34 }; 51c52e86 Michael Ellerman 2008-06-24 35 9b1a735d Michael Ellerman 2008-06-24 36 static unsigned int *calc_addr(struct fixup_entry *fcur, long offset) 51c52e86 Michael Ellerman 2008-06-24 37 { 9b1a735d Michael Ellerman 2008-06-24 38 /* 9b1a735d Michael Ellerman 2008-06-24 39 * We store the offset to the code as a negative offset from 9b1a735d Michael Ellerman 2008-06-24 40 * the start of the alt_entry, to support the VDSO. This 9b1a735d Michael Ellerman 2008-06-24 41 * routine converts that back into an actual address. 9b1a735d Michael Ellerman 2008-06-24 42 */ 9b1a735d Michael Ellerman 2008-06-24 43 return (unsigned int *)((unsigned long)fcur + offset); 9b1a735d Michael Ellerman 2008-06-24 44 } 9b1a735d Michael Ellerman 2008-06-24 45 9b1a735d Michael Ellerman 2008-06-24 46 static int patch_alt_instruction(unsigned int *src, unsigned int *dest, 9b1a735d Michael Ellerman 2008-06-24 47 unsigned int *alt_start, unsigned int *alt_end) 9b1a735d Michael Ellerman 2008-06-24 48 { 9b1a735d Michael Ellerman 2008-06-24 49 unsigned int instr; 9b1a735d Michael Ellerman 2008-06-24 50 9b1a735d Michael Ellerman 2008-06-24 51 instr = *src; 9b1a735d Michael Ellerman 2008-06-24 52 9b1a735d Michael Ellerman 2008-06-24 53 if (instr_is_relative_branch(*src)) { 9b1a735d Michael Ellerman 2008-06-24 54 unsigned int *target = (unsigned int *)branch_target(src); 9b1a735d Michael Ellerman 2008-06-24 55 9b1a735d Michael Ellerman 2008-06-24 56 /* Branch within the section doesn't need translating */ 9b1a735d Michael Ellerman 2008-06-24 57 if (target < alt_start || target >= alt_end) { 9b1a735d Michael Ellerman 2008-06-24 58 instr = translate_branch(dest, src); 9b1a735d Michael Ellerman 2008-06-24 59 if (!instr) 9b1a735d Michael Ellerman 2008-06-24 60 return 1; 9b1a735d Michael Ellerman 2008-06-24 61 } 9b1a735d Michael Ellerman 2008-06-24 62 } 9b1a735d Michael Ellerman 2008-06-24 63 9b1a735d Michael Ellerman 2008-06-24 64 patch_instruction(dest, instr); 9b1a735d Michael Ellerman 2008-06-24 65 9b1a735d Michael Ellerman 2008-06-24 66 return 0; 9b1a735d Michael Ellerman 2008-06-24 67 } 9b1a735d Michael Ellerman 2008-06-24 68 9b1a735d Michael Ellerman 2008-06-24 69 static int patch_feature_section(unsigned long value, struct fixup_entry *fcur) 9b1a735d Michael Ellerman 2008-06-24 70 { 9b1a735d Michael Ellerman 2008-06-24 71 unsigned int *start, *end, *alt_start, *alt_end, *src, *dest; 9b1a735d Michael Ellerman 2008-06-24 72 9b1a735d Michael Ellerman 2008-06-24 73 start = calc_addr(fcur, fcur->start_off); 9b1a735d Michael Ellerman 2008-06-24 74 end = calc_addr(fcur, fcur->end_off); 9b1a735d Michael Ellerman 2008-06-24 75 alt_start = calc_addr(fcur, fcur->alt_start_off); 9b1a735d Michael Ellerman 2008-06-24 76 alt_end = calc_addr(fcur, fcur->alt_end_off); 9b1a735d Michael Ellerman 2008-06-24 77 9b1a735d Michael Ellerman 2008-06-24 78 if ((alt_end - alt_start) > (end - start)) 9b1a735d Michael Ellerman 2008-06-24 79 return 1; 51c52e86 Michael Ellerman 2008-06-24 80 51c52e86 Michael Ellerman 2008-06-24 81 if ((value & fcur->mask) == fcur->value) 9b1a735d Michael Ellerman 2008-06-24 82 return 0; 51c52e86 Michael Ellerman 2008-06-24 83 9b1a735d Michael Ellerman 2008-06-24 84 src = alt_start; 9b1a735d Michael Ellerman 2008-06-24 85 dest = start; 51c52e86 Michael Ellerman 2008-06-24 86 9b1a735d Michael Ellerman 2008-06-24 87 for (; src < alt_end; src++, dest++) { 9b1a735d Michael Ellerman 2008-06-24 88 if (patch_alt_instruction(src, dest, alt_start, alt_end)) 9b1a735d Michael Ellerman 2008-06-24 89 return 1; 51c52e86 Michael Ellerman 2008-06-24 90 } 9b1a735d Michael Ellerman 2008-06-24 91 9b1a735d Michael Ellerman 2008-06-24 92 for (; dest < end; dest++) 16c57b36 Kumar Gala 2009-02-10 93 patch_instruction(dest, PPC_INST_NOP); 9b1a735d Michael Ellerman 2008-06-24 94 9b1a735d Michael Ellerman 2008-06-24 95 return 0; 51c52e86 Michael Ellerman 2008-06-24 96 } 51c52e86 Michael Ellerman 2008-06-24 97 51c52e86 Michael Ellerman 2008-06-24 98 void do_feature_fixups(unsigned long value, void *fixup_start, void *fixup_end) 51c52e86 Michael Ellerman 2008-06-24 99 { 51c52e86 Michael Ellerman 2008-06-24 100 struct fixup_entry *fcur, *fend; 51c52e86 Michael Ellerman 2008-06-24 101 51c52e86 Michael Ellerman 2008-06-24 102 fcur = fixup_start; 51c52e86 Michael Ellerman 2008-06-24 103 fend = fixup_end; 51c52e86 Michael Ellerman 2008-06-24 104 9b1a735d Michael Ellerman 2008-06-24 105 for (; fcur < fend; fcur++) { 9b1a735d Michael Ellerman 2008-06-24 106 if (patch_feature_section(value, fcur)) { 1856c020 Michael Ellerman 2008-07-17 107 WARN_ON(1); 9b1a735d Michael Ellerman 2008-06-24 108 printk("Unable to patch feature section at %p - %p" \ 9b1a735d Michael Ellerman 2008-06-24 109 " with %p - %p\n", 9b1a735d Michael Ellerman 2008-06-24 110 calc_addr(fcur, fcur->start_off), 9b1a735d Michael Ellerman 2008-06-24 111 calc_addr(fcur, fcur->end_off), 9b1a735d Michael Ellerman 2008-06-24 112 calc_addr(fcur, fcur->alt_start_off), 9b1a735d Michael Ellerman 2008-06-24 113 calc_addr(fcur, fcur->alt_end_off)); 9b1a735d Michael Ellerman 2008-06-24 114 } 9b1a735d Michael Ellerman 2008-06-24 115 } 51c52e86 Michael Ellerman 2008-06-24 116 } 362e7701 Michael Ellerman 2008-06-24 117 2d1b2027 Kumar Gala 2008-07-02 118 void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end) 2d1b2027 Kumar Gala 2008-07-02 119 { 3d98ffbf Benjamin Herrenschmidt 2010-02-26 120 long *start, *end; 3d98ffbf Benjamin Herrenschmidt 2010-02-26 121 unsigned int *dest; 2d1b2027 Kumar Gala 2008-07-02 122 2d1b2027 Kumar Gala 2008-07-02 123 if (!(value & CPU_FTR_LWSYNC)) 2d1b2027 Kumar Gala 2008-07-02 124 return ; 2d1b2027 Kumar Gala 2008-07-02 125 2d1b2027 Kumar Gala 2008-07-02 126 start = fixup_start; 2d1b2027 Kumar Gala 2008-07-02 127 end = fixup_end; 2d1b2027 Kumar Gala 2008-07-02 128 2d1b2027 Kumar Gala 2008-07-02 129 for (; start < end; start++) { 2d1b2027 Kumar Gala 2008-07-02 130 dest = (void *)start + *start; 16c57b36 Kumar Gala 2009-02-10 131 patch_instruction(dest, PPC_INST_LWSYNC); 2d1b2027 Kumar Gala 2008-07-02 132 } 2d1b2027 Kumar Gala 2008-07-02 133 } 2d1b2027 Kumar Gala 2008-07-02 134 9402c684 Benjamin Herrenschmidt 2016-07-05 135 static void do_final_fixups(void) d715e433 Anton Blanchard 2011-11-14 136 { d715e433 Anton Blanchard 2011-11-14 137 #if defined(CONFIG_PPC64) && defined(CONFIG_RELOCATABLE) d715e433 Anton Blanchard 2011-11-14 138 int *src, *dest; d715e433 Anton Blanchard 2011-11-14 139 unsigned long length; d715e433 Anton Blanchard 2011-11-14 140 d715e433 Anton Blanchard 2011-11-14 141 if (PHYSICAL_START == 0) d715e433 Anton Blanchard 2011-11-14 142 return; d715e433 Anton Blanchard 2011-11-14 143 d715e433 Anton Blanchard 2011-11-14 144 src = (int *)(KERNELBASE + PHYSICAL_START); d715e433 Anton Blanchard 2011-11-14 145 dest = (int *)KERNELBASE; d715e433 Anton Blanchard 2011-11-14 146 length = (__end_interrupts - _stext) / sizeof(int); d715e433 Anton Blanchard 2011-11-14 147 d715e433 Anton Blanchard 2011-11-14 148 while (length--) { d715e433 Anton Blanchard 2011-11-14 149 patch_instruction(dest, *src); d715e433 Anton Blanchard 2011-11-14 150 src++; d715e433 Anton Blanchard 2011-11-14 151 dest++; d715e433 Anton Blanchard 2011-11-14 152 } d715e433 Anton Blanchard 2011-11-14 153 #endif d715e433 Anton Blanchard 2011-11-14 154 } d715e433 Anton Blanchard 2011-11-14 155 a28e46f1 Michael Ellerman 2016-07-26 156 static unsigned long __initdata saved_cpu_features; a28e46f1 Michael Ellerman 2016-07-26 157 static unsigned int __initdata saved_mmu_features; a28e46f1 Michael Ellerman 2016-07-26 158 #ifdef CONFIG_PPC64 a28e46f1 Michael Ellerman 2016-07-26 159 static unsigned long __initdata saved_firmware_features; a28e46f1 Michael Ellerman 2016-07-26 160 #endif a28e46f1 Michael Ellerman 2016-07-26 161 a28e46f1 Michael Ellerman 2016-07-26 162 void __init apply_feature_fixups(void) 9402c684 Benjamin Herrenschmidt 2016-07-05 163 { 2c0f9951 Benjamin Herrenschmidt 2016-08-02 164 struct cpu_spec *spec = PTRRELOC(*PTRRELOC(&cur_cpu_spec)); 9402c684 Benjamin Herrenschmidt 2016-07-05 165 a28e46f1 Michael Ellerman 2016-07-26 166 *PTRRELOC(&saved_cpu_features) = spec->cpu_features; a28e46f1 Michael Ellerman 2016-07-26 167 *PTRRELOC(&saved_mmu_features) = spec->mmu_features; a28e46f1 Michael Ellerman 2016-07-26 168 9402c684 Benjamin Herrenschmidt 2016-07-05 169 /* 9402c684 Benjamin Herrenschmidt 2016-07-05 170 * Apply the CPU-specific and firmware specific fixups to kernel text 9402c684 Benjamin Herrenschmidt 2016-07-05 171 * (nop out sections not relevant to this CPU or this firmware). 9402c684 Benjamin Herrenschmidt 2016-07-05 172 */ 9402c684 Benjamin Herrenschmidt 2016-07-05 173 do_feature_fixups(spec->cpu_features, 9402c684 Benjamin Herrenschmidt 2016-07-05 174 PTRRELOC(&__start___ftr_fixup), 9402c684 Benjamin Herrenschmidt 2016-07-05 175 PTRRELOC(&__stop___ftr_fixup)); 9402c684 Benjamin Herrenschmidt 2016-07-05 176 9402c684 Benjamin Herrenschmidt 2016-07-05 177 do_feature_fixups(spec->mmu_features, 9402c684 Benjamin Herrenschmidt 2016-07-05 @178 PTRRELOC(&__start___mmu_ftr_fixup), 9402c684 Benjamin Herrenschmidt 2016-07-05 @179 PTRRELOC(&__stop___mmu_ftr_fixup)); 9402c684 Benjamin Herrenschmidt 2016-07-05 180 9402c684 Benjamin Herrenschmidt 2016-07-05 181 do_lwsync_fixups(spec->cpu_features, 9402c684 Benjamin Herrenschmidt 2016-07-05 182 PTRRELOC(&__start___lwsync_fixup), 9402c684 Benjamin Herrenschmidt 2016-07-05 183 PTRRELOC(&__stop___lwsync_fixup)); 9402c684 Benjamin Herrenschmidt 2016-07-05 184 9402c684 Benjamin Herrenschmidt 2016-07-05 185 #ifdef CONFIG_PPC64 a28e46f1 Michael Ellerman 2016-07-26 186 saved_firmware_features = powerpc_firmware_features; 9402c684 Benjamin Herrenschmidt 2016-07-05 187 do_feature_fixups(powerpc_firmware_features, 9402c684 Benjamin Herrenschmidt 2016-07-05 188 &__start___fw_ftr_fixup, &__stop___fw_ftr_fixup); 9402c684 Benjamin Herrenschmidt 2016-07-05 189 #endif 9402c684 Benjamin Herrenschmidt 2016-07-05 190 do_final_fixups(); 97f6e0cc Benjamin Herrenschmidt 2016-08-10 191 } 309b315b Aneesh Kumar K.V 2016-07-23 192 97f6e0cc Benjamin Herrenschmidt 2016-08-10 193 void __init setup_feature_keys(void) 97f6e0cc Benjamin Herrenschmidt 2016-08-10 194 { 309b315b Aneesh Kumar K.V 2016-07-23 195 /* 309b315b Aneesh Kumar K.V 2016-07-23 196 * Initialise jump label. This causes all the cpu/mmu_has_feature() 309b315b Aneesh Kumar K.V 2016-07-23 197 * checks to take on their correct polarity based on the current set of 309b315b Aneesh Kumar K.V 2016-07-23 198 * CPU/MMU features. 309b315b Aneesh Kumar K.V 2016-07-23 199 */ 309b315b Aneesh Kumar K.V 2016-07-23 200 jump_label_init(); 4db73271 Kevin Hao 2016-07-23 201 cpu_feature_keys_init(); c12e6f24 Kevin Hao 2016-07-23 @202 mmu_feature_keys_init(); 9402c684 Benjamin Herrenschmidt 2016-07-05 203 } 9402c684 Benjamin Herrenschmidt 2016-07-05 204 a28e46f1 Michael Ellerman 2016-07-26 205 static int __init check_features(void) :::::: The code at line 178 was first introduced by commit :::::: 9402c684613163888714df0955fa1f17142b08bf powerpc: Factor do_feature_fixup calls :::::: TO: Benjamin Herrenschmidt <b...@kernel.crashing.org> :::::: CC: Michael Ellerman <m...@ellerman.id.au> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip