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

Re: [Xen-devel] [PATCH] x86_64 trap table fixup



One remark since this code is getting touched now anyway: You appear to
have taken the same (somewhat broken) approach of handling #BR as Linux
does. Architecturally, IDT entry 5 should be a DPL=0 one (permitting
BOUND, but disallowing INT 05); is there any particular reason you want
to allow INT 05 here (which could get you in conflict with hosting
Windows, which appears to deal with this the architecture intended way)?
Jan

>>> Chris Wright <chrisw@xxxxxxxx> 04.07.05 06:27:27 >>>
Recent header file cleanup (cset
2b6c1a8098078f7e53de7cf72227fddf01f0b2b6)
broke x86_64.  The cleanup removed a padding field in trap_info_t, so
the 
trap table set the address for each trap handler to zero.

Signed-off-by: Chris Wright <chrisw@xxxxxxxx>
---

diff -r f8acd354e129
linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/traps.c
--- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/traps.c    Sat Jul 
2 08:41:48 2005
+++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/traps.c    Sun Jul 
3 23:18:10 2005
@@ -910,31 +910,31 @@
 
 
 static trap_info_t trap_table[] = {
-        {  0, 0, (__KERNEL_CS|0x3), 0, (unsigned long)divide_error    
          },
-        {  1, 0, (__KERNEL_CS|0x3), 0, (unsigned long)debug           
          },
-        {  3, 3, (__KERNEL_CS|0x3), 0, (unsigned long)int3            
          },
-        {  4, 3, (__KERNEL_CS|0x3), 0, (unsigned long)overflow        
          },
-        {  5, 3, (__KERNEL_CS|0x3), 0, (unsigned long)bounds          
          },
-        {  6, 0, (__KERNEL_CS|0x3), 0, (unsigned long)invalid_op      
          },
-        {  7, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)device_not_available       },
-        {  9, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)coprocessor_segment_overrun},
-        { 10, 0, (__KERNEL_CS|0x3), 0, (unsigned long)invalid_TSS     
          },
-        { 11, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)segment_not_present        },
-        { 12, 0, (__KERNEL_CS|0x3), 0, (unsigned long)stack_segment   
          },
-        { 13, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)general_protection         },
-        { 14, 0, (__KERNEL_CS|0x3), 0, (unsigned long)page_fault      
          },
-        { 15, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)spurious_interrupt_bug     },
-        { 16, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)coprocessor_error          },
-        { 17, 0, (__KERNEL_CS|0x3), 0, (unsigned long)alignment_check 
          },
+        {  0, 0, (__KERNEL_CS|0x3), (unsigned long)divide_error       
       },
+        {  1, 0, (__KERNEL_CS|0x3), (unsigned long)debug              
       },
+        {  3, 3, (__KERNEL_CS|0x3), (unsigned long)int3               
       },
+        {  4, 3, (__KERNEL_CS|0x3), (unsigned long)overflow           
       },
+        {  5, 3, (__KERNEL_CS|0x3), (unsigned long)bounds             
       },
+        {  6, 0, (__KERNEL_CS|0x3), (unsigned long)invalid_op         
       },
+        {  7, 0, (__KERNEL_CS|0x3), (unsigned
long)device_not_available       },
+        {  9, 0, (__KERNEL_CS|0x3), (unsigned
long)coprocessor_segment_overrun},
+        { 10, 0, (__KERNEL_CS|0x3), (unsigned long)invalid_TSS        
       },
+        { 11, 0, (__KERNEL_CS|0x3), (unsigned long)segment_not_present
       },
+        { 12, 0, (__KERNEL_CS|0x3), (unsigned long)stack_segment      
       },
+        { 13, 0, (__KERNEL_CS|0x3), (unsigned long)general_protection 
       },
+        { 14, 0, (__KERNEL_CS|0x3), (unsigned long)page_fault         
       },
+        { 15, 0, (__KERNEL_CS|0x3), (unsigned
long)spurious_interrupt_bug     },
+        { 16, 0, (__KERNEL_CS|0x3), (unsigned long)coprocessor_error  
       },
+        { 17, 0, (__KERNEL_CS|0x3), (unsigned long)alignment_check    
       },
 #ifdef CONFIG_X86_MCE
-        { 18, 0, (__KERNEL_CS|0x3), 0, (unsigned long)machine_check   
          },
-#endif
-        { 19, 0, (__KERNEL_CS|0x3), 0, (unsigned
long)simd_coprocessor_error     },
-        { SYSCALL_VECTOR,  3, (__KERNEL_CS|0x3), 0, (unsigned
long)system_call   },
+        { 18, 0, (__KERNEL_CS|0x3), (unsigned long)machine_check      
       },
+#endif
+        { 19, 0, (__KERNEL_CS|0x3), (unsigned
long)simd_coprocessor_error     },
+        { SYSCALL_VECTOR, 3, (__KERNEL_CS|0x3), (unsigned
long)system_call   },
 #ifdef CONFIG_IA32_EMULATION
-       { IA32_SYSCALL_VECTOR, 3, (__KERNEL_CS|0x3), 0, (unsigned
long)ia32_syscall},
-#endif
-        {  0, 0,           0, 0,  0                                   
          }
+       { IA32_SYSCALL_VECTOR, 3, (__KERNEL_CS|0x3), (unsigned
long)ia32_syscall},
+#endif
+        {  0, 0,           0, 0                                       
      }
 };
 
 void __init trap_init(void)

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

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


 


Rackspace

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