1. 23 Oct, 2010 19 commits
    • Jens Axboe's avatar
      block: fix use-after-free bug in blk throttle code · 7ad58c02
      Jens Axboe authored
      blk_throtl_exit() frees the throttle data hanging off the queue
      in blk_cleanup_queue(), but blk_put_queue() will indirectly
      dereference this data when calling blk_sync_queue() which in
      turns calls throtl_shutdown_timer_wq().
      
      Fix this by moving the freeing of the throttle data to when
      the queue is truly being released, and post the call to
      blk_sync_queue().
      Reported-by: default avatarIngo Molnar <mingo@elte.hu>
      Tested-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
      7ad58c02
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin · 7f388396
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin: (47 commits)
        Blackfin: bfin_spi.h: add MMR peripheral layout
        Blackfin: bfin_ppi.h: start a common PPI/EPPI header
        Blackfin: bfin_can.h: add missing VERSION/VERSION2 MMRs
        Blackfin: bf538: add missing SIC_RVECT define
        Blackfin: bf561: rewrite SICA_xxx to just SIC_xxx
        Blackfin: bf54x: add missing SIC_RVECT definition
        Blackfin: H8606: move 8250 irqflags to platform resources
        Blackfin: glue XIP/ROM kernel kconfigs
        Blackfin: update sparse flags for latest upstream changes
        Blackfin: coreb: update ioctl numbers
        Blackfin: coreb: add gpl module license
        Blackfin: bf518-ezkit: add ssm2603 codec resources
        Blackfin: bf51x/bf52x: fix 16/32bit SPORT MMR helpers
        Blackfin: tll6527m: new board port
        Blackfin: bf526-ezbrd/bf527-ezkit: add NAND partition for u-boot
        Blackfin: merge kernel init memory back into main memory region
        Blackfin: gpio: add peripheral group check
        Blackfin: dma: bf54x: add missing break for SPORT1 TX IRQ
        Blackfin: add new cacheflush syscall
        Blackfin: bf548-ezkit: increase u-boot partition size
        ...
      7f388396
    • Linus Torvalds's avatar
      Merge branch 'x86-trampoline-for-linus' of... · 10f2a2b0
      Linus Torvalds authored
      Merge branch 'x86-trampoline-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-trampoline-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86-32, mm: Add an initial page table for core bootstrapping
      10f2a2b0
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb · 88140116
      Linus Torvalds authored
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:
        kdb,debug_core: adjust master cpu switch logic against new debug_core locking
        debug_core: refactor locking for master/slave cpus
        x86,kgdb: remove unnecessary call to kgdb_correct_hw_break()
        debug_core: disable hw_breakpoints on all cores in kgdb_cpu_enter()
        kdb,kgdb: fix sparse fixups
        kdb: Fix oops in kdb_unregister
        kdb,ftdump: Remove reference to internal kdb include
        kdb: Allow kernel loadable modules to add kdb shell functions
        debug_core: stop rcu warnings on kernel resume
        debug_core: move all watch dog syncs to a single function
        x86,kgdb: fix debugger hw breakpoint test regression in 2.6.35
      88140116
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6 · 5cc10350
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (141 commits)
        USB: mct_u232: fix broken close
        USB: gadget: amd5536udc.c: fix error path
        USB: imx21-hcd - fix off by one resource size calculation
        usb: gadget: fix Kconfig warning
        usb: r8a66597-udc: Add processing when USB was removed.
        mxc_udc: add workaround for ENGcm09152 for i.MX35
        USB: ftdi_sio: add device ids for ScienceScope
        USB: musb: AM35x: Workaround for fifo read issue
        USB: musb: add musb support for AM35x
        USB: AM35x: Add musb support
        usb: Fix linker errors with CONFIG_PM=n
        USB: ohci-sh - use resource_size instead of defining its own resource_len macro
        USB: isp1362-hcd - use resource_size instead of defining its own resource_len macro
        USB: isp116x-hcd - use resource_size instead of defining its own resource_len macro
        USB: xhci: Fix compile error when CONFIG_PM=n
        USB: accept some invalid ep0-maxpacket values
        USB: xHCI: PCI power management implementation
        USB: xHCI: bus power management implementation
        USB: xHCI: port remote wakeup implementation
        USB: xHCI: port power management implementation
        ...
      
      Manually fix up (non-data) conflict: the SCSI merge gad renamed the
      'hw_sector_size' member to 'physical_block_size', and the USB tree
      brought a new use of it.
      5cc10350
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6 · 73ecf3a6
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (49 commits)
        serial8250: ratelimit "too much work" error
        serial: bfin_sport_uart: speed up sport RX sample rate to be 3% faster
        serial: abstraction for 8250 legacy ports
        serial/imx: check that the buffer is non-empty before sending it out
        serial: mfd: add more baud rates support
        jsm: Remove the uart port on errors
        Alchemy: Add UART PM methods.
        8250: allow platforms to override PM hook.
        altera_uart: Don't use plain integer as NULL pointer
        altera_uart: Fix missing prototype for registering an early console
        altera_uart: Fixup type usage of port flags
        altera_uart: Make it possible to use Altera UART and 8250 ports together
        altera_uart: Add support for different address strides
        altera_uart: Add support for getting mapbase and IRQ from resources
        altera_uart: Add support for polling mode (IRQ-less)
        serial: Factor out uart_poll_timeout() from 8250 driver
        serial: mark the 8250 driver as maintained
        serial: 8250: Don't delay after transmitter is ready.
        tty: MAINTAINERS: add drivers/serial/jsm/ as maintained driver
        vcs: invoke the vt update callback when /dev/vcs* is written to
        ...
      73ecf3a6
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6 · b9da0571
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (31 commits)
        driver core: Display error codes when class suspend fails
        Driver core: Add section count to memory_block struct
        Driver core: Add mutex for adding/removing memory blocks
        Driver core: Move find_memory_block routine
        hpilo: Despecificate driver from iLO generation
        driver core: Convert link_mem_sections to use find_memory_block_hinted.
        driver core: Introduce find_memory_block_hinted which utilizes kset_find_obj_hinted.
        kobject: Introduce kset_find_obj_hinted.
        driver core: fix build for CONFIG_BLOCK not enabled
        driver-core: base: change to new flag variable
        sysfs: only access bin file vm_ops with the active lock
        sysfs: Fail bin file mmap if vma close is implemented.
        FW_LOADER: fix kconfig dependency warning on HOTPLUG
        uio: Statically allocate uio_class and use class .dev_attrs.
        uio: Support 2^MINOR_BITS minors
        uio: Cleanup irq handling.
        uio: Don't clear driver data
        uio: Fix lack of locking in init_uio_class
        SYSFS: Allow boot time switching between deprecated and modern sysfs layout
        driver core: remove CONFIG_SYSFS_DEPRECATED_V2 but keep it for block devices
        ...
      b9da0571
    • Linus Torvalds's avatar
      ocfs2: drop the BLKDEV_IFL_WAIT flag · f8cae0f0
      Linus Torvalds authored
      Commit dd3932ed ("block: remove BLKDEV_IFL_WAIT") had removed the
      flag argument to blkdev_issue_flush(), but the ocfs2 merge brought in a
      new one.  It didn't cause a merge conflict, so the merges silently
      worked out fine, but the result didn't actually compile.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f8cae0f0
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 · d2ecad9f
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: (56 commits)
        [CIFS] move close processing  from cifs_close to cifsFileInfo_put
        cifs: convert cifs_tcp_ses_lock from a rwlock to a spinlock
        cifs: cancel_delayed_work() + flush_scheduled_work() -> cancel_delayed_work_sync()
        Clean up two declarations of blob_len
        cifs: move cifsFileInfo_put to file.c
        cifs: convert GlobalSMBSeslock from a rwlock to regular spinlock
        [CIFS] Fix minor checkpatch warning and update cifs version
        cifs: move cifs_new_fileinfo to file.c
        cifs: eliminate pfile pointer from cifsFileInfo
        cifs: cifs_write argument change and cleanup
        cifs: clean up cifs_reopen_file
        cifs: eliminate the inode argument from cifs_new_fileinfo
        cifs: eliminate oflags option from cifs_new_fileinfo
        cifs: fix flags handling in cifs_posix_open
        cifs: eliminate cifs_posix_open_inode_helper
        cifs: handle FindFirst failure gracefully
        NTLM authentication and signing - Calculate auth response per smb session
        cifs: don't use vfsmount to pin superblock for oplock breaks
        cifs: keep dentry reference in cifsFileInfo instead of inode reference
        cifs: on multiuser mount, set ownership to current_fsuid/current_fsgid (try #7)
        ...
      
      Fix up trivial conflict in fs/cifs/cifsfs.c due to added/removed header files
      d2ecad9f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · c70b5296
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (84 commits)
        [SCSI] be2iscsi: SGE Len == 64K
        [SCSI] be2iscsi: Remove premature free of cid
        [SCSI] be2iscsi: More time for FW
        [SCSI] libsas: fix bug for vacant phy
        [SCSI] sd: Fix overflow with big physical blocks
        [SCSI] st: add MTWEOFI to write filemarks without flushing drive buffer
        [SCSI] libsas: Don't issue commands to devices that have been hot-removed
        [SCSI] megaraid_sas: Add Online Controller Reset to MegaRAID SAS drive
        [SCSI] lpfc 8.3.17: Update lpfc driver version to 8.3.17
        [SCSI] lpfc 8.3.17: Replace function reset methodology
        [SCSI] lpfc 8.3.17: SCSI fixes
        [SCSI] lpfc 8.3.17: BSG fixes
        [SCSI] lpfc 8.3.17: SLI Additions and Fixes
        [SCSI] lpfc 8.3.17: Code Cleanup and Locking fixes
        [SCSI] zfcp: Remove scsi_cmnd->serial_number from debug traces
        [SCSI] ipr: fix array error logging
        [SCSI] aha152x: enable PCMCIA on 64bit
        [SCSI] scsi_dh_alua: Handle all states correctly
        [SCSI] cxgb4i: connection and ddp setting update
        [SCSI] cxgb3i: fixed connection over vlan
        ...
      c70b5296
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 80c226fb
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Add missing I/O macros {in,out}{w,l}_p() for !CONFIG_ISA
        m68k: Remove big kernel lock in cache flush code
        m68k: __pa(): cast arg to long
        fbdev: atafb - Remove undead ifdef ATAFB_FALCON
        zorro: Fix device_register() error handling
        fbdev/m68k: Fix section mismatches in q40fb.c
        m68k/m68knommu: merge the MMU and non-MMU traps.h
        m68k/m68knommu: merge MMU and non-MMU thread_info.h
        m68k/m68knommu: merge MMU and non-MMU atomic.h
        m68k/m68knommu: clean up page.h
        m68k/m68knommu: merge machdep.h files into a single file
        m68k/m68knommu: merge MMU and non-MMU string.h
        m68k/m68knommu: Remove dead SMP config option
        m68k: move definition of THREAD_SIZE into thread_info_mm.h
        m68k: Use asm-generic/ioctls.h (enables termiox)
        m68k: Remove dead GG2 config option
      80c226fb
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm · 2c15bd00
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:
        dlm: Fix dlm lock status block comment in dlm.h
        dlm: Don't send callback to node making lock request when "try 1cb" fails
      2c15bd00
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 5fe3a5ae
      Linus Torvalds authored
      * 'for-linus' of git://oss.sgi.com/xfs/xfs: (36 commits)
        xfs: semaphore cleanup
        xfs: Extend project quotas to support 32bit project ids
        xfs: remove xfs_buf wrappers
        xfs: remove xfs_cred.h
        xfs: remove xfs_globals.h
        xfs: remove xfs_version.h
        xfs: remove xfs_refcache.h
        xfs: fix the xfs_trans_committed
        xfs: remove unused t_callback field in struct xfs_trans
        xfs: fix bogus m_maxagi check in xfs_iget
        xfs: do not use xfs_mod_incore_sb_batch for per-cpu counters
        xfs: do not use xfs_mod_incore_sb for per-cpu counters
        xfs: remove XFS_MOUNT_NO_PERCPU_SB
        xfs: pack xfs_buf structure more tightly
        xfs: convert buffer cache hash to rbtree
        xfs: serialise inode reclaim within an AG
        xfs: batch inode reclaim lookup
        xfs: implement batched inode lookups for AG walking
        xfs: split out inode walk inode grabbing
        xfs: split inode AG walking into separate code for reclaim
        ...
      5fe3a5ae
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu · 0fc0531e
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
        percpu: update comments to reflect that percpu allocations are always zero-filled
        percpu: Optimize __get_cpu_var()
        x86, percpu: Optimize this_cpu_ptr
        percpu: clear memory allocated with the km allocator
        percpu: fix build breakage on s390 and cleanup build configuration tests
        percpu: use percpu allocator on UP too
        percpu: reduce PCPU_MIN_UNIT_SIZE to 32k
        vmalloc: pcpu_get/free_vm_areas() aren't needed on UP
      
      Fixed up trivial conflicts in include/linux/percpu.h
      0fc0531e
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 91b74501
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: remove in_workqueue_context()
        workqueue: Clarify that schedule_on_each_cpu is synchronous
        memory_hotplug: drop spurious calls to flush_scheduled_work()
        shpchp: update workqueue usage
        pciehp: update workqueue usage
        isdn/eicon: don't call flush_scheduled_work() from diva_os_remove_soft_isr()
        workqueue: add and use WQ_MEM_RECLAIM flag
        workqueue: fix HIGHPRI handling in keep_working()
        workqueue: add queue_work and activate_work trace points
        workqueue: prepare for more tracepoints
        workqueue: implement flush[_delayed]_work_sync()
        workqueue: factor out start_flush_work()
        workqueue: cleanup flush/cancel functions
        workqueue: implement alloc_ordered_workqueue()
      
      Fix up trivial conflict in fs/gfs2/main.c as per Tejun
      91b74501
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.37/misc' of git://git.kernel.dk/linux-2.6-block · 04cc6976
      Linus Torvalds authored
      * 'for-2.6.37/misc' of git://git.kernel.dk/linux-2.6-block:
        pipe: fix failure to return error code on ->confirm()
      04cc6976
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block · a2887097
      Linus Torvalds authored
      * 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block: (46 commits)
        xen-blkfront: disable barrier/flush write support
        Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c
        block: remove BLKDEV_IFL_WAIT
        aic7xxx_old: removed unused 'req' variable
        block: remove the BH_Eopnotsupp flag
        block: remove the BLKDEV_IFL_BARRIER flag
        block: remove the WRITE_BARRIER flag
        swap: do not send discards as barriers
        fat: do not send discards as barriers
        ext4: do not send discards as barriers
        jbd2: replace barriers with explicit flush / FUA usage
        jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier
        jbd: replace barriers with explicit flush / FUA usage
        nilfs2: replace barriers with explicit flush / FUA usage
        reiserfs: replace barriers with explicit flush / FUA usage
        gfs2: replace barriers with explicit flush / FUA usage
        btrfs: replace barriers with explicit flush / FUA usage
        xfs: replace barriers with explicit flush / FUA usage
        block: pass gfp_mask and flags to sb_issue_discard
        dm: convey that all flushes are processed as empty
        ...
      a2887097
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.37/drivers' of git://git.kernel.dk/linux-2.6-block · 8abfc6e7
      Linus Torvalds authored
      * 'for-2.6.37/drivers' of git://git.kernel.dk/linux-2.6-block: (95 commits)
        cciss: fix PCI IDs for new Smart Array controllers
        drbd: add race-breaker to drbd_go_diskless
        drbd: use dynamic_dev_dbg to optionally log uuid changes
        dynamic_debug.h: Fix dynamic_dev_dbg() macro if CONFIG_DYNAMIC_DEBUG not set
        drbd: cleanup: change "<= 0" to "== 0"
        drbd: relax the grace period of the md_sync timer again
        drbd: add some more explicit drbd_md_sync
        drbd: drop wrong debug asserts, fix recently introduced race
        drbd: cleanup useless leftover warn/error printk's
        drbd: add explicit drbd_md_sync to drbd_resync_finished
        drbd: Do not log an ASSERT for P_OV_REQUEST packets while C_CONNECTED
        drbd: fix for possible deadlock on IO error during resync
        drbd: fix unlikely access after free and list corruption
        drbd: fix for spurious fullsync (uuids rotated too fast)
        drbd: allow for explicit resync-finished notifications
        drbd: preparation commit, using full state in receive_state()
        drbd: drbd_send_ack_dp must not rely on header information
        drbd: Fix regression in recv_bm_rle_bits (compressed bitmap)
        drbd: Fixed a stupid copy and paste error
        drbd: Allow larger values for c-fill-target.
        ...
      
      Fix up trivial conflict in drivers/block/ataflop.c due to BKL removal
      8abfc6e7
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.37/core' of git://git.kernel.dk/linux-2.6-block · e9dd2b68
      Linus Torvalds authored
      * 'for-2.6.37/core' of git://git.kernel.dk/linux-2.6-block: (39 commits)
        cfq-iosched: Fix a gcc 4.5 warning and put some comments
        block: Turn bvec_k{un,}map_irq() into static inline functions
        block: fix accounting bug on cross partition merges
        block: Make the integrity mapped property a bio flag
        block: Fix double free in blk_integrity_unregister
        block: Ensure physical block size is unsigned int
        blkio-throttle: Fix possible multiplication overflow in iops calculations
        blkio-throttle: limit max iops value to UINT_MAX
        blkio-throttle: There is no need to convert jiffies to milli seconds
        blkio-throttle: Fix link failure failure on i386
        blkio: Recalculate the throttled bio dispatch time upon throttle limit change
        blkio: Add root group to td->tg_list
        blkio: deletion of a cgroup was causes oops
        blkio: Do not export throttle files if CONFIG_BLK_DEV_THROTTLING=n
        block: set the bounce_pfn to the actual DMA limit rather than to max memory
        block: revert bad fix for memory hotplug causing bounces
        Fix compile error in blk-exec.c for !CONFIG_DETECT_HUNG_TASK
        block: set the bounce_pfn to the actual DMA limit rather than to max memory
        block: Prevent hang_check firing during long I/O
        cfq: improve fsync performance for small files
        ...
      
      Fix up trivial conflicts due to __rcu sparse annotation in include/linux/genhd.h
      e9dd2b68
  2. 22 Oct, 2010 21 commits
    • Linus Torvalds's avatar
      Merge branch 'linux-next' of git://git.infradead.org/ubi-2.6 · 4f3a29da
      Linus Torvalds authored
      * 'linux-next' of git://git.infradead.org/ubi-2.6:
        UBI: tighten the corrupted PEB criteria
        UBI: fix check_data_ff return code
        UBI: remember copy_flag while scanning
        UBI: preserve corrupted PEBs
        UBI: add truly corrupted PEBs to corrupted list
        UBI: introduce debugging helper function
        UBI: make check_pattern function non-static
        UBI: do not put eraseblocks to the corrupted list unnecessarily
        UBI: separate out corrupted list
        UBI: change cascade of ifs to switch statements
        UBI: rename a local variable
        UBI: handle bit-flips when no header found
        UBI: remove duplicate IO error codes
        UBI: rename IO error code
        UBI: fix small 80 characters limit style issue
        UBI: cleanup and simplify Kconfig
      4f3a29da
    • Linus Torvalds's avatar
      Merge branch 'linux-next' of git://git.infradead.org/ubifs-2.6 · 06d36293
      Linus Torvalds authored
      * 'linux-next' of git://git.infradead.org/ubifs-2.6:
        UBIFS: do not allocate unneeded scan buffer
        UBIFS: do not forget to cancel timers
        UBIFS: remove a bit of unneeded code
        UBIFS: add a commentary about log recovery
        UBIFS: avoid kernel error if ubifs superblock read fails
        UBIFS: introduce new flags for RO mounts
        UBIFS: introduce new flag for RO due to errors
        UBIFS: check return code of pnode_lookup
        UBIFS: check return code of ubifs_lpt_lookup
        UBIFS: improve error reporting when reading bad node
        UBIFS: introduce list sorting debugging checks
        UBIFS: fix assertion warnings in comparison function
        UBIFS: mark unused key objects as invalid
        UBIFS: do not write rubbish into truncation scanning node
        UBIFS: improve assertion in node comparison functions
        UBIFS: do not use key type in list_sort
        UBIFS: do not look up truncation nodes
        UBIFS: fix assertion warning
        UBIFS: do not treat ENOSPC specially
        UBIFS: switch to RO mode after synchronizing
      06d36293
    • Jason Wessel's avatar
      kdb,debug_core: adjust master cpu switch logic against new debug_core locking · 495363d3
      Jason Wessel authored
      The kdb shell needs to enforce switching back to the original CPU that
      took the exception before restoring normal kernel execution.  Resuming
      from a different CPU than what took the original exception will cause
      problems with spin locks that are freed from the a different processor
      than had taken the lock.
      
      The special logic in dbg_cpu_switch() can go away entirely with
      because the state of what cpus want to be masters or slaves will
      remain unchanged between entry and exit of the debug_core exception
      context.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      495363d3
    • Jason Wessel's avatar
      debug_core: refactor locking for master/slave cpus · dfee3a7b
      Jason Wessel authored
      For quite some time there have been problems with memory barriers and
      various races with NMI on multi processor systems using the kernel
      debugger.  The algorithm for entering the kernel debug core and
      resuming kernel execution was racy and had several known edge case
      problems with attempting to debug something on a heavily loaded system
      using breakpoints that are hit repeatedly and quickly.
      
      The prior "locking" design entry worked as follows:
      
        * The atomic counter kgdb_active was used with atomic exchange in
          order to elect a master cpu out of all the cpus that may have
          taken a debug exception.
        * The master cpu increments all elements of passive_cpu_wait[].
        * The master cpu issues the round up cpus message.
        * Each "slave cpu" that enters the debug core increments its own
          element in cpu_in_kgdb[].
        * Each "slave cpu" spins on passive_cpu_wait[] until it becomes 0.
        * The master cpu debugs the system.
      
      The new scheme removes the two arrays of atomic counters and replaces
      them with 2 single counters.  One counter is used to count the number
      of cpus waiting to become a master cpu (because one or more hit an
      exception). The second counter is use to indicate how many cpus have
      entered as slave cpus.
      
      The new entry logic works as follows:
      
        * One or more cpus enters via kgdb_handle_exception() and increments
          the masters_in_kgdb. Each cpu attempts to get the spin lock called
          dbg_master_lock.
        * The master cpu sets kgdb_active to the current cpu.
        * The master cpu takes the spinlock dbg_slave_lock.
        * The master cpu asks to round up all the other cpus.
        * Each slave cpu that is not already in kgdb_handle_exception()
          will enter and increment slaves_in_kgdb.  Each slave will now spin
          try_locking on dbg_slave_lock.
        * The master cpu waits for the sum of masters_in_kgdb and slaves_in_kgdb
          to be equal to the sum of the online cpus.
        * The master cpu debugs the system.
      
      In the new design the kgdb_active can only be changed while holding
      dbg_master_lock.  Stress testing has not turned up any further
      entry/exit races that existed in the prior locking design.  The prior
      locking design suffered from atomic variables not being truly atomic
      (in the capacity as used by kgdb) along with memory barrier races.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      Acked-by: default avatarDongdong Deng <dongdong.deng@windriver.com>
      dfee3a7b
    • Dongdong Deng's avatar
      x86,kgdb: remove unnecessary call to kgdb_correct_hw_break() · 39a0715f
      Dongdong Deng authored
      The kernel debug_core invokes hw breakpoint install and removal via
      call backs.  The architecture specific kgdb stubs only need to
      implement the call backs and not actually call the functions.
      Signed-off-by: default avatarDongdong Deng <dongdong.deng@windriver.com>
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      CC: x86@kernel.org
      CC: Thomas Gleixner <tglx@linutronix.de>
      CC: Ingo Molnar <mingo@redhat.com>
      CC: H. Peter Anvin <hpa@zytor.com>
      39a0715f
    • Dongdong Deng's avatar
      debug_core: disable hw_breakpoints on all cores in kgdb_cpu_enter() · c1bb9a9c
      Dongdong Deng authored
      The slave cpus do not have the hw breakpoints disabled upon entry to
      the debug_core and as a result could cause unrecoverable recursive
      faults on badly placed breakpoints, or get out of sync with the arch
      specific hw breakpoint operations.
      
      This patch addresses the problem by invoking kgdb_disable_hw_debug()
      earlier in kgdb_enter_cpu for each cpu that enters the debug core.
      
      The hw breakpoint dis/enable flow should be:
      
      master_debug_cpu   slave_debug_cpu
               \              /
                kgdb_cpu_enter
                      |
              kgdb_disable_hw_debug --> uninstall pre-enabled hw_breakpoint
                      |
       do add/rm dis/enable operates to hw_breakpoints on master_debug_cpu..
                      |
              correct_hw_break --> correct/install the enabled hw_breakpoint
                      |
                 leave_kgdb
      Signed-off-by: default avatarDongdong Deng <dongdong.deng@windriver.com>
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      c1bb9a9c
    • Jason Wessel's avatar
      kdb,kgdb: fix sparse fixups · 91b152aa
      Jason Wessel authored
      Fix the following sparse warnings:
      
      kdb_main.c:328:5: warning: symbol 'kdbgetu64arg' was not declared. Should it be static?
      kgdboc.c:246:12: warning: symbol 'kgdboc_early_init' was not declared. Should it be static?
      kgdb.c:652:26: warning: incorrect type in argument 1 (different address spaces)
      kgdb.c:652:26:    expected void const *ptr
      kgdb.c:652:26:    got struct perf_event *[noderef] <asn:3>*pev
      
      The one in kgdb.c required the (void * __force) because of the return
      code from register_wide_hw_breakpoint looking like:
      
              return (void __percpu __force *)ERR_PTR(err);
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      91b152aa
    • Jason Wessel's avatar
      kdb: Fix oops in kdb_unregister · 75d14ede
      Jason Wessel authored
      Nothing should try to use kdb_commands directly as sometimes it is
      null.  Instead, use the for_each_kdbcmd() iterator.
      
      This particular problem dates back to the initial kdb merge (2.6.35),
      but at that point nothing was dynamically unregistering commands from
      the kdb shell.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      75d14ede
    • Jason Wessel's avatar
      kdb,ftdump: Remove reference to internal kdb include · e3bda3ac
      Jason Wessel authored
      Now that include/linux/kdb.h properly exports all the functions
      required to dynamically add a kdb shell command, the reference to the
      private kdb header can be removed.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      e3bda3ac
    • Jason Wessel's avatar
      kdb: Allow kernel loadable modules to add kdb shell functions · f7030bbc
      Jason Wessel authored
      In order to allow kernel modules to dynamically add a command to the
      kdb shell the kdb_register, kdb_register_repeat, kdb_unregister, and
      kdb_printf need to be exported as GPL symbols.
      
      Any kernel module that adds a dynamic kdb shell function should only
      need to include linux/kdb.h.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      f7030bbc
    • Jason Wessel's avatar
      debug_core: stop rcu warnings on kernel resume · fb70b588
      Jason Wessel authored
      When returning from the kernel debugger reset the rcu jiffies_stall
      value to prevent the rcu stall detector from sending NMI events which
      invoke a stack dump for each cpu in the system.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      fb70b588
    • Jason Wessel's avatar
      debug_core: move all watch dog syncs to a single function · 16cdc628
      Jason Wessel authored
      Move the various clock and watch dog syncs to a single function in
      advance of adding another sync for the rcu stall detector.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      16cdc628
    • Jason Wessel's avatar
      x86,kgdb: fix debugger hw breakpoint test regression in 2.6.35 · fad99fac
      Jason Wessel authored
      HW breakpoints events stopped working correctly with kgdb as a result
      of commit: 018cbffe (Merge commit
      'v2.6.33' into perf/core), later commit:
      ba773f7c (x86,kgdb: Fix hw breakpoint
      regression) allowed breakpoints to propagate to the debugger core but
      did not completely address the original regression in functionality
      found in 2.6.35.
      
      When the DR_STEP flag is set in dr6 along with any of the DR_TRAP
      bits, the kgdb exception handler will enter once from the
      hw_breakpoint API call back and again from the die notifier for
      do_debug(), which causes the debugger to stop twice and also for the
      kgdb regression tests to fail running under kvm with:
      
      echo V2I1 > /sys/module/kgdbts/parameters/kgdbts
      
      To address the problem, the kgdb overflow handler needs to implement
      the same logic as the ptrace overflow handler call back with respect
      to updating the virtual copy of dr6.  This will allow the kgdb
      do_debug() die notifier to properly handle the exception and the
      attached debugger, or kgdb test suite, will only receive a single
      notification.
      Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
      CC: Frederic Weisbecker <fweisbec@gmail.com>
      CC: x86@kernel.org
      fad99fac
    • Mike Frysinger's avatar
      b9ac41e3
    • Mike Frysinger's avatar
      Blackfin: bfin_ppi.h: start a common PPI/EPPI header · fec84d21
      Mike Frysinger authored
      Start unifying the PPI/EPPI peripheral structures in one place.  This
      may be used by camera/video/fpga/high speed devices.
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      fec84d21
    • Mike Frysinger's avatar
      Blackfin: bfin_can.h: add missing VERSION/VERSION2 MMRs · faf3d9ed
      Mike Frysinger authored
      Also document the mailbox (channel) data array layout.
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      faf3d9ed
    • Mike Frysinger's avatar
      5d868212
    • Mike Frysinger's avatar
      Blackfin: bf561: rewrite SICA_xxx to just SIC_xxx · 39c99969
      Mike Frysinger authored
      This matches all the other Blackfin ports and keep us from having to write
      bf561-specific code in many places.
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      39c99969
    • Mike Frysinger's avatar
      9ebcaa47
    • Mike Frysinger's avatar
      Blackfin: H8606: move 8250 irqflags to platform resources · 49e00edb
      Mike Frysinger authored
      Now that the common 8250 serial driver supports an "irqflags" field,
      we don't need to patch in a custom define into the code.
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      49e00edb
    • Mike Frysinger's avatar
      Blackfin: glue XIP/ROM kernel kconfigs · 56b4f07a
      Mike Frysinger authored
      Different arches use different names, so make sure we define both so
      common code (like MTD_XIP) "just works".
      Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
      56b4f07a