linux/arch/arm
Joonsoo Kim 3d2054ad8c ARM: CMA: avoid double mapping to the CMA area if CONFIG_HIGHMEM=y
CMA area is now managed by the separate zone, ZONE_MOVABLE, to fix many
MM related problems.  In this implementation, if CONFIG_HIGHMEM = y,
then ZONE_MOVABLE is considered as HIGHMEM and the memory of the CMA
area is also considered as HIGHMEM.  That means that they are considered
as the page without direct mapping.  However, CMA area could be in a
lowmem and the memory could have direct mapping.

In ARM, when establishing a new mapping for DMA, direct mapping should
be cleared since two mapping with different cache policy could cause
unknown problem.  With this patch, PageHighmem() for the CMA memory
located in lowmem returns true so that the function for DMA mapping
cannot notice whether it needs to clear direct mapping or not,
correctly.  To handle this situation, this patch always clears direct
mapping for such CMA memory.

Link: http://lkml.kernel.org/r/1512114786-5085-4-git-send-email-iamjoonsoo.kim@lge.com
Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Tested-by: Tony Lindgren <tony@atomide.com>
Cc: "Aneesh Kumar K . V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Laura Abbott <lauraa@codeaurora.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Mel Gorman <mgorman@techsingularity.net>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Michal Nazarewicz <mina86@mina86.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-04-11 10:28:32 -07:00
..
boot Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-04-09 17:04:10 -07:00
common Merge branches 'fixes', 'misc', 'sa1111' and 'sa1100-for-next' into for-next 2018-01-21 15:38:10 +00:00
configs ARM: multi_v7_defconfig: add NXP FlexCAN IP support 2018-03-27 15:38:31 +02:00
crypto crypto: arm,arm64 - Fix random regeneration of S_shipped 2018-03-23 23:43:19 +08:00
firmware
include ARM: 2018-04-09 11:42:31 -07:00
kernel Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2018-04-09 09:19:30 -07:00
kvm kvm/arm fixes for 4.16, take 2 2018-03-19 17:43:01 +00:00
lib Merge branches 'fixes', 'misc', 'sa1111' and 'sa1100-for-next' into for-next 2018-01-21 15:38:10 +00:00
mach-actions
mach-alpine
mach-artpec
mach-asm9260
mach-aspeed
mach-at91 ARM: at91: Kconfig: Update company to Microchip 2018-02-28 16:21:51 +01:00
mach-axxia
mach-bcm
mach-berlin
mach-clps711x ARM: clps711x: mark clps711x_compat as const 2018-02-22 17:42:42 +01:00
mach-cns3xxx
mach-davinci ARM: SoC platform updates for 4.17 2018-04-05 21:21:08 -07:00
mach-digicolor
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx
mach-exynos ARM: EXYNOS: Simplify code in coupled CPU idle hot path 2018-03-21 18:51:39 +01:00
mach-footbridge
mach-gemini
mach-highbank
mach-hisi
mach-imx ARM: SoC platform updates for 4.17 2018-04-05 21:21:08 -07:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone
mach-ks8695
mach-lpc18xx
mach-lpc32xx
mach-mediatek
mach-meson
mach-mmp mtd: nand: remove useless fields from pxa3xx NAND platform data 2018-03-02 21:51:41 +01:00
mach-moxart
mach-mv78xx0
mach-mvebu ARM: mvebu: Fix broken PL310_ERRATA_753970 selects 2018-02-13 16:39:51 +01:00
mach-mxs
mach-netx
mach-nomadik
mach-npcm arm: npcm: modify configuration for the NPCM7xx BMC. 2018-04-05 14:49:08 +02:00
mach-nspire ARM: nspire: Remove unneeded nspire_map_io() 2018-03-07 16:07:35 +01:00
mach-omap1 Move omap timer to drivers for 4.17 2018-03-07 16:16:07 +01:00
mach-omap2 ARM: omap2: fix am43xx build without L2X0 2018-04-05 11:06:41 +02:00
mach-orion5x ARM: orion5x: Revert commit 4904dbda41. 2018-02-26 13:41:47 -05:00
mach-oxnas
mach-picoxcell
mach-prima2
mach-pxa ARM: SoC platform updates for 4.17 2018-04-05 21:21:08 -07:00
mach-qcom
mach-realview
mach-rockchip ARM: rockchip: Set name of pmu regmap_config in smp code 2018-03-12 11:09:36 +01:00
mach-rpc
mach-s3c24xx spi: spi-gpio: Rewrite to use GPIO descriptors 2018-02-14 16:02:41 +00:00
mach-s3c64xx spi: spi-gpio: Rewrite to use GPIO descriptors 2018-02-14 16:02:41 +00:00
mach-s5pv210
mach-sa1100 ARM: sa1100/simpad: switch simpad CF to use gpiod APIs 2018-04-06 15:53:22 +01:00
mach-shmobile ARM: shmobile: rcar-gen2: Add watchdog support 2018-03-13 20:54:16 +01:00
mach-socfpga ARM: socfpga: PM: Drop useless check for PM_SUSPEND_STANDBY 2018-03-07 16:08:20 +01:00
mach-spear
mach-sti
mach-stm32 ARM: stm32: restore reboot capabilities 2018-03-05 09:11:58 +01:00
mach-sunxi ARM: sunxi: mc-smp: Split out SoC-specific device node lookup sequence 2018-03-10 16:14:57 +08:00
mach-tango
mach-tegra
mach-u300
mach-uniphier
mach-ux500 ARM: ux500: Fix PMU IRQ regression 2018-03-07 16:42:38 +01:00
mach-versatile
mach-vexpress
mach-vt8500 arm: vt8500: kconfig: Remove blank help text 2018-02-02 23:53:10 +09:00
mach-w90x900
mach-zx
mach-zynq
mm ARM: CMA: avoid double mapping to the CMA area if CONFIG_HIGHMEM=y 2018-04-11 10:28:32 -07:00
net bpf, arm: remove obsolete exception handling from div/mod 2018-01-26 16:42:07 -08:00
nwfpe
oprofile
plat-iop
plat-omap ARM: SoC platform updates for 4.17 2018-04-05 21:21:08 -07:00
plat-orion ARM: orion: fix orion_ge00_switch_board_info initialization 2018-02-22 17:48:39 +01:00
plat-pxa
plat-samsung
plat-versatile
probes
tools
vdso
vfp ARM: 8746/1: vfp: Go back to clearing vfp_current_hw_state[] 2018-03-24 14:27:48 +00:00
xen
Kconfig Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2018-04-09 09:19:30 -07:00
Kconfig-nommu
Kconfig.debug ARM: 8747/1: make CONFIG_DEBUG_WX depend on MMU 2018-03-24 14:27:48 +00:00
Makefile arm: npcm: add basic support for Nuvoton BMCs 2018-03-06 17:54:23 +01:00