[alsa-devel] [PATCH] fm801: move to pcim_* and devm_* functions

Takashi Iwai tiwai at suse.de
Tue Jan 20 13:42:23 CET 2015


At Wed, 07 Jan 2015 15:59:35 +0100,
Takashi Iwai wrote:
> 
> At Wed, 7 Jan 2015 16:25:22 +0200,
> Andy Shevchenko wrote:
> > 
> > On Wed, Jan 7, 2015 at 3:57 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > > At Wed, 07 Jan 2015 14:43:41 +0100,
> > > Takashi Iwai wrote:
> > >>
> > >> At Wed, 7 Jan 2015 15:40:26 +0200,
> > >> Andy Shevchenko wrote:
> > >> >
> > >> > On Wed, Jan 7, 2015 at 3:31 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > >> > > At Wed, 7 Jan 2015 15:27:35 +0200,
> > >> > > Andy Shevchenko wrote:
> > >> >
> > >> > Regarding to the original patch, is it okay now to apply?
> > >>
> > >> Yes.  If you prefer, I can apply it first alone.
> > 
> > Why not? :)
> > 
> > >
> > > OK, I found that the regions are released in pcim_release().  So,
> > > there is no leak.
> > >
> > > Meanwhile it means that pci_release_regions() is superfluous, too,
> > > once when you enabled the managed mode via pcim_enable_device().
> > > Could you resubmit a v2 patch with that removal?
> > 
> > Within few hours together with the second patch. But if you can do
> > this as a fixup it would be nice.
> 
> OK, now applied this patch with a modification (removal of
> pci_release_regions()) to for-next branch.

I recalled finally why I didn't want this sort of changes.  Namely,
devm_request_irq() can't be used safely for the shared PCI
interrupts.

There is a small open window between the driver's remove call
(i.e. card's private_free or device free calls) and the call of
devres_release_all().  The registered irq handler still remains during
this window.  When an irq is triggered from another shared device
during this, it goes to the remaining irq handler and accesses the
hardware unexpectedly.  In the case of snd_fm801_interrupt(), it's not
too bad, though.


Takashi


More information about the Alsa-devel mailing list