Madalin Bucur
c211a30c18
dt-bindings: net: FMan erratum A050385
...
[ Upstream commit 26d5bb9e4c4b541c475751e015072eb2cbf70d15 ]
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
..
ABI
PM / devfreq: Add new name attribute for sysfs
2020-02-05 21:22:40 +00:00
accounting
docs: add some documentation dirs to the driver-api book
2019-07-15 11:03:02 -03:00
admin-guide
ACPI: watchdog: Allow disabling WDAT at boot
2020-03-21 08:11:47 +01:00
arm
Documentation/arm/samsung-s3c24xx: Remove stray U+FEFF character to fix title
2019-08-12 15:25:32 -06:00
arm64
mm: Avoid creating virtual address aliases in brk()/mmap()/mremap()
2020-02-28 17:22:21 +01:00
block
docs: block: null_blk: enhance document style
2019-09-11 16:04:22 -06:00
bpf
bpf/flow_dissector: document flags
2019-07-25 18:00:41 -07:00
cdrom
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
core-api
Modules fixes for v5.4-rc3
2019-10-11 10:19:24 -07:00
cpu-freq
Documentation: cpufreq: Update policy notifier documentation
2019-09-02 22:44:05 +02:00
crypto
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
2019-09-18 12:11:14 -07:00
dev-tools
mm, page_owner: decouple freeing stack trace from debug_pagealloc
2019-10-14 15:04:00 -07:00
devicetree
dt-bindings: net: FMan erratum A050385
2020-04-01 11:01:52 +02:00
doc-guide
docs: remove extra conf.py files
2019-07-17 06:57:52 -03:00
driver-api
This is the bulk of pin control changes for the v5.4 kernel
2019-09-19 14:19:33 -07:00
EDID
docs: driver-api: add a series of orphaned documents
2019-07-15 11:03:02 -03:00
fault-injection
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
fb
fbdev: fix numbering of fbcon options
2020-02-24 08:36:42 +01:00
features
It's a somewhat calmer cycle for docs this time, as the churn of the mass
2019-09-17 16:22:26 -07:00
filesystems
cifs_atomic_open(): fix double-put on late allocation failure
2020-03-18 07:17:51 +01:00
firmware-guide
Documentation: ACPI: DSD: Convert LED documentation to ReST
2019-08-20 23:53:46 +02:00
firmware_class
fpga
Documentation: fpga: dfl: add descriptions for virtualization and new interfaces.
2019-09-03 19:35:42 -07:00
gpu
Merge drm/drm-next into drm-intel-next-queued
2019-08-22 00:10:36 -07:00
hid
docs: add some documentation dirs to the driver-api book
2019-07-15 11:03:02 -03:00
hwmon
hwmon: docs: Extend inspur-ipsps1 title underline
2019-10-07 05:56:57 -07:00
i2c
docs: i2c: convert to ReST and add to driver-api bookset
2019-07-31 13:25:27 -06:00
ia64
docs: add SPDX tags to new index files
2019-07-15 11:03:03 -03:00
ide
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
iio
docs: add some documentation dirs to the driver-api book
2019-07-15 11:03:02 -03:00
infiniband
Documentation/infiniband: update name of some functions
2019-09-13 16:55:55 -03:00
input
Input: docs: fix spelling mistake "potocol" -> "protocol"
2019-08-06 11:24:49 -06:00
ioctl
fs-verity: add UAPI header
2019-07-28 16:59:16 -07:00
isdn
docs: isdn: convert to ReST and add to kAPI bookset
2019-07-31 13:30:25 -06:00
kbuild
modpost: move the namespace field in Module.symvers last
2020-03-25 08:25:55 +01:00
kernel-hacking
docs: Add documentation for Symbol Namespaces
2019-09-10 10:30:49 +02:00
leds
leds: core: Add support for composing LED class device names
2019-07-25 20:07:52 +02:00
livepatch
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
locking
doc 🔒 remove reference to clever use of read-write lock
2019-09-14 01:53:27 -06:00
m68k
docs: README.buddha: convert to ReST and add to m68k book
2019-07-31 13:30:10 -06:00
maintainer
docs: Fix typo on pull requests guide
2019-08-12 15:14:14 -06:00
media
drm main pull for 5.4-rc1
2019-09-19 16:24:24 -07:00
mic
docs: driver-api: add remaining converted dirs to it
2019-07-15 11:03:03 -03:00
mips
Main MIPS changes for v5.4:
2019-09-22 09:30:30 -07:00
misc-devices
Docs: misc: xilinx_sdfec: Add documentation
2019-08-15 17:54:38 +02:00
netlabel
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
networking
netfilter: nf_flowtable: fix documentation
2020-03-05 16:43:51 +01:00
nios2
docs: nios2: add it to the main Documentation body
2019-07-31 13:31:51 -06:00
openrisc
docs: openrisc: convert to ReST and add to documentation body
2019-07-31 13:30:20 -06:00
parisc
docs: parisc: convert to ReST and add to documentation body
2019-07-31 13:30:15 -06:00
PCI
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
2019-08-27 14:23:31 -07:00
pcmcia
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
power
Merge branches 'pm-opp', 'pm-qos', 'acpi-pm', 'pm-domains' and 'pm-tools'
2019-09-17 09:49:19 +02:00
powerpc
docs: powerpc: Add missing documentation reference
2019-09-17 23:59:34 +10:00
process
Documentation/process: Add fallthrough pseudo-keyword
2019-10-11 09:26:05 -07:00
RCU
Merge branches 'consolidate.2019.08.01b', 'fixes.2019.08.12a', 'lists.2019.08.13a' and 'torture.2019.08.01b' into HEAD
2019-08-13 14:30:30 -07:00
riscv
It's a somewhat calmer cycle for docs this time, as the churn of the mass
2019-09-17 16:22:26 -07:00
s390
Documentation/s390: remove outdated debugging390 documentation
2019-08-21 12:41:43 +02:00
scheduler
sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices
2019-08-08 09:09:30 +02:00
scsi
scsi: smartpqi: Update attribute name to driver_version
2020-01-17 19:48:27 +01:00
security
Merge branch 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity
2019-09-27 19:37:27 -07:00
sh
docs: remove extra conf.py files
2019-07-17 06:57:52 -03:00
sound
sound updates for 5.4
2019-09-17 17:43:33 -07:00
sparc
docs: add arch doc directories to the index
2019-07-15 11:03:01 -03:00
sphinx
Documentation: sphinx: Don't parse socket() as identifier reference
2019-08-12 14:55:30 -06:00
sphinx-static
spi
spi: docs: convert to ReST and add it to the kABI bookset
2019-07-31 14:13:13 -06:00
target
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
timers
docs: add some directories to the main documentation index
2019-07-15 11:03:03 -03:00
trace
Tracing updates:
2019-09-20 11:19:48 -07:00
translations
doc: arm64: fix grammar dtb placed in no attributes region
2019-09-06 08:44:34 -06:00
usb
USB: rio500: Remove Rio 500 kernel driver
2019-10-04 10:53:36 +02:00
userspace-api
docs: remove extra conf.py files
2019-07-17 06:57:52 -03:00
virt
KVM/Hyper-V: Add new KVM capability KVM_CAP_HYPERV_DIRECT_TLBFLUSH
2019-09-24 13:37:13 +02:00
virtual
cpuidle: add haltpoll governor
2019-07-30 17:27:37 +02:00
vm
mm: treewide: clarify pgtable_page_{ctor,dtor}() naming
2019-09-26 10:10:44 -07:00
w1
docs: w1: convert to ReST and add to the kAPI group of docs
2019-07-31 14:16:17 -06:00
watchdog
linux-watchdog 5.4-rc1 tag
2019-09-27 11:17:38 -07:00
x86
x86/speculation/taa: Add documentation for TSX Async Abort
2019-10-28 08:37:00 +01:00
xtensa
docs: add arch doc directories to the index
2019-07-15 11:03:01 -03:00
.gitignore
atomic_bitops.txt
atomic_t.txt
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2019-07-08 16:12:03 -07:00
bus-virt-phys-mapping.txt
Changes
CodingStyle
conf.py
docs: conf.py: only use CJK if the font is available
2019-07-17 06:57:51 -03:00
COPYING-logo
docs: logo.txt: rename it to COPYING-logo
2019-07-15 09:20:27 -03:00
crc32.txt
debugging-modules.txt
debugging-via-ohci1394.txt
digsig.txt
DMA-API-HOWTO.txt
docs: DMA-API-HOWTO.txt: fix an unmarked code block
2019-07-15 09:20:24 -03:00
DMA-API.txt
dma-mapping: remove dma_release_declared_memory
2019-09-04 11:13:19 +02:00
DMA-attributes.txt
DMA-ISA-LPC.txt
docutils.conf
dontdiff
kbuild: create *.mod with full directory path and remove MODVERDIR
2019-07-18 02:19:31 +09:00
futex-requeue-pi.txt
hwspinlock.txt
index.rst
Main MIPS changes for v5.4:
2019-09-22 09:30:30 -07:00
io-mapping.txt
io_ordering.txt
IPMI.txt
IRQ-affinity.txt
IRQ-domain.txt
IRQ.txt
irqflags-tracing.txt
Kconfig
kobject.txt
kprobes.txt
kref.txt
logo.gif
lzo.txt
mailbox.txt
Makefile
memory-barriers.txt
docs: fix broken doc references due to renames
2019-07-17 06:57:51 -03:00
nommu-mmap.txt
padata.txt
padata: allocate workqueue internally
2019-09-13 21:15:39 +10:00
percpu-rw-semaphore.txt
pi-futex.txt
docs: locking: convert docs to ReST and rename to *.rst
2019-07-15 08:53:27 -03:00
preempt-locking.txt
rbtree.txt
docs: rbtree.txt: fix Sphinx build warnings
2019-07-15 09:20:24 -03:00
remoteproc.txt
robust-futex-ABI.txt
robust-futexes.txt
rpmsg.txt
speculation.txt
static-keys.txt
SubmittingPatches
tee.txt
this_cpu_ops.txt
unaligned-memory-access.txt
xz.txt