Am Montag, den 17.02.2014, 01:27 -0800 schrieb H. Peter Anvin: > On 02/16/2014 11:42 PM, Stefani Seibold wrote: > > I think for the first time it will be okay to kick out the > > _ASM_X86_SPINLOCK_H hack and accept the C=1 warnings. > > > > At next step it is necessary to make the whole BUILD_VDSO32 path in > > vclock_gettime.c independent from the kernel headers, only uapi/ should > > be included. > > > > The use of cycle_t must be replaced with u64. > > > > We need a own copy of __native_read_tsc(), __iter_div_u64_rem, smp_rmb() > > and cpu_relax(). > > All of which are quite trivial. > > > For the non BUILD_VDSO32 path we must only move the #includes inside > > this #ifndef BUILD_VDSO32 > > Sorry, didn't quite follow that. > The solution is quite simple: In case of a 32 bit VDSO for a 64 bit kernel fake a 32 bit kernel configuration. Than everything is fine and all kernel headers will compile without warnings or errors, also make C=1 will give no complains. The arch/x86/vdso/vdso32/vclock_gettime.c will now look like: #define BUILD_VDSO32 #ifdef CONFIG_X86_64 /* * in case of a 32 bit VDSO for a 64 bit kernel fake a 32 bit kernel * configuration */ #undef CONFIG_64BIT #undef CONFIG_X86_64 #undef CONFIG_ILLEGAL_POINTER_VALUE #define CONFIG_X86_32 1 #define CONFIG_PAGE_OFFSET 0 #define CONFIG_ILLEGAL_POINTER_VALUE 0 #define BUILD_VDSO32_64 #endif #include "../vclock_gettime.c" and the following modifications for arch/x86/include/asm/vgtod.h: #ifdef BUILD_VDSO32_64 typedef u64 gtod_long_t; #else typedef unsigned long gtod_long_t; #endif I tested it and i see no side effects. What do you think? - Stefani -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |