LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Yasunori Goto <y-goto@jp.fujitsu.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: axboe@kernel.dk, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Fix memory hotplug and bouncing in block layer
Date: Sat, 08 Mar 2008 14:33:45 +0900	[thread overview]
Message-ID: <20080308141539.0498.E1E9C6FF@jp.fujitsu.com> (raw)
In-Reply-To: <20080306204124.GA17154@basil.nowhere.org>


Oh, thanks for your fixing.

Acked-by: Yasunori Goto <y-goto@jp.fujitsu.com>


> Fix memory hotplug and bouncing in block layer
> 
> Only noticed this while hacking something else, no test case.
> 
> blk_max_low_pfn is initialized once at bootup by the block layer
> from max_low_pfn. But max_low_pfn is not necessarily constant
> over the runtime of the system when you consider memory hotplug.
> What could happen if that someone adds memory later the block
> layer wouldn't get updated and then start bouncing memory unnecessarily.
> 
> Also on 64bit blk_max_low_pfn actually isn't needed because
> it just disables bouncing essentially and there is no highmem.
> And nobody can pass pfns > max_low_pfn to the block layer, 
> because those wouldn't have a struct page and I suspect
> block layer wouldn't be very happy without that.
> 
> So set BLK_BOUNCE_HIGH to infinity (-1ULL) on 64bit. That
> avoids the problem of having to update it on memory hotadd.
> 
> On 32bit I kept the same behaviour because at least on i386
> memory hotadd only adds HIGHMEM, never lowmem.
> 
> BLK_BOUNCE_ANY is always set to infinity on both 32 and 64bit.
> 
> Signed-off-by: Andi Kleen <ak@suse.de>
> 
> ---
>  include/linux/blkdev.h |    7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> Index: linux/include/linux/blkdev.h
> ===================================================================
> --- linux.orig/include/linux/blkdev.h
> +++ linux/include/linux/blkdev.h
> @@ -532,8 +532,13 @@ extern unsigned long blk_max_low_pfn, bl
>   * BLK_BOUNCE_ANY	: don't bounce anything
>   * BLK_BOUNCE_ISA	: bounce pages above ISA DMA boundary
>   */
> +
> +#if BITS_PER_LONG == 32
>  #define BLK_BOUNCE_HIGH		((u64)blk_max_low_pfn << PAGE_SHIFT)
> -#define BLK_BOUNCE_ANY		((u64)blk_max_pfn << PAGE_SHIFT)
> +#else
> +#define BLK_BOUNCE_HIGH		-1ULL
> +#endif
> +#define BLK_BOUNCE_ANY		(-1ULL)
>  #define BLK_BOUNCE_ISA		(ISA_DMA_THRESHOLD)

-- 
Yasunori Goto 



      reply	other threads:[~2008-03-08  5:34 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-06 20:41 Andi Kleen
2008-03-08  5:33 ` Yasunori Goto [this message]

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=20080308141539.0498.E1E9C6FF@jp.fujitsu.com \
    --to=y-goto@jp.fujitsu.com \
    --cc=andi@firstfloor.org \
    --cc=axboe@kernel.dk \
    --cc=linux-kernel@vger.kernel.org \
    --subject='Re: [PATCH] Fix memory hotplug and bouncing in block layer' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).