Multi-card nVidia driver patch

Bob Richmond bob at lorez.org
Wed Dec 16 22:14:44 CET 2009


The new vga arbiter API in Fedora 12's kernel breaks the nVidia driver 
when used with multiple cards. Drivers that don't need legacy VGA I/O 
are supposed to opt-out of VGA Arbitration.

I posted a patch to nvnews last night that is working for a few people 
(including myself) for multi-card configurations.

http://www.nvnews.net/vbulletin/showthread.php?t=142656

Can the nvidia driver maintainer incorporate the patch in the rpmfusion 
package? The patch is attached.
-------------- next part --------------
*** usr/src/nv/nv-linux.h.orig	2009-11-22 19:27:38.000000000 -0800
--- usr/src/nv/nv-linux.h	2009-12-16 11:02:22.000000000 -0800
***************
*** 83,102 ****
--- 83,105 ----
  
  #if !defined(KERNEL_2_4)
  #include <linux/sched.h>            /* suser(), capable() replacement   */
  #include <linux/moduleparam.h>      /* module_param()                   */
  #include <linux/smp_lock.h>         /* kernel_locked                    */
  #include <asm/tlbflush.h>           /* flush_tlb(), flush_tlb_all()     */
  #include <asm/kmap_types.h>         /* page table entry lookup          */
  #endif
  
  #include <linux/pci.h>              /* pci_find_class, etc              */
+ #if defined(CONFIG_VGA_ARB)
+ #include <linux/vgaarb.h>           /* vga_set_legacy_decoding          */
+ #endif
  #include <linux/interrupt.h>        /* tasklets, interrupt helpers      */
  #include <linux/timer.h>
  
  #include <asm/div64.h>              /* do_div()                         */
  #include <asm/system.h>             /* cli, sli, save_flags             */
  #include <asm/io.h>                 /* ioremap, virt_to_phys            */
  #include <asm/uaccess.h>            /* access_ok                        */
  #include <asm/page.h>               /* PAGE_OFFSET                      */
  #include <asm/pgtable.h>            /* pte bit definitions              */
  
*** usr/src/nv/nv.c.orig	2009-11-22 19:27:36.000000000 -0800
--- usr/src/nv/nv.c	2009-12-16 11:02:54.000000000 -0800
***************
*** 724,743 ****
--- 724,747 ----
                  goto failed;
              }
  
              entry->data = nv;
              entry->read_proc = nv_kern_read_agpinfo;
  #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
              entry->owner = THIS_MODULE;
  #endif
          }
  
+ #if defined(CONFIG_VGA_ARB)
+         vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
+ #endif
+ 
          NV_PCI_DEV_PUT(dev);
      }
  
      entry = create_proc_entry("version", flags, proc_nvidia);
      if (!entry)
          goto failed;
  
      entry->read_proc = nv_kern_read_version;
  #if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
      entry->owner = THIS_MODULE;


More information about the rpmfusion-developers mailing list