diff options
Diffstat (limited to 'arch/mips/kvm/mips.c')
| -rw-r--r-- | arch/mips/kvm/mips.c | 34 | 
1 files changed, 7 insertions, 27 deletions
diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c index a25e0b73ee70..36c8991b5d39 100644 --- a/arch/mips/kvm/mips.c +++ b/arch/mips/kvm/mips.c @@ -135,16 +135,6 @@ void kvm_arch_hardware_disable(void)  	kvm_mips_callbacks->hardware_disable();  } -int kvm_arch_hardware_setup(void *opaque) -{ -	return 0; -} - -int kvm_arch_check_processor_compat(void *opaque) -{ -	return 0; -} -  extern void kvm_init_loongson_ipi(struct kvm *kvm);  int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) @@ -1015,21 +1005,6 @@ long kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg)  	return r;  } -int kvm_arch_init(void *opaque) -{ -	if (kvm_mips_callbacks) { -		kvm_err("kvm: module already exists\n"); -		return -EEXIST; -	} - -	return kvm_mips_emulation_init(&kvm_mips_callbacks); -} - -void kvm_arch_exit(void) -{ -	kvm_mips_callbacks = NULL; -} -  int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu,  				  struct kvm_sregs *sregs)  { @@ -1646,16 +1621,21 @@ static int __init kvm_mips_init(void)  	if (ret)  		return ret; -	ret = kvm_init(NULL, sizeof(struct kvm_vcpu), 0, THIS_MODULE); - +	ret = kvm_mips_emulation_init();  	if (ret)  		return ret; +  	if (boot_cpu_type() == CPU_LOONGSON64)  		kvm_priority_to_irq = kvm_loongson3_priority_to_irq;  	register_die_notifier(&kvm_mips_csr_die_notifier); +	ret = kvm_init(sizeof(struct kvm_vcpu), 0, THIS_MODULE); +	if (ret) { +		unregister_die_notifier(&kvm_mips_csr_die_notifier); +		return ret; +	}  	return 0;  }  |