diff options
Diffstat (limited to 'arch/x86/lguest/boot.c')
| -rw-r--r-- | arch/x86/lguest/boot.c | 61 | 
1 files changed, 30 insertions, 31 deletions
| diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index 7e59dc1d3fc2..2bdf628066bd 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c @@ -115,7 +115,7 @@ static void async_hcall(unsigned long call, unsigned long arg1,  	local_irq_save(flags);  	if (lguest_data.hcall_status[next_call] != 0xFF) {  		/* Table full, so do normal hcall which will flush table. */ -		kvm_hypercall4(call, arg1, arg2, arg3, arg4); +		hcall(call, arg1, arg2, arg3, arg4);  	} else {  		lguest_data.hcalls[next_call].arg0 = call;  		lguest_data.hcalls[next_call].arg1 = arg1; @@ -145,46 +145,45 @@ static void async_hcall(unsigned long call, unsigned long arg1,   * So, when we're in lazy mode, we call async_hcall() to store the call for   * future processing:   */ -static void lazy_hcall1(unsigned long call, -		       unsigned long arg1) +static void lazy_hcall1(unsigned long call, unsigned long arg1)  {  	if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) -		kvm_hypercall1(call, arg1); +		hcall(call, arg1, 0, 0, 0);  	else  		async_hcall(call, arg1, 0, 0, 0);  }  /* You can imagine what lazy_hcall2, 3 and 4 look like. :*/  static void lazy_hcall2(unsigned long call, -		       unsigned long arg1, -		       unsigned long arg2) +			unsigned long arg1, +			unsigned long arg2)  {  	if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) -		kvm_hypercall2(call, arg1, arg2); +		hcall(call, arg1, arg2, 0, 0);  	else  		async_hcall(call, arg1, arg2, 0, 0);  }  static void lazy_hcall3(unsigned long call, -		       unsigned long arg1, -		       unsigned long arg2, -		       unsigned long arg3) +			unsigned long arg1, +			unsigned long arg2, +			unsigned long arg3)  {  	if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) -		kvm_hypercall3(call, arg1, arg2, arg3); +		hcall(call, arg1, arg2, arg3, 0);  	else  		async_hcall(call, arg1, arg2, arg3, 0);  }  #ifdef CONFIG_X86_PAE  static void lazy_hcall4(unsigned long call, -		       unsigned long arg1, -		       unsigned long arg2, -		       unsigned long arg3, -		       unsigned long arg4) +			unsigned long arg1, +			unsigned long arg2, +			unsigned long arg3, +			unsigned long arg4)  {  	if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE) -		kvm_hypercall4(call, arg1, arg2, arg3, arg4); +		hcall(call, arg1, arg2, arg3, arg4);  	else  		async_hcall(call, arg1, arg2, arg3, arg4);  } @@ -196,13 +195,13 @@ static void lazy_hcall4(unsigned long call,  :*/  static void lguest_leave_lazy_mmu_mode(void)  { -	kvm_hypercall0(LHCALL_FLUSH_ASYNC); +	hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0, 0);  	paravirt_leave_lazy_mmu();  }  static void lguest_end_context_switch(struct task_struct *next)  { -	kvm_hypercall0(LHCALL_FLUSH_ASYNC); +	hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0, 0);  	paravirt_end_context_switch(next);  } @@ -286,7 +285,7 @@ static void lguest_write_idt_entry(gate_desc *dt,  	/* Keep the local copy up to date. */  	native_write_idt_entry(dt, entrynum, g);  	/* Tell Host about this new entry. */ -	kvm_hypercall3(LHCALL_LOAD_IDT_ENTRY, entrynum, desc[0], desc[1]); +	hcall(LHCALL_LOAD_IDT_ENTRY, entrynum, desc[0], desc[1], 0);  }  /* @@ -300,7 +299,7 @@ static void lguest_load_idt(const struct desc_ptr *desc)  	struct desc_struct *idt = (void *)desc->address;  	for (i = 0; i < (desc->size+1)/8; i++) -		kvm_hypercall3(LHCALL_LOAD_IDT_ENTRY, i, idt[i].a, idt[i].b); +		hcall(LHCALL_LOAD_IDT_ENTRY, i, idt[i].a, idt[i].b, 0);  }  /* @@ -321,7 +320,7 @@ static void lguest_load_gdt(const struct desc_ptr *desc)  	struct desc_struct *gdt = (void *)desc->address;  	for (i = 0; i < (desc->size+1)/8; i++) -		kvm_hypercall3(LHCALL_LOAD_GDT_ENTRY, i, gdt[i].a, gdt[i].b); +		hcall(LHCALL_LOAD_GDT_ENTRY, i, gdt[i].a, gdt[i].b, 0);  }  /* @@ -334,8 +333,8 @@ static void lguest_write_gdt_entry(struct desc_struct *dt, int entrynum,  {  	native_write_gdt_entry(dt, entrynum, desc, type);  	/* Tell Host about this new entry. */ -	kvm_hypercall3(LHCALL_LOAD_GDT_ENTRY, entrynum, -		       dt[entrynum].a, dt[entrynum].b); +	hcall(LHCALL_LOAD_GDT_ENTRY, entrynum, +	      dt[entrynum].a, dt[entrynum].b, 0);  }  /* @@ -931,7 +930,7 @@ static int lguest_clockevent_set_next_event(unsigned long delta,  	}  	/* Please wake us this far in the future. */ -	kvm_hypercall1(LHCALL_SET_CLOCKEVENT, delta); +	hcall(LHCALL_SET_CLOCKEVENT, delta, 0, 0, 0);  	return 0;  } @@ -942,7 +941,7 @@ static void lguest_clockevent_set_mode(enum clock_event_mode mode,  	case CLOCK_EVT_MODE_UNUSED:  	case CLOCK_EVT_MODE_SHUTDOWN:  		/* A 0 argument shuts the clock down. */ -		kvm_hypercall0(LHCALL_SET_CLOCKEVENT); +		hcall(LHCALL_SET_CLOCKEVENT, 0, 0, 0, 0);  		break;  	case CLOCK_EVT_MODE_ONESHOT:  		/* This is what we expect. */ @@ -1100,7 +1099,7 @@ static void set_lguest_basic_apic_ops(void)  /* STOP!  Until an interrupt comes in. */  static void lguest_safe_halt(void)  { -	kvm_hypercall0(LHCALL_HALT); +	hcall(LHCALL_HALT, 0, 0, 0, 0);  }  /* @@ -1112,8 +1111,8 @@ static void lguest_safe_halt(void)   */  static void lguest_power_off(void)  { -	kvm_hypercall2(LHCALL_SHUTDOWN, __pa("Power down"), -					LGUEST_SHUTDOWN_POWEROFF); +	hcall(LHCALL_SHUTDOWN, __pa("Power down"), +	      LGUEST_SHUTDOWN_POWEROFF, 0, 0);  }  /* @@ -1123,7 +1122,7 @@ static void lguest_power_off(void)   */  static int lguest_panic(struct notifier_block *nb, unsigned long l, void *p)  { -	kvm_hypercall2(LHCALL_SHUTDOWN, __pa(p), LGUEST_SHUTDOWN_POWEROFF); +	hcall(LHCALL_SHUTDOWN, __pa(p), LGUEST_SHUTDOWN_POWEROFF, 0, 0);  	/* The hcall won't return, but to keep gcc happy, we're "done". */  	return NOTIFY_DONE;  } @@ -1162,7 +1161,7 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)  		len = sizeof(scratch) - 1;  	scratch[len] = '\0';  	memcpy(scratch, buf, len); -	kvm_hypercall1(LHCALL_NOTIFY, __pa(scratch)); +	hcall(LHCALL_NOTIFY, __pa(scratch), 0, 0, 0);  	/* This routine returns the number of bytes actually written. */  	return len; @@ -1174,7 +1173,7 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count)   */  static void lguest_restart(char *reason)  { -	kvm_hypercall2(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART); +	hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0, 0);  }  /*G:050 |