14 Apr, 2020

1 commit

  • When executing the following command, we met kernel dump.
    dmesg -c > /dev/null; cd /sys;
    for i in `ls /sys/kernel/debug/regmap/* -d`; do
    echo "Checking regmap in $i";
    cat $i/registers;
    done && grep -ri "0x02d0" *;

    It is because the count value is too big, and kmalloc fails. So add an
    upper bound check to allow max size `PAGE_SIZE << (MAX_ORDER - 1)`.

    Signed-off-by: Peng Fan
    Link: https://lore.kernel.org/r/1584064687-12964-1-git-send-email-peng.fan@nxp.com
    Signed-off-by: Mark Brown

    Joakim cherry pick from upstream commit: 74edd08a4fbf51d65fd8f4c7d8289cd0f392bd91
    Signed-off-by: Joakim Zhang

    Peng Fan
     

08 Mar, 2020

1 commit

  • Merge Linux stable release v5.4.24 into imx_5.4.y

    * tag 'v5.4.24': (3306 commits)
    Linux 5.4.24
    blktrace: Protect q->blk_trace with RCU
    kvm: nVMX: VMWRITE checks unsupported field before read-only field
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    arch/arm/boot/dts/imx6sll-evk.dts
    arch/arm/boot/dts/imx7ulp.dtsi
    arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
    drivers/clk/imx/clk-composite-8m.c
    drivers/gpio/gpio-mxc.c
    drivers/irqchip/Kconfig
    drivers/mmc/host/sdhci-of-esdhc.c
    drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
    drivers/net/can/flexcan.c
    drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
    drivers/net/ethernet/mscc/ocelot.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
    drivers/net/phy/realtek.c
    drivers/pci/controller/mobiveil/pcie-mobiveil-host.c
    drivers/perf/fsl_imx8_ddr_perf.c
    drivers/tee/optee/shm_pool.c
    drivers/usb/cdns3/gadget.c
    kernel/sched/cpufreq.c
    net/core/xdp.c
    sound/soc/fsl/fsl_esai.c
    sound/soc/fsl/fsl_sai.c
    sound/soc/sof/core.c
    sound/soc/sof/imx/Kconfig
    sound/soc/sof/loader.c

    Jason Liu
     

24 Feb, 2020

3 commits

  • [ Upstream commit 0707cfa5c3ef58effb143db9db6d6e20503f9dec ]

    Currently the check that a u32 variable i is >= 0 is always true because
    the unsigned variable will never be negative, causing the loop to run
    forever. Fix this by changing the pre-decrement check to a zero check on
    i followed by a decrement of i.

    Addresses-Coverity: ("Unsigned compared against 0")
    Fixes: 39cc539f90d0 ("driver core: platform: Prevent resouce overflow from causing infinite loops")
    Signed-off-by: Colin Ian King
    Reviewed-by: Rafael J. Wysocki
    Link: https://lore.kernel.org/r/20200116175758.88396-1-colin.king@canonical.com
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Colin Ian King
     
  • [ Upstream commit 7c35e699c88bd60734277b26962783c60e04b494 ]

    If a device already has devres items attached before probing, a warning
    backtrace is printed. However, this backtrace does not reveal the
    offending device, leaving the user uninformed. Furthermore, using
    WARN_ON() causes systems with panic-on-warn to reboot.

    Fix this by replacing the WARN_ON() by a dev_crit() message.
    Abort probing the device, to prevent doing more damage to the device's
    resources.

    Signed-off-by: Geert Uytterhoeven
    Link: https://lore.kernel.org/r/20191206132219.28908-1-geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Geert Uytterhoeven
     
  • [ Upstream commit 39cc539f90d035a293240c9443af50be55ee81b8 ]

    num_resources in the platform_device struct is declared as a u32. The
    for loops that iterate over num_resources use an int as the counter,
    which can cause infinite loops on architectures with smaller ints.
    Change the loop counters to u32.

    Signed-off-by: Simon Schwartz
    Link: https://lore.kernel.org/r/2201ce63a2a171ffd2ed14e867875316efcf71db.camel@theschwartz.xyz
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Simon Schwartz
     

