[PATCH 0/3] UIO_MEM_DMA_COHERENT for cnic/bnx2/bnx2x

Chris Leech posted 3 patches 2 years, 2 months ago
There is a newer version of this series
drivers/net/ethernet/broadcom/bnx2.c          |  2 ++
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c  | 10 +++---
drivers/net/ethernet/broadcom/cnic.c          | 34 ++++++++++++-------
drivers/net/ethernet/broadcom/cnic.h          |  1 +
drivers/net/ethernet/broadcom/cnic_if.h       |  1 +
drivers/uio/uio.c                             | 34 +++++++++++++++++++
include/linux/uio_driver.h                    | 12 +++++--
7 files changed, 75 insertions(+), 19 deletions(-)
[PATCH 0/3] UIO_MEM_DMA_COHERENT for cnic/bnx2/bnx2x
Posted by Chris Leech 2 years, 2 months ago
During bnx2i iSCSI testing we ran into page refcounting issues in the
uio mmaps exported from cnic to the iscsiuio process, and bisected back
to the removal of the __GFP_COMP flag from dma_alloc_coherent calls.

In order to fix these drivers to be able to mmap dma coherent memory via
a uio device, without resorting to hacks and working with an iommu
enabled, introduce a new uio mmap type backed by dma_mmap_coherent.

While converting the uio interface, I also noticed that not all of these
allocations were PAGE_SIZE aligned. Particularly the bnx2/bnx2x status
block mapping was much smaller than any architecture page size, and I
was concerned that it could be unintentionally exposing kernel memory.

Chris Leech (3):
  uio: introduce UIO_DMA_COHERENT type
  cnic. bnx2, bnx2x: page align uio mmap allocations
  cnic, bnx2, bnx2x: use UIO_MEM_DMA_COHERENT

 drivers/net/ethernet/broadcom/bnx2.c          |  2 ++
 .../net/ethernet/broadcom/bnx2x/bnx2x_main.c  | 10 +++---
 drivers/net/ethernet/broadcom/cnic.c          | 34 ++++++++++++-------
 drivers/net/ethernet/broadcom/cnic.h          |  1 +
 drivers/net/ethernet/broadcom/cnic_if.h       |  1 +
 drivers/uio/uio.c                             | 34 +++++++++++++++++++
 include/linux/uio_driver.h                    | 12 +++++--
 7 files changed, 75 insertions(+), 19 deletions(-)

-- 
2.41.0