From 6953e63287b0eb6034ca7b82fe3727dede361d12 Mon Sep 17 00:00:00 2001 From: Evan Lezar Date: Mon, 16 Sep 2024 15:07:28 +0200 Subject: [PATCH] Add no-gsp-firmware option This change adds a no-gsp-firmware option that skips the injection of GSP firmware into a container. Signed-off-by: Evan Lezar --- src/cli/configure.c | 5 +++++ src/cli/list.c | 6 ++++++ src/nvc_info.c | 8 +++++--- src/options.h | 2 ++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/cli/configure.c b/src/cli/configure.c index 45d6e444..5d51c407 100644 --- a/src/cli/configure.c +++ b/src/cli/configure.c @@ -35,6 +35,7 @@ const struct argp configure_usage = { {"no-devbind", 0x85, NULL, 0, "Don't bind mount devices", -1}, {"no-persistenced", 0x86, NULL, 0, "Don't include the NVIDIA persistenced socket", -1}, {"no-fabricmanager", 0x87, NULL, 0, "Don't include the NVIDIA fabricmanager socket", -1}, + {"no-gsp-firmware", 0x88, NULL, 0, "Don't include GSP Firmware", -1}, {0}, }, configure_parser, @@ -160,6 +161,10 @@ configure_parser(int key, char *arg, struct argp_state *state) if (str_join(&err, &ctx->driver_opts, "no-fabricmanager", " ") < 0) goto fatal; break; + case 0x88: + if (str_join(&err, &ctx->driver_opts, "no-gsp-firmware", " ") < 0) + goto fatal; + break; case ARGP_KEY_ARG: if (state->arg_num > 0) argp_usage(state); diff --git a/src/cli/list.c b/src/cli/list.c index b0147ac0..5a5e6406 100644 --- a/src/cli/list.c +++ b/src/cli/list.c @@ -24,6 +24,7 @@ const struct argp list_usage = { {"imex-channel", 0x83, "CHANNEL", 0, "IMEX channel ID(s) to inject", -1}, {"no-persistenced", 0x84, NULL, 0, "Don't include the NVIDIA persistenced socket", -1}, {"no-fabricmanager", 0x85, NULL, 0, "Don't include the NVIDIA fabricmanager socket", -1}, + {"no-gsp-firmware", 0x86, NULL, 0, "Don't include GSP Firmware", -1}, {0}, }, list_parser, @@ -80,6 +81,11 @@ list_parser(int key, char *arg, struct argp_state *state) if (str_join(&err, &ctx->driver_opts, "no-fabricmanager", " ") < 0) goto fatal; break; + case 0x86: + if (str_join(&err, &ctx->driver_opts, "no-gsp-firmware", " ") < 0) + goto fatal; + ctx->list_firmwares = false; + break; case ARGP_KEY_END: if (state->argc == 1 || (state->argc == 2 && ctx->imex_channels != NULL)) { if ((ctx->devices = xstrdup(&err, "all")) == NULL) diff --git a/src/nvc_info.c b/src/nvc_info.c index e79a106e..b7b8adfa 100644 --- a/src/nvc_info.c +++ b/src/nvc_info.c @@ -366,9 +366,11 @@ lookup_paths(struct error *err, struct dxcore_context *dxcore, struct nvc_driver return (-1); } - if (lookup_firmwares(err, dxcore, info, root, flags) < 0) { - log_err("error looking up additional paths"); - return (-1); + if (!(flags & OPT_NO_GSP_FIRMWARE)) { + if (lookup_firmwares(err, dxcore, info, root, flags) < 0) { + log_err("error looking up additional paths"); + return (-1); + } } return (0); diff --git a/src/options.h b/src/options.h index be23c338..df5ae5e1 100644 --- a/src/options.h +++ b/src/options.h @@ -33,6 +33,7 @@ enum { OPT_NO_MPS = 1 << 3, OPT_NO_PERSISTENCED = 1 << 4, OPT_NO_FABRICMANAGER = 1 << 5, + OPT_NO_GSP_FIRMWARE = 1 << 6, }; static const struct option driver_opts[] = { @@ -42,6 +43,7 @@ static const struct option driver_opts[] = { {"no-mps", OPT_NO_MPS}, {"no-persistenced", OPT_NO_PERSISTENCED}, {"no-fabricmanager", OPT_NO_FABRICMANAGER}, + {"no-gsp-firmware", OPT_NO_GSP_FIRMWARE}, }; static const char * const default_driver_opts = "";