15 Feb, 2020

1 commit

  • commit 2e31aab08bad0d4ee3d3d890a7b74cb6293e0a41 upstream.

    When checking if a register block is writable we must ensure that the
    block does not start with or contain a non incrementing register.

    Fixes: 8b9f9d4dc511 ("regmap: verify if register is writeable before writing operations")
    Signed-off-by: Ben Whitten
    Link: https://lore.kernel.org/r/20200118205625.14532-1-ben.whitten@gmail.com
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Ben Whitten
     

11 Feb, 2020

1 commit

  • commit 0552e05fdfea191a2cf3a0abd33574b5ef9ca818 upstream.

    If a device is deleted by one of its system-wide resume callbacks
    (for example, because it does not appear to be present or accessible
    any more) along with its children, the resume of the children may
    continue leading to use-after-free errors and other issues
    (potentially).

    Namely, if the device's children are resumed asynchronously, their
    resume may have been scheduled already before the device's callback
    runs and so the device may be deleted while dpm_wait_for_superior()
    is being executed for them. The memory taken up by the parent device
    object may be freed then while dpm_wait() is waiting for the parent's
    resume callback to complete, which leads to a use-after-free.
    Moreover, the resume of the children is really not expected to
    continue after they have been unregistered, so it must be terminated
    right away in that case.

    To address this problem, modify dpm_wait_for_superior() to check
    if the target device is still there in the system-wide PM list of
    devices and if so, to increment its parent's reference counter, both
    under dpm_list_mtx which prevents device_del() running for the child
    from dropping the parent's reference counter prematurely.

    If the device is not present in the system-wide PM list of devices
    any more, the resume of it cannot continue, so check that again after
    dpm_wait() returns, which means that the parent's callback has been
    completed, and pass the result of that check to the caller of
    dpm_wait_for_superior() to allow it to abort the device's resume
    if it is not there any more.

    Link: https://lore.kernel.org/linux-pm/1579568452-27253-1-git-send-email-chanho.min@lge.com
    Reported-by: Chanho Min
    Cc: All applicable
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Greg Kroah-Hartman

    Rafael J. Wysocki
     

01 Feb, 2020

