summaryrefslogtreecommitdiffstats
path: root/drivers/virt
diff options
context:
space:
mode:
authorDave Jiang <dave.jiang@intel.com>2017-03-10 21:24:22 +0100
committerDan Williams <dan.j.williams@intel.com>2017-03-11 03:15:04 +0100
commit0134ed4fb9e78672ee9f7b18007114404c81e63f (patch)
tree3a377760fb66db5f8d5d4ae13934f17ff3a0274a /drivers/virt
parentLinux 4.11-rc1 (diff)
downloadlinux-0134ed4fb9e78672ee9f7b18007114404c81e63f.tar.xz
linux-0134ed4fb9e78672ee9f7b18007114404c81e63f.zip
device-dax: fix pmd/pte fault fallback handling
Jeff Moyer reports: With a device dax alignment of 4KB or 2MB, I get sigbus when running the attached fio job file for the current kernel (4.11.0-rc1+). If I specify an alignment of 1GB, it works. I turned on debug output, and saw that it was failing in the huge fault code. dax dax1.0: dax_open dax dax1.0: dax_mmap dax dax1.0: dax_dev_huge_fault: fio: write (0x7f08f0a00000 - dax dax1.0: __dax_dev_pud_fault: phys_to_pgoff(0xffffffffcf60 dax dax1.0: dax_release fio config for reproduce: [global] ioengine=dev-dax direct=0 filename=/dev/dax0.0 bs=2m [write] rw=write [read] stonewall rw=read The driver fails to fallback when taking a fault that is larger than the device alignment, or handling a larger fault when a smaller mapping is already established. While we could support larger mappings for a device with a smaller alignment, that change is too large for the immediate fix. The simplest change is to force fallback until the fault size matches the alignment. Fixes: dee410792419 ("/dev/dax, core: file operations and dax-mmap") Cc: <stable@vger.kernel.org> Reported-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/virt')
0 files changed, 0 insertions, 0 deletions