powerpc/xive: Use xive_cpu->chip_id instead of looking it up again
authorBreno Leitao <breno.leitao@gmail.com>
Thu, 23 Aug 2018 23:26:39 +0000 (20:26 -0300)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 19 Sep 2018 11:58:09 +0000 (21:58 +1000)
Function xive_native_get_ipi() might use chip_id without it being
initialized, if the CPU node is not found, as reported by smatch:

  error: uninitialized symbol 'chip_id'

As suggested by Cédric, we can use xc->chip_id instead of consulting
the device tree for chip id, which is safe since xive_prepare_cpu()
should have initialized ->chip_id by the time xive_native_get_ipi() is
called.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
[mpe: Tweak change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/sysdev/xive/native.c

index 5b20a678d755b6f3e2bdb29a0bec9132521e70d4..1ca127d052a67724e172b82d80e34b3a4c6ffa1b 100644 (file)
@@ -238,20 +238,11 @@ static bool xive_native_match(struct device_node *node)
 #ifdef CONFIG_SMP
 static int xive_native_get_ipi(unsigned int cpu, struct xive_cpu *xc)
 {
-       struct device_node *np;
-       unsigned int chip_id;
        s64 irq;
 
-       /* Find the chip ID */
-       np = of_get_cpu_node(cpu, NULL);
-       if (np) {
-               if (of_property_read_u32(np, "ibm,chip-id", &chip_id) < 0)
-                       chip_id = 0;
-       }
-
        /* Allocate an IPI and populate info about it */
        for (;;) {
-               irq = opal_xive_allocate_irq(chip_id);
+               irq = opal_xive_allocate_irq(xc->chip_id);
                if (irq == OPAL_BUSY) {
                        msleep(OPAL_BUSY_DELAY_MS);
                        continue;