Messages in this thread Patch in this message | | | From | Thomas Schlichter <> | Subject | Re: 2.5.74-mm2 + nvidia (and others) | Date | Mon, 7 Jul 2003 17:33:53 +0200 |
| |
Am Monday 07 July 2003 17:08 schrieb Christian Axelsson: > Ok, running fine with 2.5.74-mm2 but when I try to insert the nvidia > module (with patches from www.minion.de applied) it gives > > nvidia: Unknown symbol pmd_offset > > in dmesg. The vmware vmmon module gives the same error (the others wont > compile but thats a different story). > > The nvidia module works fine under plain 2.5.74.
The problem is the highpmd patch in -mm2. There are two options: 1. Revert the highpmd patch. 2. Apply the attached patch to the NVIDIA kernel module sources.
Best regards Thomas Schlichter --- NVIDIA_kernel-1.0-4363/nv-linux.h.orig Sun Jul 6 14:42:34 2003 +++ NVIDIA_kernel-1.0-4363/nv-linux.h Mon Jul 7 14:57:02 2003 @@ -225,6 +225,18 @@ } #endif +#if defined(pmd_offset_map) +#define NV_PMD_OFFSET(address, pg_dir, pg_mid_dir) \ + { \ + pmd_t *pg_mid_dir__ = pmd_offset_map(pg_dir, address); \ + pg_mid_dir = *pg_mid_dir__; \ + pmd_unmap(pg_mid_dir__); \ + } +#else +#define NV_PMD_OFFSET(address, pg_dir, pg_mid_dir) \ + pg_mid_dir = *pmd_offset(pg_dir, address) +#endif + #define NV_PAGE_ALIGN(addr) ( ((addr) + PAGE_SIZE - 1) / PAGE_SIZE) #define NV_MASK_OFFSET(addr) ( (addr) & (PAGE_SIZE - 1) ) --- NVIDIA_kernel-1.0-4363/nv.c.orig Sun Jul 6 14:45:36 2003 +++ NVIDIA_kernel-1.0-4363/nv.c Sun Jul 6 14:58:55 2003 @@ -2084,7 +2084,7 @@ nv_get_phys_address(unsigned long address) { pgd_t *pg_dir; - pmd_t *pg_mid_dir; + pmd_t pg_mid_dir; pte_t pte; #if defined(NVCPU_IA64) @@ -2105,11 +2105,12 @@ if (pgd_none(*pg_dir)) goto failed; - pg_mid_dir = pmd_offset(pg_dir, address); - if (pmd_none(*pg_mid_dir)) + NV_PMD_OFFSET(address, pg_dir, pg_mid_dir); + + if (pmd_none(pg_mid_dir)) goto failed; - NV_PTE_OFFSET(address, pg_mid_dir, pte); + NV_PTE_OFFSET(address, &pg_mid_dir, pte); if (!pte_present(pte)) goto failed; | |