So we've now got 4 sets of kernel source code from shipping PLX-NAS7820/7821 (aka ox820) machines to look at.
From the release dates and the kernel comments, they form a timeline view of the PLX support patches for the linux kernel.
1) Cloud Engines Pogoplug V3 (kernel 2.6.31.6)
2) Iomega HMND Cloud Edition (kernel 2.6.31.14)
3) Silverstone DC01 (kernel 2.6.31.14)
4) Medion Life P89626 aka ZyXEL STG212 (kernel 2.6.31.14)
One thing that clearly comes across to me is that PLX is having a problem fixing a nasty bug relating to lost interrupts.
AFAIK, the ARM11 architecture doesn't synchronize I-cache and D-cache contents in hardware, they do it in software by invalidating the cache contents whenever they think that they need to.
This gets complicated when you've got a SoC doing DMA in the background and changing memory contents without telling the CPU.
This gets much, much more complicated on a dual-core processor like the ox820 where each core has different I-cache and D-cache contents.
PLX seem to be using FIQs to have one processor core tell the other that it needs to clear some/all of its cache.
There are a LOT of continual changes in the kernel code related to this system. There seems to be a problem with some of the FIQs getting lost and possibly resulting in cache coherency problems.
Those cache problems would lead to what ZyXEL quaintly calls "instability" in the comment where they disable the 2nd CPU core on the STG212.
So where are we at with relation to the kernel used by ALARM?
Well, the 2.6.31.6 kernel and it PLX patches are hopelessly out-of-date. There are a lot of fixes in the later kernel sources especially in relation to using the SATA port. You should definitely avoid formatting a partition as EXT4 with this kernel.
The Iomega HMNDCE has been shipping for a while and seems to be stable. It doesn't include all the latest fixes or support the newer devices that the DC01 or STG212 kernel code do, but then again, neither the Pogoplug nor Iomega actually use those devices.
The Silverstone DC01 kernel code is at an interesting midway point between the Iomage and the ZyXEL kernel code.
They have removed some of the safety code that is in both the Iomega and ZyXEL kernels, but have added at least 1 new different safety check that is in neither of the others.
The DC01 itself is new enough that we really don't know about it's stability.
The ZyXEL kernel code has to be looked at with a little wariness. While they actually shipped with most of the safety checks disabled, they also shipped their device with one of the two CPU cores also disabled.
On the other hand the ZyXEL kernel code also includes a LOT of new changes related to attempts to fix the problem of lost FIQs, and so any newer code that we see from PLX will probably look more like the ZyXEL kernel than any of the older kernels.