On Thu, Oct 17, 2024 at 02:32:18PM -0700, Abhishek Bapat wrote:
On Thu, Oct 17, 2024 at 9:40 AM Keith Busch <kbusch@xxxxxxxxxx> wrote:You'd may want to know max_sectors_kb, dma_alignment, nr_requests,
On Wed, Oct 16, 2024 at 09:31:08PM +0000, Abhishek Bapat wrote:Are you suggesting that all the files from the queue subdirectory should
max_hw_sectors based on DMA optimized limitation") introduced aThere are other limits that can constrain transfer sizes below the
limitation on the value of max_hw_sectors_kb, restricting it to 128KiB
(MDTS = 5). This restricion was implemented to mitigate lockups
encountered in high-core count AMD servers.
device's MDTS. For example, the driver can only preallocate so much
space for DMA and SGL descriptors, so 8MB is the current max transfer
sizes the driver can support, and a device's MDTS can be much bigger
than that.
Anyway, yeah, I guess having a controller generic way to export this
sounds like a good idea, but I wonder if the nvme driver is the right
place to do it. The request_queue has all the limits you need to know
about, but these are only exported if a gendisk is attached to it.
Maybe we can create a queue subdirectory to the char dev too.
be included in the char dev (/sys/class/nvme/nvmeX/queue/)? Or that
just the max_hw_sectors_kb value should be shared within the queue
subdirectory? And if not the nvme driver, where else can this be done
from?
virt_boundary_mask. Maybe some others.
The request_queue is owned by the block layer, so that seems like an
okay place to export it, but attached to some other device's sysfs
directory instead of a gendisk.
I'm just suggesting this because it doesn't sound like this is an nvme
specific problem.