diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2014-01-13 14:47:12 -0800 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2014-01-13 14:47:12 -0800 |
commit | e49143d67bf5c67efb9293455d5d69d068c23e6c (patch) | |
tree | e72f88f956a620ea5edfdb3b82dbf6c07cab95b1 | |
parent | 5063b429c1c26e0a409a86180ffaa4de28668c3a (diff) |
331.38331.38
-rw-r--r-- | backup.c | 35 | ||||
-rw-r--r-- | kernel.c | 10 | ||||
-rw-r--r-- | misc.c | 9 | ||||
-rw-r--r-- | nvidia-installer.c | 9 | ||||
-rw-r--r-- | option_table.h | 10 | ||||
-rw-r--r-- | version.mk | 2 |
6 files changed, 54 insertions, 21 deletions
@@ -619,6 +619,21 @@ static int rmdir_recursive(Options *op) return ret; } + + +/* unload_nvidia_module() - unload nvidia${suffix}.ko, ignoring failures. */ + +static void unload_nvidia_module(Options *op, const char *suffix) +{ + char *cmd; + + cmd = nvstrcat(op->utils[RMMOD], " ", RMMOD_MODULE_NAME, suffix, NULL); + run_command(op, cmd, NULL, FALSE, 0, TRUE); + nvfree(cmd); +} + + + /* * do_uninstall() - this function uninstalls a previously installed * driver, by parsing the BACKUP_LOG file. @@ -629,7 +644,7 @@ static int do_uninstall(Options *op, const char *version) BackupLogEntry *e; BackupInfo *b; int i, len, ok; - char *tmpstr, *cmd; + char *tmpstr; float percent; int removal_failed = FALSE, restore_failed = FALSE; @@ -823,28 +838,20 @@ static int do_uninstall(Options *op, const char *version) * might not have existed at all. */ - cmd = nvstrcat(op->utils[RMMOD], " ", RMMOD_MODULE_NAME, NULL); - run_command(op, cmd, NULL, FALSE, 0, TRUE); - nvfree(cmd); + unload_nvidia_module(op, "-uvm"); + + unload_nvidia_module(op, ""); for (i = 0; i < NV_MAX_MODULE_INSTANCES; i++) { char num[5]; memset(num, 0, sizeof(num)); snprintf(num, sizeof(num), "%d", i); num[sizeof(num) - 1] = '\0'; - - cmd = nvstrcat(op->utils[RMMOD], " ", RMMOD_MODULE_NAME, - num, NULL); - run_command(op, cmd, NULL, FALSE, 0, TRUE); - nvfree(cmd); + unload_nvidia_module(op, num); } - cmd = nvstrcat(op->utils[RMMOD], " ", RMMOD_MODULE_NAME, - "-frontend", NULL); - run_command(op, cmd, NULL, FALSE, 0, TRUE); - - nvfree(cmd); + unload_nvidia_module(op, "-frontend"); run_distro_hook(op, "post-uninstall"); @@ -706,7 +706,8 @@ int build_kernel_module(Options *op, Package *p) if (!ret) { ui_error(op, "The Unified Memory kernel module failed to build. " - "To work around this issue, you may attempt to " + "This kernel module is required for the proper operation " + "of CUDA. If you do not need to use CUDA, you can try to " "install this driver package again with the " "'--no-unified-memory' option."); return FALSE; @@ -1525,6 +1526,13 @@ int test_kernel_module(Options *op, Package *p) if (ret != 0) { ret = ignore_load_error(op, p, p->uvm_kernel_module_filename, data, ret); + if (ret) { + ui_warn(op, "The NVIDIA Unified Memory module failed to load, " + "and the load failure was ignored. This module is " + "required in order for the CUDA driver to function; if " + "the load failure cannot be resolved, then this system " + "will be unable to run CUDA applications."); + } goto test_exit; } } @@ -1286,7 +1286,14 @@ void should_install_uvm(Options *op, Package *p) if (op->expert) { op->install_uvm = ui_yes_no(op, op->install_uvm, "Would you like to " "install the NVIDIA Unified Memory kernel " - "module?"); + "module? You must install this module in " + "order to use CUDA."); + } + + if (!op->install_uvm) { + ui_warn(op, "The NVIDIA Unified Memory kernel module will not be " + "installed. As a result, CUDA applications will not be able to " + "run with this installation of the NVIDIA driver."); } } diff --git a/nvidia-installer.c b/nvidia-installer.c index 52caec2..43f5746 100644 --- a/nvidia-installer.c +++ b/nvidia-installer.c @@ -419,10 +419,15 @@ static void parse_commandline(int argc, char *argv[], Options *op) goto fail; } op->multiple_kernel_modules = TRUE; - if (intval > NV_MAX_MODULE_INSTANCES) + /* Unified Memory is incompatible with multiple kernel modules */ + op->install_uvm = FALSE; + + if (intval > NV_MAX_MODULE_INSTANCES) { op->num_kernel_modules = NV_MAX_MODULE_INSTANCES; - else + } + else { op->num_kernel_modules = intval; + } break; case NO_UVM_OPTION: op->install_uvm = FALSE; diff --git a/option_table.h b/option_table.h index 49d3556..f1e02a7 100644 --- a/option_table.h +++ b/option_table.h @@ -628,10 +628,16 @@ static const NVGetoptOption __options[] = { { "multiple-kernel-modules", MULTIPLE_KERNEL_MODULES_OPTION, NVGETOPT_INTEGER_ARGUMENT, NULL, "Build and install multiple NVIDIA kernel modules. The maximum number " - "of NVIDIA kernel modules that may be built is 8." }, + "of NVIDIA kernel modules that may be built is 8. '--multiple-kernel-" + "modules' implies '--no-unified-memory'."}, { "no-unified-memory", NO_UVM_OPTION, 0, NULL, - "Do not install the NVIDIA Unified Memory kernel module."}, + "Do not install the NVIDIA Unified Memory kernel module. This kernel " + "module is required for CUDA, and if it is not installed, the CUDA " + "driver and CUDA applications will not be able to run. The " + "'--no-unified-memory' option should only be used to work around " + "failures to build or install the Unified Memory kernel module on " + "systems that do not need to run CUDA." }, /* Orphaned options: These options were in the long_options table in * nvidia-installer.c but not in the help. */ @@ -1 +1 @@ -NVIDIA_VERSION = 331.20 +NVIDIA_VERSION = 331.38 |