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()
86 return -ENOMEM; in acpi_mp_setup_reset()
93 return -ENOMEM; in acpi_mp_setup_reset()
101 return -ENOMEM; in acpi_mp_setup_reset()
111 info.offset = __START_KERNEL_map - phys_base; in acpi_mp_setup_reset()
116 return -ENOMEM; in acpi_mp_setup_reset()
132 pr_warn_once("No MADT mailbox: cannot bringup secondary CPUs. Booting with kexec?\n"); in acpi_wakeup_cpu()
133 return -EOPNOTSUPP; in acpi_wakeup_cpu()
139 * Wakeup of secondary CPUs is fully serialized in the core code. in acpi_wakeup_cpu()
157 acpi_mp_wake_mailbox->apic_id = apicid; in acpi_wakeup_cpu()
158 acpi_mp_wake_mailbox->wakeup_vector = start_ip; in acpi_wakeup_cpu()
159 smp_store_release(&acpi_mp_wake_mailbox->command, in acpi_wakeup_cpu()
167 * zeroing out ->command. in acpi_wakeup_cpu()
174 * wake up secondary. It can postpone scheduling secondary vCPU in acpi_wakeup_cpu()
176 * possible attack vector for VMM: it can wake up a secondary CPU when in acpi_wakeup_cpu()
180 while (READ_ONCE(acpi_mp_wake_mailbox->command)) in acpi_wakeup_cpu()
194 * To prevent a kexec kernel from onlining secondary CPUs invalidate the in acpi_mp_disable_offlining()
200 * secondary CPUs. in acpi_mp_disable_offlining()
205 mp_wake->mailbox_address = 0; in acpi_mp_disable_offlining()
217 * entry. 'sizeof (struct acpi_madt_multiproc_wakeup)' can be larger in acpi_parse_mp_wake()
222 return -EINVAL; in acpi_parse_mp_wake()
223 if (end - (unsigned long)mp_wake < ACPI_MADT_MP_WAKEUP_SIZE_V0) in acpi_parse_mp_wake()
224 return -EINVAL; in acpi_parse_mp_wake()
225 if (mp_wake->header.length < ACPI_MADT_MP_WAKEUP_SIZE_V0) in acpi_parse_mp_wake()
226 return -EINVAL; in acpi_parse_mp_wake()
228 acpi_table_print_madt_entry(&header->common); in acpi_parse_mp_wake()
230 acpi_mp_wake_mailbox_paddr = mp_wake->mailbox_address; in acpi_parse_mp_wake()
232 if (mp_wake->version >= ACPI_MADT_MP_WAKEUP_VERSION_V1 && in acpi_parse_mp_wake()
233 mp_wake->header.length >= ACPI_MADT_MP_WAKEUP_SIZE_V1) { in acpi_parse_mp_wake()
234 if (acpi_mp_setup_reset(mp_wake->reset_vector)) { in acpi_parse_mp_wake()