Thank you Andy. You information helps to go ahead. My case is to replica data into pmem from Dram so a near-term reading is not applicable. A disable- DDIO style is good. I googled
CLWB it seems to be eADR. This is a pretty feature. Data may still sit in the cache but make sure to persist in any case of hardware failure like power off. If enabled this, it seems to make pmem to use as Dram without extra persist sync but keep data persistence in failures. I am not sure if enabled eADR , persist step is needed in normal writing anymore. turning DDIO off seems too expensive even for single pcie root port. Because nic device may sit with pmem on the same pcie root port. That's painful to balance both device.
Found more information in pmem programming guide. :)
data in the CPU caches must be flushed by the application using the CLWB, CLFLUSHOPT,
CLFLUSH, non-temporal stores, or WBINVD machine instructions.
Enhanced Asynchronous DRAM Refresh (eADR) requires that a non-maskable
interrupt (NMI) routine be called to flush the CPU caches before the ADR event can begin.
Applications running on an eADR platform do not need to perform flush operations
because the hardware should flush the data automatically, but they are still required
to perform an SFENCE operation to maintain write order correctness. Stores should be
considered persistent only when they are globally visible, which the SFENCE guarantees.