On Wed, 2016-04-20 at 03:58 -0400, Aneesh Kumar K.V wrote: > The driver was requesting for a writethrough mapping. But with thoses > flags we will end up with a SAO mapping because we now have memory > conherence always enabled. ie, the existing mapping will end up with > a WIMG value 0b1110 which is Strong Access Order. > > Update this to use cache inhibitted guarded mapping
Why guarded ? If it's performance sensitive (and the driver has appropriate barriers where needed), you will get write combining without guarded, you won't with it. Cheers, Ben. > Cc: Mike Marciniszyn <infinip...@intel.com> > Cc: Doug Ledford <dledf...@redhat.com> > Cc: Sean Hefty <sean.he...@intel.com> > Cc: Hal Rosenstock <hal.rosenst...@gmail.com> > Cc: linux-r...@vger.kernel.org > Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.vnet.ibm.com> > --- > Changes from v1: > * resend because V1 never reached mailing list. > > NOTE: This is only compile tested and I am also not sure why ppc64 > needs special handling. > We need this patch because the series at http://mid.gmane.org/1460182 > 444-2468-1-git-send-email-aneesh.ku...@linux.vnet.ibm.com > will drop _PAGE_WRITETHRU > > drivers/infiniband/hw/qib/qib_file_ops.c | 5 +---- > drivers/infiniband/hw/qib/qib_pcie.c | 6 ------ > 2 files changed, 1 insertion(+), 10 deletions(-) > > diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c > b/drivers/infiniband/hw/qib/qib_file_ops.c > index e449e394963f..a3d593f546ec 100644 > --- a/drivers/infiniband/hw/qib/qib_file_ops.c > +++ b/drivers/infiniband/hw/qib/qib_file_ops.c > @@ -822,10 +822,7 @@ static int mmap_piobufs(struct vm_area_struct > *vma, > phys = dd->physaddr + piobufs; > > #if defined(__powerpc__) > - /* There isn't a generic way to specify writethrough > mappings */ > - pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE; > - pgprot_val(vma->vm_page_prot) |= _PAGE_WRITETHRU; > - pgprot_val(vma->vm_page_prot) &= ~_PAGE_GUARDED; > + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); > #endif > > /* > diff --git a/drivers/infiniband/hw/qib/qib_pcie.c > b/drivers/infiniband/hw/qib/qib_pcie.c > index 4758a3801ae8..6abe1c621aa4 100644 > --- a/drivers/infiniband/hw/qib/qib_pcie.c > +++ b/drivers/infiniband/hw/qib/qib_pcie.c > @@ -144,13 +144,7 @@ int qib_pcie_ddinit(struct qib_devdata *dd, > struct pci_dev *pdev, > addr = pci_resource_start(pdev, 0); > len = pci_resource_len(pdev, 0); > > -#if defined(__powerpc__) > - /* There isn't a generic way to specify writethrough > mappings */ > - dd->kregbase = __ioremap(addr, len, _PAGE_NO_CACHE | > _PAGE_WRITETHRU); > -#else > dd->kregbase = ioremap_nocache(addr, len); > -#endif > - > if (!dd->kregbase) > return -ENOMEM; > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev