1. 24 Jun, 2011 17 commits
  2. 23 Jun, 2011 14 commits
    • Roland Dreier's avatar
      target: Convert transport_deregister_session_configfs nacl_sess_lock to save irq state · 23388864
      Roland Dreier authored
      This patch converts transport_deregister_session_configfs() to save/restore
      spinlock IRQ state for struct se_node_acl->nacl_sess_lock access as tcm_qla2xxx
      logic expects to call transport_deregister_session_configfs() code with
      irq save already held for struct qla_hw_data.
      Reported-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      23388864
    • Nicholas Bellinger's avatar
      target: Fix transport_get_lun_for_tmr failure cases · 7fd29aa9
      Nicholas Bellinger authored
      This patch fixes two possible NULL pointer dereferences in target v4.0
      code where se_tmr release path in core_tmr_release_req() can OOPs upon
      transport_get_lun_for_tmr() failure by attempting to access se_device or
      se_tmr->tmr_list without a valid member of se_device->tmr_list during
      transport_free_se_cmd() release.  This patch moves the se_tmr->tmr_dev
      pointer assignment in transport_get_lun_for_tmr() until after possible
      -ENODEV failures during unpacked_lun lookup.
      
      This addresses an OOPs originally reported with LIO v4.1 upstream on
      .39 code here:
      
          TARGET_CORE[qla2xxx]: Detected NON_EXISTENT_LUN Access for 0x00000000
          BUG: unable to handle kernel NULL pointer dereference at 0000000000000550
          IP: [<ffffffff81035ec4>] __ticket_spin_trylock+0x4/0x20
          PGD 0
          Oops: 0000 [#1] SMP
          last sysfs file: /sys/devices/system/cpu/cpu23/cache/index2/shared_cpu_map
          CPU 1
          Modules linked in: netconsole target_core_pscsi target_core_file
      tcm_qla2xxx target_core_iblock tcm_loop target_core_mod configfs
      ipmi_devintf ipmi_si ipmi_msghandler serio_raw i7core_edac ioatdma dca
      edac_core ps_bdrv ses enclosure usbhid usb_storage ahci qla2xxx hid
      uas e1000e mpt2sas libahci mlx4_core scsi_transport_fc
      scsi_transport_sas raid_class scsi_tgt [last unloaded: netconsole]
      
          Pid: 0, comm: kworker/0:0 Tainted: G        W   2.6.39+ #1 Xyratex Storage Server
          RIP: 0010:[<ffffffff81035ec4>] [<ffffffff81035ec4>]__ticket_spin_trylock+0x4/0x20
          RSP: 0018:ffff88063e803c08  EFLAGS: 00010286
          RAX: ffff880619ab45e0 RBX: 0000000000000550 RCX: 0000000000000000
          RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000550
          RBP: ffff88063e803c08 R08: 0000000000000002 R09: 0000000000000000
          R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000568
          R13: 0000000000000001 R14: 0000000000000000 R15: ffff88060cd96a20
          FS:  0000000000000000(0000) GS:ffff88063e800000(0000) knlGS:0000000000000000
          CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
          CR2: 0000000000000550 CR3: 0000000001a03000 CR4: 00000000000006e0
          DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
          DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
          Process kworker/0:0 (pid: 0, threadinfo ffff880619ab8000, task ffff880619ab45e0)
          Stack:
           ffff88063e803c28 ffffffff812cf039 0000000000000550 0000000000000568
           ffff88063e803c58 ffffffff8157071e ffffffffa028a1dc ffff88060f7e4600
           0000000000000550 ffff880616961480 ffff88063e803c78 ffffffffa028a1dc
          Call Trace:
      <IRQ>
           [<ffffffff812cf039>] do_raw_spin_trylock+0x19/0x50
           [<ffffffff8157071e>] _raw_spin_lock+0x3e/0x70
           [<ffffffffa028a1dc>] ? core_tmr_release_req+0x2c/0x60 [target_core_mod]
           [<ffffffffa028a1dc>] core_tmr_release_req+0x2c/0x60 [target_core_mod]
           [<ffffffffa028d0d2>] transport_free_se_cmd+0x22/0x50 [target_core_mod]
           [<ffffffffa028d120>] transport_release_cmd_to_pool+0x20/0x40 [target_core_mod]
           [<ffffffffa028e525>] transport_generic_free_cmd+0xa5/0xb0 [target_core_mod]
           [<ffffffffa0147cc4>] tcm_qla2xxx_handle_tmr+0xc4/0xd0 [tcm_qla2xxx]
           [<ffffffffa0191ba3>] __qla24xx_handle_abts+0xd3/0x150 [qla2xxx]
           [<ffffffffa0197651>] qla_tgt_response_pkt+0x171/0x520 [qla2xxx]
           [<ffffffffa0197a2d>] qla_tgt_response_pkt_all_vps+0x2d/0x220 [qla2xxx]
           [<ffffffffa0171dd3>] qla24xx_process_response_queue+0x1a3/0x670 [qla2xxx]
           [<ffffffffa0196281>] ? qla24xx_atio_pkt+0x81/0x120 [qla2xxx]
           [<ffffffffa0174025>] ? qla24xx_msix_default+0x45/0x2a0 [qla2xxx]
           [<ffffffffa0174198>] qla24xx_msix_default+0x1b8/0x2a0 [qla2xxx]
           [<ffffffff810dadb4>] handle_irq_event_percpu+0x54/0x210
           [<ffffffff810dafb8>] handle_irq_event+0x48/0x70
           [<ffffffff810dd5ee>] ? handle_edge_irq+0x1e/0x110
           [<ffffffff810dd647>] handle_edge_irq+0x77/0x110
           [<ffffffff8100d362>] handle_irq+0x22/0x40
           [<ffffffff8157b28d>] do_IRQ+0x5d/0xe0
           [<ffffffff81571413>] common_interrupt+0x13/0x13
      <EOI>
           [<ffffffff813003f7>] ? intel_idle+0xd7/0x130
           [<ffffffff813003f0>] ? intel_idle+0xd0/0x130
           [<ffffffff8144832b>] cpuidle_idle_call+0xab/0x1c0
           [<ffffffff8100a26b>] cpu_idle+0xab/0xf0
           [<ffffffff81566c59>] start_secondary+0x1cb/0x1d2
      Reported-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      7fd29aa9
    • Nishanth Aravamudan's avatar
      libata/sas: only set FROZEN flag if new EH is supported · 3f1e046a
      Nishanth Aravamudan authored
      On 16.06.2011 [08:28:39 -0500], Brian King wrote:
      > On 06/16/2011 02:51 AM, Tejun Heo wrote:
      > > On Wed, Jun 15, 2011 at 04:34:17PM -0700, Nishanth Aravamudan wrote:
      > >>> That looks like the right thing to do. For ipr's usage of
      > >>> libata, we don't have the concept of a port frozen state, so this flag
      > >>> should really never get set. The alternate way to fix this would be to
      > >>> only set ATA_PFLAG_FROZEN in ata_port_alloc if ap->ops->error_handler
      > >>> is not NULL.
      > >>
      > >> It seemed like ipr is as you say, but I wasn't sure if it was
      > >> appropriate to make the change above in the common libata-scis code or
      > >> not. I don't want to break some other device on accident.
      > >>
      > >> Also, I tried your suggestion, but I don't think that can happen in
      > >> ata_port_alloc? ata_port_alloc is allocated ap itself, and it seems like
      > >> ap->ops typically gets set only after ata_port_alloc returns?
      > >
      > > Maybe we can test error_handler in ata_sas_port_start()?
      >
      > Good point. Since libsas is converted to the new eh now, we would need to have
      > this test.
      
      Commit 7b3a24c5 ("ahci: don't enable
      port irq before handler is registered") caused a regression for CD-ROMs
      attached to the IPR SATA bus on Power machines:
      
        ata_port_alloc: ENTER
        ata_port_probe: ata1: bus probe begin
        ata1.00: ata_dev_read_id: ENTER
        ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
        ata1.00: ata_dev_read_id: ENTER
        ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
        ata1.00: limiting speed to UDMA7:PIO5
        ata1.00: ata_dev_read_id: ENTER
        ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
        ata1.00: disabled
        ata_port_probe: ata1: bus probe end
        scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
      
      The FROZEN flag added in that commit is only cleared by the new EH code,
      which is not used by ipr. Clear this flag in the SAS code if we don't
      support new EH.
      Reported-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      3f1e046a
    • Tejun Heo's avatar
      libata: apply NOSETXFER horkage to the affected Pioneer drives · cd691876
      Tejun Heo authored
      regardless of firmware revision
      
      It's unlikely NOSETXFER works for a revision of drive but doesn't for
      another and pioneer doesn't seem to be fixing firmwares for the
      affected drives.  Apply NOSETXFER to the affected pioneer drives
      regardless of firmware revision.
      
        http://article.gmane.org/gmane.linux.ide/49734Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: fl-00@gmx.de
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      cd691876
    • Justin P. Mattock's avatar
      drivers/ata/sata_dwc_460ex: Fix typo 'corrresponding' · 8618ccd3
      Justin P. Mattock authored
      The patch below fixes a typo.
      Signed-off-by: default avatarJustin P. Mattock <justinmattock@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
      8618ccd3
    • Nicholas Bellinger's avatar
    • Jeff Layton's avatar
      cifs: fix wsize negotiation to respect max buffer size and active signing (try #4) · 1190f6a0
      Jeff Layton authored
      Hopefully last version. Base signing check on CAP_UNIX instead of
      tcon->unix_ext, also clean up the comments a bit more.
      
      According to Hongwei Sun's blog posting here:
      
          http://blogs.msdn.com/b/openspecification/archive/2009/04/10/smb-maximum-transmit-buffer-size-and-performance-tuning.aspx
      
      CAP_LARGE_WRITEX is ignored when signing is active. Also, the maximum
      size for a write without CAP_LARGE_WRITEX should be the maxBuf that
      the server sent in the NEGOTIATE request.
      
      Fix the wsize negotiation to take this into account. While we're at it,
      alter the other wsize definitions to use sizeof(WRITE_REQ) to allow for
      slightly larger amounts of data to potentially be written per request.
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
      1190f6a0
    • Russell King's avatar
      Fix CPU spinlock lockups on secondary CPU bringup · 1b19ca9f
      Russell King authored
      Secondary CPU bringup typically calls calibrate_delay() during its
      initialization.  However, calibrate_delay() modifies a global variable
      (loops_per_jiffy) used for udelay() and __delay().
      
      A side effect of 71c696b1 ("calibrate: extract fall-back calculation
      into own helper") introduced in the 2.6.39 merge window means that we
      end up with a substantial period where loops_per_jiffy is zero.  This
      causes the spinlock debugging code to malfunction:
      
      	u64 loops = loops_per_jiffy * HZ;
      	for (;;) {
      		for (i = 0; i < loops; i++) {
      			if (arch_spin_trylock(&lock->raw_lock))
      				return;
      			__delay(1);
      		}
      		...
      	}
      
      by never calling arch_spin_trylock() - resulting in the CPU locking
      up in an infinite loop inside __spin_lock_debug().
      
      Work around this by only writing to loops_per_jiffy only once we have
      completed all the calibration decisions.
      Tested-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Cc: <stable@kernel.org> (2.6.39-stable)
      --
      Better solutions (such as omitting the calibration for secondary CPUs,
      or arranging for calibrate_delay() to return the LPJ value and leave
      it to the caller to decide where to store it) are a possibility, but
      would be much more invasive into each architecture.
      
      I think this is the best solution for -rc and stable, but it should be
      revisited for the next merge window.
      
       init/calibrate.c |   14 ++++++++------
       1 files changed, 8 insertions(+), 6 deletions(-)
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1b19ca9f
    • Mika Westerberg's avatar
      serial: mrst_max3110: initialize waitqueue earlier · 33b1e693
      Mika Westerberg authored
      The driver went to initialize its waitqueue at the start of the main
      processing thread.  However, it is possible that this thread is not
      scheduled on a CPU before the write function is called which leads to a
      following error:
      
        BUG: spinlock bad magic on CPU#1, swapper/1
         lock: f5f3ebdc, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
        Pid: 1, comm: swapper Not tainted 3.0.0-rc2+ #67
        Call Trace:
         [<c1289663>] spin_bug+0xa3/0xf0
         [<c12897ad>] do_raw_spin_lock+0x7d/0x150
         [<c14963de>] _raw_spin_lock_irqsave+0x4e/0x60
         [<c102f2bb>] __wake_up+0x1b/0x50
         [<c12d3715>] serial_m3110_con_write+0x55/0x60
         [<c1041575>] __call_console_drivers+0x75/0x90
         [<c10415d9>] _call_console_drivers+0x49/0x80
         [<c1041baa>] console_unlock+0xca/0x1f0
         [<c10420ef>] vprintk+0x18f/0x4f0
         [<c14928a3>] printk+0x18/0x1a
         [<c1042730>] register_console+0x2e0/0x350
         [<c12d098e>] uart_add_one_port+0x33e/0x3d0
         [<c1485ba6>] serial_m3110_probe+0x1c2/0x1df
         [<c1303db7>] spi_drv_probe+0x17/0x20
         ...
      
      Fix this by initializing the waitqueue before the main thread is
      created.
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      33b1e693
    • William Douglas's avatar
      mrst_max3110: Change max missing message priority. · 0bb04bf3
      William Douglas authored
      Change print message to notice instead of error to clean up non critical
      messages showing on startup.  The MAX3111 not being present is a normal
      path for end user systems.
      Signed-off-by: default avatarWilliam Douglas <william.douglas@intel.com>
      [rebased on 3.0, switched to dev_dbg()]
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0bb04bf3
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 · bccaeafd
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:
        jfs: agstart field must be 64 bits
        JFS: Don't save agno in the inode
        jfs: Update agstart when resizing volume
        jfs: old_agsize should be 64 bits in jfs_extendfs
      bccaeafd
    • Linus Torvalds's avatar
      Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6 · 68d0080f
      Linus Torvalds authored
      * 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
        PCI / PM: Block races between runtime PM and system sleep
        PM / Domains: Update documentation
        PM / Runtime: Handle clocks correctly if CONFIG_PM_RUNTIME is unset
        PM: Fix async resume following suspend failure
        PM: Free memory bitmaps if opening /dev/snapshot fails
        PM: Rename dev_pm_info.in_suspend to is_prepared
        PM: Update documentation regarding sysdevs
        PM / Runtime: Update doc: usage count no longer incremented across system PM
      68d0080f
    • David Rientjes's avatar
      mm, hotplug: protect zonelist building with zonelists_mutex · f957db4f
      David Rientjes authored
      Commit 959ecc48 ("mm/memory_hotplug.c: fix building of node hotplug
      zonelist") does not protect the build_all_zonelists() call with
      zonelists_mutex as needed.  This can lead to races in constructing
      zonelist ordering if a concurrent build is underway.  Protecting this
      with lock_memory_hotplug() is insufficient since zonelists can be
      rebuild though sysfs as well.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Reviewed-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f957db4f
    • David Rientjes's avatar
      mm, hotplug: fix error handling in mem_online_node() · 7553e8f2
      David Rientjes authored
      The error handling in mem_online_node() is incorrect: hotadd_new_pgdat()
      returns NULL if the new pgdat could not have been allocated and a pointer
      to it otherwise.
      
      mem_online_node() should fail if hotadd_new_pgdat() fails, not the
      inverse.  This fixes an issue when memoryless nodes are not onlined and
      their sysfs interface is not registered when their first cpu is brought
      up.
      
      The bug was introduced by commit cf23422b ("cpu/mem hotplug: enable
      CPUs online before local memory online") iow v2.6.35.
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Reviewed-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7553e8f2
  3. 22 Jun, 2011 4 commits
    • Pavel Shilovsky's avatar
      CIFS: Fix problem with 3.0-rc1 null user mount failure · 446b23a7
      Pavel Shilovsky authored
      Figured it out: it was broken by b946845a commit - "cifs: cifs_parse_mount_options: do not tokenize mount options in-place". So, as a quick fix I suggest to apply this patch.
      
      [PATCH] CIFS: Fix kfree() with constant string in a null user case
      Signed-off-by: default avatarPavel Shilovsky <piastryyy@gmail.com>
      Reviewed-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
      446b23a7
    • David Howells's avatar
      KEYS: Fix error handling in construct_key_and_link() · b1d7dd80
      David Howells authored
      Fix error handling in construct_key_and_link().
      
      If construct_alloc_key() returns an error, it shouldn't pass out through
      the normal path as the key_serial() called by the kleave() statement
      will oops when it gets an error code in the pointer:
      
        BUG: unable to handle kernel paging request at ffffffffffffff84
        IP: [<ffffffff8120b401>] request_key_and_link+0x4d7/0x52f
        ..
        Call Trace:
         [<ffffffff8120b52c>] request_key+0x41/0x75
         [<ffffffffa00ed6e8>] cifs_get_spnego_key+0x206/0x226 [cifs]
         [<ffffffffa00eb0c9>] CIFS_SessSetup+0x511/0x1234 [cifs]
         [<ffffffffa00d9799>] cifs_setup_session+0x90/0x1ae [cifs]
         [<ffffffffa00d9c02>] cifs_get_smb_ses+0x34b/0x40f [cifs]
         [<ffffffffa00d9e05>] cifs_mount+0x13f/0x504 [cifs]
         [<ffffffffa00caabb>] cifs_do_mount+0xc4/0x672 [cifs]
         [<ffffffff8113ae8c>] mount_fs+0x69/0x155
         [<ffffffff8114ff0e>] vfs_kern_mount+0x63/0xa0
         [<ffffffff81150be2>] do_kern_mount+0x4d/0xdf
         [<ffffffff81152278>] do_mount+0x63c/0x69f
         [<ffffffff8115255c>] sys_mount+0x88/0xc2
         [<ffffffff814fbdc2>] system_call_fastpath+0x16/0x1b
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b1d7dd80
    • David Howells's avatar
      MN10300: asm/uaccess.h needs to #include linux/kernel.h for might_sleep() · 35052cff
      David Howells authored
      MN10300's asm/uaccess.h needs to #include linux/kernel.h to get might_sleep()
      otherwise it fails to build on MN10300 allyesconfig.  This fails in a few
      places with messages like the following:
      
        In file included from security/keys/trusted.c:14:
        include/linux/uaccess.h: In function '__copy_from_user_nocache':
        include/linux/uaccess.h:52: error: implicit declaration of function 'might_sleep'
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      35052cff
    • Linus Torvalds's avatar
      Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6 · 2992c4bd
      Linus Torvalds authored
      * 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
        NFS: Fix decode_secinfo_maxsz
        NFSv4.1: Fix an off-by-one error in pnfs_generic_pg_test
        NFSv4.1: Fix some issues with pnfs_generic_pg_test
        NFSv4.1: file layout must consider pg_bsize for coalescing
        pnfs-obj: No longer needed to take an extra ref at add_device
        SUNRPC: Ensure the RPC client only quits on fatal signals
        NFSv4: Fix a readdir regression
        nfs4.1: mark layout as bad on error path in _pnfs_return_layout
        nfs4.1: prevent race that allowed use of freed layout in _pnfs_return_layout
        NFSv4.1: need to put_layout_hdr on _pnfs_return_layout error path
        NFS: (d)printks should use %zd for ssize_t arguments
        NFSv4.1: fix break condition in pnfs_find_lseg
        nfs4.1: fix several problems with _pnfs_return_layout
        NFSv4.1: allow zero fh array in filelayout decode layout
        NFSv4.1: allow nfs_fhget to succeed with mounted on fileid
        NFSv4.1: Fix a refcounting issue in the pNFS device id cache
        NFSv4.1: deprecate headerpadsz in CREATE_SESSION
        NFS41: do not update isize if inode needs layoutcommit
        NLM: Don't hang forever on NLM unlock requests
        NFS: fix umount of pnfs filesystems
      2992c4bd
  4. 21 Jun, 2011 5 commits
    • Rafael J. Wysocki's avatar
      PCI / PM: Block races between runtime PM and system sleep · a5f76d5e
      Rafael J. Wysocki authored
      After commit e8665002
      (PM: Allow pm_runtime_suspend() to succeed during system suspend) it
      is possible that a device resumed by the pm_runtime_resume(dev) in
      pci_pm_prepare() will be suspended immediately from a work item,
      timer function or otherwise, defeating the very purpose of calling
      pm_runtime_resume(dev) from there.  To prevent that from happening
      it is necessary to increment the runtime PM usage counter of the
      device by replacing pm_runtime_resume() with pm_runtime_get_sync().
      Moreover, the incremented runtime PM usage counter has to be
      decremented by the corresponding pci_pm_complete(), via
      pm_runtime_put_sync().
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Cc: stable@kernel.org
      Acked-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      a5f76d5e
    • Rafael J. Wysocki's avatar
      PM / Domains: Update documentation · ca9c6890
      Rafael J. Wysocki authored
      Commit 4d27e9dc (PM: Make power
      domain callbacks take precedence over subsystem ones) forgot to
      update the device power management documentation to take changes
      made by it into account.  Correct that mistake.
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      ca9c6890
    • Rafael J. Wysocki's avatar
      PM / Runtime: Handle clocks correctly if CONFIG_PM_RUNTIME is unset · 4d1518f5
      Rafael J. Wysocki authored
      Commit 85eb8c8d (PM / Runtime:
      Generic clock manipulation rountines for runtime PM (v6)) converted
      the shmobile platform to using generic code for runtime PM clock
      management, but it changed the behavior for CONFIG_PM_RUNTIME unset
      incorrectly.
      
      Specifically, for CONFIG_PM_RUNTIME unset pm_runtime_clk_notify()
      should enable clocks for action equal to BUS_NOTIFY_BIND_DRIVER and
      it should disable them for action equal to BUS_NOTIFY_UNBOUND_DRIVER
      (instead of BUS_NOTIFY_ADD_DEVICE and BUS_NOTIFY_DEL_DEVICE,
      respectively).  Make this function behave as appropriate.
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: default avatarMagnus Damm <damm@opensource.se>
      4d1518f5
    • Alan Stern's avatar
      PM: Fix async resume following suspend failure · 6d0e0e84
      Alan Stern authored
      The PM core doesn't handle suspend failures correctly when it comes to
      asynchronously suspended devices.  These devices are moved onto the
      dpm_suspended_list as soon as the corresponding async thread is
      started up, and they remain on the list even if they fail to suspend
      or the sleep transition is cancelled before they get suspended.  As a
      result, when the PM core unwinds the transition, it tries to resume
      the devices even though they were never suspended.
      
      This patch (as1474) fixes the problem by adding a new "is_suspended"
      flag to dev_pm_info.  Devices are resumed only if the flag is set.
      
      [rjw:
       * Moved the dev->power.is_suspended check into device_resume(),
         because we need to complete dev->power.completion and clear
         dev->power.is_prepared too for devices whose
         dev->power.is_suspended flags are unset.
       * Fixed __device_suspend() to avoid setting dev->power.is_suspended
         if async_error is different from zero.]
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Cc: stable@kernel.org
      6d0e0e84
    • Michal Kubecek's avatar
      PM: Free memory bitmaps if opening /dev/snapshot fails · 8440f4b1
      Michal Kubecek authored
      When opening /dev/snapshot device, snapshot_open() creates memory
      bitmaps which are freed in snapshot_release(). But if any of the
      callbacks called by pm_notifier_call_chain() returns NOTIFY_BAD, open()
      fails, snapshot_release() is never called and bitmaps are not freed.
      Next attempt to open /dev/snapshot then triggers BUG_ON() check in
      create_basic_memory_bitmaps(). This happens e.g. when vmwatchdog module
      is active on s390x.
      Signed-off-by: default avatarMichal Kubecek <mkubecek@suse.cz>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Cc: stable@kernel.org
      8440f4b1