[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <19516.31370.717799.659547@stoffel.org>
Date: Tue, 13 Jul 2010 10:39:06 -0400
From: "John Stoffel" <john@...ffel.org>
To: Daniel J Blueman <daniel.blueman@...il.com>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Ingo Molnar <mingo@...e.hu>, Joerg Roedel <joro@...tes.org>,
Linux Kernel <linux-kernel@...r.kernel.org>,
John Stoffel <john@...ffel.org>
Subject: Re: [2.6.35-rc5] select useful number of entries for DMA debugging
v3...
Daniel> Signed-off-by: Daniel J Blueman <daniel.blueman@...il.com>
Signed-off-by: John Stoffel <john@...ffel.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@...il.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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists