Module Name: src Committed By: jdolecek Date: Tue Nov 1 14:39:38 UTC 2016
Modified Files: src/sys/dev/ic: ld_nvme.c nvme.c nvmevar.h Log Message: pass maxphys from device rather then assuming MAXPHYS; it's clipped in ld(4) if bigger then MAXPHYS multiply the queue size by number of queues for ld(4) sc_maxqueuecnt, so that ld_diskstart() would try to use full capacity, instead of throttling to one queue worth of commands To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/dev/ic/ld_nvme.c cvs rdiff -u -r1.20 -r1.21 src/sys/dev/ic/nvme.c cvs rdiff -u -r1.10 -r1.11 src/sys/dev/ic/nvmevar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ic/ld_nvme.c diff -u src/sys/dev/ic/ld_nvme.c:1.9 src/sys/dev/ic/ld_nvme.c:1.10 --- src/sys/dev/ic/ld_nvme.c:1.9 Thu Oct 20 18:42:28 2016 +++ src/sys/dev/ic/ld_nvme.c Tue Nov 1 14:39:38 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: ld_nvme.c,v 1.9 2016/10/20 18:42:28 jdolecek Exp $ */ +/* $NetBSD: ld_nvme.c,v 1.10 2016/11/01 14:39:38 jdolecek Exp $ */ /*- * Copyright (C) 2016 NONAKA Kimihiro <non...@netbsd.org> @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ld_nvme.c,v 1.9 2016/10/20 18:42:28 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ld_nvme.c,v 1.10 2016/11/01 14:39:38 jdolecek Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -108,8 +108,8 @@ ld_nvme_attach(device_t parent, device_t ld->sc_secsize = 1 << f->lbads; ld->sc_secperunit = nsze; - ld->sc_maxxfer = MAXPHYS; /* XXX set according to device */ - ld->sc_maxqueuecnt = naa->naa_qentries; /* XXX set to max allowed by device, not current config */ + ld->sc_maxxfer = naa->naa_maxphys; + ld->sc_maxqueuecnt = naa->naa_qentries; ld->sc_start = ld_nvme_start; ld->sc_dump = ld_nvme_dump; ld->sc_flush = ld_nvme_flush; Index: src/sys/dev/ic/nvme.c diff -u src/sys/dev/ic/nvme.c:1.20 src/sys/dev/ic/nvme.c:1.21 --- src/sys/dev/ic/nvme.c:1.20 Tue Nov 1 14:24:35 2016 +++ src/sys/dev/ic/nvme.c Tue Nov 1 14:39:38 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: nvme.c,v 1.20 2016/11/01 14:24:35 jdolecek Exp $ */ +/* $NetBSD: nvme.c,v 1.21 2016/11/01 14:39:38 jdolecek Exp $ */ /* $OpenBSD: nvme.c,v 1.49 2016/04/18 05:59:50 dlg Exp $ */ /* @@ -18,7 +18,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nvme.c,v 1.20 2016/11/01 14:24:35 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nvme.c,v 1.21 2016/11/01 14:39:38 jdolecek Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -460,7 +460,8 @@ nvme_rescan(device_t self, const char *a continue; memset(&naa, 0, sizeof(naa)); naa.naa_nsid = i + 1; - naa.naa_qentries = ioq_entries; + naa.naa_qentries = (ioq_entries - 1) * sc->sc_nq; + naa.naa_maxphys = sc->sc_mdts; sc->sc_namespaces[i].dev = config_found(sc->sc_dev, &naa, nvme_print); } Index: src/sys/dev/ic/nvmevar.h diff -u src/sys/dev/ic/nvmevar.h:1.10 src/sys/dev/ic/nvmevar.h:1.11 --- src/sys/dev/ic/nvmevar.h:1.10 Tue Nov 1 14:24:35 2016 +++ src/sys/dev/ic/nvmevar.h Tue Nov 1 14:39:38 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: nvmevar.h,v 1.10 2016/11/01 14:24:35 jdolecek Exp $ */ +/* $NetBSD: nvmevar.h,v 1.11 2016/11/01 14:39:38 jdolecek Exp $ */ /* $OpenBSD: nvmevar.h,v 1.8 2016/04/14 11:18:32 dlg Exp $ */ /* @@ -145,7 +145,8 @@ struct nvme_softc { struct nvme_attach_args { uint16_t naa_nsid; - uint32_t naa_qentries; + uint32_t naa_qentries; /* total number of queue slots */ + uint32_t naa_maxphys; /* maximum device transfer size */ }; int nvme_attach(struct nvme_softc *);