Hi, Dan,

It appears the fact pmem region is of WB memtype renders set_memory_uc()

to fail due to inconsistency between the requested memtype(UC-) and the cached

memtype(WB).

# cat /proc/iomem |grep -A 8 -i persist
1840000000-d53fffffff : Persistent Memory
  1840000000-1c3fffffff : namespace0.0
  5740000000-76bfffffff : namespace2.0

# cat /sys/kernel/debug/x86/pat_memtype_list
PAT memtype list:
PAT: [mem 0x0000001840000000-0x0000001c40000000] write-back
PAT: [mem 0x0000005740000000-0x00000076c0000000] write-back

[10683.418072] Memory failure: 0x1850600: recovery action for dax page: Recovered [10683.426147] x86/PAT: fsdax_poison_v1:5018 conflicting memory types 1850600000-1850601000  uncached-minus<->write-back

cscope search shows that unlike pmem, set_memory_uc() is primarily used by drivers dealing with ioremap(),

perhaps the pmem case needs another way to suppress prefetch?

Your thoughts?

thanks!

-jane



Reply via email to