All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Pavel Machek <pavel@ucw.cz>, Zhang Rui <rui.zhang@intel.com>,
	Andrew Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jarkko Nikula <jarkko.nikula@linux.intel.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"the arch/x86 maintainers" <x86@kernel.org>
Subject: Re: Linux 4.15-rc2: Regression in resume from ACPI S3
Date: Tue, 12 Dec 2017 10:05:45 -0800	[thread overview]
Message-ID: <CALCETrVBZrL-SBpSw5zzTZb36Dr72AjxfO7Dq5Onz7K8GZt4AA@mail.gmail.com> (raw)
In-Reply-To: <CA+55aFwMCHd7ppU2aWafXoHdTme=g=HJ1UMmNp5WuQ9pQ7i7Cg@mail.gmail.com>

On Tue, Dec 12, 2017 at 9:27 AM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> On Sun, Dec 10, 2017 at 1:28 PM, Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
>>
>> That said, this *all* smells wrong. Why is there a special
>> fix_processor_context() function at all with different 32-bit and
>> 64-bit behavior? This code is all written to be maximally confusing.
>
> Hmm. Looking a bit more at this, I think it should be solved by:
>
>  - load the original read-write GDT early, along with the IDT.
>
>   We have already saved it off in __save_processor_state(), and it may
> have already gotten loaded very early in at least some of the paths,
> but it definitely hasn't gotten reloaded in all the paths (think
> "suspend/resume testing" etc).
>
>  - add the LDT descriptor to the save area too, exactly like we
> already have IDT/GDT.
>
>    Then, we can do "load_ldt()" early (along with IDT and GDT).
>
>  - now we can just load all the segments early, and get the percpu and
> stack canary stuff without any special cases
>
> - do NOT use "load_gs_index()", which does that swapgs dance (twice!)
> and plays with interrupt state. Just load the segment register, and
> then do the wrmsrl() of the {FS,GS,KERNEL_GS}_BASE values. There is no
> need for the swapgs dance.

Using what helper?  On x86_64, it can fault, and IIRC we explicitly
don't allow loadsegment(gs, ...).

>
>  - now that we have a fully working system, then the
> "fix_processor_context()" code can do the "fancy" stuff like setting
> up the RO fixmap GDT and re-initializing the TLB state. Those want
> percpu stuff.
>
> In other words, why not try to organize this so that we do a simple
> and fairly mindless restore of the low-level state first? Avoid all
> the "system is halfway up" crud.
>
> Would that work for people? Andy?

Other than the above, more or less.

But we should really do all the user segments last.  They're not at
all needed for normal kernel execution, so I think they should be the
very last part.

