aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ntb/ntb_regs.h
diff options
context:
space:
mode:
authorJon Mason <jon.mason@intel.com>2013-04-18 20:07:36 -0400
committerJon Mason <jon.mason@intel.com>2013-09-03 16:51:51 -0400
commit948d3a65b6d164b34309625f57656cb9e8b1a908 (patch)
tree01afe66a33f978552f0577eb478d801e8e6a6284 /drivers/ntb/ntb_regs.h
parent1517a3f21a1dd321f16bcf44204bddff9d21abd0 (diff)
NTB: Xeon Errata Workaround
There is a Xeon hardware errata related to writes to SDOORBELL or B2BDOORBELL in conjunction with inbound access to NTB MMIO Space, which may hang the system. To workaround this issue, use one of the memory windows to access the interrupt and scratch pad registers on the remote system. This bypasses the issue, but removes one of the memory windows from use by the transport. This reduction of MWs necessitates adding some logic to determine the number of available MWs. Since some NTB usage methodologies may have unidirectional traffic, the ability to disable the workaround via modparm has been added. See BF113 in http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-c5500-c3500-spec-update.pdf See BT119 in http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e5-family-spec-update.pdf Signed-off-by: Jon Mason <jon.mason@intel.com>
Diffstat (limited to 'drivers/ntb/ntb_regs.h')
-rw-r--r--drivers/ntb/ntb_regs.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/ntb/ntb_regs.h b/drivers/ntb/ntb_regs.h
index 96209b4abc22..4ddc590d03a6 100644
--- a/drivers/ntb/ntb_regs.h
+++ b/drivers/ntb/ntb_regs.h
@@ -58,6 +58,8 @@
58/* Reserve the uppermost bit for link interrupt */ 58/* Reserve the uppermost bit for link interrupt */
59#define SNB_MAX_DB_BITS 15 59#define SNB_MAX_DB_BITS 15
60#define SNB_DB_BITS_PER_VEC 5 60#define SNB_DB_BITS_PER_VEC 5
61#define SNB_MAX_MW 2
62#define SNB_ERRATA_MAX_MW 1
61 63
62#define SNB_DB_HW_LINK 0x8000 64#define SNB_DB_HW_LINK 0x8000
63 65
@@ -74,6 +76,9 @@
74#define SNB_SBAR2XLAT_OFFSET 0x0030 76#define SNB_SBAR2XLAT_OFFSET 0x0030
75#define SNB_SBAR4XLAT_OFFSET 0x0038 77#define SNB_SBAR4XLAT_OFFSET 0x0038
76#define SNB_SBAR0BASE_OFFSET 0x0040 78#define SNB_SBAR0BASE_OFFSET 0x0040
79#define SNB_SBAR0BASE_OFFSET 0x0040
80#define SNB_SBAR2BASE_OFFSET 0x0048
81#define SNB_SBAR4BASE_OFFSET 0x0050
77#define SNB_SBAR2BASE_OFFSET 0x0048 82#define SNB_SBAR2BASE_OFFSET 0x0048
78#define SNB_SBAR4BASE_OFFSET 0x0050 83#define SNB_SBAR4BASE_OFFSET 0x0050
79#define SNB_NTBCNTL_OFFSET 0x0058 84#define SNB_NTBCNTL_OFFSET 0x0058
@@ -88,13 +93,22 @@
88#define SNB_WCCNTRL_OFFSET 0x00e0 93#define SNB_WCCNTRL_OFFSET 0x00e0
89#define SNB_B2B_SPAD_OFFSET 0x0100 94#define SNB_B2B_SPAD_OFFSET 0x0100
90#define SNB_B2B_DOORBELL_OFFSET 0x0140 95#define SNB_B2B_DOORBELL_OFFSET 0x0140
91#define SNB_B2B_XLAT_OFFSET 0x0144 96#define SNB_B2B_XLAT_OFFSETL 0x0144
97#define SNB_B2B_XLAT_OFFSETU 0x0148
98
99#define SNB_MBAR01_USD_ADDR 0x000000210000000CULL
100#define SNB_MBAR23_USD_ADDR 0x000000410000000CULL
101#define SNB_MBAR45_USD_ADDR 0x000000810000000CULL
102#define SNB_MBAR01_DSD_ADDR 0x000000200000000CULL
103#define SNB_MBAR23_DSD_ADDR 0x000000400000000CULL
104#define SNB_MBAR45_DSD_ADDR 0x000000800000000CULL
92 105
93#define BWD_MSIX_CNT 34 106#define BWD_MSIX_CNT 34
94#define BWD_MAX_SPADS 16 107#define BWD_MAX_SPADS 16
95#define BWD_MAX_COMPAT_SPADS 16 108#define BWD_MAX_COMPAT_SPADS 16
96#define BWD_MAX_DB_BITS 34 109#define BWD_MAX_DB_BITS 34
97#define BWD_DB_BITS_PER_VEC 1 110#define BWD_DB_BITS_PER_VEC 1
111#define BWD_MAX_MW 2
98 112
99#define BWD_PCICMD_OFFSET 0xb004 113#define BWD_PCICMD_OFFSET 0xb004
100#define BWD_MBAR23_OFFSET 0xb018 114#define BWD_MBAR23_OFFSET 0xb018
@@ -128,12 +142,3 @@
128#define BWD_PPD_INIT_LINK 0x0008 142#define BWD_PPD_INIT_LINK 0x0008
129#define BWD_PPD_CONN_TYPE 0x0300 143#define BWD_PPD_CONN_TYPE 0x0300
130#define BWD_PPD_DEV_TYPE 0x1000 144#define BWD_PPD_DEV_TYPE 0x1000
131
132#define BWD_PBAR2XLAT_USD_ADDR 0x0000004000000000
133#define BWD_PBAR4XLAT_USD_ADDR 0x0000008000000000
134#define BWD_MBAR23_USD_ADDR 0x000000410000000C
135#define BWD_MBAR45_USD_ADDR 0x000000810000000C
136#define BWD_PBAR2XLAT_DSD_ADDR 0x0000004100000000
137#define BWD_PBAR4XLAT_DSD_ADDR 0x0000008100000000
138#define BWD_MBAR23_DSD_ADDR 0x000000400000000C
139#define BWD_MBAR45_DSD_ADDR 0x000000800000000C