Hi John, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linux/master] [also build test WARNING on linus/master v5.8-rc4 next-20200707] [cannot apply to pmladek/for-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/John-Ogness/printk-replace-ringbuffer/20200707-230114 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 9ebcfadb0610322ac537dd7aa5d9cbc2b2894c68 config: arm-randconfig-r014-20200707 (attached as .config) compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 02946de3802d3bc65bc9f2eb9b8d4969b5a7add8) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> kernel/printk/printk.c:1146:10: warning: format specifies type 'unsigned long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat] new_descs_size); ^~~~~~~~~~~~~~ include/linux/printk.h:338:33: note: expanded from macro 'pr_err' printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ 1 warning generated. vim +1146 kernel/printk/printk.c 1090 1091 void __init setup_log_buf(int early) 1092 { 1093 unsigned int new_descs_count; 1094 struct prb_desc *new_descs; 1095 struct printk_info info; 1096 struct printk_record r; 1097 size_t new_descs_size; 1098 unsigned long flags; 1099 char *new_dict_buf; 1100 char *new_log_buf; 1101 unsigned int free; 1102 u64 seq; 1103 1104 /* 1105 * Some archs call setup_log_buf() multiple times - first is very 1106 * early, e.g. from setup_arch(), and second - when percpu_areas 1107 * are initialised. 1108 */ 1109 if (!early) 1110 set_percpu_data_ready(); 1111 1112 if (log_buf != __log_buf) 1113 return; 1114 1115 if (!early && !new_log_buf_len) 1116 log_buf_add_cpu(); 1117 1118 if (!new_log_buf_len) 1119 return; 1120 1121 new_descs_count = new_log_buf_len >> PRB_AVGBITS; 1122 if (new_descs_count == 0) { 1123 pr_err("new_log_buf_len: %lu too small\n", new_log_buf_len); 1124 return; 1125 } 1126 1127 new_log_buf = memblock_alloc(new_log_buf_len, LOG_ALIGN); 1128 if (unlikely(!new_log_buf)) { 1129 pr_err("log_buf_len: %lu text bytes not available\n", 1130 new_log_buf_len); 1131 return; 1132 } 1133 1134 new_dict_buf = memblock_alloc(new_log_buf_len, LOG_ALIGN); 1135 if (unlikely(!new_dict_buf)) { 1136 pr_err("log_buf_len: %lu dict bytes not available\n", 1137 new_log_buf_len); 1138 memblock_free(__pa(new_log_buf), new_log_buf_len); 1139 return; 1140 } 1141 1142 new_descs_size = new_descs_count * sizeof(struct prb_desc); 1143 new_descs = memblock_alloc(new_descs_size, LOG_ALIGN); 1144 if (unlikely(!new_descs)) { 1145 pr_err("log_buf_len: %lu desc bytes not available\n", > 1146 new_descs_size); 1147 memblock_free(__pa(new_dict_buf), new_log_buf_len); 1148 memblock_free(__pa(new_log_buf), new_log_buf_len); 1149 return; 1150 } 1151 1152 prb_rec_init_rd(&r, &info, 1153 &setup_text_buf[0], sizeof(setup_text_buf), 1154 &setup_dict_buf[0], sizeof(setup_dict_buf)); 1155 1156 prb_init(&printk_rb_dynamic, 1157 new_log_buf, order_base_2(new_log_buf_len), 1158 new_dict_buf, order_base_2(new_log_buf_len), 1159 new_descs, order_base_2(new_descs_count)); 1160 1161 logbuf_lock_irqsave(flags); 1162 1163 log_buf_len = new_log_buf_len; 1164 log_buf = new_log_buf; 1165 new_log_buf_len = 0; 1166 1167 free = __LOG_BUF_LEN; 1168 prb_for_each_record(0, &printk_rb_static, seq, &r) 1169 free -= add_to_rb(&printk_rb_dynamic, &r); 1170 1171 /* 1172 * This is early enough that everything is still running on the 1173 * boot CPU and interrupts are disabled. So no new messages will 1174 * appear during the transition to the dynamic buffer. 1175 */ 1176 prb = &printk_rb_dynamic; 1177 1178 logbuf_unlock_irqrestore(flags); 1179 1180 if (seq != prb_next_seq(&printk_rb_static)) { 1181 pr_err("dropped %llu messages\n", 1182 prb_next_seq(&printk_rb_static) - seq); 1183 } 1184 1185 pr_info("log_buf_len: %u bytes\n", log_buf_len); 1186 pr_info("early log buf free: %u(%u%%)\n", 1187 free, (free * 100) / __LOG_BUF_LEN); 1188 } 1189 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org