8031612d7f
With CONFIG_DMA_API_DEBUG=y bnx2x triggers the error "DMA-API: device
driver frees DMA memory with wrong function".
On archs where PAGE_SIZE > SGE_PAGE_SIZE it also triggers "DMA-API:
device driver frees DMA memory with different size".
Fix this by making the mapping and unmapping symmetric:
- Do not map the whole pool page at once. Instead map the
SGE_PAGE_SIZE-sized pieces individually, so they can be unmapped in
the same manner.
- What's mapped using dma_map_page() must be unmapped using
dma_unmap_page().
Tested on ppc64.
Fixes:
|
||
---|---|---|
.. | ||
bnx2x_cmn.c | ||
bnx2x_cmn.h | ||
bnx2x_dcb.c | ||
bnx2x_dcb.h | ||
bnx2x_dump.h | ||
bnx2x_ethtool.c | ||
bnx2x_fw_defs.h | ||
bnx2x_fw_file_hdr.h | ||
bnx2x_hsi.h | ||
bnx2x_init_ops.h | ||
bnx2x_init.h | ||
bnx2x_link.c | ||
bnx2x_link.h | ||
bnx2x_main.c | ||
bnx2x_mfw_req.h | ||
bnx2x_reg.h | ||
bnx2x_sp.c | ||
bnx2x_sp.h | ||
bnx2x_sriov.c | ||
bnx2x_sriov.h | ||
bnx2x_stats.c | ||
bnx2x_stats.h | ||
bnx2x_vfpf.c | ||
bnx2x_vfpf.h | ||
bnx2x.h | ||
Makefile |