Inject Interrupt, Using VMCS during migration

I am trying to inject interrupt, in final phase of Live migration.

I use vmcs_write32 function to inject interrupt. This function is called by qemu, with ioctl.

This is Code.

void vmcs_write32_provider(unsigned long field, u32 value)
{
vmcs_write32(field, value);
}

long kvm_arch_vcpu_ioctl(struct file *filp,
unsigned int ioctl, unsigned long arg)
{

	case KVM_TEST_IOCTL: {
	r=0;
		//printk("Test IOCTL!!!\n");
		int type = 0;
		int trap=58;
		u32 intr_fields= (0x80000000 | (type<<8) | trap);
		vmcs_write32_provider(0x00004016,intr_fields);
		printk("vmcs_write Success!!!\n");

		goto out;
	}

This code works perfectly when called by hypercall.(When call this function in kvm_emulate_hypercall function, in guest VM.)

But, when I trying to call this function by qemu(ioctl), This error message is occurred.

I need help. Thank you.