Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jan 2008 18:02:13 +0100
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        current@freebsd.org
Subject:   BUS-DMA alignment check - false positives
Message-ID:  <200801271802.14312.hselasky@c2i.net>

next in thread | raw e-mail | index | archive | help
Hi,

When allocating DMA'able memory sometimes the virtual address can end up 
non-aligned, while the physical address is correctly aligned. The question is 
whether it is correct to mask the virtual address and not the physical 
address:

i386/i386/busdma_machdep.c

        } else if ((uintptr_t)*vaddr & (dmat->alignment - 1)) {
                printf("bus_dmamem_alloc failed to align memory properly.\n");
        }

When allocating 1<<15 bytes aligned at 1<<15 bytes.

bus_dmamem_alloc failed to align memory properly.
Physaddr=0x3e030000 rem=0x00000000

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801271802.14312.hselasky>