> On Jan 18, 2021, at 8:22 PM, Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> wrote: > > Do you mind posting the cap and ecap of the iommu used by your device? > > You can get it via sysfs, for example: > > /sys/bus/pci/devices/0000:00:14.0/iommu/intel-iommu# ls > address cap domains_supported domains_used ecap version [root@manet intel-iommu]# lspci | grep Mellanox 03:00.0 Network controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro] [root@manet intel-iommu]# pwd /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0/iommu/intel-iommu [root@manet intel-iommu]# for i in *; do echo -n $i ": "; cat $i; done address : c7ffc000 cap : d2078c106f0466 domains_supported : 65536 domains_used : 62 ecap : f020de version : 1:0 [root@manet intel-iommu]# >> Fwiw, this system uses the Intel C612 chipset with Intel(R) Xeon(R) >> E5-2603 v3 @ 1.60GHz CPUs. > > Can you please also hack a line of code to check the return value of > iommu_dma_map_sg()? diff --git a/net/sunrpc/xprtrdma/frwr_ops.c b/net/sunrpc/xprtrdma/frwr_ops.c index baca49fe83af..e811562ead0e 100644 --- a/net/sunrpc/xprtrdma/frwr_ops.c +++ b/net/sunrpc/xprtrdma/frwr_ops.c @@ -328,6 +328,7 @@ struct rpcrdma_mr_seg *frwr_map(struct rpcrdma_xprt *r_xprt, dma_nents = ib_dma_map_sg(ep->re_id->device, mr->mr_sg, mr->mr_nents, mr->mr_dir); + trace_printk("ib_dma_map_sg(%d) returns %d\n", mr->mr_nents, dma_nents); if (!dma_nents) goto out_dmamap_err; mr->mr_device = ep->re_id->device; During the 256KB iozone test I used before, this trace log is generated: kworker/u28:3-1269 [000] 336.054743: bprint: frwr_map: ib_dma_map_sg(30) returns 1 kworker/u28:3-1269 [000] 336.054835: bprint: frwr_map: ib_dma_map_sg(30) returns 1 kworker/u28:3-1269 [000] 336.055022: bprint: frwr_map: ib_dma_map_sg(4) returns 1 kworker/u28:3-1269 [000] 336.055118: bprint: frwr_map: ib_dma_map_sg(30) returns 1 kworker/u28:3-1269 [000] 336.055312: bprint: frwr_map: ib_dma_map_sg(30) returns 1 kworker/u28:3-1269 [000] 336.055407: bprint: frwr_map: ib_dma_map_sg(4) returns 1 -- Chuck Lever