I'll try to get to this today.

  reply	other threads:[~2017-12-12 18:06 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-03 16:22 Linux 4.15-rc2 Linus Torvalds
2017-12-04 22:25 ` Linux 4.15-rc2: Regression in resume from ACPI S3 Rafael J. Wysocki
2017-12-04 22:36   ` Linus Torvalds
2017-12-04 22:38     ` Thomas Gleixner
2017-12-04 22:41       ` Rafael J. Wysocki
2017-12-05  0:25         ` Rafael J. Wysocki
2017-12-09 10:33           ` Pavel Machek
2017-12-09 11:41             ` Pavel Machek
     [not found]             ` <CA+55aFw8tuoJ2gcXx3K2sKFf2Y9hXX4naMVQNqGOUivnjwhjkg@mail.gmail.com>
2017-12-09 22:01               ` Pavel Machek
     [not found]                 ` <CA+55aFySAdiBZhZ0PSDjH5PuvPPcMsBRXbxCkObfm1eY7gHDbQ@mail.gmail.com>
2017-12-10 16:23                   ` Pavel Machek
2017-12-10 16:37                     ` Linus Torvalds
2017-12-10 18:56                       ` Pavel Machek
2017-12-10 20:30                         ` Linus Torvalds
2017-12-10 20:43                           ` Pavel Machek
2017-12-10 21:28                             ` Linus Torvalds
2017-12-10 21:35                               ` Pavel Machek
2017-12-12 17:27                               ` Linus Torvalds
2017-12-12 18:05                                 ` Andy Lutomirski [this message]
2017-12-12 18:36                                   ` Linus Torvalds
2017-12-12 22:10                                     ` Andy Lutomirski
2017-12-12 22:33                                       ` Linus Torvalds
2017-12-12 23:10                                         ` Andy Lutomirski
2017-12-13 11:16                                       ` Jarkko Nikula
2017-12-13 12:40                                         ` Ingo Molnar
2017-12-13 18:50                                         ` Andy Lutomirski
2017-12-10 21:38                           ` [PATCH] Fix resume on x86-32 machines Pavel Machek
2017-12-10 21:58                             ` Andy Lutomirski
2017-12-10 22:20                               ` Pavel Machek
2017-12-11  9:25                                 ` Jarkko Nikula
2017-12-11 14:22                               ` Rafael J. Wysocki
2017-12-11 14:43                                 ` Rafael J. Wysocki
2017-12-11 14:59                                 ` Jarkko Nikula
2017-12-11 18:31                                 ` Linus Torvalds
2017-12-11 18:41                                   ` Andy Lutomirski
2017-12-11 19:12                                     ` Linus Torvalds
2017-12-14 20:38                                     ` Pavel Machek
2017-12-14 20:47                                       ` Linus Torvalds
2017-12-14 21:20                                         ` Andy Lutomirski
2017-12-14 22:22                                         ` Pavel Machek
2017-12-11 15:13                               ` Ingo Molnar
2017-12-11 16:26                                 ` Andy Lutomirski
2017-12-11 14:09                           ` Linux 4.15-rc2: Regression in resume from ACPI S3 Zhang Rui
2017-12-11 16:28                             ` Andy Lutomirski
2017-12-12  8:00                             ` Pavel Machek
2017-12-06 12:15     ` Michal Hocko
2017-12-06 12:23       ` Thomas Gleixner
2017-12-06 14:04         ` Rafael J. Wysocki
2017-12-06 12:31       ` Maarten Lankhorst
2017-12-06 12:46         ` Thomas Gleixner
2017-12-06 13:09           ` Maarten Lankhorst
2017-12-06 14:15             ` Thomas Gleixner
2017-12-07 13:33               ` Maarten Lankhorst
2017-12-08 10:30                 ` Thomas Gleixner
2017-12-13 15:57                   ` Thomas Gleixner
2017-12-13 16:23                     ` Bjorn Helgaas
2017-12-13 16:41                       ` Thomas Gleixner
2017-12-13 17:45                         ` Linus Torvalds
2017-12-13 18:19                           ` Thomas Gleixner
2017-12-13 20:52                             ` Thomas Gleixner
2017-12-13 21:06                               ` Thomas Gleixner
2017-12-13 22:48                                 ` Rafael J. Wysocki
2017-12-14 11:54                                 ` Thomas Gleixner
2017-12-14 12:12                                   ` Rafael J. Wysocki
2017-12-14 12:30                                     ` Thomas Gleixner
2017-12-14 15:30                                       ` Rafael J. Wysocki
2017-12-14 15:52                                         ` Thomas Gleixner
2017-12-14 15:54                                           ` Rafael J. Wysocki
2017-12-14 16:17                                             ` Maarten Lankhorst
2017-12-15  2:07                                             ` [PATCH] PCI / PM: Force devices to D0 in pci_pm_thaw_noirq() Rafael J. Wysocki
2017-12-15 14:28                                               ` Rafael J. Wysocki
2017-12-15 18:30                                               ` Bjorn Helgaas
2017-12-15 23:44                                                 ` Rafael J. Wysocki
2017-12-14 13:24                                   ` Linux 4.15-rc2: Regression in resume from ACPI S3 Thomas Gleixner
2017-12-14 19:03                                   ` Linus Torvalds
2017-12-14 22:36                                     ` Thomas Gleixner
2017-12-14 22:47                                       ` Linus Torvalds
2017-12-15  9:05                                         ` Thomas Gleixner
2017-12-15  0:34                                       ` Rafael J. Wysocki
2017-12-13 22:39                             ` Rafael J. Wysocki
2017-12-13 23:26                               ` Rafael J. Wysocki
2017-12-07  7:55       ` Michal Hocko
2017-12-10 20:30         ` Michal Hocko
2018-02-21 18:36 ` Linux 4.15-rc2 Eugene Syromiatnikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CALCETrVBZrL-SBpSw5zzTZb36Dr72AjxfO7Dq5Onz7K8GZt4AA@mail.gmail.com \
    --to=luto@kernel.org \
    --cc=jarkko.nikula@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rjw@rjwysocki.net \
    --cc=rui.zhang@intel.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.