Hi all, I found a bug in msrtool. On AMD Geode GX2 the reading of MSR registers above 0x7FFFFFFF gives an error. For MSR register 0x80000000 the error is: linux_rdmsr: read(0x80000000): Invalid argument
I spend about 8 hours to look at the code but it needs a more expirienced programmer.
The bug tracking system does not seem to know msrtool.
Thanks, Nils.
Hi Nils!
Are you subscribed to the coreboot mailing list? I only got your email direct, so I guess not. I'm including the list in Cc.
Nils wrote:
I found a bug in msrtool. On AMD Geode GX2 the reading of MSR registers above 0x7FFFFFFF gives an error. For MSR register 0x80000000 the error is: linux_rdmsr: read(0x80000000): Invalid argument
Hm.. Did you try other addresses >= 0x80000000? And are you sure that 0x80000000 is a valid MSR address on GX2? The only mention of the value when searching quickly through the databook is the parameter for the CPUID instruction..
I spend about 8 hours to look at the code but it needs a more expirienced programmer.
There are a couple of levels of structures for the register mappings, but the code flow e.g. for stream mode skips all that. The system abstraction is still there of course..
Anyway, reading 0x80000000 doesn't work on a Pentium III system that I just tested on either:
# ./msrtool -s - <<< 0x80000000 msrtool exported Detected system linux: Linux with /dev/cpu/*/msr Detected target intel_pentium3: Intel Pentium III Xeon Processor, Intel Pentium III Processor
linux_rdmsr: read(0x80000000): Invalid argument #
Are you sure that this really is a bug?
//Peter