2 commits

  • commit 264d25275a46fce5da501874fa48a2ae5ec571c8 upstream.

    Since commit 57ea974fb871 ("driver core: Rewrite test_async_driver_probe
    to cover serialization and NUMA affinity"), running the test with NUMA
    disabled results in warning messages similar to the following.

    test_async_driver test_async_driver.12: NUMA node mismatch -1 != 0

    If CONFIG_NUMA=n, dev_to_node(dev) returns -1, and numa_node_id()
    returns 0. Both are widely used, so it appears risky to change return
    values. Augment the check with IS_ENABLED(CONFIG_NUMA) instead
    to fix the problem.

    Cc: Alexander Duyck
    Fixes: 57ea974fb871 ("driver core: Rewrite test_async_driver_probe to cover serialization and NUMA affinity")
    Signed-off-by: Guenter Roeck
    Cc: stable
    Acked-by: Alexander Duyck
    Link: https://lore.kernel.org/r/20191127202453.28087-1-linux@roeck-us.net
    Signed-off-by: Greg Kroah-Hartman

    Guenter Roeck
     
  • commit ef9ffc1e5f1ac73ecd2fb3b70db2a3b2472ff2f7 upstream.

    The match data does not have to be a struct device pointer, and indeed
    very often is not. Attempt to treat it as such easily results in a
    crash.

    For the components that are not registered, we don't know which device
    is missing. Once it it is there, we can use the struct component to get
    the device and whether it's bound or not.

    Fixes: 59e73854b5fd ('component: add debugfs support')
    Signed-off-by: Lubomir Rintel
    Cc: stable
    Cc: Arnaud Pouliquen
    Link: https://lore.kernel.org/r/20191118115431.63626-1-lkundrak@v3.sk
    Signed-off-by: Greg Kroah-Hartman

    Lubomir Rintel
     

26 Jan, 2020

1 commit

  • [ Upstream commit 51c100a651a471fcb8ead1ecc1224471eb0d61b9 ]

    The software_node_get_parent() returned a pointer to the parent swnode,
    but did not take a reference to it, leading the caller to put a reference
    that was not taken. Take that reference now.

    Fixes: 59abd83672f7 ("drivers: base: Introducing software nodes to the firmware node framework")
    Signed-off-by: Sakari Ailus
    Reviewed-by: Heikki Krogerus
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Sasha Levin

    Sakari Ailus
     

23 Jan, 2020

1 commit

  • commit f5ae2ea6347a308cfe91f53b53682ce635497d0d upstream.

    Intel Software Developer's Manual, volume 3, chapter 9.11.6 says:

    "Note that the microcode update must be aligned on a 16-byte boundary
    and the size of the microcode update must be 1-KByte granular"

    When early-load Intel microcode is loaded from initramfs, userspace tool
    'iucode_tool' has already 16-byte aligned those microcode bits in that
    initramfs image. Image that was created something like this:

    iucode_tool --write-earlyfw=FOO.cpio microcode-files...

    However, when early-load Intel microcode is loaded from built-in
    firmware BLOB using CONFIG_EXTRA_FIRMWARE= kernel config option, that
    16-byte alignment is not guaranteed.

    Fix this by forcing all built-in firmware BLOBs to 16-byte alignment.

    [ If we end up having other firmware with much bigger alignment
    requirements, we might need to introduce some method for the firmware
    to specify it, this is the minimal "just increase the alignment a bit
    to account for this one special case" patch - Linus ]

    Signed-off-by: Jari Ruusu
    Cc: Borislav Petkov
    Cc: Fenghua Yu
    Cc: Luis Chamberlain
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Jari Ruusu
     

31 Dec, 2019

1 commit

  • [ Upstream commit 553671b7685972ca671da5f71cf6414b54376e13 ]

    Some firmware images contain a comma, such as:
    EXTRA_FIRMWARE "brcm/brcmfmac4334-sdio.samsung,gt-s7710.txt"
    as Broadcom firmware simply tags the device tree compatible
    string at the end of the firmware parameter file. And the
    compatible string contains a comma.

    This doesn't play well with gas:

    drivers/base/firmware_loader/builtin/brcm/brcmfmac4334-sdio.samsung,gt-s7710.txt.gen.S: Assembler messages:
    drivers/base/firmware_loader/builtin/brcm/brcmfmac4334-sdio.samsung,gt-s7710.txt.gen.S:4: Error: bad instruction `_fw_brcm_brcmfmac4334_sdio_samsung,gt_s7710_txt_bin:'
    drivers/base/firmware_loader/builtin/brcm/brcmfmac4334-sdio.samsung,gt-s7710.txt.gen.S:9: Error: bad instruction `_fw_brcm_brcmfmac4334_sdio_samsung,gt_s7710_txt_name:'
    drivers/base/firmware_loader/builtin/brcm/brcmfmac4334-sdio.samsung,gt-s7710.txt.gen.S:15: Error: can't resolve `.rodata' {.rodata section} - `_fw_brcm_brcmfmac4334_sdio_samsung' {*UND* section}
    make[6]: *** [../scripts/Makefile.build:357: drivers/base/firmware_loader/builtin/brcm/brcmfmac4334-sdio.samsung,gt-s7710.txt.gen.o] Error 1

    We need to get rid of the comma from the labels used by the
    assembly stub generator.

    Replacing a comma using GNU Make subst requires a helper
    variable.

    Cc: Stephan Gerhold
    Signed-off-by: Linus Walleij
    Link: https://lore.kernel.org/r/20191115225911.3260-1-linus.walleij@linaro.org
    Acked-by: Luis Chamberlain
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Linus Walleij
     

17 Dec, 2019

1 commit

  • This reverts commit 9b947a13e7f6017f18470f665992dbae267852b3.

    The commit 9b947a13e7f6017f18470f665992dbae267852b3 does not consider power and
    clock when expose the regmap into debugsfs. This may bring some problem for some
    case. E.g., For reset registers (not real GPR, but csi bridge register) for
    MIPI DSI, MIPI CSI and LCDIF on i.mx8mm, they only can be accessed after the
    disp_root clock and dispmix power has been turned on, otherwise the system may
    be stuck.

    on i.mx8mm evk, the command to reproduce (with default dtb, no display/capture
    running):
    cat /sys/kernel/debug/regmap/dummy-display-gpr@32e28000/registers

    This patch reverted previous commit to avoid the exposure.

    Signed-off-by: Robby Cai
    Reviewed-by: Fancy Fang

    Robby Cai
     

16 Dec, 2019

1 commit

  • This is the 5.4.3 stable release

    Conflicts:
    drivers/cpufreq/imx-cpufreq-dt.c
    drivers/spi/spi-fsl-qspi.c

    The conflict is very minor, fixed it when do the merge. The imx-cpufreq-dt.c
    is just one line code-style change, using upstream one, no any function change.

    The spi-fsl-qspi.c has minor conflicts when merge upstream fixes: c69b17da53b2
    spi: spi-fsl-qspi: Clear TDH bits in FLSHCR register

    After merge, basic boot sanity test and basic qspi test been done on i.mx

    Signed-off-by: Jason Liu

    Jason Liu
     

05 Dec, 2019

1 commit

  • commit 492c88720d36eb662f9f10c1633f7726fbb07fc4 upstream.

    platform_find_device_by_driver calls bus_find_device and passes
    platform_match as the callback function. Casting the function to a
    mismatching type trips indirect call Control-Flow Integrity (CFI) checking.

    This change adds a callback function with the correct type and instead
    of casting the function, explicitly casts the second parameter to struct
    device_driver* as expected by platform_match.

    Fixes: 36f3313d6bff9 ("platform: Add platform_find_device_by_driver() helper")
    Signed-off-by: Sami Tolvanen
    Reviewed-by: Kees Cook
    Cc: stable
    Link: https://lore.kernel.org/r/20191112214156.3430-1-samitolvanen@google.com
    Signed-off-by: Greg Kroah-Hartman

    Sami Tolvanen
     

02 Dec, 2019

2 commits

  • * pm/next: (54 commits)
    drivers/soc/fsl: add EPU FSM configuration for deep sleep
    fsl_pmc: update device bindings
    soc: fsl: add RCPM driver
    Documentation: dt: binding: fsl: Add 'little-endian' and update Chassis define
    MLK-22992 firmware: imx: scu-pd: fix wu_num
    ...

    Dong Aisheng
     
  • * origin/pm/imx: (49 commits)
    MLK-22992 firmware: imx: scu-pd: fix wu_num
    MLK-22986-1: soc: imx: gpc: add ldo-bypass
    firmware: imx: scu-pd: correct edma0 channel number
    imx: scu-pd: add vpu-enc1 power domains for imx8qm
    cpufreq: imx-cpufreq-dt: Correct i.MX8MN's default speed grade value
    ...

    Dong Aisheng
     

25 Nov, 2019

8 commits


16 Nov, 2019

1 commit

  • try_offline_node() is pretty much broken right now:

    - The node span is updated when onlining memory, not when adding it. We
    ignore memory that was mever onlined. Bad.

    - We touch possible garbage memmaps. The pfn_to_nid(pfn) can easily
    trigger a kernel panic. Bad for memory that is offline but also bad
    for subsection hotadd with ZONE_DEVICE, whereby the memmap of the
    first PFN of a section might contain garbage.

    - Sections belonging to mixed nodes are not properly considered.

    As memory blocks might belong to multiple nodes, we would have to walk
    all pageblocks (or at least subsections) within present sections.
    However, we don't have a way to identify whether a memmap that is not
    online was initialized (relevant for ZONE_DEVICE). This makes things
    more complicated.

    Luckily, we can piggy pack on the node span and the nid stored in memory
    blocks. Currently, the node span is grown when calling
    move_pfn_range_to_zone() - e.g., when onlining memory, and shrunk when
    removing memory, before calling try_offline_node(). Sysfs links are
    created via link_mem_sections(), e.g., during boot or when adding
    memory.

    If the node still spans memory or if any memory block belongs to the
    nid, we don't set the node offline. As memory blocks that span multiple
    nodes cannot get offlined, the nid stored in memory blocks is reliable
    enough (for such online memory blocks, the node still spans the memory).

    Introduce for_each_memory_block() to efficiently walk all memory blocks.

    Note: We will soon stop shrinking the ZONE_DEVICE zone and the node span
    when removing ZONE_DEVICE memory to fix similar issues (access of
    garbage memmaps) - until we have a reliable way to identify whether
    these memmaps were properly initialized. This implies later, that once
    a node had ZONE_DEVICE memory, we won't be able to set a node offline -
    which should be acceptable.

    Since commit f1dd2cd13c4b ("mm, memory_hotplug: do not associate
    hotadded memory to zones until online") memory that is added is not
    assoziated with a zone/node (memmap not initialized). The introducing
    commit 60a5a19e7419 ("memory-hotplug: remove sysfs file of node")
    already missed that we could have multiple nodes for a section and that
    the zone/node span is updated when onlining pages, not when adding them.

    I tested this by hotplugging two DIMMs to a memory-less and cpu-less
    NUMA node. The node is properly onlined when adding the DIMMs. When
    removing the DIMMs, the node is properly offlined.

    Masayoshi Mizuma reported:

    : Without this patch, memory hotplug fails as panic:
    :
    : BUG: kernel NULL pointer dereference, address: 0000000000000000
    : ...
    : Call Trace:
    : remove_memory_block_devices+0x81/0xc0
    : try_remove_memory+0xb4/0x130
    : __remove_memory+0xa/0x20
    : acpi_memory_device_remove+0x84/0x100
    : acpi_bus_trim+0x57/0x90
    : acpi_bus_trim+0x2e/0x90
    : acpi_device_hotplug+0x2b2/0x4d0
    : acpi_hotplug_work_fn+0x1a/0x30
    : process_one_work+0x171/0x380
    : worker_thread+0x49/0x3f0
    : kthread+0xf8/0x130
    : ret_from_fork+0x35/0x40

    [david@redhat.com: v3]
    Link: http://lkml.kernel.org/r/20191102120221.7553-1-david@redhat.com
    Link: http://lkml.kernel.org/r/20191028105458.28320-1-david@redhat.com
    Fixes: 60a5a19e7419 ("memory-hotplug: remove sysfs file of node")
    Fixes: f1dd2cd13c4b ("mm, memory_hotplug: do not associate hotadded memory to zones until online") # visiable after d0dc12e86b319
    Signed-off-by: David Hildenbrand
    Tested-by: Masayoshi Mizuma
    Cc: Tang Chen
    Cc: Greg Kroah-Hartman
    Cc: "Rafael J. Wysocki"
    Cc: Keith Busch
    Cc: Jiri Olsa
    Cc: "Peter Zijlstra (Intel)"
    Cc: Jani Nikula
    Cc: Nayna Jain
    Cc: Michal Hocko
    Cc: Oscar Salvador
    Cc: Stephen Rothwell
    Cc: Dan Williams
    Cc: Pavel Tatashin
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hildenbrand
     

04 Nov, 2019

1 commit

  • Some processors may incur a machine check error possibly resulting in an
    unrecoverable CPU lockup when an instruction fetch encounters a TLB
    multi-hit in the instruction TLB. This can occur when the page size is
    changed along with either the physical address or cache type. The relevant
    erratum can be found here:

    https://bugzilla.kernel.org/show_bug.cgi?id=205195

    There are other processors affected for which the erratum does not fully
    disclose the impact.

    This issue affects both bare-metal x86 page tables and EPT.

    It can be mitigated by either eliminating the use of large pages or by
    using careful TLB invalidations when changing the page size in the page
    tables.

    Just like Spectre, Meltdown, L1TF and MDS, a new bit has been allocated in
    MSR_IA32_ARCH_CAPABILITIES (PSCHANGE_MC_NO) and will be set on CPUs which
    are mitigated against this issue.

    Signed-off-by: Vineela Tummalapalli
    Co-developed-by: Pawan Gupta
    Signed-off-by: Pawan Gupta
    Signed-off-by: Paolo Bonzini
    Signed-off-by: Thomas Gleixner

    Vineela Tummalapalli
     

28 Oct, 2019

1 commit

  • Add the sysfs reporting file for TSX Async Abort. It exposes the
    vulnerability and the mitigation state similar to the existing files for
    the other hardware vulnerabilities.

    Sysfs file path is:
    /sys/devices/system/cpu/vulnerabilities/tsx_async_abort

    Signed-off-by: Pawan Gupta
    Signed-off-by: Borislav Petkov
    Signed-off-by: Thomas Gleixner
    Tested-by: Neelima Krishnan
    Reviewed-by: Mark Gross
    Reviewed-by: Tony Luck
    Reviewed-by: Greg Kroah-Hartman
    Reviewed-by: Josh Poimboeuf

    Pawan Gupta
     

21 Oct, 2019

1 commit


19 Oct, 2019

1 commit

  • Uninitialized memmaps contain garbage and in the worst case trigger kernel
    BUGs, especially with CONFIG_PAGE_POISONING. They should not get touched.

    Right now, when trying to soft-offline a PFN that resides on a memory
    block that was never onlined, one gets a misleading error with
    CONFIG_PAGE_POISONING:

    :/# echo 5637144576 > /sys/devices/system/memory/soft_offline_page
    [ 23.097167] soft offline: 0x150000 page already poisoned

    But the actual result depends on the garbage in the memmap.

    soft_offline_page() can only work with online pages, it returns -EIO in
    case of ZONE_DEVICE. Make sure to only forward pages that are online
    (iow, managed by the buddy) and, therefore, have an initialized memmap.

    Add a check against pfn_to_online_page() and similarly return -EIO.

    Link: http://lkml.kernel.org/r/20191010141200.8985-1-david@redhat.com
    Fixes: f1dd2cd13c4b ("mm, memory_hotplug: do not associate hotadded memory to zones until online") [visible after d0dc12e86b319]
    Signed-off-by: David Hildenbrand
    Acked-by: Naoya Horiguchi
    Acked-by: Michal Hocko
    Cc: Greg Kroah-Hartman
    Cc: "Rafael J. Wysocki"
    Cc: [4.13+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hildenbrand
     

18 Oct, 2019

1 commit


10 Oct, 2019

1 commit

  • It is incorrect to set the cpufreq syscore shutdown callback pointer
    to cpufreq_suspend(), because that function cannot be run in the
    syscore stage of system shutdown for two reasons: (a) it may attempt
    to carry out actions depending on devices that have already been shut
    down at that point and (b) the RCU synchronization carried out by it
    may not be able to make progress then.

    The latter issue has been present since commit 45975c7d21a1 ("rcu:
    Define RCU-sched API in terms of RCU for Tree RCU PREEMPT builds"),
    but the former one has been there since commit 90de2a4aa9f3 ("cpufreq:
    suspend cpufreq governors on shutdown") regardless.

    Fix that by dropping cpufreq_syscore_ops altogether and making
    device_shutdown() call cpufreq_suspend() directly before shutting
    down devices, which is along the lines of what system-wide power
    management does.

    Fixes: 45975c7d21a1 ("rcu: Define RCU-sched API in terms of RCU for Tree RCU PREEMPT builds")
    Fixes: 90de2a4aa9f3 ("cpufreq: suspend cpufreq governors on shutdown")
    Reported-by: Ville Syrjälä
    Tested-by: Ville Syrjälä
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Viresh Kumar
    Cc: 4.0+ # 4.0+

    Rafael J. Wysocki
     

07 Oct, 2019

1 commit

  • Some drivers (e.g dwc3) first try to get an IRQ byname and then fall
    back to the one at index 0. In this case we do not want the error(s)
    printed by platform_get_irq_byname(). This commit adds a new
    platform_get_irq_byname_optional(), which does not print errors, for this.

    While at it also improve the kdoc text for platform_get_irq_byname() a bit.

    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205037
    Signed-off-by: Hans de Goede
    Reviewed-by: Rafael J. Wysocki
    Link: https://lore.kernel.org/r/20191005210449.3926-2-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     

25 Sep, 2019

5 commits

  • In preparation for non-shmem THP, this patch adds a few stats and exposes
    them in /proc/meminfo, /sys/bus/node/devices//meminfo, and
    /proc//task//smaps.

    This patch is mostly a rewrite of Kirill A. Shutemov's earlier version:
    https://lkml.kernel.org/r/20170126115819.58875-5-kirill.shutemov@linux.intel.com/

    Link: http://lkml.kernel.org/r/20190801184244.3169074-5-songliubraving@fb.com
    Signed-off-by: Song Liu
    Acked-by: Rik van Riel
    Acked-by: Kirill A. Shutemov
    Acked-by: Johannes Weiner
    Cc: Hillf Danton
    Cc: Hugh Dickins
    Cc: William Kucharski
    Cc: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Song Liu
     
  • Each memory block spans the same amount of sections/pages/bytes. The size
    is determined before the first memory block is created. No need to store
    what we can easily calculate - and the calculations even look simpler now.

    Michal brought up the idea of variable-sized memory blocks. However, if
    we ever implement something like this, we will need an API compatibility
    switch and reworks at various places (most code assumes a fixed memory
    block size). So let's cleanup what we have right now.

    While at it, fix the variable naming in register_mem_sect_under_node() -
    we no longer talk about a single section.

    Link: http://lkml.kernel.org/r/20190809110200.2746-1-david@redhat.com
    Signed-off-by: David Hildenbrand
    Cc: Greg Kroah-Hartman
    Cc: "Rafael J. Wysocki"
    Cc: Pavel Tatashin
    Cc: Michal Hocko
    Cc: Dan Williams
    Cc: Oscar Salvador
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hildenbrand
     
  • Let's validate the memory block size early, when initializing the memory
    device infrastructure. Fail hard in case the value is not suitable.

    As nobody checks the return value of memory_dev_init(), turn it into a
    void function and fail with a panic in all scenarios instead. Otherwise,
    we'll crash later during boot when core/drivers expect that the memory
    device infrastructure (including memory_block_size_bytes()) works as
    expected.

    I think long term, we should move the whole memory block size
    configuration (set_memory_block_size_order() and
    memory_block_size_bytes()) into drivers/base/memory.c.

    Link: http://lkml.kernel.org/r/20190806090142.22709-1-david@redhat.com
    Signed-off-by: David Hildenbrand
    Cc: Greg Kroah-Hartman
    Cc: "Rafael J. Wysocki"
    Cc: Pavel Tatashin
    Cc: Michal Hocko
    Cc: Dan Williams
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hildenbrand
     
  • Let's rephrase to memory block terminology and add some further
    clarifications.

    Link: http://lkml.kernel.org/r/20190806080826.5963-1-david@redhat.com
    Signed-off-by: David Hildenbrand
    Reviewed-by: Andrew Morton
    Cc: Greg Kroah-Hartman
    Cc: "Rafael J. Wysocki"
    Cc: Michal Hocko
    Cc: Oscar Salvador
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hildenbrand
     
  • We don't allow to offline memory block devices that belong to multiple
    numa nodes. Therefore, such devices can never get removed. It is
    sufficient to process a single node when removing the memory block. No
    need to iterate over each and every PFN.

    We already have the nid stored for each memory block. Make sure that the
    nid always has a sane value.

    Please note that checking for node_online(nid) is not required. If we
    would have a memory block belonging to a node that is no longer offline,
    then we would have a BUG in the node offlining code.

    Link: http://lkml.kernel.org/r/20190719135244.15242-1-david@redhat.com
    Signed-off-by: David Hildenbrand
    Cc: Greg Kroah-Hartman
    Cc: "Rafael J. Wysocki"
    Cc: David Hildenbrand
    Cc: Stephen Rothwell
    Cc: Pavel Tatashin
    Cc: Michal Hocko
    Cc: Oscar Salvador
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Hildenbrand
     

20 Sep, 2019

1 commit

  • Pull misc mount API conversions from Al Viro:
    "Conversions to new API for shmem and friends and for mount_mtd()-using
    filesystems.

    As for the rest of the mount API conversions in -next, some of them
    belong in the individual trees (e.g. binderfs one should definitely go
    through android folks, after getting redone on top of their changes).
    I'm going to drop those and send the rest (trivial ones + stuff ACKed
    by maintainers) in a separate series - by that point they are
    independent from each other.

    Some stuff has already migrated into individual trees (NFS conversion,
    for example, or FUSE stuff, etc.); those presumably will go through
    the regular merges from corresponding trees."

    * 'work.mount2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    vfs: Make fs_parse() handle fs_param_is_fd-type params better
    vfs: Convert ramfs, shmem, tmpfs, devtmpfs, rootfs to use the new mount API
    shmem_parse_one(): switch to use of fs_parse()
    shmem_parse_options(): take handling a single option into a helper
    shmem_parse_options(): don't bother with mpol in separate variable
    shmem_parse_options(): use a separate structure to keep the results
    make shmem_fill_super() static
    make ramfs_fill_super() static
    devtmpfs: don't mix {ramfs,shmem}_fill_super() with mount_single()
    vfs: Convert squashfs to use the new mount API
    mtd: Kill mount_mtd()
    vfs: Convert jffs2 to use the new mount API
    vfs: Convert cramfs to use the new mount API
    vfs: Convert romfs to use the new mount API
    vfs: Add a single-or-reconfig keying to vfs_get_super()

    Linus Torvalds
     

19 Sep, 2019

1 commit

  • Pull USB updates from Greg KH:
    "Here is the big set of USB patches for 5.4-rc1.

    Two major chunks of code are moving out of the tree and into the
    staging directory, uwb and wusb (wireless USB support), because there
    are no devices that actually use this protocol anymore, and what we
    have today probably doesn't work at all given that the maintainers
    left many many years ago. So move it to staging where it will be
    removed in a few releases if no one screams.

    Other than that, lots of little things. The usual gadget and xhci and
    usb serial driver updates, along with a bunch of sysfs file cleanups
    due to the driver core changes to support that. Nothing really major,
    just constant forward progress.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'usb-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (159 commits)
    USB: usbcore: Fix slab-out-of-bounds bug during device reset
    usb: cdns3: Remove redundant dev_err call in cdns3_probe()
    USB: rio500: Fix lockdep violation
    USB: rio500: simplify locking
    usb: mtu3: register a USB Role Switch for dual role mode
    usb: common: add USB GPIO based connection detection driver
    usb: common: create Kconfig file
    usb: roles: get usb-role-switch from parent
    usb: roles: Add fwnode_usb_role_switch_get() function
    device connection: Add fwnode_connection_find_match()
    usb: roles: Introduce stubs for the exiting functions in role.h
    dt-bindings: usb: mtu3: add properties about USB Role Switch
    dt-bindings: usb: add binding for USB GPIO based connection detection driver
    dt-bindings: connector: add optional properties for Type-B
    dt-binding: usb: add usb-role-switch property
    usbip: Implement SG support to vhci-hcd and stub driver
    usb: roles: intel: Enable static DRD mode for role switch
    xhci-ext-caps.c: Add property to disable Intel SW switch
    usb: dwc3: remove generic PHY calibrate() calls
    usb: core: phy: add support for PHY calibration
    ...

    Linus Torvalds