I don't really follow, but waiting a few ms and trying again sounds likeRight, I should add code to handle this error condition. I think it can bestruct dmc620_pmu {It looks like this can bubble up to the probe() routine. Does the driver
@@ -423,9 +424,14 @@ static struct dmc620_pmu_irq *__dmc620_pmu_get_irq(int irq_num)
struct dmc620_pmu_irq *irq;
int ret;
- list_for_each_entry(irq, &dmc620_pmu_irqs, irqs_node)
- if (irq->irq_num == irq_num && refcount_inc_not_zero(&irq->refcount))
+ list_for_each_entry(irq, &dmc620_pmu_irqs, irqs_node) {
+ if (irq->irq_num != irq_num)
+ continue;
+ if (!irq->valid)
+ return ERR_PTR(-EAGAIN); /* Try again later */
core handle -EAGAIN coming back from a probe routine?
handled in dmc620_pmu_get_irq(). The important thing is to release the
mutex, wait a few ms and try again. What do you think?
a really nasty hack for something which doesn't appear to be constrained
by broken hardware. In other words, we got ourselves into this mess, so
we should be able to resolve it properly.