From c1d6ed9a21bc96b0d4eb778b78c65b304e5e46f9 Mon Sep 17 00:00:00 2001 From: Peter Stuge Date: Mon, 26 Jan 2009 17:03:05 +0000 Subject: [PATCH] msrtool: Linux /dev/cpu/*/msr returns the low 32 bits before the high 32 bits. Thanks to Mart for spotting this! Signed-off-by: Peter Stuge Acked-by: Peter Stuge git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3920 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/msrtool/linux.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/util/msrtool/linux.c b/util/msrtool/linux.c index efd308706..ac94d803f 100644 --- a/util/msrtool/linux.c +++ b/util/msrtool/linux.c @@ -76,13 +76,16 @@ int linux_close(uint8_t cpu) { } int linux_rdmsr(uint8_t cpu, uint32_t addr, struct msr *val) { + struct msr tmp; if (lseek(msr_fd[cpu], addr, SEEK_SET) == -1) { SYSERROR(lseek, addr); return 0; } - if (read(msr_fd[cpu], val, 8) != 8) { + if (read(msr_fd[cpu], &tmp, 8) != 8) { SYSERROR(read, addr); return 0; } + val->hi = tmp.lo; + val->lo = tmp.hi; return 1; } -- 2.25.1