linux-stable/Documentation/devicetree/bindings
Madalin Bucur 26d5bb9e4c dt-bindings: net: FMan erratum A050385
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>
2020-03-06 21:55:32 -08:00
..
arc
arm ARM: SoC-related driver updates 2020-02-08 14:04:19 -08:00
ata Devicetree updates for v5.6: 2020-01-30 07:47:58 -08:00
auxdisplay
board
bus dt-bindings: Change maintainer address 2019-12-12 18:38:10 -06:00
c6x
clock ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
connector dt-bindings: connector: Improve the english of the initial description 2019-12-10 11:34:29 +01:00
counter Devicetree updates for v5.5: 2019-12-02 11:41:35 -08:00
cpu
cpufreq
crypto dt-bindings: Change maintainer address 2019-12-12 18:38:10 -06:00
csky
ddr
devfreq
display dt-bindings: display: sunxi: Fix compatible 2020-02-12 18:32:22 +01:00
dma ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
dsp
edac
eeprom dt-binding: eeprom: at24: add vcc-supply property 2020-01-23 12:42:40 +01:00
extcon
firmware ARM: SoC-related driver updates 2019-12-05 11:43:31 -08:00
fpga
fsi
fuse
gnss
goldfish
gpio This is the bulk of GPIO changes for the v5.6 kernel cycle 2020-01-29 09:43:39 -08:00
gpu dt-bindings: gpu: mali-bifrost: Add Rockchip PX30 2019-12-16 10:32:07 +01:00
h8300
hsi
hwlock
hwmon dt-bindings: Fix paths in schema $id fields 2020-02-05 09:14:57 +00:00
i2c Merge branch 'i2c/for-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2020-02-07 12:54:13 -08:00
i3c
iio ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
infiniband
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2020-02-15 16:49:25 -08:00
interconnect dt-bindings: interconnect: Add Qualcomm MSM8916 DT bindings 2020-01-07 09:30:09 +02:00
interrupt-controller dt-bindings: interrupt-controller: Add binding for NXP INTMUX interrupt multiplexer 2020-01-20 19:10:05 +00:00
iommu dt-bindings: document PASID property for IOMMU masters 2020-01-15 15:59:13 +00:00
ipmi
leds - New Drivers 2020-02-03 14:51:57 +00:00
mailbox dt-bindings: mailbox: qcom: Add clock-name optional property 2019-12-18 22:07:52 -08:00
media dt-bindings: media: csi: Fix clocks description 2020-02-19 19:03:44 -06:00
memory-controllers dt-bindings: memory-controller: Update example for Tegra124 EMC 2020-02-19 19:03:16 -06:00
mfd ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
mips dt-bindings: MIPS: Add Ingenic XBurst based boards. 2020-01-09 09:44:03 -08:00
misc dt-bindings: misc: Document reg for aspeed, p2a-ctrl nodes 2019-12-17 10:35:26 +11:00
mmc dt-bindings: mmc: omap-hsmmc: Fix SDIO interrupt 2020-02-19 18:29:14 -06:00
mtd ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
mux
nds32
net dt-bindings: net: FMan erratum A050385 2020-03-06 21:55:32 -08:00
nios2
nvmem Merge branch 'i2c/for-5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2020-02-07 12:54:13 -08:00
openrisc/opencores
opp dt-bindings: opp: Convert Allwinner H6 OPP to a schema 2019-12-24 14:17:52 -07:00
pci dt-bindings: PCI: intel: Fix dt_binding_check compilation failure 2020-02-04 22:42:20 +00:00
perf
phy ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
pinctrl ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
pmem
power ARM: SoC-related driver updates 2020-02-08 14:04:19 -08:00
powerpc
pps
ptp dt-bindings: ptp: Introduce MII time stamping devices. 2019-12-25 19:51:33 -08:00
pwm ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
regmap
regulator dt-bindings: regulator: add document bindings for mpq7920 2020-01-27 17:23:47 +00:00
remoteproc remoteproc updates for v5.6 2020-02-04 09:06:24 +00:00
reserved-memory
reset ARM: SoC-related driver updates 2020-02-08 14:04:19 -08:00
riscv
rng dt-bindings: rng: add BCM2711 RNG compatible 2019-12-11 16:34:45 +08:00
rtc RTC for 5.6 2020-02-04 07:03:40 +00:00
scsi
security/tpm
serial dt-bindings: serial: Convert STM32 UART to json-schema 2020-01-23 14:34:16 -06:00
serio dt-bindings: Change maintainer address 2019-12-12 18:38:10 -06:00
sifive
siox
slimbus dt-bindings: SLIMBus: add slim devices optional properties 2020-01-14 21:46:47 +01:00
soc cmdq: 2020-01-20 11:26:10 -08:00
sound Merge branch 'asoc-5.6' into asoc-next 2020-01-23 12:36:45 +00:00
soundwire dt-bindings: soundwire: fix example 2020-01-16 17:36:40 +05:30
spi powerpc updates for 5.6 2020-02-04 13:06:46 +00:00
spmi
sram dt-bindings: sram: Convert Allwinner A10 system controller to a schema 2019-12-17 19:53:57 -06:00
staging/iio/adc
thermal dt-bindings: brcm,avs-ro-thermal: Fix binding check issues 2020-01-27 11:43:24 +01:00
timer ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
ufs
usb Devicetree updates for v5.6: 2020-01-30 07:47:58 -08:00
virtio
w1
watchdog linux-watchdog 5.6-rc1 tag 2020-02-07 12:30:16 -08:00
x86
xillybus
.gitignore
ABI.txt
chosen.txt
common-properties.txt
example-schema.yaml
graph.txt
jailhouse.txt
Makefile
numa.txt
property-units.txt
resource-names.txt
submitting-patches.txt
trivial-devices.yaml dt-bindings: Add TI and Infineon VR Controllers as trivial devices 2020-01-15 12:49:09 -06:00
unittest.txt
vendor-prefixes.yaml ARM: Device-tree updates 2020-02-08 13:58:44 -08:00
writing-bindings.txt
xilinx.txt