mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Pierre Ossman <drzeus-mmc@drzeus.cx>
To: Bryan Wu <cooloney@kernel.org>
Cc: linux-kernel@vger.kernel.org, Cliff Cai <cliff.cai@analog.com>,
	Bryan Wu <cooloney@kernel.org>
Subject: Re: [PATCH] mmc: align data size for host which only supports power-of-2 block
Date: Sat, 14 Mar 2009 21:30:38 +0100	[thread overview]
Message-ID: <20090314213038.4d14526e@mjolnir.ossman.eu> (raw)
In-Reply-To: <1236309321-23955-1-git-send-email-cooloney@kernel.org>

On Fri,  6 Mar 2009 11:15:21 +0800
Bryan Wu <cooloney@kernel.org> wrote:

> From: Cliff Cai <cliff.cai@analog.com>
> 
> Signed-off-by: Cliff Cai <cliff.cai@analog.com>
> Signed-off-by: Bryan Wu <cooloney@kernel.org>
> ---

This patch seems premature as there is no associated modification of
any of the host drivers.

>  drivers/mmc/core/core.c  |    8 +++++++-
>  include/linux/mmc/host.h |    1 +
>  2 files changed, 8 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index df6ce4a..15119df 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -321,7 +321,13 @@ unsigned int mmc_align_data_size(struct mmc_card *card, unsigned int sz)
>  	 * the core about its problems yet, so for now we just 32-bit
>  	 * align the size.
>  	 */
> -	sz = ((sz + 3) / 4) * 4;
> +
> +	/* Align size for host which only supports power-of-2 block */
> +	if (card->host->powerof2_block) {
> +		if (sz & (sz - 1))
> +			sz = 1 << fls(sz);
> +	} else
> +		sz = ((sz + 3) / 4) * 4;
>  
>  	return sz;
>  }

At the very least, the comment at the top of this function must go. But
really, if we want to improve this we should probably do it properly
and have flags for the different limitations that are available.

Padding to a power of two size can also mean a rather large padding. We
might need to check the host data limits after doing the adjustment.

> diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
> index 4e45725..7416ed1 100644
> --- a/include/linux/mmc/host.h
> +++ b/include/linux/mmc/host.h
> @@ -162,6 +162,7 @@ struct mmc_host {
>  	struct dentry		*debugfs_root;
>  
>  	unsigned long		private[0] ____cacheline_aligned;
> +	unsigned int		powerof2_block;	/* host only supports power-of-2 block */
>  };
>  
>  extern struct mmc_host *mmc_alloc_host(int extra, struct device *);

This is just broken. Putting it after private completely breaks
accesses to the host driver private data.

Also, there are a whole bunch of alignment issues that can occur. We
need some kind of flags field or a bitfield for this.

Rgds
-- 
     -- Pierre Ossman

  Linux kernel, MMC maintainer        http://www.kernel.org
  rdesktop, core developer          http://www.rdesktop.org

  WARNING: This correspondence is being monitored by the
  Swedish government. Make sure your server uses encryption
  for SMTP traffic and consider using PGP for end-to-end
  encryption.

  reply	other threads:[~2009-03-14 20:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-06  3:15 Bryan Wu
2009-03-14 20:30 ` Pierre Ossman [this message]
2009-03-25  3:22   ` Cai, Cliff
2009-03-25 19:23     ` Pierre Ossman
2009-03-26  2:22       ` Cai, Cliff
2009-04-05 19:09         ` Pierre Ossman
2009-04-07  8:34           ` Cai, Cliff
2009-04-10 21:01             ` Pierre Ossman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090314213038.4d14526e@mjolnir.ossman.eu \
    --to=drzeus-mmc@drzeus.cx \
    --cc=cliff.cai@analog.com \
    --cc=cooloney@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®