Hi Andrew
Current sizeof(percpu_data) is NR_CPUS*sizeof(void *)
This trivial patch makes percpu_data real size depends on
highest_possible_processor_id() instead of NR_CPUS
percpu_data allocations are not performance critical, we can spend few CPU
cycles and save some ram.
This patch should replace remove-unused-blkp-field-in-percpu_data.patch in mm tree
Thank you
Signed-off-by: Eric Dumazet <[email protected]>
--- linux-2.6.15/include/linux/percpu.h 2006-01-03 04:21:10.000000000 +0100
+++ linux-2.6.15-edum/include/linux/percpu.h 2006-01-05 14:45:48.000000000 +0100
@@ -18,8 +18,7 @@
#ifdef CONFIG_SMP
struct percpu_data {
- void *ptrs[NR_CPUS];
- void *blkp;
+ void *ptrs[1]; /* real size depends on highest_possible_processor_id() */
};
/*
--- linux-2.6.15/mm/slab.c 2006-01-03 04:21:10.000000000 +0100
+++ linux-2.6.15-edum/mm/slab.c 2006-01-05 14:37:13.000000000 +0100
@@ -2949,7 +2949,8 @@
void *__alloc_percpu(size_t size, size_t align)
{
int i;
- struct percpu_data *pdata = kmalloc(sizeof (*pdata), GFP_KERNEL);
+ size_t pdsize = highest_possible_processor_id() * sizeof(void *);
+ struct percpu_data *pdata = kmalloc(pdsize, GFP_KERNEL);
if (!pdata)
return NULL;
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]