Lines Matching +full:spin +full:- +full:table

1 // SPDX-License-Identifier: GPL-2.0-or-later
37 #include <asm/asm-prototypes.h>
63 #include <asm/text-patching.h>
68 #include <asm/feature-fixups.h>
101 * If we boot via kdump on a non-primary thread, in setup_tlb_core_data()
108 paca_ptrs[cpu]->tcd_ptr = &paca_ptrs[first]->tcd; in setup_tlb_core_data()
127 /* Look for ibm,smt-enabled OF option */
151 smt_option = of_get_property(dn, "ibm,smt-enabled", in check_smt_enabled()
166 /* Look for smt-enabled= cmdline option */
172 early_param("smt-enabled", early_smt_enabled);
180 boot_paca->cpu_start = 1; in fixup_boot_paca()
188 boot_paca->mc_emergency_sp = (void *)&init_thread_union + in fixup_boot_paca()
192 boot_paca->data_offset = 0; in fixup_boot_paca()
194 boot_paca->irq_soft_mask = IRQS_DISABLED; in fixup_boot_paca()
195 boot_paca->irq_happened = PACA_IRQ_HARD_DIS; in fixup_boot_paca()
210 * - PR KVM does not support AIL mode interrupts in the host in configure_exceptions()
213 * - SCV system call interrupt vectors are only implemented for in configure_exceptions()
216 * - On pseries, AIL mode can only be enabled and disabled in configure_exceptions()
217 * system-wide so when a PR VM is created on a pseries host, in configure_exceptions()
220 * - Therefore host CPUs must not execute scv while a PR VM in configure_exceptions()
223 * - SCV support can not be disabled dynamically because the in configure_exceptions()
228 * - So SCV support is blanket disabled if PR KVM could possibly in configure_exceptions()
234 cur_cpu_spec->cpu_user_features2 &= ~PPC_FEATURE2_SCV; in configure_exceptions()
240 cur_cpu_spec->cpu_user_features2 &= ~PPC_FEATURE2_SCV; in configure_exceptions()
294 * told TM is off via the dt-ftrs but told to (partially) use in cpu_ready_for_interrupts()
296 * will be off from dt-ftrs but we need to turn it on for the in cpu_ready_for_interrupts()
307 get_paca()->kernel_msr = MSR_KERNEL; in cpu_ready_for_interrupts()
324 * some early parsing of the device-tree to setup out MEMBLOCK
325 * data structures, and allocate & initialize the hash table
334 * device-tree is not accessible via normal means at this point.
341 /* -------- printk is _NOT_ safe to use here ! ------- */ in early_setup()
357 * percpu variables and spin locks also use the paca. in early_setup()
367 /* -------- printk is now safe to use ------- */ in early_setup()
374 /* Otherwise use the old style CPU table */ in early_setup()
380 udbg_printf(" -> %s(), dt_ptr: 0x%lx\n", __func__, dt_ptr); in early_setup()
385 * calculating/retrieving the hash table size, discover in early_setup()
398 task_thread_info(current)->cpu = boot_cpuid; // fix task_cpu(current) in early_setup()
417 /* Initialize the hash table or TLB handling */ in early_setup()
443 udbg_printf(" <- %s()\n", __func__); in early_setup()
450 * which means the real-mode access trick that btext does will in early_setup()
464 /* Initialize the hash table or TLB handling */ in early_setup_secondary()
467 /* Perform any KUP setup that is per-cpu */ in early_setup_secondary()
493 * See comments in head_64.S -- not all platforms insert in use_spinloop()
494 * secondaries at __secondary_hold and wait at the spin in use_spinloop()
503 * When book3e boots from kexec, the ePAPR spin table does in use_spinloop()
506 return of_property_read_bool(of_chosen, "linux,booted-from-kexec"); in use_spinloop()
518 * all now so they can start to spin on their individual paca in smp_release_cpus()
524 - PHYSICAL_START); in smp_release_cpus()
550 info->size = size; in init_cache_info()
551 info->sets = sets; in init_cache_info()
552 info->line_size = lsize; in init_cache_info()
553 info->block_size = bsize; in init_cache_info()
554 info->log_block_size = __ilog2(bsize); in init_cache_info()
556 info->blocks_per_page = PAGE_SIZE / bsize; in init_cache_info()
558 info->blocks_per_page = 0; in init_cache_info()
561 info->assoc = 0xffff; in init_cache_info()
563 info->assoc = size / (sets * lsize); in init_cache_info()
571 "i-cache-size", in parse_cache_info()
572 "i-cache-sets", in parse_cache_info()
573 "i-cache-block-size", in parse_cache_info()
574 "i-cache-line-size", in parse_cache_info()
577 "d-cache-size", in parse_cache_info()
578 "d-cache-sets", in parse_cache_info()
579 "d-cache-block-size", in parse_cache_info()
580 "d-cache-line-size", in parse_cache_info()
588 sets = -1u; in parse_cache_info()
589 lsize = bsize = cur_cpu_spec->dcache_bsize; in parse_cache_info()
632 * puts incorrect information in the device-tree. This will in initialize_cache_info()
649 * d-cache and i-cache sizes... -Peter in initialize_cache_info()
660 * unified and use the D-side properties. in initialize_cache_info()
679 cur_cpu_spec->dcache_bsize = dcache_bsize; in initialize_cache_info()
680 cur_cpu_spec->icache_bsize = icache_bsize; in initialize_cache_info()
690 * re-entrant interrupts.
750 paca_ptrs[i]->crit_kstack = sp + THREAD_SIZE; in exc_lvl_early_init()
754 paca_ptrs[i]->dbg_kstack = sp + THREAD_SIZE; in exc_lvl_early_init()
758 paca_ptrs[i]->mc_kstack = sp + THREAD_SIZE; in exc_lvl_early_init()
778 * SLB misses on them. The ABI also requires them to be 128-byte in emergency_stack_init()
802 paca_ptrs[i]->emergency_sp = alloc_stack(limit, i) + THREAD_SIZE; in emergency_stack_init()
806 paca_ptrs[i]->nmi_emergency_sp = alloc_stack(limit, i) + THREAD_SIZE; in emergency_stack_init()
809 paca_ptrs[i]->mc_emergency_sp = alloc_stack(mce_limit, i) + THREAD_SIZE; in emergency_stack_init()
838 int rc = -EINVAL; in setup_per_cpu_areas()
874 delta = (unsigned long)pcpu_base_addr - (unsigned long)__per_cpu_start; in setup_per_cpu_areas()
877 paca_ptrs[cpu]->data_offset = __per_cpu_offset[cpu]; in setup_per_cpu_areas()
906 * disable it by default. Book3S has a soft-nmi hardlockup detector based
912 * the detector for non-KVM guests, assume PowerVM.