Archiv > Development
Kernel 3.13
clausmuus:
Hi,
ne, noch nicht ausprobiert. Ich hatte keine Zeit mir das genauer anzuschauen und habe deshalb erst mal auf den alten Kernel zurück gestellt.
Wenn es ne Lösung gibt, damit der nvidia Treiber wieder zusammen mit der verwendetem xorg Version funktioniert, teste ich gerne noch mal den neuen Kernel.
Claus
Christian:
Das sollte funktionieren. In den Beiträgen von Pit konnte man das rauslesen.
clausmuus:
OK, ich probiere das mal aus.
Claus
clausmuus:
Es scheint zu funktionieren. Ich hab also wieder auf Kernel 3.13 umgestellt.
Claus
Christian:
Hier ein kompletter Patch der noch andere Kleinigkeiten korrigiert.
Aus dem Urlaub ;)
--- Code: ---diff -rupN NVIDIA-Linux-x86_64-331.38.orig/kernel/nv-acpi.c NVIDIA-Linux-x86_64-331.38/kernel/nv-acpi.c
--- NVIDIA-Linux-x86_64-331.38.orig/kernel/nv-acpi.c 2014-01-25 09:39:47.126966926 +0100
+++ NVIDIA-Linux-x86_64-331.38/kernel/nv-acpi.c 2014-01-26 09:59:45.853427603 +0100
@@ -303,7 +303,10 @@ static int nv_acpi_remove(struct acpi_de
if (pNvAcpiObject->notify_handler_installed)
{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
+ /* beginning with 3.13, acpi_remove_notify_handler() waits for events to finish */
NV_ACPI_OS_WAIT_EVENTS_COMPLETE();
+#endif
// remove event notifier
status = acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, nv_acpi_event);
@@ -1076,10 +1079,17 @@ RM_STATUS NV_API_CALL nv_acpi_dsm_method
NvU8 argument3[4]; /* For all DSM sub functions, input size is 4 */
NvU32 data_size;
acpi_handle dev_handle = NULL;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
#ifdef DEVICE_ACPI_HANDLE
nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
dev_handle = DEVICE_ACPI_HANDLE(&nvl->dev->dev);
#endif
+#else
+#ifdef ACPI_HANDLE
+ nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
+ dev_handle = ACPI_HANDLE(&nvl->dev->dev);
+#endif
+#endif
if (!dev_handle)
return RM_ERR_NOT_SUPPORTED;
@@ -1179,12 +1189,21 @@ RM_STATUS NV_API_CALL nv_acpi_ddc_method
NvU32 i;
acpi_handle dev_handle = NULL;
acpi_handle lcd_dev_handle = NULL;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
#ifdef DEVICE_ACPI_HANDLE
nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
dev_handle = DEVICE_ACPI_HANDLE(&nvl->dev->dev);
#else
return RM_ERR_NOT_SUPPORTED;
#endif
+#else
+#ifdef ACPI_HANDLE
+ nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
+ dev_handle = ACPI_HANDLE(&nvl->dev->dev);
+#else
+ return RM_ERR_NOT_SUPPORTED;
+#endif
+#endif
if (!dev_handle)
return RM_ERR_INVALID_ARGUMENT;
@@ -1294,12 +1313,21 @@ RM_STATUS NV_API_CALL nv_acpi_rom_method
struct acpi_object_list input = { 2, rom_arg };
acpi_handle dev_handle = NULL;
uint32_t offset, length;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
#ifdef DEVICE_ACPI_HANDLE
nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
- dev_handle = DEVICE_ACPI_HANDLE(&nvl->dev->dev);
+ dev_handle = ACPI_DEVICE_HANDLE(&nvl->dev->dev);
#else
return RM_ERR_NOT_SUPPORTED;
#endif
+#else
+#ifdef ACPI_HANDLE
+ nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
+ dev_handle = ACPI_HANDLE(&nvl->dev->dev);
+#else
+ return RM_ERR_NOT_SUPPORTED;
+#endif
+#endif
if (!dev_handle)
return RM_ERR_INVALID_ARGUMENT;
@@ -1364,12 +1392,21 @@ RM_STATUS NV_API_CALL nv_acpi_dod_method
union acpi_object *dod;
acpi_handle dev_handle = NULL;
NvU32 i, count = (*pSize / sizeof(NvU32));
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
#ifdef DEVICE_ACPI_HANDLE
nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
dev_handle = DEVICE_ACPI_HANDLE(&nvl->dev->dev);
#else
return RM_ERR_NOT_SUPPORTED;
#endif
+#else
+#ifdef ACPI_HANDLE
+ nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv);
+ dev_handle = ACPI_HANDLE(&nvl->dev->dev);
+#else
+ return RM_ERR_NOT_SUPPORTED;
+#endif
+#endif
if (!dev_handle)
return RM_ERR_INVALID_ARGUMENT;
diff -rupN NVIDIA-Linux-x86_64-331.38.orig/kernel/uvm/nvidia_uvm_linux.h NVIDIA-Linux-x86_64-331.38/kernel/uvm/nvidia_uvm_linux.h
--- NVIDIA-Linux-x86_64-331.38.orig/kernel/uvm/nvidia_uvm_linux.h 2014-01-25 09:39:47.172966925 +0100
+++ NVIDIA-Linux-x86_64-331.38/kernel/uvm/nvidia_uvm_linux.h 2014-01-25 09:46:40.572999245 +0100
@@ -405,11 +405,17 @@ typedef void irqreturn_t;
// not require the RCU's read lock on current->cred.
//
//
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+#define NV_KUID_TO_UID(value) (__kuid_val(value))
+#else
+#define NV_KUID_TO_UID(value) (value)
+#endif
+
#if defined(NV_TASK_STRUCT_HAS_CRED)
#define NV_CURRENT_EUID() \
- (((typeof(*current->cred) __force __kernel *)current->cred)->euid)
+ NV_KUID_TO_UID(((typeof(*current->cred) __force __kernel *)current->cred)->euid)
#else
-#define NV_CURRENT_EUID() (current->euid)
+#define NV_CURRENT_EUID() NV_KUID_TO_UID(current->euid)
#endif
#define NV_ATOMIC_SET(data,val) atomic_set(&(data), (val))
--- End code ---
Ps: beim DVB vergessen den Patch zu aktivieren. Oder ist dieser jetzt schon obsolet ;)?
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version