30 Sep, 2006

1 commit


23 Sep, 2006

1 commit


14 Sep, 2006

1 commit


02 Sep, 2006

2 commits

  • Fix some more problems (inverted use of semaphores in some places). He
    also moved my checks into within the protected section which is better.

    Signed-off-by: Michael Hanselmann
    Signed-off-by: Benjamin Herrenschmidt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • The via-pmu backlight code (introduced in 2.6.18) has various design issues
    causing crashes on machines using it like the old Wallstreet powerbook
    (Michael, the author, never managed to test on these and I just got my hand
    on one of those old beasts).

    This fixes them by no longer trying to hijack the backlight device of the
    frontmost framebuffer (causing that framebuffer to crash) but having it's
    own local bits instead. Might look weird but it's better that way on those
    old machines, at least as a last-minute fix for 2.6.18. We might rework
    the whole thing later. This patch also changes the way it gets notified of
    sleep and wakeup in order to properly shut the backlight down on sleep and
    bring it back on wakeup.

    Signed-off-by: Benjamin Herrenschmidt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

01 Aug, 2006

3 commits

  • Paul Mackerras
     
  • * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
    [POWERPC] Minor comment fix for misc_64.S
    [POWERPC] Use H_CEDE on non-SMT
    [POWERPC] force 64bit mode in fwnmi handlers to workaround firmware bugs
    [POWERPC] PMAC_APM_EMU should depend on ADB_PMU
    [POWERPC] Fix new interrupt code (MPIC detection)
    [POWERPC] Fix new interrupt code (MPIC endianness)
    [POWERPC] Add cpufreq support for Xserve G5
    [POWERPC] Xserve G5 thermal control fixes
    [POWERPC] Fix mem= handling when the memory limit is > RMO size
    [POWERPC] More offb/bootx fixes
    [POWERPC] Fix legacy_serial.c error handling on 32 bits
    [POWERPC] Fix default clock for udbg_16550
    [POWERPC] Fix non-MPIC CHRPs with CONFIG_SMP set
    [POWERPC] Fix 32 bits warning in prom_init.c
    [POWERPC] Workaround Pegasos incorrect ISA "ranges"
    [POWERPC] fix up front-LED Kconfig

    Linus Torvalds
     
  • This patch fixes several problems:
    - The legacy backlight value might be set at interrupt time. Introduced
    a worker to prevent it from directly calling the backlight code.
    - via-pmu allows the backlight to be grabbed, in which case we need to
    prevent other kernel code from changing the brightness.
    - Don't send PMU requests in via-pmu-backlight when the machine is about
    to sleep or waking up.
    - More Kconfig fixes.

    Signed-off-by: Michael Hanselmann
    Cc: Benjamin Herrenschmidt
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Hanselmann
     

31 Jul, 2006

1 commit

  • Now that get_property() returns a void *, there's no need to cast its
    return value. Also, treat the return value as const, so we can
    constify get_property later.

    powermac platform & macintosh driver changes.

    Built for pmac32_defconfig, g5_defconfig

    Signed-off-by: Jeremy Kerr
    Signed-off-by: Paul Mackerras

    Jeremy Kerr
     

28 Jul, 2006

2 commits

  • This patch fixes undefined refereneces to pmu_ symbols on 2.6.17.

    Signed-Off-By: Danny van Dyk
    Signed-off-by: Daniel Drake
    Signed-off-by: Paul Mackerras

    Danny van Dyk
     
  • The thermal control for the Xserve G5s had a few issues. For one, the
    way to program the RPM fans speeds into the FCU is different between it
    and the desktop models, which I didn't figure out until recently, and it
    was missing a control loop for the slots fan, running it too fast. Both
    of those problems were causing the machine to be much more noisy than
    necessary. This patch also changes the fixed value of the slots fan for
    desktop G5s to 40% instead of 50%. It seems to still have a pretty good
    airflow that way and is much less noisy.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     

25 Jul, 2006

1 commit

  • This patch fixes the front-LED Kconfig issues I introduced while
    creating it. Apparently having a dependency isn't enough to have the
    select not evaluated or something like that.

    The patch also changes the default configuration for pmac32 select the
    default for the LED to be the IDE trigger. While I was at it, I
    completely updated the defconfig and also added snd-aoa to it.

    Signed-off-by: Johannes Berg
    Signed-off-by: Paul Mackerras

    Johannes Berg
     

11 Jul, 2006

3 commits

  • This patch fixes several problems:
    - pmac_backlight_key() is called under interrupt context, and therefore
    can't use mutexes or semaphores, so defer the backlight level for
    later, as it's not critical (original code by Aristeu S. Rozanski F.
    ).
    - Add exports for functions that might be called from modules
    - Fix Kconfig depdencies on PMAC_BACKLIGHT.
    - Fix locking issues on calls from inside the driver (reported by
    Aristeu S. Rozanski F., too)
    - Fix wrong calculation of backlight values in some of the drivers
    - Replace pmac_backlight_key_up/down by inline functions

    [akpm@osdl.org: fix function prototypes]
    Signed-off-by: Michael Hanselmann
    Acked-by: Aristeu S. Rozanski F.
    Acked-by: Rene Nussbaumer
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Hanselmann
     
  • The SMU driver tries to map an interrupt from the device-tree before the
    interrupt controllers in the machine have been enumerated. This doesn't work
    properly and cause machines like the Quad g5 to fail booting later on when
    some drivers waits endlessly for an SMU request to complete. This is the
    second problem preventing boot on the Quad g5. This fixes it and also makes
    the SMU driver a bit more resilient to not having an interrupt.

    Signed-off-by: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch slightly reworks the new irq code to fix a small design error. I
    removed the passing of the trigger to the map() calls entirely, it was not a
    good idea to have one call do two different things. It also fixes a couple of
    corner cases.

    Mapping a linux virtual irq to a physical irq now does only that. Setting the
    trigger is a different action which has a different call.

    The main changes are:

    - I no longer call host->ops->map() for an already mapped irq, I just return
    the virtual number that was already mapped. It was called before to give an
    opportunity to change the trigger, but that was causing issues as that could
    happen while the interrupt was in use by a device, and because of the
    trigger change, map would potentially muck around with things in a racy way.
    That was causing much burden on a given's controller implementation of
    map() to get it right. This is much simpler now. map() is only called on
    the initial mapping of an irq, meaning that you know that this irq is _not_
    being used. You can initialize the hardware if you want (though you don't
    have to).

    - Controllers that can handle different type of triggers (level/edge/etc...)
    now implement the standard irq_chip->set_type() call as defined by the
    generic code. That means that you can use the standard set_irq_type() to
    configure an irq line manually if you wish or (though I don't like that
    interface), pass explicit trigger flags to request_irq() as defined by the
    generic kernel interfaces. Also, using those interfaces guarantees that
    your controller set_type callback is called with the descriptor lock held,
    thus providing locking against activity on the same interrupt (including
    mask/unmask/etc...) automatically. A result is that, for example, MPIC's
    own map() implementation calls irq_set_type(NONE) to configure the hardware
    to the default triggers.

    - To allow the above, the irq_map array entry for the new mapped interrupt
    is now set before map() callback is called for the controller.

    - The irq_create_of_mapping() (also used by irq_of_parse_and_map()) function
    for mapping interrupts from the device-tree now also call the separate
    set_irq_type(), and only does so if there is a change in the trigger type.

    - While I was at it, I changed pci_read_irq_line() (which is the helper I
    would expect most archs to use in their pcibios_fixup() to get the PCI
    interrupt routing from the device tree) to also handle a fallback when the
    DT mapping fails consisting of reading the PCI_INTERRUPT_PIN to know wether
    the device has an interrupt at all, and the the PCI_INTERRUPT_LINE to get an
    interrupt number from the device. That number is then mapped using the
    default controller, and the trigger is set to level low. That default
    behaviour works for several platforms that don't have a proper interrupt
    tree like Pegasos. If it doesn't work for your platform, then either
    provide a proper interrupt tree from the firmware so that fallback isn't
    needed, or don't call pci_read_irq_line()

    - Add back a bit that got dropped by my main rework patch for properly
    clearing pending IPIs on pSeries when using a kexec

    Signed-off-by: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

07 Jul, 2006

2 commits

  • The thermal control for the Xserve G5s had a few issues. For one, the
    way to program the RPM fans speeds into the FCU is different between it
    and the desktop models, which I didn't figure out until recently, and it
    was missing a control loop for the slots fan, running it too fast. Both
    of those problems were causing the machine to be much more noisy than
    necessary. This patch also changes the fixed value of the slots fan for
    desktop G5s to 40% instead of 50%. It seems to still have a pretty good
    airflow that way and is much less noisy.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • Rather long patch, apparently no one has updated the pmac32_defconfig in
    a while.

    Signed-off-by: Paul Mackerras

    Johannes Berg
     

03 Jul, 2006

2 commits

  • This adds the new irq remapper core and removes the old one. Because
    there are some fundamental conflicts with the old code, like the value
    of NO_IRQ which I'm now setting to 0 (as per discussions with Linus),
    etc..., this commit also changes the relevant platform and driver code
    over to use the new remapper (so as not to cause difficulties later
    in bisecting).

    This patch removes the old pre-parsing of the open firmware interrupt
    tree along with all the bogus assumptions it made to try to renumber
    interrupts according to the platform. This is all to be handled by the
    new code now.

    For the pSeries XICS interrupt controller, a single remapper host is
    created for the whole machine regardless of how many interrupt
    presentation and source controllers are found, and it's set to match
    any device node that isn't a 8259. That works fine on pSeries and
    avoids having to deal with some of the complexities of split source
    controllers vs. presentation controllers in the pSeries device trees.

    The powerpc i8259 PIC driver now always requests the legacy interrupt
    range. It also has the feature of being able to match any device node
    (including NULL) if passed no device node as an input. That will help
    porting over platforms with broken device-trees like Pegasos who don't
    have a proper interrupt tree.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • Signed-off-by: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "David S. Miller"
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     

02 Jul, 2006

1 commit

  • The 64 bits resource patches did a bit of damage on PowerMac causing a
    buffer overflow in macio_asic and a warning in a sound driver. The
    former is fixed by reverting the sprintf of the bus_id to %08x as it was
    before. The bus_id used for macio devices is always a 32 bits value
    (macio always sits in 32 bits space) and since it's exposed to userland,
    the format of the string shouldn't be changed like that anyway. The
    second by using the proper type for printk.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

01 Jul, 2006

2 commits


30 Jun, 2006

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/devfs-2.6: (22 commits)
    [PATCH] devfs: Remove it from the feature_removal.txt file
    [PATCH] devfs: Last little devfs cleanups throughout the kernel tree.
    [PATCH] devfs: Rename TTY_DRIVER_NO_DEVFS to TTY_DRIVER_DYNAMIC_DEV
    [PATCH] devfs: Remove the tty_driver devfs_name field as it's no longer needed
    [PATCH] devfs: Remove the line_driver devfs_name field as it's no longer needed
    [PATCH] devfs: Remove the videodevice devfs_name field as it's no longer needed
    [PATCH] devfs: Remove the gendisk devfs_name field as it's no longer needed
    [PATCH] devfs: Remove the miscdevice devfs_name field as it's no longer needed
    [PATCH] devfs: Remove the devfs_fs_kernel.h file from the tree
    [PATCH] devfs: Remove devfs_remove() function from the kernel tree
    [PATCH] devfs: Remove devfs_mk_cdev() function from the kernel tree
    [PATCH] devfs: Remove devfs_mk_bdev() function from the kernel tree
    [PATCH] devfs: Remove devfs_mk_symlink() function from the kernel tree
    [PATCH] devfs: Remove devfs_mk_dir() function from the kernel tree
    [PATCH] devfs: Remove devfs_*_tape() functions from the kernel tree
    [PATCH] devfs: Remove devfs support from the sound subsystem
    [PATCH] devfs: Remove devfs support from the ide subsystem.
    [PATCH] devfs: Remove devfs support from the serial subsystem
    [PATCH] devfs: Remove devfs from the init code
    [PATCH] devfs: Remove devfs from the partition code
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (43 commits)
    [POWERPC] Use little-endian bit from firmware ibm,pa-features property
    [POWERPC] Make sure smp_processor_id works very early in boot
    [POWERPC] U4 DART improvements
    [POWERPC] todc: add support for Time-Of-Day-Clock
    [POWERPC] Make lparcfg.c work when both iseries and pseries are selected
    [POWERPC] Fix idr locking in init_new_context
    [POWERPC] mpc7448hpc2 (taiga) board config file
    [POWERPC] Add tsi108 pci and platform device data register function
    [POWERPC] Add general support for mpc7448hpc2 (Taiga) platform
    [POWERPC] Correct the MAX_CONTEXT definition
    powerpc: minor cleanups for mpc86xx
    [POWERPC] Make sure we select CONFIG_NEW_LEDS if ADB_PMU_LED is set
    [POWERPC] Simplify the code defining the 64-bit CPU features
    [POWERPC] powerpc: kconfig warning fix
    [POWERPC] Consolidate some of kernel/misc*.S
    [POWERPC] Remove unused function call_with_mmu_off
    [POWERPC] update asm-powerpc/time.h
    [POWERPC] Clean up it_lp_queue.h
    [POWERPC] Skip the "copy down" of the kernel if it is already at zero.
    [POWERPC] Add the use of the firmware soft-reset-nmi to kdump.
    ...

    Linus Torvalds
     

