Lines Matching refs:pci

34 	struct edac_pci_ctl_info *pci;  in edac_pci_alloc_ctl_info()  local
40 pci = edac_align_ptr(&p, sizeof(*pci), 1); in edac_pci_alloc_ctl_info()
45 pci = kzalloc(size, GFP_KERNEL); in edac_pci_alloc_ctl_info()
46 if (pci == NULL) in edac_pci_alloc_ctl_info()
50 pvt = sz_pvt ? ((char *)pci) + ((unsigned long)pvt) : NULL; in edac_pci_alloc_ctl_info()
52 pci->pvt_info = pvt; in edac_pci_alloc_ctl_info()
53 pci->op_state = OP_ALLOC; in edac_pci_alloc_ctl_info()
55 snprintf(pci->name, strlen(edac_pci_name) + 1, "%s", edac_pci_name); in edac_pci_alloc_ctl_info()
57 return pci; in edac_pci_alloc_ctl_info()
61 void edac_pci_free_ctl_info(struct edac_pci_ctl_info *pci) in edac_pci_free_ctl_info() argument
65 edac_pci_remove_sysfs(pci); in edac_pci_free_ctl_info()
77 struct edac_pci_ctl_info *pci; in find_edac_pci_by_dev() local
83 pci = list_entry(item, struct edac_pci_ctl_info, link); in find_edac_pci_by_dev()
85 if (pci->dev == dev) in find_edac_pci_by_dev()
86 return pci; in find_edac_pci_by_dev()
100 static int add_edac_pci_to_global_list(struct edac_pci_ctl_info *pci) in add_edac_pci_to_global_list() argument
110 rover = find_edac_pci_by_dev(pci->dev); in add_edac_pci_to_global_list()
118 if (rover->pci_idx >= pci->pci_idx) { in add_edac_pci_to_global_list()
119 if (unlikely(rover->pci_idx == pci->pci_idx)) in add_edac_pci_to_global_list()
127 list_add_tail_rcu(&pci->link, insert_before); in add_edac_pci_to_global_list()
150 static void del_edac_pci_from_global_list(struct edac_pci_ctl_info *pci) in del_edac_pci_from_global_list() argument
152 list_del_rcu(&pci->link); in del_edac_pci_from_global_list()
158 INIT_LIST_HEAD(&pci->link); in del_edac_pci_from_global_list()
170 struct edac_pci_ctl_info *pci = to_edac_pci_ctl_work(d_work); in edac_pci_workq_function() local
178 if (pci->op_state != OP_RUNNING_POLL) { in edac_pci_workq_function()
184 pci->edac_check(pci); in edac_pci_workq_function()
193 edac_queue_work(&pci->work, delay); in edac_pci_workq_function()
204 int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx) in edac_pci_add_device() argument
208 pci->pci_idx = edac_idx; in edac_pci_add_device()
209 pci->start_time = jiffies; in edac_pci_add_device()
213 if (add_edac_pci_to_global_list(pci)) in edac_pci_add_device()
216 if (edac_pci_create_sysfs(pci)) { in edac_pci_add_device()
217 edac_pci_printk(pci, KERN_WARNING, in edac_pci_add_device()
222 if (pci->edac_check) { in edac_pci_add_device()
223 pci->op_state = OP_RUNNING_POLL; in edac_pci_add_device()
225 INIT_DELAYED_WORK(&pci->work, edac_pci_workq_function); in edac_pci_add_device()
226 edac_queue_work(&pci->work, msecs_to_jiffies(edac_pci_get_poll_msec())); in edac_pci_add_device()
229 pci->op_state = OP_RUNNING_INTERRUPT; in edac_pci_add_device()
232 edac_pci_printk(pci, KERN_INFO, in edac_pci_add_device()
234 pci->mod_name, pci->ctl_name, pci->dev_name, in edac_pci_add_device()
235 edac_op_state_to_string(pci->op_state)); in edac_pci_add_device()
242 del_edac_pci_from_global_list(pci); in edac_pci_add_device()
251 struct edac_pci_ctl_info *pci; in edac_pci_del_device() local
260 pci = find_edac_pci_by_dev(dev); in edac_pci_del_device()
261 if (pci == NULL) { in edac_pci_del_device()
266 pci->op_state = OP_OFFLINE; in edac_pci_del_device()
268 del_edac_pci_from_global_list(pci); in edac_pci_del_device()
272 if (pci->edac_check) in edac_pci_del_device()
273 edac_stop_work(&pci->work); in edac_pci_del_device()
277 pci->pci_idx, pci->mod_name, pci->ctl_name, edac_dev_name(pci)); in edac_pci_del_device()
279 return pci; in edac_pci_del_device()
288 static void edac_pci_generic_check(struct edac_pci_ctl_info *pci) in edac_pci_generic_check() argument
305 struct edac_pci_ctl_info *pci; in edac_pci_create_generic_ctl() local
308 pci = edac_pci_alloc_ctl_info(sizeof(*pdata), EDAC_PCI_GENCTL_NAME); in edac_pci_create_generic_ctl()
309 if (!pci) in edac_pci_create_generic_ctl()
312 pdata = pci->pvt_info; in edac_pci_create_generic_ctl()
313 pci->dev = dev; in edac_pci_create_generic_ctl()
314 dev_set_drvdata(pci->dev, pci); in edac_pci_create_generic_ctl()
315 pci->dev_name = pci_name(to_pci_dev(dev)); in edac_pci_create_generic_ctl()
317 pci->mod_name = mod_name; in edac_pci_create_generic_ctl()
318 pci->ctl_name = EDAC_PCI_GENCTL_NAME; in edac_pci_create_generic_ctl()
320 pci->edac_check = edac_pci_generic_check; in edac_pci_create_generic_ctl()
324 if (edac_pci_add_device(pci, pdata->edac_idx) > 0) { in edac_pci_create_generic_ctl()
326 edac_pci_free_ctl_info(pci); in edac_pci_create_generic_ctl()
330 return pci; in edac_pci_create_generic_ctl()
334 void edac_pci_release_generic_ctl(struct edac_pci_ctl_info *pci) in edac_pci_release_generic_ctl() argument
336 edac_dbg(0, "pci mod=%s\n", pci->mod_name); in edac_pci_release_generic_ctl()
338 edac_pci_del_device(pci->dev); in edac_pci_release_generic_ctl()
339 edac_pci_free_ctl_info(pci); in edac_pci_release_generic_ctl()