mirror of
https://github.com/Dasharo/SeaBIOS.git
synced 2026-03-06 14:47:42 -08:00
nvme: Use the Maximum Queue Entries Supported (MQES) to initialize I/O queues
Use the Maximum Queue Entries Supported (MQES) to initialize I/O queues depth rather than picking a fixed number (256) which might not be supported by some NVMe controllers (the NVMe specification says that an NVMe controller may support any number between 2 to 4096). Still cap the I/O queues depth to 256 since, during my testing, SeaBIOS was running out of memory when using something higher than 256 (4096 on the NVMe controller that I've had a chance to try). Signed-off-by: Filippo Sironi <sironi@amazon.de>
This commit is contained in:
committed by
Kevin O'Connor
parent
5c1a2c7595
commit
cd47172a67
+8
-2
@@ -318,8 +318,11 @@ nvme_create_io_cq(struct nvme_ctrl *ctrl, struct nvme_cq *cq, u16 q_idx)
|
||||
{
|
||||
int rc;
|
||||
struct nvme_sqe *cmd_create_cq;
|
||||
u16 length = 1 + (ctrl->reg->cap & 0xffff);
|
||||
if (length > NVME_PAGE_SIZE / sizeof(struct nvme_cqe))
|
||||
length = NVME_PAGE_SIZE / sizeof(struct nvme_cqe);
|
||||
|
||||
rc = nvme_init_cq(ctrl, cq, q_idx, NVME_PAGE_SIZE / sizeof(struct nvme_cqe));
|
||||
rc = nvme_init_cq(ctrl, cq, q_idx, length);
|
||||
if (rc) {
|
||||
goto err;
|
||||
}
|
||||
@@ -359,8 +362,11 @@ nvme_create_io_sq(struct nvme_ctrl *ctrl, struct nvme_sq *sq, u16 q_idx, struct
|
||||
{
|
||||
int rc;
|
||||
struct nvme_sqe *cmd_create_sq;
|
||||
u16 length = 1 + (ctrl->reg->cap & 0xffff);
|
||||
if (length > NVME_PAGE_SIZE / sizeof(struct nvme_cqe))
|
||||
length = NVME_PAGE_SIZE / sizeof(struct nvme_cqe);
|
||||
|
||||
rc = nvme_init_sq(ctrl, sq, q_idx, NVME_PAGE_SIZE / sizeof(struct nvme_cqe), cq);
|
||||
rc = nvme_init_sq(ctrl, sq, q_idx, length, cq);
|
||||
if (rc) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user