Exemple #1
0
/**
 * aer_isr - consume errors detected by root port
 * @work: definition of this work item
 *
 * Invoked, as DPC, when root port records new detected error
 */
void aer_isr(struct work_struct *work)
{
    struct aer_rpc *rpc = container_of(work, struct aer_rpc, dpc_handler);
    struct pcie_device *p_device = rpc->rpd;
    struct aer_err_source *e_src;

    mutex_lock(&rpc->rpc_mutex);
    e_src = get_e_source(rpc);
    while (e_src) {
        aer_isr_one_error(p_device, e_src);
        e_src = get_e_source(rpc);
    }
    mutex_unlock(&rpc->rpc_mutex);

    wake_up(&rpc->wait_release);
}
Exemple #2
0
/**
 * aer_isr - consume errors detected by root port
 * @work: definition of this work item
 *
 * Invoked, as DPC, when root port records new detected error
 */
void aer_isr(struct work_struct *work)
{
	struct aer_rpc *rpc = container_of(work, struct aer_rpc, dpc_handler);
	struct pcie_device *p_device = rpc->rpd;
	struct aer_err_source uninitialized_var(e_src);

	mutex_lock(&rpc->rpc_mutex);
	while (get_e_source(rpc, &e_src))
		aer_isr_one_error(p_device, &e_src);
	mutex_unlock(&rpc->rpc_mutex);

	wake_up(&rpc->wait_release);
}