aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorChuck Tuffli <chuck@FreeBSD.org>2021-06-15 13:59:02 +0000
committerChuck Tuffli <chuck@FreeBSD.org>2021-06-16 21:19:01 +0000
commit3a4ab18377c86c4588d79c4ca91fe8f4530dc90c (patch)
tree3283cde8a029253b6a279692550c7db0ba47a390 /usr.sbin
parent7b8622fa220b9c08041102f638f848c48e022644 (diff)
downloadsrc-3a4ab18377c86c4588d79c4ca91fe8f4530dc90c.tar.gz
src-3a4ab18377c86c4588d79c4ca91fe8f4530dc90c.zip
bhyve: Fix cli regression with NVMe ram
The configuration management refactoring inadvertently removed support for a RAM-backed NVMe Namespace (i.e. -s X,nvme,ram=16384). This adds it back. Reported by: andy@omniosce.org Reviewed by: jhb, andy@omniosce.org Fixes: 621b5090487d MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30717
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/bhyve/pci_nvme.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/usr.sbin/bhyve/pci_nvme.c b/usr.sbin/bhyve/pci_nvme.c
index 0abc0415a1d8..7d472830a40e 100644
--- a/usr.sbin/bhyve/pci_nvme.c
+++ b/usr.sbin/bhyve/pci_nvme.c
@@ -2800,11 +2800,32 @@ done:
return (error);
}
+static int
+pci_nvme_legacy_config(nvlist_t *nvl, const char *opts)
+{
+ char *cp, *ram;
+
+ if (opts == NULL)
+ return (0);
+
+ if (strncmp(opts, "ram=", 4) == 0) {
+ cp = strchr(opts, ',');
+ if (cp == NULL) {
+ set_config_value_node(nvl, "ram", opts + 4);
+ return (0);
+ }
+ ram = strndup(opts + 4, cp - opts - 4);
+ set_config_value_node(nvl, "ram", ram);
+ free(ram);
+ return (pci_parse_legacy_config(nvl, cp + 1));
+ } else
+ return (blockif_legacy_config(nvl, opts));
+}
struct pci_devemu pci_de_nvme = {
.pe_emu = "nvme",
.pe_init = pci_nvme_init,
- .pe_legacy_config = blockif_legacy_config,
+ .pe_legacy_config = pci_nvme_legacy_config,
.pe_barwrite = pci_nvme_write,
.pe_barread = pci_nvme_read
};