setup.c (dc8afce5f45b099e3ea52a16b2f90e92f90f3af0) | setup.c (7368b38b21bfa39df637701a480262c15ab1a49e) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * 64-bit pSeries and RS/6000 setup code. 4 * 5 * Copyright (C) 1995 Linus Torvalds 6 * Adapted from 'alpha' version by Gary Thomas 7 * Modified by Cort Dougan (cort@cs.nmt.edu) 8 * Modified by PPC64 Team, IBM Corp --- 70 unchanged lines hidden (view full) --- 79EXPORT_SYMBOL_GPL(shared_processor); 80 81int CMO_PrPSP = -1; 82int CMO_SecPSP = -1; 83unsigned long CMO_PageSize = (ASM_CONST(1) << IOMMU_PAGE_SHIFT_4K); 84EXPORT_SYMBOL(CMO_PageSize); 85 86int fwnmi_active; /* TRUE if an FWNMI handler is present */ | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * 64-bit pSeries and RS/6000 setup code. 4 * 5 * Copyright (C) 1995 Linus Torvalds 6 * Adapted from 'alpha' version by Gary Thomas 7 * Modified by Cort Dougan (cort@cs.nmt.edu) 8 * Modified by PPC64 Team, IBM Corp --- 70 unchanged lines hidden (view full) --- 79EXPORT_SYMBOL_GPL(shared_processor); 80 81int CMO_PrPSP = -1; 82int CMO_SecPSP = -1; 83unsigned long CMO_PageSize = (ASM_CONST(1) << IOMMU_PAGE_SHIFT_4K); 84EXPORT_SYMBOL(CMO_PageSize); 85 86int fwnmi_active; /* TRUE if an FWNMI handler is present */ |
87int ibm_nmi_interlock_token; |
|
87 88static void pSeries_show_cpuinfo(struct seq_file *m) 89{ 90 struct device_node *root; 91 const char *model = ""; 92 93 root = of_find_node_by_path("/"); 94 if (root) --- 14 unchanged lines hidden (view full) --- 109 unsigned long system_reset_addr, machine_check_addr; 110 u8 *mce_data_buf; 111 unsigned int i; 112 int nr_cpus = num_possible_cpus(); 113#ifdef CONFIG_PPC_BOOK3S_64 114 struct slb_entry *slb_ptr; 115 size_t size; 116#endif | 88 89static void pSeries_show_cpuinfo(struct seq_file *m) 90{ 91 struct device_node *root; 92 const char *model = ""; 93 94 root = of_find_node_by_path("/"); 95 if (root) --- 14 unchanged lines hidden (view full) --- 110 unsigned long system_reset_addr, machine_check_addr; 111 u8 *mce_data_buf; 112 unsigned int i; 113 int nr_cpus = num_possible_cpus(); 114#ifdef CONFIG_PPC_BOOK3S_64 115 struct slb_entry *slb_ptr; 116 size_t size; 117#endif |
118 int ibm_nmi_register_token; |
|
117 | 119 |
118 int ibm_nmi_register = rtas_token("ibm,nmi-register"); 119 if (ibm_nmi_register == RTAS_UNKNOWN_SERVICE) | 120 ibm_nmi_register_token = rtas_token("ibm,nmi-register"); 121 if (ibm_nmi_register_token == RTAS_UNKNOWN_SERVICE) |
120 return; 121 | 122 return; 123 |
124 ibm_nmi_interlock_token = rtas_token("ibm,nmi-interlock"); 125 if (WARN_ON(ibm_nmi_interlock_token == RTAS_UNKNOWN_SERVICE)) 126 return; 127 |
|
122 /* If the kernel's not linked at zero we point the firmware at low 123 * addresses anyway, and use a trampoline to get to the real code. */ 124 system_reset_addr = __pa(system_reset_fwnmi) - PHYSICAL_START; 125 machine_check_addr = __pa(machine_check_fwnmi) - PHYSICAL_START; 126 | 128 /* If the kernel's not linked at zero we point the firmware at low 129 * addresses anyway, and use a trampoline to get to the real code. */ 130 system_reset_addr = __pa(system_reset_fwnmi) - PHYSICAL_START; 131 machine_check_addr = __pa(machine_check_fwnmi) - PHYSICAL_START; 132 |
127 if (0 == rtas_call(ibm_nmi_register, 2, 1, NULL, system_reset_addr, 128 machine_check_addr)) | 133 if (0 == rtas_call(ibm_nmi_register_token, 2, 1, NULL, 134 system_reset_addr, machine_check_addr)) |
129 fwnmi_active = 1; 130 131 /* 132 * Allocate a chunk for per cpu buffer to hold rtas errorlog. 133 * It will be used in real mode mce handler, hence it needs to be 134 * below RMA. 135 */ 136 mce_data_buf = memblock_alloc_try_nid_raw(RTAS_ERROR_LOG_MAX * nr_cpus, --- 903 unchanged lines hidden --- | 135 fwnmi_active = 1; 136 137 /* 138 * Allocate a chunk for per cpu buffer to hold rtas errorlog. 139 * It will be used in real mode mce handler, hence it needs to be 140 * below RMA. 141 */ 142 mce_data_buf = memblock_alloc_try_nid_raw(RTAS_ERROR_LOG_MAX * nr_cpus, --- 903 unchanged lines hidden --- |