Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37595528
en ru br
Репозитории ALT

Группа :: Система/Ядро и оборудование
Пакет: bumblebee

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: nvidia_umv_detection_bug699.patch
Скачать


From dbbf20a38aa2bffb10c4e8af583b34dff6bfe721 Mon Sep 17 00:00:00 2001
From: Abuzer Rafey <abuzer@rafey.ch>
Date: Wed, 9 Dec 2015 21:26:29 -0500
Subject: [PATCH] Fix nvidia_uvm just like nvidia_modeset
---
 src/module.c | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)
diff --git a/src/module.c b/src/module.c
index eea0139..b5a4d79 100644
--- a/src/module.c
+++ b/src/module.c
@@ -93,19 +93,18 @@ int module_load(char *module_name, char *driver) {
  */
 int module_unload(char *driver) {
 
-  if (module_is_loaded(driver) == 1 &&
-            module_is_loaded("nvidia_modeset") == 1) {
+  if (module_is_loaded("nvidia_uvm") == 1) {
     int retries = 30;
-    bb_log(LOG_INFO, "Unloading %s driver\n", driver);
+    bb_log(LOG_INFO, "Unloading nvidia_uvm driver\n");
     char *mod_argv[] = {
       "modprobe",
       "-r",
-      "nvidia-modeset",
-      driver,
+      "nvidia_uvm",
+      "nvidia_modeset",
       NULL
     };
     bb_run_fork_wait(mod_argv, 10);
-    while (retries-- > 0 && module_is_loaded(driver) == 1) {
+    while (retries-- > 0 && module_is_loaded("nvidia_uvm") == 1) {
       usleep(100000);
     }
     if (module_is_loaded(driver) == 1) {
@@ -113,7 +112,27 @@ int module_unload(char *driver) {
       return 0;
     }
   }
-    else if (module_is_loaded(driver) == 1) {
+
+  else if (module_is_loaded("nvidia_modeset") == 1) {
+    int retries = 30;
+    bb_log(LOG_INFO, "Unloading nvidia_modeset driver\n");
+    char *mod_argv[] = {
+      "modprobe",
+      "-r",
+      "nvidia_modeset",
+      NULL
+    };
+    bb_run_fork_wait(mod_argv, 10);
+    while (retries-- > 0 && module_is_loaded("nvidia_modeset") == 1) {
+      usleep(100000);
+    }
+    if (module_is_loaded(driver) == 1) {
+      bb_log(LOG_ERR, "Unloading %s driver timed out.\n", driver);
+      return 0;
+    }
+  }
+
+  else if (module_is_loaded(driver) == 1) {
       int retries = 30;
       bb_log(LOG_INFO, "Unloading %s driver\n", driver);
       char *mod_argv[] = {
@@ -130,7 +149,7 @@ int module_unload(char *driver) {
         bb_log(LOG_ERR, "Unloading %s driver timed out.\n", driver);
         return 0;
       }
-    }
+  }
   return 1;
 }
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin