Lines Matching refs:rpc
1169 static void aer_isr_one_error(struct aer_rpc *rpc, in aer_isr_one_error() argument
1172 struct pci_dev *pdev = rpc->rpd; in aer_isr_one_error()
1173 struct aer_err_info *e_info = &rpc->e_info; in aer_isr_one_error()
1224 static int get_e_source(struct aer_rpc *rpc, struct aer_err_source *e_src) in get_e_source() argument
1229 spin_lock_irqsave(&rpc->e_lock, flags); in get_e_source()
1230 if (rpc->prod_idx == rpc->cons_idx) { in get_e_source()
1231 spin_unlock_irqrestore(&rpc->e_lock, flags); in get_e_source()
1235 *e_src = rpc->e_sources[rpc->cons_idx]; in get_e_source()
1236 rpc->cons_idx++; in get_e_source()
1237 if (rpc->cons_idx == AER_ERROR_SOURCES_MAX) in get_e_source()
1238 rpc->cons_idx = 0; in get_e_source()
1239 spin_unlock_irqrestore(&rpc->e_lock, flags); in get_e_source()
1252 struct aer_rpc *rpc = container_of(work, struct aer_rpc, dpc_handler); in aer_isr() local
1255 mutex_lock(&rpc->rpc_mutex); in aer_isr()
1256 while (get_e_source(rpc, &e_src)) in aer_isr()
1257 aer_isr_one_error(rpc, &e_src); in aer_isr()
1258 mutex_unlock(&rpc->rpc_mutex); in aer_isr()
1272 struct aer_rpc *rpc = get_service_data(pdev); in aer_irq() local
1282 spin_lock_irqsave(&rpc->e_lock, flags); in aer_irq()
1287 spin_unlock_irqrestore(&rpc->e_lock, flags); in aer_irq()
1296 next_prod_idx = rpc->prod_idx + 1; in aer_irq()
1299 if (next_prod_idx == rpc->cons_idx) { in aer_irq()
1304 spin_unlock_irqrestore(&rpc->e_lock, flags); in aer_irq()
1307 rpc->e_sources[rpc->prod_idx].status = status; in aer_irq()
1308 rpc->e_sources[rpc->prod_idx].id = id; in aer_irq()
1309 rpc->prod_idx = next_prod_idx; in aer_irq()
1310 spin_unlock_irqrestore(&rpc->e_lock, flags); in aer_irq()
1313 schedule_work(&rpc->dpc_handler); in aer_irq()
1360 static void aer_enable_rootport(struct aer_rpc *rpc) in aer_enable_rootport() argument
1362 struct pci_dev *pdev = rpc->rpd; in aer_enable_rootport()
1402 static void aer_disable_rootport(struct aer_rpc *rpc) in aer_disable_rootport() argument
1404 struct pci_dev *pdev = rpc->rpd; in aer_disable_rootport()
1433 struct aer_rpc *rpc; in aer_alloc_rpc() local
1435 rpc = kzalloc(sizeof(struct aer_rpc), GFP_KERNEL); in aer_alloc_rpc()
1436 if (!rpc) in aer_alloc_rpc()
1440 spin_lock_init(&rpc->e_lock); in aer_alloc_rpc()
1442 rpc->rpd = dev->port; in aer_alloc_rpc()
1443 INIT_WORK(&rpc->dpc_handler, aer_isr); in aer_alloc_rpc()
1444 mutex_init(&rpc->rpc_mutex); in aer_alloc_rpc()
1447 set_service_data(dev, rpc); in aer_alloc_rpc()
1449 return rpc; in aer_alloc_rpc()
1460 struct aer_rpc *rpc = get_service_data(dev); in aer_remove() local
1462 if (rpc) { in aer_remove()
1464 if (rpc->isr) in aer_remove()
1467 flush_work(&rpc->dpc_handler); in aer_remove()
1468 aer_disable_rootport(rpc); in aer_remove()
1469 kfree(rpc); in aer_remove()
1483 struct aer_rpc *rpc; in aer_probe() local
1487 rpc = aer_alloc_rpc(dev); in aer_probe()
1488 if (!rpc) { in aer_probe()
1503 rpc->isr = 1; in aer_probe()
1505 aer_enable_rootport(rpc); in aer_probe()