Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: pm8001: Increase request sg length to support 4MiB requests

Increasing the per-request size maximum to 4MiB (8192 sectors x 512
bytes) runs into the per-device DMA scatter gather list limit
(max_segments) for users of the io vector system calls (e.g. readv and
writev).

Increase the max scatter gather list length to 1024 to enable kernel to
send 4MiB (1024 * 4KiB page size) requests.

Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
Link: https://lore.kernel.org/r/20241025185009.3278297-1-ipylypiv@google.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Igor Pylypiv and committed by
Martin K. Petersen
53b550de 4501ea5f

+6 -2
+5 -2
drivers/scsi/pm8001/pm8001_defs.h
··· 92 92 #define PM8001_MAX_MSIX_VEC 64 /* max msi-x int for spcv/ve */ 93 93 #define PM8001_RESERVE_SLOT 8 94 94 95 - #define CONFIG_SCSI_PM8001_MAX_DMA_SG 528 96 - #define PM8001_MAX_DMA_SG CONFIG_SCSI_PM8001_MAX_DMA_SG 95 + #define PM8001_SECTOR_SIZE 512 96 + #define PM8001_PAGE_SIZE_4K 4096 97 + #define PM8001_MAX_IO_SIZE (4 * 1024 * 1024) 98 + #define PM8001_MAX_DMA_SG (PM8001_MAX_IO_SIZE / PM8001_PAGE_SIZE_4K) 99 + #define PM8001_MAX_SECTORS (PM8001_MAX_IO_SIZE / PM8001_SECTOR_SIZE) 97 100 98 101 enum memory_region_num { 99 102 AAP1 = 0x0, /* application acceleration processor */
+1
drivers/scsi/pm8001/pm8001_init.c
··· 121 121 .scan_start = pm8001_scan_start, 122 122 .can_queue = 1, 123 123 .sg_tablesize = PM8001_MAX_DMA_SG, 124 + .max_sectors = PM8001_MAX_SECTORS, 124 125 .shost_groups = pm8001_host_groups, 125 126 .sdev_groups = pm8001_sdev_groups, 126 127 .track_queue_depth = 1,