diff options
| author | Dan Malek <dan@embeddededge.com> | 2005-05-01 11:58:42 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-01 11:58:42 -0400 |
| commit | 1bdacf88ebd7969fecbbf4c5b388cc094871222e (patch) | |
| tree | 6c0f03d688d65361aaf4d9d6f8ecdac172cf1aeb | |
| parent | d5812a77e5803468a5033be91af978be0f7a17d9 (diff) | |
[PATCH] ppc32: workaround for spurious IRQs on PQ2
There is a problem with large amounts of spurious IRQs on PowerPC 82xx
systems.
The problem is corrected by adding sync at the end of cpm2_mask_and_ack.
This may be needed on 8xx as well but has not yet been confirmed.
Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
Signed-off-by: Dan Malek <dan@embeddedalley.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | arch/ppc/syslib/cpm2_pic.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/ppc/syslib/cpm2_pic.c b/arch/ppc/syslib/cpm2_pic.c index 954b07fc1df3..c867be6981cb 100644 --- a/arch/ppc/syslib/cpm2_pic.c +++ b/arch/ppc/syslib/cpm2_pic.c | |||
| @@ -107,6 +107,11 @@ static void cpm2_end_irq(unsigned int irq_nr) | |||
| 107 | simr = &(cpm2_immr->im_intctl.ic_simrh); | 107 | simr = &(cpm2_immr->im_intctl.ic_simrh); |
| 108 | ppc_cached_irq_mask[word] |= 1 << bit; | 108 | ppc_cached_irq_mask[word] |= 1 << bit; |
| 109 | simr[word] = ppc_cached_irq_mask[word]; | 109 | simr[word] = ppc_cached_irq_mask[word]; |
| 110 | /* | ||
| 111 | * Work around large numbers of spurious IRQs on PowerPC 82xx | ||
| 112 | * systems. | ||
| 113 | */ | ||
| 114 | mb(); | ||
| 110 | } | 115 | } |
| 111 | } | 116 | } |
| 112 | 117 | ||
