On Tue, 07 Aug 2007 18:20:26 +0100 David Vrabel <[EMAIL PROTECTED]> wrote:
> Pierre Ossman wrote: > > On Tue, 07 Aug 2007 13:54:32 +0100 > > David Vrabel <[EMAIL PROTECTED]> wrote: > > > >> > >> Index: mmc/drivers/mmc/core/sdio.c > >> =================================================================== > >> --- mmc.orig/drivers/mmc/core/sdio.c 2007-08-07 > >> 00:38:33.000000000 +0100 +++ mmc/drivers/mmc/core/sdio.c > >> 2007-08-07 07:17:29.000000000 +0100 @@ -53,6 +53,7 @@ > >> { > >> int ret; > >> struct sdio_func *func; > >> + unsigned block_size; > >> > >> BUG_ON(fn > SDIO_MAX_FUNCS); > >> > >> @@ -70,6 +71,15 @@ > >> if (ret) > >> goto fail; > >> > >> + /* > >> + * Set the function's block size to the largest supported > >> by > >> + * both the function and the host. > >> + */ > >> + block_size = min(func->max_blksize, > >> func->card->host->max_blk_size); > >> + ret = sdio_set_block_size(func, block_size); > >> + if (ret) > >> + goto fail; > >> + > >> card->sdio_func[fn - 1] = func; > >> > >> return 0; > > > > This is probably better done in the sdio_enable_func(). > > I don't think so. A driver might enable/disable a function multiple > times but there's no need to set the block size every time. > Why would it want to do that? Anyway, as long as cur_blksz is preserved, sdio_set_block_size() can easily filter out redundant calls. No need to compromise in the rest of the code for that. In the patch I sent, the block size is set the first time is needed. Wouldn't that avoid all problems? > It may be best to move setting the block size back to before the probe > so a driver can be sure the block size is something sensible. > Consider a failed probe that called sdio_set_block_size() -- this > will currently mess up drivers probed later. > Right, or remove the lock in the variant I proposed. Rgds -- -- Pierre Ossman Linux kernel, MMC maintainer http://www.kernel.org PulseAudio, core developer http://pulseaudio.org rdesktop, core developer http://www.rdesktop.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/