On 21/03/16 14:42, Jan Beulich wrote:
quoted
quoted
quoted
On 21.03.16 at 13:24, [off-list ref] 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 ...
quoted
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