Your message dated Sun, 28 Nov 2010 20:34:12 +0100
with message-id <[email protected]>
and subject line Re: nvidia-kernel-source: Please support compilation against 
non-paravirt ops style Xen kernels
has caused the Debian Bug report #500175,
regarding nvidia-kernel-source: Please support compilation against non-paravirt 
ops style Xen kernels
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
500175: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=500175
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: nvidia-kernel-source
Version: 173.14.09-5.0.hellion1
Severity: wishlist
Tags: patch

The nvidia kernel source is currently patched to remove the Xen special casing
in order to allow it to build and run against a kernel which has both
CONFIG_PARAVIRT=y and CONFIG_XEN=y but is running natively. (I think this was
due to #481485, #482305, #496173 etc)

The kernel team are proposing to enable a patch to support the old-style (i.e.
non-CONFIG_PARAVIRT) CONFIG_XEN in order to regain domain0 and 64 bit support
for Lenny. See http://lists.debian.org/debian-kernel/2008/09/msg00742.html and
http://lists.alioth.debian.org/pipermail/pkg-xen-devel/2008-September/002044.html
This will unfortunately break the compilation of the current nvidia kernel
source against these kernels.

I have updated the xen.patch to support both CONFIG_PARAVIRT-Xen (running Xen)
and Legacy-Xen. I have tested with 2.6.26-1-amd64 (CONFIG_PARAVIRT running on
native, pkg version 2.6.26-5) as well as 2.6.26-1-xen-amd64 (Legacy-Xen,
running as a Xen domain 0, pkg version 2.6.26-7~snapshot.12252) and
2.6.18.8-xen (Legacy-Xen, running as a Xen domain 0, my own build). I also
build tested against 2.6.26-1-686 but can't reboot that machine at the moment
since it's running a long running test.

I've filed this bug as a wishlist preemptively before the kernel is uploaded,
once the kernel goes in presumably the priority will increase.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-1-xen-amd64 (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages nvidia-kernel-source depends on:
ii  debhelper                     7.0.17     helper programs for debian/rules
ii  dpatch                        2.0.30     patch maintenance system for Debia
ii  make                          3.81-5     The GNU version of the "make" util
ii  sed                           4.1.5-8    The GNU sed stream editor

Versions of packages nvidia-kernel-source recommends:
ii  devscripts                   2.10.35     scripts to make the life of a Debi
ii  kernel-package               11.001-0.1  A utility for building Linux kerne
ii  nvidia-glx                   173.14.09-5 NVIDIA binary Xorg driver

nvidia-kernel-source suggests no packages.

-- no debconf information
diff -x debian -x Module.symvers -x modules.order -x runtest -X /home/ijc/development/dontdiff.txt -purN usr/src/nv/conftest.sh usr/src/nv/conftest.sh
--- usr/src/nv/conftest.sh	2008-09-25 18:01:04.000000000 +0100
+++ usr/src/nv/conftest.sh	2008-09-25 18:08:37.000000000 +0100
@@ -31,7 +31,7 @@ test_xen() {
         # that it's not a Xen kernel.
         #
         echo "#include <linux/autoconf.h>
-        #ifdef CONFIG_XEN
+        #if defined(CONFIG_XEN) && !defined(CONFIG_PARAVIRT)
         #error CONFIG_XEN defined!
         #endif
         " > conftest$$.c
@@ -46,7 +46,7 @@ test_xen() {
     else
         CONFIG=$HEADERS/../.config
         if [ -f $CONFIG ]; then
-            if [ -z "$(grep "^CONFIG_XEN=y" $CONFIG)" ]; then
+            if [ -z "$(grep "^CONFIG_XEN=y" $CONFIG)" ] || [ -z $(grep "^CONFIG_PARAVIRT=y" /boot/config-2.6.26-1-xen-amd64 ) ]; then
                 XEN_PRESENT="0"
             fi
         fi
@@ -74,6 +74,7 @@ build_cflags() {
         fi
         if [ "$XEN_PRESENT" != "0" ]; then
             MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-xen $MACH_CFLAGS"
+            MACH_CFLAGS="-I$HEADERS/asm-x86/mach-xen $MACH_CFLAGS"
         fi
     else
         MACH_CFLAGS="-I$HEADERS/asm/mach-default"
@@ -1244,33 +1245,7 @@ case "$5" in
     ;;
 
     xen_sanity_check)
-        #
-        # Check if the target kernel is a Xen kernel. If so, then exit, since
-        # the driver doesn't currently work with Xen.
-        #
-        VERBOSE=$6
-
-        if [ -n "$IGNORE_XEN_PRESENCE" ]; then
-            exit 0
-        fi
-
-        if [ "$XEN_PRESENT" != "0" ]; then
-            echo "The kernel you are installing for is a Xen kernel!";
-            echo "";
-            echo "The NVIDIA driver does not currently work on Xen kernels. If ";
-            echo "you are using a stock distribution kernel, please install ";
-            echo "a variant of this kernel without Xen support; if this is a ";
-            echo "custom kernel, please install a standard Linux kernel.  Then ";
-            echo "try installing the NVIDIA kernel module again.";
-            echo "";
-            if [ "$VERBOSE" = "full_output" ]; then
-                echo "*** Failed Xen sanity check. Bailing out! ***";
-                echo "";
-            fi
-            exit 1
-        else
-            exit 0
-        fi
+        exit 0
     ;;
 
     compile_tests)
diff -x debian -x Module.symvers -x modules.order -x runtest -X /home/ijc/development/dontdiff.txt -purN usr/src/nv/nv.c usr/src/nv/nv.c
--- usr/src/nv/nv.c	2008-09-25 18:01:04.000000000 +0100
+++ usr/src/nv/nv.c	2008-09-25 18:09:31.000000000 +0100
@@ -2040,7 +2040,7 @@ int nv_kern_open(
             goto failed;
         }
 
-#if defined(CONFIG_XEN) && defined(NVCPU_X86)
+#if defined(NV_LEGACY_XEN) && defined(NVCPU_X86)
         if (HYPERVISOR_memory_op(XENMEM_maximum_ram_page, NULL) > 0xfffff)
         {
             nv_printf(NV_DBG_ERRORS,
@@ -2063,7 +2063,7 @@ int nv_kern_open(
         nvl->tasklet.data = (unsigned long) nv;
         tasklet_enable(&nvl->tasklet);
 
-#if defined(CONFIG_XEN)
+#if defined(NV_LEGACY_XEN)
         if ((nvl->dev->dma_mask <= 0xffffffff) &&
             (HYPERVISOR_memory_op(XENMEM_maximum_ram_page, NULL) > 0xfffff))
         {
@@ -3944,7 +3944,7 @@ RM_STATUS NV_API_CALL nv_agp_init(
     U032         config
 )
 {
-#if !defined(CONFIG_XEN)
+#if !defined(NV_LEGACY_XEN)
     RM_STATUS status = RM_ERROR;
     static int old_error = 0;
     nv_stack_t *sp = NULL;
diff -x debian -x Module.symvers -x modules.order -x runtest -X /home/ijc/development/dontdiff.txt -purN usr/src/nv/nv-linux.h usr/src/nv/nv-linux.h
--- usr/src/nv/nv-linux.h	2008-09-25 18:01:04.000000000 +0100
+++ usr/src/nv/nv-linux.h	2008-09-25 18:09:31.000000000 +0100
@@ -108,7 +108,11 @@
 #include <linux/completion.h>
 #include <linux/highmem.h>
 
-#ifdef CONFIG_XEN
+#if defined(CONFIG_XEN) && !defined(CONFIG_PARAVIRT)
+#define NV_LEGACY_XEN 1
+#endif
+
+#ifdef NV_LEGACY_XEN
 #include <asm/maddr.h>
 #include <xen/interface/memory.h>
 #endif
@@ -144,7 +148,7 @@
 #include <linux/agpgart.h>
 #endif
 
-#if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && !defined(CONFIG_XEN)
+#if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && !defined(NV_LEGACY_XEN)
 #define NV_ENABLE_PAT_SUPPORT
 #endif
 
@@ -727,7 +731,7 @@ static inline int nv_execute_on_all_cpus
 #define NV_TASK_STRUCT_RLIM(current)  ((current)->rlim)
 #endif
 
-#ifdef CONFIG_XEN
+#ifdef NV_LEGACY_XEN
 #define NV_GET_DMA_ADDRESS(phys_addr) phys_to_machine(phys_addr)
 #else
 #define NV_GET_DMA_ADDRESS(phys_addr) (phys_addr)
@@ -884,7 +888,7 @@ typedef void irqreturn_t;
 #else
 #error "NV_REMAP_PAGE_RANGE() undefined!"
 #endif
-#if !defined(CONFIG_XEN)
+#if !defined(NV_LEGACY_XEN)
 #define NV_IO_REMAP_PAGE_RANGE(from, offset, x...) \
     NV_REMAP_PAGE_RANGE(from, offset, x)
 #else
diff -x debian -x Module.symvers -x modules.order -x runtest -X /home/ijc/development/dontdiff.txt -purN usr/src/nv/nv-vm.c usr/src/nv/nv-vm.c
--- usr/src/nv/nv-vm.c	2008-09-25 18:01:04.000000000 +0100
+++ usr/src/nv/nv-vm.c	2008-09-25 18:09:31.000000000 +0100
@@ -312,7 +312,7 @@ static inline void nv_sg_unmap_buffer(
 #endif
 
 #if (defined(KERNEL_2_4) || defined(NV_CPA_DF_LIST_BUG) || \
-  (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20))) && !defined(CONFIG_XEN)
+  (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20))) && !defined(NV_LEGACY_XEN)
 #define NV_CPA_NEEDS_FLUSHING 1
 #endif
 
diff -x debian -x Module.symvers -x modules.order -x runtest -X /home/ijc/development/dontdiff.txt -purN usr/src/nv/os-interface.c usr/src/nv/os-interface.c
--- usr/src/nv/os-interface.c	2008-09-25 18:01:04.000000000 +0100
+++ usr/src/nv/os-interface.c	2008-09-25 18:09:31.000000000 +0100
@@ -609,7 +609,7 @@ RM_STATUS NV_API_CALL os_delay(U032 Mill
     if (jiffies) 
     {
         // if we have at least 1 full jiffy to wait, give up the cpu
-#if !defined(CONFIG_XEN)
+#if !defined(NV_LEGACY_XEN)
         // but first, make sure we haven't raised the irql level on
         // this cpu (most likely holding a lock). I'm seeing cases
         // where we give up the cpu with raised irql, and never get
@@ -623,7 +623,7 @@ RM_STATUS NV_API_CALL os_delay(U032 Mill
 #endif
             /* give up the cpu */
             current->state = TASK_INTERRUPTIBLE;
-#if !defined(CONFIG_XEN)
+#if !defined(NV_LEGACY_XEN)
         }
         else
         {
@@ -1377,7 +1377,7 @@ RM_STATUS NV_API_CALL os_set_mlock_capab
      * If you prefer to manually grant the necessary capability and 
      * adjust the resource limit, disable the lines below.
      */
-#if !defined(CONFIG_XEN) && !defined(CONFIG_X86_4G)
+#if !defined(NV_LEGACY_XEN) && !defined(CONFIG_X86_4G)
     struct rlimit *rlim = NV_TASK_STRUCT_RLIM(current);
     rlim[RLIMIT_MEMLOCK].rlim_cur = RLIM_INFINITY;
     cap_raise(current->cap_effective, CAP_IPC_LOCK);

--- End Message ---
--- Begin Message ---
On Wednesday, 25. August 2010 05:57:00 Andreas Beckmann wrote:
> Is this issue still present with the current driver (195.36.31-2 entered
> unstable yesterday) and kernel versions (2.6.32-5-*) in testing/unstable?
> The module builds for all kernel flavors of 2.6.32 in Debian (normal,
> openvz, vserver, xen) without needing a patch at all (all old patches that
> did not apply for a long time have been removed from the package source).
> But so far we don't have any reports about someone actually running the
> nvidia module on any of the "virtualized" kernels successfully.

Since we haven't heard from the submitter since we asked for more information 
a few months ago, I assume the problem does no longer exist and I'm closing 
this report now.
If the problem is still reproducible with current driver versions (195.36.31-6 
in testing/unstable or 260.19.21-1 in experimental), feel free to reopen this 
bug report.


Andreas


--- End Message ---

Reply via email to