Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 19761
b: refs/heads/master
c: eddb6fb
h: refs/heads/master
i:
  19759: 10472f0
v: v3
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed Feb 5, 2006
1 parent 2db2526 commit 1bfc0dc
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2f01942536d8c686a3f6b3b38f1257caa2fb763e
refs/heads/master: eddb6fb9a54cdc8c7c37e056a2b4bbbc8a128a36
3 changes: 2 additions & 1 deletion trunk/arch/x86_64/kernel/entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -922,7 +922,7 @@ KPROBE_ENTRY(debug)
.previous .text

/* runs on exception stack */
ENTRY(nmi)
KPROBE_ENTRY(nmi)
INTR_FRAME
pushq $-1
CFI_ADJUST_CFA_OFFSET 8
Expand Down Expand Up @@ -969,6 +969,7 @@ paranoid_schedule:
cli
jmp paranoid_userspace
CFI_ENDPROC
.previous .text

KPROBE_ENTRY(int3)
INTR_FRAME
Expand Down
7 changes: 4 additions & 3 deletions trunk/arch/x86_64/kernel/nmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <linux/sysdev.h>
#include <linux/nmi.h>
#include <linux/sysctl.h>
#include <linux/kprobes.h>

#include <asm/smp.h>
#include <asm/mtrr.h>
Expand Down Expand Up @@ -468,7 +469,7 @@ void touch_nmi_watchdog (void)
touch_softlockup_watchdog();
}

void nmi_watchdog_tick (struct pt_regs * regs, unsigned reason)
void __kprobes nmi_watchdog_tick(struct pt_regs * regs, unsigned reason)
{
int sum;
int touched = 0;
Expand Down Expand Up @@ -512,14 +513,14 @@ void nmi_watchdog_tick (struct pt_regs * regs, unsigned reason)
}
}

static int dummy_nmi_callback(struct pt_regs * regs, int cpu)
static __kprobes int dummy_nmi_callback(struct pt_regs * regs, int cpu)
{
return 0;
}

static nmi_callback_t nmi_callback = dummy_nmi_callback;

asmlinkage void do_nmi(struct pt_regs * regs, long error_code)
asmlinkage __kprobes void do_nmi(struct pt_regs * regs, long error_code)
{
int cpu = safe_smp_processor_id();

Expand Down
21 changes: 12 additions & 9 deletions trunk/arch/x86_64/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ void out_of_line_bug(void)
static DEFINE_SPINLOCK(die_lock);
static int die_owner = -1;

unsigned long oops_begin(void)
unsigned __kprobes long oops_begin(void)
{
int cpu = safe_smp_processor_id();
unsigned long flags;
Expand All @@ -391,7 +391,7 @@ unsigned long oops_begin(void)
return flags;
}

void oops_end(unsigned long flags)
void __kprobes oops_end(unsigned long flags)
{
die_owner = -1;
bust_spinlocks(0);
Expand All @@ -400,7 +400,7 @@ void oops_end(unsigned long flags)
panic("Oops");
}

void __die(const char * str, struct pt_regs * regs, long err)
void __kprobes __die(const char * str, struct pt_regs * regs, long err)
{
static int die_counter;
printk(KERN_EMERG "%s: %04lx [%u] ", str, err & 0xffff,++die_counter);
Expand Down Expand Up @@ -432,7 +432,7 @@ void die(const char * str, struct pt_regs * regs, long err)
do_exit(SIGSEGV);
}

void die_nmi(char *str, struct pt_regs *regs)
void __kprobes die_nmi(char *str, struct pt_regs *regs)
{
unsigned long flags = oops_begin();

Expand Down Expand Up @@ -575,7 +575,8 @@ asmlinkage void __kprobes do_general_protection(struct pt_regs * regs,
}
}

static void mem_parity_error(unsigned char reason, struct pt_regs * regs)
static __kprobes void
mem_parity_error(unsigned char reason, struct pt_regs * regs)
{
printk("Uhhuh. NMI received. Dazed and confused, but trying to continue\n");
printk("You probably have a hardware problem with your RAM chips\n");
Expand All @@ -585,7 +586,8 @@ static void mem_parity_error(unsigned char reason, struct pt_regs * regs)
outb(reason, 0x61);
}

static void io_check_error(unsigned char reason, struct pt_regs * regs)
static __kprobes void
io_check_error(unsigned char reason, struct pt_regs * regs)
{
printk("NMI: IOCK error (debug interrupt?)\n");
show_registers(regs);
Expand All @@ -598,15 +600,16 @@ static void io_check_error(unsigned char reason, struct pt_regs * regs)
outb(reason, 0x61);
}

static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
static __kprobes void
unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
{ printk("Uhhuh. NMI received for unknown reason %02x.\n", reason);
printk("Dazed and confused, but trying to continue\n");
printk("Do you have a strange power saving mode enabled?\n");
}

/* Runs on IST stack. This code must keep interrupts off all the time.
Nested NMIs are prevented by the CPU. */
asmlinkage void default_do_nmi(struct pt_regs *regs)
asmlinkage __kprobes void default_do_nmi(struct pt_regs *regs)
{
unsigned char reason = 0;
int cpu;
Expand Down Expand Up @@ -658,7 +661,7 @@ asmlinkage void __kprobes do_int3(struct pt_regs * regs, long error_code)
/* Help handler running on IST stack to switch back to user stack
for scheduling or signal handling. The actual stack switch is done in
entry.S */
asmlinkage struct pt_regs *sync_regs(struct pt_regs *eregs)
asmlinkage __kprobes struct pt_regs *sync_regs(struct pt_regs *eregs)
{
struct pt_regs *regs = eregs;
/* Did already sync */
Expand Down

0 comments on commit 1bfc0dc

Please sign in to comment.