rpms/nvidia-173xx-kmod/F-18 fix-build-with-linux-3.10.patch, NONE, 1.1 nvidia-173xx-kmod.spec, 1.93, 1.94

Nicolas Chauvet kwizart at rpmfusion.org
Mon Aug 19 18:08:13 CEST 2013


Author: kwizart

Update of /cvs/nonfree/rpms/nvidia-173xx-kmod/F-18
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv6402/F-18

Modified Files:
	nvidia-173xx-kmod.spec 
Added Files:
	fix-build-with-linux-3.10.patch 
Log Message:
Update to 3.10 kernel


fix-build-with-linux-3.10.patch:
 nv-i2c.c   |   13 --
 nv-linux.h |    1 
 nv.c       |  376 ++++++++++++++++++++++++++++++++++++++-----------------------
 3 files changed, 241 insertions(+), 149 deletions(-)

--- NEW FILE fix-build-with-linux-3.10.patch ---
>From c3248bb6c976c112e9efa9e8f202590b2f9b40a5 Mon Sep 17 00:00:00 2001
From: Alberto Milone <alberto.milone at canonical.com>
Date: Tue, 18 Jun 2013 15:16:18 +0200
Subject: [PATCH 1/1] Add support for Linux 3.10

---
 nv-i2c.c   |   13 +--
 nv-linux.h |    1 +
 nv.c       |  375 ++++++++++++++++++++++++++++++++++++++----------------------
 3 files changed, 241 insertions(+), 148 deletions(-)

diff --git a/usr/src/nv/nv-i2c.c b/usr/src/nv/nv-i2c.c
index 143f9e4..aaee787 100644
--- a/usr/src/nv/nv-i2c.c
+++ b/usr/src/nv/nv-i2c.c
@@ -307,8 +307,6 @@ void* NV_API_CALL nv_i2c_add_adapter(nv_state_t *nv, U032 port)
 BOOL NV_API_CALL nv_i2c_del_adapter(nv_state_t *nv, void *data)
 {
     struct i2c_adapter *pI2cAdapter = (struct i2c_adapter *)data;
-    int osstatus = 0;
-    BOOL wasReleased = FALSE;
 
 #if defined(KERNEL_2_4)
     if (!NV_WEAK_SYMBOL_PRESENT(i2c_add_adapter))
@@ -320,15 +318,10 @@ BOOL NV_API_CALL nv_i2c_del_adapter(nv_state_t *nv, void *data)
     if (!pI2cAdapter) return FALSE;
 
     // attempt release with the OS
-    osstatus = i2c_del_adapter(pI2cAdapter);
-
-    if (!osstatus)
-    {
-        os_free_mem(pI2cAdapter);
-        wasReleased = TRUE;
-    }
+    i2c_del_adapter(pI2cAdapter);
+    os_free_mem(pI2cAdapter);
 
-    return wasReleased;
+    return TRUE;
 }
 
 #else // (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE))
diff --git a/usr/src/nv/nv-linux.h b/usr/src/nv/nv-linux.h
index 963e059..9aac81a 100644
--- a/usr/src/nv/nv-linux.h
+++ b/usr/src/nv/nv-linux.h
@@ -163,6 +163,7 @@
 
 #ifdef CONFIG_PROC_FS
 #include <linux/proc_fs.h>
+#include <linux/seq_file.h>
 #endif
 
 #ifdef CONFIG_MTRR
diff --git a/usr/src/nv/nv.c b/usr/src/nv/nv.c
index f82e46f..570c266 100644
--- a/usr/src/nv/nv.c
+++ b/usr/src/nv/nv.c
@@ -291,7 +291,6 @@ void NV_API_CALL nv_verify_pci_config(nv_state_t *nv, BOOL check_the_bars)
 
 /* nvos_ functions.. do not take a state device parameter  */
 static void     nvos_proc_create(void);
-static void     nvos_proc_remove_all(struct proc_dir_entry *);
 static void     nvos_proc_remove(void);
 static int      nvos_count_devices(nv_stack_t *);
 
@@ -333,12 +332,34 @@ void          nv_kern_rc_timer(unsigned long);
 static int    nv_kern_apm_event(struct pm_dev *, pm_request_t, void *);
 #endif
 
