Commit 0a9e0703 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:
  x86-boot: don't request VBE2 information
  x86: re-add reboot fixups
  x86: fix typo in step.c
  x86: fix merge mistake in i387.c
  x86: clear DF before calling signal handler
parents 80d38f9a 1722770f
...@@ -26,17 +26,10 @@ struct vesa_general_info { ...@@ -26,17 +26,10 @@ struct vesa_general_info {
far_ptr video_mode_ptr; /* 14 */ far_ptr video_mode_ptr; /* 14 */
u16 total_memory; /* 18 */ u16 total_memory; /* 18 */
u16 oem_software_rev; /* 20 */ u8 reserved[236]; /* 20 */
far_ptr oem_vendor_name_ptr; /* 22 */
far_ptr oem_product_name_ptr; /* 26 */
far_ptr oem_product_rev_ptr; /* 30 */
u8 reserved[222]; /* 34 */
u8 oem_data[256]; /* 256 */
} __attribute__ ((packed)); } __attribute__ ((packed));
#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24)) #define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
#define VBE2_MAGIC ('V' + ('B' << 8) + ('E' << 16) + ('2' << 24))
struct vesa_mode_info { struct vesa_mode_info {
u16 mode_attr; /* 0 */ u16 mode_attr; /* 0 */
......
...@@ -37,8 +37,6 @@ static int vesa_probe(void) ...@@ -37,8 +37,6 @@ static int vesa_probe(void)
video_vesa.modes = GET_HEAP(struct mode_info, 0); video_vesa.modes = GET_HEAP(struct mode_info, 0);
vginfo.signature = VBE2_MAGIC;
ax = 0x4f00; ax = 0x4f00;
di = (size_t)&vginfo; di = (size_t)&vginfo;
asm(INT10 asm(INT10
......
...@@ -500,7 +500,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka, ...@@ -500,7 +500,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
regs->ss = __USER32_DS; regs->ss = __USER32_DS;
set_fs(USER_DS); set_fs(USER_DS);
regs->flags &= ~X86_EFLAGS_TF; regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
if (test_thread_flag(TIF_SINGLESTEP)) if (test_thread_flag(TIF_SINGLESTEP))
ptrace_notify(SIGTRAP); ptrace_notify(SIGTRAP);
...@@ -600,7 +600,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, ...@@ -600,7 +600,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
regs->ss = __USER32_DS; regs->ss = __USER32_DS;
set_fs(USER_DS); set_fs(USER_DS);
regs->flags &= ~X86_EFLAGS_TF; regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
if (test_thread_flag(TIF_SINGLESTEP)) if (test_thread_flag(TIF_SINGLESTEP))
ptrace_notify(SIGTRAP); ptrace_notify(SIGTRAP);
......
...@@ -261,7 +261,7 @@ static void convert_from_fxsr(struct user_i387_ia32_struct *env, ...@@ -261,7 +261,7 @@ static void convert_from_fxsr(struct user_i387_ia32_struct *env,
} }
#else #else
env->fip = fxsave->fip; env->fip = fxsave->fip;
env->fcs = fxsave->fcs; env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16);
env->foo = fxsave->foo; env->foo = fxsave->foo;
env->fos = fxsave->fos; env->fos = fxsave->fos;
#endif #endif
......
...@@ -326,6 +326,10 @@ static inline void kb_wait(void) ...@@ -326,6 +326,10 @@ static inline void kb_wait(void)
} }
} }
void __attribute__((weak)) mach_reboot_fixups(void)
{
}
static void native_machine_emergency_restart(void) static void native_machine_emergency_restart(void)
{ {
int i; int i;
...@@ -337,6 +341,8 @@ static void native_machine_emergency_restart(void) ...@@ -337,6 +341,8 @@ static void native_machine_emergency_restart(void)
/* Could also try the reset bit in the Hammer NB */ /* Could also try the reset bit in the Hammer NB */
switch (reboot_type) { switch (reboot_type) {
case BOOT_KBD: case BOOT_KBD:
mach_reboot_fixups(); /* for board specific fixups */
for (i = 0; i < 10; i++) { for (i = 0; i < 10; i++) {
kb_wait(); kb_wait();
udelay(50); udelay(50);
......
...@@ -407,7 +407,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, ...@@ -407,7 +407,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
* The tracer may want to single-step inside the * The tracer may want to single-step inside the
* handler too. * handler too.
*/ */
regs->flags &= ~TF_MASK; regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
if (test_thread_flag(TIF_SINGLESTEP)) if (test_thread_flag(TIF_SINGLESTEP))
ptrace_notify(SIGTRAP); ptrace_notify(SIGTRAP);
...@@ -500,7 +500,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, ...@@ -500,7 +500,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
* The tracer may want to single-step inside the * The tracer may want to single-step inside the
* handler too. * handler too.
*/ */
regs->flags &= ~TF_MASK; regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
if (test_thread_flag(TIF_SINGLESTEP)) if (test_thread_flag(TIF_SINGLESTEP))
ptrace_notify(SIGTRAP); ptrace_notify(SIGTRAP);
......
...@@ -295,7 +295,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, ...@@ -295,7 +295,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
see include/asm-x86_64/uaccess.h for details. */ see include/asm-x86_64/uaccess.h for details. */
set_fs(USER_DS); set_fs(USER_DS);
regs->flags &= ~X86_EFLAGS_TF; regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
if (test_thread_flag(TIF_SINGLESTEP)) if (test_thread_flag(TIF_SINGLESTEP))
ptrace_notify(SIGTRAP); ptrace_notify(SIGTRAP);
#ifdef DEBUG_SIG #ifdef DEBUG_SIG
......
...@@ -166,7 +166,7 @@ static void enable_step(struct task_struct *child, bool block) ...@@ -166,7 +166,7 @@ static void enable_step(struct task_struct *child, bool block)
child->thread.debugctlmsr | DEBUGCTLMSR_BTF); child->thread.debugctlmsr | DEBUGCTLMSR_BTF);
} else { } else {
write_debugctlmsr(child, write_debugctlmsr(child,
child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR); child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
if (!child->thread.debugctlmsr) if (!child->thread.debugctlmsr)
clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
...@@ -189,7 +189,7 @@ void user_disable_single_step(struct task_struct *child) ...@@ -189,7 +189,7 @@ void user_disable_single_step(struct task_struct *child)
* Make sure block stepping (BTF) is disabled. * Make sure block stepping (BTF) is disabled.
*/ */
write_debugctlmsr(child, write_debugctlmsr(child,
child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR); child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
if (!child->thread.debugctlmsr) if (!child->thread.debugctlmsr)
clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment