Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4988623 authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by Doug Ledford
Browse files

IB/qib: use arch_phys_wc_add()



This driver already makes use of ioremap_wc() on PIO buffers,
so convert it to use arch_phys_wc_add().

The qib driver uses a mmap() special case for when PAT is
not used, this behaviour used to be determined with a
module parameter but since we have been asked to just
remove that module parameter this checks for the WC cookie,
if not set we can assume PAT was used. If its set we do
what we used to do for the mmap for when MTRR was enabled.

The removal of the module parameter is OK given that Andy
notes that even if users of module parameter are still around
it will not prevent loading of the module on recent kernels.

Cc: Doug Ledford <dledford@redhat.com>
Cc: Toshi Kani <toshi.kani@hp.com>
Cc: Rickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
Cc: Roland Dreier <roland@purestorage.com>
Cc: Sean Hefty <sean.hefty@intel.com>
Cc: Hal Rosenstock <hal.rosenstock@gmail.com>
Cc: Dennis Dalessandro <dennis.dalessandro@intel.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Suresh Siddha <sbsiddha@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Juergen Gross <jgross@suse.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Antonino Daplas <adaplas@gmail.com>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Stefan Bader <stefan.bader@canonical.com>
Cc: konrad.wilk@oracle.com
Cc: ville.syrjala@linux.intel.com
Cc: david.vrabel@citrix.com
Cc: jbeulich@suse.com
Cc: Roger Pau Monné <roger.pau@citrix.com>
Cc: infinipath@intel.com
Cc: linux-rdma@vger.kernel.org
Cc: linux-fbdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: xen-devel@lists.xensource.com
Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@suse.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 87a26e97
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1136,7 +1136,6 @@ extern struct qib_devdata *qib_lookup(int unit);
extern u32 qib_cpulist_count;
extern unsigned long *qib_cpulist;

extern unsigned qib_wc_pat;
extern unsigned qib_cc_table_size;
int qib_init(struct qib_devdata *, int);
int init_chip_wc_pat(struct qib_devdata *dd, u32);
+2 −1
Original line number Diff line number Diff line
@@ -835,7 +835,8 @@ static int mmap_piobufs(struct vm_area_struct *vma,
	vma->vm_flags &= ~VM_MAYREAD;
	vma->vm_flags |= VM_DONTCOPY | VM_DONTEXPAND;

	if (qib_wc_pat)
	/* We used PAT if wc_cookie == 0 */
	if (!dd->wc_cookie)
		vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);

	ret = io_remap_pfn_range(vma, vma->vm_start, phys >> PAGE_SHIFT,
+3 −5
Original line number Diff line number Diff line
@@ -3315,11 +3315,9 @@ static int init_6120_variables(struct qib_devdata *dd)
	qib_6120_config_ctxts(dd);
	qib_set_ctxtcnt(dd);

	if (qib_wc_pat) {
	ret = init_chip_wc_pat(dd, 0);
	if (ret)
		goto bail;
	}
	set_6120_baseaddrs(dd); /* set chip access pointers now */

	ret = 0;
+3 −5
Original line number Diff line number Diff line
@@ -4126,11 +4126,9 @@ static int qib_init_7220_variables(struct qib_devdata *dd)
	qib_7220_config_ctxts(dd);
	qib_set_ctxtcnt(dd);  /* needed for PAT setup */

	if (qib_wc_pat) {
	ret = init_chip_wc_pat(dd, 0);
	if (ret)
		goto bail;
	}
	set_7220_baseaddrs(dd); /* set chip access pointers now */

	ret = 0;
+20 −21
Original line number Diff line number Diff line
@@ -6429,6 +6429,7 @@ static int qib_init_7322_variables(struct qib_devdata *dd)
	unsigned features, pidx, sbufcnt;
	int ret, mtu;
	u32 sbufs, updthresh;
	resource_size_t vl15off;

	/* pport structs are contiguous, allocated after devdata */
	ppd = (struct qib_pportdata *)(dd + 1);
@@ -6677,8 +6678,6 @@ static int qib_init_7322_variables(struct qib_devdata *dd)
	qib_7322_config_ctxts(dd);
	qib_set_ctxtcnt(dd);

	if (qib_wc_pat) {
		resource_size_t vl15off;
	/*
	 * We do not set WC on the VL15 buffers to avoid
	 * a rare problem with unaligned writes from
@@ -6699,7 +6698,7 @@ static int qib_init_7322_variables(struct qib_devdata *dd)
		ret = -ENOMEM;
		goto bail;
	}
	}

	qib_7322_set_baseaddrs(dd); /* set chip access pointers now */

	ret = 0;
Loading