I am collecting information about single event upsets for my report at the university.
I found plenty of helpful articles for my theme, but I got stuck with operating systems' resistance against SEU. I chose Linux as one that's being used in real-time systems.
I think this OS have some installable or built-in fault-tolerance module that covers most problems. But I can't find any fresh articles/documents on how it works in Linux (not hardware).
Let me share what I found:

  • This one is some AD for FT-Linux from 1995;
  • This and this are too complex, and they were made based on Popcorn Linux.

I am sure that the principles are the same, but I'd like to find some code examples with commentaries from the Linux source (if it is implemented in the core) or utility names for FT in Linux. And how to run it.
Or maybe all FT systems are commercial and non-opensource? Or they don't have enough attention?

New contributor
7isenko is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
  • What, precisely, do you mean by "single event upset"? Are you talking about "interrupts"?
    – waltinator
    Nov 24 at 18:46
  • The first link doesn’t explicit a fail tolerant Linux kernel. The other point to Popcorn-Linux where we can find the kernel here : github.com/ssrg-vt/mklinux-ft/tree/sched_rep in the kernel subfolder, we can find multiple ft_ files related to fail tolerancy. See also popcornlinux.org/index.php/ft-linux. I guess it woulf be difficult to extract a couple representative line of code. Nov 24 at 18:59
  • @waltinator: An SEU (wikipedia) is when a cosmic ray (or whatever) flips a bit of data somewhere, often in RAM. It's what hardware ECC DRAM is designed to correct. bluesmoke.sourceforge.net is Linux's Error Detection And Correction (EDAC) project for hardware that has error detection. Nov 24 at 23:29

The Linux kernel does have built-in fault tolerance against single event upsets or SEUs, but it doesn't cover "most problems". It is only implemented in a specific FPGA driver.

In an email chain on the Linux Kernel Mailing List, found here: http://lkml.iu.edu/hypermail/linux/kernel/1810.2/06092.html it appears that SEU tolerance was added to the kernel a few years ago, but only for Zynq FPGA. From what I can gather, a block of code (seen below) was added to drivers/fpga/zynq-fpga.c that switches from PCAP to ICAP. One of the usecases Mike Looijmans mentioned of ICAP is its resistance to SEUs via "self-repairing logic".

/* Release 'PR' control back to the ICAP */
zynq_fpga_write(priv, CTRL_OFFSET,
zynq_fpga_read(priv, CTRL_OFFSET) & ~CTRL_PCAP_PR_MASK);

I understand the mailing list contents better than the code, but I will do my best to clarify on anything that confuses.

New contributor
ZedHeadTed is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

7isenko is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.