Re: [tip:x86/pti] x86/pti: Make sure the user/kernel PTEs match

2018-02-13 Thread Thomas Gleixner
On Fri, 9 Feb 2018, Dave Hansen wrote:
> On 01/03/2018 08:22 AM, tip-bot for Thomas Gleixner wrote:
> > --- a/arch/x86/mm/pti.c
> > +++ b/arch/x86/mm/pti.c
> > @@ -367,7 +367,8 @@ static void __init pti_setup_espfix64(void)
> >  static void __init pti_clone_entry_text(void)
> >  {
> > pti_clone_pmds((unsigned long) __entry_text_start,
> > -   (unsigned long) __irqentry_text_end, _PAGE_RW);
> > +   (unsigned long) __irqentry_text_end,
> > +  _PAGE_RW | _PAGE_GLOBAL);
> >  }
> 
> We appear to have lost all of our global bits between this and the
> cpu_entry_area itself.  To make K8 happy, shouldn't we just *set*
> _PAGE_GLOBAL universally instead of clearing it universally?
> 
> Also, don't we want _PAGE_GLOBAL in the cpu_entry_area.c pte setting?  I
> think I had this for all the shared user/kernel areas near the end of
> the KAISER era, but we appear to have totally nuked it for PTI.

Yes, we did due to the usage of supported_pte_flags vs. the hard coded
compile time thing. It was on my todo list to flag the shared areas global,
but I somehow nuked that item in a vein attempt to shrink that list :)
We surely should revisit that.

Thanks,

tglx


Re: [tip:x86/pti] x86/pti: Make sure the user/kernel PTEs match

2018-02-13 Thread Thomas Gleixner
On Fri, 9 Feb 2018, Dave Hansen wrote:
> On 01/03/2018 08:22 AM, tip-bot for Thomas Gleixner wrote:
> > --- a/arch/x86/mm/pti.c
> > +++ b/arch/x86/mm/pti.c
> > @@ -367,7 +367,8 @@ static void __init pti_setup_espfix64(void)
> >  static void __init pti_clone_entry_text(void)
> >  {
> > pti_clone_pmds((unsigned long) __entry_text_start,
> > -   (unsigned long) __irqentry_text_end, _PAGE_RW);
> > +   (unsigned long) __irqentry_text_end,
> > +  _PAGE_RW | _PAGE_GLOBAL);
> >  }
> 
> We appear to have lost all of our global bits between this and the
> cpu_entry_area itself.  To make K8 happy, shouldn't we just *set*
> _PAGE_GLOBAL universally instead of clearing it universally?
> 
> Also, don't we want _PAGE_GLOBAL in the cpu_entry_area.c pte setting?  I
> think I had this for all the shared user/kernel areas near the end of
> the KAISER era, but we appear to have totally nuked it for PTI.

Yes, we did due to the usage of supported_pte_flags vs. the hard coded
compile time thing. It was on my todo list to flag the shared areas global,
but I somehow nuked that item in a vein attempt to shrink that list :)
We surely should revisit that.

Thanks,

tglx


Re: [tip:x86/pti] x86/pti: Make sure the user/kernel PTEs match

2018-02-09 Thread Dave Hansen
On 01/03/2018 08:22 AM, tip-bot for Thomas Gleixner wrote:
> --- a/arch/x86/mm/pti.c
> +++ b/arch/x86/mm/pti.c
> @@ -367,7 +367,8 @@ static void __init pti_setup_espfix64(void)
>  static void __init pti_clone_entry_text(void)
>  {
>   pti_clone_pmds((unsigned long) __entry_text_start,
> - (unsigned long) __irqentry_text_end, _PAGE_RW);
> + (unsigned long) __irqentry_text_end,
> +_PAGE_RW | _PAGE_GLOBAL);
>  }

We appear to have lost all of our global bits between this and the
cpu_entry_area itself.  To make K8 happy, shouldn't we just *set*
_PAGE_GLOBAL universally instead of clearing it universally?

Also, don't we want _PAGE_GLOBAL in the cpu_entry_area.c pte setting?  I
think I had this for all the shared user/kernel areas near the end of
the KAISER era, but we appear to have totally nuked it for PTI.



Re: [tip:x86/pti] x86/pti: Make sure the user/kernel PTEs match

2018-02-09 Thread Dave Hansen
On 01/03/2018 08:22 AM, tip-bot for Thomas Gleixner wrote:
> --- a/arch/x86/mm/pti.c
> +++ b/arch/x86/mm/pti.c
> @@ -367,7 +367,8 @@ static void __init pti_setup_espfix64(void)
>  static void __init pti_clone_entry_text(void)
>  {
>   pti_clone_pmds((unsigned long) __entry_text_start,
> - (unsigned long) __irqentry_text_end, _PAGE_RW);
> + (unsigned long) __irqentry_text_end,
> +_PAGE_RW | _PAGE_GLOBAL);
>  }

We appear to have lost all of our global bits between this and the
cpu_entry_area itself.  To make K8 happy, shouldn't we just *set*
_PAGE_GLOBAL universally instead of clearing it universally?

Also, don't we want _PAGE_GLOBAL in the cpu_entry_area.c pte setting?  I
think I had this for all the shared user/kernel areas near the end of
the KAISER era, but we appear to have totally nuked it for PTI.