powerpc/cpm: Clear muram before it is in use.
authorHongjun Chen <[email protected]>
Fri, 26 Mar 2010 08:43:46 +0000 (16:43 +0800)
committerKumar Gala <[email protected]>
Sat, 22 Oct 2011 21:15:50 +0000 (16:15 -0500)
We need to ensure that MURAM is in a known and cleared out state before
using it as the bootloader could have utilized it from its own purposes
and left it in an unknown state.

If we don't clear it out we've seen issues with UCC ethernet:
* Multi ethernet interfaces can't work simultanously.
* Multi up/down Ethernet interfaces will halt these ports.
* UCC1 RGMII can't work when kernel boots from some hosts.

Signed-off-by: Kai.Jiang <[email protected]>
Signed-off-by: Hongjun Chen <[email protected]>
Signed-off-by: Kumar Gala <[email protected]>
arch/powerpc/sysdev/cpm_common.c

index d55d0ad0deab937f28780e1673052b96d3b44439..8db10bb9004224284f5861f7212a26e239fffe30 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Author: Scott Wood <[email protected]>
  *
- * Copyright 2007 Freescale Semiconductor, Inc.
+ * Copyright 2007-2008,2010 Freescale Semiconductor, Inc.
  *
  * Some parts derived from commproc.c/cpm2_common.c, which is:
  * Copyright (c) 1997 Dan error_act ([email protected])
@@ -146,6 +146,7 @@ unsigned long cpm_muram_alloc(unsigned long size, unsigned long align)
        spin_lock_irqsave(&cpm_muram_lock, flags);
        cpm_muram_info.alignment = align;
        start = rh_alloc(&cpm_muram_info, size, "commproc");
+       memset(cpm_muram_addr(start), 0, size);
        spin_unlock_irqrestore(&cpm_muram_lock, flags);
 
        return start;