On Mon, Mar 30, 2026 at 02:21:48PM -0700, Alison Schofield wrote: > On Fri, Mar 27, 2026 at 09:03:26PM +0000, John Groves wrote: > > From: John Groves <[email protected]> > > > > This patch series along with the bundled patches to fuse are available > > as a git tag at [0]. > > > > Dropped the "bundle" thread. If this submission goes smoothly, I'll update > > the fuse patches to v10 (very little change there as yet). > > > > Changes v9 -> v10 > > - Minor modernizations per comments from (mostly) Jonathan > > - Minor Kconfig simplification > > - bus.c:dax_match_type(): don't make fsdev_dax eligible for automatic > > binding > > where devdax would otherwise bind > > - dax-private.h: add missing kerneldoc comment for field cached_size in > > struct dev_dax_range (thanks Dave) > > - fsdev_write_dax(): s/pmem_addr/addr/ (thanks Dave) > > - include/linux/dax.h: remove a spuriously-added declaration of inode_dax() > > (thanks Jonathan) > > > > Description: > > > > This patch series introduces the required dax support for famfs. > > Previous versions of the famfs series included both dax and fuse patches. > > This series separates them into separate patch series' (and the fuse > > series dependends on this dax series). > > > > The famfs user space code can be found at [1] > > > > Dax Overview: > > > > This series introduces a new "famfs mode" of devdax, whose driver is > > drivers/dax/fsdev.c. This driver supports dax_iomap_rw() and > > dax_iomap_fault() calls against a character dax instance. A dax device > > now can be converted among three modes: 'system-ram', 'devdax' and > > 'famfs' via daxctl or sysfs (e.g. unbind devdax and bind famfs instead). > > > > In famfs mode, a dax device initializes its pages consistent with the > > fsdaxmode of pmem. Raw read/write/mmap are not supported in this mode, > > but famfs is happy in this mode - using dax_iomap_rw() for read/write and > > dax_iomap_fault() for mmap faults. > > > > Here's what I found: > > famfs-v10 on 7.0-rc5 + ndctl v84: > dax suite all pass 13/13, so no regression appears > > famfs-v10 on 7.0-rc5 + > (ndctl v84 w https://github.com/jagalactic/ndctl/tree/famfs > top 3 patches + edit daxctl-famfs.sh to use cxl-test: > > existing dax suite keeps passing > daxctl-famfs.sh oops w the new test at # Restore original mode" > seems easy to repoduce, maybe cannot go back to system-ram???
My stack trace differed from Ira's. I hit: [ 88.991865] probe of dax0.0 returned 0 after 2371506 usecs [ 88.996717] page: refcount:0 mapcount:1 mapping:0000000000000000 index:0x0 pfn:0x3ff028000 [ 88.997592] BUG: unable to handle page fault for address: ffffc9000f4c8033 [ 88.998256] #PF: supervisor read access in kernel mode [ 88.998728] #PF: error_code(0x0000) - not-present page [ 88.999254] PGD 80a067 P4D 80a067 PUD 193e067 PMD 79baf067 PTE 0 [ 88.999799] Oops: Oops: 0000 [#1] SMP NOPTI [ 89.000253] CPU: 5 UID: 0 PID: 1476 Comm: daxctl Tainted: G O 7.0.0-rc5+ #182 PREEMPT(full) [ 89.001092] Tainted: [O]=OOT_MODULE [ 89.001630] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 [ 89.002345] RIP: 0010:is_free_buddy_page+0x39/0x60 [ 89.002816] Code: 00 00 00 48 c1 fe 06 eb 0a 48 83 c1 01 48 83 f9 0b 74 30 44 89 c0 48 89 fa d3 e0 83 e8 01 48 98 48 21 f0 48 c1 e0 06 48 29 c2 <80> 7a 33 f0 75 d9 48 8b 42 28 48 39 c8 72 d0 b8 01 00 00 00 e9 ce [ 89.004504] RSP: 0018:ffffc9000f4cf828 EFLAGS: 00010286 [ 89.005039] RAX: 0000000000007a80 RBX: ffffc9000f4cf8a0 RCX: 0000000000000009 [ 89.005674] RDX: ffffc9000f4c8000 RSI: ffffff7c003d33ea RDI: ffffc9000f4cfa80 [ 89.006350] RBP: ffffc9000f4cf838 R08: 0000000000000001 R09: 00000000ffefffff [ 89.007000] R10: ffffc9000f4cfa38 R11: ffff888376ffe000 R12: ffffc9000f4cfa80 [ 89.007673] R13: ffffc9000f4cf9a0 R14: 0000000000000006 R15: 0000000000000001 [ 89.008395] FS: 00007f3fbca2e7c0(0000) GS:ffff8881fa75f000(0000) knlGS:0000000000000000 [ 89.009156] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 89.009715] CR2: ffffc9000f4c8033 CR3: 000000012f638003 CR4: 0000000000370ef0 [ 89.010447] Call Trace: [ 89.010767] <TASK> [ 89.011083] ? set_ps_flags.constprop.0+0x3c/0x70 [ 89.011559] snapshot_page+0x2ca/0x330 [ 89.011974] __dump_page+0x2e/0x380 [ 89.012362] ? up+0x5a/0x90 [ 89.012704] dump_page+0x16/0x50 [ 89.013108] ? dump_page+0x16/0x50 [ 89.013489] __get_pfnblock_flags_mask+0x6f/0xd0 [ 89.013958] get_pfnblock_migratetype+0xe/0x30 [ 89.014412] __dump_page+0x15b/0x380 [ 89.014816] dump_page+0x16/0x50 [ 89.015210] ? dump_page+0x16/0x50 [ 89.015587] __set_pfnblock_flags_mask.constprop.0+0x6f/0xf0 [ 89.016195] init_pageblock_migratetype+0x39/0x60 [ 89.016692] memmap_init_range+0x165/0x290 [ 89.017205] move_pfn_range_to_zone+0xed/0x200 [ 89.017688] mhp_init_memmap_on_memory+0x23/0xb0 [ 89.018223] memory_subsys_online+0x127/0x1a0 [ 89.018693] device_online+0x4d/0x90 [ 89.019149] state_store+0x96/0xa0 [ 89.019552] dev_attr_store+0x12/0x30 [ 89.019975] sysfs_kf_write+0x48/0x70 [ 89.020381] kernfs_fop_write_iter+0x160/0x210 [ 89.020876] vfs_write+0x261/0x500 [ 89.021311] ksys_write+0x5c/0xf0 [ 89.021701] __x64_sys_write+0x14/0x20 [ 89.022180] x64_sys_call+0x1cb7/0x2010 [ 89.022640] do_syscall_64+0xb1/0x560 [ 89.023096] entry_SYSCALL_64_after_hwframe+0x71/0x79 [ 89.023615] RIP: 0033:0x7f3fbc901c37 [ 89.024050] Code: 0f 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b7 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74 24 [ 89.025768] RSP: 002b:00007ffdbdf63c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 [ 89.026517] RAX: ffffffffffffffda RBX: 00007ffdbdf64228 RCX: 00007f3fbc901c37 [ 89.027280] RDX: 000000000000000f RSI: 00007f3fbcb554de RDI: 0000000000000004 [ 89.027934] RBP: 00007ffdbdf63ca0 R08: 0000000000000000 R09: 0000000000000073 [ 89.028610] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 [ 89.029337] R13: 00007ffdbdf64260 R14: 0000000000414da0 R15: 00007f3fbcb9b000 [ 89.030051] </TASK> [ 89.030364] Modules linked in: cxl_test(O) cxl_acpi(O) cxl_pmem(O) device_dax(O) fsdev_dax kmem dax_pmem(O) nd_pmem(O) dax_cxl nd_btt(O) nd_e820(O) nfit(O) cxl_mock_mem(O) cxl_mem(O) cxl_port(O) cxl_mock(O) libnvdimm(O) nfit_test_iomap(O) cxl_core(O) fwctl [last unloaded: cxl_pmem(O)] [ 89.032575] CR2: ffffc9000f4c8033 [ 89.032960] ---[ end trace 0000000000000000 ]--- [ 89.033460] RIP: 0010:is_free_buddy_page+0x39/0x60 [ 89.033948] Code: 00 00 00 48 c1 fe 06 eb 0a 48 83 c1 01 48 83 f9 0b 74 30 44 89 c0 48 89 fa d3 e0 83 e8 01 48 98 48 21 f0 48 c1 e0 06 48 29 c2 <80> 7a 33 f0 75 d9 48 8b 42 28 48 39 c8 72 d0 b8 01 00 00 00 e9 ce [ 89.035645] RSP: 0018:ffffc9000f4cf828 EFLAGS: 00010286 [ 89.036235] RAX: 0000000000007a80 RBX: ffffc9000f4cf8a0 RCX: 0000000000000009 [ 89.036910] RDX: ffffc9000f4c8000 RSI: ffffff7c003d33ea RDI: ffffc9000f4cfa80 [ 89.037588] RBP: ffffc9000f4cf838 R08: 0000000000000001 R09: 00000000ffefffff [ 89.038310] R10: ffffc9000f4cfa38 R11: ffff888376ffe000 R12: ffffc9000f4cfa80 [ 89.039008] R13: ffffc9000f4cf9a0 R14: 0000000000000006 R15: 0000000000000001 [ 89.039710] FS: 00007f3fbca2e7c0(0000) GS:ffff8881fa75f000(0000) knlGS:0000000000000000 [ 89.040506] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 89.041129] CR2: ffffc9000f4c8033 CR3: 000000012f638003 CR4: 0000000000370ef0 [ 89.041836] note: daxctl[1476] exited with irqs disabled > > Let me know if you need more info. > > -- Alison > >

