11 Jul, 2006

40 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
     
  • This patch fixes a bit of boundchecking in the new Open Firmware interrupt
    tree parsing code. It's important that it fails when things aren't correct in
    order to trigger fallback mecanisms that are necessary to make some machines
    work properly.

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

    Segher Boessenkool
     
  • 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
     
  • The quad g5 currently doesn't boot due to two problems. This patch fixes the
    first one: Apple new way of doing interrupt specifiers in OF for devices using
    the HT APIC isn't properly parsed by the new MPIC driver code.

    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
     
  • This patch adds the bass/treble controls to snd-aoa that snd-powermac always
    had for tas3004 based machines.

    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Berg
     
  • The layout fabric gained support for all IDs when I extracted those from the
    OSX description file. But apparently I had forgotten to add them all as
    module aliases so the module will also load. This patch adds them.

    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Berg
     
  • This patch makes the DRC control visible again for TAS chips.

    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Berg
     
  • This patch fixes the initialisation and reset of the tas codec. The tas will
    often reset if the i2s clocks go away so it needs to be completely
    re-initialised when clocks come back.

    Also, this patch adds some code for DRC that will be exploited later to add a
    DRC control again, fixing a regression over snd-powermac.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch changes the PCM1 control name to PCM to make it play nice with the
    softvol plugin (which will then go away if it sees a proper PCM slider)

    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Berg
     
  • This patch cleans up the printk's in the layout fabric and also makes it
    display which type of GPIO access it is going to use.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch makes the pmf GPIO layer in aoa report if calling a platform
    function failed.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch revamps the i2sbus control layer by using the macio/keylargo
    functions instead of directly mapping.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch fixes initialisation issues when all of aoa is built into the
    kernel by re-ordering the link order in the Makefile and making the soundbus
    use subsys_initcall so it is initialised earlier.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch cleans up the resource handling in i2sbus and adds workarounds for
    the broken device trees on the PowerMac7,2 and 7,3. Some of this code will
    later move again when macio_asic is going to export all the sub-nodes too.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This patch moves the i2sbus 'force' module parameter declaration to the top of
    the file.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • Use proper irq mapping interface for snd-aoa-i2sbus.

    Signed-off-by: Andreas Schwab
    Acked-by: Benjamin Herrenschmidt
    Signed-off-by: Johannes Berg
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andreas Schwab
     
  • A large number of lost ticks can cause an overadjustment of the clock. To
    compensate for this we look at the current error and the larger the error
    already is the more careful we are at adjusting the error. As small extra
    fix reset the error when the clock is set.

    Signed-off-by: Roman Zippel
    Acked-by: john stultz
    Cc: Uwe Bugla
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • Add missing EXPORT_SYMBOL for all_vm_events(). Git commit
    f8891e5e1f93a128c3900f82035e8541357896a7 caused this:

    Building modules, stage 2.
    MODPOST
    WARNING: "all_vm_events" [arch/s390/appldata/appldata_mem.ko] undefined!
    CC arch/s390/appldata/appldata_mem.mod.o

    Cc: Christoph Lameter
    Cc: Gerald Schaefer
    Cc: Martin Schwidefsky
    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • It turns out that there is a way to build a kernel with NUMA and no SMP.
    In that case we are missing one definition __inc_zone_state.

    Provide that missing __inc_zone_state.

    (akpm: NUMA && !SMP sounds odd, but I am told "But there is the concept of
    cpuless nodes. A NUMA system without SMP has a single processor but multiple
    memory nodes. This used to work before on IA64 (wasn't aware of it, never seen
    anyone with this kind of thing).")

    Acked-by: Tony Luck
    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     
  • Calling futex_lock_pi is called with a reference to a non PI futex and
    waiters exist already, lookup_pi_state() oopses due to pi_state == NULL.
    Check this condition and return -EINVAL to userspace.

    Signed-off-by: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: Jakub Jelinek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Daniel Ritz says:

    The acpi driver suspend/resume patches that went in recently caused a regression
    on my box (toshiba tecra 8000 laptop): after resume from swsusp the fan turns on
    keeping blowing cold air out of my notebook. before the patches, the fan was off
    and would only make noise when required. it's the same thing described in
    bugzilla.kernel.org #5000. the acpi suspend/resume patches or at least parts of
    them originate in this bug. now the last patch in the report (attach id 8438)
    actually fixes the problem - for me and the reporter. this is a trimmed down
    version of that patch.

    Signed-off-by: Daniel Ritz
    Cc: Len Brown
    Cc: Sanjoy Mahajan
    Cc: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Karasyov
     
  • Signed-off-by: Yoshinori Sato
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yoshinori Sato
     
  • This patch marks an unused export as EXPORT_UNUSED_SYMBOL.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch marks an unused export as EXPORT_UNUSED_SYMBOL.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch marks three unused exports as EXPORT_UNUSED_SYMBOL.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch marks an unused export as EXPORT_UNUSED_SYMBOL.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch marks an unused export as EXPORT_UNUSED_SYMBOL.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch marks unused exports as EXPORT_SYMBOL_UNUSED.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • During early MD setup (superblock reading), we don't have a personality yet.
    But the error-handling code tries to dereference mddev->pers. Fix.

    Acked-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • This is generally useful, but particularly helps see if it is the same sector
    that always needs correcting, or different ones.

    [akpm@osdl.org: fix printk warnings]
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • The ioctl requires CAP_SYS_ADMIN, so sysfs should too. Note that we don't
    require CAP_SYS_ADMIN for reading attributes even though the ioctl does.
    There is no reason to limit the read access, and much of the information is
    already available via /proc/mdstat

    Cc: Chris Wright
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Some places we use number (0660) someplaces names (S_IRUGO). Change all
    numbers to be names, and change 0655 to be what it should be.

    Also make some formatting more consistent.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Though it rarely matters, we should be using 's' rather than r1_bio->sector
    here.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • The comment gives more details, but I didn't quite have the sequencing write,
    so there was room for races to leave bits unset in the on-disk bitmap for
    short periods of time.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • When a device is unplugged, requests are moved from one or two (depending on
    whether a bitmap is in use) queues to the main request queue.

    So whenever requests are put on either of those queues, we should make sure
    the raid5 array is 'plugged'. However we don't. We currently plug the raid5
    queue just before putting requests on queues, so there is room for a race. If
    something unplugs the queue at just the wrong time, requests will be left on
    the queue and nothing will want to unplug them. Normally something else will
    plug and unplug the queue fairly soon, but there is a risk that nothing will.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • We introduced 'io_sectors' recently so we could count the sectors that causes
    io during resync separate from sectors which didn't cause IO - there can be a
    difference if a bitmap is being used to accelerate resync.

    However when a speed is reported, we find the number of sectors processed
    recently by subtracting an oldish io_sectors count from a current
    'curr_resync' count. This is wrong because curr_resync counts all sectors,
    not just io sectors.

    So, add a field to mddev to store the curren io_sectors separately from
    curr_resync, and use that in the calculations.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • When an array is started we start one or two threads (two if there is a
    reshape or recovery that needs to be completed).

    We currently start these *before* the array is completely set up and in
    particular before queue->queuedata is set. If the thread actually starts
    very quickly on another CPU, we can end up dereferencing queue->queuedata
    and oops.

    This patch also makes sure we don't try to start a recovery if a reshape is
    being restarted.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • This has to be done in ->load_super, not ->validate_super

    Without this, hot-adding devices to an array doesn't always
    work right - though there is a work around in mdadm-2.5.2 to
    make this less of an issue.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • I have reports of a problem with raid5 which turns out to be because the raid5
    device gets stuck in a 'plugged' state. This shouldn't be able to happen as
    3msec after it gets plugged it should get unplugged. However it happens
    none-the-less. This patch fixes the problem and is a reasonable thing to do,
    though it might hurt performance slightly in some cases.

    Until I can find the real problem, we should probably have this workaround in
    place.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown