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 ---