summaryrefslogtreecommitdiffstats
path: root/sys/dev/ntb
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2016-08-18 09:16:59 +0000
committermav <mav@FreeBSD.org>2016-08-18 09:16:59 +0000
commit9e98ad7c6697802dd5c7af27d5939938b6ec269c (patch)
tree57134ccdd71c082e9555efc5bd25400e62de27bc /sys/dev/ntb
parent39af2303dc1bb5b28987b1730c0e28d40b98717b (diff)
downloadFreeBSD-src-9e98ad7c6697802dd5c7af27d5939938b6ec269c.zip
FreeBSD-src-9e98ad7c6697802dd5c7af27d5939938b6ec269c.tar.gz
MFC r302482: Fix NTB_SDOORBELL_LOCKUP workaround.
Since SBARxSZ register can be write-once, it can be unusable for disabling the SBAR. For such case also set SBARxBASE to zero to not intersect with config BAR.
Diffstat (limited to 'sys/dev/ntb')
-rw-r--r--sys/dev/ntb/ntb_hw/ntb_hw.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/ntb/ntb_hw/ntb_hw.c b/sys/dev/ntb/ntb_hw/ntb_hw.c
index c1381f0..bfa3559 100644
--- a/sys/dev/ntb/ntb_hw/ntb_hw.c
+++ b/sys/dev/ntb/ntb_hw/ntb_hw.c
@@ -1673,8 +1673,12 @@ xeon_set_sbar_base_and_limit(struct ntb_softc *ntb, uint64_t bar_addr,
uint32_t base_reg, lmt_reg;
bar_get_xlat_params(ntb, idx, &base_reg, NULL, &lmt_reg);
- if (idx == regbar)
- bar_addr += ntb->b2b_off;
+ if (idx == regbar) {
+ if (ntb->b2b_off)
+ bar_addr += ntb->b2b_off;
+ else
+ bar_addr = 0;
+ }
/*
* Set limit registers first to avoid an errata where setting the base
OpenPOWER on IntegriCloud