lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
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