Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: (25 commits) [ARM] 5519/1: amba probe: pass "struct amba_id *" instead of void * [ARM] 5517/1: integrator: don't put clock lookups in __initdata [ARM] 5518/1: versatile: don't put clock lookups in __initdata [ARM] mach-l7200: fix spelling of SYS_CLOCK_OFF [ARM] Double check memmap is actually valid with a memmap has unexpected holes V2 [ARM] realview: fix broadcast tick support [ARM] realview: remove useless smp_cross_call_done() [ARM] smp: fix cpumask usage in ARM SMP code [ARM] 5513/1: Eurotech VIPER SBC: fix compilation error [ARM] 5509/1: ep93xx: clkdev enable UARTS ARM: OMAP2/3: Change omapfb to use clkdev for dispc and rfbi, v2 ARM: OMAP3: Fix HW SAVEANDRESTORE shift define ARM: OMAP3: Fix number of GPIO lines for 34xx [ARM] S3C: Do not set clk->owner field if unset [ARM] S3C2410: mach-bast.c registering i2c data too early [ARM] S3C24XX: Fix unused code warning in arch/arm/plat-s3c24xx/dma.c [ARM] S3C64XX: fix GPIO debug [ARM] S3C64XX: GPIO include cleanup [ARM] nwfpe: fix 'floatx80_is_nan' sparse warning [ARM] nwfpe: Add decleration for ExtendedCPDO ...
This commit is contained in:
@@ -28,7 +28,7 @@ struct amba_id {
|
||||
|
||||
struct amba_driver {
|
||||
struct device_driver drv;
|
||||
int (*probe)(struct amba_device *, void *);
|
||||
int (*probe)(struct amba_device *, struct amba_id *);
|
||||
int (*remove)(struct amba_device *);
|
||||
void (*shutdown)(struct amba_device *);
|
||||
int (*suspend)(struct amba_device *, pm_message_t);
|
||||
|
@@ -1097,6 +1097,32 @@ unsigned long __init node_memmap_size_bytes(int, unsigned long, unsigned long);
|
||||
#define pfn_valid_within(pfn) (1)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_HAS_HOLES_MEMORYMODEL
|
||||
/*
|
||||
* pfn_valid() is meant to be able to tell if a given PFN has valid memmap
|
||||
* associated with it or not. In FLATMEM, it is expected that holes always
|
||||
* have valid memmap as long as there is valid PFNs either side of the hole.
|
||||
* In SPARSEMEM, it is assumed that a valid section has a memmap for the
|
||||
* entire section.
|
||||
*
|
||||
* However, an ARM, and maybe other embedded architectures in the future
|
||||
* free memmap backing holes to save memory on the assumption the memmap is
|
||||
* never used. The page_zone linkages are then broken even though pfn_valid()
|
||||
* returns true. A walker of the full memmap must then do this additional
|
||||
* check to ensure the memmap they are looking at is sane by making sure
|
||||
* the zone and PFN linkages are still valid. This is expensive, but walkers
|
||||
* of the full memmap are extremely rare.
|
||||
*/
|
||||
int memmap_valid_within(unsigned long pfn,
|
||||
struct page *page, struct zone *zone);
|
||||
#else
|
||||
static inline int memmap_valid_within(unsigned long pfn,
|
||||
struct page *page, struct zone *zone)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
|
||||
|
||||
#endif /* !__GENERATING_BOUNDS.H */
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
#endif /* _LINUX_MMZONE_H */
|
||||
|
Reference in New Issue
Block a user