aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/reboot_fixups_32.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/reboot_fixups_32.c')
-rw-r--r--arch/x86/kernel/reboot_fixups_32.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c
index 03e1cce58f49..139eb03490f5 100644
--- a/arch/x86/kernel/reboot_fixups_32.c
+++ b/arch/x86/kernel/reboot_fixups_32.c
@@ -11,6 +11,7 @@
11 11
12#include <asm/delay.h> 12#include <asm/delay.h>
13#include <linux/pci.h> 13#include <linux/pci.h>
14#include <linux/interrupt.h>
14#include <asm/reboot_fixups.h> 15#include <asm/reboot_fixups.h>
15#include <asm/msr.h> 16#include <asm/msr.h>
16 17
@@ -56,6 +57,11 @@ void mach_reboot_fixups(void)
56 struct pci_dev *dev; 57 struct pci_dev *dev;
57 int i; 58 int i;
58 59
60 /* we can be called from sysrq-B code. In such a case it is
61 * prohibited to dig PCI */
62 if (in_interrupt())
63 return;
64
59 for (i=0; i < ARRAY_SIZE(fixups_table); i++) { 65 for (i=0; i < ARRAY_SIZE(fixups_table); i++) {
60 cur = &(fixups_table[i]); 66 cur = &(fixups_table[i]);
61 dev = pci_get_device(cur->vendor, cur->device, NULL); 67 dev = pci_get_device(cur->vendor, cur->device, NULL);