Skip to content

Commit

Permalink
x86/AMD: expose HWCR.TscFreqSel to guests
Browse files Browse the repository at this point in the history
Linux has been warning ("firmware bug") about this bit being clear for a
long time. While writable in older hardware it has been readonly on more
than just most recent hardware. For simplicitly report it always set (if
anything we may want to log the issue ourselves if it turns out to be
clear on older hardware) on CPU families 10h and up (in family 0fh the
bit is part of a larger field of different purpose).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <iwj@xenproject.org>
  • Loading branch information
jbeulich authored and ijackson-citrix committed Mar 12, 2021
1 parent 6eef0a9 commit 14b95b3
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
7 changes: 7 additions & 0 deletions xen/arch/x86/msr.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,13 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val)
*val = msrs->tsc_aux;
break;

case MSR_K8_HWCR:
if ( !(cp->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)) )
goto gp_fault;
*val = get_cpu_family(cp->basic.raw_fms, NULL, NULL) >= 0x10
? K8_HWCR_TSC_FREQ_SEL : 0;
break;

case MSR_AMD64_DE_CFG:
if ( !(cp->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)) )
goto gp_fault;
Expand Down
2 changes: 2 additions & 0 deletions xen/include/asm-x86/msr-index.h
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,8 @@

#define MSR_K7_HWCR 0xc0010015
#define MSR_K8_HWCR 0xc0010015
#define K8_HWCR_TSC_FREQ_SEL (1ULL << 24)

#define MSR_K7_FID_VID_CTL 0xc0010041
#define MSR_K7_FID_VID_STATUS 0xc0010042
#define MSR_K8_PSTATE_LIMIT 0xc0010061
Expand Down

0 comments on commit 14b95b3

Please sign in to comment.