On 30/09/2019 11:36, Jan Beulich wrote:
> On 30.09.2019 07:21, Juergen Gross wrote:
>> When switching sched units synchronize all vcpus of the new unit to be
>> scheduled at the same time.
>>
>> A variable sched_granularity is added which holds the number of vcpus
>> per schedule unit.
>>
>> As tasklets require to schedule the idle unit it is required to set the
>> tasklet_work_scheduled parameter of do_schedule() to true if any cpu
>> covered by the current schedule() call has any pending tasklet work.
>>
>> For joining other vcpus of the schedule unit we need to add a new
>> softirq SCHED_SLAVE_SOFTIRQ in order to have a way to initiate a
>> context switch without calling the generic schedule() function
>> selecting the vcpu to switch to, as we already know which vcpu we
>> want to run. This has the other advantage not to loose any other
>> concurrent SCHEDULE_SOFTIRQ events.
>>
>> Signed-off-by: Juergen Gross <jgr...@suse.com>
>> Reviewed-by: Dario Faggioli <dfaggi...@suse.com>
> x86 and applicable common code parts
> Acked-by: Jan Beulich <jbeul...@suse.com>
>
> However, ...
>
>> +static void sched_context_switch(struct vcpu *vprev, struct vcpu *vnext,
>> +                                 s_time_t now)
>> +{
>> +    if ( unlikely(vprev == vnext) )
>>      {
>> -        pcpu_schedule_unlock_irq(lock, cpu);
>>          TRACE_4D(TRC_SCHED_SWITCH_INFCONT,
>> -                 next->domain->domain_id, next->unit_id,
>> -                 now - prev->state_entry_time,
>> -                 prev->next_time);
>> -        trace_continue_running(next->vcpu_list);
>> -        return continue_running(prev->vcpu_list);
>> +                 vnext->domain->domain_id, vnext->sched_unit->unit_id,
>> +                 now - vprev->runstate.state_entry_time,
>> +                 vprev->sched_unit->next_time);
>> +        sched_context_switched(vprev, vnext);
>> +        trace_continue_running(vnext);
>> +        return continue_running(vprev);
>>      }
> ... I don't recall if there weren't compiler (clang?) versions not
> allowing (or at least warning about) use of this extension.

Which extension?

> I'm
> having difficulty thinking of a way to find a possible example use
> elsewhere in our code, proving that this isn't the first instance.
> Hence I wonder whether it wouldn't be better to avoid use of the
> extension here.

Gitlab can give us the answer easily.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to