 716a3dc200
			
		
	
	
	716a3dc200
	
	
	
		
			
			Several platforms are now using the memblock_alloc+memblock_free+
memblock_remove trick to obtain memory which won't be mapped in the
kernel's page tables.  Most platforms do this (correctly) in the
->reserve callback.  However, OMAP has started to call these functions
outside of this callback, and this is extremely unsafe - memory will
not be unmapped, and could well be given out after memblock is no
longer responsible for its management.
So, provide arm_memblock_steal() to perform this function, and ensure
that it panic()s if it is used inappropriately.  Convert everyone
over, including OMAP.
As a result, OMAP with OMAP4_ERRATA_I688 enabled will panic on boot
with this change.  Mark this option as BROKEN and make it depend on
BROKEN.  OMAP needs to be fixed, or 137d105d50 (ARM: OMAP4: Fix
errata i688 with MPU interconnect barriers.) reverted until such
time it can be fixed correctly.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
		
	
			
		
			
				
	
	
		
			11 lines
		
	
	
	
		
			245 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			11 lines
		
	
	
	
		
			245 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_ARM_MEMBLOCK_H
 | |
| #define _ASM_ARM_MEMBLOCK_H
 | |
| 
 | |
| struct meminfo;
 | |
| struct machine_desc;
 | |
| 
 | |
| extern void arm_memblock_init(struct meminfo *, struct machine_desc *);
 | |
| 
 | |
| phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align);
 | |
| 
 | |
| #endif
 |