Messages in this thread | | | From | Jassi Brar <> | Date | Fri, 17 Nov 2017 18:10:41 +0530 | Subject | Re: [PATCH] mailbox: txdone_method shouldn't always be reset |
| |
On Fri, Nov 17, 2017 at 12:34 PM, Bjorn Andersson <bjorn.andersson@linaro.org> wrote: > On Thu 16 Nov 22:47 PST 2017, Jassi Brar wrote: >> On 16 Nov 2017 23:12, "Bjorn Andersson" <bjorn.andersson@linaro.org> wrote: >> On Thu 16 Nov 09:06 PST 2017, Jassi Brar wrote: >> > diff --git a/drivers/mailbox/mailbox.c b/drivers/mailbox/mailbox.c >> > index 674b35f..95e480e 100644 >> > --- a/drivers/mailbox/mailbox.c >> > +++ b/drivers/mailbox/mailbox.c >> > @@ -124,7 +124,8 @@ static enum hrtimer_restart txdone_hrtimer(struct >> > hrtimer *hrtimer) >> > for (i = 0; i < mbox->num_chans; i++) { >> > struct mbox_chan *chan = &mbox->chans[i]; >> > >> > - if (chan->active_req && chan->cl) { >> > + if (chan->active_req && chan->cl && >> > + chan->txdone_method == TXDONE_BY_POLL) { >> >> The hrtimer code will crash before reaching this point if the channel >> wasn't TXDONE_BY_POLL when it was created, so this part is not needed. >> >> >> We have one timer for all channels of a controller. While this channel may >> be run by ACK, some other might need to be POLLed. And we want to avoid >> polling this channel. >> > > Oh, you're right. > > But the fact that the timer function will poll channels that are > "upgraded" to ACK is a separate issue. > After adding that extra check, the timer function never polls such a channel.
thnx
| |