Andrew Cooper
15734a72d7
x86/amd: Enumeration for speculative features/hints
...
There is a step change in speculation protections between the Zen1 and Zen2
microarchitectures.
Zen1 and older have no special support. Control bits in non-architectural
MSRs are used to make lfence be dispatch-serialising (Spectre v1), and to
disable Memory Disambiguation (Speculative Store Bypass). IBPB was
retrofitted in a microcode update, and software methods are required for
Spectre v2 protections.
Because the bit controlling Memory Disambiguation is model specific,
hypervisors are expected to expose a MSR_VIRT_SPEC_CTRL interface which
abstracts the model specific details.
Zen2 and later implement the MSR_SPEC_CTRL interface in hardware, and
virtualise the interface for HVM guests to use. A number of hint bits are
specified too to help guide OS software to the most efficient mitigation
strategy.
Zen3 introduced a new feature, Predictive Store Forwarding, along with a
control to disable it in sensitive code.
Add CPUID and VMCB details for all the new functionality.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com >
Reviewed-by: Jan Beulich <jbeulich@suse.com >
master commit: 747424c664
master date: 2021-09-08 14:16:19 +0100
2021-10-15 11:14:46 +02:00
..
2012-08-01 12:46:52 +01:00
2019-05-15 16:19:45 +01:00
2013-12-09 15:20:12 +00:00
2013-12-09 15:20:12 +00:00
2013-10-10 15:48:55 +01:00
2018-10-30 17:03:23 +00:00
2012-10-05 14:34:30 +01:00
2012-10-08 11:45:29 +01:00
2019-03-12 14:24:53 +00:00
2019-11-19 16:44:33 +00:00
2019-03-12 14:24:53 +00:00
2014-07-10 13:06:55 +01:00
2018-01-25 11:35:21 +00:00
2020-05-19 16:19:15 +01:00
2019-10-28 18:09:24 +00:00
2018-08-17 16:40:50 +01:00
2016-09-30 11:47:27 +01:00
2019-10-24 16:08:41 +01:00
2016-09-30 11:47:27 +01:00
2017-09-28 15:28:01 +01:00
2017-09-22 16:29:18 +01:00
2018-01-25 11:35:14 +00:00
2017-03-16 18:25:16 +00:00
2016-12-12 09:48:07 +00:00
2019-09-20 10:42:41 +01:00
2019-09-20 10:42:41 +01:00
2017-03-14 11:36:52 +00:00
2020-03-04 10:15:45 +00:00
2015-08-05 10:40:35 +01:00
2021-10-15 11:14:46 +02:00
2017-02-16 12:47:12 +00:00
2021-03-18 15:03:28 +01:00
2020-01-31 16:10:46 +00:00
2020-01-31 16:10:46 +00:00
2020-05-19 16:19:15 +01:00
2020-01-07 12:26:45 +00:00
2021-03-18 15:03:28 +01:00
2020-06-17 13:54:12 +01:00
2020-06-02 11:57:01 +00:00
2020-01-27 16:03:18 +00:00
2020-01-20 12:10:30 +00:00
2019-01-11 14:57:52 +00:00
2015-03-05 17:06:43 +00:00
2020-01-27 16:03:17 +00:00
2018-11-06 15:41:24 +00:00
2016-07-12 12:49:41 +01:00
2020-02-24 17:17:35 +00:00
2021-03-18 15:03:28 +01:00
2019-01-11 14:57:52 +00:00
2018-08-21 12:16:02 +01:00
2015-05-21 14:59:17 +01:00
2015-06-25 10:59:08 +01:00
2019-01-18 14:22:36 +00:00
2020-11-09 17:45:32 +00:00
2018-11-06 15:41:24 +00:00
2018-01-25 11:35:14 +00:00
2019-09-20 10:41:01 +01:00
2016-12-03 15:57:34 +00:00
2015-07-15 11:22:53 +01:00
2020-06-17 13:54:12 +01:00
2016-02-26 15:14:47 +00:00
2016-10-24 11:53:20 +01:00
2017-03-15 10:22:33 +00:00
2018-07-16 16:09:14 +01:00
2020-06-26 11:56:31 +00:00
2018-01-18 11:32:51 +00:00
2018-03-30 12:51:55 +01:00
2020-05-19 16:19:15 +01:00
2016-04-01 14:33:16 +01:00
2019-09-20 10:42:41 +01:00
2020-01-07 12:26:45 +00:00
2020-02-27 18:56:24 +00:00
2020-05-29 17:33:03 +01:00
2018-03-21 16:24:58 +00:00
2016-04-01 11:07:28 +08:00
2020-01-03 18:37:25 +00:00
2017-09-28 15:28:02 +01:00
2015-07-15 11:40:43 +01:00
2015-07-15 11:40:43 +01:00
2015-07-15 11:40:44 +01:00
2014-02-06 14:21:30 +00:00
2019-05-13 11:28:27 +01:00
2019-11-25 10:42:56 +00:00
2020-05-18 23:23:44 +01:00
2020-01-31 16:10:46 +00:00
2020-11-09 17:13:39 +00:00
2019-10-24 16:08:41 +01:00
2016-04-08 15:07:17 +01:00
2016-04-20 14:34:04 +01:00
2019-09-20 10:41:01 +01:00
2019-11-25 10:42:56 +00:00
2016-12-03 15:57:35 +00:00
2019-09-20 10:41:01 +01:00
2019-09-20 10:41:01 +01:00
2018-04-23 14:31:05 +01:00
2016-09-28 14:32:05 +01:00
2021-08-19 17:47:20 +01:00
2019-06-28 11:54:52 +01:00
2020-05-29 12:20:08 +02:00
2020-06-17 13:54:12 +01:00
2019-09-20 12:20:02 +01:00
2020-06-19 16:20:11 +01:00
2020-06-19 16:20:11 +01:00
2019-09-20 12:20:02 +01:00
2020-06-19 16:20:11 +01:00
2020-06-19 16:20:11 +01:00
2019-09-20 12:20:02 +01:00
2020-03-30 15:27:06 +01:00
2012-08-06 12:28:03 +01:00
2020-05-10 13:02:18 +01:00
2020-05-10 13:02:18 +01:00
2020-05-10 13:02:18 +01:00
2014-06-17 10:08:57 +01:00
2019-09-20 12:20:02 +01:00
2020-11-09 17:13:34 +00:00
2013-10-10 15:48:55 +01:00
2019-11-29 21:43:49 +00:00
2020-05-29 12:20:08 +02:00
2011-10-12 16:21:32 +01:00
2015-07-15 11:40:43 +01:00
2015-07-15 11:40:43 +01:00
2015-07-15 16:02:33 +01:00
2014-02-06 14:21:30 +00:00
2020-05-29 12:20:08 +02:00
2017-03-14 14:13:14 +00:00