From: "John Stoffel" <john@stoffel.org>
To: Daniel J Blueman <daniel.blueman@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>, Joerg Roedel <joro@8bytes.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
John Stoffel <john@stoffel.org>
Subject: Re: [2.6.35-rc5] select useful number of entries for DMA debugging v3...
Date: Tue, 13 Jul 2010 10:39:06 -0400 [thread overview]
Message-ID: <19516.31370.717799.659547@stoffel.org> (raw)
In-Reply-To: <AANLkTik8ayaGvOHfjATDGl2vLjToLFgnFvKtcXcMK9RD@mail.gmail.com>
Daniel> Signed-off-by: Daniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: John Stoffel <john@stoffel.org>
>>
Daniel> diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
Daniel> index a4ac764..0766fcf 100644
Daniel> --- a/arch/x86/kernel/pci-dma.c
Daniel> +++ b/arch/x86/kernel/pci-dma.c
Daniel> @@ -52,7 +52,7 @@ struct device x86_dma_fallback_dev = {
Daniel> EXPORT_SYMBOL(x86_dma_fallback_dev);
>>
Daniel> /* Number of entries preallocated for DMA-API debugging */
Daniel> -#define PREALLOC_DMA_DEBUG_ENTRIES 32768
Daniel> +#define PREALLOC_DMA_DEBUG_ENTRIES 65536
>>
Daniel> int dma_set_mask(struct device *dev, u64 mask)
Daniel> {
Daniel> diff --git a/lib/dma-debug.c b/lib/dma-debug.c
Daniel> index ba8b670..2d1f965 100644
Daniel> --- a/lib/dma-debug.c
Daniel> +++ b/lib/dma-debug.c
Daniel> @@ -736,6 +736,10 @@ void dma_debug_init(u32 num_entries)
>>
Daniel> if (req_entries)
Daniel> num_entries = req_entries;
Daniel> + else
Daniel> + /* for systems with less memory, limit to a proportional amount of memory */
Daniel> + /* eg 1GB memory, 4KB pages ~ 37600 entries */
Daniel> + num_entries = min(num_entries, (unsigned int)(totalram_pages >>
Daniel> (PAGE_SHIFT - 10)));
>>
Daniel> if (prealloc_memory(num_entries) != 0) {
Daniel> pr_err("DMA-API: debugging out of memory error - disabled\n");
>>
>> Maybe you could update this to mention the kernel parameter
>> "dma_debug_entries=xxxxx" so that people could use to increase this
>> value? It would make it simpler and easier to find it it's logged
>> nicely?
Daniel> Good comment. Fixed checkpatch compliance and rediffed against
Daniel> 2.6.35-rc5. Linus/Ingo - is this more acceptable?
Daniel> ---
Daniel> When booting 2.6.35-rc3 on some different x86 boxes with DMA debugging
Daniel> enabled, I've seen consistent exhaustion of the allocated entries during
Daniel> boot, giving 'DMA-API: debugging out of memory - disabling'.
Daniel> Increase the default number of entries to allow DMA debugging again, but
Daniel> assign a reasonable lower limit for systems with less memory (eg ~38000
Daniel> entries on a 1GB system), to prevent excessive use.
Daniel> Signed-off-by: Daniel J Blueman <daniel.blueman@gmail.com>
Daniel> diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
Daniel> index 4b7e3d8..5ff7f12 100644
Daniel> --- a/arch/x86/kernel/pci-dma.c
Daniel> +++ b/arch/x86/kernel/pci-dma.c
Daniel> @@ -53,7 +53,7 @@ struct device x86_dma_fallback_dev = {
Daniel> EXPORT_SYMBOL(x86_dma_fallback_dev);
Daniel> /* Number of entries preallocated for DMA-API debugging */
Daniel> -#define PREALLOC_DMA_DEBUG_ENTRIES 32768
Daniel> +#define PREALLOC_DMA_DEBUG_ENTRIES 65536
Daniel> int dma_set_mask(struct device *dev, u64 mask)
Daniel> {
Daniel> diff --git a/lib/dma-debug.c b/lib/dma-debug.c
Daniel> index 01e6427..b689ac7 100644
Daniel> --- a/lib/dma-debug.c
Daniel> +++ b/lib/dma-debug.c
Daniel> @@ -487,7 +487,8 @@ static int prealloc_memory(u32 num_entries)
Daniel> num_free_entries = num_entries;
Daniel> min_free_entries = num_entries;
Daniel> - pr_info("DMA-API: preallocated %d debug entries\n", num_entries);
Daniel> + pr_info("DMA-API: preallocated %d debug entries; boot with "
Daniel> + "dma_debug_entries=N to change\n", num_entries);
Daniel> return 0;
Daniel> @@ -736,6 +737,13 @@ void dma_debug_init(u32 num_entries)
Daniel> if (req_entries)
Daniel> num_entries = req_entries;
Daniel> + else
Daniel> + /*
Daniel> + * For systems with less memory, limit to a proportional
Daniel> + * amount of memory, eg 1GB memory, 4KB pages ~ 38000 entries
Daniel> + */
Daniel> + num_entries = min(num_entries,
Daniel> + (unsigned int)(totalram_pages >> (PAGE_SHIFT - 10)));
Daniel> if (prealloc_memory(num_entries) != 0) {
Daniel> pr_err("DMA-API: debugging out of memory error - disabled\n");
Daniel> --
Daniel> Daniel J Blueman
prev parent reply other threads:[~2010-07-13 14:39 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-13 14:11 Daniel J Blueman
2010-07-13 14:39 ` John Stoffel [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=19516.31370.717799.659547@stoffel.org \
--to=john@stoffel.org \
--cc=daniel.blueman@gmail.com \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=torvalds@linux-foundation.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®