[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] I found some mistakes of argument by the do_* functions of hypercall.



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 085fa65de8095b8a55e5c6ad0ff59237b85bddcd
# Parent  58d6a94cd163c583f2497dd4281303aaa3638341
I found some mistakes of argument by the do_* functions of hypercall.
This patch fixed those mistakes.

Signed-off-by: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>

diff -r 58d6a94cd163 -r 085fa65de809 xen/arch/ia64/vmx/vmx_hypercall.c
--- a/xen/arch/ia64/vmx/vmx_hypercall.c Mon Jan 30 11:56:14 2006
+++ b/xen/arch/ia64/vmx/vmx_hypercall.c Mon Jan 30 12:33:43 2006
@@ -30,6 +30,7 @@
 #include <asm/page.h>
 #include <xen/mm.h>
 #include <xen/multicall.h>
+#include <xen/hypercall.h>
 
 
 void hyper_not_support(void)
@@ -118,30 +119,31 @@
 void hyper_sched_op(void)
 {
     VCPU *vcpu=current;
+    u64 r32,r33,ret;
+    vcpu_get_gr_nat(vcpu,16,&r32);
+    vcpu_get_gr_nat(vcpu,17,&r33);
+    ret=do_sched_op(r32,r33);
+    vcpu_set_gr(vcpu, 8, ret, 0);
+
+    vmx_vcpu_increment_iip(vcpu);
+}
+
+void hyper_dom0_op(void)
+{
+    VCPU *vcpu=current;
     u64 r32,ret;
     vcpu_get_gr_nat(vcpu,16,&r32);
-    ret=do_sched_op(r32);
-    vcpu_set_gr(vcpu, 8, ret, 0);
-
-    vmx_vcpu_increment_iip(vcpu);
-}
-
-void hyper_dom0_op(void)
+    ret=do_dom0_op((dom0_op_t *)r32);
+    vcpu_set_gr(vcpu, 8, ret, 0);
+
+    vmx_vcpu_increment_iip(vcpu);
+}
+
+void hyper_event_channel_op(void)
 {
     VCPU *vcpu=current;
     u64 r32,ret;
     vcpu_get_gr_nat(vcpu,16,&r32);
-    ret=do_dom0_op((dom0_op_t *)r32);
-    vcpu_set_gr(vcpu, 8, ret, 0);
-
-    vmx_vcpu_increment_iip(vcpu);
-}
-
-void hyper_event_channel_op(void)
-{
-    VCPU *vcpu=current;
-    u64 r32,ret;
-    vcpu_get_gr_nat(vcpu,16,&r32);
     ret=do_event_channel_op((evtchn_op_t *)r32);
     vcpu_set_gr(vcpu, 8, ret, 0);
     vmx_vcpu_increment_iip(vcpu);
@@ -150,9 +152,10 @@
 void hyper_xen_version(void)
 {
     VCPU *vcpu=current;
-    u64 r32,ret;
-    vcpu_get_gr_nat(vcpu,16,&r32);
-    ret=do_xen_version((int )r32);
+    u64 r32,r33,ret;
+    vcpu_get_gr_nat(vcpu,16,&r32);
+    vcpu_get_gr_nat(vcpu,17,&r33);
+    ret=do_xen_version((int )r32,r33);
     vcpu_set_gr(vcpu, 8, ret, 0);
     vmx_vcpu_increment_iip(vcpu);
 }
diff -r 58d6a94cd163 -r 085fa65de809 xen/arch/ia64/vmx/vmx_support.c
--- a/xen/arch/ia64/vmx/vmx_support.c   Mon Jan 30 11:56:14 2006
+++ b/xen/arch/ia64/vmx/vmx_support.c   Mon Jan 30 12:33:43 2006
@@ -21,13 +21,15 @@
  */
 #include <xen/config.h>
 #include <xen/sched.h>
+#include <xen/hypercall.h>
+#include <public/sched.h>
 #include <public/hvm/ioreq.h>
 #include <asm/vmx.h>
 #include <asm/vmx_vcpu.h>
 
 /*
  * I/O emulation should be atomic from domain point of view. However,
- * when emulation code is waiting for I/O completion by do_block,
+ * when emulation code is waiting for I/O completion by blocking,
  * other events like DM interrupt, VBD, etc. may come and unblock
  * current exection flow. So we have to prepare for re-block if unblocked
  * by non I/O completion event.
@@ -36,13 +38,12 @@
 {
     struct vcpu *v = current;
     struct domain *d = v->domain;
-    extern void do_block();
     int port = iopacket_port(d);
 
     do {
        if (!test_bit(port,
                &d->shared_info->evtchn_pending[0]))
-           do_block();
+            do_sched_op(SCHEDOP_block, 0);
 
        /* Unblocked when some event is coming. Clear pending indication
         * immediately if deciding to go for io assist
@@ -100,7 +101,7 @@
 
     if (test_bit(ARCH_VMX_IO_WAIT, &v->arch.arch_vmx.flags)) {
        if (p->state != STATE_IORESP_READY) {
-           /* Can't do_block here, for the same reason as other places to
+           /* Can't block here, for the same reason as other places to
             * use vmx_wait_io. Simple return is safe since vmx_wait_io will
             * try to block again
             */
diff -r 58d6a94cd163 -r 085fa65de809 xen/arch/ia64/xen/hypercall.c
--- a/xen/arch/ia64/xen/hypercall.c     Mon Jan 30 11:56:14 2006
+++ b/xen/arch/ia64/xen/hypercall.c     Mon Jan 30 12:33:43 2006
@@ -8,6 +8,7 @@
 
 #include <xen/config.h>
 #include <xen/sched.h>
+#include <xen/hypercall.h>
 
 #include <linux/efi.h> /* FOR EFI_UNIMPLEMENTED */
 #include <asm/sal.h>   /* FOR struct ia64_sal_retval */
@@ -57,7 +58,7 @@
                        }
                        else {
                                pal_halt_light_count++;
-                               do_sched_op(SCHEDOP_yield);
+                               do_sched_op(SCHEDOP_yield, 0);
                        }
                        regs->r8 = 0;
                        regs->r9 = 0;
