diff options
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r-- | arch/s390/kernel/traps.c | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 6b8703ec2ae6..c5bd36fae56b 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -57,7 +57,6 @@ int sysctl_userprocess_debug = 0; | |||
57 | 57 | ||
58 | extern pgm_check_handler_t do_protection_exception; | 58 | extern pgm_check_handler_t do_protection_exception; |
59 | extern pgm_check_handler_t do_dat_exception; | 59 | extern pgm_check_handler_t do_dat_exception; |
60 | extern pgm_check_handler_t do_pseudo_page_fault; | ||
61 | #ifdef CONFIG_PFAULT | 60 | #ifdef CONFIG_PFAULT |
62 | extern int pfault_init(void); | 61 | extern int pfault_init(void); |
63 | extern void pfault_fini(void); | 62 | extern void pfault_fini(void); |
@@ -676,20 +675,6 @@ asmlinkage void kernel_stack_overflow(struct pt_regs * regs) | |||
676 | panic("Corrupt kernel stack, can't continue."); | 675 | panic("Corrupt kernel stack, can't continue."); |
677 | } | 676 | } |
678 | 677 | ||
679 | #ifndef CONFIG_ARCH_S390X | ||
680 | static int | ||
681 | pagex_reboot_event(struct notifier_block *this, unsigned long event, void *ptr) | ||
682 | { | ||
683 | if (MACHINE_IS_VM) | ||
684 | cpcmd("SET PAGEX OFF", NULL, 0, NULL); | ||
685 | return NOTIFY_DONE; | ||
686 | } | ||
687 | |||
688 | static struct notifier_block pagex_reboot_notifier = { | ||
689 | .notifier_call = &pagex_reboot_event, | ||
690 | }; | ||
691 | #endif | ||
692 | |||
693 | /* init is done in lowcore.S and head.S */ | 678 | /* init is done in lowcore.S and head.S */ |
694 | 679 | ||
695 | void __init trap_init(void) | 680 | void __init trap_init(void) |
@@ -717,9 +702,7 @@ void __init trap_init(void) | |||
717 | pgm_check_table[0x11] = &do_dat_exception; | 702 | pgm_check_table[0x11] = &do_dat_exception; |
718 | pgm_check_table[0x12] = &translation_exception; | 703 | pgm_check_table[0x12] = &translation_exception; |
719 | pgm_check_table[0x13] = &special_op_exception; | 704 | pgm_check_table[0x13] = &special_op_exception; |
720 | #ifndef CONFIG_ARCH_S390X | 705 | #ifdef CONFIG_ARCH_S390X |
721 | pgm_check_table[0x14] = &do_pseudo_page_fault; | ||
722 | #else /* CONFIG_ARCH_S390X */ | ||
723 | pgm_check_table[0x38] = &do_dat_exception; | 706 | pgm_check_table[0x38] = &do_dat_exception; |
724 | pgm_check_table[0x39] = &do_dat_exception; | 707 | pgm_check_table[0x39] = &do_dat_exception; |
725 | pgm_check_table[0x3A] = &do_dat_exception; | 708 | pgm_check_table[0x3A] = &do_dat_exception; |
@@ -731,12 +714,10 @@ void __init trap_init(void) | |||
731 | pgm_check_table[0x40] = &do_monitor_call; | 714 | pgm_check_table[0x40] = &do_monitor_call; |
732 | 715 | ||
733 | if (MACHINE_IS_VM) { | 716 | if (MACHINE_IS_VM) { |
717 | #ifdef CONFIG_PFAULT | ||
734 | /* | 718 | /* |
735 | * First try to get pfault pseudo page faults going. | 719 | * Try to get pfault pseudo page faults going. |
736 | * If this isn't available turn on pagex page faults. | ||
737 | */ | 720 | */ |
738 | #ifdef CONFIG_PFAULT | ||
739 | /* request the 0x2603 external interrupt */ | ||
740 | if (register_early_external_interrupt(0x2603, pfault_interrupt, | 721 | if (register_early_external_interrupt(0x2603, pfault_interrupt, |
741 | &ext_int_pfault) != 0) | 722 | &ext_int_pfault) != 0) |
742 | panic("Couldn't request external interrupt 0x2603"); | 723 | panic("Couldn't request external interrupt 0x2603"); |
@@ -748,9 +729,5 @@ void __init trap_init(void) | |||
748 | unregister_early_external_interrupt(0x2603, pfault_interrupt, | 729 | unregister_early_external_interrupt(0x2603, pfault_interrupt, |
749 | &ext_int_pfault); | 730 | &ext_int_pfault); |
750 | #endif | 731 | #endif |
751 | #ifndef CONFIG_ARCH_S390X | ||
752 | register_reboot_notifier(&pagex_reboot_notifier); | ||
753 | cpcmd("SET PAGEX ON", NULL, 0, NULL); | ||
754 | #endif | ||
755 | } | 732 | } |
756 | } | 733 | } |