On 30.09.20 12:22, Sironi, Filippo wrote:
From: Alexander Graf graf@amazon.com Sent: Tuesday, September 29, 2020 20:36 To: seabios@seabios.org Subject: [UNVERIFIED SENDER] [SeaBIOS] [PATCH 1/3] nvme: Record maximum allowed request size
NVMe has a limit on how many sectors it can handle at most within a single request. Remember that number, so that in a follow-up patch, we can verify that we don't exceed it.
Signed-off-by: Alexander Graf graf@amazon.com
src/hw/nvme-int.h | 8 +++++++- src/hw/nvme.c | 13 +++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/src/hw/nvme-int.h b/src/hw/nvme-int.h index 9f95dd8..674008a 100644 --- a/src/hw/nvme-int.h +++ b/src/hw/nvme-int.h @@ -117,6 +117,7 @@ struct nvme_namespace {
u32 block_size; u32 metadata_size;
u32 max_req_size;
/* Page aligned buffer of size NVME_PAGE_SIZE. */ char *dma_buffer;
@@ -131,7 +132,12 @@ struct nvme_identify_ctrl { char mn[40]; char fr[8];
- char _boring[516 - 72];
u8 rab;
u8 ieee[3];
u8 cmic;
u8 mdts;
char _boring[516 - 78];
u32 nn; /* number of namespaces */ };
diff --git a/src/hw/nvme.c b/src/hw/nvme.c index 6a01204..2cde6a7 100644 --- a/src/hw/nvme.c +++ b/src/hw/nvme.c @@ -238,7 +238,8 @@ nvme_admin_identify_ns(struct nvme_ctrl *ctrl, u32 ns_id) }
static void -nvme_probe_ns(struct nvme_ctrl *ctrl, struct nvme_namespace *ns, u32 ns_id) +nvme_probe_ns(struct nvme_ctrl *ctrl, struct nvme_namespace *ns, u32 ns_id,
{ ns->ctrl = ctrl; ns->ns_id = ns_id;u8 mdts)
@@ -281,6 +282,14 @@ nvme_probe_ns(struct nvme_ctrl *ctrl, struct nvme_namespace *ns, u32 ns_id) ns->drive.blksize = ns->block_size; ns->drive.sectors = ns->lba_count;
- if (mdts) {
ns->max_req_size = 1U << mdts;
dprintf(3, "NVME NS %u max request size: %d sectors\n",
ns->max_req_size);
The use of dprintf is incorrect, you're only providing one variable to print instead of two. You're missing the number of sectors.
Yikes, I fixed that one locally before I hit git format-patch. I promise! My machine probably just went back in time and pulled this broken state out of the abyss :).
Kidding aside, I'll submit the right one for v2. Thanks for noticing!
Alex
Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879