1
0
Fork 0
alistair23-linux/Documentation/devicetree/bindings
Madalin Bucur c211a30c18 dt-bindings: net: FMan erratum A050385
[ Upstream commit 26d5bb9e4c ]

FMAN DMA read or writes under heavy traffic load may cause FMAN
internal resource leak; thus stopping further packet processing.

The FMAN internal queue can overflow when FMAN splits single
read or write transactions into multiple smaller transactions
such that more than 17 AXI transactions are in flight from FMAN
to interconnect. When the FMAN internal queue overflows, it can
stall further packet processing. The issue can occur with any one
of the following three conditions:

  1. FMAN AXI transaction crosses 4K address boundary (Errata
     A010022)
  2. FMAN DMA address for an AXI transaction is not 16 byte
     aligned, i.e. the last 4 bits of an address are non-zero
  3. Scatter Gather (SG) frames have more than one SG buffer in
     the SG list and any one of the buffers, except the last
     buffer in the SG list has data size that is not a multiple
     of 16 bytes, i.e., other than 16, 32, 48, 64, etc.

With any one of the above three conditions present, there is
likelihood of stalled FMAN packet processing, especially under
stress with multiple ports injecting line-rate traffic.

To avoid situations that stall FMAN packet processing, all of the
above three conditions must be avoided; therefore, configure the
system with the following rules:

  1. Frame buffers must not span a 4KB address boundary, unless
     the frame start address is 256 byte aligned
  2. All FMAN DMA start addresses (for example, BMAN buffer
     address, FD[address] + FD[offset]) are 16B aligned
  3. SG table and buffer addresses are 16B aligned and the size
     of SG buffers are multiple of 16 bytes, except for the last
     SG buffer that can be of any size.

Additional workaround notes:
- Address alignment of 64 bytes is recommended for maximally
efficient system bus transactions (although 16 byte alignment is
sufficient to avoid the stall condition)
- To support frame sizes that are larger than 4K bytes, there are
two options:
  1. Large single buffer frames that span a 4KB page boundary can
     be converted into SG frames to avoid transaction splits at
     the 4KB boundary,
  2. Align the large single buffer to 256B address boundaries,
     ensure that the frame address plus offset is 256B aligned.
