New IT forum
27 June 2022, 12:40:59 pm *
Welcome, %1$s. Please login or register.

: PiHub now in stock.
 
Pages: [1]

Author Topic: Sheevaplug CPU versions A0 & A1  (Read 16925 times)

NewIT_Marcus

  • Hero Member
  • *****
  • Posts: 960
Sheevaplug CPU versions A0 & A1
« on: 15 August 2010, 05:23:42 pm »

The newest Sheevaplugs that we have received are using a different CPU revision (A1) to the previous Sheevaplugs (A0).

As far as I understand it, the A1 versions can be identified by "0301B" on the informational panel on the underside of the Sheevaplug:



At this stage, I believe that we have only non-eSATA Sheevaplugs with this processor, and that the issue only applies to Sheevaplugs despatched in the last couple of days.

This CPU can cause problems for the unwary, see for instance:

http://plugcomputer.org/plugforum/index.php?topic=2002.0

Note that /proc/cpuinfo doesn't seem to be telling us everything we'd probably like to know; I don't have an original ex-factory plug to examine right now, but one of our multi-boots gives this:

Code: [Select]
# cat /proc/cpuinfo        
Processor : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS : 1192.75
Features : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1

Hardware : Marvell SheevaPlug Reference Board
Revision : 0000
Serial : 0000000000000000


And the newer plug, ex-factory, gives this:

Code: [Select]
# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 1 (v5l)
BogoMIPS : 1192.75
Features : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 16384
I assoc : 4
I line length : 32
I sets : 128
D size : 16384
D assoc : 4
D line length : 32
D sets : 128

Hardware : Feroceon-KW
Revision : 0000
Serial : 0000000000000000

Likewise, dmesg gives us some info on our multiboot plugs, but not on the ex-factory version. On a multiboot system, use dmesg | grep Kirkwood to discover, if you can:

Original Sheevaplug (LEDs are green and blue/yellow):
Code: [Select]
# dmesg | grep Kirkwood
Kirkwood: MV88F6281-A0, TCLK=200000000.


0301B Sheevaplug (LEDs are orange/green and blue/yellow):
Code: [Select]
# dmesg | grep Kirkwood
Kirkwood: MV88F6281-A1, TCLK=200000000

