Skip to content

Commit

Permalink
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/…
Browse files Browse the repository at this point in the history
…davem/sparc-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Fix memory controller register access when non-SMP.
  • Loading branch information
Linus Torvalds committed Dec 7, 2007
2 parents bbce0b5 + b332b8b commit f3656b9
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions arch/sparc64/kernel/chmc.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/* $Id: chmc.c,v 1.4 2002/01/08 16:00:14 davem Exp $
* memctrlr.c: Driver for UltraSPARC-III memory controller.
/* memctrlr.c: Driver for UltraSPARC-III memory controller.
*
* Copyright (C) 2001 David S. Miller (davem@redhat.com)
* Copyright (C) 2001, 2007 David S. Miller (davem@davemloft.net)
*/

#include <linux/module.h>
Expand All @@ -16,6 +15,7 @@
#include <linux/init.h>
#include <asm/spitfire.h>
#include <asm/chmctrl.h>
#include <asm/cpudata.h>
#include <asm/oplib.h>
#include <asm/prom.h>
#include <asm/io.h>
Expand Down Expand Up @@ -242,8 +242,11 @@ int chmc_getunumber(int syndrome_code,
*/
static u64 read_mcreg(struct mctrl_info *mp, unsigned long offset)
{
unsigned long ret;
int this_cpu = get_cpu();
unsigned long ret, this_cpu;

preempt_disable();

this_cpu = real_hard_smp_processor_id();

if (mp->portid == this_cpu) {
__asm__ __volatile__("ldxa [%1] %2, %0"
Expand All @@ -255,7 +258,8 @@ static u64 read_mcreg(struct mctrl_info *mp, unsigned long offset)
: "r" (mp->regs + offset),
"i" (ASI_PHYS_BYPASS_EC_E));
}
put_cpu();

preempt_enable();

return ret;
}
Expand Down

0 comments on commit f3656b9

Please sign in to comment.