[PATCH V2 3/3] Adding device_dma_parameters->offset_preserve_mask to NVMe driver.
Jianxiong Gao
jxgao at google.com
Mon Feb 1 19:25:55 EST 2021
> Why is this setting being done and undone on each IO? Wouldn't it be
> more efficient to set it once during device initialization?
I agree that setting it once is the right way of doing it.
So I have changed the patch to enable the mask once in nvme_probe.
drivers/nvme/host/pci.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 81e6389b2042..4ce78373f98d 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -2630,6 +2630,9 @@ static void nvme_reset_work(struct work_struct *work)
*/
dma_set_max_seg_size(dev->dev, 0xffffffff);
+ if (dma_set_min_align_mask(dev->dev, NVME_CTRL_PAGE_SIZE - 1))
+ dev_warn(dev->dev, "dma_set_min_align_mask failed to
set offset\n");
+
mutex_unlock(&dev->shutdown_lock);
/*
However on boot of the system, the following error happens occasionally.
The error seems related to Journal service. Whenever "Stopping Journal
Service..."
appears, the boot succeeds. Otherwise boot fails with the following message.
----------------------------log start here--------------------------
[ OK ] Started Journal Service.
[ 10.774545] xfs filesystem being remounted at / supports timestamps
until 2038 (0x7fffffff)
[ OK ] Started Remount Root and Kernel File Systems.
Starting Flush Journal to Persistent Storage...
Starting Load/Save Random Seed...
Starting Create Static [ 10.804340] systemd-journald[780]:
Received request to flush runtime journal from PID 1
Device Nodes in /dev...
[ OK ] Started Load/Save Random Seed.
[ OK ] Started Flush Journal to Persistent Storage.
[ OK ] Started Create Static Device Nodes in /dev.
Starting udev Kernel Device Manager...
[ OK ] Reached target Local File Systems (Pre).
Starting File System Check on /dev/disk/by-uuid/7281-17FC...
[ OK ] Started File System Check on /dev/disk/by-uuid/7281-17FC.
Mounting /boot/efi...
[ OK ] Mounted /boo[ 11.203461] systemd[1]: segfault at 2e0 ip
000055b08607cc24 sp 00007ffe13809090 error 4 in
systemd[55b086000000+140000]
t/efi.
[ 11.216088] Code: 02 c7 44 24 10 fe ff ff ff 49 89 e4 89 06 48 8d
6c 24 08 48 8d 5c 24 10 48 c7 44 24 18 00 00 00 00 eb 10 0f 1f 00 48
8b 3c 24 <44> 39 b7 e0 02 00 00 74 3b 49 8b 7d 00 4c 89 e1 48 89 ea 48
89 de
---------------log ends here-----------
> Based on the Keith's comment it needs to be completely avoided in hot path.
>
> Did you get a chance to bisect the problem in the rc6 ? We need to know the
> root cause otherwise it might happen again after we add this patch.
I am now trying to bisect the problem.
I am not sure how the mapping offset could have caused the error.
Any suggestions are appreciated.
--
Jianxiong Gao
More information about the Linux-nvme
mailing list