Re: linux-next: Tree for Sep 1

From: Bartlomiej Zolnierkiewicz
Date: Tue Sep 02 2014 - 09:19:36 EST



[ this time with the patch and right cc: list, sorry for the noise ]

Hi,

On Tuesday, September 02, 2014 12:07:28 AM Mark Brown wrote:
> Changes since 20140829:
>
> The akpm-current gained a conflict against Linus' tree.
>
> Non-merge commits (relative to Linus' tree): 2553
> 2686 files changed, 98625 insertions(+), 79475 deletions(-)
>
> I have created today's linux-next tree at
> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git .
> If you are tracking the linux-next tree using git, you should not use
> "git pull" to do so as that will try to merge the new linux-next release
> with the old one. You should use "git fetch" and checkout or reset to
> the new master.
>
> You can see which trees have been included by looking in the Next/Trees
> file in the source. There are also quilt-import.log and merge.log files
> in the Next directory. Between each merge, the tree was built with an
> allmodconfig for x86_64 and a multi_v7_defconfig for arm.
>
> Below is a summary of the state of the merge.
>
> I am currently merging 214 trees (counting Linus' and 30 trees of patches
> pending for Linus' tree).
>
> Stats about the size of the tree over time can be seen at
> http://neuling.org/linux-next-size.html .
>
> Status of Stephen's local build tests will be at
> http://kisskb.ellerman.id.au/linux-next . If maintainers want to give
> advice about cross compilers/configs that work, we are always open to add
> more builds.

I need following patch to make it boot on ODROID U3 board
(ARM Exynos4412 SoC based). next-20140825 was good, next-20140828
is bad (I haven't tried next-20140826 and next-20140827).

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics


From: Bartlomiej Zolnierkiewicz <b.zolnierkie@xxxxxxxxxxx>
Subject: [RFC PATCH] irqchips: gic_get_percpu_base() fix

Commit 532d0d0690d1 ("irqchips: Replace __this_cpu_ptr uses")
incorrectly converted *__this_cpu_ptr() to raw_cpu_read() instead
of *raw_cpu_ptr(). Fix it.

Fixes following panic on ODROID U3 board (using ARM Exynos4412 SoC):

Unable to handle kernel NULL pointer dereference at virtual address 00000004
pgd = c0004000
[00000004] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.17.0-rc2-next-20140828-dirty #837
task: c05ece28 ti: c05e2000 task.ti: c05e2000
PC is at gic_init_bases+0x170/0x380
LR is at gic_init_bases+0x170/0x380
pc : [<c05b12bc>] lr : [<c05b12bc>] psr: 600001d3
sp : c05e3f18 ip : 00000004 fp : c05edd7c
r10: c05ea560 r9 : c05ea488 r8 : 00000010
r7 : 00004000 r6 : c05ea93c r5 : c05ea93c r4 : c05ea93c
r3 : 2a1a0000 r2 : ffffffff r1 : 00000008 r0 : 00000000
Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel
Control: 10c5387d Table: 4000404a DAC: 00000015
Process swapper/0 (pid: 0, stack limit = 0xc05e2240)
Stack: (0xc05e3f18 to 0xc05e4000)
3f00: c05e3f88 c040b2bc
3f20: c061c3b8 ffffffff 00000004 c05e3f64 00000000 ea7a3b20 c05c5ff0 00000000
3f40: f8820000 f8810000 c05de880 00200200 c05e3f88 c05b157c 00004000 ea7a3b20
3f60: c061c3b8 00004000 ea0027c0 ea002800 c05e3f80 00000000 00100100 c05b89c8
3f80: ea002800 ea002800 c05e3f88 c05e3f88 413fc090 c05c3f50 ffffffff c0626600
3fa0: c05c3f60 eb7ff780 413fc090 00000000 00000000 c05a2e80 c05c3f50 c059e1c4
3fc0: 00000001 c059ba24 ffffffff ffffffff c059b600 00000000 00000000 c05c3f60
3fe0: c06269d4 c05ea47c c05c3f5c c05edeac 4000406a 40008074 00000000 00000000
[<c05b12bc>] (gic_init_bases) from [<c05b157c>] (gic_of_init+0xb0/0x118)
[<c05b157c>] (gic_of_init) from [<c05b89c8>] (of_irq_init+0x164/0x29c)
[<c05b89c8>] (of_irq_init) from [<c05a2e80>] (exynos_init_irq+0x8/0x50)
[<c05a2e80>] (exynos_init_irq) from [<c059e1c4>] (init_IRQ+0x24/0x74)
[<c059e1c4>] (init_IRQ) from [<c059ba24>] (start_kernel+0x200/0x384)
[<c059ba24>] (start_kernel) from [<40008074>] (0x40008074)
Code: e59f61d8 e5953594 e1a00006 e12fff33 (e5907004)
---[ end trace cb88537fdc8fa200 ]---
Kernel panic - not syncing: Attempted to kill the idle task!
---[ end Kernel panic - not syncing: Attempted to kill the idle task!

Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@xxxxxxxxxxx>
Acked-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
Cc: nicolas.pitre@xxxxxxxxxx
Cc: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx>
Cc: Christoph Lameter <cl@xxxxxxxxx>
Cc: Tejun Heo <tj@xxxxxxxxxx>
---
I'm not sure that it is a correct fix but some other *__this_cpu_ptr()
usages were not converted to raw_cpu_read() but also to *raw_cpu_ptr()
(like arch_local_irqs_enabled() in arch/tile/include/asm/irqflags.h).

drivers/irqchip/irq-gic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: b/drivers/irqchip/irq-gic.c
===================================================================
--- a/drivers/irqchip/irq-gic.c 2014-09-02 14:03:41.026758653 +0200
+++ b/drivers/irqchip/irq-gic.c 2014-09-02 14:37:04.466811546 +0200
@@ -102,7 +102,7 @@ static struct gic_chip_data gic_data[MAX
#ifdef CONFIG_GIC_NON_BANKED
static void __iomem *gic_get_percpu_base(union gic_base *base)
{
- return raw_cpu_read(base->percpu_base);
+ return *raw_cpu_ptr(base->percpu_base);
}

static void __iomem *gic_get_common_base(union gic_base *base)


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/