Message ID | 20161110003448.3280.27573.stgit@tlendack-t1.amdoffice.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
+ Toshi. On Wed, Nov 09, 2016 at 06:34:48PM -0600, Tom Lendacky wrote: > For processors that support PAT, set the write-protect cache mode > (_PAGE_CACHE_MODE_WP) entry to the actual write-protect value (x05). > > Acked-by: Borislav Petkov <bp@suse.de> > Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> > --- > arch/x86/mm/pat.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > index 170cc4f..87e8952 100644 > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -355,7 +355,7 @@ void pat_init(void) > * 010 2 UC-: _PAGE_CACHE_MODE_UC_MINUS > * 011 3 UC : _PAGE_CACHE_MODE_UC > * 100 4 WB : Reserved > - * 101 5 WC : Reserved > + * 101 5 WP : _PAGE_CACHE_MODE_WP > * 110 6 UC-: Reserved > * 111 7 WT : _PAGE_CACHE_MODE_WT > * > @@ -363,7 +363,7 @@ void pat_init(void) > * corresponding types in the presence of PAT errata. > */ > pat = PAT(0, WB) | PAT(1, WC) | PAT(2, UC_MINUS) | PAT(3, UC) | > - PAT(4, WB) | PAT(5, WC) | PAT(6, UC_MINUS) | PAT(7, WT); > + PAT(4, WB) | PAT(5, WP) | PAT(6, UC_MINUS) | PAT(7, WT); > } > > if (!boot_cpu_done) { > >
On Thu, 2016-11-10 at 14:14 +0100, Borislav Petkov wrote: > + Toshi. > > On Wed, Nov 09, 2016 at 06:34:48PM -0600, Tom Lendacky wrote: > > > > For processors that support PAT, set the write-protect cache mode > > (_PAGE_CACHE_MODE_WP) entry to the actual write-protect value > > (x05). Using slot 6 may be more cautious (for the same reason slot 7 was used for WT), but I do not have a strong opinion for it. set_page_memtype() cannot track the use of WP type since there is no extra-bit available for WP, but WP is only supported by early_memremap_xx() interfaces in this series. So, I think we should just document that WP is only intended for temporary mappings at boot- time until this issue is resolved. Also, we need to make sure that this early_memremap for WP is only called after pat_init() is done. A nit - please add WP to the function header comment below. "This function initializes PAT MSR and PAT table with an OS-defined value to enable additional cache attributes, WC and WT." Thanks, -Toshi
On 11/10/2016 07:26 PM, Kani, Toshimitsu wrote: > On Thu, 2016-11-10 at 14:14 +0100, Borislav Petkov wrote: >> + Toshi. >> >> On Wed, Nov 09, 2016 at 06:34:48PM -0600, Tom Lendacky wrote: >>> >>> For processors that support PAT, set the write-protect cache mode >>> (_PAGE_CACHE_MODE_WP) entry to the actual write-protect value >>> (x05). > > Using slot 6 may be more cautious (for the same reason slot 7 was used > for WT), but I do not have a strong opinion for it. > > set_page_memtype() cannot track the use of WP type since there is no > extra-bit available for WP, but WP is only supported by > early_memremap_xx() interfaces in this series. So, I think we should > just document that WP is only intended for temporary mappings at boot- > time until this issue is resolved. Also, we need to make sure that > this early_memremap for WP is only called after pat_init() is done. Sounds good, I'll add documentation to cover these points. > > A nit - please add WP to the function header comment below. > "This function initializes PAT MSR and PAT table with an OS-defined > value to enable additional cache attributes, WC and WT." Will do. Thanks, Tom > > Thanks, > -Toshi > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index 170cc4f..87e8952 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c @@ -355,7 +355,7 @@ void pat_init(void) * 010 2 UC-: _PAGE_CACHE_MODE_UC_MINUS * 011 3 UC : _PAGE_CACHE_MODE_UC * 100 4 WB : Reserved - * 101 5 WC : Reserved + * 101 5 WP : _PAGE_CACHE_MODE_WP * 110 6 UC-: Reserved * 111 7 WT : _PAGE_CACHE_MODE_WT * @@ -363,7 +363,7 @@ void pat_init(void) * corresponding types in the presence of PAT errata. */ pat = PAT(0, WB) | PAT(1, WC) | PAT(2, UC_MINUS) | PAT(3, UC) | - PAT(4, WB) | PAT(5, WC) | PAT(6, UC_MINUS) | PAT(7, WT); + PAT(4, WB) | PAT(5, WP) | PAT(6, UC_MINUS) | PAT(7, WT); } if (!boot_cpu_done) {