• Marc Zyngier's avatar
    clocksource/drivers/arm_arch_timer: Force inlining of erratum_set_next_event_generic() · 1edb7e74
    Marc Zyngier authored
    With some specific kernel configuration and Clang, the kernel fails
    to like with something like:
    
    ld.lld: error: undefined symbol: __compiletime_assert_200
    >>> referenced by arch_timer.h:156 (./arch/arm64/include/asm/arch_timer.h:156)
    >>>               clocksource/arm_arch_timer.o:(erratum_set_next_event_generic) in archive drivers/built-in.a
    
    ld.lld: error: undefined symbol: __compiletime_assert_197
    >>> referenced by arch_timer.h:133 (./arch/arm64/include/asm/arch_timer.h:133)
    >>>               clocksource/arm_arch_timer.o:(erratum_set_next_event_generic) in archive drivers/built-in.a
    make: *** [Makefile:1161: vmlinux] Error 1
    
    These are due to the BUILD_BUG() macros contained in the low-level
    accessors (arch_timer_reg_{write,read}_cp15) being emitted, as the
    access type wasn't known at compile time.
    
    Fix this by making erratum_set_next_event_generic() __force_inline,
    resulting in the 'access' parameter to be resolved ...
    1edb7e74
arm_arch_timer.c 45.6 KB