From: Andi Kleen <ak@xxxxxxxxxxxxxxx> These are not time critical, and using an out of line function saves about 2.5k text on a non force inline kernel. I left the main hotpath user -- readahead -- inline for now. Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx> --- drivers/base/node.c | 72 +++++++++++++++++++++++++++----------------------- 1 files changed, 39 insertions(+), 33 deletions(-) diff --git a/drivers/base/node.c b/drivers/base/node.c index 793f796..0b8e7a2 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -58,6 +58,12 @@ static inline ssize_t node_read_cpulist(struct sys_device *dev, static SYSDEV_ATTR(cpumap, S_IRUGO, node_read_cpumask, NULL); static SYSDEV_ATTR(cpulist, S_IRUGO, node_read_cpulist, NULL); +/* Don't inline */ +static unsigned long my_node_page_state(int node, enum zone_stat_item item) +{ + return node_page_state(node, item); +} + #define K(x) ((x) << (PAGE_SHIFT - 10)) static ssize_t node_read_meminfo(struct sys_device * dev, struct sysdev_attribute *attr, char * buf) @@ -82,16 +88,16 @@ static ssize_t node_read_meminfo(struct sys_device * dev, nid, K(i.totalram), nid, K(i.freeram), nid, K(i.totalram - i.freeram), - nid, K(node_page_state(nid, NR_ACTIVE_ANON) + - node_page_state(nid, NR_ACTIVE_FILE)), - nid, K(node_page_state(nid, NR_INACTIVE_ANON) + - node_page_state(nid, NR_INACTIVE_FILE)), - nid, K(node_page_state(nid, NR_ACTIVE_ANON)), - nid, K(node_page_state(nid, NR_INACTIVE_ANON)), - nid, K(node_page_state(nid, NR_ACTIVE_FILE)), - nid, K(node_page_state(nid, NR_INACTIVE_FILE)), - nid, K(node_page_state(nid, NR_UNEVICTABLE)), - nid, K(node_page_state(nid, NR_MLOCK))); + nid, K(my_node_page_state(nid, NR_ACTIVE_ANON) + + my_node_page_state(nid, NR_ACTIVE_FILE)), + nid, K(my_node_page_state(nid, NR_INACTIVE_ANON) + + my_node_page_state(nid, NR_INACTIVE_FILE)), + nid, K(my_node_page_state(nid, NR_ACTIVE_ANON)), + nid, K(my_node_page_state(nid, NR_INACTIVE_ANON)), + nid, K(my_node_page_state(nid, NR_ACTIVE_FILE)), + nid, K(my_node_page_state(nid, NR_INACTIVE_FILE)), + nid, K(my_node_page_state(nid, NR_UNEVICTABLE)), + nid, K(my_node_page_state(nid, NR_MLOCK))); #ifdef CONFIG_HIGHMEM n += sprintf(buf + n, @@ -123,30 +129,30 @@ static ssize_t node_read_meminfo(struct sys_device * dev, "Node %d AnonHugePages: %8lu kB\n" #endif , - nid, K(node_page_state(nid, NR_FILE_DIRTY)), - nid, K(node_page_state(nid, NR_WRITEBACK)), - nid, K(node_page_state(nid, NR_FILE_PAGES)), - nid, K(node_page_state(nid, NR_FILE_MAPPED)), - nid, K(node_page_state(nid, NR_ANON_PAGES) + nid, K(my_node_page_state(nid, NR_FILE_DIRTY)), + nid, K(my_node_page_state(nid, NR_WRITEBACK)), + nid, K(my_node_page_state(nid, NR_FILE_PAGES)), + nid, K(my_node_page_state(nid, NR_FILE_MAPPED)), + nid, K(my_node_page_state(nid, NR_ANON_PAGES) #ifdef CONFIG_TRANSPARENT_HUGEPAGE - + node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) * + + my_node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) * HPAGE_PMD_NR #endif ), - nid, K(node_page_state(nid, NR_SHMEM)), - nid, node_page_state(nid, NR_KERNEL_STACK) * + nid, K(my_node_page_state(nid, NR_SHMEM)), + nid, my_node_page_state(nid, NR_KERNEL_STACK) * THREAD_SIZE / 1024, - nid, K(node_page_state(nid, NR_PAGETABLE)), - nid, K(node_page_state(nid, NR_UNSTABLE_NFS)), - nid, K(node_page_state(nid, NR_BOUNCE)), - nid, K(node_page_state(nid, NR_WRITEBACK_TEMP)), - nid, K(node_page_state(nid, NR_SLAB_RECLAIMABLE) + - node_page_state(nid, NR_SLAB_UNRECLAIMABLE)), - nid, K(node_page_state(nid, NR_SLAB_RECLAIMABLE)), - nid, K(node_page_state(nid, NR_SLAB_UNRECLAIMABLE)) + nid, K(my_node_page_state(nid, NR_PAGETABLE)), + nid, K(my_node_page_state(nid, NR_UNSTABLE_NFS)), + nid, K(my_node_page_state(nid, NR_BOUNCE)), + nid, K(my_node_page_state(nid, NR_WRITEBACK_TEMP)), + nid, K(my_node_page_state(nid, NR_SLAB_RECLAIMABLE) + + my_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)), + nid, K(my_node_page_state(nid, NR_SLAB_RECLAIMABLE)), + nid, K(my_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)) #ifdef CONFIG_TRANSPARENT_HUGEPAGE , nid, - K(node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) * + K(my_node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) * HPAGE_PMD_NR) #endif ); @@ -167,12 +173,12 @@ static ssize_t node_read_numastat(struct sys_device * dev, "interleave_hit %lu\n" "local_node %lu\n" "other_node %lu\n", - node_page_state(dev->id, NUMA_HIT), - node_page_state(dev->id, NUMA_MISS), - node_page_state(dev->id, NUMA_FOREIGN), - node_page_state(dev->id, NUMA_INTERLEAVE_HIT), - node_page_state(dev->id, NUMA_LOCAL), - node_page_state(dev->id, NUMA_OTHER)); + my_node_page_state(dev->id, NUMA_HIT), + my_node_page_state(dev->id, NUMA_MISS), + my_node_page_state(dev->id, NUMA_FOREIGN), + my_node_page_state(dev->id, NUMA_INTERLEAVE_HIT), + my_node_page_state(dev->id, NUMA_LOCAL), + my_node_page_state(dev->id, NUMA_OTHER)); } static SYSDEV_ATTR(numastat, S_IRUGO, node_read_numastat, NULL); -- 1.7.4.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel