From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Steve Wise <swise@opengridcomputing.com>,
Hariprasad Shenai <hariprasad@chelsio.com>,
Leon Romanovsky <leon@leon.nu>,
Doug Ledford <dledford@redhat.com>
Subject: [PATCH 4.4 02/67] RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips
Date: Mon, 9 May 2016 09:18:07 +0200 [thread overview]
Message-ID: <20160509071837.365553617@linuxfoundation.org> (raw)
In-Reply-To: <20160509071837.238078895@linuxfoundation.org>
4.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hariprasad S <hariprasad@chelsio.com>
commit 32cc92c7b5e52357a0a24010bae9eb257fa75d3e upstream.
For T4, kernel mode qps don't use the user doorbell. User mode qps during
flow control db ringing are forced into kernel, where user doorbell is
treated as kernel doorbell and proper bar2 offset in bar2 virtual space is
calculated, which incase of T4 is a bogus address, causing a kernel panic
due to illegal write during doorbell ringing.
In case of T4, kernel mode qp bar2 virtual address should be 0. Added T4
check during bar2 virtual address calculation to return 0. Fixed Bar2
range checks based on bar2 physical address.
The below oops will be fixed
<1>BUG: unable to handle kernel paging request at 000000000002aa08
<1>IP: [<ffffffffa011d800>] c4iw_uld_control+0x4e0/0x880 [iw_cxgb4]
<4>PGD 1416a8067 PUD 15bf35067 PMD 0
<4>Oops: 0002 [#1] SMP
<4>last sysfs file:
/sys/devices/pci0000:00/0000:00:03.0/0000:02:00.4/infiniband/cxgb4_0/node_guid
<4>CPU 5
<4>Modules linked in: rdma_ucm rdma_cm ib_cm ib_sa ib_mad ib_uverbs
ip6table_filter ip6_tables ebtable_nat ebtables ipt_MASQUERADE
iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack
ipt_REJECT xt_CHECKSUM iptable_mangle iptable_filter ip_tables bridge autofs4
target_core_iblock target_core_file target_core_pscsi target_core_mod
configfs bnx2fc cnic uio fcoe libfcoe libfc scsi_transport_fc scsi_tgt 8021q
garp stp llc cpufreq_ondemand acpi_cpufreq freq_table mperf vhost_net macvtap
macvlan tun kvm uinput microcode iTCO_wdt iTCO_vendor_support sg joydev
serio_raw i2c_i801 i2c_core lpc_ich mfd_core e1000e ptp pps_core ioatdma dca
i7core_edac edac_core shpchp ext3 jbd mbcache sd_mod crc_t10dif pata_acpi
ata_generic ata_piix iw_cxgb4 iw_cm ib_core ib_addr cxgb4 ipv6 dm_mirror
dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
<4>
Supermicro X8ST3/X8ST3
<4>RIP: 0010:[<ffffffffa011d800>] [<ffffffffa011d800>]
c4iw_uld_control+0x4e0/0x880 [iw_cxgb4]
<4>RSP: 0000:ffff880155a03db0 EFLAGS: 00010006
<4>RAX: 000000000000001d RBX: ffff88013ae5fc00 RCX: ffff880155adb180
<4>RDX: 000000000002aa00 RSI: 0000000000000001 RDI: ffff88013ae5fdf8
<4>RBP: ffff880155a03e10 R08: 0000000000000000 R09: 0000000000000001
<4>R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
<4>R13: 000000000000001d R14: ffff880156414ab0 R15: ffffe8ffffc05b88
<4>FS: 0000000000000000(0000) GS:ffff8800282a0000(0000) knlGS:0000000000000000
<4>CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b
<4>CR2: 000000000002aa08 CR3: 000000015bd0e000 CR4: 00000000000007e0
<4>DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
<4>DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
<4>Process cxgb4 (pid: 394, threadinfo ffff880155a00000, task ffff880156414ab0)
<4>Stack:
<4> ffff880156415068 ffff880155adb180 ffff880155a03df0 ffffffffa00a344b
<4><d> 00000000000003e8 ffff880155920000 0000000000000004 ffff880155920000
<4><d> ffff88015592d438 ffffffffa00a3860 ffff880155a03fd8 ffffe8ffffc05b88
<4>Call Trace:
<4> [<ffffffffa00a344b>] ? enable_txq_db+0x2b/0x80 [cxgb4]
<4> [<ffffffffa00a3860>] ? process_db_full+0x0/0xa0 [cxgb4]
<4> [<ffffffffa00a38a6>] process_db_full+0x46/0xa0 [cxgb4]
<4> [<ffffffff8109fda0>] worker_thread+0x170/0x2a0
<4> [<ffffffff810a6aa0>] ? autoremove_wake_function+0x0/0x40
<4> [<ffffffff8109fc30>] ? worker_thread+0x0/0x2a0
<4> [<ffffffff810a660e>] kthread+0x9e/0xc0
<4> [<ffffffff8100c28a>] child_rip+0xa/0x20
<4> [<ffffffff810a6570>] ? kthread+0x0/0xc0
<4> [<ffffffff8100c280>] ? child_rip+0x0/0x20
<4>Code: e9 ba 00 00 00 66 0f 1f 44 00 00 44 8b 05 29 07 02 00 45 85 c0 0f 85
71 02 00 00 8b 83 70 01 00 00 45 0f b7 ed c1 e0 0f 44 09 e8 <89> 42 08 0f ae f8
66 c7 83 82 01 00 00 00 00 44 0f b7 ab dc 01
<1>RIP [<ffffffffa011d800>] c4iw_uld_control+0x4e0/0x880 [iw_cxgb4]
<4> RSP <ffff880155a03db0>
<4>CR2: 000000000002aa08`
Based on original work by Bharat Potnuri <bharat@chelsio.com>
Fixes: 74217d4c6a4fb0d8 ("iw_cxgb4: support for bar2 qid densities exceeding the page size")
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Reviewed-by: Leon Romanovsky <leon@leon.nu>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/infiniband/hw/cxgb4/cq.c | 2 +-
drivers/infiniband/hw/cxgb4/qp.c | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
--- a/drivers/infiniband/hw/cxgb4/cq.c
+++ b/drivers/infiniband/hw/cxgb4/cq.c
@@ -162,7 +162,7 @@ static int create_cq(struct c4iw_rdev *r
cq->bar2_va = c4iw_bar2_addrs(rdev, cq->cqid, T4_BAR2_QTYPE_INGRESS,
&cq->bar2_qid,
user ? &cq->bar2_pa : NULL);
- if (user && !cq->bar2_va) {
+ if (user && !cq->bar2_pa) {
pr_warn(MOD "%s: cqid %u not in BAR2 range.\n",
pci_name(rdev->lldi.pdev), cq->cqid);
ret = -EINVAL;
--- a/drivers/infiniband/hw/cxgb4/qp.c
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -185,6 +185,10 @@ void __iomem *c4iw_bar2_addrs(struct c4i
if (pbar2_pa)
*pbar2_pa = (rdev->bar2_pa + bar2_qoffset) & PAGE_MASK;
+
+ if (is_t4(rdev->lldi.adapter_type))
+ return NULL;
+
return rdev->bar2_kva + bar2_qoffset;
}
@@ -270,7 +274,7 @@ static int create_qp(struct c4iw_rdev *r
/*
* User mode must have bar2 access.
*/
- if (user && (!wq->sq.bar2_va || !wq->rq.bar2_va)) {
+ if (user && (!wq->sq.bar2_pa || !wq->rq.bar2_pa)) {
pr_warn(MOD "%s: sqid %u or rqid %u not in BAR2 range.\n",
pci_name(rdev->lldi.pdev), wq->sq.qid, wq->rq.qid);
goto free_dma;
next prev parent reply other threads:[~2016-05-09 7:19 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-09 7:18 [PATCH 4.4 00/67] 4.4.10-stable review Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 01/67] Revert: "powerpc/tm: Check for already reclaimed tasks" Greg Kroah-Hartman
2016-05-09 7:18 ` Greg Kroah-Hartman [this message]
2016-05-09 7:18 ` [PATCH 4.4 03/67] ipvs: handle ip_vs_fill_iph_skb_off failure Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 04/67] ipvs: correct initial offset of Call-ID header search in SIP persistence engine Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 05/67] ipvs: drop first packet to redirect conntrack Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 06/67] mfd: intel-lpss: Remove clock tree on error path Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 07/67] nbd: ratelimit error msgs after socket close Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 08/67] ata: ahci_xgene: dereferencing uninitialized pointer in probe Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 09/67] mwifiex: fix corner case association failure Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 11/67] clk-divider: make sure read-only dividers do not write to their register Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 12/67] soc: rockchip: power-domain: fix err handle while probing Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 13/67] clk: rockchip: free memory in error cases when registering clock branches Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 15/67] clk: qcom: msm8960: fix ce3_core clk enable register Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 16/67] clk: versatile: sp810: support reentrance Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 17/67] clk: qcom: msm8960: Fix ce3_src register offset Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 18/67] lpfc: fix misleading indentation Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 19/67] ath9k: ar5008_hw_cmn_spur_mitigate: add missing mask_m & mask_p initialisation Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 20/67] mac80211: fix statistics leak if dev_alloc_name() fails Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 21/67] tracing: Dont display trigger file for events that cant be enabled Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 22/67] MD: make bio mergeable Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 23/67] Minimal fix-up of bad hashing behavior of hash_64() Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 24/67] mm, cma: prevent nr_isolated_* counters from going negative Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 25/67] mm/zswap: provide unique zpool name Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 26/67] ARM: EXYNOS: Properly skip unitialized parent clock in power domain on Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 27/67] ARM: SoCFPGA: Fix secondary CPU startup in thumb2 kernel Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 28/67] xen: Fix page <-> pfn conversion on 32 bit systems Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 29/67] xen/balloon: Fix crash when ballooning on x86 32 bit PAE Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 30/67] xen/evtchn: fix ring resize when binding new events Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 31/67] HID: wacom: Add support for DTK-1651 Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 32/67] HID: Fix boot delay for Creative SB Omni Surround 5.1 with quirk Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 33/67] Input: zforce_ts - fix dual touch recognition Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 34/67] proc: prevent accessing /proc/<PID>/environ until its ready Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 35/67] mm: update min_free_kbytes from khugepaged after core initialization Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 36/67] batman-adv: fix DAT candidate selection (must use vid) Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 37/67] batman-adv: Check skb size before using encapsulated ETH+VLAN header Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 39/67] batman-adv: Reduce refcnt of removed router when updating route Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 40/67] writeback: Fix performance regression in wb_over_bg_thresh() Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 41/67] MAINTAINERS: Remove asterisk from EFI directory names Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 42/67] x86/tsc: Read all ratio bits from MSR_PLATFORM_INFO Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 43/67] fs/pnode.c: treat zero mnt_group_id-s as unequal Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 44/67] propogate_mnt: Handle the first propogated copy being a slave Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 45/67] ARM: cpuidle: Pass on arm_cpuidle_suspend()s return value Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 46/67] ARC: Add missing io barriers to io{read,write}{16,32}be() Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 47/67] x86/sysfb_efi: Fix valid BAR address range check Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 48/67] ACPICA: Dispatcher: Update thread ID for recursive method calls Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 49/67] powerpc: Fix bad inline asm constraint in create_zero_mask() Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 50/67] libahci: save port map for forced port map Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 51/67] ata: ahci-platform: Add ports-implemented DT bindings Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 52/67] USB: serial: cp210x: add ID for Link ECU Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 53/67] USB: serial: cp210x: add Straizona Focusers device ids Greg Kroah-Hartman
2016-05-09 7:18 ` [PATCH 4.4 54/67] nvmem: mxs-ocotp: fix buffer overflow in read Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 55/67] gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 56/67] drm/amdgpu: make sure vertical front porch is at least 1 Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 58/67] iio: ak8975: Fix NULL pointer exception on early interrupt Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 60/67] drm/radeon: make sure vertical front porch is at least 1 Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 65/67] ACPI / processor: Request native thermal interrupt handling via _OSC Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 66/67] lib/test-string_helpers.c: fix and improve string_get_size() tests Greg Kroah-Hartman
2016-05-09 7:19 ` [PATCH 4.4 67/67] drm/i915/skl: Fix DMC load on Skylake J0 and K0 Greg Kroah-Hartman
[not found] ` <5730411d.d72d1c0a.4dc63.ffff8ef4@mx.google.com>
2016-05-09 8:08 ` [PATCH 4.4 00/67] 4.4.10-stable review Greg Kroah-Hartman
2016-05-09 13:10 ` Guenter Roeck
2016-05-09 19:41 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160509071837.365553617@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=dledford@redhat.com \
--cc=hariprasad@chelsio.com \
--cc=leon@leon.nu \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=swise@opengridcomputing.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).