driver compilation problem / rdtsc error

From: workspace linuxkernel
Date: Wed Mar 22 2017 - 10:31:31 EST


I'm trying to compile a device driver on newer kernel and either the
interface to rdtsc has changed is some way
since I was updated my kernel or I've got some other problem, anyway
baffled by this and hopefully there is some
obvious numpty error someone can point out:

CC [M] pi_stage.o
In file included from ./arch/x86/include/asm/processor.h:20:0,
from ./arch/x86/include/asm/cpufeature.h:4,
from ./arch/x86/include/asm/thread_info.h:52,
from include/linux/thread_info.h:54,
from ./arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:59,
from include/linux/spinlock.h:50,
from include/linux/seqlock.h:35,
from include/linux/time.h:5,
from include/linux/stat.h:18,
from include/linux/module.h:10,
from
/home/scan/source/dev/pi_pci/driver_3.xx_v1.0/driver/pi_stage.h:53,
from
/home/scan/source/dev/pi_pci/driver_3.xx_v1.0/driver/pi_stage.c:31:
./arch/x86/include/asm/msr.h:120:53: error: macro "rdtsc" requires 2
arguments, but only 1 given
static __always_inline unsigned long long rdtsc(void)
^
./arch/x86/include/asm/msr.h:121:1: error: expected â=â, â,â, â;â,
âasmâ or â__attribute__â before â{â token
{
^
./arch/x86/include/asm/msr.h: In function ârdtsc_orderedâ:
./arch/x86/include/asm/msr.h:152:15: error: macro "rdtsc" requires 2
arguments, but only 1 given
return rdtsc();
^
./arch/x86/include/asm/msr.h:152:9: error: ârdtscâ undeclared (first
use in this function)
return rdtsc();

I'm not using rdtsc in my driver. To me this looks like the code is
msr.h is choking something
else in the kernel headers and that it has sfa to do with my driver.

Problem occurs for kernel > 4.4.0-32 possibly older
No problem on k<=3.13.0.