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