1. 22 Aug, 2008 1 commit
    • Anton Vorontsov's avatar
      genirq: fix irq_desc->depth handling with DEBUG_SHIRQ · 377bf1e4
      Anton Vorontsov authored
      When DEBUG_SHIRQ is selected, a spurious IRQ is issued before
      the setup_irq() initializes the desc->depth. An IRQ handler may
      call disable_irq_nosync(), but then setup_irq() will overwrite
      desc->depth, and upon enable_irq() we'll catch this WARN:
      
      ------------[ cut here ]------------
      Badness at kernel/irq/manage.c:180
      NIP: c0061ab8 LR: c0061f10 CTR: 00000000
      REGS: cf83be50 TRAP: 0700   Not tainted  (2.6.27-rc3-23450-g74919b0)
      MSR: 00021032 <ME,IR,DR>  CR: 22042022  XER: 20000000
      TASK = cf829100[5] 'events/0' THREAD: cf83a000
      GPR00: c0061f10 cf83bf00 cf829100 c038e674 00000016 00000000 cf83bef8 00000038
      GPR08: c0298910 00000000 c0310d28 cf83a000 00000c9c 1001a1a8 0fffe000 00800000
      GPR16: ffffffff 00000000 007fff00 00000000 007ffeb0 c03320a0 c031095c c0310924
      GPR24: cf8292ec cf807190 cf83a000 00009032 c038e6a4 c038e674 cf99b1cc c038e674
      NIP [c0061ab8] __enable_irq+0x20/0x80
      LR [c0061f10] enable_irq+0x50/0x70
      Call Trace:
      [cf83bf00] [c038e674] irq_desc+0x630/0x9000 (unreliable)
      [cf83bf10] [c0061f10] enable_irq+0x50/0x70
      [cf83bf30] [c01abe94] phy_change+0x68/0x108
      [cf83bf50] [c0046394] run_workqueue+0xc4/0x16c
      [cf83bf90] [c0046834] worker_thread+0x74/0xd4
      [cf83bfd0] [c004ab7c] kthread+0x48/0x84
      [cf83bff0] [c00135e0] kernel_thread+0x44/0x60
      Instruction dump:
      4e800020 3d20c031 38a94214 4bffffcc 9421fff0 7c0802a6 93e1000c 7c7f1b78
      90010014 8123001c 2f890000 409e001c <0fe00000> 80010014 83e1000c 38210010
      
      That trace corresponds to this line:
      WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq);
      
      The patch fixes the problem by moving the SHIRQ code below the
      setup_irq().
      
      Unfortunately we can't easily move the SHIRQ code inside the
      setup_irq(), since it grabs a spinlock, so to prvent a 'real'
      IRQ from interfere us we should disable that IRQ.
      
      p.s. The driver in question is drivers/net/phy/phy.c.
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      377bf1e4
  2. 22 Jul, 2008 1 commit
  3. 18 Jul, 2008 1 commit
    • Eric W. Biederman's avatar
      genirq: enable polling for disabled screaming irqs · f84dbb91
      Eric W. Biederman authored
      When we disable a screaming irq we never see it again.  If the irq
      line is shared or if the driver half works this is a real pain.  So
      periodically poll the handlers for screaming interrupts.
      
      I use a timer instead of the classic irq poll technique of working off
      the timer interrupt because when we use the local apic timers
      note_interrupt is never called (bug?).  Further on a system with
      dynamic ticks the timer interrupt might not even fire unless there is
      a timer telling it it needs to.
      
      I forced this case on my test system with an e1000 nic and my ssh
      session remained responsive despite the interrupt handler only being
      called every 10th of a second.
      Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      f84dbb91
  4. 17 Jul, 2008 32 commits
  5. 16 Jul, 2008 5 commits
    • Jesse Barnes's avatar
      Revert "x86/PCI: ACPI based PCI gap calculation" · 58b6e553
      Jesse Barnes authored
      This reverts commit 809d9a8f.
      
      This one isn't quite ready for prime time.  It needs more testing and
      additional feedback from the ACPI guys.
      58b6e553
    • Coly Li's avatar
      [PATCH] ocfs2: fix oops in mmap_truncate testing · c0420ad2
      Coly Li authored
      This patch fixes a mmap_truncate bug which was found by ocfs2 test suite.
      
      In an ocfs2 cluster more than 1 node, run program mmap_truncate, which races
      mmap writes and truncates from multiple processes. While the test is
      running, a stat from another node forces writeout, causing an oops in
      ocfs2_get_block() because it sees a buffer to write which isn't allocated.
      
      This patch fixed the bug by clear dirty and uptodate bits in buffer, leave
      the buffer unmapped and return.
      
      Fix is suggested by Mark Fasheh, and I code up the patch.
      Signed-off-by: default avatarColy Li <coyli@suse.de>
      Signed-off-by: default avatarMark Fasheh <mfasheh@suse.com>
      c0420ad2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc · 8a0ca91e
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: (68 commits)
        sdio_uart: Fix SDIO break control to now return success or an error
        mmc: host driver for Ricoh Bay1Controllers
        sdio: sdio_io.c Fix sparse warnings
        sdio: fix the use of hard coded timeout value.
        mmc: OLPC: update vdd/powerup quirk comment
        mmc: fix spares errors of sdhci.c
        mmc: remove multiwrite capability
        wbsd: fix bad dma_addr_t conversion
        atmel-mci: Driver for Atmel on-chip MMC controllers
        mmc: fix sdio_io sparse errors
        mmc: wbsd.c fix shadowing of 'dma' variable
        MMC: S3C24XX: Refuse incorrectly aligned transfers
        MMC: S3C24XX: Add maintainer entry
        MMC: S3C24XX: Update error debugging.
        MMC: S3C24XX: Add media presence test to request handling.
        MMC: S3C24XX: Fix use of msecs where jiffies are needed
        MMC: S3C24XX: Add MODULE_ALIAS() entries for the platform devices
        MMC: S3C24XX: Fix s3c2410_dma_request() return code check.
        MMC: S3C24XX: Allow card-detect on non-IRQ capable pin
        MMC: S3C24XX: Ensure host->mrq->data is valid
        ...
      
      Manually fixed up bogus executable bits on drivers/mmc/core/sdio_io.c
      and include/linux/mmc/sdio_func.h when merging.
      8a0ca91e
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.infradead.org/~dedekind/ubifs-2.6 · 9c1be0c4
      Linus Torvalds authored
      * 'for_linus' of git://git.infradead.org/~dedekind/ubifs-2.6:
        UBIFS: include to compilation
        UBIFS: add new flash file system
        UBIFS: add brief documentation
        MAINTAINERS: add UBIFS section
        do_mounts: allow UBI root device name
        VFS: export sync_sb_inodes
        VFS: move inode_lock into sync_sb_inodes
      9c1be0c4
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 · 42fdd144
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (76 commits)
        IDE: Report errors during drive reset back to user space
        Update documentation of HDIO_DRIVE_RESET ioctl
        IDE: Remove unused code
        IDE: Fix HDIO_DRIVE_RESET handling
        hd.c: remove the #include <linux/mc146818rtc.h>
        update the BLK_DEV_HD help text
        move ide/legacy/hd.c to drivers/block/
        ide/legacy/hd.c: use late_initcall()
        remove BLK_DEV_HD_ONLY
        ide: endian annotations in ide-floppy.c
        ide-floppy: zero out the whole struct ide_atapi_pc on init
        ide-floppy: fold idefloppy_create_test_unit_ready_cmd into idefloppy_open
        ide-cd: move request prep chunk from cdrom_do_newpc_cont to rq issue path
        ide-cd: move request prep from cdrom_start_rw_cont to rq issue path
        ide-cd: move request prep from cdrom_start_seek_continuation to rq issue path
        ide-cd: fold cdrom_start_seek into ide_cd_do_request
        ide-cd: simplify request issuing path
        ide-cd: mv ide_do_rw_cdrom ide_cd_do_request
        ide-cd: cdrom_start_seek: remove unused argument block
        ide-cd: ide_do_rw_cdrom: add the catch-all bad request case to the if-else block
        ...
      42fdd144