From cd12dbe89814861db12480fa250d9ee570701751 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Sun, 7 Oct 2012 12:53:42 +0800 Subject: [PATCH] busdma: Panic if the kmalloc_powerof2() fails to meet the dma requirement --- sys/platform/pc32/i386/busdma_machdep.c | 12 ++++++------ sys/platform/pc64/x86_64/busdma_machdep.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/platform/pc32/i386/busdma_machdep.c b/sys/platform/pc32/i386/busdma_machdep.c index 35be77b5fb..ae451fb6d1 100644 --- a/sys/platform/pc32/i386/busdma_machdep.c +++ b/sys/platform/pc32/i386/busdma_machdep.c @@ -511,17 +511,17 @@ check_kmalloc(bus_dma_tag_t dmat, const void *vaddr0, int verify) uintptr_t vaddr = (uintptr_t)vaddr0; if ((vaddr ^ (vaddr + dmat->maxsize - 1)) & ~PAGE_MASK) { - if (verify || bootverbose) - kprintf("boundary check failed\n"); if (verify) - print_backtrace(-1); /* XXX panic */ + panic("boundary check failed\n"); + if (bootverbose) + kprintf("boundary check failed\n"); maxsize = dmat->maxsize; } if (vaddr & (dmat->alignment - 1)) { - if (verify || bootverbose) - kprintf("alignment check failed\n"); if (verify) - print_backtrace(-1); /* XXX panic */ + panic("alignment check failed\n"); + if (bootverbose) + kprintf("alignment check failed\n"); if (dmat->maxsize < dmat->alignment) maxsize = dmat->alignment; else diff --git a/sys/platform/pc64/x86_64/busdma_machdep.c b/sys/platform/pc64/x86_64/busdma_machdep.c index 151f9bf8ce..3a68b4229a 100644 --- a/sys/platform/pc64/x86_64/busdma_machdep.c +++ b/sys/platform/pc64/x86_64/busdma_machdep.c @@ -511,17 +511,17 @@ check_kmalloc(bus_dma_tag_t dmat, const void *vaddr0, int verify) uintptr_t vaddr = (uintptr_t)vaddr0; if ((vaddr ^ (vaddr + dmat->maxsize - 1)) & ~PAGE_MASK) { - if (verify || bootverbose) - kprintf("boundary check failed\n"); if (verify) - print_backtrace(-1); /* XXX panic */ + panic("boundary check failed\n"); + if (bootverbose) + kprintf("boundary check failed\n"); maxsize = dmat->maxsize; } if (vaddr & (dmat->alignment - 1)) { - if (verify || bootverbose) - kprintf("alignment check failed\n"); if (verify) - print_backtrace(-1); /* XXX panic */ + panic("alignment check failed\n"); + if (bootverbose) + kprintf("alignment check failed\n"); if (dmat->maxsize < dmat->alignment) maxsize = dmat->alignment; else -- 2.41.0