Your message dated Mon, 16 Jan 2006 23:36:27 -0500 with message-id <[EMAIL PROTECTED]> and subject line Outdated has caused the attached Bug report 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 I am talking about this indicates a serious mail system misconfiguration somewhere. Please contact me immediately.) Debian bug tracking system administrator (administrator, Debian Bugs database) -------------------------------------- Received: (at submit) by bugs.debian.org; 4 Nov 2004 07:48:13 +0000 >From [EMAIL PROTECTED] Wed Nov 03 23:48:13 2004 Return-path: <[EMAIL PROTECTED]> Received: from dialup-4.246.252.249.dial1.sanjose1.level3.net (nofear.bounceme.net) [4.246.252.249] by spohr.debian.org with esmtp (Exim 3.35 1 (Debian)) id 1CPcLo-0005vn-00; Wed, 03 Nov 2004 23:48:08 -0800 Received: from [10.1.1.66] (hades [10.1.1.66]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by nofear.bounceme.net (Postfix) with ESMTP id CFDD573526 for <[EMAIL PROTECTED]>; Wed, 3 Nov 2004 23:48:04 -0800 (PST) Message-ID: <[EMAIL PROTECTED]> Disposition-Notification-To: "C.Y.M" <[EMAIL PROTECTED]> Date: Wed, 03 Nov 2004 23:48:42 -0800 From: "C.Y.M" <[EMAIL PROTECTED]> Reply-To: [EMAIL PROTECTED] Organization: CooLNeT User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Submit Debian Bugs <[EMAIL PROTECTED]> Subject: Missing Required Patches for 2.6.9 and 2.6.10 X-Enigmail-Version: 0.86.1.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------090701080201060005080504" Delivered-To: [EMAIL PROTECTED] X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2004_03_25 (1.212-2003-09-23-exp) on spohr.debian.org X-Spam-Status: No, hits=-8.0 required=4.0 tests=BAYES_00,HAS_PACKAGE autolearn=no version=2.60-bugs.debian.org_2004_03_25 X-Spam-Level: This is a multi-part message in MIME format. --------------090701080201060005080504 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Package: nvidia-kernel-source Version: 1.0.6111-2 Description: There are several patches missing from the nvidia-kernel sources to function properly in a 2.6.9 or 2.6.10 kernel environment. I can not see any required fixes in 1.0.6111-2. There is just one patch that is missing from this that I have yet to fix: /usr/src/modules/nvidia-kernel/nv/nv.c:3340: warning: `inter_module_put' is deprecated (declared at include/linux/module.h:58 If you could apply these patches and fix the "inter_module_put" deprication, then this should be all up-to-date. BTW, I have attached a file with these patches for easy application. 1) vmalloc_reserve is undefined --- nvidia-kernel/nv/nv.c.original 2004-10-22 21:45:50.000000000 -0700 +++ nvidia-kernel/nv/nv.c 2004-10-22 21:46:31.000000000 -0700 @@ -15,6 +15,8 @@ #include "nv_compiler.h" #include "os-agp.h" +unsigned int __VMALLOC_RESERVE = 128 << 20; + #ifdef MODULE_ALIAS_CHARDEV_MAJOR MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER); #endif 2) The Power suspend model changed in 2.6.9+ --- nvidia-kernel/nv/nv.c.original 2004-10-22 22:18:57.000000000 -0700 +++ nvidia-kernel/nv/nv.c 2004-10-22 22:19:10.000000000 -0700 @@ -3690,9 +3690,16 @@ return -1; } + // Fix up problems with PM_SAVE_STATE being removed from 2.6.9 + #ifdef PM_SAVE_STATE + #define PM_TMP PM_SAVE_STATE + #else + #define PM_TMP PM_SUSPEND + #endif + switch (state) { - case PM_SAVE_STATE: + case PM_TMP: nv_printf(NV_DBG_INFO, "NVRM: ACPI: received standby event\n"); status = rm_power_management(nv, 0, NV_PM_ACPI_STANDBY); break; 3) nv_remap_range is depricated diff -ruN nvidia-kernel/nv/conftest.sh nvidia-kernel-mod/nv/conftest.sh --- nvidia-kernel/nv/conftest.sh 2004-08-05 14:09:49.000000000 -0700 +++ nvidia-kernel-mod/nv/conftest.sh 2004-10-23 16:17:05.000000000 -0700 @@ -23,10 +23,26 @@ fi case "$4" in - remap_page_range) + remap_range) # # Determine the number of arguments expected by remap_page_range. - # + # Extended to determine if should use remap_pfn_range() aswell + # + + echo "#include <linux/mm.h> + int do_test_remap_page_range(void) { + pgprot_t pgprot; + remap_pfn_range(NULL, 0L, 0L, 0L, pgprot); + }" > conftest$$.c + + $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 + rm -f conftest$$.c + + if [ -f conftest$$.o ]; then + echo "PFN" + rm -f conftest$$.o; + exit 0 + fi echo "#include <linux/mm.h> int do_test_remap_page_range(void) { diff -ruN nvidia-kernel/nv/Makefile.kbuild nvidia-kernel-mod/nv/Makefile.kbuild --- nvidia-kernel/nv/Makefile.kbuild 2004-08-05 14:09:49.000000000 -0700 +++ nvidia-kernel-mod/nv/Makefile.kbuild 2004-10-23 16:17:05.000000000 -0700 @@ -133,7 +133,7 @@ endif # -# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become +# NVIDIA specific CFLAGS and #define's. The remap_range check has become # necessary with the introduction of the five argument version to Linux 2.4 # distribution kernels; this conflicting change cannot be detected at compile # time. @@ -159,16 +159,18 @@ CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT endif -ifeq ($(PATCHLEVEL), 4) - REMAP_PAGE_RANGE := $(shell $(CONFTEST) remap_page_range) +REMAP_RANGE := $(shell $(CONFTEST) remap_range) - ifeq ($(REMAP_PAGE_RANGE), 5) - EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5 - endif +ifeq ($(REMAP_RANGE), PFN) + EXTRA_CFLAGS += -DREMAP_PFN_RANGE +endif - ifeq ($(REMAP_PAGE_RANGE), 4) - EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4 - endif +ifeq ($(REMAP_RANGE), 5) + EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5 +endif + +ifeq ($(REMAP_RANGE), 4) + EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4 endif ifeq ($(PATCHLEVEL), 4) diff -ruN nvidia-kernel/nv/Makefile.nvidia nvidia-kernel-mod/nv/Makefile.nvidia --- nvidia-kernel/nv/Makefile.nvidia 2004-08-05 14:09:49.000000000 -0700 +++ nvidia-kernel-mod/nv/Makefile.nvidia 2004-10-23 16:17:05.000000000 -0700 @@ -60,12 +60,15 @@ INSTALL=$(shell which install) INCLUDES += -I$(KERNEL_HEADERS) -REMAP_PAGE_RANGE := $(shell $(CONFTEST) remap_page_range) +REMAP_RANGE := $(shell $(CONFTEST) remap_range) -ifeq ($(REMAP_PAGE_RANGE), 5) +ifeq ($(REMAP_RANGE), PFN) + DEFINES += -DREMAP_PFN_RANGE +endif +ifeq ($(REMAP_RANGE), 5) DEFINES += -DREMAP_PAGE_RANGE_5 endif -ifeq ($(REMAP_PAGE_RANGE), 4) +ifeq ($(REMAP_RANGE), 4) DEFINES += -DREMAP_PAGE_RANGE_4 endif diff -ruN nvidia-kernel/nv/nv.c nvidia-kernel-mod/nv/nv.c --- nvidia-kernel/nv/nv.c 2004-10-23 16:20:30.000000000 -0700 +++ nvidia-kernel-mod/nv/nv.c 2004-10-23 16:03:23.000000000 -0700 @@ -1765,7 +1765,7 @@ pages = nv->regs->size / PAGE_SIZE; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - if (NV_REMAP_PAGE_RANGE(vma->vm_start, + if (NV_REMAP_RANGE(vma->vm_start, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start, vma->vm_page_prot)) @@ -1784,7 +1784,7 @@ pages = nv->fb->size / PAGE_SIZE; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - if (NV_REMAP_PAGE_RANGE(vma->vm_start, + if (NV_REMAP_RANGE(vma->vm_start, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start, vma->vm_page_prot)) @@ -1902,7 +1902,7 @@ while (pages--) { page = (unsigned long) at->page_table[i++].phys_addr; - if (NV_REMAP_PAGE_RANGE(start, page, PAGE_SIZE, vma->vm_page_prot)) + if (NV_REMAP_RANGE(start, page, PAGE_SIZE, vma->vm_page_prot)) return -EAGAIN; start += PAGE_SIZE; pos += PAGE_SIZE; diff -ruN nvidia-kernel/nv/nv-linux.h nvidia-kernel-mod/nv/nv-linux.h --- nvidia-kernel/nv/nv-linux.h 2004-08-05 14:09:49.000000000 -0700 +++ nvidia-kernel-mod/nv/nv-linux.h 2004-10-23 16:17:05.000000000 -0700 @@ -567,13 +567,15 @@ * relevant releases to date use it. This version was backported to 2.4 * without means to identify the change, hence this hack. */ -#if defined(KERNEL_2_6) || defined(REMAP_PAGE_RANGE_5) -#define NV_REMAP_PAGE_RANGE(x...) remap_page_range(vma, x) +#if defined(REMAP_PFN_RANGE) +#define NV_REMAP_RANGE(from, offset, x...) remap_pfn_range(vma, from, ((offset)) >> PAGE_SHIFT, x) +#elif defined(KERNEL_2_6) || defined(REMAP_PAGE_RANGE_5) +#define NV_REMAP_RANGE(x...) remap_page_range(vma, x) #elif defined(REMAP_PAGE_RANGE_4) -#define NV_REMAP_PAGE_RANGE(x...) remap_page_range(x) +#define NV_REMAP_RANGE(x...) remap_page_range(x) #else #warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!" -#define NV_REMAP_PAGE_RANGE(x...) remap_page_range(x) +#define NV_REMAP_RANGE(x...) remap_page_range(x #endif #if defined(pmd_offset_map) diff -ruN nvidia-kernel/nv/os-agp.c nvidia-kernel-mod/nv/os-agp.c --- nvidia-kernel/nv/os-agp.c 2004-08-05 14:09:49.000000000 -0700 +++ nvidia-kernel-mod/nv/os-agp.c 2004-10-23 16:17:05.000000000 -0700 @@ -331,10 +331,10 @@ agp_addr = agpinfo.aper_base + (agp_data->offset << PAGE_SHIFT); #if defined(NVCPU_IA64) - err = NV_REMAP_PAGE_RANGE(vma->vm_start, (size_t) agp_addr, + err = NV_REMAP_RANGE(vma->vm_start, (size_t) agp_addr, agp_data->num_pages << PAGE_SHIFT, vma->vm_page_prot); #else - err = NV_REMAP_PAGE_RANGE(vma->vm_start, (size_t) agp_addr, + err = NV_REMAP_RANGE(vma->vm_start, (size_t) agp_addr, agp_data->num_pages << PAGE_SHIFT, PAGE_SHARED); #endif diff -ruN nvidia-kernel/nv/os-interface.c nvidia-kernel-mod/nv/os-interface.c --- nvidia-kernel/nv/os-interface.c 2004-08-05 14:09:49.000000000 -0700 +++ nvidia-kernel-mod/nv/os-interface.c 2004-10-23 16:17:05.000000000 -0700 @@ -1087,7 +1087,7 @@ vma = (struct vm_area_struct *) *priv; - if (NV_REMAP_PAGE_RANGE(vma->vm_start, + if (NV_REMAP_RANGE(vma->vm_start, start & PAGE_MASK, size_bytes, PAGE_SHARED)) return NULL; 4) nv_find_class is depricated --- nvidia-kernel/nv/nv.c.original 2004-10-22 21:50:23.000000000 -0700 +++ nvidia-kernel/nv/nv.c 2004-10-22 21:50:31.000000000 -0700 @@ -641,7 +641,7 @@ u8 cap_ptr; int func, slot; - dev = pci_find_class(class << 8, NULL); + dev = pci_get_class(class << 8, NULL); do { for (func = 0; func < 8; func++) { slot = PCI_SLOT(dev->devfn); @@ -652,7 +652,7 @@ if (cap_ptr) return fn; } - dev = pci_find_class(class << 8, dev); + dev = pci_get_class(class << 8, dev); } while (dev); return NULL; @@ -3485,12 +3485,12 @@ struct pci_dev *dev = NULL; int count = 0; - dev = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8, dev); + dev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, dev); while (dev) { if ((dev->vendor == 0x10de) && (dev->device >= 0x20)) count++; - dev = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8, dev); + dev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, dev); } return count; } 5) nv_enable_pci --- nvidia-kernel/nv/nv.c.orig 2004-10-22 22:22:43.000000000 -0700 +++ nvidia-kernel/nv/nv.c 2004-10-22 22:27:09.000000000 -0700 @@ -1227,6 +1227,7 @@ { nv_state_t *nv = NV_STATE_PTR(&nv_linux_devices[i]); release_mem_region(nv->bar.regs.address, nv->bar.regs.size); + pci_disable_device(nv_linux_devices[i].dev); } } @@ -3518,6 +3519,28 @@ return -1; } + // enable io, mem, and bus-mastering in pci config space + if (pci_enable_device(dev) != 0) + { + nv_printf(NV_DBG_ERRORS, + "NVRM: pci_enable_device failed, aborting\n"); + return -1; + } + + // request ownership of our bars + // keeps other drivers from banging our registers. + // only do this for registers, as vesafb requests our framebuffer and will + // keep us from working properly + if (!request_mem_region(dev->resource[0].start, + dev->resource[0].end - dev->resource[0].start + 1, + "nvidia")) + { + nv_printf(NV_DBG_ERRORS, + "NVRM: pci_request_regions failed, aborting\n"); + goto err_disable_dev; + } + pci_set_master(dev); + /* initialize bus-dependent config state */ nvl = &nv_linux_devices[num_nv_devices]; nv = NV_STATE_PTR(nvl); @@ -3547,7 +3570,7 @@ nv_printf(NV_DBG_ERRORS, "NVRM: Please check your BIOS settings. \n"); nv_printf(NV_DBG_ERRORS, "NVRM: [Plug & Play OS ] should be set to NO \n"); nv_printf(NV_DBG_ERRORS, "NVRM: [Assign IRQ to VGA] should be set to YES \n"); - return -1; + goto err_zero_dev; } /* sanity check the IO apertures */ @@ -3571,39 +3594,9 @@ nv->bar.fb.address, nv->bar.fb.size); } - /* Clear out the data */ - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; - } - - // request ownership of our bars - // keeps other drivers from banging our registers. - // only do this for registers, as vesafb requests our framebuffer and will - // keep us from working properly - if (!request_mem_region(nv->bar.regs.address, nv->bar.regs.size, "nvidia")) - { - nv_printf(NV_DBG_ERRORS, - "NVRM: pci_request_regions failed, aborting\n"); - - /* Clear out the data */ - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; + goto err_zero_dev; } - // enable io, mem, and bus-mastering in pci config space - if (pci_enable_device(dev) != 0) - { - nv_printf(NV_DBG_ERRORS, - "NVRM: pci_enable_device failed, aborting\n"); - - pci_release_regions(dev); - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; - } - pci_set_master(nvl->dev); #if defined(NV_BUILD_NV_PAT_SUPPORT) if (nvos_find_pci_express_capability(nvl->dev)) @@ -3620,13 +3613,7 @@ if (nv->bar.regs.map == NULL) { nv_printf(NV_DBG_ERRORS, "NVRM: failed to map registers!!\n"); - - pci_release_regions(dev); - - /* Clear out the data */ - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; + goto err_zero_dev; } nv->flags |= NV_FLAG_MAP_REGS_EARLY; #endif @@ -3643,6 +3630,15 @@ num_nv_devices++; return 0; + +err_zero_dev: + os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); + release_mem_region(dev->resource[0].start, + dev->resource[0].end - dev->resource[0].start + 1); + +err_disable_dev: + pci_disable_device(dev); + return -1; } int NV_API_CALL nv_no_incoherent_mappings --------------090701080201060005080504 Content-Type: text/plain; name="nvidia-kernel-source.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="nvidia-kernel-source.diff" diff -ruN nvidia-kernel-orig/nv/conftest.sh nvidia-kernel/nv/conftest.sh --- nvidia-kernel-orig/nv/conftest.sh 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/conftest.sh 2004-11-03 23:24:48.000000000 -0800 @@ -23,13 +23,29 @@ fi case "$4" in - remap_page_range) + remap_range) # # Determine the number of arguments expected by remap_page_range. + # Extended to determine if should use remap_pfn_range() aswell # echo "#include <linux/mm.h> int do_test_remap_page_range(void) { + pgprot_t pgprot; + remap_pfn_range(NULL, 0L, 0L, 0L, pgprot); + }" > conftest$$.c + + $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 + rm -f conftest$$.c + + if [ -f conftest$$.o ]; then + echo "PFN" + rm -f conftest$$.o; + exit 0 + fi + + echo "#include <linux/mm.h> + int do_test_remap_page_range(void) { pgprot_t pgprot; remap_page_range(NULL, 0L, 0L, 0L, pgprot); }" > conftest$$.c diff -ruN nvidia-kernel-orig/nv/Makefile.kbuild nvidia-kernel/nv/Makefile.kbuild --- nvidia-kernel-orig/nv/Makefile.kbuild 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/Makefile.kbuild 2004-11-03 23:24:48.000000000 -0800 @@ -133,7 +133,7 @@ endif # -# NVIDIA specific CFLAGS and #define's. The remap_page_range check has become +# NVIDIA specific CFLAGS and #define's. The remap_range check has become # necessary with the introduction of the five argument version to Linux 2.4 # distribution kernels; this conflicting change cannot be detected at compile # time. @@ -159,16 +159,18 @@ CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT endif -ifeq ($(PATCHLEVEL), 4) - REMAP_PAGE_RANGE := $(shell $(CONFTEST) remap_page_range) +REMAP_RANGE := $(shell $(CONFTEST) remap_range) - ifeq ($(REMAP_PAGE_RANGE), 5) - EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5 - endif +ifeq ($(REMAP_RANGE), PFN) + EXTRA_CFLAGS += -DREMAP_PFN_RANGE +endif - ifeq ($(REMAP_PAGE_RANGE), 4) - EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4 - endif +ifeq ($(REMAP_RANGE), 5) + EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5 +endif + +ifeq ($(REMAP_RANGE), 4) + EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_4 endif ifeq ($(PATCHLEVEL), 4) diff -ruN nvidia-kernel-orig/nv/Makefile.nvidia nvidia-kernel/nv/Makefile.nvidia --- nvidia-kernel-orig/nv/Makefile.nvidia 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/Makefile.nvidia 2004-11-03 23:24:48.000000000 -0800 @@ -60,12 +60,15 @@ INSTALL=$(shell which install) INCLUDES += -I$(KERNEL_HEADERS) -REMAP_PAGE_RANGE := $(shell $(CONFTEST) remap_page_range) +REMAP_RANGE := $(shell $(CONFTEST) remap_range) -ifeq ($(REMAP_PAGE_RANGE), 5) +ifeq ($(REMAP_RANGE), PFN) + DEFINES += -DREMAP_PFN_RANGE +endif +ifeq ($(REMAP_RANGE), 5) DEFINES += -DREMAP_PAGE_RANGE_5 endif -ifeq ($(REMAP_PAGE_RANGE), 4) +ifeq ($(REMAP_RANGE), 4) DEFINES += -DREMAP_PAGE_RANGE_4 endif diff -ruN nvidia-kernel-orig/nv/nv.c nvidia-kernel/nv/nv.c --- nvidia-kernel-orig/nv/nv.c 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/nv.c 2004-11-03 23:24:48.000000000 -0800 @@ -15,6 +15,8 @@ #include "nv_compiler.h" #include "os-agp.h" +unsigned int __VMALLOC_RESERVE = 128 << 20; + #ifdef MODULE_ALIAS_CHARDEV_MAJOR MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER); #endif @@ -639,7 +641,7 @@ u8 cap_ptr; int func, slot; - dev = pci_find_class(class << 8, NULL); + dev = pci_get_class(class << 8, NULL); do { for (func = 0; func < 8; func++) { slot = PCI_SLOT(dev->devfn); @@ -650,7 +652,7 @@ if (cap_ptr) return fn; } - dev = pci_find_class(class << 8, dev); + dev = pci_get_class(class << 8, dev); } while (dev); return NULL; @@ -1225,6 +1227,7 @@ { nv_state_t *nv = NV_STATE_PTR(&nv_linux_devices[i]); release_mem_region(nv->bar.regs.address, nv->bar.regs.size); + pci_disable_device(nv_linux_devices[i].dev); } } @@ -1762,7 +1765,7 @@ pages = nv->regs->size / PAGE_SIZE; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - if (NV_REMAP_PAGE_RANGE(vma->vm_start, + if (NV_REMAP_RANGE(vma->vm_start, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start, vma->vm_page_prot)) @@ -1781,7 +1784,7 @@ pages = nv->fb->size / PAGE_SIZE; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - if (NV_REMAP_PAGE_RANGE(vma->vm_start, + if (NV_REMAP_RANGE(vma->vm_start, NV_VMA_OFFSET(vma), vma->vm_end - vma->vm_start, vma->vm_page_prot)) @@ -1899,7 +1902,7 @@ while (pages--) { page = (unsigned long) at->page_table[i++].phys_addr; - if (NV_REMAP_PAGE_RANGE(start, page, PAGE_SIZE, vma->vm_page_prot)) + if (NV_REMAP_RANGE(start, page, PAGE_SIZE, vma->vm_page_prot)) return -EAGAIN; start += PAGE_SIZE; pos += PAGE_SIZE; @@ -3483,12 +3486,12 @@ struct pci_dev *dev = NULL; int count = 0; - dev = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8, dev); + dev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, dev); while (dev) { if ((dev->vendor == 0x10de) && (dev->device >= 0x20)) count++; - dev = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8, dev); + dev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, dev); } return count; } @@ -3516,6 +3519,28 @@ return -1; } + // enable io, mem, and bus-mastering in pci config space + if (pci_enable_device(dev) != 0) + { + nv_printf(NV_DBG_ERRORS, + "NVRM: pci_enable_device failed, aborting\n"); + return -1; + } + + // request ownership of our bars + // keeps other drivers from banging our registers. + // only do this for registers, as vesafb requests our framebuffer and will + // keep us from working properly + if (!request_mem_region(dev->resource[0].start, + dev->resource[0].end - dev->resource[0].start + 1, + "nvidia")) + { + nv_printf(NV_DBG_ERRORS, + "NVRM: pci_request_regions failed, aborting\n"); + goto err_disable_dev; + } + pci_set_master(dev); + /* initialize bus-dependent config state */ nvl = &nv_linux_devices[num_nv_devices]; nv = NV_STATE_PTR(nvl); @@ -3545,7 +3570,7 @@ nv_printf(NV_DBG_ERRORS, "NVRM: Please check your BIOS settings. \n"); nv_printf(NV_DBG_ERRORS, "NVRM: [Plug & Play OS ] should be set to NO \n"); nv_printf(NV_DBG_ERRORS, "NVRM: [Assign IRQ to VGA] should be set to YES \n"); - return -1; + goto err_zero_dev; } /* sanity check the IO apertures */ @@ -3569,39 +3594,9 @@ nv->bar.fb.address, nv->bar.fb.size); } - /* Clear out the data */ - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; - } - - // request ownership of our bars - // keeps other drivers from banging our registers. - // only do this for registers, as vesafb requests our framebuffer and will - // keep us from working properly - if (!request_mem_region(nv->bar.regs.address, nv->bar.regs.size, "nvidia")) - { - nv_printf(NV_DBG_ERRORS, - "NVRM: pci_request_regions failed, aborting\n"); - - /* Clear out the data */ - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; + goto err_zero_dev; } - // enable io, mem, and bus-mastering in pci config space - if (pci_enable_device(dev) != 0) - { - nv_printf(NV_DBG_ERRORS, - "NVRM: pci_enable_device failed, aborting\n"); - - pci_release_regions(dev); - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; - } - pci_set_master(nvl->dev); #if defined(NV_BUILD_NV_PAT_SUPPORT) if (nvos_find_pci_express_capability(nvl->dev)) @@ -3618,13 +3613,7 @@ if (nv->bar.regs.map == NULL) { nv_printf(NV_DBG_ERRORS, "NVRM: failed to map registers!!\n"); - - pci_release_regions(dev); - - /* Clear out the data */ - os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); - - return -1; + goto err_zero_dev; } nv->flags |= NV_FLAG_MAP_REGS_EARLY; #endif @@ -3641,6 +3630,15 @@ num_nv_devices++; return 0; + +err_zero_dev: + os_mem_set(nvl, 0, sizeof(nv_linux_state_t)); + release_mem_region(dev->resource[0].start, + dev->resource[0].end - dev->resource[0].start + 1); + +err_disable_dev: + pci_disable_device(dev); + return -1; } int NV_API_CALL nv_no_incoherent_mappings @@ -3692,9 +3690,16 @@ return -1; } + // Fix up problems with PM_SAVE_STATE being removed from 2.6.9 + #ifdef PM_SAVE_STATE + #define PM_TMP PM_SAVE_STATE + #else + #define PM_TMP PM_SUSPEND + #endif + switch (state) { - case PM_SAVE_STATE: + case PM_TMP: nv_printf(NV_DBG_INFO, "NVRM: ACPI: received standby event\n"); status = rm_power_management(nv, 0, NV_PM_ACPI_STANDBY); break; diff -ruN nvidia-kernel-orig/nv/nv-linux.h nvidia-kernel/nv/nv-linux.h --- nvidia-kernel-orig/nv/nv-linux.h 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/nv-linux.h 2004-11-03 23:24:48.000000000 -0800 @@ -567,13 +567,15 @@ * relevant releases to date use it. This version was backported to 2.4 * without means to identify the change, hence this hack. */ -#if defined(KERNEL_2_6) || defined(REMAP_PAGE_RANGE_5) -#define NV_REMAP_PAGE_RANGE(x...) remap_page_range(vma, x) +#if defined(REMAP_PFN_RANGE) +#define NV_REMAP_RANGE(from, offset, x...) remap_pfn_range(vma, from, ((offset)) >> PAGE_SHIFT, x) +#elif defined(KERNEL_2_6) || defined(REMAP_PAGE_RANGE_5) +#define NV_REMAP_RANGE(x...) remap_page_range(vma, x) #elif defined(REMAP_PAGE_RANGE_4) -#define NV_REMAP_PAGE_RANGE(x...) remap_page_range(x) +#define NV_REMAP_RANGE(x...) remap_page_range(x) #else #warning "conftest.sh failed, assuming old Linux 2.4 remap_page_range(4)!" -#define NV_REMAP_PAGE_RANGE(x...) remap_page_range(x) +#define NV_REMAP_RANGE(x...) remap_page_range(x #endif #if defined(pmd_offset_map) diff -ruN nvidia-kernel-orig/nv/os-agp.c nvidia-kernel/nv/os-agp.c --- nvidia-kernel-orig/nv/os-agp.c 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/os-agp.c 2004-11-03 23:24:48.000000000 -0800 @@ -331,10 +331,10 @@ agp_addr = agpinfo.aper_base + (agp_data->offset << PAGE_SHIFT); #if defined(NVCPU_IA64) - err = NV_REMAP_PAGE_RANGE(vma->vm_start, (size_t) agp_addr, + err = NV_REMAP_RANGE(vma->vm_start, (size_t) agp_addr, agp_data->num_pages << PAGE_SHIFT, vma->vm_page_prot); #else - err = NV_REMAP_PAGE_RANGE(vma->vm_start, (size_t) agp_addr, + err = NV_REMAP_RANGE(vma->vm_start, (size_t) agp_addr, agp_data->num_pages << PAGE_SHIFT, PAGE_SHARED); #endif diff -ruN nvidia-kernel-orig/nv/os-interface.c nvidia-kernel/nv/os-interface.c --- nvidia-kernel-orig/nv/os-interface.c 2004-11-03 02:17:46.000000000 -0800 +++ nvidia-kernel/nv/os-interface.c 2004-11-03 23:24:48.000000000 -0800 @@ -1087,7 +1087,7 @@ vma = (struct vm_area_struct *) *priv; - if (NV_REMAP_PAGE_RANGE(vma->vm_start, + if (NV_REMAP_RANGE(vma->vm_start, start & PAGE_MASK, size_bytes, PAGE_SHARED)) return NULL; --------------090701080201060005080504-- --------------------------------------- Received: (at 279611-close) by bugs.debian.org; 17 Jan 2006 04:36:13 +0000 >From [EMAIL PROTECTED] Mon Jan 16 20:36:13 2006 Return-path: <[EMAIL PROTECTED]> Received: from mail.vif.com ([216.239.64.153] helo=buddha.vif.com) by spohr.debian.org with esmtp (Exim 4.50) id 1EyiZp-0001H2-1U for [EMAIL PROTECTED]; Mon, 16 Jan 2006 20:36:13 -0800 Received: from [216.239.78.243] (ip216-239-78-243.vif.net [216.239.78.243]) by buddha.vif.com (8.13.1/8.13.1) with ESMTP id k0H4aBux080953 for <[EMAIL PROTECTED]>; Mon, 16 Jan 2006 23:36:11 -0500 (EST) (envelope-from [EMAIL PROTECTED]) Message-ID: <[EMAIL PROTECTED]> Date: Mon, 16 Jan 2006 23:36:27 -0500 From: Filipus Klutiero <[EMAIL PROTECTED]> User-Agent: Mozilla Thunderbird 1.0.2 (X11/20051002) X-Accept-Language: fr, en MIME-Version: 1.0 To: [EMAIL PROTECTED] Subject: Outdated Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-vif-MailScanner-Information: Please contact the ISP for more information X-vif-MailScanner: Found to be clean X-vif-MailScanner-From: [EMAIL PROTECTED] X-Spam-Checker-Version: SpamAssassin 2.60-bugs.debian.org_2005_01_02 (1.212-2003-09-23-exp) on spohr.debian.org X-Spam-Level: X-Spam-Status: No, hits=-2.0 required=4.0 tests=BAYES_00,ONEWORD autolearn=no version=2.60-bugs.debian.org_2005_01_02 Hi, thanks for your bug report, but this now seems to be outdated as the nvidia module can build fine on at least 2.6.12. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]