[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 3/3] amd/msr: implement VIRT_SPEC_CTRL for HVM guests using legacy SSBD
On 29.04.2022 18:11, Roger Pau Monné wrote: > On Fri, Apr 29, 2022 at 05:49:42PM +0200, Roger Pau Monné wrote: >> On Fri, Apr 29, 2022 at 12:59:58PM +0200, Jan Beulich wrote: >>> On 27.04.2022 12:47, Roger Pau Monne wrote: >>>> +void amd_set_legacy_ssbd(bool enable) >>>> +{ >>>> + const struct cpuinfo_x86 *c = ¤t_cpu_data; >>>> + struct ssbd_ls_cfg *status; >>>> + >>>> + if (c->x86 != 0x17 || c->x86_num_siblings <= 1) { >>>> + BUG_ON(!set_legacy_ssbd(c, enable)); >>>> + return; >>>> + } >>>> + >>>> + BUG_ON(c->phys_proc_id >= AMD_FAM17H_MAX_SOCKETS); >>>> + BUG_ON(c->cpu_core_id >= ssbd_max_cores); >>>> + status = &ssbd_ls_cfg[c->phys_proc_id * ssbd_max_cores + >>>> + c->cpu_core_id]; >>>> + >>>> + /* >>>> + * Open code a very simple spinlock: this function is used with GIF==0 >>>> + * and different IF values, so would trigger the checklock detector. >>>> + * Instead of trying to workaround the detector, use a very simple lock >>>> + * implementation: it's better to reduce the amount of code executed >>>> + * with GIF==0. >>>> + */ >>>> + while ( test_and_set_bool(status->locked) ) >>>> + cpu_relax(); >>>> + status->count += enable ? 1 : -1; >>>> + ASSERT(status->count <= c->x86_num_siblings); >>>> + if (enable ? status->count == 1 : !status->count) >>>> + BUG_ON(!set_legacy_ssbd(c, enable)); >>> >>> What are the effects of ASSERT() or BUG_ON() triggering in a GIF=0 >>> region? >> >> So AFAICT the BUG itself works, the usage of a crash kernel however >> won't work as it's booted with GIF==0. >> >> Maybe we need to issue an stgi as part of BUG_FRAME if required? >> (maybe that's too naive...) > > Well, better in panic() or kexec_crash() likely. Yeah, lifting it too early may be detrimental. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |