lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 14 Mar 2018 20:18:15 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Ivan Gorinov <ivan.gorinov@...el.com>
Cc:     kbuild-all@...org, Thomas Gleixner <tglx@...utronix.de>,
        Frank Rowand <frowand.list@...il.com>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Ingo Molnar <mingo@...hat.com>,
        Rob Herring <robh+dt@...nel.org>,
        Mark Rutland <mark.rutland@....com>
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

Download attachment ".config.gz" of type "application/gzip" (29380 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