On Thu, 2017-02-16 at 12:22 -0700, Jason Gunthorpe wrote: > Now that the header is private to the library we can change it. > > We have never had a clear definition for what our wmb() or wc_wmb() > even do, > and they don't match the same macros in the kernel. This causes > problems for > non x86 arches as they have no idea what to put in their versions of > the macros > and often just put the strongest thing. > > This also causes problems for the driver authors who have no idea how > to use > these barriers properly, there are several instances of that :( > > My approach here is to introduce a selection of macros that have > narrow and > clearly defined purposes. The selection is based on things the set of > drivers > actually do, which turns out to be fairly narrowly defined. > > Then I went through all the drivers and adjusted them to various > degrees to > use the new macro names. In a few drivers I added more/stronger > barriers. > Overall this tries hard not to break anything by weaking existing > barriers. > > A future project for someone would be to see if the CPU ASM makes > sense.. > > https://github.com/linux-rdma/rdma-core/pull/79 > > Jason Gunthorpe (14): > mlx5: Use stdatomic for the in_use barrier > Provide new names for the CPU barriers related to DMA > cxgb3: Update to use new udma write barriers > cxgb4: Update to use new udma write barriers > hns: Update to use new udma write barriers > i40iw: Get rid of unique barrier macros > mlx4: Update to use new udma write barriers > mlx5: Update to use new udma write barriers > nes: Update to use new udma write barriers > mthca: Update to use new mmio write barriers > ocrdma: Update to use new udma write barriers > qedr: Update to use new udma write barriers > vmw_pvrdma: Update to use new udma write barriers > Remove the old barrier macros > > providers/cxgb3/cq.c | 2 + > providers/cxgb3/cxio_wr.h | 2 +- > providers/cxgb4/qp.c | 20 +++- > providers/cxgb4/t4.h | 48 ++++++-- > providers/cxgb4/verbs.c | 2 + > providers/hns/hns_roce_u_hw_v1.c | 13 +- > providers/i40iw/i40iw_osdep.h | 14 --- > providers/i40iw/i40iw_uk.c | 26 ++-- > providers/mlx4/cq.c | 6 +- > providers/mlx4/qp.c | 19 +-- > providers/mlx4/srq.c | 2 +- > providers/mlx5/cq.c | 8 +- > providers/mlx5/mlx5.h | 7 +- > providers/mlx5/qp.c | 18 +-- > providers/mlx5/srq.c | 2 +- > providers/mthca/cq.c | 10 +- > providers/mthca/doorbell.h | 2 +- > providers/mthca/qp.c | 20 ++-- > providers/mthca/srq.c | 6 +- > providers/nes/nes_uverbs.c | 16 +-- > providers/ocrdma/ocrdma_verbs.c | 16 ++- > providers/qedr/qelr_verbs.c | 32 +++-- > providers/vmw_pvrdma/cq.c | 6 +- > providers/vmw_pvrdma/qp.c | 8 +- > util/udma_barrier.h | 250 +++++++++++++++++++++++++++ > ------------ > 25 files changed, 354 insertions(+), 201 deletions(-) Thanks, series merged. -- Doug Ledford <dledford@xxxxxxxxxx> GPG KeyID: B826A3330E572FDD Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD
Attachment:
signature.asc
Description: This is a digitally signed message part