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

[Xen-changelog] Remove generic 'fast trap' from the Xen public interfaces. Internally



ChangeSet 1.1415, 2005/05/16 11:50:02+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Remove generic 'fast trap' from the Xen public interfaces. Internally
        within Xen, we automatically set up direct trap for int 0x80, which is
        the only 'fast trap' vector that we ever supported anyway.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 docs/src/interface.tex                                         |   18 ----
 extras/mini-os/h/hypervisor.h                                  |   11 --
 freebsd-5.3-xen-sparse/i386-xen/i386-xen/machdep.c             |    3 
 freebsd-5.3-xen-sparse/i386-xen/i386-xen/mp_machdep.c          |    6 -
 freebsd-5.3-xen-sparse/i386-xen/include/hypervisor.h           |   12 --
 linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c                |    1 
 linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c         |    4 
 linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c           |    4 
 linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h   |   16 ---
 linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h |   15 ---
 netbsd-2.0-xen-sparse/sys/arch/xen/include/hypervisor.h        |   15 ---
 tools/libxc/xc_linux_build.c                                   |    4 
 tools/libxc/xc_linux_restore.c                                 |   13 +-
 tools/libxc/xc_plan9_build.c                                   |    4 
 tools/libxc/xc_vmx_build.c                                     |    4 
 xen/arch/x86/dom0_ops.c                                        |    6 -
 xen/arch/x86/domain.c                                          |    8 -
 xen/arch/x86/traps.c                                           |    6 +
 xen/arch/x86/x86_32/entry.S                                    |    2 
 xen/arch/x86/x86_32/traps.c                                    |   45 
++--------
 xen/include/asm-x86/domain.h                                   |    9 --
 xen/include/asm-x86/processor.h                                |   28 +-----
 xen/include/public/arch-x86_32.h                               |    3 
 xen/include/public/dom0_ops.h                                  |    2 
 xen/include/public/xen.h                                       |    1 
 25 files changed, 39 insertions(+), 201 deletions(-)


diff -Nru a/docs/src/interface.tex b/docs/src/interface.tex
--- a/docs/src/interface.tex    2005-05-16 07:06:07 -04:00
+++ b/docs/src/interface.tex    2005-05-16 07:06:07 -04:00
@@ -721,24 +721,6 @@
 
 \end{quote} 
 
-Finally, as an optimization it is possible for each guest OS 
-to install one ``fast trap'': this is a trap gate which will 
-allow direct transfer of control from ring 3 into ring 1 without
-indirecting via Xen. In most cases this is suitable for use by 
-the guest OS system call mechanism, although it may be used for
-any purpose. 
-
-
-\begin{quote}
-\hypercall{set\_fast\_trap(int idx)}
-
-Install the handler for exception vector {\tt idx} as the ``fast
-trap'' for this domain. Note that this installs the current handler 
-(i.e. that which has been installed more recently via a call 
-to {\tt set\_trap\_table()}). 
-
-\end{quote}
-
 
 
 \section{Scheduling and Timer}
diff -Nru a/extras/mini-os/h/hypervisor.h b/extras/mini-os/h/hypervisor.h
--- a/extras/mini-os/h/hypervisor.h     2005-05-16 07:06:07 -04:00
+++ b/extras/mini-os/h/hypervisor.h     2005-05-16 07:06:07 -04:00
@@ -257,17 +257,6 @@
     return ret;
 }
 
-static __inline__ int HYPERVISOR_set_fast_trap(int idx)
-{
-    int ret;
-    __asm__ __volatile__ (
-        TRAP_INSTR
-        : "=a" (ret) : "0" (__HYPERVISOR_set_fast_trap), 
-        _a1 (idx) : "memory" );
-
-    return ret;
-}
-
 static __inline__ int HYPERVISOR_dom_mem_op(void *dom_mem_op)
 {
     int ret;
diff -Nru a/freebsd-5.3-xen-sparse/i386-xen/i386-xen/machdep.c 
b/freebsd-5.3-xen-sparse/i386-xen/i386-xen/machdep.c
--- a/freebsd-5.3-xen-sparse/i386-xen/i386-xen/machdep.c        2005-05-16 
07:06:06 -04:00
+++ b/freebsd-5.3-xen-sparse/i386-xen/i386-xen/machdep.c        2005-05-16 
07:06:06 -04:00
@@ -1642,9 +1642,6 @@
        if ((error = HYPERVISOR_set_trap_table(trap_table)) != 0) {
                panic("set_trap_table failed - error %d\n", error);
        }
-       if ((error = HYPERVISOR_set_fast_trap(0x80)) != 0) {
-               panic("set_fast_trap failed - error %d\n", error);
-       }
         HYPERVISOR_set_callbacks(GSEL(GCODE_SEL, SEL_KPL), (unsigned 
long)Xhypervisor_callback,
                                 GSEL(GCODE_SEL, SEL_KPL), (unsigned 
long)failsafe_callback);
 
diff -Nru a/freebsd-5.3-xen-sparse/i386-xen/i386-xen/mp_machdep.c 
b/freebsd-5.3-xen-sparse/i386-xen/i386-xen/mp_machdep.c
--- a/freebsd-5.3-xen-sparse/i386-xen/i386-xen/mp_machdep.c     2005-05-16 
07:06:07 -04:00
+++ b/freebsd-5.3-xen-sparse/i386-xen/i386-xen/mp_machdep.c     2005-05-16 
07:06:07 -04:00
@@ -885,10 +885,9 @@
 }
 #endif
 
-static int 
+static void
 cpu_mp_trap_init(trap_info_t *trap_ctxt)
 {
-
         trap_info_t *t = trap_table;
 
         for (t = trap_table; t->address; t++) {
@@ -896,7 +895,6 @@
                 trap_ctxt[t->vector].cs = t->cs;
                 trap_ctxt[t->vector].address = t->address;
         }
-        return 0x80 /*SYSCALL_VECTOR*/;
 }
 
 /*
@@ -961,7 +959,7 @@
                ctxt.trap_ctxt[i].vector = i;
                ctxt.trap_ctxt[i].cs     = FLAT_KERNEL_CS;
        }
-       ctxt.fast_trap_idx = cpu_mp_trap_init(ctxt.trap_ctxt);
+       cpu_mp_trap_init(ctxt.trap_ctxt);
 
        /* No LDT. */
        ctxt.ldt_ents = 0;
diff -Nru a/freebsd-5.3-xen-sparse/i386-xen/include/hypervisor.h 
b/freebsd-5.3-xen-sparse/i386-xen/include/hypervisor.h
--- a/freebsd-5.3-xen-sparse/i386-xen/include/hypervisor.h      2005-05-16 
07:06:06 -04:00
+++ b/freebsd-5.3-xen-sparse/i386-xen/include/hypervisor.h      2005-05-16 
07:06:06 -04:00
@@ -284,18 +284,6 @@
 }
 
 static inline int 
-HYPERVISOR_set_fast_trap(int idx)
-{
-    int ret;
-    __asm__ __volatile__ (
-        TRAP_INSTR
-        : "=a" (ret) : "0" (__HYPERVISOR_set_fast_trap), 
-        "b" (idx) : "memory" );
-
-    return ret;
-}
-
-static inline int 
 HYPERVISOR_dom_mem_op(unsigned int   op,
                      unsigned long *pages,
                      unsigned long  nr_pages)
