Lines Matching refs:nfit_spa
637 struct nfit_spa *nfit_spa; in add_spa() local
642 list_for_each_entry(nfit_spa, &prev->spas, list) { in add_spa()
643 if (memcmp(nfit_spa->spa, spa, sizeof(*spa)) == 0) { in add_spa()
644 list_move_tail(&nfit_spa->list, &acpi_desc->spas); in add_spa()
649 nfit_spa = devm_kzalloc(dev, sizeof(*nfit_spa) + sizeof(*spa), in add_spa()
651 if (!nfit_spa) in add_spa()
653 INIT_LIST_HEAD(&nfit_spa->list); in add_spa()
654 memcpy(nfit_spa->spa, spa, sizeof(*spa)); in add_spa()
655 list_add_tail(&nfit_spa->list, &acpi_desc->spas); in add_spa()
939 struct nfit_spa *nfit_spa; in nfit_mem_find_spa_bdw() local
941 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) { in nfit_mem_find_spa_bdw()
942 u16 range_index = nfit_spa->spa->range_index; in nfit_mem_find_spa_bdw()
943 int type = nfit_spa_type(nfit_spa->spa); in nfit_mem_find_spa_bdw()
957 nfit_mem->spa_bdw = nfit_spa->spa; in nfit_mem_find_spa_bdw()
1156 struct nfit_spa *nfit_spa; in nfit_mem_init() local
1168 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) { in nfit_mem_init()
1169 rc = __nfit_mem_init(acpi_desc, nfit_spa->spa); in nfit_mem_init()
1990 struct nfit_spa *nfit_spa = nd_region_provider_data(nd_region); in range_index_show() local
1992 return sprintf(buf, "%d\n", nfit_spa->spa->range_index); in range_index_show()
2454 struct nd_cmd_ars_cap *cmd, struct nfit_spa *nfit_spa) in ars_get_cap() argument
2457 struct acpi_nfit_system_address *spa = nfit_spa->spa; in ars_get_cap()
2469 static int ars_start(struct acpi_nfit_desc *acpi_desc, struct nfit_spa *nfit_spa) in ars_start() argument
2474 struct acpi_nfit_system_address *spa = nfit_spa->spa; in ars_start()
2480 if (test_bit(ARS_SHORT, &nfit_spa->ars_state)) in ars_start()
2530 struct nfit_spa *nfit_spa) in ars_complete() argument
2533 struct acpi_nfit_system_address *spa = nfit_spa->spa; in ars_complete()
2534 struct nd_region *nd_region = nfit_spa->nd_region; in ars_complete()
2556 if (test_bit(ARS_DONE, &nfit_spa->ars_state)) in ars_complete()
2559 if (!test_and_clear_bit(ARS_REQ, &nfit_spa->ars_state)) in ars_complete()
2569 test_bit(ARS_SHORT, &nfit_spa->ars_state) in ars_complete()
2571 clear_bit(ARS_SHORT, &nfit_spa->ars_state); in ars_complete()
2572 if (test_and_clear_bit(ARS_REQ_REDO, &nfit_spa->ars_state)) { in ars_complete()
2573 set_bit(ARS_SHORT, &nfit_spa->ars_state); in ars_complete()
2574 set_bit(ARS_REQ, &nfit_spa->ars_state); in ars_complete()
2577 set_bit(ARS_DONE, &nfit_spa->ars_state); in ars_complete()
2655 struct nfit_spa *nfit_spa) in acpi_nfit_init_mapping() argument
2659 struct acpi_nfit_system_address *spa = nfit_spa->spa; in acpi_nfit_init_mapping()
2696 nfit_spa->nd_region = nvdimm_blk_region_create(acpi_desc->nvdimm_bus, in acpi_nfit_init_mapping()
2698 if (!nfit_spa->nd_region) in acpi_nfit_init_mapping()
2722 struct nfit_spa *nfit_spa) in acpi_nfit_register_region() argument
2725 struct acpi_nfit_system_address *spa = nfit_spa->spa; in acpi_nfit_register_region()
2733 if (nfit_spa->nd_region) in acpi_nfit_register_region()
2748 ndr_desc->provider_data = nfit_spa; in acpi_nfit_register_region()
2779 memdev, nfit_spa); in acpi_nfit_register_region()
2800 nfit_spa->nd_region = nvdimm_pmem_region_create(nvdimm_bus, in acpi_nfit_register_region()
2802 if (!nfit_spa->nd_region) in acpi_nfit_register_region()
2805 nfit_spa->nd_region = nvdimm_volatile_region_create(nvdimm_bus, in acpi_nfit_register_region()
2807 if (!nfit_spa->nd_region) in acpi_nfit_register_region()
2810 nfit_spa->nd_region = nvdimm_pmem_region_create(nvdimm_bus, in acpi_nfit_register_region()
2812 if (!nfit_spa->nd_region) in acpi_nfit_register_region()
2819 nfit_spa->spa->range_index); in acpi_nfit_register_region()
2858 static int ars_register(struct acpi_nfit_desc *acpi_desc, struct nfit_spa *nfit_spa, in ars_register() argument
2864 return acpi_nfit_register_region(acpi_desc, nfit_spa); in ars_register()
2866 set_bit(ARS_REQ, &nfit_spa->ars_state); in ars_register()
2867 set_bit(ARS_SHORT, &nfit_spa->ars_state); in ars_register()
2872 rc = ars_start(acpi_desc, nfit_spa); in ars_register()
2879 set_bit(ARS_FAILED, &nfit_spa->ars_state); in ars_register()
2883 clear_bit(ARS_SHORT, &nfit_spa->ars_state); in ars_register()
2885 ars_complete(acpi_desc, nfit_spa); in ars_register()
2891 set_bit(ARS_FAILED, &nfit_spa->ars_state); in ars_register()
2895 if (test_and_clear_bit(ARS_DONE, &nfit_spa->ars_state)) in ars_register()
2896 set_bit(ARS_REQ, &nfit_spa->ars_state); in ars_register()
2898 return acpi_nfit_register_region(acpi_desc, nfit_spa); in ars_register()
2903 struct nfit_spa *nfit_spa; in ars_complete_all() local
2905 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) { in ars_complete_all()
2906 if (test_bit(ARS_FAILED, &nfit_spa->ars_state)) in ars_complete_all()
2908 ars_complete(acpi_desc, nfit_spa); in ars_complete_all()
2917 struct nfit_spa *nfit_spa; in __acpi_nfit_scrub() local
2941 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) { in __acpi_nfit_scrub()
2942 if (test_bit(ARS_FAILED, &nfit_spa->ars_state)) in __acpi_nfit_scrub()
2944 if (test_bit(ARS_REQ, &nfit_spa->ars_state)) { in __acpi_nfit_scrub()
2945 int rc = ars_start(acpi_desc, nfit_spa); in __acpi_nfit_scrub()
2947 clear_bit(ARS_DONE, &nfit_spa->ars_state); in __acpi_nfit_scrub()
2948 dev = nd_region_dev(nfit_spa->nd_region); in __acpi_nfit_scrub()
2950 nfit_spa->spa->range_index, rc); in __acpi_nfit_scrub()
2954 nfit_spa->spa->range_index, rc); in __acpi_nfit_scrub()
2955 set_bit(ARS_FAILED, &nfit_spa->ars_state); in __acpi_nfit_scrub()
3006 struct nfit_spa *nfit_spa) in acpi_nfit_init_ars() argument
3008 int type = nfit_spa_type(nfit_spa->spa); in acpi_nfit_init_ars()
3013 rc = ars_get_cap(acpi_desc, &ars_cap, nfit_spa); in acpi_nfit_init_ars()
3024 nfit_spa->max_ars = ars_cap.max_ars_out; in acpi_nfit_init_ars()
3025 nfit_spa->clear_err_unit = ars_cap.clear_err_unit; in acpi_nfit_init_ars()
3026 acpi_desc->max_ars = max(nfit_spa->max_ars, acpi_desc->max_ars); in acpi_nfit_init_ars()
3027 clear_bit(ARS_FAILED, &nfit_spa->ars_state); in acpi_nfit_init_ars()
3028 set_bit(ARS_REQ, &nfit_spa->ars_state); in acpi_nfit_init_ars()
3033 struct nfit_spa *nfit_spa; in acpi_nfit_register_regions() local
3036 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) { in acpi_nfit_register_regions()
3037 set_bit(ARS_FAILED, &nfit_spa->ars_state); in acpi_nfit_register_regions()
3038 switch (nfit_spa_type(nfit_spa->spa)) { in acpi_nfit_register_regions()
3041 acpi_nfit_init_ars(acpi_desc, nfit_spa); in acpi_nfit_register_regions()
3054 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) in acpi_nfit_register_regions()
3055 switch (nfit_spa_type(nfit_spa->spa)) { in acpi_nfit_register_regions()
3059 rc = ars_register(acpi_desc, nfit_spa, &query_rc); in acpi_nfit_register_regions()
3072 rc = acpi_nfit_register_region(acpi_desc, nfit_spa); in acpi_nfit_register_regions()
3258 struct nfit_spa *nfit_spa; in acpi_nfit_ars_rescan() local
3266 list_for_each_entry(nfit_spa, &acpi_desc->spas, list) { in acpi_nfit_ars_rescan()
3267 int type = nfit_spa_type(nfit_spa->spa); in acpi_nfit_ars_rescan()
3271 if (test_bit(ARS_FAILED, &nfit_spa->ars_state)) in acpi_nfit_ars_rescan()
3274 if (test_and_set_bit(ARS_REQ, &nfit_spa->ars_state)) { in acpi_nfit_ars_rescan()
3276 set_bit(ARS_REQ_REDO, &nfit_spa->ars_state); in acpi_nfit_ars_rescan()
3279 set_bit(ARS_SHORT, &nfit_spa->ars_state); in acpi_nfit_ars_rescan()