-static int    nv_kern_read_cardinfo(char *, char **, off_t off, int, int *, void *);
-static int    nv_kern_read_status(char *, char **, off_t off, int, int *, void *);
-static int    nv_kern_read_registry(char *, char **, off_t off, int, int *, void *);       
-static int    nv_kern_read_agpinfo(char *, char **, off_t off, int, int *, void *);
-static int    nv_kern_read_version(char *, char **, off_t off, int, int *, void *);
-static int    nv_kern_read_text_file(char *, char **, off_t off, int, int *, void *);
+static const struct file_operations nv_procfs_text_fops;
+static const struct file_operations nv_procfs_read_card_info_fops;
+static const struct file_operations nv_procfs_version_fops;
+static const struct file_operations nv_procfs_read_agp_info_fops;
+static const struct file_operations nv_procfs_read_agp_info_gpu_fops;
+static const struct file_operations nv_procfs_read_agp_status_fops;
+static const struct file_operations nv_procfs_registry_fops;
+
+static int nv_procfs_show_text_file(struct seq_file *, void *);
+static int nv_procfs_open_text_file(struct inode *, struct file *);
+static void nvos_proc_add_text_file(struct proc_dir_entry *, const char *, const char *);
+
+static int nv_procfs_show_card_info(struct seq_file *, void *);
+static int nv_procfs_read_card_info(struct inode *, struct file *);
+
+static int nv_procfs_show_version(struct seq_file *, void *);
+static int nv_procfs_open_version(struct inode *, struct file *);
+
+static int nv_procfs_show_agp_info(struct seq_file *, void *);
+static int nv_procfs_read_agp_info(struct inode *, struct file *);
+
+static int nv_procfs_read_agp_info_gpu(struct inode *, struct file *file);
+static int nv_procfs_show_agp_status(struct seq_file *, void *);
+static int nv_procfs_read_agp_status(struct inode *, struct file *);
+
+static int nv_procfs_show_registry(struct seq_file *, void *);
+static int nv_procfs_open_registry(struct inode *, struct file *);
+
 
 int           nv_kern_ctl_open(struct inode *, struct file *);
 int           nv_kern_ctl_close(struct inode *, struct file *);