To summarise the problem; an incompatible kernel is likely to cause severe problems on the newer Sheevaplugs. For example, the plug will not boot if flashed with the kernel provided with the original version of the "installer". The solution proved at the plugcomputer forum states that kernel versions 2.6.32 and above are fine (it doesn't state exactly at what version the necessary code changes were introduced). We also received these patches from Globalscale, if anyone wishes to apply it against an earlier kernel version:

Code: [Select]
commit aec1bad326a99a8b0860fa9d518985ee388c9391
Author: Siddarth Gore <[email protected]>
Date:   Tue Jun 9 14:41:02 2009 +0530

    [ARM] Kirkwood: Add support for 6281-A1
  
    Signed-off-by: Siddarth Gore <[email protected]>
    Signed-off-by: Nicolas Pitre <[email protected]>

diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index 0f69198..0acb61f 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -838,7 +838,8 @@ int __init kirkwood_find_tclk(void)
        u32 dev, rev;
 
        kirkwood_pcie_id(&dev, &rev);
-       if (dev == MV88F6281_DEV_ID && rev == MV88F6281_REV_A0)
+       if (dev == MV88F6281_DEV_ID && (rev == MV88F6281_REV_A0 ||
+                                       rev == MV88F6281_REV_A1))
                return 200000000;
 
        return 166666667;
@@ -872,6 +873,8 @@ static char * __init kirkwood_id(void)
                        return "MV88F6281-Z0";
                else if (rev == MV88F6281_REV_A0)
                        return "MV88F6281-A0";
+               else if (rev == MV88F6281_REV_A1)
+                       return "MV88F6281-A1";
                else
                        return "MV88F6281-Rev-Unsupported";
        } else if (dev == MV88F6192_DEV_ID) {
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirk
index 07af858..54c1327 100644
--- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h
+++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h
@@ -101,6 +101,7 @@
 #define MV88F6281_DEV_ID       0x6281
 #define MV88F6281_REV_Z0       0
 #define MV88F6281_REV_A0       2
+#define MV88F6281_REV_A1       3
 
 #define MV88F6192_DEV_ID       0x6192
 #define MV88F6192_REV_Z0       0
« Last Edit: 29 September 2010, 07:32:57 am by NewIT_Marcus »
Logged

NewIT_Marcus

  • Hero Member
  • *****
  • Posts: 960
Re: Shevaplug CPU versions A0 & A1
« Reply #1 on: 12 September 2010, 04:58:55 pm »

The installer can be used on an A1 plug but only after upgrading uImage on the USB stick. I had a lot of failures initially when I attempted this, and I'm not sure if this was because I had the misfortune of testing unsuitable kernels, or because of some other factor. (I was testing changes to rcS in the initrd as well (for our benefit, to give an (optional) menu for selecting the rootfs).

Our solution was to use our own 2.6.30.2 uImage with A1 patches. The advantage of doing it this way (for us) is that an eSATA kernel may recognise the eSATA device and make it more complicated to copy the rootfs from /dev/sda1 to NAND. Therefore it's convenient to have a non-eSATA kernel, but one that can also work with the A1 cpu revision.

Once the installer has completed, an alternative kernel can be selected from sheeva.with-linux.com if required. And it's possible that 2.6.32 and later may work on the USB stick anyway (renamed to simply uImage).

On a related topic, 2.6.35 kernels almost always report every NAND block to be a bad block. It's a bug in the kernel - there's a post on the plug computer forum about it - and this is one of the reasons that we're sticking with 2.6.34.6 (on our non-eSATA A1 multiboot sheevaplugs) for the time being.
Logged

NewIT_Marcus

  • Hero Member
  • *****
  • Posts: 960
Re: Sheevaplug CPU versions A0 & A1
« Reply #2 on: 31 October 2010, 06:33:10 pm »

The newest Sheevaplugs that we have received are using a different CPU revision (A1) to the previous Sheevaplugs (A0).

As far as I understand it, the A1 versions can be identified by "0301B" on the informational panel on the underside of the Sheevaplug:


This doesn't seem to be a useful method for verifying the cpu revision. We now have some eSATA plugs with the "0301B" info on the underside, but the processor is A0 (ie "0301B" is not an indicator of processor, it is a co-incidental change - but it is potentially helpful if you have a non-eSATA Sheevaplug from us).



I found an ex-factory (Ubuntu 9.04) Sheevaplug with an A0 processor so here is confirmation that cpuinfo can be used to identify the version. This works regardless of the O/S.

Info for A0 cpu:

Code: [Select]
[email protected]:~# cat /proc/cpuinfo
Processor : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS : 1192.75
Features : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1

Hardware : Marvell SheevaPlug Reference Board
Revision : 0000
Serial : 0000000000000000

Info for A1 cpu:

Code: [Select]
# cat /proc/cpuinfo
Processor : ARM926EJ-S rev 1 (v5l)
BogoMIPS : 1192.75
Features : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant : 0x2
CPU part : 0x131
CPU revision : 1
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 16384
I assoc : 4
I line length : 32
I sets : 128
D size : 16384
D assoc : 4
D line length : 32
D sets : 128

Hardware : Feroceon-KW
Revision : 0000
Serial : 0000000000000000


It's worth checking dmesg, but depending upon the O/S the information can be unclear; grepping for A0, or A1, or Kirkwood, or ARM, or CPU may provide some useful info (or it may produce nothing). Remember, you are looking for A0 or A1, not the cpu "revision", which right now is always 1.
Logged
Pages: [1]
 
 

Powered by MySQL Powered by PHP SMF 2.0.10 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!