Merge branch 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: [POWERPC] Add arch-specific walk_memory_remove() for 64-bit powerpc [POWERPC] Enable hotplug memory remove for 64-bit powerpc [POWERPC] Add remove_memory() for 64-bit powerpc [POWERPC] Make cell IOMMU fixed mapping printk more useful [POWERPC] Fix potential cell IOMMU bug when switching back to default DMA ops [POWERPC] Don't enable cell IOMMU fixed mapping if there are no dma-ranges [POWERPC] Fix cell IOMMU null pointer explosion on old firmwares [POWERPC] spufs: Fix timing dependent false return from spufs_run_spu [POWERPC] spufs: No need to have a runnable SPU for libassist update [POWERPC] spufs: Update SPU_Status[CISHP] in backing runcntl write [POWERPC] spufs: Fix state_mutex leaks [POWERPC] Disable G5 NAP mode during SMU commands on U3
This commit is contained in:
@ -129,6 +129,39 @@ int __devinit arch_add_memory(int nid, u64 start, u64 size)
|
||||
return __add_pages(zone, start_pfn, nr_pages);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTREMOVE
|
||||
int remove_memory(u64 start, u64 size)
|
||||
{
|
||||
unsigned long start_pfn, end_pfn;
|
||||
int ret;
|
||||
|
||||
start_pfn = start >> PAGE_SHIFT;
|
||||
end_pfn = start_pfn + (size >> PAGE_SHIFT);
|
||||
ret = offline_pages(start_pfn, end_pfn, 120 * HZ);
|
||||
if (ret)
|
||||
goto out;
|
||||
/* Arch-specific calls go here - next patch */
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_MEMORY_HOTREMOVE */
|
||||
|
||||
/*
|
||||
* walk_memory_resource() needs to make sure there is no holes in a given
|
||||
* memory range. On PPC64, since this range comes from /sysfs, the range
|
||||
* is guaranteed to be valid, non-overlapping and can not contain any
|
||||
* holes. By the time we get here (memory add or remove), /proc/device-tree
|
||||
* is updated and correct. Only reason we need to check against device-tree
|
||||
* would be if we allow user-land to specify a memory range through a
|
||||
* system call/ioctl etc. instead of doing offline/online through /sysfs.
|
||||
*/
|
||||
int
|
||||
walk_memory_resource(unsigned long start_pfn, unsigned long nr_pages, void *arg,
|
||||
int (*func)(unsigned long, unsigned long, void *))
|
||||
{
|
||||
return (*func)(start_pfn, nr_pages, arg);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MEMORY_HOTPLUG */
|
||||
|
||||
void show_mem(void)
|
||||
|
Reference in New Issue
Block a user