27 Jun, 2006

2 commits

  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
    [SPARC]: Add iomap interfaces.
    [OPENPROM]: Rewrite driver to use in-kernel device tree.
    [OPENPROMFS]: Rewrite using in-kernel device tree and seq_file.
    [SPARC]: Add unique device_node IDs and a ".node" property.
    [SPARC]: Add of_set_property() interface.
    [SPARC64]: Export auxio_register to modules.
    [SPARC64]: Add missing interfaces to dma-mapping.h
    [SPARC64]: Export _PAGE_IE to modules.
    [SPARC64]: Allow floppy driver to build modular.
    [SPARC]: Export x_bus_type to modules.
    [RIOWATCHDOG]: Fix the build.
    [CPWATCHDOG]: Fix the build.
    [PARPORT] sunbpp: Fix typo.
    [MTD] sun_uflash: Port to new EBUS device layer.

    Linus Torvalds
     
  • Overloading of page fault notification with the notify_die() has performance
    issues(since the only interested components for page fault is kprobes and/or
    kdb) and hence this patch introduces the new notifier call chain exclusively
    for page fault notifications their by avoiding notifying unnecessary
    components in the do_page_fault() code path.

    Signed-off-by: Anil S Keshavamurthy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anil S Keshavamurthy
     

26 Jun, 2006

6 commits


24 Jun, 2006

24 commits


23 Jun, 2006

1 commit

  • Give the statfs superblock operation a dentry pointer rather than a superblock
    pointer.

    This complements the get_sb() patch. That reduced the significance of
    sb->s_root, allowing NFS to place a fake root there. However, NFS does
    require a dentry to use as a target for the statfs operation. This permits
    the root in the vfsmount to be used instead.

    linux/mount.h has been added where necessary to make allyesconfig build
    successfully.

    Interest has also been expressed for use with the FUSE and XFS filesystems.

    Signed-off-by: David Howells
    Acked-by: Al Viro
    Cc: Nathan Scott
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

20 Jun, 2006

7 commits

  • Signed-off-by: David S. Miller

    David S. Miller
     
  • It is done by the generic IRQ layer now.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This is the long overdue conversion of sparc64 over to
    the generic IRQ layer.

    The kernel image is slightly larger, but the BSS is ~60K
    smaller due to the reduced size of struct ino_bucket.

    A lot of IRQ implementation details, including ino_bucket,
    were moved out of asm-sparc64/irq.h and are now private to
    arch/sparc64/kernel/irq.c, and most of the code in irq.c
    totally disappeared.

    One thing that's different at the moment is IRQ distribution,
    we do it at enable_irq() time. If the cpu mask is ALL then
    we round-robin using a global rotating cpu counter, else
    we pick the first cpu in the mask to support single cpu
    targetting. This is similar to what powerpc's XICS IRQ
    support code does.

    This works fine on my UP SB1000, and the SMP build goes
    fine and runs on that machine, but lots of testing on
    different setups is needed.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Inspired by PowerPC XICS interrupt support code.

    All IRQs are virtualized in order to keep NR_IRQS from needing
    to be too large. Interrupts on sparc64 are arbitrary 11-bit
    values, but we don't need to define NR_IRQS to 2048 if we
    virtualize the IRQs.

    As PCI and SBUS controller drivers build device IRQs, we divy
    out virtual IRQ numbers incrementally starting at 1. Zero is
    a special virtual IRQ used for the timer interrupt.

    So device drivers all see virtual IRQs, and all the normal
    interfaces such as request_irq(), enable_irq(), etc. translate
    that into a real IRQ number in order to configure the IRQ.

    At this point knowledge of the struct ino_bucket is almost
    entirely contained within arch/sparc64/kernel/irq.c There are
    a few small bits in the PCI controller drivers that need to
    be swept away before we can remove ino_bucket's definition
    out of asm-sparc64/irq.h and privately into kernel/irq.c

    Signed-off-by: David S. Miller

    David S. Miller
     
  • And reuse that struct member for virt_irq, which will
    be used in future changesets for the implementation of
    mapping between real and virtual IRQ numbers.

    This nicely kills off a ton of SBUS and PCI controller
    PIL assignment code which is no longer necessary.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Only pil0_dummy_bucket had a pil of zero and we just killed that
    off, so we can delete all special case code that used bp->pil==0
    as a way to identify a dummy bucket.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This is the first in a series of cleanups that will hopefully
    allow a seamless attempt at using the generic IRQ handling
    infrastructure in the Linux kernel.

    Define PIL_DEVICE_IRQ and vector all device interrupts through
    there.

    Get rid of the ugly pil0_dummy_{bucket,desc}, instead vector
    the timer interrupt directly to a specific handler since the
    timer interrupt is the only event that will be signaled on
    PIL 14.

    The irq_worklist is now in the per-cpu trap_block[].

    Signed-off-by: David S. Miller

    David S. Miller