Messages in this thread | | | Date | Wed, 14 Mar 2018 20:18:15 +0800 | From | kbuild test robot <> | Subject | Re: [PATCH v5 2/2] x86/devicetree: Use CPU description from Device Tree |
| |
Hi Ivan,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v4.16-rc4] [also build test ERROR on next-20180314] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Ivan-Gorinov/x86-devicetree-Enable-multiprocessing/20180314-192547 config: i386-randconfig-x012-201810 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
arch/x86/kernel/devicetree.c: In function 'dtb_cpu_setup': arch/x86/kernel/devicetree.c:139:6: warning: unused variable 'ret' [-Wunused-variable] int ret; ^~~ arch/x86/kernel/devicetree.c: In function 'x86_dtb_init': >> arch/x86/kernel/devicetree.c:314:19: error: lvalue required as left operand of assignment smp_found_config = 1; ^
vim +314 arch/x86/kernel/devicetree.c
132 133 static void __init dtb_cpu_setup(void) 134 { 135 struct device_node *dn; 136 const void *prop; 137 int prop_bytes; 138 int apic_id, version; > 139 int ret; 140 141 version = GET_APIC_VERSION(apic_read(APIC_LVR)); 142 for_each_node_by_type(dn, "cpu") { 143 prop = of_get_property(dn, "reg", &prop_bytes); 144 if (!prop || prop_bytes < sizeof(u32)) { 145 pr_warn("%pOF: missing local APIC ID\n", dn); 146 continue; 147 } 148 apic_id = be32_to_cpup(prop); 149 generic_processor_info(apic_id, version); 150 } 151 } 152 153 static void __init dtb_lapic_setup(void) 154 { 155 #ifdef CONFIG_X86_LOCAL_APIC 156 struct device_node *dn; 157 struct resource r; 158 unsigned long lapic_addr = APIC_DEFAULT_PHYS_BASE; 159 int ret; 160 161 dn = of_find_compatible_node(NULL, NULL, "intel,ce4100-lapic"); 162 if (dn) { 163 ret = of_address_to_resource(dn, 0, &r); 164 if (WARN_ON(ret)) 165 return; 166 lapic_addr = r.start; 167 } 168 169 /* Did the boot loader setup the local APIC ? */ 170 if (!boot_cpu_has(X86_FEATURE_APIC)) { 171 if (apic_force_enable(lapic_addr)) 172 return; 173 } 174 pic_mode = 1; 175 register_lapic_address(lapic_addr); 176 #endif 177 } 178 179 #ifdef CONFIG_X86_IO_APIC 180 static unsigned int ioapic_id; 181 182 struct of_ioapic_type { 183 u32 out_type; 184 u32 trigger; 185 u32 polarity; 186 }; 187 188 static struct of_ioapic_type of_ioapic_type[] = 189 { 190 { 191 .out_type = IRQ_TYPE_EDGE_RISING, 192 .trigger = IOAPIC_EDGE, 193 .polarity = 1, 194 }, 195 { 196 .out_type = IRQ_TYPE_LEVEL_LOW, 197 .trigger = IOAPIC_LEVEL, 198 .polarity = 0, 199 }, 200 { 201 .out_type = IRQ_TYPE_LEVEL_HIGH, 202 .trigger = IOAPIC_LEVEL, 203 .polarity = 1, 204 }, 205 { 206 .out_type = IRQ_TYPE_EDGE_FALLING, 207 .trigger = IOAPIC_EDGE, 208 .polarity = 0, 209 }, 210 }; 211 212 static int dt_irqdomain_alloc(struct irq_domain *domain, unsigned int virq, 213 unsigned int nr_irqs, void *arg) 214 { 215 struct of_phandle_args *irq_data = (void *)arg; 216 struct of_ioapic_type *it; 217 struct irq_alloc_info tmp; 218 219 if (WARN_ON(irq_data->args_count < 2)) 220 return -EINVAL; 221 if (irq_data->args[1] >= ARRAY_SIZE(of_ioapic_type)) 222 return -EINVAL; 223 224 it = &of_ioapic_type[irq_data->args[1]]; 225 ioapic_set_alloc_attr(&tmp, NUMA_NO_NODE, it->trigger, it->polarity); 226 tmp.ioapic_id = mpc_ioapic_id(mp_irqdomain_ioapic_idx(domain)); 227 tmp.ioapic_pin = irq_data->args[0]; 228 229 return mp_irqdomain_alloc(domain, virq, nr_irqs, &tmp); 230 } 231 232 static const struct irq_domain_ops ioapic_irq_domain_ops = { 233 .alloc = dt_irqdomain_alloc, 234 .free = mp_irqdomain_free, 235 .activate = mp_irqdomain_activate, 236 .deactivate = mp_irqdomain_deactivate, 237 }; 238 239 static void __init dtb_add_ioapic(struct device_node *dn) 240 { 241 struct resource r; 242 int ret; 243 struct ioapic_domain_cfg cfg = { 244 .type = IOAPIC_DOMAIN_DYNAMIC, 245 .ops = &ioapic_irq_domain_ops, 246 .dev = dn, 247 }; 248 249 ret = of_address_to_resource(dn, 0, &r); 250 if (ret) { 251 printk(KERN_ERR "Can't obtain address from device node %pOF.\n", dn); 252 return; 253 } 254 mp_register_ioapic(++ioapic_id, r.start, gsi_top, &cfg); 255 } 256 257 static void __init dtb_ioapic_setup(void) 258 { 259 struct device_node *dn; 260 261 for_each_compatible_node(dn, NULL, "intel,ce4100-ioapic") 262 dtb_add_ioapic(dn); 263 264 if (nr_ioapics) { 265 of_ioapic = 1; 266 return; 267 } 268 printk(KERN_ERR "Error: No information about IO-APIC in OF.\n"); 269 } 270 #else 271 static void __init dtb_ioapic_setup(void) {} 272 #endif 273 274 static void __init dtb_apic_setup(void) 275 { 276 dtb_lapic_setup(); 277 dtb_cpu_setup(); 278 dtb_ioapic_setup(); 279 } 280 281 #ifdef CONFIG_OF_FLATTREE 282 static void __init x86_flattree_get_config(void) 283 { 284 u32 size, map_len; 285 void *dt; 286 287 if (!initial_dtb) 288 return; 289 290 map_len = max(PAGE_SIZE - (initial_dtb & ~PAGE_MASK), (u64)128); 291 292 initial_boot_params = dt = early_memremap(initial_dtb, map_len); 293 size = of_get_flat_dt_size(); 294 if (map_len < size) { 295 early_memunmap(dt, map_len); 296 initial_boot_params = dt = early_memremap(initial_dtb, size); 297 map_len = size; 298 } 299 300 unflatten_and_copy_device_tree(); 301 early_memunmap(dt, map_len); 302 } 303 #else 304 static inline void x86_flattree_get_config(void) { } 305 #endif 306 307 void __init x86_dtb_init(void) 308 { 309 x86_flattree_get_config(); 310 311 if (!of_have_populated_dt()) 312 return; 313 > 314 smp_found_config = 1;
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [unhandled content-type:application/gzip] | |