diff -Nru a/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c 
b/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c
--- a/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c   2005-05-16 07:06:06 
-04:00
+++ b/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c   2005-05-16 07:06:06 
-04:00
@@ -605,7 +605,6 @@
 void __init trap_init(void)
 {
     HYPERVISOR_set_trap_table(trap_table);    
-    HYPERVISOR_set_fast_trap(SYSCALL_VECTOR);
 
     /*
      * The default LDT is a single-entry callgate to lcall7 for iBCS and a
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c 
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c    2005-05-16 
07:06:06 -04:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/smpboot.c    2005-05-16 
07:06:06 -04:00
@@ -821,7 +821,7 @@
        extern void startup_32_smp(void);
        extern void hypervisor_callback(void);
        extern void failsafe_callback(void);
-       extern int smp_trap_init(trap_info_t *);
+       extern void smp_trap_init(trap_info_t *);
        int i;
 
        cpu = ++cpucount;
@@ -881,7 +881,7 @@
                ctxt.trap_ctxt[i].vector = i;
                ctxt.trap_ctxt[i].cs     = FLAT_KERNEL_CS;
        }
-       ctxt.fast_trap_idx = smp_trap_init(ctxt.trap_ctxt);
+       smp_trap_init(ctxt.trap_ctxt);
 
        /* No LDT. */
        ctxt.ldt_ents = 0;
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c 
b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c      2005-05-16 
07:06:06 -04:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/kernel/traps.c      2005-05-16 
07:06:06 -04:00
@@ -957,7 +957,6 @@
 void __init trap_init(void)
 {
        HYPERVISOR_set_trap_table(trap_table);
-       HYPERVISOR_set_fast_trap(SYSCALL_VECTOR);
 
        /*
         * default LDT is a single-entry callgate to lcall7 for iBCS
@@ -971,7 +970,7 @@
        cpu_init();
 }
 
-int smp_trap_init(trap_info_t *trap_ctxt)
+void smp_trap_init(trap_info_t *trap_ctxt)
 {
        trap_info_t *t = trap_table;
 
@@ -980,5 +979,4 @@
                trap_ctxt[t->vector].cs = t->cs;
                trap_ctxt[t->vector].address = t->address;
        }
-       return SYSCALL_VECTOR;
 }
diff -Nru a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h 
b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h
--- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h      
2005-05-16 07:06:06 -04:00
+++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/hypercall.h      
2005-05-16 07:06:06 -04:00
@@ -332,22 +332,6 @@
 }
 
 static inline int
-HYPERVISOR_set_fast_trap(
-    int idx)
-{
-    int ret;
-    unsigned long ign;
-
-    __asm__ __volatile__ (
-        TRAP_INSTR
-        : "=a" (ret), "=b" (ign)
-       : "0" (__HYPERVISOR_set_fast_trap), "1" (idx)
-       : "memory" );
-
-    return ret;
-}
-
-static inline int
 HYPERVISOR_dom_mem_op(
     unsigned int op, unsigned long *extent_list,
     unsigned long nr_extents, unsigned int extent_order)
diff -Nru a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h 
b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h
--- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h    
2005-05-16 07:06:06 -04:00
+++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-x86_64/hypercall.h    
2005-05-16 07:06:06 -04:00
@@ -310,21 +310,6 @@
 }
 
 static inline int
-HYPERVISOR_set_fast_trap(
-    int idx)
-{
-    int ret;
-
-    __asm__ __volatile__ (
-        TRAP_INSTR
-        : "=a" (ret)
-       : "0" ((unsigned long)__HYPERVISOR_set_fast_trap), "D" ((unsigned 
long)idx)
-       : __syscall_clobber );
-
-    return ret;
-}
-
-static inline int
 HYPERVISOR_dom_mem_op(
     unsigned int op, unsigned long *extent_list,
     unsigned long nr_extents, unsigned int extent_order)
diff -Nru a/netbsd-2.0-xen-sparse/sys/arch/xen/include/hypervisor.h 
b/netbsd-2.0-xen-sparse/sys/arch/xen/include/hypervisor.h
--- a/netbsd-2.0-xen-sparse/sys/arch/xen/include/hypervisor.h   2005-05-16 
07:06:07 -04:00
+++ b/netbsd-2.0-xen-sparse/sys/arch/xen/include/hypervisor.h   2005-05-16 
07:06:07 -04:00
@@ -354,21 +354,6 @@
 }
 
 static inline int
-HYPERVISOR_set_fast_trap(int idx)
-{
-    int ret;
-    unsigned long ign1;
-
-    __asm__ __volatile__ (
-        TRAP_INSTR
-        : "=a" (ret), "=b" (ign1)
-       : "0" (__HYPERVISOR_set_fast_trap), "1" (idx)
-       : "memory" );
-
-    return ret;
-}
-
-static inline int
 HYPERVISOR_dom_mem_op(unsigned int op, unsigned long *extent_list,
     unsigned long nr_extents, unsigned int extent_order)
 {

_______________________________________________
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®.