Lines Matching refs:pcpu_id
55 static void set_current_pcpu_id(uint16_t pcpu_id);
82 static void pcpu_set_current_state(uint16_t pcpu_id, enum pcpu_boot_state state) in pcpu_set_current_state() argument
88 set_current_pcpu_id(pcpu_id); in pcpu_set_current_state()
92 per_cpu(boot_state, pcpu_id) = state; in pcpu_set_current_state()
103 bool is_pcpu_active(uint16_t pcpu_id) in is_pcpu_active() argument
105 return bitmap_test(pcpu_id, &pcpu_active_bitmap); in is_pcpu_active()
141 uint16_t pcpu_id; in init_pcpu_pre() local
145 pcpu_id = BSP_CPU_ID; in init_pcpu_pre()
214 pcpu_id = get_pcpu_id_from_lapic_id(get_cur_lapic_id()); in init_pcpu_pre()
215 if (pcpu_id >= MAX_PCPU_NUM) { in init_pcpu_pre()
220 bitmap_set_lock(pcpu_id, &pcpu_active_bitmap); in init_pcpu_pre()
223 pcpu_set_current_state(pcpu_id, PCPU_STATE_INITIALIZING); in init_pcpu_pre()
226 void init_pcpu_post(uint16_t pcpu_id) in init_pcpu_post() argument
242 if (pcpu_id == BSP_CPU_ID) { in init_pcpu_post()
306 pr_dbg("Core %hu is up", pcpu_id); in init_pcpu_post()
311 init_interrupt(pcpu_id); in init_pcpu_post()
318 if (!init_software_sram(pcpu_id == BSP_CPU_ID)) { in init_pcpu_post()
324 init_sched(pcpu_id); in init_pcpu_post()
327 setup_clos(pcpu_id); in init_pcpu_post()
336 bitmap_clear_lock(pcpu_id, &pcpu_sync); in init_pcpu_post()
344 uint16_t pcpu_id = INVALID_CPU_ID; in get_pcpu_id_from_lapic_id() local
348 pcpu_id = i; in get_pcpu_id_from_lapic_id()
353 return pcpu_id; in get_pcpu_id_from_lapic_id()
356 static void start_pcpu(uint16_t pcpu_id) in start_pcpu() argument
362 write_trampoline_stack_sym(pcpu_id); in start_pcpu()
369 send_startup_ipi(pcpu_id, startup_paddr); in start_pcpu()
375 while (!is_pcpu_active(pcpu_id) && (timeout != 0U)) { in start_pcpu()
384 if (!is_pcpu_active(pcpu_id)) { in start_pcpu()
385 pr_fatal("Secondary CPU%hu failed to come up", pcpu_id); in start_pcpu()
386 pcpu_set_current_state(pcpu_id, PCPU_STATE_DEAD); in start_pcpu()
402 uint16_t pcpu_id = get_pcpu_id(); in start_pcpus() local
409 if (pcpu_id == i) { in start_pcpus()
420 void make_pcpu_offline(uint16_t pcpu_id) in make_pcpu_offline() argument
422 bitmap_set_lock(NEED_OFFLINE, &per_cpu(pcpu_flag, pcpu_id)); in make_pcpu_offline()
423 if (get_pcpu_id() != pcpu_id) { in make_pcpu_offline()
424 kick_pcpu(pcpu_id); in make_pcpu_offline()
428 bool need_offline(uint16_t pcpu_id) in need_offline() argument
430 return bitmap_test_and_clear_lock(NEED_OFFLINE, &per_cpu(pcpu_flag, pcpu_id)); in need_offline()
446 uint16_t pcpu_id; in stop_pcpus() local
449 for (pcpu_id = 0U; pcpu_id < phys_cpu_num; pcpu_id++) { in stop_pcpus()
450 if (get_pcpu_id() == pcpu_id) { /* avoid offline itself */ in stop_pcpus()
454 bitmap_set_nolock(pcpu_id, &mask); in stop_pcpus()
455 make_pcpu_offline(pcpu_id); in stop_pcpus()
471 uint16_t pcpu_id = get_pcpu_id(); in cpu_do_idle()
473 if (per_cpu(mode_to_idle, pcpu_id) == IDLE_MODE_HLT) { in cpu_do_idle()
476 struct acrn_vcpu *vcpu = get_ever_run_vcpu(pcpu_id); in cpu_do_idle()
498 uint16_t pcpu_id = get_pcpu_id(); in cpu_dead() local
500 deinit_sched(pcpu_id); in cpu_dead()
501 if (bitmap_test(pcpu_id, &pcpu_active_bitmap)) { in cpu_dead()
510 pcpu_set_current_state(pcpu_id, PCPU_STATE_DEAD); in cpu_dead()
511 bitmap_clear_lock(pcpu_id, &pcpu_active_bitmap); in cpu_dead()
518 pr_err("pcpu%hu already dead", pcpu_id); in cpu_dead()
522 static void set_current_pcpu_id(uint16_t pcpu_id) in set_current_pcpu_id() argument
525 msr_write(ACRN_PSEUDO_PCPUID_MSR, (uint32_t) pcpu_id); in set_current_pcpu_id()
629 void msr_write_pcpu(uint32_t msr_index, uint64_t value64, uint16_t pcpu_id) in msr_write_pcpu() argument
634 if (pcpu_id == get_pcpu_id()) { in msr_write_pcpu()
639 bitmap_set_nolock(pcpu_id, &mask); in msr_write_pcpu()
651 uint64_t msr_read_pcpu(uint32_t msr_index, uint16_t pcpu_id) in msr_read_pcpu() argument
657 if (pcpu_id == get_pcpu_id()) { in msr_read_pcpu()
661 bitmap_set_nolock(pcpu_id, &mask); in msr_read_pcpu()