diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-02-06 22:29:43 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-02-08 03:52:35 -0500 |
commit | 592a607bbc053bc6f614a0e619326009f4b3829e (patch) | |
tree | f6deedbe40c525c8fe088e08f620cd76cb865591 /include/asm-powerpc/pmac_feature.h | |
parent | a4ffc0a0b240a29cbe489f6db9dae112a49ef1c1 (diff) |
[POWERPC] Disable G5 NAP mode during SMU commands on U3
It appears that with the U3 northbridge, if the processor is in NAP
mode the whole time while waiting for an SMU command to complete,
then the SMU will fail. It could be related to the weird backward
mechanism the SMU uses to get to system memory via i2c to the
northbridge that doesn't operate properly when the said bridge is
in napping along with the CPU. That is on U3 at least, U4 doesn't
seem to be affected.
This didn't show before NO_HZ as the timer wakeup was enough to make
it work it seems, but that is no longer the case.
This fixes it by disabling NAP mode on those machines while
an SMU command is in flight.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc/pmac_feature.h')
-rw-r--r-- | include/asm-powerpc/pmac_feature.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/asm-powerpc/pmac_feature.h b/include/asm-powerpc/pmac_feature.h index 26bcb0aa164a..877c35a4356e 100644 --- a/include/asm-powerpc/pmac_feature.h +++ b/include/asm-powerpc/pmac_feature.h | |||
@@ -392,6 +392,14 @@ extern u32 __iomem *uninorth_base; | |||
392 | #define UN_BIS(r,v) (UN_OUT((r), UN_IN(r) | (v))) | 392 | #define UN_BIS(r,v) (UN_OUT((r), UN_IN(r) | (v))) |
393 | #define UN_BIC(r,v) (UN_OUT((r), UN_IN(r) & ~(v))) | 393 | #define UN_BIC(r,v) (UN_OUT((r), UN_IN(r) & ~(v))) |
394 | 394 | ||
395 | /* Uninorth variant: | ||
396 | * | ||
397 | * 0 = not uninorth | ||
398 | * 1 = U1.x or U2.x | ||
399 | * 3 = U3 | ||
400 | * 4 = U4 | ||
401 | */ | ||
402 | extern int pmac_get_uninorth_variant(void); | ||
395 | 403 | ||
396 | #endif /* __ASM_POWERPC_PMAC_FEATURE_H */ | 404 | #endif /* __ASM_POWERPC_PMAC_FEATURE_H */ |
397 | #endif /* __KERNEL__ */ | 405 | #endif /* __KERNEL__ */ |