[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Intended behavior/usage of SSBD setting


  • To: Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>
  • From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Date: Mon, 24 Oct 2022 11:32:56 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=num82eOTp+aDlWsSmX4EjOt+inGJTQzuvs3yD3MMkec=; b=SFIKTEC8j5oaCFKlITjXR4r6p2ZmaCwctuxtC0qIGPOetf+AQExyrzCW9Sc86TBJ7JFP9ujtABkpG3ur6yVFNJ0na3BQe1Z2aUlKyeHl9keRwQ5dMPDZYDL/7eiBuq4uyM6qsj0anX4aj3m8wS3vtC7vVXIW2GZP5WWDAwhjZ2Dv07hEzB/kHA+wsWv82nqazhyQvrx8mOgzH03uTT06/AVDuqlXrxA+BQAclrTMWkDMP127uZLrHxgwznDP0CeYuR/1ratzbbnuh6xtDvqFQ1i49LL8V7eqrMXaIp69EUQcK6lf0CIdGOQV+LjoFcccI5XX3bTi+q7KTuqK1fl+SQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ac72fGv6sjVJdLMe31238WmUa/2TRmRJp8jhFqNMoPaS9fKiu/ooCKxvguPDZANX/9OTn8oRrDq74GqGBVlPGnE/Z1h14sFV0VEZhyY8PoB24Ai0HpSR0jdlqNGfF9f4DH3F9LHYqEVQlwZkm5a3dqVV9VETIjETkNBBaksKNKAxd5dGFVleWWt9K00XX8XAp60jnPKY/ecVYce/SohwHMu9VShQQFOcDce+JkJ/ZuYT4adlIJgrfsBCITsADNeIGpvcAhVV17Vy4COOfAKzzw2a3PvgDgm9aB2TlSrpDJqJSRfZ+IZzqfkt8DW7nemWkhzZf7WoIBkSVfG8tO/3SA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 24 Oct 2022 09:33:25 +0000
  • Ironport-data: A9a23:U9lT2a8AOl1ib/JdsSvIDrUDl3+TJUtcMsCJ2f8bNWPcYEJGY0x3n GNNWj+HPKreY2WkedskPo/gpkJQvZGBy9QwGVc4+S08E34SpcT7XtnIdU2Y0wF+jCHgZBk+s 5hBMImowOQcFCK0SsKFa+C5xZVE/fjUAOC6UIYoAwgpLSd8UiAtlBl/rOAwh49skLCRDhiE/ Nj/uKUzAnf8s9JPGj9Suv/rRC9H5qyo4mpA5AdmP5ingXeF/5UrJMNHTU2OByOQrrl8RoaSW +vFxbelyWLVlz9F5gSNy+uTnuUiG9Y+DCDW4pZkc/HKbitq/0Te5p0TJvsEAXq7vh3S9zxHJ HehgrTrIeshFvWkdO3wyHC0GQkmVUFN0OevzXRSLaV/ZqAJGpfh66wGMa04AWEX0sJ6JWpBr M4BFG0EYC+tpuOZ5baGWtA506zPLOGzVG8ekldJ6GmFSNMZG9XESaiM4sJE1jAtgMwIBezZe 8cSdTtoalLHfgFLPVAUTpk5mY9EhFGmK2Ee9A3T+vFxujaDpOBy+OGF3N79YNuFSN8Thk+Fj mnH4374ElcRM9n3JT+toijw2LefwnuTtIQ6OLi++99n3Xiv/E8+MQAUcnGnmammlRvrMz5YA wlOksY0loAw/kG2Stj2XzWjvWWJ+BUbXrJ4A+A8rQ2A1KfQywKYHXQfCC5MbsQ8s807TiBs0 UWG9+4FHhRqubyRDHeCrLGdqGvuPTBPdDFSIygZUQEC/t/v5pkpiQ7CRcpiF6jzicDpHTb3w HaBqy1Wa6gvsPPnHp6TpTjv6w9AbLCQJuLpzm07hl6Y0z4=
  • Ironport-hdrordr: A9a23:uiEoBaoJkTmQgKZueQ6Vh8kaV5uwL9V00zEX/kB9WHVpm5Oj+v xGzc5w6farsl0ssREb9uxo9pPwJE800aQFmbX5Wo3SJzUO2VHYVb2KiLGP/9SOIU3DH4JmpM Rdmu1FeafN5DtB/LnHCWuDYrEdKbC8mcjH5Ns2jU0dKz2CA5sQkzuRYTzrdnGeKjM2Z6bQQ/ Gnl7d6TnebCAIqR/X+IkNAc/nIptXNmp6jSRkaByQ/4A3LqT+z8rb1HzWRwx9bClp0sP8f2F mAtza8yrSosvm9xBOZ/2jP765OkN+k7tdYHsSDhuUcNz2poAe1Y4ZKXaGEoVkO0aiSwWdvtO OJjwYrPsx15X+UVmapoSH10w2l6zoq42+K8y7svVLT5ejCAB4qActIgoxUNjHD7VA7gd162K VXm0qEqpt+F3r77WjAzumNcysvulu/oHIkn+JWpWdYS5EiZLhYqpFa1F9JEa0HADnx5OkcYa RT5fnnlbhrmG6hHjHkVjEF+q3tYp1zJGbNfqE6gL3b79AM90oJjHfxx6Qk7wU9HdwGOtt5Dt //Q9RVfYF1P7ErhJ1GdZY8qOuMexjwqEH3QRWvCGWiMp07EFTwjLOyyIkJxYiRCe81Jd0J6d /8bG8=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On Mon, Oct 24, 2022 at 08:45:07AM +0200, Jan Beulich wrote:
> On 21.10.2022 23:54, Andrew Cooper wrote:
> > On 20/10/2022 12:01, Roger Pau Monné wrote:
> >> Hello,
> >>
> >> As part of some follow up improvements to my VIRT_SPEC_CTRL series we
> >> have been discussing what the usage of SSBD should be for the
> >> hypervisor itself.  There's currently a `spec-ctrl=ssbd` option [0],
> >> that has an out of date description, as now SSBD is always offered to
> >> guests on AMD hardware, either using SPEC_CTRL or VIRT_SPEC_CTRL.
> >>
> >> It has been pointed out by Andrew that toggling SSBD on AMD using
> >> VIRT_SPEC_CTRL or the non-architectural way (MSR_AMD64_LS_CFG) can
> >> have a high impact on performance, and hence switching it on every
> >> guest <-> hypervisor context switch is likely a very high
> >> performance penalty.
> >>
> >> It's been suggested that it could be more appropriate to run Xen with
> >> the guest SSBD selection on those systems, however that clashes with
> >> the current intent of the `spec-ctrl=ssbd` option.
> >>
> >> I hope I have captured the expressed opinions correctly in the text
> >> above.
> >>
> >> I see two ways to solve this:
> >>
> >>  * Keep the current logic for switching SSBD on guest <-> hypervisor
> >>    context switch, but only use it if `spec-ctrl=ssbd` is set on the
> >>    command line.
> >>
> >>  * Remove the logic for switching SSBD on guest <-> hypervisor context
> >>    switch, ignore setting of `spec-ctrl=ssbd` on those systems and run
> >>    hypervisor code with the guest selection of SSBD.
> >>
> >> Which has raised me the question of whether there's an use case
> >> for always running hypervisor code with SSBD enabled, or that's no
> >> longer relevant if we always offer guests a way for them to toggle the
> >> setting when required.
> >>
> >> I would like to settle on a way forward, so we can get this fixed
> >> before 4.17.
> >>
> >> Thanks, Roger.
> >>
> >> [0] 
> >> https://xenbits.xen.org/docs/unstable/misc/xen-command-line.html#spec-ctrl-x86
> > 
> > There are many issues at play here.  Not least that virt spec ctrl is
> > technically a leftover task that ought to force a re-issue of XSA-263.
> > 
> > Accessing MSRs (even reading) is very expensive, typically >1k cycles. 
> > The core CFG registers are more expensive than most, because they're
> > intended to be configured once after reset and then left alone.
> > 
> > Throughout the speculation work, we've seen crippling performance hits
> > from accessing MSRs in fastpaths.  The fact we're forced to use MSRs in
> > fastpaths even on new CPUs with built in (rather than retrofitted)
> > speculation support is is an area of concern still being worked on with
> > the CPU vendors.
> > 
> > Case in point.  We found for XSA-398 that toggling AMD's
> > MSR_SPEC_CTRL.IBRS on the PV entrypath was so bad that setting it
> > unilaterally behind the back of PV guests was the faster option. 
> > (Another todo is to stop doing this on Intel eIBRS systems, and this
> > will recover us a decent chunk of performance.)
> > 
> > 
> > SSBD mitigations are (rightly or wrongly) off by default for performance
> > reasons.  AMD are less affected than Intel, for microarchitectural
> > reasons which are discussed in relevant whitepapers, and which are
> > expected to remain true for future CPUs.
> > 
> > When Xen doesn't care about the protecting itself against SSBD by
> > default, I guarantee you that it will be faster to omit the MSR accesses
> > and run in the guest kernel's choice, than to clear the SSBD
> > protection.  We simply don't spend long enough in the hypervisor for the
> > hit against memory accesses to dwarf the hit for MSR accesses taken on
> > entry/exit.
> > 
> > The reason we put in spec-ctrl=ssbd was as a stopgap, because at the
> > time we didn't know how bad SSB really was, and it was decided that the
> > admin should have a big hammer to use if they really needed.
> > 
> > When Xen does care about protecting itself, the above reasoning bites
> > back hard.  Because we spend (or should be spending!) >99% of time in
> > the guest, the hit to memory accesses is far more likely to be able
> > dwarf the hit from the MSR accesses, but now, the dominating factor for
> > performance is the vmexit rate.
> > 
> > The problem is that if you've got a completely compute bound workload,
> > there are very few exits, while if you've got an IO bound workload,
> > there are plenty of exits.  I honestly don't know if it will be more
> > efficient to leave SSBD active unilaterally (whether or not we hide
> > this, e.g. synthesizing SSB_NO), or to let the guest run with it kernels
> > choice.  I suspect the answer is different with different workloads.
> > 
> > 
> > But, one other factor helps us.  Given that the default is fast (rather
> > than secure), anyone opting in to spec-ctrl=ssbd is saying "I care more
> > about security than performance", at which point we can simplify what we
> > do because we don't need to cater to everyone.
> > 
> > 
> > As a slight tangent, there is a cost to having too many options, which
> > must not be ignored.  Xen's speculation safety is far too complicated
> > already and needs to get more simple; this has a material impact on how
> > easy it is to follow, and how easy it to make changes.
> > 
> > It is the way it is because we've had 6 years of drip feeding one
> > problem after another, and haven't had the time to take a step and
> > design something more sensible from having 6 years of
> > knowledge/learnings as a basis.  There are definitely things which I
> > would have done differently, if 6 years ago, I'd known what I know now,
> > and part of the reason why the recent speculation security work has
> > taken so much effort is because it has involved reworking the effort
> > which came before, to a deadline which never has enough time to plan
> > properly within.
> > 
> > 
> > So, first question, do we care about having an "SSBD active while in
> > Xen" mode?
> > 
> > Probably yes, because we a) still don't have a working solution for PV
> > guests on AMD and b) who knows if there's something far worse lurking in
> > the future.  Sods law says that if we decide no here, it will be
> > critical for some future issue.
> > 
> > But as it's off by default and noone's made has made any noise about
> > having it on, we ought to prioritise simplicity.
> > 
> > Given that off is the default, but we know that kernels do offer it to
> > userspace, and it does get used by certain processes, we need to
> > prioritise performance.  And here, this is net system performance, not
> > "ensure it's off whenever it can be".  Having Xen run in the guest
> > kernel's choice of value will result in much better overall performance,
> > than trying to modify the setting in the VMentry/exit path.
> 
> My takeaway from this reply of yours is: By default run with the guest's
> choice, while (I'm less certain here) you're undecided about the behavior
> with "spec-ctrl=ssbd". Please could you make explicit whether this is a
> correct understanding of mine?

 * spec-ctrl=ssbd -> SSBD always on, expose VIRT_SSBD
   (VIRT_SPEC_CTRL.SSBD) but guest setting won't be propagated to
   platform.  As a future improvement also expose SSB_NO in that
   case.

 * spec-ctrl=no-ssbd -> Run hypervisor code with guest SSBD selection
   depending on hardware support.

Default to `spec-ctrl=no-ssbd`.

Would that be an accurate?

Thanks, Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.