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 813d29d00a17..abe4ec760db3 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c | |||
@@ -870,3 +870,22 @@ static bool cpu_has_amd_erratum(struct cpuinfo_x86 *cpu, const int *erratum) | |||
870 | 870 | ||
871 | return false; | 871 | return false; |
872 | } | 872 | } |
873 | |||
874 | void set_dr_addr_mask(unsigned long mask, int dr) | ||
875 | { | ||
876 | if (!cpu_has_bpext) | ||
877 | return; | ||
878 | |||
879 | switch (dr) { | ||
880 | case 0: | ||
881 | wrmsr(MSR_F16H_DR0_ADDR_MASK, mask, 0); | ||
882 | break; | ||
883 | case 1: | ||
884 | case 2: | ||
885 | case 3: | ||
886 | wrmsr(MSR_F16H_DR1_ADDR_MASK - 1 + dr, mask, 0); | ||
887 | break; | ||
888 | default: | ||
889 | break; | ||
890 | } | ||
891 | } | ||