On 03/07/2018 08:21, Wanpeng Li wrote: > + > + rcu_read_lock(); > + map = rcu_dereference(kvm->arch.apic_map); > + > + for_each_set_bit(i, &ipi_bitmap_low, BITS_PER_LONG) { > + vcpu = map->phys_map[i]->vcpu; > + if (!kvm_apic_set_irq(vcpu, &irq, NULL)) > + return 1; > + } > + > + for_each_set_bit(i, &ipi_bitmap_high, BITS_PER_LONG) { > + vcpu = map->phys_map[i + BITS_PER_LONG]->vcpu; > + if (!kvm_apic_set_irq(vcpu, &irq, NULL)) > + return 1; > + } > + This should be the guest's BITS_PER_LONG, not the host's (i.e. you need to pass op_64_bit from kvm_emulate_hypercall). Thanks, Paolo