diff options
Diffstat (limited to 'arch/x86/kernel/cpu/amd.c')
-rw-r--r-- | arch/x86/kernel/cpu/amd.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 15c5df92f74e..a220239cea65 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -869,3 +869,22 @@ static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum) | |||
869 | 869 | ||
870 | return false; | 870 | return false; |
871 | } | 871 | } |
872 | |||
873 | void set_dr_addr_mask(unsigned long mask, int dr) | ||
874 | { | ||
875 | if (!cpu_has_bpext) | ||
876 | return; | ||
877 | |||
878 | switch (dr) { | ||
879 | case 0: | ||
880 | wrmsr(MSR_F16H_DR0_ADDR_MASK, mask, 0); | ||
881 | break; | ||
882 | case 1: | ||
883 | case 2: | ||
884 | case 3: | ||
885 | wrmsr(MSR_F16H_DR1_ADDR_MASK - 1 + dr, mask, 0); | ||
886 | break; | ||
887 | default: | ||
888 | break; | ||
889 | } | ||
890 | } | ||