WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

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

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] I found some mistakes of argument by the do_* functions of hypercall.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 30 Jan 2006 15:00:26 +0000
Delivery-date: Mon, 30 Jan 2006 15:25:20 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] I found some mistakes of argument by the do_* functions of hypercall., Xen patchbot -unstable <=