|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Patch v3 2/2] x86/microcode: Synchronize late microcode loading
>>> On 16.05.18 at 15:25, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 16/05/18 14:10, Jan Beulich wrote:
>>> +static int do_microcode_update(void *_info)
>>> +{
>>> + struct microcode_info *info = _info;
>>> + unsigned int cpu = smp_processor_id();
>>> + int ret;
>>> +
>>> + ret = wait_for_cpus(&info->cpu_in, MICROCODE_DEFAULT_TIMEOUT);
>>> + if ( ret )
>>> + return ret;
>>> +
>>> + /*
>>> + * Logical threads which set the first bit in cpu_sibling_mask can do
>>> + * the update. Other sibling threads just await the completion of
>>> + * microcode update.
>>> + */
>>> + if ( !cpumask_test_and_set_cpu(
>>> + cpumask_first(per_cpu(cpu_sibling_mask, cpu)),
>>> &info->cpus) )
>>> + ret = microcode_update_cpu(info->buffer, info->buffer_size);
>>> + /*
>>> + * Increase the wait timeout to a safe value here since we're
>>> serializing
>>> + * the microcode update and that could take a while on a large number
>>> of
>>> + * CPUs. And that is fine as the *actual* timeout will be determined by
>>> + * the last CPU finished updating and thus cut short
>>> + */
>>> + if ( wait_for_cpus(&info->cpu_out, MICROCODE_DEFAULT_TIMEOUT *
>>> + nr_phys_cpus) )
>> I remain unconvinced that this is a safe thing to do on a huge system with
>> guests running (even Dom0 alone would seem risky enough). I continue to
>> hope for comments from others, in particular Andrew, here. At the very
>> least I think you should taint the hypervisor when making it here.
>
> I see nothing in this patch which prevents a deadlock against the time
> calibration rendezvous. It think its fine to pause the time calibration
> rendezvous while performing this update.
If there's a problem here, wouldn't that be a general one with
stop_machine()?
> Also, what is the purpose of serialising the updates while all pcpus are
> in rendezvous? Surely at that point the best option is to initiate an
> update on all processors which don't have an online sibling thread with
> a lower thread id.
I've suggested that before.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |