diff options
Diffstat (limited to 'x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff')
-rw-r--r-- | x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff | 624 |
1 files changed, 0 insertions, 624 deletions
diff --git a/x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff b/x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff deleted file mode 100644 index 1c10533..0000000 --- a/x11-drivers/nvidia-drivers/files/NVIDIA_kernel-173.14.05-2419292.diff +++ /dev/null @@ -1,624 +0,0 @@ -diff -ru usr/src/nv/Makefile.kbuild usr/src/nv.2419292/Makefile.kbuild ---- usr/src/nv/Makefile.kbuild 2008-05-19 00:37:02.000000000 -0700 -+++ usr/src/nv.2419292/Makefile.kbuild 2008-05-21 12:07:57.551201274 -0700 -@@ -166,10 +166,6 @@ - CFLAGS += -DNV_MAP_REGISTERS_EARLY - endif - --ifeq ($(shell echo $(NV_BUILD_NV_PAT_SUPPORT)),1) --CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT --endif -- - ifneq ($(PATCHLEVEL), 4) - COMPILE_TESTS = \ - remap_page_range \ -diff -ru usr/src/nv/Makefile.nvidia usr/src/nv.2419292/Makefile.nvidia ---- usr/src/nv/Makefile.nvidia 2008-05-19 00:37:02.000000000 -0700 -+++ usr/src/nv.2419292/Makefile.nvidia 2008-05-21 12:08:08.771840702 -0700 -@@ -56,10 +56,6 @@ - CFLAGS += -DNV_MAP_REGISTERS_EARLY - endif - --ifeq ($(shell echo $(NV_BUILD_NV_PAT_SUPPORT)),1) --CFLAGS += -DNV_BUILD_NV_PAT_SUPPORT --endif -- - INCLUDES += -I$(KERNEL_HEADERS) - - COMPILE_TESTS = \ -diff -ru usr/src/nv/nv-linux.h usr/src/nv.2419292/nv-linux.h ---- usr/src/nv/nv-linux.h 2008-05-19 00:37:01.000000000 -0700 -+++ usr/src/nv.2419292/nv-linux.h 2008-05-21 12:07:19.741046595 -0700 -@@ -145,16 +145,19 @@ - #endif - - #if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && !defined(CONFIG_XEN) --#define NV_BUILD_NV_PAT_SUPPORT 1 -+#define NV_ENABLE_PAT_SUPPORT - #endif - --#if defined(NV_BUILD_NV_PAT_SUPPORT) --#include "pat.h" -+#define NV_PAT_MODE_DISABLED 0 -+#define NV_PAT_MODE_KERNEL 1 -+#define NV_PAT_MODE_BUILTIN 2 -+ -+extern int nv_pat_mode; -+ - #if defined(CONFIG_HOTPLUG_CPU) - #include <linux/cpu.h> /* CPU hotplug support */ - #include <linux/notifier.h> /* struct notifier_block, etc */ - #endif --#endif - - #if (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)) - #include <linux/i2c.h> -@@ -681,6 +684,13 @@ - #define nv_down(lock) down(&lock) - #define nv_up(lock) up(&lock) - -+#define NV_INIT_MUTEX(mutex) \ -+ { \ -+ struct semaphore __mutex = \ -+ __SEMAPHORE_INITIALIZER(*(mutex), 1); \ -+ *(mutex) = __mutex; \ -+ } -+ - #if defined (KERNEL_2_4) - # define NV_IS_SUSER() suser() - # define NV_PCI_DEVICE_NAME(dev) ((dev)->name) -@@ -1029,20 +1039,6 @@ - return new_prot; - } - #endif -- --#if defined(NV_BUILD_NV_PAT_SUPPORT) && !defined (pgprot_writecombined) --static inline pgprot_t pgprot_writecombined(pgprot_t old_prot) -- { -- pgprot_t new_prot = old_prot; -- if (boot_cpu_data.x86 > 3) -- { -- pgprot_val(old_prot) &= ~(_PAGE_PCD | _PAGE_PWT); -- new_prot = __pgprot(pgprot_val(old_prot) | _PAGE_WRTCOMB); -- } -- return new_prot; -- } --#endif -- - #endif /* defined(NVCPU_X86) || defined(NVCPU_X86_64) */ - - #if defined(KERNEL_2_4) && defined(NVCPU_X86) && !defined(pfn_to_page) -@@ -1142,8 +1138,6 @@ - struct semaphore at_lock; - } nv_linux_state_t; - --extern int nv_pat_enabled; -- - #if defined(NV_LINUX_ACPI_EVENTS_SUPPORTED) - /* - * acpi data storage structure -diff -ru usr/src/nv/nv-reg.h usr/src/nv.2419292/nv-reg.h ---- usr/src/nv/nv-reg.h 2008-05-19 00:37:01.000000000 -0700 -+++ usr/src/nv.2419292/nv-reg.h 2008-05-21 12:07:23.313250167 -0700 -@@ -471,6 +471,37 @@ - #define __NV_RM_EDGE_INTR_CHECK RMEdgeIntrCheck - #define NV_REG_RM_EDGE_INTR_CHECK NV_REG_STRING(__NV_RM_EDGE_INTR_CHECK) - -+/* -+ * Option: UsePageAttributeTable -+ * -+ * Description: -+ * -+ * Enable/disable use of the page attribute table (PAT) available in -+ * modern x86/x86-64 processors to set the effective memory type of memory -+ * mappings to write-combining (WC). If disabled, the driver will fall -+ * back to using MTRRs, if possible. -+ * -+ * If enabled, an x86 processor with PAT support is present and the host -+ * system's Linux kernel did not configure one of the PAT entries to -+ * indicate the WC memory type, the driver will change the second entry in -+ * the PAT from its default (write-through (WT)) to WC at module load -+ * time. If the kernel did update one of the PAT entries, the driver will -+ * not modify the PAT. -+ * -+ * In both cases, the driver will honor attempts to map memory with the WC -+ * memory type by selecting the appropriate PAT entry using the correct -+ * set of PTE flags. -+ * -+ * Possible values: -+ * -+ * ~0 = use the NVIDIA driver's default logic (default) -+ * 1 = enable use of the PAT for WC mappings. -+ * 0 = disable use of the PAT for WC mappings. -+ */ -+ -+#define __NV_USE_PAGE_ATTRIBUTE_TABLE UsePageAttributeTable -+#define NV_USE_PAGE_ATTRIBUTE_TABLE NV_REG_STRING(__NV_USE_PAGE_ATTRIBUTE_TABLE) -+ - - - #if defined(NV_DEFINE_REGISTRY_KEY_TABLE) -@@ -495,6 +526,7 @@ - NV_DEFINE_REG_ENTRY(__NV_UPDATE_MEMORY_TYPES, ~0); - NV_DEFINE_REG_ENTRY(__NV_USE_VBIOS, 1); - NV_DEFINE_REG_ENTRY(__NV_RM_EDGE_INTR_CHECK, 1); -+NV_DEFINE_REG_ENTRY(__NV_USE_PAGE_ATTRIBUTE_TABLE, ~0); - - #if defined(NV_LINUX) - NV_DEFINE_REG_STRING_ENTRY(__NV_REGISTRY_DWORDS, NULL); -@@ -540,6 +572,7 @@ - NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_UPDATE_MEMORY_TYPES), - NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_VBIOS), - NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_RM_EDGE_INTR_CHECK), -+ NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_PAGE_ATTRIBUTE_TABLE), - {NULL, NULL, NULL} - }; - -diff -ru usr/src/nv/nv.c usr/src/nv.2419292/nv.c ---- usr/src/nv/nv.c 2008-05-19 00:37:01.000000000 -0700 -+++ usr/src/nv.2419292/nv.c 2008-05-21 12:07:28.313535114 -0700 -@@ -22,10 +22,9 @@ - #endif - - #if defined(KERNEL_2_4) && (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)) --// weak linking? - extern int i2c_add_adapter (struct i2c_adapter *) __attribute__ ((weak)); - extern int i2c_del_adapter (struct i2c_adapter *) __attribute__ ((weak)); --#endif // defined(KERNEL_2_4) && (defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)) -+#endif - - /* - * our global state; one per device -@@ -41,14 +40,7 @@ - static struct pm_dev *apm_nv_dev[NV_MAX_DEVICES] = { 0 }; - #endif - --int nv_pat_enabled = 0; -- --#if !defined(NV_BUILD_NV_PAT_SUPPORT) --static int nv_disable_pat = 1; --#else --static int nv_disable_pat = 0; --NV_MODULE_PARAMETER(nv_disable_pat); --#endif -+int nv_pat_mode = NV_PAT_MODE_DISABLED; - - #if defined(NVCPU_X86) || defined(NVCPU_X86_64) - NvU64 __nv_supported_pte_mask = ~_PAGE_NX; -@@ -611,7 +603,7 @@ - nv_state_t *nv; - nv_linux_state_t *nvl; - -- proc_nvidia = create_proc_entry("nvidia", d_flags, proc_root_driver); -+ proc_nvidia = create_proc_entry("driver/nvidia", d_flags, NULL); - if (!proc_nvidia) - goto failed; - -@@ -863,18 +855,20 @@ - static int __nv_enable_pat_support (void); - static void __nv_disable_pat_support (void); - --#if defined(NV_BUILD_NV_PAT_SUPPORT) -+#if defined(NV_ENABLE_PAT_SUPPORT) - /* -- * Private PAT support for use by the NVIDIA driver. This is an -- * interim solution until the kernel offers PAT support. -+ * Private PAT support for use by the NVIDIA driver. This is used on -+ * kernels that do not modify the PAT to include a write-combining -+ * entry. - */ --static int __check_pat_support (void); -+static int __determine_pat_mode (void); - static void __nv_setup_pat_entries (void *); - static void __nv_restore_pat_entries (void *); - --#define NV_READ_PAT_ENTRIES(pat1, pat2) rdmsr(IA32_CR_PAT, (pat1), (pat2)) --#define NV_WRITE_PAT_ENTRIES(pat1, pat2) wrmsr(IA32_CR_PAT, (pat1), (pat2)) --#define NV_PAT_ENTRY(pat, index) (((pat) & (0xff<<((index)*8)))>>((index)*8)) -+#define NV_READ_PAT_ENTRIES(pat1, pat2) rdmsr(0x277, (pat1), (pat2)) -+#define NV_WRITE_PAT_ENTRIES(pat1, pat2) wrmsr(0x277, (pat1), (pat2)) -+#define NV_PAT_ENTRY(pat, index) \ -+ (((pat) & (0xff << ((index)*8))) >> ((index)*8)) - - static inline void __nv_disable_caches(unsigned long *cr4) - { -@@ -895,39 +889,47 @@ - if (cr4 & 0x80) write_cr4(cr4); - } - --static int __check_pat_support() -+static int __determine_pat_mode() - { - unsigned int pat1, pat2, i; -+ U008 PAT_WC_index; - -- if (!test_bit(X86_FEATURE_PAT, (volatile unsigned long *)&boot_cpu_data.x86_capability)) -+ if (!test_bit(X86_FEATURE_PAT, -+ (volatile unsigned long *)&boot_cpu_data.x86_capability)) - { - nv_printf(NV_DBG_ERRORS, - "NVRM: CPU does not support the PAT, falling back to MTRRs.\n"); -- return 0; -+ return NV_PAT_MODE_DISABLED; - } - - NV_READ_PAT_ENTRIES(pat1, pat2); -+ PAT_WC_index = 0xf; - - for (i = 0; i < 4; i++) - { -- // we plan to mark PAT entry 1 as WC. if it's already marked such, -- // that's fine, since it would be no different than us setting it. -- if ((i != 1) && NV_PAT_ENTRY(pat1, i) == 1) -- { -- nv_printf(NV_DBG_ERRORS, "NVRM: PAT index %d already configured for Write-Combining!\n", i); -- nv_printf(NV_DBG_ERRORS, "NVRM: Aborting, due to PAT already being configured\n"); -- return 0; -- } -- -- if (NV_PAT_ENTRY(pat2, i) == 1) -- { -- nv_printf(NV_DBG_ERRORS, "NVRM: PAT index %d already configured for Write-Combining!\n", i + 4); -- nv_printf(NV_DBG_ERRORS, "NVRM: Aborting, due to PAT already being configured\n"); -- return 0; -- } -+ if (NV_PAT_ENTRY(pat1, i) == 0x01) -+ { -+ PAT_WC_index = i; -+ break; -+ } -+ -+ if (NV_PAT_ENTRY(pat2, i) == 0x01) -+ { -+ PAT_WC_index = (i + 4); -+ break; -+ } - } - -- return 1; -+ if (PAT_WC_index == 1) -+ return NV_PAT_MODE_KERNEL; -+ else if (PAT_WC_index != 0xf) -+ { -+ nv_printf(NV_DBG_ERRORS, -+ "NVRM: PAT configuration unsupported, falling back to MTRRs.\n"); -+ return NV_PAT_MODE_DISABLED; -+ } -+ else -+ return NV_PAT_MODE_BUILTIN; - } - - static unsigned long orig_pat1, orig_pat2; -@@ -978,19 +980,30 @@ - __nv_enable_caches(cr4); - NV_RESTORE_FLAGS(eflags); - } -- --#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ -+#endif - - static int __nv_enable_pat_support() - { --#if defined(NV_BUILD_NV_PAT_SUPPORT) -+#if defined(NV_ENABLE_PAT_SUPPORT) - unsigned long pat1, pat2; - -- if (nv_pat_enabled) -+ if (nv_pat_mode != NV_PAT_MODE_DISABLED) - return 1; - -- if (!__check_pat_support()) -- return 0; -+ nv_pat_mode = __determine_pat_mode(); -+ -+ switch (nv_pat_mode) -+ { -+ case NV_PAT_MODE_DISABLED: -+ /* avoid the PAT if unavailable/unusable */ -+ return 0; -+ case NV_PAT_MODE_KERNEL: -+ /* inherit the kernel's PAT layout */ -+ return 1; -+ case NV_PAT_MODE_BUILTIN: -+ /* use builtin code to modify the PAT layout */ -+ break; -+ } - - NV_READ_PAT_ENTRIES(orig_pat1, orig_pat2); - nv_printf(NV_DBG_SETUP, "saved orig pats as 0x%lx 0x%lx\n", orig_pat1, orig_pat2); -@@ -1001,31 +1014,28 @@ - return 0; - } - -- nv_pat_enabled = 1; -- - NV_READ_PAT_ENTRIES(pat1, pat2); - nv_printf(NV_DBG_SETUP, "changed pats to 0x%lx 0x%lx\n", pat1, pat2); --#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ -- -+#endif - return 1; - } - - static void __nv_disable_pat_support() - { --#if defined(NV_BUILD_NV_PAT_SUPPORT) -+#if defined(NV_ENABLE_PAT_SUPPORT) - unsigned long pat1, pat2; - -- if (!nv_pat_enabled) -+ if (nv_pat_mode != NV_PAT_MODE_BUILTIN) - return; - - if (nv_execute_on_all_cpus(__nv_restore_pat_entries, NULL) != 0) - return; - -- nv_pat_enabled = 0; -+ nv_pat_mode = NV_PAT_MODE_DISABLED; - - NV_READ_PAT_ENTRIES(pat1, pat2); - nv_printf(NV_DBG_SETUP, "restored orig pats as 0x%lx 0x%lx\n", pat1, pat2); --#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ -+#endif - } - - #if defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) -@@ -1273,7 +1283,7 @@ - #endif - } - --#if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) -+#if defined(NV_ENABLE_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) - static int - nv_kern_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) - { -@@ -1305,8 +1315,7 @@ - .notifier_call = nv_kern_cpu_callback, - .priority = 0 - }; -- --#endif /* defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) */ -+#endif - - - /*** -@@ -1315,7 +1324,7 @@ - - static int __init nvidia_init_module(void) - { -- int rc; -+ int rc, disable_pat = 0; - U032 i, count, data; - nv_state_t *nv = NV_STATE_PTR(&nv_ctl_device); - nv_stack_t *sp = NULL; -@@ -1443,18 +1452,6 @@ - nv_printf(NV_DBG_ERRORS, "NVRM: pte cache allocation failed\n"); - goto failed; - } -- --#if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) -- if (!nv_disable_pat) -- { -- if (register_hotcpu_notifier(&nv_hotcpu_nfb) != 0) -- { -- rc = -EIO; -- nv_printf(NV_DBG_ERRORS, "NVRM: CPU hotplug notifier registration failed!\n"); -- goto failed; -- } -- } --#endif - - #if defined(NV_SG_MAP_BUFFERS) - rm_read_registry_dword(sp, nv, "NVreg", "RemapLimit", &nv_remap_limit); -@@ -1532,8 +1529,30 @@ - - nvos_proc_add_warning_file("README", __README_warning); - -- if (!nv_disable_pat) -+ rc = rm_read_registry_dword(sp, nv, -+ "NVreg", NV_USE_PAGE_ATTRIBUTE_TABLE, &data); -+ if ((rc == 0) && ((int)data != ~0)) -+ { -+ disable_pat = (data == 0); -+ } -+ -+ if (!disable_pat) -+ { - __nv_enable_pat_support(); -+#if defined(NV_ENABLE_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) -+ if (nv_pat_mode == NV_PAT_MODE_BUILTIN) -+ { -+ if (register_hotcpu_notifier(&nv_hotcpu_nfb) != 0) -+ { -+ __nv_disable_pat_support(); -+ rc = -EIO; -+ nv_printf(NV_DBG_ERRORS, -+ "NVRM: CPU hotplug notifier registration failed!\n"); -+ goto failed; -+ } -+ } -+#endif -+ } - else - { - nv_printf(NV_DBG_ERRORS, -@@ -1686,10 +1705,10 @@ - rm_unregister_compatible_ioctls(sp); - #endif - -- if (nv_pat_enabled) -+ if (nv_pat_mode == NV_PAT_MODE_BUILTIN) - { - __nv_disable_pat_support(); --#if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) -+#if defined(NV_ENABLE_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) - unregister_hotcpu_notifier(&nv_hotcpu_nfb); - #endif - } -@@ -1825,6 +1844,8 @@ - } - } - -+#if !defined(NV_VM_INSERT_PAGE_PRESENT) -+static - struct page *nv_kern_vma_nopage( - struct vm_area_struct *vma, - unsigned long address, -@@ -1835,22 +1856,21 @@ - #endif - ) - { --#if !defined(NV_VM_INSERT_PAGE_PRESENT) - struct page *page; - - page = pfn_to_page(vma->vm_pgoff); - get_page(page); - - return page; --#else -- return NOPAGE_SIGBUS; --#endif - } -+#endif - - struct vm_operations_struct nv_vm_ops = { - .open = nv_kern_vma_open, - .close = nv_kern_vma_release, /* "close" */ -+#if !defined(NV_VM_INSERT_PAGE_PRESENT) - .nopage = nv_kern_vma_nopage, -+#endif - }; - - static nv_file_private_t * -@@ -1864,7 +1884,7 @@ - - memset(nvfp, 0, sizeof(nv_file_private_t)); - -- sema_init(&nvfp->sp_lock, 1); -+ NV_INIT_MUTEX(&nvfp->sp_lock); - - // initialize this file's event queue - init_waitqueue_head(&nvfp->waitqueue); -@@ -2214,11 +2234,12 @@ - break; - #if defined(NVCPU_X86) || defined(NVCPU_X86_64) - case NV_MEMORY_WRITECOMBINED: --#if defined(NV_BUILD_NV_PAT_SUPPORT) -- if (nv_pat_enabled && -- (memory_type != NV_MEMORY_TYPE_REGISTERS)) -+#if defined(NV_ENABLE_PAT_SUPPORT) -+ if ((nv_pat_mode != NV_PAT_MODE_DISABLED) && -+ (memory_type != NV_MEMORY_TYPE_REGISTERS)) - { -- *prot = pgprot_writecombined(*prot); -+ pgprot_val(*prot) &= ~(_PAGE_PSE | _PAGE_PCD | _PAGE_PWT); -+ *prot = __pgprot(pgprot_val(*prot) | _PAGE_PWT); - break; - } - #endif -@@ -2242,7 +2263,6 @@ - return 1; - #endif - case NV_MEMORY_CACHED: -- //case NV_MEMORY_WRITEBACK: - #if !defined(NVCPU_X86) && !defined(NVCPU_X86_64) - if (memory_type != NV_MEMORY_TYPE_REGISTERS) - break; -@@ -2264,8 +2284,6 @@ - if (memory_type == NV_MEMORY_TYPE_SYSTEM) - break; - #endif -- //case NV_MEMORY_WRITETHRU: -- //case NV_MEMORY_WRITEPROTECT: - default: - if(nv_ext_encode_caching(prot, cache_type, memory_type) == 0) - return 0; -@@ -3502,6 +3520,10 @@ - BOOL kern - ) - { -+#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) -+ nv_printf(NV_DBG_ERRORS, -+ "NVRM: can't translate address in nv_get_phys_address()!\n"); -+#else - struct mm_struct *mm; - pgd_t *pgd = NULL; - pmd_t *pmd = NULL; -@@ -3514,15 +3536,7 @@ - down_read(&mm->mmap_sem); - } - else -- { --#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) -- nv_printf(NV_DBG_ERRORS, -- "NVRM: can't translate KVA in nv_get_phys_address()!\n"); -- return 0; --#else - mm = NULL; --#endif -- } - - pgd = NV_PGD_OFFSET(address, kern, mm); - if (!NV_PGD_PRESENT(pgd)) -@@ -3550,6 +3564,7 @@ - failed: - if (!kern) - up_read(&mm->mmap_sem); -+#endif - return 0; - } - -@@ -3790,8 +3805,9 @@ - - nv_init_lock(nvl->rm_lock); - -- sema_init(&nvl->ldata_lock, 1); -- sema_init(&nvl->at_lock, 1); -+ NV_INIT_MUTEX(&nvl->ldata_lock); -+ NV_INIT_MUTEX(&nvl->at_lock); -+ - NV_ATOMIC_SET(nvl->usage_count, 0); - - nvl->rm_lock_cpu = -1; -diff -ru usr/src/nv/os-agp.c usr/src/nv.2419292/os-agp.c ---- usr/src/nv/os-agp.c 2008-05-19 00:37:01.000000000 -0700 -+++ usr/src/nv.2419292/os-agp.c 2008-05-21 12:07:30.437656163 -0700 -@@ -115,7 +115,7 @@ - goto release; - } - -- if (!nv_pat_enabled) -+ if (nv_pat_mode == NV_PAT_MODE_DISABLED) - { - #ifdef CONFIG_MTRR - /* -@@ -175,7 +175,7 @@ - - failed: - #ifdef CONFIG_MTRR -- if (!nv_pat_enabled) -+ if (nv_pat_mode == NV_PAT_MODE_DISABLED) - mtrr_del(-1, agp_info.aper_base, agp_info.aper_size << 20); - #endif - release: -@@ -205,7 +205,7 @@ - nvl = NV_GET_NVL_FROM_NV_STATE(nv); - - #ifdef CONFIG_MTRR -- if (!nv_pat_enabled) -+ if (nv_pat_mode == NV_PAT_MODE_DISABLED) - mtrr_del(-1, nv->agp.address, nv->agp.size); - #endif - -diff -ru usr/src/nv/os-interface.c usr/src/nv.2419292/os-interface.c ---- usr/src/nv/os-interface.c 2008-05-19 00:37:01.000000000 -0700 -+++ usr/src/nv.2419292/os-interface.c 2008-05-21 12:07:33.365823028 -0700 -@@ -1355,7 +1355,7 @@ - - BOOL NV_API_CALL os_pat_supported(void) - { -- return nv_pat_enabled; -+ return (nv_pat_mode != NV_PAT_MODE_DISABLED); - } - - void NV_API_CALL os_dump_stack() |