# HG changeset patch
# User smh22@xxxxxxxxxxxxxxxxxxxx
# Node ID c5e80cb40c466e0758b76579ae535c597b08862e
# Parent 71f938468929edcad67797b6ba7ad13c9b031f94
# Parent 8c27368b12ad74529ee06d96b8eb6fcc52bc02ff
Merge.
diff -r 71f938468929 -r c5e80cb40c46
linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h
--- a/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h Thu Apr
6 16:34:54 2006
+++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/hypercall.h Thu Apr
6 16:47:37 2006
@@ -331,8 +331,7 @@
static inline int
HYPERVISOR_callback_op(
- int cmd,
- void *arg)
+ int cmd, void *arg)
{
return _hypercall2(int, callback_op, cmd, arg);
}
diff -r 71f938468929 -r c5e80cb40c46
linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h
--- a/linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h Thu Apr
6 16:34:54 2006
+++ b/linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_post.h Thu Apr
6 16:47:37 2006
@@ -25,11 +25,11 @@
static void __init machine_specific_arch_setup(void)
{
struct xen_platform_parameters pp;
- callback_register_t event = {
+ struct callback_register event = {
.type = CALLBACKTYPE_event,
.address = { __KERNEL_CS, (unsigned long)hypervisor_callback },
};
- callback_register_t failsafe = {
+ struct callback_register failsafe = {
.type = CALLBACKTYPE_failsafe,
.address = { __KERNEL_CS, (unsigned long)failsafe_callback },
};
diff -r 71f938468929 -r c5e80cb40c46
linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h
--- a/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h
Thu Apr 6 16:34:54 2006
+++ b/linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/setup_arch_post.h
Thu Apr 6 16:47:37 2006
@@ -14,15 +14,15 @@
static void __init machine_specific_arch_setup(void)
{
- callback_register_t event = {
+ struct callback_register event = {
.type = CALLBACKTYPE_event,
.address = (unsigned long) hypervisor_callback,
};
- callback_register_t failsafe = {
+ struct callback_register failsafe = {
.type = CALLBACKTYPE_failsafe,
.address = (unsigned long)failsafe_callback,
};
- callback_register_t syscall = {
+ struct callback_register syscall = {
.type = CALLBACKTYPE_syscall,
.address = (unsigned long)system_call,
};
diff -r 71f938468929 -r c5e80cb40c46 xen/arch/x86/shutdown.c
--- a/xen/arch/x86/shutdown.c Thu Apr 6 16:34:54 2006
+++ b/xen/arch/x86/shutdown.c Thu Apr 6 16:47:37 2006
@@ -44,7 +44,7 @@
void __attribute__((noreturn)) __machine_halt(void *unused)
{
for ( ; ; )
- safe_halt();
+ __asm__ __volatile__ ( "hlt" );
}
void machine_halt(void)
diff -r 71f938468929 -r c5e80cb40c46 xen/arch/x86/traps.c
--- a/xen/arch/x86/traps.c Thu Apr 6 16:34:54 2006
+++ b/xen/arch/x86/traps.c Thu Apr 6 16:47:37 2006
@@ -32,6 +32,7 @@
#include <xen/errno.h>
#include <xen/mm.h>
#include <xen/console.h>
+#include <xen/reboot.h>
#include <asm/regs.h>
#include <xen/delay.h>
#include <xen/event.h>
@@ -318,8 +319,7 @@
console_force_lock();
/* Wait for manual reset. */
- for ( ; ; )
- __asm__ __volatile__ ( "hlt" );
+ machine_halt();
}
static inline int do_trap(int trapnr, char *str,
diff -r 71f938468929 -r c5e80cb40c46 xen/arch/x86/x86_32/entry.S
--- a/xen/arch/x86/x86_32/entry.S Thu Apr 6 16:34:54 2006
+++ b/xen/arch/x86/x86_32/entry.S Thu Apr 6 16:47:37 2006
@@ -119,7 +119,7 @@
movl $DBLFLT1,%eax
pushl %eax # EIP
pushl %esi # error_code/entry_vector
- jmp error_code
+ jmp handle_exception
DBLFLT1:GET_CURRENT(%ebx)
jmp test_all_events
failsafe_callback:
@@ -381,14 +381,6 @@
jmp __domain_crash_synchronous
ALIGN
-process_guest_exception_and_events:
- leal VCPU_trap_bounce(%ebx),%edx
- testb $TBF_EXCEPTION,TRAPBOUNCE_flags(%edx)
- jz test_all_events
- call create_bounce_frame
- jmp test_all_events
-
- ALIGN
ENTRY(ret_from_intr)
GET_CURRENT(%ebx)
movl UREGS_eflags(%esp),%eax
@@ -400,7 +392,7 @@
ENTRY(divide_error)
pushl $TRAP_divide_error<<16
ALIGN
-error_code:
+handle_exception:
FIXUP_RING0_GUEST_STACK
SAVE_ALL_NOSEGREGS(a)
SET_XEN_SEGMENTS(a)
@@ -419,7 +411,11 @@
movb UREGS_cs(%esp),%al
testl $(3|X86_EFLAGS_VM),%eax
jz restore_all_xen
- jmp process_guest_exception_and_events
+ leal VCPU_trap_bounce(%ebx),%edx
+ testb $TBF_EXCEPTION,TRAPBOUNCE_flags(%edx)
+ jz test_all_events
+ call create_bounce_frame
+ jmp test_all_events
exception_with_ints_disabled:
movl UREGS_eflags(%esp),%eax
@@ -452,71 +448,71 @@
ENTRY(coprocessor_error)
pushl $TRAP_copro_error<<16
- jmp error_code
+ jmp handle_exception
ENTRY(simd_coprocessor_error)
pushl $TRAP_simd_error<<16
- jmp error_code
+ jmp handle_exception
ENTRY(device_not_available)
pushl $TRAP_no_device<<16
- jmp error_code
+ jmp handle_exception
ENTRY(debug)
pushl $TRAP_debug<<16
- jmp error_code
+ jmp handle_exception
ENTRY(int3)
pushl $TRAP_int3<<16
- jmp error_code
+ jmp handle_exception
ENTRY(overflow)
pushl $TRAP_overflow<<16
- jmp error_code
+ jmp handle_exception
ENTRY(bounds)
pushl $TRAP_bounds<<16
- jmp error_code
+ jmp handle_exception
ENTRY(invalid_op)
pushl $TRAP_invalid_op<<16
- jmp error_code
+ jmp handle_exception
ENTRY(coprocessor_segment_overrun)
pushl $TRAP_copro_seg<<16
- jmp error_code
+ jmp handle_exception
ENTRY(invalid_TSS)
- movw $TRAP_invalid_tss,2(%esp)
- jmp error_code
+ movw $TRAP_invalid_tss,2(%esp)
+ jmp handle_exception
ENTRY(segment_not_present)
- movw $TRAP_no_segment,2(%esp)
- jmp error_code
+ movw $TRAP_no_segment,2(%esp)
+ jmp handle_exception
ENTRY(stack_segment)
- movw $TRAP_stack_error,2(%esp)
- jmp error_code
+ movw $TRAP_stack_error,2(%esp)
+ jmp handle_exception
ENTRY(general_protection)
- movw $TRAP_gp_fault,2(%esp)
- jmp error_code
+ movw $TRAP_gp_fault,2(%esp)
+ jmp handle_exception
ENTRY(alignment_check)
- movw $TRAP_alignment_check,2(%esp)
- jmp error_code
+ movw $TRAP_alignment_check,2(%esp)
+ jmp handle_exception
ENTRY(page_fault)
- movw $TRAP_page_fault,2(%esp)
- jmp error_code
+ movw $TRAP_page_fault,2(%esp)
+ jmp handle_exception
ENTRY(machine_check)
pushl $TRAP_machine_check<<16
- jmp error_code
+ jmp handle_exception
ENTRY(spurious_interrupt_bug)
pushl $TRAP_spurious_int<<16
- jmp error_code
+ jmp handle_exception
ENTRY(nmi)
#ifdef CONFIG_X86_SUPERVISOR_MODE_KERNEL
diff -r 71f938468929 -r c5e80cb40c46 xen/arch/x86/x86_32/traps.c
--- a/xen/arch/x86/x86_32/traps.c Thu Apr 6 16:34:54 2006
+++ b/xen/arch/x86/x86_32/traps.c Thu Apr 6 16:47:37 2006
@@ -9,6 +9,7 @@
#include <xen/mm.h>
#include <xen/irq.h>
#include <xen/symbols.h>
+#include <xen/reboot.h>
#include <asm/current.h>
#include <asm/flushtlb.h>
#include <asm/hvm/hvm.h>
@@ -180,8 +181,7 @@
console_force_lock();
/* Wait for manual reset. */
- for ( ; ; )
- __asm__ __volatile__ ( "hlt" );
+ machine_halt();
}
unsigned long do_iret(void)
@@ -322,8 +322,7 @@
long ret = 0;
struct vcpu *v = current;
- if ( reg->address.cs )
- fixup_guest_code_selector(reg->address.cs);
+ fixup_guest_code_selector(reg->address.cs);
switch ( reg->type )
{
@@ -355,6 +354,7 @@
ret = -EINVAL;
break;
}
+
return ret;
}
@@ -370,7 +370,7 @@
struct callback_register reg;
ret = -EFAULT;
- if ( copy_from_guest( ®, arg, 1 ) )
+ if ( copy_from_guest(®, arg, 1) )
break;
ret = register_guest_callback(®);
@@ -382,7 +382,7 @@
struct callback_unregister unreg;
ret = -EFAULT;
- if ( copy_from_guest( &unreg, arg, 1 ) )
+ if ( copy_from_guest(&unreg, arg, 1) )
break;
ret = unregister_guest_callback(&unreg);
diff -r 71f938468929 -r c5e80cb40c46 xen/arch/x86/x86_64/entry.S
--- a/xen/arch/x86/x86_64/entry.S Thu Apr 6 16:34:54 2006
+++ b/xen/arch/x86/x86_64/entry.S Thu Apr 6 16:47:37 2006
@@ -68,7 +68,7 @@
leaq DBLFLT1(%rip),%rax
pushq %rax # RIP
pushq %rsi # error_code/entry_vector
- jmp error_code
+ jmp handle_exception
DBLFLT1:GET_CURRENT(%rbx)
jmp test_all_events
failsafe_callback:
@@ -320,15 +320,6 @@
jmp __domain_crash_synchronous
ALIGN
-/* %rbx: struct vcpu */
-process_guest_exception_and_events:
- leaq VCPU_trap_bounce(%rbx),%rdx
- testb $TBF_EXCEPTION,TRAPBOUNCE_flags(%rdx)
- jz test_all_events
- call create_bounce_frame
- jmp test_all_events
-
- ALIGN
/* No special register assumptions. */
ENTRY(ret_from_intr)
GET_CURRENT(%rbx)
@@ -338,7 +329,7 @@
ALIGN
/* No special register assumptions. */
-error_code:
+handle_exception:
SAVE_ALL
testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp)
jz exception_with_ints_disabled
@@ -351,7 +342,11 @@
callq *(%rdx,%rax,8)
testb $3,UREGS_cs(%rsp)
jz restore_all_xen
- jmp process_guest_exception_and_events
+ leaq VCPU_trap_bounce(%rbx),%rdx
+ testb $TBF_EXCEPTION,TRAPBOUNCE_flags(%rdx)
+ jz test_all_events
+ call create_bounce_frame
+ jmp test_all_events
/* No special register assumptions. */
exception_with_ints_disabled:
@@ -384,90 +379,90 @@
ENTRY(divide_error)
pushq $0
movl $TRAP_divide_error,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(coprocessor_error)
pushq $0
movl $TRAP_copro_error,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(simd_coprocessor_error)
pushq $0
movl $TRAP_simd_error,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(device_not_available)
pushq $0
movl $TRAP_no_device,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(debug)
pushq $0
movl $TRAP_debug,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(int3)
pushq $0
movl $TRAP_int3,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(overflow)
pushq $0
movl $TRAP_overflow,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(bounds)
pushq $0
movl $TRAP_bounds,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(invalid_op)
pushq $0
movl $TRAP_invalid_op,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(coprocessor_segment_overrun)
pushq $0
movl $TRAP_copro_seg,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(invalid_TSS)
movl $TRAP_invalid_tss,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(segment_not_present)
movl $TRAP_no_segment,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(stack_segment)
movl $TRAP_stack_error,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(general_protection)
movl $TRAP_gp_fault,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(alignment_check)
movl $TRAP_alignment_check,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(page_fault)
movl $TRAP_page_fault,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(machine_check)
pushq $0
movl $TRAP_machine_check,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(spurious_interrupt_bug)
pushq $0
movl $TRAP_spurious_int,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(double_fault)
movl $TRAP_double_fault,4(%rsp)
- jmp error_code
+ jmp handle_exception
ENTRY(nmi)
pushq $0
diff -r 71f938468929 -r c5e80cb40c46 xen/arch/x86/x86_64/traps.c
--- a/xen/arch/x86/x86_64/traps.c Thu Apr 6 16:34:54 2006
+++ b/xen/arch/x86/x86_64/traps.c Thu Apr 6 16:47:37 2006
@@ -10,6 +10,7 @@
#include <xen/symbols.h>
#include <xen/console.h>
#include <xen/sched.h>
+#include <xen/reboot.h>
#include <asm/current.h>
#include <asm/flushtlb.h>
#include <asm/msr.h>
@@ -166,8 +167,7 @@
console_force_lock();
/* Wait for manual reset. */
- for ( ; ; )
- __asm__ __volatile__ ( "hlt" );
+ machine_halt();
}
void toggle_guest_mode(struct vcpu *v)
@@ -357,6 +357,7 @@
ret = -EINVAL;
break;
}
+
return ret;
}
@@ -372,7 +373,7 @@
struct callback_register reg;
ret = -EFAULT;
- if ( copy_from_guest( ®, arg, 1 ) )
+ if ( copy_from_guest(®, arg, 1) )
break;
ret = register_guest_callback(®);
@@ -384,7 +385,7 @@
struct callback_unregister unreg;
ret = -EFAULT;
- if ( copy_from_guest( &unreg, arg, 1 ) )
+ if ( copy_from_guest(&unreg, arg, 1) )
break;
ret = unregister_guest_callback(&unreg);
@@ -403,15 +404,15 @@
unsigned long failsafe_address,
unsigned long syscall_address)
{
- callback_register_t event = {
+ struct callback_register event = {
.type = CALLBACKTYPE_event,
.address = event_address,
};
- callback_register_t failsafe = {
+ struct callback_register failsafe = {
.type = CALLBACKTYPE_failsafe,
.address = failsafe_address,
};
- callback_register_t syscall = {
+ struct callback_register syscall = {
.type = CALLBACKTYPE_syscall,
.address = syscall_address,
};
diff -r 71f938468929 -r c5e80cb40c46 xen/drivers/char/console.c
--- a/xen/drivers/char/console.c Thu Apr 6 16:34:54 2006
+++ b/xen/drivers/char/console.c Thu Apr 6 16:47:37 2006
@@ -520,6 +520,7 @@
{
console_lock = SPIN_LOCK_UNLOCKED;
serial_force_unlock(sercon_handle);
+ console_start_sync();
}
void console_force_lock(void)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|