1. 14 Mar, 2013 22 commits
    • Alex Deucher's avatar
      drm/radeon: add primary dac adj quirk for R200 board · b08994da
      Alex Deucher authored
      commit e8fc4137 upstream.
      
      vbios values are wrong leading to colors that are
      too bright.  Use the default values instead.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b08994da
    • Guenter Roeck's avatar
      hwmon: (pmbus/ltc2978) Use detected chip ID to select supported functionality · bc37694d
      Guenter Roeck authored
      commit f366fccd upstream.
      
      We read the chip ID from the chip, use it to determine if the chip ID provided
      to the driver is correct, and report it if wrong. We should also use the
      correct chip ID to select supported functionality.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bc37694d
    • Guenter Roeck's avatar
      hwmon: (pmbus/ltc2978) Fix peak attribute handling · ec2bc2f6
      Guenter Roeck authored
      commit dbd712c2 upstream.
      
      Peak attributes were not initialized and cleared correctly.
      Also, temp2_max is only supported on page 0 and thus does not need to be
      an array.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ec2bc2f6
    • Mark Brown's avatar
      hwmon: (sht15) Check return value of regulator_enable() · cca30bd4
      Mark Brown authored
      commit 3e78080f upstream.
      
      Not having power is a pretty serious error so check that we are able to
      enable the supply and error out if we can't.
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      cca30bd4
    • NeilBrown's avatar
      md: raid0: fix error return from create_stripe_zones. · fbad8075
      NeilBrown authored
      commit 58ebb34c upstream.
      
      Create_stripe_zones returns an error slightly differently to
      raid0_run and to raid0_takeover_*.
      
      The error returned used by the second was wrong and an error would
      result in mddev->private being set to NULL and sooner or later a
      crash.
      
      So never return NULL, return ERR_PTR(err), not NULL from
      create_stripe_zones.
      
      This bug has been present since 2.6.35 so the fix is suitable
      for any kernel since then.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fbad8075
    • NeilBrown's avatar
      md: fix two bugs when attempting to resize RAID0 array. · c443082d
      NeilBrown authored
      commit a6468539 upstream.
      
      You cannot resize a RAID0 array (in terms of making the devices
      bigger), but the code doesn't entirely stop you.
      So:
      
       disable setting of the available size on each device for
       RAID0 and Linear devices.  This must not change as doing so
       can change the effective layout of data.
      
       Make sure that the size that raid0_size() reports is accurate,
       but rounding devices sizes to chunk sizes.  As the device sizes
       cannot change now, this isn't so important, but it is best to be
       safe.
      
      Without this change:
        mdadm --grow /dev/md0 -z max
        mdadm --grow /dev/md0 -Z max
        then read to the end of the array
      
      can cause a BUG in a RAID0 array.
      
      These bugs have been present ever since it became possible
      to resize any device, which is a long time.  So the fix is
      suitable for any -stable kerenl.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c443082d
    • Sebastian Riemer's avatar
      md: protect against crash upon fsync on ro array · 517557f2
      Sebastian Riemer authored
      commit bbfa57c0 upstream.
      
      If an fsync occurs on a read-only array, we need to send a
      completion for the IO and may not increment the active IO count.
      Otherwise, we hit a bug trace and can't stop the MD array anymore.
      
      By advice of Christoph Hellwig we return success upon a flush
      request but we return -EROFS for other writes.
      We detect flush requests by checking if the bio has zero sectors.
      
      This patch is suitable to any -stable kernel to which it applies.
      Signed-off-by: default avatarSebastian Riemer <sebastian.riemer@profitbricks.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Cc: NeilBrown <neilb@suse.de>
      Reported-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Acked-by: default avatarPaul Menzel <paulepanter@users.sourceforge.net>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      517557f2
    • Felix Fietkau's avatar
      ath9k_hw: improve reset reliability after errors · f9c89dac
      Felix Fietkau authored
      commit 3412f2f0 upstream.
      
      On many different chips, important aspects of the MAC state are not
      fully cleared by a warm reset. This can show up as tx/rx hangs, those
      annoying "DMA failed to stop in 10 ms..." messages or other quirks.
      
      On AR933x, the chip can occasionally get stuck in a way that only a
      driver unload/reload or a reboot would bring it back to life.
      
      With this patch, a full reset is issued when bringing the chip out of
      FULL-SLEEP state (after idle), or if either Rx or Tx was not shut down
      properly. This makes the DMA related error messages disappear completely
      in my tests on AR933x, and the chip does not get stuck anymore.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f9c89dac
    • Felix Fietkau's avatar
      ath9k: fix RSSI dummy marker value · 34127f32
      Felix Fietkau authored
      commit a3d63cad upstream.
      
      RSSI is being stored internally as s8 in several places. The indication
      of an unset RSSI value, ATH_RSSI_DUMMY_MARKER, was supposed to have been
      set to 127, but ended up being set to 0x127 because of a code cleanup
      mistake. This could lead to invalid signal strength values in a few
      places.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      34127f32
    • Avinash Patil's avatar
      mwifiex: correct sleep delay counter · 97cf710a
      Avinash Patil authored
      commit 3e7a4ff7 upstream.
      
      Maximum delay for waking up card is 50 ms. Because of typo in
      counter, this delay goes to 500ms. This patch fixes the bug.
      Signed-off-by: default avatarAvinash Patil <patila@marvell.com>
      Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
      Signed-off-by: default avatarYogesh Ashok Powar <yogeshp@marvell.com>
      Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      97cf710a
    • Rusty Russell's avatar
      hw_random: make buffer usable in scatterlist. · 681e3b15
      Rusty Russell authored
      commit f7f154f1 upstream.
      
      virtio_rng feeds the randomness buffer handed by the core directly
      into the scatterlist, since commit bb347d98.
      
      However, if CONFIG_HW_RANDOM=m, the static buffer isn't a linear address
      (at least on most archs).  We could fix this in virtio_rng, but it's actually
      far easier to just do it in the core as virtio_rng would have to allocate
      a buffer every time (it doesn't know how much the core will want to read).
      Reported-by: default avatarAurelien Jarno <aurelien@aurel32.net>
      Tested-by: default avatarAurelien Jarno <aurelien@aurel32.net>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      681e3b15
    • Olaf Hering's avatar
      ata_piix: reenable MS Virtual PC guests · 7ae6c929
      Olaf Hering authored
      commit d9904344 upstream.
      
      An earlier commit cd006086 ("ata_piix:
      defer disks to the Hyper-V drivers by default") broke MS Virtual PC
      guests. Hyper-V guests and Virtual PC guests have nearly identical DMI
      info. As a result the driver does currently ignore the emulated hardware
      in Virtual PC guests and defers the handling to hv_blkvsc. Since Virtual
      PC does not offer paravirtualized drivers no disks will be found in the
      guest.
      
      One difference in the DMI info is the product version. This patch adds a
      match for MS Virtual PC 2007 and "unignores" the emulated hardware.
      
      This was reported for openSuSE 12.1 in bugzilla:
      https://bugzilla.novell.com/show_bug.cgi?id=737532
      
      Here is a detailed list of DMI info from example guests:
      
      hwinfo --bios:
      
      virtual pc guest:
      
        System Info: #1
          Manufacturer: "Microsoft Corporation"
          Product: "Virtual Machine"
          Version: "VS2005R2"
          Serial: "3178-9905-1533-4840-9282-0569-59"
          UUID: undefined, but settable
          Wake-up: 0x06 (Power Switch)
        Board Info: #2
          Manufacturer: "Microsoft Corporation"
          Product: "Virtual Machine"
          Version: "5.0"
          Serial: "3178-9905-1533-4840-9282-0569-59"
        Chassis Info: #3
          Manufacturer: "Microsoft Corporation"
          Version: "5.0"
          Serial: "3178-9905-1533-4840-9282-0569-59"
          Asset Tag: "7188-3705-6309-9738-9645-0364-00"
          Type: 0x03 (Desktop)
          Bootup State: 0x03 (Safe)
          Power Supply State: 0x03 (Safe)
          Thermal State: 0x01 (Other)
          Security Status: 0x01 (Other)
      
      win2k8 guest:
      
        System Info: #1
          Manufacturer: "Microsoft Corporation"
          Product: "Virtual Machine"
          Version: "7.0"
          Serial: "9106-3420-9819-5495-1514-2075-48"
          UUID: undefined, but settable
          Wake-up: 0x06 (Power Switch)
        Board Info: #2
          Manufacturer: "Microsoft Corporation"
          Product: "Virtual Machine"
          Version: "7.0"
          Serial: "9106-3420-9819-5495-1514-2075-48"
        Chassis Info: #3
          Manufacturer: "Microsoft Corporation"
          Version: "7.0"
          Serial: "9106-3420-9819-5495-1514-2075-48"
          Asset Tag: "7076-9522-6699-1042-9501-1785-77"
          Type: 0x03 (Desktop)
          Bootup State: 0x03 (Safe)
          Power Supply State: 0x03 (Safe)
          Thermal State: 0x01 (Other)
          Security Status: 0x01 (Other)
      
      win2k12 guest:
      
        System Info: #1
          Manufacturer: "Microsoft Corporation"
          Product: "Virtual Machine"
          Version: "7.0"
          Serial: "8179-1954-0187-0085-3868-2270-14"
          UUID: undefined, but settable
          Wake-up: 0x06 (Power Switch)
        Board Info: #2
          Manufacturer: "Microsoft Corporation"
          Product: "Virtual Machine"
          Version: "7.0"
          Serial: "8179-1954-0187-0085-3868-2270-14"
        Chassis Info: #3
          Manufacturer: "Microsoft Corporation"
          Version: "7.0"
          Serial: "8179-1954-0187-0085-3868-2270-14"
          Asset Tag: "8374-0485-4557-6331-0620-5845-25"
          Type: 0x03 (Desktop)
          Bootup State: 0x03 (Safe)
          Power Supply State: 0x03 (Safe)
          Thermal State: 0x01 (Other)
          Security Status: 0x01 (Other)
      Signed-off-by: default avatarOlaf Hering <olaf@aepfle.de>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7ae6c929
    • Trond Myklebust's avatar
      SUNRPC: Don't start the retransmission timer when out of socket space · 1ecb6934
      Trond Myklebust authored
      commit a9a6b52e upstream.
      
      If the socket is full, we're better off just waiting until it empties,
      or until the connection is broken. The reason why we generally don't
      want to time out is that the call to xprt->ops->release_xprt() will
      trigger a connection reset, which isn't helpful...
      
      Let's make an exception for soft RPC calls, since they have to provide
      timeout guarantees.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1ecb6934
    • Trond Myklebust's avatar
      NFS: Don't allow NFS silly-renamed files to be deleted, no signal · d3e8a180
      Trond Myklebust authored
      commit 5a7a613a upstream.
      
      Commit 73ca1001 broke the code that prevents the client from deleting
      a silly renamed dentry.  This affected "delete on last close"
      semantics as after that commit, nothing prevented removal of
      silly-renamed files.  As a result, a process holding a file open
      could easily get an ESTALE on the file in a directory where some
      other process issued 'rm -rf some_dir_containing_the_file' twice.
      Before the commit, any attempt at unlinking silly renamed files would
      fail inside may_delete() with -EBUSY because of the
      DCACHE_NFSFS_RENAMED flag.  The following testcase demonstrates
      the problem:
        tail -f /nfsmnt/dir/file &
        rm -rf /nfsmnt/dir
        rm -rf /nfsmnt/dir
        # second removal does not fail, 'tail' process receives ESTALE
      
      The problem with the above commit is that it unhashes the old and
      new dentries from the lookup path, even in the normal case when
      a signal is not encountered and it would have been safe to call
      d_move.  Unfortunately the old dentry has the special
      DCACHE_NFSFS_RENAMED flag set on it.  Unhashing has the
      side-effect that future lookups call d_alloc(), allocating a new
      dentry without the special flag for any silly-renamed files.  As a
      result, subsequent calls to unlink silly renamed files do not fail
      but allow the removal to go through.  This will result in ESTALE
      errors for any other process doing operations on the file.
      
      To fix this, go back to using d_move on success.
      For the signal case, it's unclear what we may safely do beyond d_drop.
      Reported-by: default avatarDave Wysochanski <dwysocha@redhat.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Acked-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d3e8a180
    • Jeff Layton's avatar
      cifs: ensure that cifs_get_root() only traverses directories · 18d2c795
      Jeff Layton authored
      commit ce2ac521 upstream.
      
      Kjell Braden reported this oops:
      
      [  833.211970] BUG: unable to handle kernel NULL pointer dereference at           (null)
      [  833.212816] IP: [<          (null)>]           (null)
      [  833.213280] PGD 1b9b2067 PUD e9f7067 PMD 0
      [  833.213874] Oops: 0010 [#1] SMP
      [  833.214344] CPU 0
      [  833.214458] Modules linked in: des_generic md4 nls_utf8 cifs vboxvideo drm snd_intel8x0 snd_ac97_codec ac97_bus snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq bnep rfcomm snd_timer bluetooth snd_seq_device ppdev snd vboxguest parport_pc joydev mac_hid soundcore snd_page_alloc psmouse i2c_piix4 serio_raw lp parport usbhid hid e1000
      [  833.215629]
      [  833.215629] Pid: 1752, comm: mount.cifs Not tainted 3.0.0-rc7-bisectcifs-fec11dd9+ #18 innotek GmbH VirtualBox/VirtualBox
      [  833.215629] RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
      [  833.215629] RSP: 0018:ffff8800119c9c50  EFLAGS: 00010282
      [  833.215629] RAX: ffffffffa02186c0 RBX: ffff88000c427780 RCX: 0000000000000000
      [  833.215629] RDX: 0000000000000000 RSI: ffff88000c427780 RDI: ffff88000c4362e8
      [  833.215629] RBP: ffff8800119c9c88 R08: ffff88001fc15e30 R09: 00000000d69515c7
      [  833.215629] R10: ffffffffa0201972 R11: ffff88000e8f6a28 R12: ffff88000c4362e8
      [  833.215629] R13: 0000000000000000 R14: 0000000000000000 R15: ffff88001181aaa6
      [  833.215629] FS:  00007f2986171700(0000) GS:ffff88001fc00000(0000) knlGS:0000000000000000
      [  833.215629] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [  833.215629] CR2: 0000000000000000 CR3: 000000001b982000 CR4: 00000000000006f0
      [  833.215629] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  833.215629] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [  833.215629] Process mount.cifs (pid: 1752, threadinfo ffff8800119c8000, task ffff88001c1c16f0)
      [  833.215629] Stack:
      [  833.215629]  ffffffff8116a9b5 ffff8800119c9c88 ffffffff81178075 0000000000000286
      [  833.215629]  0000000000000000 ffff88000c4276c0 ffff8800119c9ce8 ffff8800119c9cc8
      [  833.215629]  ffffffff8116b06e ffff88001bc6fc00 ffff88000c4276c0 ffff88000c4276c0
      [  833.215629] Call Trace:
      [  833.215629]  [<ffffffff8116a9b5>] ? d_alloc_and_lookup+0x45/0x90
      [  833.215629]  [<ffffffff81178075>] ? d_lookup+0x35/0x60
      [  833.215629]  [<ffffffff8116b06e>] __lookup_hash.part.14+0x9e/0xc0
      [  833.215629]  [<ffffffff8116b1d6>] lookup_one_len+0x146/0x1e0
      [  833.215629]  [<ffffffff815e4f7e>] ? _raw_spin_lock+0xe/0x20
      [  833.215629]  [<ffffffffa01eef0d>] cifs_do_mount+0x26d/0x500 [cifs]
      [  833.215629]  [<ffffffff81163bd3>] mount_fs+0x43/0x1b0
      [  833.215629]  [<ffffffff8117d41a>] vfs_kern_mount+0x6a/0xd0
      [  833.215629]  [<ffffffff8117e584>] do_kern_mount+0x54/0x110
      [  833.215629]  [<ffffffff8117fdc2>] do_mount+0x262/0x840
      [  833.215629]  [<ffffffff81108a0e>] ? __get_free_pages+0xe/0x50
      [  833.215629]  [<ffffffff8117f9ca>] ? copy_mount_options+0x3a/0x180
      [  833.215629]  [<ffffffff8118075d>] sys_mount+0x8d/0xe0
      [  833.215629]  [<ffffffff815ece82>] system_call_fastpath+0x16/0x1b
      [  833.215629] Code:  Bad RIP value.
      [  833.215629] RIP  [<          (null)>]           (null)
      [  833.215629]  RSP <ffff8800119c9c50>
      [  833.215629] CR2: 0000000000000000
      [  833.238525] ---[ end trace ec00758b8d44f529 ]---
      
      When walking down the path on the server, it's possible to hit a
      symlink. The path walking code assumes that the caller will handle that
      situation properly, but cifs_get_root() isn't set up for it. This patch
      prevents the oops by simply returning an error.
      
      A better solution would be to try and chase the symlinks here, but that's
      fairly complicated to handle.
      
      Fixes:
      
          https://bugzilla.kernel.org/show_bug.cgi?id=53221Reported-and-tested-by: default avatarKjell Braden <afflux@pentabarf.de>
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      18d2c795
    • Thomas Gleixner's avatar
      btrfs: Init io_lock after cloning btrfs device struct · d0e44ede
      Thomas Gleixner authored
      commit 1cba0cdf upstream.
      
      __btrfs_close_devices() clones btrfs device structs with
      memcpy(). Some of the fields in the clone are reinitialized, but it's
      missing to init io_lock. In mainline this goes unnoticed, but on RT it
      leaves the plist pointing to the original about to be freed lock
      struct.
      
      Initialize io_lock after cloning, so no references to the original
      struct are left.
      Reported-and-tested-by: default avatarMike Galbraith <efault@gmx.de>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d0e44ede
    • Asias He's avatar
      target/pscsi: Fix page increment · a5646410
      Asias He authored
      commit 472b72f2 upstream.
      
      The page++ is wrong. It makes bio_add_pc_page() pointing to a wrong page
      address if the 'while (len > 0 && data_len > 0) { ... }' loop is
      executed more than one once.
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a5646410
    • K. Y. Srinivasan's avatar
      SCSI: storvsc: Initialize the sglist · c60de934
      K. Y. Srinivasan authored
      commit 9d2696e6 upstream.
      
      Properly initialize scatterlist before using it.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c60de934
    • Dan Carpenter's avatar
      SCSI: dc395x: uninitialized variable in device_alloc() · 76284215
      Dan Carpenter authored
      commit 208afec4 upstream.
      
      This bug was introduced back in bitkeeper days in 2003.  We use
      "dcb->dev_mode" before it has been initialized.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarOliver Neukum <oliver@neukum.org>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      76284215
    • Konrad Rzeszutek Wilk's avatar
      xen/pci: We don't do multiple MSI's. · f8ac6974
      Konrad Rzeszutek Wilk authored
      commit 884ac297 upstream.
      
      There is no hypercall to setup multiple MSI per PCI device.
      As such with these two new commits:
      -  08261d87
         PCI/MSI: Enable multiple MSIs with pci_enable_msi_block_auto()
      - 5ca72c4f
         AHCI: Support multiple MSIs
      
      we would call the PHYSDEVOP_map_pirq 'nvec' times with the same
      contents of the PCI device. Sander discovered that we would get
      the same PIRQ value 'nvec' times and return said values to the
      caller. That of course meant that the device was configured only
      with one MSI and AHCI would fail with:
      
      ahci 0000:00:11.0: version 3.0
      xen: registering gsi 19 triggering 0 polarity 1
      xen: --> pirq=19 -> irq=19 (gsi=19)
      (XEN) [2013-02-27 19:43:07] IOAPIC[0]: Set PCI routing entry (6-19 -> 0x99 -> IRQ 19 Mode:1 Active:1)
      ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
      ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part
      ahci: probe of 0000:00:11.0 failed with error -22
      
      That is b/c in ahci_host_activate the second call to
      devm_request_threaded_irq  would return -EINVAL as we passed in
      (on the second run) an IRQ that was never initialized.
      Reported-and-Tested-by: default avatarSander Eikelenboom <linux@eikelenboom.it>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f8ac6974
    • Russell King's avatar
      ARM: fix scheduling while atomic warning in alignment handling code · b9dfac7b
      Russell King authored
      commit b255188f upstream.
      
      Paolo Pisati reports that IPv6 triggers this warning:
      
      BUG: scheduling while atomic: swapper/0/0/0x40000100
      Modules linked in:
      [<c001b1c4>] (unwind_backtrace+0x0/0xf0) from [<c0503c5c>] (__schedule_bug+0x48/0x5c)
      [<c0503c5c>] (__schedule_bug+0x48/0x5c) from [<c0508608>] (__schedule+0x700/0x740)
      [<c0508608>] (__schedule+0x700/0x740) from [<c007007c>] (__cond_resched+0x24/0x34)
      [<c007007c>] (__cond_resched+0x24/0x34) from [<c05086dc>] (_cond_resched+0x3c/0x44)
      [<c05086dc>] (_cond_resched+0x3c/0x44) from [<c0021f6c>] (do_alignment+0x178/0x78c)
      [<c0021f6c>] (do_alignment+0x178/0x78c) from [<c00083e0>] (do_DataAbort+0x34/0x98)
      [<c00083e0>] (do_DataAbort+0x34/0x98) from [<c0509a60>] (__dabt_svc+0x40/0x60)
      Exception stack(0xc0763d70 to 0xc0763db8)
      3d60:                                     e97e805e e97e806e 2c000000 11000000
      3d80: ea86bb00 0000002c 00000011 e97e807e c076d2a8 e97e805e e97e806e 0000002c
      3da0: 3d000000 c0763dbc c04b98fc c02a8490 00000113 ffffffff
      [<c0509a60>] (__dabt_svc+0x40/0x60) from [<c02a8490>] (__csum_ipv6_magic+0x8/0xc8)
      
      Fix this by using probe_kernel_address() stead of __get_user().
      Reported-by: default avatarPaolo Pisati <p.pisati@gmail.com>
      Tested-by: default avatarPaolo Pisati <p.pisati@gmail.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b9dfac7b
    • Russell King's avatar
      ARM: VFP: fix emulation of second VFP instruction · 65723919
      Russell King authored
      commit 5e4ba617 upstream.
      
      Martin Storsjö reports that the sequence:
      
              ee312ac1        vsub.f32        s4, s3, s2
              ee702ac0        vsub.f32        s5, s1, s0
              e59f0028        ldr             r0, [pc, #40]
              ee111a90        vmov            r1, s3
      
      on Raspberry Pi (implementor 41 architecture 1 part 20 variant b rev 5)
      where s3 is a denormal and s2 is zero results in incorrect behaviour -
      the instruction "vsub.f32 s5, s1, s0" is not executed:
      
              VFP: bounce: trigger ee111a90 fpexc d0000780
              VFP: emulate: INST=0xee312ac1 SCR=0x00000000
              ...
      
      As we can see, the instruction triggering the exception is the "vmov"
      instruction, and we emulate the "vsub.f32 s4, s3, s2" but fail to
      properly take account of the FPEXC_FP2V flag in FPEXC.  This is because
      the test for the second instruction register being valid is bogus, and
      will always skip emulation of the second instruction.
      Reported-by: default avatarMartin Storsjö <martin@martin.st>
      Tested-by: default avatarMartin Storsjö <martin@martin.st>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      65723919
  2. 03 Mar, 2013 18 commits