[patch] mmu_context_init needs to run earlier

Nathan Lynch nathanl at austin.ibm.com
Wed Nov 3 08:55:33 EST 2004


On Tue, 2004-11-02 at 00:05, Benjamin Herrenschmidt wrote:
> On Mon, 2004-11-01 at 23:59 -0600, Nathan Lynch wrote:
> > On Tue, 2004-11-02 at 15:47 +1100, Benjamin Herrenschmidt wrote:
> > > Do you have a backtrace of who is trying to get a context that
> > > early ?
> > > 
> > > If it's some call of usermode helpers, I doubt it's very sane to do that
> > > before the arch initcalls have run ! It would be interesting to know who
> > > is triggering it.
> > > 
> > 
> > Sure, I inserted a WARN_ON in init_new_context.  I see several of these
> > before hitting the BUG_ON in mmu_context_init.  I'm assuming these are
> > from the driver core trying to run /sbin/hotplug.
> 
> Yah. It would be interesting to find out who is triggering those calls
> (what drivers are probed that early during boot). It doesn't happen on
> my g5 for some reason.

Ok, here's a boot log with kobject debugging turned on.  I can't
interpret all of this but I believe a couple of them are due to
sysdev_class_register for cpus and nodes.

I don't know why I'm the only person running into this -- maybe it's
something to do with my turning on every possible debug option ;)

Regardless, I've got a better patch (I think) for the mmu context thing
on the way.

checking if image is initramfs... it is
Freeing initrd memory: 1939k freed
subsystem devices: registering
kobject devices: registering. parent: <NULL>, set: <NULL>
subsystem bus: registering
kobject bus: registering. parent: <NULL>, set: <NULL>
subsystem class: registering
kobject class: registering. parent: <NULL>, set: <NULL>
subsystem firmware: registering
kobject firmware: registering. parent: <NULL>, set: <NULL>
kobject platform: registering. parent: <NULL>, set: devices
subsystem platform: registering
kobject platform: registering. parent: <NULL>, set: bus
kobject_hotplug
fill_kobj_path: path = '/bus/platform'
kobject_hotplug: /sbin/hotplug bus seq=1 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/platform SUBSYSTEM=bus
kobject_hotplug - call_usermodehelper returned -1
kobject devices: registering. parent: platform, set: <NULL>
kobject_hotplug
fill_kobj_path: path = '/bus/platform/devices'
kobject_hotplug: /sbin/hotplug bus seq=2 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/platform/devices SUBSYSTEM=bus
kobject_hotplug - call_usermodehelper returned -1
kobject drivers: registering. parent: platform, set: <NULL>
kobject_hotplug
fill_kobj_path: path = '/bus/platform/drivers'
kobject_hotplug: /sbin/hotplug bus seq=3 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/platform/drivers SUBSYSTEM=bus
kobject_hotplug - call_usermodehelper returned -1
subsystem system: registering
kobject system: registering. parent: devices, set: <NULL>
kobject cpu: registering. parent: <NULL>, set: system
kobject_hotplug
fill_kobj_path: path = '/devices/system/cpu'
kobject_hotplug: /sbin/hotplug system seq=4 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/devices/system/cpu SUBSYSTEM=system
kobject_hotplug - call_usermodehelper returned -1
subsystem kernel: registering
kobject kernel: registering. parent: <NULL>, set: <NULL>
NET: Registered protocol family 16
subsystem of_platform: registering
kobject of_platform: registering. parent: <NULL>, set: bus
kobject_hotplug
fill_kobj_path: path = '/bus/of_platform'
kobject_hotplug: /sbin/hotplug bus seq=5 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/of_platform SUBSYSTEM=bus
kobject devices: registering. parent: of_platform, set: <NULL>
kobject_hotplug
fill_kobj_path: path = '/bus/of_platform/devices'
kobject_hotplug: /sbin/hotplug bus seq=6 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/of_platform/devices SUBSYSTEM=bus
kobject drivers: registering. parent: of_platform, set: <NULL>
kobject_hotplug
fill_kobj_path: path = '/bus/of_platform/drivers'
kobject_hotplug: /sbin/hotplug bus seq=7 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/of_platform/drivers SUBSYSTEM=bus
subsystem pci_bus: registering
kobject pci_bus: registering. parent: <NULL>, set: class
kobject_hotplug
fill_kobj_path: path = '/class/pci_bus'
kobject_hotplug: /sbin/hotplug class seq=8 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/class/pci_bus SUBSYSTEM=class
subsystem pci: registering
kobject pci: registering. parent: <NULL>, set: bus
kobject_hotplug
fill_kobj_path: path = '/bus/pci'
kobject_hotplug: /sbin/hotplug bus seq=9 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/pci SUBSYSTEM=bus
kobject devices: registering. parent: pci, set: <NULL>
kobject_hotplug
fill_kobj_path: path = '/bus/pci/devices'
kobject_hotplug: /sbin/hotplug bus seq=10 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/pci/devices SUBSYSTEM=bus
kobject drivers: registering. parent: pci, set: <NULL>
kobject_hotplug
fill_kobj_path: path = '/bus/pci/drivers'
kobject_hotplug: /sbin/hotplug bus seq=11 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/bus/pci/drivers SUBSYSTEM=bus
subsystem tty: registering
kobject tty: registering. parent: <NULL>, set: class
kobject_hotplug
fill_kobj_path: path = '/class/tty'
kobject_hotplug: /sbin/hotplug class seq=12 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/class/tty SUBSYSTEM=class
kobject node: registering. parent: <NULL>, set: system
kobject_hotplug
fill_kobj_path: path = '/devices/system/node'
kobject_hotplug: /sbin/hotplug system seq=13 HOME=/ PATH=/sbin:/bin:/usr/sbin:/usr/bin ACTION=add DEVPATH=/devices/system/node SUBSYSTEM=system
kernel BUG in mmu_context_init at arch/ppc64/mm/init.c:528!
cpu 0x1: Vector: 700 (Program Check) at [c0000000047cbb60]
    pc: c000000000439fa4: .mmu_context_init+0x4c/0x68
    lr: c000000000439f8c: .mmu_context_init+0x34/0x68
    sp: c0000000047cbde0
   msr: 9000000000029032
  current = 0xc0000001fe78d7f0
  paca    = 0xc0000000004cdd00
    pid   = 1, comm = swapper
enter ? for help
1:mon>





More information about the Linuxppc64-dev mailing list