--- ../physmap.c Wed Apr 10 19:58:38 2013 +++ physmap-fix.c Wed Apr 10 20:15:50 2013 @@ -388,11 +388,16 @@ #include #include +typedef struct { + int msr; + uint64_t data; +} cpu_msr_args_t; + static int fd_msr = -1; msr_t rdmsr(int addr) { - amdmsr_req args; + struct amdmsr_req args; msr_t msr = { 0xffffffff, 0xffffffff }; @@ -415,7 +420,7 @@ cpu_msr_args_t args; args.msr = addr; - args.val = (((uint64_t)msr.hi) << 32) | msr.lo; + args.data = (((uint64_t)msr.hi) << 32) | msr.lo; if (ioctl(fd_msr, WRMSR, &args) < 0) { msg_perr("Error while executing WRMSR ioctl: %s\n", strerror(errno)); @@ -430,7 +435,7 @@ { char msrfilename[64]; memset(msrfilename, 0, sizeof(msrfilename)); - snprintf(msrfilename, sizeof(msrfilename), "/dev/amdmsr%d", cpu); + snprintf(msrfilename, sizeof(msrfilename), "/dev/amdmsr"); if (fd_msr != -1) { msg_pinfo("MSR was already initialized\n");