Re: [PATCH 0/3] Add API for weak DMA masks

From: Michael Buesch
Date: Thu May 01 2008 - 11:43:00 EST


On Thursday 01 May 2008 17:36:18 Christoph Hellwig wrote:
> On Thu, May 01, 2008 at 04:38:15PM +0200, Michael Buesch wrote:
> > This patchset adds API and one user for a "weak" dma_set_mask().
> > Weak means that it will fallback to smaller masks in case the
> > DMA subsystem rejects a big mask.
> > Currently such rejection may happen if the driver requests a 64bit
> > mask on a VIA machine, for example. dma_set_mask_weak() will fallback
> > to 32bit, in that case, and tell the caller about it by modifying the
> > passed mask.
>
> Why do we need it? Is the call to set the 32bit mask when it fails
> a too big burden for the driver author?

Yeah. because it has to be done in every driver.
So we put the implementation into a central place, instead of
reimplementing the wheel over and over again. This way we avoid bugs,
like the "b43 broken on VIA boards" in the first place.
Currently every driver requesting a >32bit mask and not retrying with
a lower mask is broken on VIA hardware. I dunno how many of the current
drivers that are, but everybody can easily see that is not a b43-specific
problem that we should solve for b43 only.

--
Greetings Michael.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/