linux-sg2042/arch
Eugeniy Paltsev eb2777397f ARC: dma [non-IOC] setup SMP_CACHE_BYTES and cache_line_size
As for today we don't setup SMP_CACHE_BYTES and cache_line_size for
ARC, so they are set to L1_CACHE_BYTES by default. L1 line length
(L1_CACHE_BYTES) might be easily smaller than L2 line (which is
usually the case BTW). This breaks code.

For example this breaks ethernet infrastructure on HSDK/AXS103 boards
with IOC disabled, involving manual cache flushes
Functions which alloc and manage sk_buff packet data area rely on
SMP_CACHE_BYTES define. In the result we can share last L2 cache
line in sk_buff linear packet data area between DMA buffer and
some useful data in other structure. So we can lose this data when
we invalidate DMA buffer.

   sk_buff linear packet data area
                |
                |
                |         skb->end        skb->tail
                V            |                |
                             V                V
----------------------------------------------.
      packet data            | <tail padding> |  <useful data in other struct>
----------------------------------------------.

---------------------.--------------------------------------------------.
     SLC line        |             SLC (L2 cache) line (128B)           |
---------------------.--------------------------------------------------.
        ^                                     ^
        |                                     |
     These cache lines will be invalidated when we invalidate skb
     linear packet data area before DMA transaction starting.

This leads to issues painful to debug as it reproduces only if
(sk_buff->end - sk_buff->tail) < SLC_LINE_SIZE and
if we have some useful data right after sk_buff->end.

Fix that by hardcode SMP_CACHE_BYTES to max line length we may have.

Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
2018-07-27 13:12:45 -07:00
..
alpha alpha: fix osf_wait4() breakage 2018-07-22 11:51:30 -07:00
arc ARC: dma [non-IOC] setup SMP_CACHE_BYTES and cache_line_size 2018-07-27 13:12:45 -07:00
arm ARM: SoC fixes for 4.18-rc 2018-07-21 17:27:42 -07:00
arm64 arm64: neon: Fix function may_use_simd() return error status 2018-07-11 17:02:02 +01:00
c6x Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 20:27:54 -07:00
h8300 Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 20:27:54 -07:00
hexagon hexagon: drop the unused variable zero_page_mask 2018-06-15 07:55:25 +09:00
ia64 mm: make vm_area_alloc() initialize core fields 2018-07-21 15:24:03 -07:00
m68k m68k: fix "bad page state" oops on ColdFire boot 2018-07-02 10:05:13 +10:00
microblaze Microblaze patches for 4.18-rc3 2018-06-27 09:49:30 -07:00
mips MIPS: Fix ioremap() RAM check 2018-07-05 14:43:21 -07:00
nds32 nds32: fix build error "relocation truncated to fit: R_NDS32_25_PCREL_RELA" when 2018-07-05 16:13:47 +08:00
nios2 Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-06-04 20:27:54 -07:00
openrisc openrisc: entry: Fix delay slot exception detection 2018-07-01 16:48:24 +09:00
parisc parisc: Build kernel without -ffunction-sections 2018-06-29 17:27:20 +02:00
powerpc powerpc/powernv: Fix save/restore of SPRG3 on entry/exit from stop (idle) 2018-07-18 20:40:17 +10:00
riscv RISC-V: Fix the rv32i kernel build 2018-07-04 14:12:53 -07:00
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2018-07-06 09:14:34 -07:00
sh arch/*: Kconfig: fix documentation for NMI watchdog 2018-06-15 12:48:59 -03:00
sparc arch/*: Kconfig: fix documentation for NMI watchdog 2018-06-15 12:48:59 -03:00
um Solve a series of broken links for files under Documentation: 2018-06-17 05:25:18 +09:00
unicore32 docs: Fix some broken references 2018-06-15 18:10:01 -03:00
x86 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-07-21 17:25:49 -07:00
xtensa docs: Fix some broken references 2018-06-15 18:10:01 -03:00
.gitignore
Kconfig docs: Fix some broken references 2018-06-15 18:10:01 -03:00