mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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

      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®