@@ -604,6 +625,12 @@ static struct pci_dev* nv_get_pci_device(nv_state_t *nv)
     return NULL;
 }
 
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3,9,255)
+static inline void *PDE_DATA(const struct inode *inode) {
+	return PDE(inode)->data;
+}
+#endif
+
 static void nvos_proc_create(void)
 {
 #ifdef CONFIG_PROC_FS
@@ -623,19 +650,19 @@ static void nvos_proc_create(void)
     nv_state_t *nv;
     nv_linux_state_t *nvl;
 
-    proc_nvidia = create_proc_entry("driver/nvidia", d_flags, NULL);
+    proc_nvidia = proc_mkdir_mode("driver/nvidia", d_flags, NULL);
     if (!proc_nvidia)
         goto failed;
 
-    proc_nvidia_cards = create_proc_entry("cards", d_flags, proc_nvidia);
+    proc_nvidia_cards = proc_mkdir_mode("cards", d_flags, proc_nvidia);
     if (!proc_nvidia_cards)
         goto failed;
 
-    proc_nvidia_warnings = create_proc_entry("warnings", d_flags, proc_nvidia);
+    proc_nvidia_warnings = proc_mkdir_mode("warnings", d_flags, proc_nvidia);
     if (!proc_nvidia_warnings)
         goto failed;
 
-    proc_nvidia_patches = create_proc_entry("patches", d_flags, proc_nvidia);
+    proc_nvidia_patches = proc_mkdir_mode("patches", d_flags, proc_nvidia);
     if (!proc_nvidia_patches)
         goto failed;
 
@@ -660,24 +687,19 @@ static void nvos_proc_create(void)
             break;
 
         sprintf(name, "%d", i++);
-        entry = create_proc_entry(name, flags, proc_nvidia_cards);
+        entry = proc_create_data(name, flags, proc_nvidia_cards,
+                &nv_procfs_read_card_info_fops, nv);
         if (!entry) {
             NV_PCI_DEV_PUT(dev);
             goto failed;
         }
 
-        entry->data = nv;
-        entry->read_proc = nv_kern_read_cardinfo;
-#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-        entry->owner = THIS_MODULE;
-#endif
-
         if (nvos_find_agp_capability(dev)) {
             /*
              * Create the /proc/driver/nvidia/agp/{status,host-bridge,card}
              * entries now that we know there's AGP hardware.
              */
-            entry = create_proc_entry("agp", d_flags, proc_nvidia);
+            entry = proc_mkdir_mode("agp", d_flags, proc_nvidia);
             if (!entry) {
                 NV_PCI_DEV_PUT(dev);
                 goto failed;
@@ -688,72 +710,78 @@ static void nvos_proc_create(void)
 #endif
             proc_nvidia_agp = entry;
 
-            entry = create_proc_entry("status", flags, proc_nvidia_agp);
+            entry = proc_create_data("status", flags, proc_nvidia_agp,
+                &nv_procfs_read_agp_status_fops, nv);
             if (!entry) {
                 NV_PCI_DEV_PUT(dev);
                 goto failed;
             }
 
-            entry->data = nv;
-            entry->read_proc = nv_kern_read_status;
-#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-            entry->owner = THIS_MODULE;
-#endif
+            entry = proc_create("host-bridge", flags, proc_nvidia_agp,
+                &nv_procfs_read_agp_info_fops);
 
-            entry = create_proc_entry("host-bridge", flags, proc_nvidia_agp);
             if (!entry) {
                 NV_PCI_DEV_PUT(dev);
                 goto failed;
             }
 
-            entry->data = NULL;
-            entry->read_proc = nv_kern_read_agpinfo;
-#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-            entry->owner = THIS_MODULE;
-#endif
-
-            entry = create_proc_entry("card", flags, proc_nvidia_agp);
+            entry = proc_create_data("card", flags, proc_nvidia_agp,
+                &nv_procfs_read_agp_info_gpu_fops, nv);
             if (!entry) {
                 NV_PCI_DEV_PUT(dev);
                 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
         }
 
         NV_PCI_DEV_PUT(dev);
     }
 
-    entry = create_proc_entry("version", flags, proc_nvidia);
+    entry = proc_create("version", flags, proc_nvidia, &nv_procfs_version_fops);
     if (!entry)
         goto failed;
 
-    entry->read_proc = nv_kern_read_version;
-#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-    entry->owner = THIS_MODULE;
-#endif
-
-    entry = create_proc_entry("registry", flags, proc_nvidia);
+    entry = proc_create("registry", flags, proc_nvidia,
+        &nv_procfs_registry_fops);
     if (!entry)
         goto failed;
 
-    entry->read_proc = nv_kern_read_registry;
-#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-    entry->owner = THIS_MODULE;
-#endif
-
     return;
 
 failed:
     nv_printf(NV_DBG_ERRORS, "NVRM: failed to create /proc entries!\n");
-    nvos_proc_remove_all(proc_nvidia);
+    remove_proc_subtree("nvidia", proc_nvidia);
 #endif
 }
 
+static int
+nv_procfs_show_text_file(
+    struct seq_file *m,
+    void *v
+)
+{
+    seq_printf(m, "%s", (char *)m->private);
+
+    return 0;
+}
+
+static int
+nv_procfs_open_text_file(
+    struct inode *inode,
+    struct file *file
+)
+{
+    return single_open(file, nv_procfs_show_text_file, PDE_DATA(inode));
+}
+
+static const struct file_operations nv_procfs_text_fops = {
+    .owner   = THIS_MODULE,
+    .open    = nv_procfs_open_text_file,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
 static void
 nvos_proc_add_text_file(
     struct proc_dir_entry *parent,
@@ -762,41 +790,18 @@ nvos_proc_add_text_file(
 )
 {
 #ifdef CONFIG_PROC_FS
-    struct proc_dir_entry *entry;
-
     /* world readable file */
     int flags = S_IFREG | S_IRUGO;
 
-    entry = create_proc_entry(filename, flags, parent);
-    if (!entry) return;
-
-    entry->data = (void *)text;
-    entry->read_proc = nv_kern_read_text_file;
-#if defined(NV_PROC_DIR_ENTRY_HAS_OWNER)
-    entry->owner = THIS_MODULE;
-#endif
+    proc_create_data(filename, flags, parent, &nv_procfs_text_fops,
+        (void *)text);
 #endif
 }
 
-#ifdef CONFIG_PROC_FS
-static void nvos_proc_remove_all(struct proc_dir_entry *entry)
-{
-    while (entry) {
-        struct proc_dir_entry *next = entry->next;
-        if (entry->subdir)
-            nvos_proc_remove_all(entry->subdir);
-        remove_proc_entry(entry->name, entry->parent);
-        if (entry == proc_nvidia)
-            break;
-        entry = next;
-    }
-}
-#endif
-
 static void nvos_proc_remove(void)
 {
 #ifdef CONFIG_PROC_FS
-    nvos_proc_remove_all(proc_nvidia);
+    remove_proc_subtree("nvidia", proc_nvidia);
 #endif
 }
 
@@ -3065,18 +3070,19 @@ void   NV_API_CALL  nv_set_dma_address_size(
 }
 
 static int
-nv_kern_read_cardinfo(char *page, char **start, off_t off,
-        int count, int *eof, void *data)
+nv_procfs_show_card_info(
+    struct seq_file *m,
+    void *v
+)
 {
     struct pci_dev *dev;
     char *type, *fmt, tmpstr[NV_DEVICE_NAME_LENGTH];
-    int len = 0, status;
+    int status;
     U032 vbios_rev1, vbios_rev2, vbios_rev3, vbios_rev4, vbios_rev5;
     nv_stack_t *sp = NULL;
 
     nv_state_t *nv;
-    nv = (nv_state_t *) data;
-    *eof = 1;
+    nv = (nv_state_t *) m->private;
 
     dev = nv_get_pci_device(nv);
     if (!dev)
@@ -3094,38 +3100,38 @@ nv_kern_read_cardinfo(char *page, char **start, off_t off,
         strcpy (tmpstr, "Unknown");
     }
     
-    len += sprintf(page+len, "Model: \t\t %s\n", tmpstr);
-    len += sprintf(page+len, "IRQ:   \t\t %d\n", nv->interrupt_line);
+    seq_printf(m, "Model: \t\t %s\n", tmpstr);
+    seq_printf(m, "IRQ:   \t\t %d\n", nv->interrupt_line);
 
     status = rm_get_vbios_version(sp, nv, &vbios_rev1, &vbios_rev2,
                                   &vbios_rev3, &vbios_rev4, &vbios_rev5);
 
     if (status < 0) {
         /* before rm_init_adapter */
-        len += sprintf(page+len, "Video BIOS: \t ??.??.??.??.??\n");
+        seq_printf(m, "Video BIOS: \t ??.??.??.??.??\n");
     } else {
         fmt = "Video BIOS: \t %02x.%02x.%02x.%02x.%02x\n";
-        len += sprintf(page+len, fmt, vbios_rev1, vbios_rev2, vbios_rev3,
+        seq_printf(m, fmt, vbios_rev1, vbios_rev2, vbios_rev3,
                                                   vbios_rev4, vbios_rev5);
     }
 
     if (nvos_find_agp_capability(dev)) type = "AGP";
     else if (nvos_find_pci_express_capability(dev)) type = "PCI-E";
     else type = "PCI";
-    len += sprintf(page+len, "Card Type: \t %s\n", type);
+    seq_printf(m, "Card Type: \t %s\n", type);
 
     // Report the number of bits set in dev->dma_mask
-    len += sprintf(page+len, "DMA Size: \t %d bits\n",
+    seq_printf(m, "DMA Size: \t %d bits\n",
      nv_count_bits(dev->dma_mask));
-    len += sprintf(page+len, "DMA Mask: \t 0x%llx\n", dev->dma_mask);
-    len += sprintf(page+len, "Bus Location: \t %02x.%02x.%x\n",
+    seq_printf(m, "DMA Mask: \t 0x%llx\n", dev->dma_mask);
+    seq_printf(m, "Bus Location: \t %02x.%02x.%x\n",
                    nv->bus, nv->slot, PCI_FUNC(dev->devfn));
 #ifdef DEBUG
     do
     {
         int j;
         for (j = 0; j < NV_GPU_NUM_BARS; j++)
-            len += sprintf(page+len, "BAR%i: \t\t 0x%08x (%iMB)\n",
+            seq_printf(m, "BAR%i: \t\t 0x%08x (%iMB)\n",
                            j, nv->bars[j].address, nv->bars[j].size >> 20);
     } while(0);
 #endif
@@ -3133,35 +3139,68 @@ nv_kern_read_cardinfo(char *page, char **start, off_t off,
     NV_KMEM_CACHE_FREE_STACK(sp);
  
     NV_PCI_DEV_PUT(dev);
-    return len;
+    return 0;
+}
+
+static int
+nv_procfs_read_card_info(
+    struct inode *inode,
+    struct file *file
+)
+{
+    return single_open(file, nv_procfs_show_card_info, PDE_DATA(inode));
 }
 
+static const struct file_operations nv_procfs_read_card_info_fops = {
+    .owner   = THIS_MODULE,
+    .open    = nv_procfs_read_card_info,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
 static int
-nv_kern_read_version(char *page, char **start, off_t off,
-        int count, int *eof, void *data)
+nv_procfs_show_version(
+    struct seq_file *m,
+    void *v
+)
 {
-    int len = 0;
-    *eof = 1;
-    
-    len += sprintf(page+len, "NVRM version: %s\n", pNVRM_ID);
-    len += sprintf(page+len, "GCC version:  %s\n", NV_COMPILER);
-    
-    return len;
+    seq_printf(m, "NVRM version: %s\n", pNVRM_ID);
+    seq_printf(m, "GCC version:  %s\n", NV_COMPILER);
+
+    return 0;
+}
+
+static int
+nv_procfs_open_version(
+    struct inode *inode,
+    struct file *file
+)
+{
+    return single_open(file, nv_procfs_show_version, NULL);
 }
 
+static const struct file_operations nv_procfs_version_fops = {
+    .owner   = THIS_MODULE,
+    .open    = nv_procfs_open_version,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
 static int
-nv_kern_read_agpinfo(char *page, char **start, off_t off,
-        int count, int *eof, void *data)
+nv_procfs_show_agp_info(
+    struct seq_file *m,
+    void *v
+)
 {
     struct pci_dev *dev;
     char   *fw, *sba;
     u8     cap_ptr;
     u32    status, command, agp_rate;
-    int    len = 0;
     
     nv_state_t *nv;
-    nv = (nv_state_t *) data;
-    *eof = 1;
+    nv = (nv_state_t *) m->private;
 
     if (nv) {
         dev = nv_get_pci_device(nv);
@@ -3172,12 +3211,12 @@ nv_kern_read_agpinfo(char *page, char **start, off_t off,
         if (!dev)
             return 0;
 
-        len += sprintf(page+len, "Host Bridge: \t ");
+        seq_printf(m, "Host Bridge: \t ");
 
 #if defined(CONFIG_PCI_NAMES)
-        len += sprintf(page+len, "%s\n", NV_PCI_DEVICE_NAME(dev));
+        seq_printf(m, "%s\n", NV_PCI_DEVICE_NAME(dev));
 #else
-        len += sprintf(page+len, "PCI device %04x:%04x\n",
+        seq_printf(m, "PCI device %04x:%04x\n",
                 dev->vendor, dev->device);
 #endif
     }
@@ -3191,40 +3230,74 @@ nv_kern_read_agpinfo(char *page, char **start, off_t off,
     fw  = (status & 0x00000010) ? "Supported" : "Not Supported";
     sba = (status & 0x00000200) ? "Supported" : "Not Supported";
 
-    len += sprintf(page+len, "Fast Writes: \t %s\n", fw);
-    len += sprintf(page+len, "SBA: \t\t %s\n", sba);
+    seq_printf(m, "Fast Writes: \t %s\n", fw);
+    seq_printf(m, "SBA: \t\t %s\n", sba);
 
     agp_rate = status & 0x7;
     if (status & 0x8) // agp 3.0
         agp_rate <<= 2;
 
-    len += sprintf(page+len, "AGP Rates: \t %s%s%s%s\n",
+    seq_printf(m, "AGP Rates: \t %s%s%s%s\n",
             (agp_rate & 0x00000008) ? "8x " : "",
             (agp_rate & 0x00000004) ? "4x " : "",
             (agp_rate & 0x00000002) ? "2x " : "",
             (agp_rate & 0x00000001) ? "1x " : "");
 
-    len += sprintf(page+len, "Registers: \t 0x%08x:0x%08x\n", status, command);
+    seq_printf(m, "Registers: \t 0x%08x:0x%08x\n", status, command);
 
     NV_PCI_DEV_PUT(dev);
-    return len;
+    return 0;
+}
+
+static int
+nv_procfs_read_agp_info(
+    struct inode *inode,
+    struct file *file
+)
+{
+    return single_open(file, nv_procfs_show_agp_info, NULL);
 }
 
+static const struct file_operations nv_procfs_read_agp_info_fops = {
+    .owner   = THIS_MODULE,
+    .open    = nv_procfs_read_agp_info,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
 static int
-nv_kern_read_status(char *page, char **start, off_t off,
-        int count, int *eof, void *data)
+nv_procfs_read_agp_info_gpu(
+    struct inode *inode,
+    struct file *file
+)
+{
+    return single_open(file, nv_procfs_show_agp_info, PDE_DATA(inode));
+}
+
+static const struct file_operations nv_procfs_read_agp_info_gpu_fops = {
+    .owner   = THIS_MODULE,
+    .open    = nv_procfs_read_agp_info_gpu,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
+static int
+nv_procfs_show_agp_status(
+    struct seq_file *m,
+    void *v
+)
 {
     struct pci_dev *dev;
     char   *fw, *sba, *drv;
-    int    len = 0;
     u8     cap_ptr;
     u32    scratch;
     u32    status, command, agp_rate;
     nv_stack_t *sp = NULL;
 
     nv_state_t *nv;
-    nv = (nv_state_t *) data;
-    *eof = 1;
+    nv = (nv_state_t *) m->private;
 
     dev = nvos_get_agp_device_by_class(PCI_CLASS_BRIDGE_HOST);
     if (!dev)
@@ -3246,10 +3319,10 @@ nv_kern_read_status(char *page, char **start, off_t off,
     command &= scratch;
 
     if (NV_AGP_ENABLED(nv) && (command & 0x100)) {
-        len += sprintf(page+len, "Status: \t Enabled\n");
+        seq_printf(m, "Status: \t Enabled\n");
 
         drv = NV_OSAGP_ENABLED(nv) ? "AGPGART" : "NVIDIA";
-        len += sprintf(page+len, "Driver: \t %s\n", drv);
+        seq_printf(m, "Driver: \t %s\n", drv);
 
         // mask off agp rate. 
         // If this is agp 3.0, we need to shift the value
@@ -3257,13 +3330,13 @@ nv_kern_read_status(char *page, char **start, off_t off,
         if (status & 0x8) // agp 3.0
             agp_rate <<= 2;
 
-        len += sprintf(page+len, "AGP Rate: \t %dx\n", agp_rate);
+        seq_printf(m, "AGP Rate: \t %dx\n", agp_rate);
 
         fw = (command & 0x00000010) ? "Enabled" : "Disabled";
-        len += sprintf(page+len, "Fast Writes: \t %s\n", fw);
+        seq_printf(m, "Fast Writes: \t %s\n", fw);
 
         sba = (command & 0x00000200) ? "Enabled" : "Disabled";
-        len += sprintf(page+len, "SBA: \t\t %s\n", sba);
+        seq_printf(m, "SBA: \t\t %s\n", sba);
     } else {
         int agp_config = 0;
 
@@ -3274,7 +3347,7 @@ nv_kern_read_status(char *page, char **start, off_t off,
             return 0;
         }
 
-        len += sprintf(page+len, "Status: \t Disabled\n\n");
+        seq_printf(m, "Status: \t Disabled\n\n");
 
         /*
          * If we find AGP is disabled, but the RM registry indicates it
@@ -3288,7 +3361,7 @@ nv_kern_read_status(char *page, char **start, off_t off,
         rm_read_registry_dword(sp, nv, "NVreg", "XNvAGP", &agp_config);
 
         if (agp_config != NVOS_AGP_CONFIG_DISABLE_AGP && NV_AGP_FAILED(nv)) {
-            len += sprintf(page+len,
+            seq_printf(m,
                   "AGP initialization failed, please check the ouput  \n"
                   "of the 'dmesg' command and/or your system log file \n"
                   "for additional information on this problem.        \n");
@@ -3298,37 +3371,63 @@ nv_kern_read_status(char *page, char **start, off_t off,
     }
 
     NV_PCI_DEV_PUT(dev);
-    return len;
+    return 0;
+}
+
+static int
+nv_procfs_read_agp_status(
+    struct inode *inode,
+    struct file *file
+)
+{
+    return single_open(file, nv_procfs_show_agp_status, PDE_DATA(inode));
 }
 
+static const struct file_operations nv_procfs_read_agp_status_fops = {
+    .owner   = THIS_MODULE,
+    .open    = nv_procfs_read_agp_status,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
 extern nv_parm_t nv_parms[];
 extern char *NVreg_RegistryDwords;
 
 static int
-nv_kern_read_registry(char *page, char **start, off_t off,
-        int count, int *eof, void *data)
+nv_procfs_show_registry(
+    struct seq_file *m,
+    void *v
+)
 {
-    unsigned int i, len = 0;
+    unsigned int i;
     nv_parm_t *entry;
-    *eof = 1;
 
     for (i = 0; (entry = &nv_parms[i])->name != NULL; i++)
-        len += sprintf(page+len, "%s: %u\n", entry->name, *entry->data);
+        seq_printf(m, "%s: %u\n", entry->name, *entry->data);
 
-    len += sprintf(page+len, "RegistryDwords: \"%s\"\n",
+    seq_printf(m, "RegistryDwords: \"%s\"\n",
                 (NVreg_RegistryDwords != NULL) ? NVreg_RegistryDwords : "");
 
-    return len;
+    return 0;
 }
 
 static int
-nv_kern_read_text_file(char *page, char **start, off_t off,
-        int count, int *eof, void *data)
+nv_procfs_open_registry(
+    struct inode *inode,
+    struct file  *file
+)
 {
-    *eof = 1;
-    return sprintf(page, "%s", (char *)data);
+    return single_open(file, nv_procfs_show_registry, NULL);
 }
 
+static const struct file_operations nv_procfs_registry_fops = {
+    .open    = nv_procfs_open_registry,
+    .read    = seq_read,
+    .llseek  = seq_lseek,
+    .release = single_release,
+};
+
 /***
  *** EXPORTS to rest of resman
  ***/
-- 
1.7.9.5



Index: nvidia-173xx-kmod.spec
===================================================================
RCS file: /cvs/nonfree/rpms/nvidia-173xx-kmod/F-18/nvidia-173xx-kmod.spec,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -r1.93 -r1.94
--- nvidia-173xx-kmod.spec	16 Aug 2013 18:15:03 -0000	1.93
+++ nvidia-173xx-kmod.spec	19 Aug 2013 16:08:12 -0000	1.94
@@ -3,12 +3,12 @@
 # "buildforkernels newest" macro for just that build; immediately after
 # queuing that build enable the macro again for subsequent builds; that way
 # a new akmod package will only get build when a new one is actually needed
-%global buildforkernels newest
+#global buildforkernels newest
 
 Name:          nvidia-173xx-kmod
 Version:       173.14.37
 # Taken over by kmodtool
-Release:       1%{?dist}.12
+Release:       2%{?dist}.4
 Summary:       NVIDIA 173xx display driver kernel module
 Group:         System Environment/Kernel
 License:       Redistributable, no modification permitted
@@ -18,6 +18,7 @@
 # http://us.download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}-pkg0.run
 
 Source0:       nvidia-kmod-data-%{version}.tar.bz2
+Patch0:        fix-build-with-linux-3.10.patch
 
 BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -45,7 +46,7 @@
 for arch in x86 x64
 do
     pushd nvidiapkg-${arch}
-echo "Nothing to patch"
+%patch0 -p1
     popd
 done
 
@@ -89,16 +90,22 @@
 
 
 %changelog
-* Fri Aug 16 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-1.12
+* Fri Aug 16 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-2.4
 - Rebuilt for kernel
 
-* Tue Aug 13 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-1.11
+* Tue Aug 13 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-2.3
 - Rebuilt for kernel
 
-* Sat Aug 03 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-1.10
+* Thu Aug 08 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-2.2
 - Rebuilt for kernel
 
-* Tue Jul 23 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-1.9
+* Tue Jul 30 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-2.1
+- Rebuilt for kernel
+
+* Fri Jul 26 2013 Leigh Scott <leigh123linux at googlemail.com> - 173.14.37-2
+- patch for 3.10 kernel
+
+* Fri Jul 26 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-1.9
 - Rebuilt for kernel
 
 * Sat Jul 13 2013 Nicolas Chauvet <kwizart at gmail.com> - 173.14.37-1.8


More information about the rpmfusion-commits mailing list