[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
what to do on memory or cache errors?
besides panicing, of course.
This is going to involve a lot of help from UVM.
It seems that uvm_fault is not the right place to handle this. Maybe we need a
void uvm_page_error(paddr_t pa, int etype);
where etype would indicate if this was a memory or cache fault, was the cache
line dirty, etc. If uvm_page_error can't "correct" the error, it would panic.
Interactions with copyin/copyout will also need to be addressed.
Preemptively, we could have a thread force dirty cache lines to memory if
they've been in L2 "too long" (thereby reducing the problem to an ECC error on
a clean cache line which means you just toss the cache-line contents.) We can
also have a thread that reads all of memory (slowly) thereby causing any single
bit errors to be corrected before they become double-bit errors.
I'm not familiar enough with UVM internals to actually know what to do but I
hope someone else reading this is.
Main Index |
Thread Index |