Hi there FreeBSD guys, I am having some memory allocation woes in my FreeBSD kernel device driver. I allocate DMAable memory with something like:
retval = bus_dma_tag_create ( NULL, 4, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, (1 << 20), 1, (1 << 20), 0, &memtag ); retval = bus_dmamem_alloc ( memtag, (void **) &vaddr, BUS_DMA_WAITOK, &memmap ); retval = bus_dmamap_load ( memtag, memmap, vaddr, (1 << 20), my_callback, NULL, 0 ); which seems to succeed/work. But when I attempt to release the allocated memory like this: bus_dmamap_unload(memtag, memmap); bus_dmamem_free(memtag, (void *) vaddr, memmap); bus_dmamap_destroy(memtag, memmap); bus_dma_tag_destroy(memtag); The actual memory does not seem to get released. If I continually load and unload the driver, the physical addresses allocated keep increasing by the amount I am trying to allocate and never seem to get re-used. In addition, after enough load/unloads 'bus_dmamem_alloc' returns ENOMEM! So to mem it does not look like the deallocation incantation is actually releasing the allocated memory back to the system. Any ideas would be appreciated. Further information: Machine: P4 1.4 GHz 512MB memory OS: FreeBSD 4.5 Thank you. Greg. -- +------------------------------------------------------+ | Do you want to know more? www.geocities.com/worfsom/ | | ..ooOO Greg Johnson OOoo.. | | HW/SW Engineer [EMAIL PROTECTED] | | Canon Information Systems Research Australia (CISRA) | | 1 Thomas Holt Dr., North Ryde, NSW, 2113, Australia | | "I FLEXed my BISON and it went YACC!" - me. | +------------------------------------------------------+ To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message