Lines Matching +full:x +full:- +full:rc

1 // SPDX-License-Identifier: GPL-2.0
7 #define pr_fmt(fmt) "pseries-pmem: " fmt
33 int rc; in pmem_drc_add_node() local
35 pr_debug("Attempting to add pmem node, drc index: %x\n", drc_index); in pmem_drc_add_node()
37 rc = dlpar_acquire_drc(drc_index); in pmem_drc_add_node()
38 if (rc) { in pmem_drc_add_node()
39 pr_err("Failed to acquire DRC, rc: %d, drc index: %x\n", in pmem_drc_add_node()
40 rc, drc_index); in pmem_drc_add_node()
41 return -EINVAL; in pmem_drc_add_node()
46 pr_err("configure-connector failed for drc %x\n", drc_index); in pmem_drc_add_node()
48 return -EINVAL; in pmem_drc_add_node()
52 rc = dlpar_attach_node(dn, pmem_node); in pmem_drc_add_node()
53 if (rc) { in pmem_drc_add_node()
54 pr_err("Failed to attach node %pOF, rc: %d, drc index: %x\n", in pmem_drc_add_node()
55 dn, rc, drc_index); in pmem_drc_add_node()
60 return rc; in pmem_drc_add_node()
63 pr_info("Successfully added %pOF, drc index: %x\n", dn, drc_index); in pmem_drc_add_node()
72 int rc; in pmem_drc_remove_node() local
75 if (of_property_read_u32(dn, "ibm,my-drc-index", &index)) in pmem_drc_remove_node()
82 pr_err("Attempting to remove unused DRC index %x\n", drc_index); in pmem_drc_remove_node()
83 return -ENODEV; in pmem_drc_remove_node()
86 pr_debug("Attempting to remove %pOF, drc index: %x\n", dn, drc_index); in pmem_drc_remove_node()
88 /* * NB: tears down the ibm,pmemory device as a side-effect */ in pmem_drc_remove_node()
89 rc = dlpar_detach_node(dn); in pmem_drc_remove_node()
90 if (rc) in pmem_drc_remove_node()
91 return rc; in pmem_drc_remove_node()
93 rc = dlpar_release_drc(drc_index); in pmem_drc_remove_node()
94 if (rc) { in pmem_drc_remove_node()
95 pr_err("Failed to release drc (%x) for CPU %pOFn, rc: %d\n", in pmem_drc_remove_node()
96 drc_index, dn, rc); in pmem_drc_remove_node()
98 return rc; in pmem_drc_remove_node()
101 pr_info("Successfully removed PMEM with drc index: %x\n", drc_index); in pmem_drc_remove_node()
109 int rc; in dlpar_hp_pmem() local
113 pmem_node = of_find_node_by_type(NULL, "ibm,persistent-memory"); in dlpar_hp_pmem()
116 return -ENODEV; in dlpar_hp_pmem()
119 if (hp_elog->id_type != PSERIES_HP_ELOG_ID_DRC_INDEX) { in dlpar_hp_pmem()
121 hp_elog->id_type); in dlpar_hp_pmem()
122 return -EINVAL; in dlpar_hp_pmem()
125 drc_index = hp_elog->_drc_u.drc_index; in dlpar_hp_pmem()
129 if (hp_elog->action == PSERIES_HP_ELOG_ACTION_ADD) { in dlpar_hp_pmem()
130 rc = pmem_drc_add_node(drc_index); in dlpar_hp_pmem()
131 } else if (hp_elog->action == PSERIES_HP_ELOG_ACTION_REMOVE) { in dlpar_hp_pmem()
132 rc = pmem_drc_remove_node(drc_index); in dlpar_hp_pmem()
134 pr_err("Unsupported hotplug action (%d)\n", hp_elog->action); in dlpar_hp_pmem()
135 rc = -EINVAL; in dlpar_hp_pmem()
139 return rc; in dlpar_hp_pmem()
143 { .type = "ibm,persistent-memory", },
155 pmem_node = of_find_node_by_type(NULL, "ibm,persistent-memory"); in pseries_pmem_init()
162 * reconfig notifier to handle the hot-add/remove cases too. in pseries_pmem_init()