drm: missing init_mm symbol, compatibility fix

The drm_compat.c version of kmap_atomic_prot_pfn() uses the macro
pgd_offset_k(), which references the symbol init_mm.
Starting in 2.6.25, init_mm is no longer exported by default.

The only user of kmap_atomic_prot_pfn() is i915, so this should
not hurt anyone, and it allows people to load drm.ko.

Signed-off-by: Pekka Paalanen <pq@iki.fi>
main
Pekka Paalanen 2008-10-27 21:21:15 +02:00
parent 145d2d610b
commit 89ef1b5483
1 changed files with 15 additions and 0 deletions

View File

@ -333,9 +333,24 @@ typedef _Bool bool;
#if (defined(CONFIG_X86) && defined(CONFIG_X86_32) && defined(CONFIG_HIGHMEM)) #if (defined(CONFIG_X86) && defined(CONFIG_X86_32) && defined(CONFIG_HIGHMEM))
/*
* pgd_offset_k() is a macro that uses the symbol init_mm,
* check that it is available.
*/
# if ((LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)) || \
defined(CONFIG_UNUSED_SYMBOLS))
#define DRM_KMAP_ATOMIC_PROT_PFN #define DRM_KMAP_ATOMIC_PROT_PFN
extern void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, extern void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type,
pgprot_t protection); pgprot_t protection);
# else
#warning "init_mm is not available on this kernel!"
static inline void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type,
pgprot_t protection)
{
/* stub */
return NULL;
}
# endif /* no init_mm */
#endif #endif
#if !defined(flush_agp_mappings) #if !defined(flush_agp_mappings)