Skip to content

Commit

Permalink
powerpc: Set paca->data_offset = 0 for boot cpu
Browse files Browse the repository at this point in the history
In commit 407821a we assigned a poison value to the paca->data_offset.

Unfortunately with CONFIG_LOCK_STAT=y lockdep will read & write to percpu
data very early in boot, prior to us initialising the percpu areas,
leading to a crash.

We have been getting away with this because the data_offset was previously
set to zero. This causes lockdep to read & write to the initial copy of
the percpu variables, which are discarded later in boot.

Although that is "fishy", it does work, and for lock statistics it is no
big deal to discard the counts from early boot.

So set the paca->data_offset = 0 for the boot cpu paca only.

Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
Michael Ellerman authored and Benjamin Herrenschmidt committed Sep 27, 2012
1 parent e687883 commit 466921c
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions arch/powerpc/kernel/setup_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,8 @@ void __init early_setup(unsigned long dt_ptr)

/* Fix up paca fields required for the boot cpu */
get_paca()->cpu_start = 1;
/* Allow percpu accesses to "work" until we setup percpu data */
get_paca()->data_offset = 0;

/* Probe the machine type */
probe_machine();
Expand Down

0 comments on commit 466921c

Please sign in to comment.