On Tue, Jun 15, 2021 at 11:55:19AM -0700, Jane Chu wrote: > 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(),
Yes, when a driver *knows* the type must follow certain rules, it requests it. > perhaps the pmem case needs another way to suppress prefetch? > > Your thoughts? The way to think about this problem is, who did the ioremap call for the ioremap'd area? That's the driver that needs changing. Luis
