Re: 2.6.17-mm6

From: Andrew Morton
Date: Wed Jul 05 2006 - 18:45:24 EST


"Keith Mannthey" <kmannth@xxxxxxxxx> wrote:
>
> On 7/3/06, Andrew Morton <akpm@xxxxxxxx> wrote:
> >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.17/2.6.17-mm6/
> >
> >
>
> Moving from -mm4 to -mm6 I ran into this while trying to boot....
> <snip>
> Could not allocate 16 bytes percpu data
> Could not allocate 16 bytes percpu data
> sd_mod: Unknown symbol scsi_print_sense_hdr
> sd_mod: Unknown symbol scsi_mode_sense
> sd_mod: Unknown symbol scsi_device_get
> sd_mod: Unknown symbol scsi_get_sense_info_fld
> <snip>
>
> sd_mod (and later aacraid) are built into my initrd and loaded during boot.
>
> I doubled PERCPU_ENOUGH_ROOM to 65536 and was able to boot. I am not
> sure what is eating all the percpu room on the system. I was using
> this config with -mm4 just fine.
>
> I attached the dmesg and .config
>

Looks like we simply ran out. Why?...

patches/genirq-x86_64-irq-make-vector_irq-per-cpu.patch:+DEFINE_PER_CPU(vector_irq_t, vector_irq) = {
patches/mm-implement-swap-prefetching.patch:+static DEFINE_PER_CPU(struct pagevec, lru_add_tail_pvecs) = { 0, };
patches/origin.patch:+static DEFINE_PER_CPU(u64 *, tce_page) = NULL;
patches/origin.patch:+DEFINE_PER_CPU(struct sys_device, device_mce);
patches/origin.patch:+static DEFINE_PER_CPU(struct threshold_bank *, threshold_banks[NR_BANKS]);
patches/origin.patch:+static DEFINE_PER_CPU(struct rq, runqueues);
patches/origin.patch:+DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};
patches/per-task-delay-accounting-taskstats-interface.patch:+static DEFINE_PER_CPU(__u32, taskstats_seqnum) = { 0 };
patches/readahead-state-based-method-aging-accounting.patch:+DEFINE_PER_CPU(unsigned long, readahead_aging);
patches/x86_64-mm-add-performance-counter-reservation-framework-for-up-kernels.patch:+static DEFINE_PER_CPU(unsigned long, perfctr_nmi_owner);
patches/x86_64-mm-add-performance-counter-reservation-framework-for-up-kernels.patch:+static DEFINE_PER_CPU(unsigned long, evntsel_nmi_owner[3]);
patches/x86_64-mm-add-performance-counter-reservation-framework-for-up-kernels.patch:+static DEFINE_PER_CPU(unsigned, perfctr_nmi_owner);
patches/x86_64-mm-add-performance-counter-reservation-framework-for-up-kernels.patch:+static DEFINE_PER_CPU(unsigned, evntsel_nmi_owner[2]);
patches/x86_64-mm-add-smp-support-on-i386-to-reservation-framework.patch:+static DEFINE_PER_CPU(struct nmi_watchdog_ctlblk, nmi_watchdog_ctlblk);
patches/x86_64-mm-add-smp-support-on-x86_64-to-reservation-framework.patch:+static DEFINE_PER_CPU(struct nmi_watchdog_ctlblk, nmi_watchdog_ctlblk);

Per-cpuifying the 2.5 kbyte runqueue struct will have hurt.

[does readelf --section-headers drivers/scsi/sd_mod.ko, wonders why
.data.percpu isn't there]

Are you able to add this, see if we can work out where it all went?

--- a/kernel/module.c~a
+++ a/kernel/module.c
@@ -340,6 +340,9 @@ static void *percpu_modalloc(unsigned lo
unsigned int i;
void *ptr;

+ printk("%s: allocating %lu bytes for module %s (vmlinux:%lu)\n",
+ __FUNCTION__, size, name, block_size(pcpu_size[0]));
+
if (align > SMP_CACHE_BYTES) {
printk(KERN_WARNING "%s: per-cpu alignment %li > %i\n",
name, align, SMP_CACHE_BYTES);
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/