BUS-DMA alignment check - false positives

From: Hans Petter Selasky <hselasky_at_c2i.net>
Date: Sun, 27 Jan 2008 18:02:13 +0100
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
Received on Sun Jan 27 2008 - 17:01:26 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:26 UTC