From: yshi <yang.shi@windriver.com>
To: Andrea Arcangeli <andrea@qumranet.com>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, kvm-devel@lists.sourceforge.net,
Jens Axboe <axboe@kernel.dk>
Subject: Re: regression breaks lowmem reserved RAM
Date: Tue, 01 Apr 2008 19:27:02 +0800 [thread overview]
Message-ID: <47F21C06.7070809@windriver.com> (raw)
In-Reply-To: <20080401105331.GH12427@duo.random>
Hi Andrea,
This patch works well on my machine. Thanks.
Best Regards,
Yang
Andrea Arcangeli ??:
> Looking a bit closer into this regression the reason this can't be
> right is that dma_addr common default is BLK_BOUNCE_HIGH and most
> machines have less than 4G. So if you do:
>
> if (b_pfn <= (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
> dma = 1
>
> that will translate to:
>
> if (BLK_BOUNCE_HIGH <= BLK_BOUNCE_HIGH)
> dma = 1
>
> So for 99% of hardware this will trigger unnecessary GFP_DMA
> allocations and isa pooling operations.
>
> Also note how the 32bit code still does b_pfn < blk_max_low_pfn.
>
> I guess this is what you were looking after. I didn't verify but as
> far as I can tell, this will stop the regression with isa dma
> operations at boot for 99% of blkdev/memory combinations out there and
> I guess this fixes the setups with >4G of ram and 32bit pci cards as
> well (this also retains symmetry with the 32bit code).
>
> Signed-off-by: Andrea Arcangeli <andrea@qumranet.com>
>
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index 1344a0e..5713f7e 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -140,7 +140,7 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_addr)
> /* Assume anything <= 4GB can be handled by IOMMU.
> Actually some IOMMUs can handle everything, but I don't
> know of a way to test this here. */
> - if (b_pfn <= (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
> + if (b_pfn < (min_t(u64, 0x100000000UL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
> dma = 1;
> q->bounce_pfn = max_low_pfn;
> #else
>
>
WARNING: multiple messages have this Message-ID (diff)
From: yshi <yang.shi@windriver.com>
To: Andrea Arcangeli <andrea@qumranet.com>
Cc: Andrew Morton <akpm@osdl.org>,
kvm-devel@lists.sourceforge.net, Jens Axboe <axboe@kernel.dk>,
linux-kernel@vger.kernel.org
Subject: Re: regression breaks lowmem reserved RAM
Date: Tue, 01 Apr 2008 19:27:02 +0800 [thread overview]
Message-ID: <47F21C06.7070809@windriver.com> (raw)
In-Reply-To: <20080401105331.GH12427@duo.random>
Hi Andrea,
This patch works well on my machine. Thanks.
Best Regards,
Yang
Andrea Arcangeli ??:
> Looking a bit closer into this regression the reason this can't be
> right is that dma_addr common default is BLK_BOUNCE_HIGH and most
> machines have less than 4G. So if you do:
>
> if (b_pfn <= (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
> dma = 1
>
> that will translate to:
>
> if (BLK_BOUNCE_HIGH <= BLK_BOUNCE_HIGH)
> dma = 1
>
> So for 99% of hardware this will trigger unnecessary GFP_DMA
> allocations and isa pooling operations.
>
> Also note how the 32bit code still does b_pfn < blk_max_low_pfn.
>
> I guess this is what you were looking after. I didn't verify but as
> far as I can tell, this will stop the regression with isa dma
> operations at boot for 99% of blkdev/memory combinations out there and
> I guess this fixes the setups with >4G of ram and 32bit pci cards as
> well (this also retains symmetry with the 32bit code).
>
> Signed-off-by: Andrea Arcangeli <andrea@qumranet.com>
>
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index 1344a0e..5713f7e 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -140,7 +140,7 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_addr)
> /* Assume anything <= 4GB can be handled by IOMMU.
> Actually some IOMMUs can handle everything, but I don't
> know of a way to test this here. */
> - if (b_pfn <= (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
> + if (b_pfn < (min_t(u64, 0x100000000UL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
> dma = 1;
> q->bounce_pfn = max_low_pfn;
> #else
>
>
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
next prev parent reply other threads:[~2008-04-01 11:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-28 19:49 regression breaks lowmem reserved RAM Andrea Arcangeli
2008-03-28 19:49 ` Andrea Arcangeli
2008-04-01 10:53 ` Andrea Arcangeli
2008-04-01 11:27 ` yshi [this message]
2008-04-01 11:27 ` yshi
2008-04-01 12:45 ` Jens Axboe
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=47F21C06.7070809@windriver.com \
--to=yang.shi@windriver.com \
--cc=akpm@osdl.org \
--cc=andrea@qumranet.com \
--cc=axboe@kernel.dk \
--cc=kvm-devel@lists.sourceforge.net \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.