summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2008-02-13 10:20:39 -0800
committerAaron Plattner <aplattner@nvidia.com>2008-02-13 10:20:39 -0800
commit864dfc4e857e23d50e9c8727e8ee9b83228bfc3f (patch)
treeab043b5446311909bb5a39081aae37b69288ad8b
parent60fe4658175113a476104ff3bde2914ad714c1af (diff)
169.04169.04
-rw-r--r--DRIVER_VERSION2
-rw-r--r--Makefile2
-rw-r--r--command-list.c6
-rw-r--r--install-from-cwd.c3
-rw-r--r--misc.c27
-rw-r--r--nvidia-installer.h2
-rw-r--r--option_table.h10
-rwxr-xr-xrtld_test_Linux-x86bin3056 -> 3136 bytes
-rwxr-xr-xrtld_test_Linux-x86_64bin4688 -> 4536 bytes
9 files changed, 41 insertions, 11 deletions
diff --git a/DRIVER_VERSION b/DRIVER_VERSION
index 54929a2..2d04672 100644
--- a/DRIVER_VERSION
+++ b/DRIVER_VERSION
@@ -1 +1 @@
-100.14.23
+169.04
diff --git a/Makefile b/Makefile
index 10eff53..1db1be2 100644
--- a/Makefile
+++ b/Makefile
@@ -278,7 +278,7 @@ tls_test: tls_test.c
# nvidia-installer to simplify x86-64 builds.
rebuild_rtld_test: rtld_test.c
- gcc -Wall -O2 -fomit-frame-pointer -o $(RTLD_TEST) -lGL $<
+ gcc -Wall -O2 -fomit-frame-pointer -o $(RTLD_TEST) -lGL -lcuda -lpthread -lstdc++ $<
strip $(RTLD_TEST)
# dummy rule to override implicit rule that builds dls_test from
diff --git a/command-list.c b/command-list.c
index 21e4cb6..e02b018 100644
--- a/command-list.c
+++ b/command-list.c
@@ -239,6 +239,12 @@ CommandList *build_command_list(Options *op, Package *p)
" ", p->entries[i].dst, NULL);
add_command(c, RUN_CMD, tmp);
nvfree(tmp);
+ if (op->utils[EXECSTACK] != NULL) {
+ tmp = nvstrcat(op->utils[EXECSTACK], " -c ", p->entries[i].dst,
+ NULL);
+ add_command(c, RUN_CMD, tmp);
+ nvfree(tmp);
+ }
}
}
diff --git a/install-from-cwd.c b/install-from-cwd.c
index f32efcc..2d28b89 100644
--- a/install-from-cwd.c
+++ b/install-from-cwd.c
@@ -237,7 +237,8 @@ int install_from_cwd(Options *op)
/* done */
- if (op->kernel_module_only) {
+ if (op->kernel_module_only || op->no_nvidia_xconfig_question) {
+
ui_message(op, "Installation of the kernel module for the %s "
"(version %s) is now complete.",
p->description, p->version);
diff --git a/misc.c b/misc.c
index d0bbb6d..540ae2e 100644
--- a/misc.c
+++ b/misc.c
@@ -42,6 +42,10 @@
#include <libgen.h>
#include <pci/pci.h>
+#ifndef PCI_CLASS_DISPLAY_3D
+#define PCI_CLASS_DISPLAY_3D 0x302
+#endif
+
#include "nvidia-installer.h"
#include "user-interface.h"
#include "kernel.h"
@@ -704,6 +708,7 @@ int find_system_utils(Options *op)
{ "chcon", "selinux" },
{ "selinuxenabled", "selinux" },
{ "getenforce", "selinux" },
+ { "execstack", "selinux" },
{ "pkg-config", "pkg-config" },
{ "X", "xserver" }
};
@@ -2179,6 +2184,7 @@ int check_for_nvidia_graphics_devices(Options *op, Package *p)
struct pci_access *pacc;
struct pci_dev *dev;
int i, found_supported_device = FALSE;
+ int found_vga_device = FALSE;
uint16 class;
pacc = pci_alloc();
@@ -2192,8 +2198,12 @@ int check_for_nvidia_graphics_devices(Options *op, Package *p)
pci_scan_bus(pacc);
for (dev = pacc->devices; dev != NULL; dev = dev->next) {
- if ((pci_fill_info(dev, PCI_FILL_IDENT) & PCI_FILL_IDENT) &&
- ((class = pci_read_word(dev, PCI_CLASS_DEVICE)) == PCI_CLASS_DISPLAY_VGA) &&
+ if ((pci_fill_info(dev, PCI_FILL_IDENT) & PCI_FILL_IDENT) == 0)
+ continue;
+
+ class = pci_read_word(dev, PCI_CLASS_DEVICE);
+
+ if ((class == PCI_CLASS_DISPLAY_VGA || class == PCI_CLASS_DISPLAY_3D) &&
(dev->vendor_id == 0x10de) /* NVIDIA */ &&
(dev->device_id >= 0x0020) /* TNT or later */) {
/*
@@ -2213,7 +2223,7 @@ int check_for_nvidia_graphics_devices(Options *op, Package *p)
break;
}
}
-
+
ui_warn(op, "The NVIDIA %s GPU installed in this system is supported "
"through the NVIDIA %s legacy Linux graphics drivers. Please "
"visit http://www.nvidia.com/object/unix.html for more "
@@ -2225,7 +2235,13 @@ int check_for_nvidia_graphics_devices(Options *op, Package *p)
found_legacy_device = TRUE;
}
}
- if (!found_legacy_device) found_supported_device = TRUE;
+
+ if (!found_legacy_device) {
+ found_supported_device = TRUE;
+
+ if (class == PCI_CLASS_DISPLAY_VGA)
+ found_vga_device = TRUE;
+ }
}
}
@@ -2241,6 +2257,9 @@ int check_for_nvidia_graphics_devices(Options *op, Package *p)
return FALSE;
}
+ if (!found_vga_device)
+ op->no_nvidia_xconfig_question = TRUE;
+
return TRUE;
} /* check_for_nvidia_graphics_devices() */
diff --git a/nvidia-installer.h b/nvidia-installer.h
index f2a8569..023b739 100644
--- a/nvidia-installer.h
+++ b/nvidia-installer.h
@@ -53,6 +53,7 @@ typedef enum {
CHCON = MAX_SYSTEM_UTILS,
SELINUX_ENABLED,
GETENFORCE,
+ EXECSTACK,
PKG_CONFIG,
XSERVER,
MAX_SYSTEM_OPTIONAL_UTILS
@@ -135,6 +136,7 @@ typedef struct __options {
int selinux_enabled;
int sigwinch_workaround;
int no_x_check;
+ int no_nvidia_xconfig_question;
char *opengl_prefix;
char *opengl_libdir;
diff --git a/option_table.h b/option_table.h
index 313ade6..2398fee 100644
--- a/option_table.h
+++ b/option_table.h
@@ -394,10 +394,12 @@ static const NVOption __options[] = {
"Linux installations using SELinux (Security-Enhanced Linux) "
"require that the security type of all shared libraries be set "
"to 'shlib_t' or 'textrel_shlib_t', depending on the distribution. "
- "nvidia-installer will detect when to set "
- "the security type, and set it using chcon(1) on the shared "
- "libraries it installs. Use this option to override "
- "nvidia-installer's detection of when to set the security type. "
+ "nvidia-installer will detect when to set the security type, "
+ "and set it using chcon(1) on the shared libraries it installs. "
+ "If the execstack(8) system utility is present, nvidia-installer will "
+ "use it to also clear the executable stack flag of the libraries. "
+ "Use this option to override nvidia-installer's detection of when "
+ "to set the security type. "
"Valid values for [FORCE-SELINUX] are 'yes' (force setting of the "
"security type), "
"'no' (prevent setting of the security type), and 'default' "
diff --git a/rtld_test_Linux-x86 b/rtld_test_Linux-x86
index b60ea47..8b4087f 100755
--- a/rtld_test_Linux-x86
+++ b/rtld_test_Linux-x86
Binary files differ
diff --git a/rtld_test_Linux-x86_64 b/rtld_test_Linux-x86_64
index be5e874..3995dd2 100755
--- a/rtld_test_Linux-x86_64
+++ b/rtld_test_Linux-x86_64
Binary files differ