KVM: Clean up vm creation and release
IA64 support forces us to abstract the allocation of the kvm structure. But instead of mixing this up with arch-specific initialization and doing the same on destruction, split both steps. This allows to move generic destruction calls into generic code. It also fixes error clean-up on failures of kvm_create_vm for IA64. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
		
					parent
					
						
							
								9d893c6bc1
							
						
					
				
			
			
				commit
				
					
						d89f5eff70
					
				
			
		
					 7 changed files with 49 additions and 72 deletions
				
			
		| 
						 | 
				
			
			@ -16,6 +16,7 @@
 | 
			
		|||
#include <linux/mm.h>
 | 
			
		||||
#include <linux/preempt.h>
 | 
			
		||||
#include <linux/msi.h>
 | 
			
		||||
#include <linux/slab.h>
 | 
			
		||||
#include <asm/signal.h>
 | 
			
		||||
 | 
			
		||||
#include <linux/kvm.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -441,7 +442,19 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu);
 | 
			
		|||
 | 
			
		||||
void kvm_free_physmem(struct kvm *kvm);
 | 
			
		||||
 | 
			
		||||
struct  kvm *kvm_arch_create_vm(void);
 | 
			
		||||
#ifndef __KVM_HAVE_ARCH_VM_ALLOC
 | 
			
		||||
static inline struct kvm *kvm_arch_alloc_vm(void)
 | 
			
		||||
{
 | 
			
		||||
	return kzalloc(sizeof(struct kvm), GFP_KERNEL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void kvm_arch_free_vm(struct kvm *kvm)
 | 
			
		||||
{
 | 
			
		||||
	kfree(kvm);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int kvm_arch_init_vm(struct kvm *kvm);
 | 
			
		||||
void kvm_arch_destroy_vm(struct kvm *kvm);
 | 
			
		||||
void kvm_free_all_assigned_devices(struct kvm *kvm);
 | 
			
		||||
void kvm_arch_sync_events(struct kvm *kvm);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue