From: Pekka Paalanen Date: Mon, 27 Oct 2008 19:21:15 +0000 (+0200) Subject: drm: missing init_mm symbol, compatibility fix X-Git-Tag: submit/1.0/20121108.012404~659 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89ef1b5483bb234278fe40e193643fc9777f50d4;p=profile%2Fivi%2Flibdrm.git 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 --- diff --git a/linux-core/drm_compat.h b/linux-core/drm_compat.h index c7f72e3..e09be47 100644 --- a/linux-core/drm_compat.h +++ b/linux-core/drm_compat.h @@ -333,9 +333,24 @@ typedef _Bool bool; #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 extern void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, 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 #if !defined(flush_agp_mappings)