Pardon my ignorance but Im still a little bit confused.
Are these statements correct?
1) Reading from a memory location (mmaped) with uncorrectable AND unknown error
(also called as latent error) results in a machine-check (which usually results
in a SIGBUS , default action in /sys/devices/system/machinecheck/machinecheckN).
2) Reading from a memory location (mmaped) with known error (badblock list)
also results in a SIGBUS.
3) Reading via file interface (read()) will result in IO error returned in
"both" the above cases.
4) Writing, however, in all the above cases does not result in any error.
-KK
On Monday, January 7, 2019, 5:13:25 PM EST, Dan Williams
<[email protected]> wrote:
On Mon, Jan 7, 2019 at 1:28 PM Kamal Kakri <[email protected]> wrote:
>
> Will it be OK to say that the behavior shall be same irrespective of if its
>load or store to a memory location with uncorrectable error (UCE) ?
No. Machine check exceptions occur on the consumption of poison (UCE),
stores don't consume poison.
> I see errors being reported at the granularity of blocks (badblock list). Is
> SIGBUS generated when the bad location is accessed or if the page (or block)
> having bad location is accessed?
SIGBUS is triggered preemptively if the kernel can determine that a
badblock exists in a page it is about to be faulted-in to the process.
It also triggers in the recovery path after a process has consumed
poison and the kernel was able to contain it by killing that affected
process.
_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm