Lines Matching refs:pci

44 	struct edac_pci_ctl_info *pci;
50 pci = (struct edac_pci_ctl_info *)0;
51 pvt = edac_align_ptr(&pci[1], sz_pvt);
55 pci = kzalloc(size, GFP_KERNEL);
56 if (pci == NULL)
60 pvt = sz_pvt ? ((char *)pci) + ((unsigned long)pvt) : NULL;
62 pci->pvt_info = pvt;
63 pci->op_state = OP_ALLOC;
65 snprintf(pci->name, strlen(edac_pci_name) + 1, "%s", edac_pci_name);
67 return pci;
74 * Last action on the pci control structure.
81 void edac_pci_free_ctl_info(struct edac_pci_ctl_info *pci)
85 edac_pci_remove_sysfs(pci);
97 struct edac_pci_ctl_info *pci;
103 pci = list_entry(item, struct edac_pci_ctl_info, link);
105 if (pci->dev == dev)
106 return pci;
120 static int add_edac_pci_to_global_list(struct edac_pci_ctl_info *pci)
130 rover = find_edac_pci_by_dev(pci->dev);
138 if (rover->pci_idx >= pci->pci_idx) {
139 if (unlikely(rover->pci_idx == pci->pci_idx))
147 list_add_tail_rcu(&pci->link, insert_before);
170 static void del_edac_pci_from_global_list(struct edac_pci_ctl_info *pci)
172 list_del_rcu(&pci->link);
178 INIT_LIST_HEAD(&pci->link);
196 struct edac_pci_ctl_info *pci;
200 pci = list_entry(item, struct edac_pci_ctl_info, link);
202 if (pci->pci_idx >= idx) {
203 if (pci->pci_idx == idx)
204 return pci;
225 struct edac_pci_ctl_info *pci = to_edac_pci_ctl_work(d_work);
233 if (pci->op_state == OP_RUNNING_POLL) {
236 if ((pci->edac_check != NULL) && edac_pci_get_check_errors())
237 pci->edac_check(pci);
247 queue_delayed_work(edac_workqueue, &pci->work, delay);
261 static void edac_pci_workq_setup(struct edac_pci_ctl_info *pci,
266 INIT_DELAYED_WORK(&pci->work, edac_pci_workq_function);
267 queue_delayed_work(edac_workqueue, &pci->work,
275 static void edac_pci_workq_teardown(struct edac_pci_ctl_info *pci)
281 status = cancel_delayed_work(&pci->work);
293 void edac_pci_reset_delay_period(struct edac_pci_ctl_info *pci,
298 edac_pci_workq_teardown(pci);
303 edac_pci_workq_setup(pci, value);
326 * @pci: pointer to the edac_device structure to be added to the list
334 int edac_pci_add_device(struct edac_pci_ctl_info *pci, int edac_idx)
338 pci->pci_idx = edac_idx;
339 pci->start_time = jiffies;
343 if (add_edac_pci_to_global_list(pci))
346 if (edac_pci_create_sysfs(pci)) {
347 edac_pci_printk(pci, KERN_WARNING,
348 "failed to create sysfs pci\n");
352 if (pci->edac_check != NULL) {
353 pci->op_state = OP_RUNNING_POLL;
355 edac_pci_workq_setup(pci, 1000);
357 pci->op_state = OP_RUNNING_INTERRUPT;
360 edac_pci_printk(pci, KERN_INFO,
363 pci->mod_name,
364 pci->ctl_name,
365 edac_dev_name(pci), edac_op_state_to_string(pci->op_state));
372 del_edac_pci_from_global_list(pci);
394 struct edac_pci_ctl_info *pci;
403 pci = find_edac_pci_by_dev(dev);
404 if (pci == NULL) {
409 pci->op_state = OP_OFFLINE;
411 del_edac_pci_from_global_list(pci);
416 edac_pci_workq_teardown(pci);
420 pci->pci_idx, pci->mod_name, pci->ctl_name, edac_dev_name(pci));
422 return pci;
431 static void edac_pci_generic_check(struct edac_pci_ctl_info *pci)
459 struct edac_pci_ctl_info *pci;
462 pci = edac_pci_alloc_ctl_info(sizeof(*pdata), EDAC_PCI_GENCTL_NAME);
463 if (!pci)
466 pdata = pci->pvt_info;
467 pci->dev = dev;
468 dev_set_drvdata(pci->dev, pci);
469 pci->dev_name = pci_name(to_pci_dev(dev));
471 pci->mod_name = mod_name;
472 pci->ctl_name = EDAC_PCI_GENCTL_NAME;
473 pci->edac_check = edac_pci_generic_check;
477 if (edac_pci_add_device(pci, pdata->edac_idx) > 0) {
479 edac_pci_free_ctl_info(pci);
483 return pci;
492 void edac_pci_release_generic_ctl(struct edac_pci_ctl_info *pci)
494 debugf0("%s() pci mod=%s\n", __func__, pci->mod_name);
496 edac_pci_del_device(pci->dev);
497 edac_pci_free_ctl_info(pci);