menuconfig AMLOGIC_MEMORY_EXTEND
	bool "AMLOGIC memory extend support"
	depends on AMLOGIC_DRIVER
	depends on AMLOGIC_MODIFY
	default n
	help
		Amlogic memory extend is drivers which extend for memory
		management functions, can be used for memory debug
		or other features.
		Select it if sure

config AMLOGIC_PAGE_TRACE
	bool "Amlogic trace for page allocate"
	depends on AMLOGIC_MEMORY_EXTEND
	depends on KALLSYMS
	depends on !NODES_SHIFT
	default y
	help
		Amlogic page trace will record function address of caller for page
		allocate/free, according with allocate flags and order. trace
		information is stored in a pre-allocated memory block. And can be shown
		with allocate page count information of each caller functions from
		/proc/pagetrace

config AMLOGIC_SLAB_TRACE
	bool "Amlogic trace for slab usage"
	depends on SLUB
	depends on AMLOGIC_PAGE_TRACE
	default n
	help
		Amlogic slab trace will record function address of caller for slab
		allocate/free(kmalloc-xxxx only). trace information is stored in
		a rb tree. And can be shown with allocate size information of
		each caller functions from /proc/slabtrace

config AMLOGIC_RAMDUMP
	bool "Amlogic RAM DUMP support"
	depends on AMLOGIC_MEMORY_EXTEND
	depends on PANIC_TIMEOUT != 0
	default n
	help
		RAM dump support for amlogic platform, when system is rebooted
		after panic/watch dog reboot, you may need this option to save
		whole ram to /data/ partition. Which can be used for analyze
		crash reason.

config AMLOGIC_CMA
	bool "Amlogic CMA change"
	depends on AMLOGIC_MEMORY_EXTEND
	depends on CMA
	default y
	help
		Amlogic CMA optimization for cma alloc/free problems
		Including policy change of CMA usage. It is used to
		improve CMA stability and speed.
		Select it if sure

config AMLOGIC_KASAN32
	bool "Amlogic KASAN support for 32bit kernel"
	depends on AMLOGIC_MEMORY_EXTEND
	depends on KASAN
	depends on !64BIT
	default y
	help
		Amlogic implementation for KASAN on 32bit ARM kernel.
		Which can help to debug memory of use-after-free,
		out-of-bounds and other problems. This config will
		change memory layout.

config AMLOGIC_PHYS_OFFSET
	hex "Physical address of main memory" if MMU
	depends on AMLOGIC_KASAN32
	default 0x00000000
	help
		Please provide the physical address corresponding to the
		location of main memory in your system.

config AMLOGIC_SLUB_DEBUG
	bool "Amlogic debug for trace all slub objects"
	depends on AMLOGIC_PAGE_TRACE
	depends on SLUB
	default n
	help
		This option open trace debug for each slub objects. And will give
		slub objdect allocator information when detected bad objects