diff -r 58d6a94cd163 -r 085fa65de809 xen/arch/x86/vmx.c
--- a/xen/arch/x86/vmx.c        Mon Jan 30 11:56:14 2006
+++ b/xen/arch/x86/vmx.c        Mon Jan 30 12:33:43 2006
@@ -25,6 +25,7 @@
 #include <xen/irq.h>
 #include <xen/softirq.h>
 #include <xen/domain_page.h>
+#include <xen/hypercall.h>
 #include <asm/current.h>
 #include <asm/io.h>
 #include <asm/shadow.h>
@@ -328,7 +329,6 @@
 #endif
 
 extern long evtchn_send(int lport);
-extern long do_block(void);
 void do_nmi(struct cpu_user_regs *);
 
 static int check_vmx_controls(ctrls, msr)
@@ -1599,7 +1599,7 @@
     }
     if ( next_wakeup != - 1 ) 
         set_timer(&current->arch.arch_vmx.hlt_timer, next_wakeup);
-    do_block();
+    do_sched_op(SCHEDOP_block, 0);
 }
 
 static inline void vmx_vmexit_do_extint(struct cpu_user_regs *regs)
@@ -1801,14 +1801,12 @@
         case TRAP_debug:
         {
             void store_cpu_user_regs(struct cpu_user_regs *regs);
-            long do_sched_op(unsigned long op);
-
 
             store_cpu_user_regs(&regs);
             __vm_clear_bit(GUEST_PENDING_DBG_EXCEPTIONS, PENDING_DEBUG_EXC_BS);
 
             domain_pause_for_debugger();
-            do_sched_op(SCHEDOP_yield);
+            do_sched_op(SCHEDOP_yield, 0);
 
             break;
         }
diff -r 58d6a94cd163 -r 085fa65de809 xen/arch/x86/vmx_io.c
--- a/xen/arch/x86/vmx_io.c     Mon Jan 30 11:56:14 2006
+++ b/xen/arch/x86/vmx_io.c     Mon Jan 30 12:33:43 2006
@@ -24,7 +24,7 @@
 #include <xen/errno.h>
 #include <xen/trace.h>
 #include <xen/event.h>
-
+#include <xen/hypercall.h>
 #include <asm/current.h>
 #include <asm/cpufeature.h>
 #include <asm/processor.h>
@@ -37,6 +37,7 @@
 #include <asm/shadow.h>
 #include <asm/vmx_vpic.h>
 #include <asm/vmx_vlapic.h>
+#include <public/sched.h>
 #include <public/hvm/ioreq.h>
 
 #ifdef CONFIG_VMX
@@ -756,12 +757,11 @@
    the device model */
 void vmx_wait_io()
 {
-    extern void do_block();
     int port = iopacket_port(current->domain);
 
     do {
         if (!test_bit(port, &current->domain->shared_info->evtchn_pending[0]))
-            do_block();
+            do_sched_op(SCHEDOP_block, 0);
 
         vmx_check_events(current);
         if (!test_bit(ARCH_VMX_IO_WAIT, &current->arch.arch_vmx.flags))
diff -r 58d6a94cd163 -r 085fa65de809 xen/common/schedule.c
--- a/xen/common/schedule.c     Mon Jan 30 11:56:14 2006
+++ b/xen/common/schedule.c     Mon Jan 30 12:33:43 2006
@@ -209,7 +209,7 @@
 }
 
 /* Block the currently-executing domain until a pertinent event occurs. */
-long do_block(void)
+static long do_block(void)
 {
     struct vcpu *v = current;
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.