Lines Matching +full:can +full:- +full:secondary
1 // SPDX-License-Identifier: GPL-2.0-or-later
49 acpi_mp_wake_mailbox->apic_id = apicid; in acpi_mp_cpu_die()
50 smp_store_release(&acpi_mp_wake_mailbox->command, in acpi_mp_cpu_die()
55 while (READ_ONCE(acpi_mp_wake_mailbox->command) && --timeout) in acpi_mp_cpu_die()
93 return -ENOMEM; in init_transition_pgtable()
100 return -ENOMEM; in init_transition_pgtable()
107 return -ENOMEM; in init_transition_pgtable()
114 return -ENOMEM; in init_transition_pgtable()
137 return -ENOMEM; in acpi_mp_setup_reset()
146 return -ENOMEM; in acpi_mp_setup_reset()
154 return -ENOMEM; in acpi_mp_setup_reset()
159 return -ENOMEM; in acpi_mp_setup_reset()
175 pr_warn_once("No MADT mailbox: cannot bringup secondary CPUs. Booting with kexec?\n"); in acpi_wakeup_cpu()
176 return -EOPNOTSUPP; in acpi_wakeup_cpu()
182 * Wakeup of secondary CPUs is fully serialized in the core code. in acpi_wakeup_cpu()
200 acpi_mp_wake_mailbox->apic_id = apicid; in acpi_wakeup_cpu()
201 acpi_mp_wake_mailbox->wakeup_vector = start_ip; in acpi_wakeup_cpu()
202 smp_store_release(&acpi_mp_wake_mailbox->command, in acpi_wakeup_cpu()
210 * zeroing out ->command. in acpi_wakeup_cpu()
217 * wake up secondary. It can postpone scheduling secondary vCPU in acpi_wakeup_cpu()
219 * possible attack vector for VMM: it can wake up a secondary CPU when in acpi_wakeup_cpu()
223 while (READ_ONCE(acpi_mp_wake_mailbox->command)) in acpi_wakeup_cpu()
237 * To prevent a kexec kernel from onlining secondary CPUs invalidate the in acpi_mp_disable_offlining()
243 * secondary CPUs. in acpi_mp_disable_offlining()
248 mp_wake->mailbox_address = 0; in acpi_mp_disable_offlining()
260 * entry. 'sizeof (struct acpi_madt_multiproc_wakeup)' can be larger in acpi_parse_mp_wake()
265 return -EINVAL; in acpi_parse_mp_wake()
266 if (end - (unsigned long)mp_wake < ACPI_MADT_MP_WAKEUP_SIZE_V0) in acpi_parse_mp_wake()
267 return -EINVAL; in acpi_parse_mp_wake()
268 if (mp_wake->header.length < ACPI_MADT_MP_WAKEUP_SIZE_V0) in acpi_parse_mp_wake()
269 return -EINVAL; in acpi_parse_mp_wake()
271 acpi_table_print_madt_entry(&header->common); in acpi_parse_mp_wake()
273 acpi_mp_wake_mailbox_paddr = mp_wake->mailbox_address; in acpi_parse_mp_wake()
275 if (mp_wake->version >= ACPI_MADT_MP_WAKEUP_VERSION_V1 && in acpi_parse_mp_wake()
276 mp_wake->header.length >= ACPI_MADT_MP_WAKEUP_SIZE_V1) { in acpi_parse_mp_wake()
277 if (acpi_mp_setup_reset(mp_wake->reset_vector)) { in acpi_parse_mp_wake()