- If software generated SG frames have buffers that are unaligned
and with random non-multiple of 16 byte lengths, before
transmitting such frames via FMAN, frames will need to be copied
into a new single buffer or multiple buffer SG frame that is
compliant with the three rules listed above.

Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-01 11:01:52 +02:00
..
arc
arm dt-bindings: arm: rockchip: fix Theobroma-System board bindings 2019-10-04 00:02:05 +02:00
ata dt-bindings: ata: fix typo in Allwinner R40 reset specific paragraph 2019-08-21 13:29:24 -05:00
auxdisplay
board
bus Devicetree updates for v5.4: 2019-09-19 13:48:37 -07:00
c6x
clock dt-bindings: clock: renesas: rcar-usb2-clock-sel: Fix typo in example 2020-01-09 10:20:05 +01:00
connector dt-bindings: connector: add optional properties for Type-B 2019-09-03 16:00:39 +02:00
counter
cpu dt-binding: cpu-topology: Move cpu-map to a common binding. 2019-07-22 09:35:57 -07:00
cpufreq dt-bindings: imx-cpufreq-dt: Document opp-supported-hw usage 2019-05-20 12:48:12 +05:30
crypto dt-bindings: crypto: Convert Allwinner A10 Security Engine to a schema 2019-08-13 16:11:00 -06:00
csky dt-bindings: csky: Add csky PMU bindings 2019-07-19 14:21:36 +08:00
devfreq
display dt-bindings: display: rockchip: update DSI controller 2019-08-20 17:40:34 +02:00
dma dt-bindings: dmaengine: dma-common: Fix the dma-channel-mask property 2019-09-04 10:22:56 +05:30
dsp dt-bindings: dsp: Fix fsl,dsp example 2019-10-02 14:13:36 -05:00
edac
eeprom dt-bindings: eeprom: at25: Add Anvo ANV32E61W 2019-08-24 22:44:26 +02:00
extcon extcon: arizona: Update binding example to use available defines 2019-07-24 19:13:21 +09:00
firmware ARM: SoC driver updates for v5.4 2019-09-16 15:52:38 -07:00
fpga dt-bindings: fpga: Consolidate bridge properties 2019-07-24 14:19:15 -07:00
fsi
fuse
gnss
goldfish
gpio ARM: SoC driver updates for v5.4 2019-09-16 15:52:38 -07:00
gpu dt-bindings: gpu: mali-midgard: Add samsung exynos5250 compatible 2019-09-03 10:02:17 +01:00
h8300
hsi
hwlock dt-bindings: hwlock: Update OMAP binding for TI K3 SoCs 2019-06-29 11:40:02 -07:00
hwmon hwmon: (as370-hwmon) Add DT bindings for Synaptics AS370 PVT 2019-09-03 12:47:17 -07:00
i2c Merge branch 'i2c/for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-09-24 16:48:02 -07:00
i3c dt-bindings: i3c: cdns: Use correct cells for I2C device 2019-07-04 11:58:31 +02:00
iio dt-bindings: iio: adc: ad7606: Fix wrong maxItems value 2020-02-14 16:34:19 -05:00
infiniband
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2019-09-19 14:10:54 -07:00
interconnect dt-bindings: interconnect: Add Qualcomm QCS404 DT bindings 2019-08-13 23:03:24 +03:00
interrupt-controller irqchip fixes for 5.4, take #1 2019-10-14 20:35:58 +02:00
iommu dt-bindings: mediatek: Add binding for mt8183 IOMMU and SMI 2019-08-30 15:57:26 +02:00
ipmi dt-bindings: Add missing newline at end of file 2019-06-18 08:11:57 -06:00
leds dt: lm3532: Add property for full scale current. 2019-08-26 20:03:57 +02:00
lpddr2
mailbox - qcom : enable support for ipq8074, sm1850 and sm7180. 2019-09-19 14:01:47 -07:00
media ARM: SoC fixes 2019-10-25 16:00:47 -04:00
memory-controllers ARM: DT updates for v5.4 2019-09-16 15:56:22 -07:00
mfd - New Drivers 2019-09-23 19:37:49 -07:00
mips
misc Linux 5.3-rc5 2019-08-21 13:35:16 +02:00
mmc dt-bindings: mmc: sdhci-of-arasan: Add new compatible for Intel LGM eMMC 2019-09-11 15:58:39 +02:00
mtd dt-bindings: mtd: Document Macronix raw NAND controller bindings 2019-08-26 09:25:41 +02:00
mux dt-bindings: add register based devices' mux controller DT bindings 2019-06-21 15:58:35 +02:00
nds32
net dt-bindings: net: FMan erratum A050385 2020-04-01 11:01:52 +02:00
nios2
nvmem dt-bindings: imx-ocotp: Add i.MX8MN compatible 2019-08-18 12:56:52 +02:00
openrisc/opencores
opp Merge branches 'pm-opp', 'pm-qos', 'acpi-pm', 'pm-domains' and 'pm-tools' 2019-09-17 09:49:19 +02:00
pci pci-v5.4-changes 2019-09-23 19:16:01 -07:00
perf dt-bindings: perf: imx8-ddr: add imx8qxp ddr performance monitor 2019-06-13 10:38:02 +01:00
phy dt-bindings: phy: lantiq: Fix Property Name 2019-10-02 14:14:58 -05:00
pinctrl dt-bindings: pinctrl: aspeed-g6: Rework SD3 function and groups 2019-10-16 15:57:17 +02:00
pmem
power - New Drivers 2019-09-23 19:37:49 -07:00
powerpc
pps dt-bindings: pps: pps-gpio PPS ECHO implementation 2019-05-14 19:52:51 -07:00
ptp dt-binding: ptp_qoriq: support DPAA2 PTP compatible 2019-06-15 13:43:06 -07:00
pwm pwm: Changes for v5.4-rc1 2019-09-27 12:19:47 -07:00
regmap
regulator dt-bindings: fixed-regulator: fix compatible enum 2019-09-23 14:20:39 -07:00
remoteproc dt-bindings: remoteproc: add bindings for stm32 remote processor driver 2019-06-29 20:48:48 -07:00
reserved-memory
reset dt-bindings: reset: Fix brcmstb-reset example 2020-01-17 19:48:29 +01:00
riscv dt-bindings: riscv: Fix CPU schema errors 2019-10-23 14:42:44 -05:00
rng hwrng: omap3-rom - Fix missing clock by probing with device tree 2020-01-26 10:01:03 +01:00
rtc dt-bindings: rtc: ds1307: add rx8130 compatible 2019-09-01 11:05:43 +02:00
scsi
security/tpm
serial dt-bindings: serial: sh-sci: Document r8a774b1 bindings 2019-10-04 15:02:28 +02:00
serio
sifive dt-bindings: sifive: describe sifive-blocks versioning 2019-05-22 09:01:00 -05:00
siox
slimbus
soc Qualcomm ARM Based Driver Updates for v5.4 2019-09-12 13:46:20 +02:00
sound ASoC: dt-bindings: mt8183: add missing update 2020-01-17 19:48:33 +01:00
soundwire dt-bindings: soundwire: add slave bindings 2019-09-04 13:12:31 +05:30
spi Devicetree updates for v5.4: 2019-09-19 13:48:37 -07:00
spmi
sram
staging/iio/adc
thermal dt-bindings: thermal: qoriq: Add optional clocks property 2019-08-28 16:33:29 +08:00
timer Main MIPS changes for v5.4: 2019-09-22 09:30:30 -07:00
ufs scsi: ufs-qcom: Implement device_reset vops 2019-09-07 16:36:03 -04:00
usb dt-bindings: usb: Bring back phy-names 2019-10-04 14:37:03 +02:00
virtio dt-bindings: virtio: Add virtio-pci-iommu node 2019-06-06 17:32:13 -04:00
w1
watchdog linux-watchdog 5.4-rc1 tag 2019-09-27 11:17:38 -07:00
x86
xillybus
.gitignore
ABI.txt
Makefile dt-bindings: Improve validation build error handling 2020-01-04 19:18:11 +01:00
chosen.txt
common-properties.txt dt-bindings: Remove Linuxisms from common-properties binding 2019-05-24 16:38:45 -05:00
example-schema.yaml dt-bindings: Correct spelling in example schema 2019-09-06 15:29:12 +01:00
graph.txt
jailhouse.txt
numa.txt
property-units.txt dt-bindings: property-units: Sanitize unit naming 2019-06-13 14:29:43 -06:00
resource-names.txt
submitting-patches.txt
trivial-devices.yaml dt-bindings: Add ipsps1 as a trivial device 2019-09-03 12:47:17 -07:00
unittest.txt
vendor-prefixes.yaml drm main pull for 5.4-rc1 2019-09-19 16:24:24 -07:00
writing-bindings.txt
xilinx.txt