Hi Dan,

On 06.06.25 01:47, Dan Williams wrote:
David Hildenbrand wrote:
Based on Linus' master.

While working on improving vm_normal_page() and friends, I stumbled
over this issues: refcounted "normal" pages must not be marked
using pmd_special() / pud_special().

Fortunately, so far there doesn't seem to be serious damage.

This is only compile-tested so far. Still looking for an easy way to test
PMD/PUD mappings with DAX. Any tests I can easily run?

The way I test this I would not classify as "easy", it is a bit of a pain
to setup, but it is passing here:

I guess most of the instructions are in

https://github.com/pmem/ndctl

?

I would assume that we need to set aside some special dax area using early boot params (memmap=).

Might come in handy in the future.


[root@host ndctl]# meson test -C build --suite ndctl:dax
ninja: Entering directory `/root/git/ndctl/build'
[168/168] Linking target cxl/cxl
  1/13 ndctl:dax / daxdev-errors.sh          OK              14.30s
  2/13 ndctl:dax / multi-dax.sh              OK               2.89s
  3/13 ndctl:dax / sub-section.sh            OK               8.40s
  4/13 ndctl:dax / dax-dev                   OK               0.06s
  5/13 ndctl:dax / dax-ext4.sh               OK              20.53s
  6/13 ndctl:dax / dax-xfs.sh                OK              20.34s
  7/13 ndctl:dax / device-dax                OK              11.67s
  8/13 ndctl:dax / revoke-devmem             OK               0.25s
  9/13 ndctl:dax / device-dax-fio.sh         OK              34.02s
10/13 ndctl:dax / daxctl-devices.sh         OK               3.44s
11/13 ndctl:dax / daxctl-create.sh          SKIP             0.32s   exit 
status 77
12/13 ndctl:dax / dm.sh                     OK               1.33s
13/13 ndctl:dax / mmap.sh                   OK              85.12s

...ignore the SKIP, that seems to be caused by an acpi-einj regression.

Thanks for running these tests!


However, how about not duplicating the internals of insert_pfn_p[mu]d()
with something like the below. Either way you can add:

I considered that, but I prefer the current end result where we cleanup the pmd_none() handling and not mess with folios and pfns at the same time.

... just like we do for insert_pfn() vs. insert_page(), I don't think these code paths should be unified.

(we should do more sanity checks like validate_page_before_insert() etc., but that's something for another day :) )



Tested-by: Dan Williams <dan.j.willi...@intel.com>
Reviewed-by: Dan Williams <dan.j.willi...@intel.com>

Thanks!


Let me resend with the fixup squashed.

--
Cheers,

David / dhildenb


Reply via email to