28 Jun, 2006

3 commits


27 Jun, 2006

2 commits


26 Jun, 2006

3 commits

  • Fix a mispelling of the korean alphabet name in the input subsystem.
    See http://en.wikipedia.org/wiki/Hangeul#Names for more details.

    KEY_HANGUEL left to not break people

    Signed-off-by: Jerome Pinot
    Signed-off-by: Dmitry Torokhov

    Jerome Pinot
     
  • Add an input device for the button and lid switch so that userspace gets
    notified about the user pressing them via the standard input layer.

    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Dmitry Torokhov

    Johannes Berg
     
  • This patch contains a total rewrite of the backlight infrastructure for
    portable Apple computers. Backward compatibility is retained. A sysfs
    interface allows userland to control the brightness with more steps than
    before. Userland is allowed to upload a brightness curve for different
    monitors, similar to Mac OS X.

    [akpm@osdl.org: add needed exports]
    Signed-off-by: Michael Hanselmann
    Acked-by: Benjamin Herrenschmidt
    Cc: Richard Purdie
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michael Hanselmann
     

23 Jun, 2006

1 commit


11 Jun, 2006

1 commit


21 Apr, 2006

1 commit


29 Mar, 2006

1 commit


28 Mar, 2006

2 commits

  • This removes statically assigned platform numbers and reworks the
    powerpc platform probe code to use a better mechanism. With this,
    board support files can simply declare a new machine type with a
    macro, and implement a probe() function that uses the flattened
    device-tree to detect if they apply for a given machine.

    We now have a machine_is() macro that replaces the comparisons of
    _machine with the various PLATFORM_* constants. This commit also
    changes various drivers to use the new macro instead of looking at
    _machine.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • The kernel's implementation of notifier chains is unsafe. There is no
    protection against entries being added to or removed from a chain while the
    chain is in use. The issues were discussed in this thread:

    http://marc.theaimsgroup.com/?l=linux-kernel&m=113018709002036&w=2

    We noticed that notifier chains in the kernel fall into two basic usage
    classes:

    "Blocking" chains are always called from a process context
    and the callout routines are allowed to sleep;

    "Atomic" chains can be called from an atomic context and
    the callout routines are not allowed to sleep.

    We decided to codify this distinction and make it part of the API. Therefore
    this set of patches introduces three new, parallel APIs: one for blocking
    notifiers, one for atomic notifiers, and one for "raw" notifiers (which is
    really just the old API under a new name). New kinds of data structures are
    used for the heads of the chains, and new routines are defined for
    registration, unregistration, and calling a chain. The three APIs are
    explained in include/linux/notifier.h and their implementation is in
    kernel/sys.c.

    With atomic and blocking chains, the implementation guarantees that the chain
    links will not be corrupted and that chain callers will not get messed up by
    entries being added or removed. For raw chains the implementation provides no
    guarantees at all; users of this API must provide their own protections. (The
    idea was that situations may come up where the assumptions of the atomic and
    blocking APIs are not appropriate, so it should be possible for users to
    handle these things in their own way.)

    There are some limitations, which should not be too hard to live with. For
    atomic/blocking chains, registration and unregistration must always be done in
    a process context since the chain is protected by a mutex/rwsem. Also, a
    callout routine for a non-raw chain must not try to register or unregister
    entries on its own chain. (This did happen in a couple of places and the code
    had to be changed to avoid it.)

    Since atomic chains may be called from within an NMI handler, they cannot use
    spinlocks for synchronization. Instead we use RCU. The overhead falls almost
    entirely in the unregister routine, which is okay since unregistration is much
    less frequent that calling a chain.

    Here is the list of chains that we adjusted and their classifications. None
    of them use the raw API, so for the moment it is only a placeholder.

    ATOMIC CHAINS
    -------------
    arch/i386/kernel/traps.c: i386die_chain
    arch/ia64/kernel/traps.c: ia64die_chain
    arch/powerpc/kernel/traps.c: powerpc_die_chain
    arch/sparc64/kernel/traps.c: sparc64die_chain
    arch/x86_64/kernel/traps.c: die_chain
    drivers/char/ipmi/ipmi_si_intf.c: xaction_notifier_list
    kernel/panic.c: panic_notifier_list
    kernel/profile.c: task_free_notifier
    net/bluetooth/hci_core.c: hci_notifier
    net/ipv4/netfilter/ip_conntrack_core.c: ip_conntrack_chain
    net/ipv4/netfilter/ip_conntrack_core.c: ip_conntrack_expect_chain
    net/ipv6/addrconf.c: inet6addr_chain
    net/netfilter/nf_conntrack_core.c: nf_conntrack_chain
    net/netfilter/nf_conntrack_core.c: nf_conntrack_expect_chain
    net/netlink/af_netlink.c: netlink_chain

    BLOCKING CHAINS
    ---------------
    arch/powerpc/platforms/pseries/reconfig.c: pSeries_reconfig_chain
    arch/s390/kernel/process.c: idle_chain
    arch/x86_64/kernel/process.c idle_notifier
    drivers/base/memory.c: memory_chain
    drivers/cpufreq/cpufreq.c cpufreq_policy_notifier_list
    drivers/cpufreq/cpufreq.c cpufreq_transition_notifier_list
    drivers/macintosh/adb.c: adb_client_list
    drivers/macintosh/via-pmu.c sleep_notifier_list
    drivers/macintosh/via-pmu68k.c sleep_notifier_list
    drivers/macintosh/windfarm_core.c wf_client_list
    drivers/usb/core/notify.c usb_notifier_list
    drivers/video/fbmem.c fb_notifier_list
    kernel/cpu.c cpu_chain
    kernel/module.c module_notify_list
    kernel/profile.c munmap_notifier
    kernel/profile.c task_exit_notifier
    kernel/sys.c reboot_notifier_list
    net/core/dev.c netdev_chain
    net/decnet/dn_dev.c: dnaddr_chain
    net/ipv4/devinet.c: inetaddr_chain

    It's possible that some of these classifications are wrong. If they are,
    please let us know or submit a patch to fix them. Note that any chain that
    gets called very frequently should be atomic, because the rwsem read-locking
    used for blocking chains is very likely to incur cache misses on SMP systems.
    (However, if the chain's callout routines may sleep then the chain cannot be
    atomic.)

    The patch set was written by Alan Stern and Chandra Seetharaman, incorporating
    material written by Keith Owens and suggestions from Paul McKenney and Andrew
    Morton.

    [jes@sgi.com: restructure the notifier chain initialization macros]
    Signed-off-by: Alan Stern
    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Jes Sorensen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Stern
     

27 Mar, 2006

1 commit

  • Semaphore to mutex conversion.

    The conversion was generated via scripts, and the result was validated
    automatically via a script as well.

    Signed-off-by: Ingo Molnar
    Cc: Dave Jones
    Cc: Paul Mackerras
    Cc: Ralf Baechle
    Cc: Jens Axboe
    Cc: Neil Brown
    Acked-by: Alasdair G Kergon
    Cc: Greg KH
    Cc: Dominik Brodowski
    Cc: Adam Belay
    Cc: Martin Schwidefsky
    Cc: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

23 Mar, 2006

1 commit

  • Remove the assumption that driver_register() returns the number of devices
    bound to the driver. In fact, it returns zero for success or a negative
    error value.

    All callers of macio_register_driver() either ignore the return value or
    return it as the return value of a module_init() function.

    Signed-off-by: Bjorn Helgaas
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Paul Mackerras

    Bjorn Helgaas