On 21/03/16 14:42, Jan Beulich wrote: >>>> On 21.03.16 at 13:24, <JGross@xxxxxxxx> wrote: >> @@ -758,9 +759,14 @@ struct smp_sync_call_struct { >> static void smp_call_sync_callback(struct work_struct *work) >> { >> struct smp_sync_call_struct *sscs; >> + unsigned int cpu = smp_processor_id(); > > So this obtains the vCPU number, yet ... > >> sscs = container_of(work, struct smp_sync_call_struct, work); >> + preempt_disable(); >> + hypervisor_pin_vcpu(cpu); > > ... here you're supposed to pass a pCPU number. > > Also don't you need to call smp_processor_id() after preempt_disable()? No, I'm running on the workqueue bound to the specific (v)cpu and I'm expecting this vcpu to be pinned to the same numbered pcpu. preempt_disable() is just called to avoid scheduling of another thread while the override pinning is active. Juergen _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization