06 Jan, 2017

1 commit

  • commit 777c6e0daebb3fcefbbd6f620410a946b07ef6d0 upstream.

    Yu Zhao has noticed that __unregister_cpu_notifier only unregisters its
    notifiers when HOTPLUG_CPU=y while the registration might succeed even
    when HOTPLUG_CPU=n if MODULE is enabled. This means that e.g. zswap
    might keep a stale notifier on the list on the manual clean up during
    the pool tear down and thus corrupt the list. Resulting in the following

    [ 144.964346] BUG: unable to handle kernel paging request at ffff880658a2be78
    [ 144.971337] IP: [] raw_notifier_chain_register+0x1b/0x40

    [ 145.122628] Call Trace:
    [ 145.125086] [] __register_cpu_notifier+0x18/0x20
    [ 145.131350] [] zswap_pool_create+0x273/0x400
    [ 145.137268] [] __zswap_param_set+0x1fc/0x300
    [ 145.143188] [] ? trace_hardirqs_on+0xd/0x10
    [ 145.149018] [] ? kernel_param_lock+0x28/0x30
    [ 145.154940] [] ? __might_fault+0x4f/0xa0
    [ 145.160511] [] zswap_compressor_param_set+0x17/0x20
    [ 145.167035] [] param_attr_store+0x5c/0xb0
    [ 145.172694] [] module_attr_store+0x1d/0x30
    [ 145.178443] [] sysfs_kf_write+0x4f/0x70
    [ 145.183925] [] kernfs_fop_write+0x149/0x180
    [ 145.189761] [] __vfs_write+0x18/0x40
    [ 145.194982] [] vfs_write+0xb2/0x1a0
    [ 145.200122] [] SyS_write+0x52/0xa0
    [ 145.205177] [] entry_SYSCALL_64_fastpath+0x12/0x17

    This can be even triggered manually by changing
    /sys/module/zswap/parameters/compressor multiple times.

    Fix this issue by making unregister APIs symmetric to the register so
    there are no surprises.

    Fixes: 47e627bc8c9a ("[PATCH] hotplug: Allow modules to use the cpu hotplug notifiers even if !CONFIG_HOTPLUG_CPU")
    Reported-and-tested-by: Yu Zhao
    Signed-off-by: Michal Hocko
    Cc: linux-mm@kvack.org
    Cc: Andrew Morton
    Cc: Dan Streetman
    Link: http://lkml.kernel.org/r/20161207135438.4310-1-mhocko@kernel.org
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Michal Hocko
     

12 Dec, 2016

2 commits


11 Dec, 2016

4 commits

  • The hardware documentation says bit 11:10 are used for the GPE
    frequency selection. Fix the mask in the define to match these bits.

    Signed-off-by: Hauke Mehrtens
    Reported-by: Dan Carpenter
    Reviewed-by: Thomas Langer
    Cc: linux-mips@linux-mips.org
    Cc: john@phrozen.org
    Patchwork: https://patchwork.linux-mips.org/patch/14648/
    Signed-off-by: Ralf Baechle

    Hauke Mehrtens
     
  • The sync_cmos_clock function in kernel/time/ntp.c first tries to update
    the internal clock of the cpu by calling the "update_persistent_clock64"
    architecture specific function. If this returns -ENODEV, it then tries
    to update an external RTC using "rtc_set_ntp_time".

    On the mips architecture, the weak implementation of the underlying
    function would return 0 if it wasn't overridden. This meant that the
    sync_cmos_clock function would never try to update an external RTC
    (if both CONFIG_GENERIC_CMOS_UPDATE and CONFIG_RTC_SYSTOHC are
    configured)

    Returning -ENODEV instead, means that an external RTC will be tried.

    Signed-off-by: Luuk Paulussen
    Reviewed-by: Richard Laing
    Reviewed-by: Scott Parlane
    Reviewed-by: Chris Packham
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14649/
    Signed-off-by: Ralf Baechle

    Luuk Paulussen
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes the following issues:

    - Fix pointer size when caam is used with AArch64 boot loader on
    AArch32 kernel.

    - Fix ahash state corruption in marvell driver.

    - Fix buggy algif_aed tag handling.

    - Prevent mcryptd from being used with incompatible algorithms which
    can cause crashes"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    crypto: algif_aead - fix uninitialized variable warning
    crypto: mcryptd - Check mcryptd algorithm compatibility
    crypto: algif_aead - fix AEAD tag memory handling
    crypto: caam - fix pointer size for AArch64 boot loader, AArch32 kernel
    crypto: marvell - Don't corrupt state of an STD req for re-stepped ahash
    crypto: marvell - Don't copy hash operation twice into the SRAM

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Limit the number of can filters to avoid > MAX_ORDER allocations.
    Fix from Marc Kleine-Budde.

    2) Limit GSO max size in netvsc driver to avoid problems with NVGRE
    configurations. From Stephen Hemminger.

    3) Return proper error when memory allocation fails in
    ser_gigaset_init(), from Dan Carpenter.

    4) Missing linkage undo in error paths of ipvlan_link_new(), from Gao
    Feng.

    5) Missing necessayr SET_NETDEV_DEV in lantiq and cpmac drivers, from
    Florian Fainelli.

    6) Handle probe deferral properly in smsc911x driver.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net: mlx5: Fix Kconfig help text
    net: smsc911x: back out silently on probe deferrals
    ibmveth: set correct gso_size and gso_type
    net: ethernet: cpmac: Call SET_NETDEV_DEV()
    net: ethernet: lantiq_etop: Call SET_NETDEV_DEV()
    vhost-vsock: fix orphan connection reset
    cxgb4/cxgb4vf: Assign netdev->dev_port with port ID
    driver: ipvlan: Unlink the upper dev when ipvlan_link_new failed
    ser_gigaset: return -ENOMEM on error instead of success
    NET: usb: cdc_mbim: add quirk for supporting Telit LE922A
    can: peak: fix bad memory access and free sequence
    phy: Don't increment MDIO bus refcount unless it's a different owner
    netvsc: reduce maximum GSO size
    drivers: net: cpsw-phy-sel: Clear RGMII_IDMODE on "rgmii" links
    can: raw: raw_setsockopt: limit number of can_filter that can be set

    Linus Torvalds
     

10 Dec, 2016

10 commits

  • Since the following commit, Infiniband and Ethernet have not been
    mutually exclusive.

    Fixes: 4aa17b28 mlx5: Enable mutual support for IB and Ethernet
    Signed-off-by: Christopher Covington
    Signed-off-by: David S. Miller

    Christopher Covington
     
  • When trying to get a regulator we may get deferred and we see
    this noise:

    smsc911x 1b800000.ethernet-ebi2 (unnamed net_device) (uninitialized):
    couldn't get regulators -517

    Then the driver continues anyway. Which means that the regulator
    may not be properly retrieved and reference counted, and may be
    switched off in case noone else is using it.

    Fix this by returning silently on deferred probe and let the
    system work it out.

    Cc: Jeremy Linton
    Signed-off-by: Linus Walleij
    Signed-off-by: David S. Miller

    Linus Walleij
     
  • This patch is based on an earlier one submitted
    by Jon Maxwell with the following commit message:

    "We recently encountered a bug where a few customers using ibmveth on the
    same LPAR hit an issue where a TCP session hung when large receive was
    enabled. Closer analysis revealed that the session was stuck because the
    one side was advertising a zero window repeatedly.

    We narrowed this down to the fact the ibmveth driver did not set gso_size
    which is translated by TCP into the MSS later up the stack. The MSS is
    used to calculate the TCP window size and as that was abnormally large,
    it was calculating a zero window, even although the sockets receive buffer
    was completely empty."

    We rely on the Virtual I/O Server partition in a pseries
    environment to provide the MSS through the TCP header checksum
    field. The stipulation is that users should not disable checksum
    offloading if rx packet aggregation is enabled through VIOS.

    Some firmware offerings provide the MSS in the RX buffer.
    This is signalled by a bit in the RX queue descriptor.

    Reviewed-by: Brian King
    Reviewed-by: Pradeep Satyanarayana
    Reviewed-by: Marcelo Ricardo Leitner
    Reviewed-by: Jonathan Maxwell
    Reviewed-by: David Dai
    Signed-off-by: Thomas Falcon
    Signed-off-by: David S. Miller

    Thomas Falcon
     
  • Pull libnvdimm fixes from Dan Williams:
    "Several fixes to the DSM (ACPI device specific method) marshaling
    implementation.

    I consider these urgent enough to send for 4.9 consideration since
    they fix the kernel's handling of ARS (Address Range Scrub) commands.
    Especially for platforms without machine-check-recovery capabilities,
    successful execution of ARS commands enables the platform to
    potentially break out of an infinite reboot problem if a media error
    is present in the boot path. There is also a one line fix for a
    device-dax read-only mapping regression.

    Commits 9a901f5495e2 ("acpi, nfit: fix extended status translations
    for ACPI DSMs") and 325896ffdf90 ("device-dax: fix private mapping
    restriction, permit read-only") are true regression fixes for changes
    introduced this cycle.

    Commit efda1b5d87cb ("acpi, nfit, libnvdimm: fix / harden ars_status
    output length handling") fixes the kernel's handling of zero-length
    results, this never would have worked in the past, but we only just
    recently discovered a BIOS implementation that emits this arguably
    spec non-compliant result.

    The remaining two commits are additional fall out from thinking
    through the implications of a zero / truncated length result of the
    ARS Status command.

    In order to mitigate the risk that these changes introduce yet more
    regressions they are backstopped by a new unit test in commit
    a7de92dac9f0 ("tools/testing/nvdimm: unit test acpi_nfit_ctl()") that
    mocks up inputs to acpi_nfit_ctl()"

    * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
    device-dax: fix private mapping restriction, permit read-only
    tools/testing/nvdimm: unit test acpi_nfit_ctl()
    acpi, nfit: fix bus vs dimm confusion in xlat_status
    acpi, nfit: validate ars_status output buffer size
    acpi, nfit, libnvdimm: fix / harden ars_status output length handling
    acpi, nfit: fix extended status translations for ACPI DSMs

    Linus Torvalds
     
  • Pull libata fixes from Tejun Heo:
    "This is quite late but SCT Write Same support added during this cycle
    is broken subtly but seriously and it'd be best to disable it before
    v4.9 gets released.

    This contains two commits - one low impact sata_mv fix and the
    mentioned disabling of SCT Write Same"

    * 'for-4.9-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
    libata-scsi: disable SCT Write Same for the moment
    ata: sata_mv: check for errors when parsing nr-ports from dt

    Linus Torvalds
     
  • Pull ceph fix from Ilya Dryomov:
    "A fix for an issue with ->d_revalidate() in ceph, causing frequent
    kernel crashes.

    Marked for stable - it goes back to 4.6, but started popping up only
    in 4.8"

    * tag 'ceph-for-4.9-rc9' of git://github.com/ceph/ceph-client:
    ceph: don't set req->r_locked_dir in ceph_d_revalidate

    Linus Torvalds
     
  • Pull ARM SoC fixes from Olof Johansson:
    "Final batch of SoC fixes

    A few fixes that have trickled in over the last week, all fixing minor
    errors in devicetrees -- UART pin assignment on Allwinner H3,
    correcting number of SATA ports on a Marvell-based Linkstation
    platform and a display clock fix for Freescale/NXP i.MX7D that fixes a
    freeze when starting up X"

    * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: dts: orion5x: fix number of sata port for linkstation ls-gl
    ARM: dts: imx7d: fix LCDIF clock assignment
    dts: sun8i-h3: correct UART3 pin definitions

    Linus Torvalds
     
  • Pull m68k fixes from Geert Uytterhoeven:

    - build fix for drivers calling ndelay() in a conditional block without
    curly braces

    - defconfig updates

    * tag 'm68k-for-v4.9-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: Fix ndelay() macro
    m68k/defconfig: Update defconfigs for v4.9-rc1

    Linus Torvalds
     
  • Pull drm fix from Dave Airlie:
    "Just a single fix for amdgpu to just suspend the gpu on 'shutdown'
    instead of shutting it down fully, as for some reason the hw was
    getting upset in some situations"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/amdgpu: just suspend the hw on pci shutdown

    Linus Torvalds
     
  • This reverts commit 53855d10f4567a0577360b6448d52a863929775b.

    It shouldn't have come in yet - it depends on the changes in linux-next
    that will come in during the next merge window. As Matthew Wilcox says,
    the test suite is broken with the current state without the revert.

    Requested-by: Matthew Wilcox
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

09 Dec, 2016

13 commits

  • Florian Fainelli says:

    ====================
    net: ethernet: Make sure we set dev->dev.parent

    This patch series builds atop:

    ec988ad78ed6d184a7f4ca6b8e962b0e8f1de461 ("phy: Don't increment MDIO
    bus refcount unless it's a different owner")

    FMAN is the one that potentially needs patching as well (call
    SET_NETDEV_DEV), but there appears to be no way that init_phy is
    called right now, or there is not such an in-tree user. Madalin, can
    you comment on that?
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The TI CPMAC driver calls into PHYLIB which now checks for
    net_device->dev.parent, so make sure we do set it before calling into
    any MDIO/PHYLIB related function.

    Fixes: ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's a different owner")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • The Lantiq Etop driver calls into PHYLIB which now checks for
    net_device->dev.parent, so make sure we do set it before calling into
    any MDIO/PHYLIB related function.

    Fixes: ec988ad78ed6 ("phy: Don't increment MDIO bus refcount unless it's a different owner")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller

    Florian Fainelli
     
  • local_addr.svm_cid is host cid. We should check guest cid instead,
    which is remote_addr.svm_cid. Otherwise we end up resetting all
    connections to all guests.

    Cc: stable@vger.kernel.org [4.8+]
    Reviewed-by: Stefan Hajnoczi
    Signed-off-by: Peng Tao
    Signed-off-by: David S. Miller

    Peng Tao
     
  • Pull parisc fixes from Helge Deller:
    "Three important fixes for the parisc architecture.

    Dave provided two patches: One which purges the TLB before setting a
    PTE entry and a second one which drops unnecessary TLB flushes. Both
    patches have been tested for one week on the debian buildd servers and
    prevent random segmentation faults.

    The patch from me fixes a crash at boot inside the TLB measuring code
    on SMP machines with PA8000-PA8700 CPUs (specifically A500-44 and
    J5000 servers)"

    * 'parisc-4.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Fix TLB related boot crash on SMP machines
    parisc: Remove unnecessary TLB purges from flush_dcache_page_asm and flush_icache_page_asm
    parisc: Purge TLB before setting PTE

    Linus Torvalds
     
  • …ux/kernel/git/mkl/linux-can

    Marc Kleine-Budde says:

    ====================
    pull-request: can 2016-12-08

    this is a pull request for one patch.

    Jiho Chu found and fixed a use-after-free error in the cleanup path in
    the peak pcan USB CAN driver.
    ====================

    Signed-off-by: David S. Miller <davem@davemloft.net>

    David S. Miller
     
  • Added missing dev_port assignment in cxgb4vf driver.
    Also made dev_port assignment of cxgb4 in sync with cxgb4vf driver.

    Signed-off-by: Casey Leedom
    Signed-off-by: Arjun V
    Signed-off-by: Hariprasad Shenai
    Signed-off-by: Ganesh Goudar
    Signed-off-by: David S. Miller

    Arjun V
     
  • At bootup we run measurements to calculate the best threshold for when we
    should be using full TLB flushes instead of just flushing a specific amount of
    TLB entries. This performance test is run over the kernel text segment.

    But running this TLB performance test on the kernel text segment turned out to
    crash some SMP machines when the kernel text pages were mapped as huge pages.

    To avoid those crashes this patch simply skips this test on some SMP machines
    and calculates an optimal threshold based on the maximum number of available
    TLB entries and number of online CPUs.

    On a technical side, this seems to happen:
    The TLB measurement code uses flush_tlb_kernel_range() to flush specific TLB
    entries with a page size of 4k (pdtlb 0(sr1,addr)). On UP systems this purge
    instruction seems to work without problems even if the pages were mapped as
    huge pages. But on SMP systems the TLB purge instruction is broadcasted to
    other CPUs. Those CPUs then crash the machine because the page size is not as
    expected. C8000 machines with PA8800/PA8900 CPUs were not affected by this
    problem, because the required cache coherency prohibits to use huge pages at
    all. Sadly I didn't found any documentation about this behaviour, so this
    finding is purely based on testing with phyiscal SMP machines (A500-44 and
    J5000, both were 2-way boxes).

    Cc: # v3.18+
    Signed-off-by: Helge Deller

    Helge Deller
     
  • Pull SCSI fix from James Bottomley:
    "One small fix for a regression in a prior fix (again).

    This time the condition in the prior fix BUG_ON proved to be wrong
    under certain circumstances causing a BUG to trigger where it
    shouldn't in the lpfc driver"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: lpfc: fix oops/BUG in lpfc_sli_ringtxcmpl_put()

    Linus Torvalds
     
  • When netdev_upper_dev_unlink failed in ipvlan_link_new, need to
    unlink the ipvlan dev with upper dev.

    Signed-off-by: Gao Feng
    Acked-by: Mahesh Bandewar
    Signed-off-by: David S. Miller

    Gao Feng
     
  • If we can't allocate the resources in gigaset_initdriver() then we
    should return -ENOMEM instead of zero.

    Fixes: 2869b23e4b95 ("[PATCH] drivers/isdn/gigaset: new M101 driver (v2)")
    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Bug report from Debian [0] shows there's minor changed model of
    Linkstation LS-GL that uses the 2nd SATA port of the SoC.
    So it's necessary to enable two SATA ports, though for that specific
    model only the 2nd one is used.

    [0] https://bugs.debian.org/845611

    Fixes: b1742ffa9ddb ("ARM: dts: orion5x: add device tree for buffalo linkstation ls-gl")
    Reported-by: Ryan Tandy
    Tested-by: Ryan Tandy
    Signed-off-by: Roger Shimizu
    Signed-off-by: Gregory CLEMENT

    Roger Shimizu
     
  • Telit LE922A MBIM based composition does not work properly
    with altsetting toggle done in cdc_ncm_bind_common.

    This patch adds CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE quirk
    to avoid this procedure that, instead, is mandatory for
    other modems.

    Signed-off-by: Daniele Palmas
    Reviewed-by: Bjørn Mork
    Signed-off-by: David S. Miller

    Daniele Palmas
     

08 Dec, 2016

10 commits

  • Fix for bad memory access while disconnecting. netdev is freed before
    private data free, and dev is accessed after freeing netdev.

    This makes a slub problem, and it raise kernel oops with slub debugger
    config.

    Signed-off-by: Jiho Chu
    Cc: linux-stable
    Signed-off-by: Marc Kleine-Budde

    추지호
     
  • This function sets req->r_locked_dir which is supposed to indicate to
    ceph_fill_trace that the parent's i_rwsem is locked for write.
    Unfortunately, there is no guarantee that the dir will be locked when
    d_revalidate is called, so we really don't want ceph_fill_trace to do
    any dcache manipulation from this context. Clear req->r_locked_dir since
    it's clearly not safe to do that.

    What we really want to know with d_revalidate is whether the dentry
    still points to the same inode. ceph_fill_trace installs a pointer to
    the inode in req->r_target_inode, so we can just compare that to
    d_inode(dentry) to see if it's the same one after the lookup.

    Also, since we aren't generally interested in the parent here, we can
    switch to using a GETATTR to hint that to the MDS, which also means that
    we only need to reserve one cap.

    Finally, just remove the d_unhashed check. That's really outside the
    purview of a filesystem's d_revalidate. If the thing became unhashed
    while we're checking it, then that's up to the VFS to handle anyway.

    Fixes: 200fd27c8fa2 ("ceph: use lookup request to revalidate dentry")
    Link: http://tracker.ceph.com/issues/18041
    Reported-by: Donatas Abraitis
    Signed-off-by: Jeff Layton
    Reviewed-by: "Yan, Zheng"
    Signed-off-by: Ilya Dryomov

    Jeff Layton
     
  • In case the user provided insufficient data, the code may return
    prematurely without any operation. In this case, the processed
    data indicated with outlen is zero.

    Reported-by: Stephen Rothwell
    Signed-off-by: Stephan Mueller
    Signed-off-by: Herbert Xu

    Stephan Mueller
     
  • Merge more fixes from Andrew Morton:
    "3 fixes"

    * emailed patches from Andrew Morton :
    kcov: add missing #include
    radix tree test suite: fix compilation
    zram: restrict add/remove attributes to root only

    Linus Torvalds
     
  • In __sanitizer_cov_trace_pc we use task_struct and fields within it, but
    as we haven't included , it is not guaranteed to be
    defined. While we usually happen to acquire the definition through a
    transitive include, this is fragile (and hasn't been true in the past,
    causing issues with backports).

    Include to avoid any fragility.

    [mark.rutland@arm.com: rewrote changelog]
    Link: http://lkml.kernel.org/r/1481007384-27529-1-git-send-email-wangkefeng.wang@huawei.com
    Signed-off-by: Kefeng Wang
    Acked-by: Mark Rutland
    Cc: Dmitry Vyukov
    Cc: Andrey Ryabinin
    Cc: James Morse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kefeng Wang
     
  • Patch "lib/radix-tree: Convert to hotplug state machine" breaks the test
    suite as it adds a call to cpuhp_setup_state_nocalls() which is not
    currently emulated in the test suite. Add it, and delete the emulation
    of the old CPU hotplug mechanism.

    Link: http://lkml.kernel.org/r/1480369871-5271-36-git-send-email-mawilcox@linuxonhyperv.com
    Signed-off-by: Matthew Wilcox
    Tested-by: Kirill A. Shutemov
    Cc: Konstantin Khlebnikov
    Cc: Ross Zwisler
    Cc: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     
  • zram hot_add sysfs attribute is a very 'special' attribute - reading
    from it creates a new uninitialized zram device. This file, by a
    mistake, can be read by a 'normal' user at the moment, while only root
    must be able to create a new zram device, therefore hot_add attribute
    must have S_IRUSR mode, not S_IRUGO.

    [akpm@linux-foundation.org: s/sence/sense/, reflow comment to use 80 cols]
    Fixes: 6566d1a32bf72 ("zram: add dynamic device add/remove functionality")
    Link: http://lkml.kernel.org/r/20161205155845.20129-1-sergey.senozhatsky@gmail.com
    Signed-off-by: Sergey Senozhatsky
    Reported-by: Steven Allen
    Acked-by: Greg Kroah-Hartman
    Cc: Minchan Kim
    Cc: [4.2+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • another regression fix for the shutdown stuff.

    * 'drm-fixes-4.9' of git://people.freedesktop.org/~agd5f/linux:
    drm/amdgpu: just suspend the hw on pci shutdown

    Dave Airlie
     
  • SCT Write Same support had been introduced with
    commit 7b2030942859 ("libata: Add support for SCT Write Same")

    Some problems, namely excessive userspace segfaults, had been reported at

    http://lkml.kernel.org/r/20160908192736.GA4356@gmail.com

    This lead to commit 0ce1b18c42a5 ("libata: Some drives failing on
    SCT Write Same") which strived to disable SCT Write Same on !ZAC devices.
    Due to the way this was done and to the logic in sd_config_write_same(),
    this didn't work for those devices that have
    ->max_ws_blocks > SD_MAX_WS10_BLOCKS: for these, ->no_write_same and
    ->max_write_same_sectors would still be non-zero,
    but ->ws10 == ->ws16 == 0. This would cause sd_setup_write_same_cmnd() to
    demultiplex REQ_OP_WRITE_SAME requests to WRITE_SAME, and these in turn
    aren't supported by libata-scsi:

    EXT4-fs (dm-1): Delayed block allocation failed for inode 2625094 at
    logical offset 2032 with max blocks 2 with error 121
    EXT4-fs (dm-1): This should not happen!! Data will be lost

    121 == EREMOTEIO is what scsi_io_completion() asserts in case of
    invalid opcodes.

    Back to the original problem of userspace segfaults: this can be tracked
    down to ata_format_sct_write_same() overwriting the input page. Sometimes,
    this page is ZERO_PAGE(0) which ceases to be filled with zeros from that
    point on. Since ZERO_PAGE(0) is used for userspace .bss mappings, code of
    the following is doomed:

    static char *a = NULL; /* .bss */
    ...
    if (a)
    *a = 'a';

    This problem is not solved by disabling SCT Write Same for !ZAC devices
    only.

    It can certainly be fixed, but the final release is quite close -- so
    disable SCT Write Same for all ATA devices rather than introducing some
    SCT key buffer allocation schemes at this point.

    Fixes: 7b2030942859 ("libata: Add support for SCT Write Same")
    Signed-off-by: Nicolai Stange
    Signed-off-by: Tejun Heo

    Nicolai Stange
     
  • The eLCDIF IP of the i.MX 7 SoC knows multiple clocks and lists them
    separately:

    Clock Clock Root Description
    apb_clk MAIN_AXI_CLK_ROOT AXI clock
    pix_clk LCDIF_PIXEL_CLK_ROOT Pixel clock
    ipg_clk_s MAIN_AXI_CLK_ROOT Peripheral access clock

    All of them are switched by a single gate, which is part of the
    IMX7D_LCDIF_PIXEL_ROOT_CLK clock. Hence using that clock also for
    the AXI bus clock (clock-name "axi") makes sure the gate gets
    enabled when accessing registers.

    There seem to be no separate AXI display clock, and the clock is
    optional. Hence remove the dummy clock.

    This fixes kernel freezes when starting the X-Server (which
    disables/re-enables the display controller).

    Fixes: e8ed73f691bd ("ARM: dts: imx7d: add lcdif support")
    Signed-off-by: Stefan Agner
    Reviewed-by: Fabio Estevam
    Acked-by: Shawn Guo
    Signed-off-by: Olof Johansson

    Stefan Agner