23 Sep, 2008

1 commit

  • Just like in the arch/sparc64/kernel/of_device.c code fix commit
    071d7f4c3b411beae08d27656e958070c43b78b4 ("sparc64: Fix SMP bootup
    with CONFIG_STACK_DEBUG or ftrace.") we have to check the OF device
    node name for "pci" instead of relying upon the 'device_type' property
    being there on all PCI bridges.

    Tested by Meelis Roos, and confirmed to make the PCI QFE devices
    reappear on the E3500 system.

    Signed-off-by: David S. Miller

    David S. Miller
     

21 Sep, 2008

1 commit

  • Based upon a bug report by Meelis Roos.

    The OF device layer builds properties by matching bus types and
    applying 'range' properties as appropriate, up to the root.

    The match for "PCI" busses is looking at the 'device_type' property,
    and this does work %99 of the time.

    But on an E3500 system with a PCI QFE card, the DEC 21153 bridge
    sitting above the QFE network interface devices has a 'name' of "pci",
    but it completely lacks a 'device_type' property. So we don't match
    it as a PCI bus, and subsequently we end up with no resource values at
    all for the devices sitting under that DEC bridge.

    Signed-off-by: David S. Miller

    David S. Miller
     

17 Sep, 2008

2 commits

  • Based upon a report by Meelis Roos.

    Any function call can try to access the current
    thread register via the _mcount hooks when the kernel
    is built with -pg (via ftrace or STACK_DEBUG).

    That can't be setup properly very early on during
    the bootup of other cpus for sun4u and some early
    sun4v systems.

    So add notrace markers to these specific functions, so
    that _mcount doesn't get invoked too early.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • We no longer put the top-level PCI controller device into the
    PCI layer device list. So pbm->pci_bus->self is always NULL.

    Therefore, use direct PCI config space accesses to get at
    the PCI controller's PCI_STATUS register.

    Tested by Meelis Roos.

    Signed-off-by: David S. Miller

    David S. Miller
     

13 Sep, 2008

2 commits

  • As noticed by Russell King, we were not setting this properly
    to the number of entries, but rather the total size.

    This results in the core dumping code allocating waayyyy too
    much memory.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • We need to pass IRQF_SHARED, otherwise we get things like:

    IRQ handler type mismatch for IRQ 33
    current handler: PSYCHO_UE
    Call Trace:
    [000000000048394c] request_irq+0xac/0x120
    [00000000007c5f6c] psycho_scan_bus+0x98/0x158
    [00000000007c2bc0] pcibios_init+0xdc/0x12c
    [0000000000426a5c] do_one_initcall+0x1c/0x160
    [00000000007c0180] kernel_init+0x9c/0xfc
    [0000000000427050] kernel_thread+0x30/0x60
    [00000000006ae1d0] rest_init+0x10/0x60

    on e3500 and similar systems.

    On a single board, the UE interrupts of two Psycho nodes
    are funneled through the same interrupt, from of_debug=3
    dump:

    /pci@b,4000: direct translate 2ee --> 21
    ...
    /pci@b,2000: direct translate 2ee --> 21

    Decimal "33" mentioned above is the hex "21" mentioned here.

    Thanks to Meelis Roos for dumps and testing.

    Signed-off-by: David S. Miller

    David S. Miller
     

11 Sep, 2008

1 commit


09 Sep, 2008

1 commit


03 Sep, 2008

2 commits


30 Aug, 2008

1 commit


29 Aug, 2008

1 commit


25 Aug, 2008

1 commit


14 Aug, 2008

3 commits

  • First, lmb_enforce_memory_limit() interprets it's argument
    (mostly, heh) as a size limit not an address limit. So pass
    the raw cmdline_memory_size value into it. And we don't
    need to check it against zero, lmb_enforce_memory_limit() does
    that for us.

    Next, free_initmem() needs special handling when the kernel
    command line trims the available memory. The problem case is
    if the trimmed out memory is where the kernel image itself
    resides.

    When that memory is trimmed out, we don't add those physical
    ram areas to the sparsemem active ranges, amongst other things.
    Which means that this free_initmem() code will free up invalid
    page structs, resulting in either crashes or hangs.

    Just quick fix this by not freeing initmem at all if "mem="
    was given on the boot command line.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • If 'start' does not begin on a page boundary, we can overshoot
    past 'end'.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Things like lockdep can try to do stack backtraces before
    the irqstack blocks have been setup. So don't try to match
    their ranges so early on.

    Also, remove unused variable in save_stack_trace().

    Signed-off-by: David S. Miller

    David S. Miller
     

13 Aug, 2008

1 commit


12 Aug, 2008

1 commit


10 Aug, 2008

1 commit


08 Aug, 2008

2 commits


07 Aug, 2008

1 commit


05 Aug, 2008

14 commits


01 Aug, 2008

2 commits

  • That's the userland thread register, so we should never try to change
    it like this.

    Based upon glibc bug nptl/6577 and suggestions by Jakub Jelinek.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The story is that what we used to do when we actually used
    smp_report_regs() is that if you specifically only wanted to have the
    current cpu's registers dumped you would call "__show_regs()"
    otherwise you would call show_regs() which also invoked
    smp_report_regs().

    Now that we killed off smp_report_regs() there is no longer any
    reason to have these two routines, just show_regs() is sufficient.

    Also kill off a stray declaration of show_regs() in sparc64_ksym.c

    Signed-off-by: David S. Miller

    David S. Miller
     

31 Jul, 2008

2 commits