Lines Matching refs:hub_nmi

292 static inline int uv_nmi_test_mmr(struct uv_hub_nmi_s *hub_nmi)  in uv_nmi_test_mmr()  argument
294 hub_nmi->nmi_value = uv_read_local_mmr(nmi_mmr); in uv_nmi_test_mmr()
295 atomic_inc(&hub_nmi->read_mmr_count); in uv_nmi_test_mmr()
296 return !!(hub_nmi->nmi_value & nmi_mmr_pending); in uv_nmi_test_mmr()
468 static int uv_nmi_test_hubless(struct uv_hub_nmi_s *hub_nmi) in uv_nmi_test_hubless() argument
473 hub_nmi->nmi_value = status; in uv_nmi_test_hubless()
474 atomic_inc(&hub_nmi->read_mmr_count); in uv_nmi_test_hubless()
485 static int uv_test_nmi(struct uv_hub_nmi_s *hub_nmi) in uv_test_nmi() argument
487 if (hub_nmi->hub_present) in uv_test_nmi()
488 return uv_nmi_test_mmr(hub_nmi); in uv_test_nmi()
490 if (hub_nmi->pch_owner) /* Only PCH owner can check status */ in uv_test_nmi()
491 return uv_nmi_test_hubless(hub_nmi); in uv_test_nmi()
500 static int uv_set_in_nmi(int cpu, struct uv_hub_nmi_s *hub_nmi) in uv_set_in_nmi() argument
502 int first = atomic_add_unless(&hub_nmi->in_nmi, 1, 1); in uv_set_in_nmi()
505 atomic_set(&hub_nmi->cpu_owner, cpu); in uv_set_in_nmi()
509 atomic_inc(&hub_nmi->nmi_count); in uv_set_in_nmi()
515 static int uv_check_nmi(struct uv_hub_nmi_s *hub_nmi) in uv_check_nmi() argument
525 nmi = atomic_read(&hub_nmi->in_nmi); in uv_check_nmi()
529 if (raw_spin_trylock(&hub_nmi->nmi_lock)) { in uv_check_nmi()
530 nmi_detected = uv_test_nmi(hub_nmi); in uv_check_nmi()
534 uv_set_in_nmi(cpu, hub_nmi); in uv_check_nmi()
544 raw_spin_unlock(&hub_nmi->nmi_lock); in uv_check_nmi()
553 nmi = atomic_read(&hub_nmi->in_nmi); in uv_check_nmi()
565 uv_set_in_nmi(cpu, hub_nmi); in uv_check_nmi()
570 raw_spin_unlock(&hub_nmi->nmi_lock); in uv_check_nmi()
583 struct uv_hub_nmi_s *hub_nmi = uv_hub_nmi; in uv_clear_nmi() local
585 if (cpu == atomic_read(&hub_nmi->cpu_owner)) { in uv_clear_nmi()
586 atomic_set(&hub_nmi->cpu_owner, -1); in uv_clear_nmi()
587 atomic_set(&hub_nmi->in_nmi, 0); in uv_clear_nmi()
588 if (hub_nmi->hub_present) in uv_clear_nmi()
592 raw_spin_unlock(&hub_nmi->nmi_lock); in uv_clear_nmi()
940 struct uv_hub_nmi_s *hub_nmi = uv_hub_nmi; in uv_handle_nmi() local
948 if (!this_cpu_read(uv_cpu_nmi.pinging) && !uv_check_nmi(hub_nmi)) { in uv_handle_nmi()