21 Oct, 2022

1 commit


27 Sep, 2022

1 commit

  • This is the 5.15.70 stable release

    * tag 'v5.15.70': (2444 commits)
    Linux 5.15.70
    ALSA: hda/sigmatel: Fix unused variable warning for beep power change
    cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all()
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    arch/arm/boot/dts/imx6ul.dtsi
    arch/arm/mm/mmu.c
    arch/arm64/boot/dts/freescale/imx8mp-evk.dts
    drivers/gpu/drm/imx/dcss/dcss-kms.c
    drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
    drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h
    drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
    drivers/soc/fsl/Kconfig
    drivers/soc/imx/gpcv2.c
    drivers/usb/dwc3/host.c
    net/dsa/slave.c
    sound/soc/fsl/imx-card.c

    Jason Liu
     

15 Sep, 2022

6 commits

  • [ Upstream commit e43212e0f55dc2d6b15d6c174cc0a64b25fab5e7 ]

    Configure ip-polling register to enable polling for all voltage monitor
    channels.
    This enables reading the voltage values for all inputs other than just
    input 0.

    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber
    Reviewed-by: Andy Shevchenko
    Link: https://lore.kernel.org/r/20220908152449.35457-7-farbere@amazon.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Eliav Farber
     
  • [ Upstream commit 91a9e063cdcfca8fe642b078d6fae4ce49187975 ]

    Fix voltage allocation and reading to support all channels in all VMs.
    Prior to this change allocation and reading were done only for the first
    channel in each VM.
    This change counts the total number of channels for allocation, and takes
    into account the channel offset when reading the sample data register.

    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber
    Reviewed-by: Andy Shevchenko
    Link: https://lore.kernel.org/r/20220908152449.35457-6-farbere@amazon.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Eliav Farber
     
  • [ Upstream commit 227a3a2fc31d8e4bb9c88d4804e19530af245b1b ]

    According to Moortec Embedded Voltage Monitor (MEVM) series 3 data
    sheet, the minimum input signal is -100mv and maximum input signal
    is +1000mv.

    The equation used to convert the digital word to voltage uses mixed
    types (*val signed and n unsigned), and on 64 bit machines also has
    different size, since sizeof(u32) = 4 and sizeof(long) = 8.

    So when measuring a negative input, n will be small enough, such that
    PVT_N_CONST * n < PVT_R_CONST, and the result of
    (PVT_N_CONST * n - PVT_R_CONST) will overflow to a very big positive
    32 bit number. Then when storing the result in *val it will be the same
    value just in 64 bit (instead of it representing a negative number which
    will what happen when sizeof(long) = 4).

    When -1023
    Reviewed-by: Andy Shevchenko
    Link: https://lore.kernel.org/r/20220908152449.35457-5-farbere@amazon.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Eliav Farber
     
  • [ Upstream commit bb9195bd6664d94d71647631593e09f705ff5edd ]

    This issue is relevant when "intel,vm-map" is set in device-tree, and
    defines a lower number of VMs than actually supported.

    This change is needed for all places that use pvt->v_num or vm_num
    later on in the code.

    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber
    Reviewed-by: Andy Shevchenko
    Link: https://lore.kernel.org/r/20220908152449.35457-4-farbere@amazon.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Eliav Farber
     
  • [ Upstream commit 81114fc3d27bf5b06b2137d2fd2b63da656a8b90 ]

    Bug - in case "intel,vm-map" is missing in device-tree ,'num' is set
    to 0, and no voltage channel infos are allocated.

    The reason num is set to 0 when "intel,vm-map" is missing is to set the
    entire pvt->vm_idx[] with incremental channel numbers, but it didn't
    take into consideration that same num is used later in devm_kcalloc().

    If "intel,vm-map" does exist there is no need to set the unspecified
    channels with incremental numbers, because the unspecified channels
    can't be accessed in pvt_read_in() which is the only other place besides
    the probe functions that uses pvt->vm_idx[].

    This change fixes the bug by moving the incremental channel numbers
    setting to be done only if "intel,vm-map" property is defined (starting
    loop from 0), and removing 'num = 0'.

    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Eliav Farber
    Reviewed-by: Andy Shevchenko
    Link: https://lore.kernel.org/r/20220908152449.35457-3-farbere@amazon.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Eliav Farber
     
  • commit 1f05f65bddd6958d25b133f886da49c1d4bff3fa upstream.

    The tps23861 registers are little-endian, and regmap_read_bulk() does
    not do byte order conversion. On BE machines, the bytes were swapped,
    and the interpretation of the resistance value was incorrect.

    To make it work on both big and little-endian machines, use
    le16_to_cpu() to convert the resitance register to host byte order.

    Signed-off-by: Alexandru Gagniuc
    Fixes: fff7b8ab22554 ("hwmon: add Texas Instruments TPS23861 driver")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220905142806.110598-1-mr.nuke.me@gmail.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Alexandru Gagniuc
     

08 Sep, 2022

1 commit

  • [ Upstream commit f233d2be38dbbb22299192292983037f01ab363c ]

    The driver does not check if the cooling state passed to
    gpio_fan_set_cur_state() exceeds the maximum cooling state as
    stored in fan_data->num_speeds. Since the cooling state is later
    used as an array index in set_fan_speed(), an array out of bounds
    access can occur.
    This can be exploited by setting the state of the thermal cooling device
    to arbitrary values, causing for example a kernel oops when unavailable
    memory is accessed this way.

    Example kernel oops:
    [ 807.987276] Unable to handle kernel paging request at virtual address ffffff80d0588064
    [ 807.987369] Mem abort info:
    [ 807.987398] ESR = 0x96000005
    [ 807.987428] EC = 0x25: DABT (current EL), IL = 32 bits
    [ 807.987477] SET = 0, FnV = 0
    [ 807.987507] EA = 0, S1PTW = 0
    [ 807.987536] FSC = 0x05: level 1 translation fault
    [ 807.987570] Data abort info:
    [ 807.987763] ISV = 0, ISS = 0x00000005
    [ 807.987801] CM = 0, WnR = 0
    [ 807.987832] swapper pgtable: 4k pages, 39-bit VAs, pgdp=0000000001165000
    [ 807.987872] [ffffff80d0588064] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
    [ 807.987961] Internal error: Oops: 96000005 [#1] PREEMPT SMP
    [ 807.987992] Modules linked in: cmac algif_hash aes_arm64 algif_skcipher af_alg bnep hci_uart btbcm bluetooth ecdh_generic ecc 8021q garp stp llc snd_soc_hdmi_codec brcmfmac vc4 brcmutil cec drm_kms_helper snd_soc_core cfg80211 snd_compress bcm2835_codec(C) snd_pcm_dmaengine syscopyarea bcm2835_isp(C) bcm2835_v4l2(C) sysfillrect v4l2_mem2mem bcm2835_mmal_vchiq(C) raspberrypi_hwmon sysimgblt videobuf2_dma_contig videobuf2_vmalloc fb_sys_fops videobuf2_memops rfkill videobuf2_v4l2 videobuf2_common i2c_bcm2835 snd_bcm2835(C) videodev snd_pcm snd_timer snd mc vc_sm_cma(C) gpio_fan uio_pdrv_genirq uio drm fuse drm_panel_orientation_quirks backlight ip_tables x_tables ipv6
    [ 807.988508] CPU: 0 PID: 1321 Comm: bash Tainted: G C 5.15.56-v8+ #1575
    [ 807.988548] Hardware name: Raspberry Pi 3 Model B Rev 1.2 (DT)
    [ 807.988574] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 807.988608] pc : set_fan_speed.part.5+0x34/0x80 [gpio_fan]
    [ 807.988654] lr : gpio_fan_set_cur_state+0x34/0x50 [gpio_fan]
    [ 807.988691] sp : ffffffc008cf3bd0
    [ 807.988710] x29: ffffffc008cf3bd0 x28: ffffff80019edac0 x27: 0000000000000000
    [ 807.988762] x26: 0000000000000000 x25: 0000000000000000 x24: ffffff800747c920
    [ 807.988787] x23: 000000000000000a x22: ffffff800369f000 x21: 000000001999997c
    [ 807.988854] x20: ffffff800369f2e8 x19: ffffff8002ae8080 x18: 0000000000000000
    [ 807.988877] x17: 0000000000000000 x16: 0000000000000000 x15: 000000559e271b70
    [ 807.988938] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [ 807.988960] x11: 0000000000000000 x10: ffffffc008cf3c20 x9 : ffffffcfb60c741c
    [ 807.989018] x8 : 000000000000000a x7 : 00000000ffffffc9 x6 : 0000000000000009
    [ 807.989040] x5 : 000000000000002a x4 : 0000000000000000 x3 : ffffff800369f2e8
    [ 807.989062] x2 : 000000000000e780 x1 : 0000000000000001 x0 : ffffff80d0588060
    [ 807.989084] Call trace:
    [ 807.989091] set_fan_speed.part.5+0x34/0x80 [gpio_fan]
    [ 807.989113] gpio_fan_set_cur_state+0x34/0x50 [gpio_fan]
    [ 807.989199] cur_state_store+0x84/0xd0
    [ 807.989221] dev_attr_store+0x20/0x38
    [ 807.989262] sysfs_kf_write+0x4c/0x60
    [ 807.989282] kernfs_fop_write_iter+0x130/0x1c0
    [ 807.989298] new_sync_write+0x10c/0x190
    [ 807.989315] vfs_write+0x254/0x378
    [ 807.989362] ksys_write+0x70/0xf8
    [ 807.989379] __arm64_sys_write+0x24/0x30
    [ 807.989424] invoke_syscall+0x4c/0x110
    [ 807.989442] el0_svc_common.constprop.3+0xfc/0x120
    [ 807.989458] do_el0_svc+0x2c/0x90
    [ 807.989473] el0_svc+0x24/0x60
    [ 807.989544] el0t_64_sync_handler+0x90/0xb8
    [ 807.989558] el0t_64_sync+0x1a0/0x1a4
    [ 807.989579] Code: b9403801 f9402800 7100003f 8b35cc00 (b9400416)
    [ 807.989627] ---[ end trace 8ded4c918658445b ]---

    Fix this by checking the cooling state and return an error if it
    exceeds the maximum cooling state.

    Tested on a Raspberry Pi 3.

    Fixes: b5cf88e46bad ("(gpio-fan): Add thermal control hooks")
    Signed-off-by: Armin Wolf
    Link: https://lore.kernel.org/r/20220830011101.178843-1-W_Armin@gmx.de
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Armin Wolf
     

17 Aug, 2022

3 commits

  • [ Upstream commit 5918036cfa8ded7aa8094db70295011ce2275447 ]

    Adding a MODULE_ALIAS() to drivetemp will make the driver easier
    for modprobe to autoprobe.

    Signed-off-by: Linus Walleij
    Link: https://lore.kernel.org/r/20220712214624.1845158-1-linus.walleij@linaro.org
    Fixes: 5b46903d8bf3 ("hwmon: Driver for disk and solid state drives with temperature sensors")
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Linus Walleij
     
  • [ Upstream commit 7d4edccc9bbfe1dcdff641343f7b0c6763fbe774 ]

    Taking a lock at the beginning of .remove() doesn't prevent new readers.
    With the existing approach it can happen, that a read occurs just when
    the lock was taken blocking the reader until the lock is released at the
    end of the remove callback which then accessed *data that is already
    freed then.

    To actually fix this problem the hwmon core needs some adaption. Until
    this is implemented take the optimistic approach of assuming that all
    readers are gone after hwmon_device_unregister() and
    sysfs_remove_group() as most other drivers do. (And once the core
    implements that, taking the lock would deadlock.)

    So drop the lock, move the reset to after device unregistration to keep
    the device in a workable state until it's deregistered. Also add a error
    message in case the reset fails and return 0 anyhow. (Returning an error
    code, doesn't stop the platform device unregistration and only results
    in a little helpful error message before the devm cleanup handlers are
    called.)

    Signed-off-by: Uwe Kleine-König
    Link: https://lore.kernel.org/r/20220725194344.150098-1-u.kleine-koenig@pengutronix.de
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Uwe Kleine-König
     
  • [ Upstream commit 385e5f57053ff293282fea84c1c27186d53f66e1 ]

    A user reported that the program dell-bios-fan-control
    worked on his Dell XPS 13 7390 to switch off automatic
    fan control.
    Since it uses the same mechanism as the dell_smm_hwmon
    module, add this model to the fan control whitelist.

    Compile-tested only.

    Signed-off-by: Armin Wolf
    Acked-by: Pali Rohár
    Link: https://lore.kernel.org/r/20220612041806.11367-1-W_Armin@gmx.de
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Armin Wolf
     

07 Jul, 2022

3 commits

  • [ Upstream commit d0e51022a025ca5350fafb8e413a6fe5d4baf833 ]

    If platform_device_add() fails, it no need to call platform_device_del(), split
    platform_device_unregister() into platform_device_del/put(), so platform_device_put()
    can be called separately.

    Fixes: 8808a793f052 ("ibmaem: new driver for power/energy/temp meters in IBM System X hardware")
    Reported-by: Hulk Robot
    Signed-off-by: Yang Yingliang
    Link: https://lore.kernel.org/r/20220701074153.4021556-1-yangyingliang@huawei.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Yang Yingliang
     
  • [ Upstream commit 1bbb2809040a1f9c7c53c9f06c21aa83275ed27b ]

    Currently, the response to the power cap command overwrites the
    first eight bytes of the poll response, since the commands use
    the same buffer. This means that user's get the wrong data between
    the time of sending the power cap and the next poll response update.
    Fix this by specifying a different buffer for the power cap command
    response.

    Fixes: 5b5513b88002 ("hwmon: Add On-Chip Controller (OCC) hwmon driver")
    Signed-off-by: Eddie James
    Link: https://lore.kernel.org/r/20220628203029.51747-1-eajames@linux.ibm.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Eddie James
     
  • [ Upstream commit 908dbf0242e21dd95c69a1b0935814cd1abfc134 ]

    Checksumming of the request and sequence numbering is now done in the
    OCC interface driver in order to keep unique sequence numbers. So
    remove those in the hwmon driver. Also, add the command length to the
    send_cmd function pointer, since the checksum must be placed in the
    last two bytes of the command. The submit interface must receive the
    exact size of the command - previously it could be rounded to the
    nearest 8 bytes with no consequence.

    Signed-off-by: Eddie James
    Acked-by: Guenter Roeck
    Link: https://lore.kernel.org/r/20210721190231.117185-3-eajames@linux.ibm.com
    Signed-off-by: Joel Stanley
    Signed-off-by: Sasha Levin

    Eddie James
     

30 Jun, 2022

2 commits

  • This is the 5.15.50 stable release

    * tag 'v5.15.50': (1395 commits)
    Linux 5.15.50
    arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA transfer
    serial: core: Initialize rs485 RTS polarity already on probe
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    drivers/bus/fsl-mc/fsl-mc-bus.c
    drivers/crypto/caam/ctrl.c
    drivers/pci/controller/dwc/pci-imx6.c
    drivers/spi/spi-fsl-qspi.c
    drivers/tty/serial/fsl_lpuart.c
    include/uapi/linux/dma-buf.h

    Jason Liu
     
  • This is the 5.15.41 stable release

    * tag 'v5.15.41': (1977 commits)
    Linux 5.15.41
    usb: gadget: uvc: allow for application to cleanly shutdown
    usb: gadget: uvc: rename function to be more consistent
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi
    arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
    arch/arm64/configs/defconfig
    drivers/clk/imx/clk-imx8qxp-lpcg.c
    drivers/dma/imx-sdma.c
    drivers/gpu/drm/bridge/nwl-dsi.c
    drivers/mailbox/imx-mailbox.c
    drivers/net/phy/at803x.c
    drivers/tty/serial/fsl_lpuart.c
    security/keys/trusted-keys/trusted_core.c

    Jason Liu
     

09 Jun, 2022

1 commit

  • [ Upstream commit d1baf7a3a3177d46a7149858beddb88a9eca7a54 ]

    Make sure that the support of PEC is determined before the read of other
    registers. Otherwise the validation of PEC can trigger an error on the read
    of STATUS_BYTE or STATUS_WORD registers.

    The problematic scenario is the following. A device with enabled PEC
    support is up and running and a kernel driver is loaded.
    Then the driver is unloaded (or device unbound), the HW device
    is reconfigured externally (e.g. by i2cset) to advertise itself as not
    supporting PEC. Without the move of the code, at the second load of
    the driver (or bind) the STATUS_BYTE or STATUS_WORD register is always
    read with PEC enabled, which is likely to cause a read error resulting
    with fail of a driver load (or bind).

    Signed-off-by: Adam Wujek
    Link: https://lore.kernel.org/r/20220519233334.438621-1-dev_public@wujek.eu
    Fixes: 75d2b2b06bd84 ("hwmon: (pmbus) disable PEC if not enabled")
    Fixes: 4e5418f787ec5 ("hwmon: (pmbus_core) Check adapter PEC support")
    [groeck: Added Fixes: tags, dropped continuation line]
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Adam Wujek
     

18 May, 2022

3 commits

  • [ Upstream commit 4aaaaf0f279836f06d3b9d0ffeec7a1e1a04ceef ]

    All temperature of Fintek superio hwmonitor that using 1-byte reg will use
    2's complement.

    In show_temp()
    temp = data->temp[nr] * 1000;

    When data->temp[nr] read as 255, it indicate -1C, but this code will report
    255C to userspace. It'll be ok when change to:
    temp = ((s8)data->temp[nr]) * 1000;

    Signed-off-by: Ji-Ze Hong (Peter Hong)
    Link: https://lore.kernel.org/r/20220418090706.6339-1-hpeter+linux_kernel@gmail.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Ji-Ze Hong (Peter Hong)
     
  • [ Upstream commit 151d6dcbed836270c6c240932da66f147950cbdb ]

    Building with SENSORS_LTQ_CPUTEMP=y with SOC_FALCON=y causes build
    errors since FALCON does not support the same features as XWAY.

    Change this symbol to depend on SOC_XWAY since that provides the
    necessary interfaces.

    Repairs these build errors:

    ../drivers/hwmon/ltq-cputemp.c: In function 'ltq_cputemp_enable':
    ../drivers/hwmon/ltq-cputemp.c:23:9: error: implicit declaration of function 'ltq_cgu_w32'; did you mean 'ltq_ebu_w32'? [-Werror=implicit-function-declaration]
    23 | ltq_cgu_w32(ltq_cgu_r32(CGU_GPHY1_CR) | CGU_TEMP_PD, CGU_GPHY1_CR);
    ../drivers/hwmon/ltq-cputemp.c:23:21: error: implicit declaration of function 'ltq_cgu_r32'; did you mean 'ltq_ebu_r32'? [-Werror=implicit-function-declaration]
    23 | ltq_cgu_w32(ltq_cgu_r32(CGU_GPHY1_CR) | CGU_TEMP_PD, CGU_GPHY1_CR);
    ../drivers/hwmon/ltq-cputemp.c: In function 'ltq_cputemp_probe':
    ../drivers/hwmon/ltq-cputemp.c:92:31: error: 'SOC_TYPE_VR9_2' undeclared (first use in this function)
    92 | if (ltq_soc_type() != SOC_TYPE_VR9_2)

    Fixes: 7074d0a92758 ("hwmon: (ltq-cputemp) add cpu temp sensor driver")
    Signed-off-by: Randy Dunlap
    Reported-by: kernel test robot
    Cc: Florian Eckert
    Cc: Guenter Roeck
    Cc: Jean Delvare
    Cc: linux-hwmon@vger.kernel.org
    Link: https://lore.kernel.org/r/20220509234740.26841-1-rdunlap@infradead.org
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Randy Dunlap
     
  • [ Upstream commit 3481551f035725fdc46885425eac3ef9b58ae7b7 ]

    This driver doesn't have of_match_table. This makes the kernel module
    tmp401.ko lack alias patterns (e.g: of:N*T*Cti,tmp411) to match DT node
    of the supported devices hence this kernel module will not be
    automatically loaded.

    After adding of_match_table to this driver, the folllowing alias will be
    added into tmp401.ko.
    $ modinfo drivers/hwmon/tmp401.ko
    filename: drivers/hwmon/tmp401.ko
    ......
    author: Hans de Goede
    alias: of:N*T*Cti,tmp435C*
    alias: of:N*T*Cti,tmp435
    alias: of:N*T*Cti,tmp432C*
    alias: of:N*T*Cti,tmp432
    alias: of:N*T*Cti,tmp431C*
    alias: of:N*T*Cti,tmp431
    alias: of:N*T*Cti,tmp411C*
    alias: of:N*T*Cti,tmp411
    alias: of:N*T*Cti,tmp401C*
    alias: of:N*T*Cti,tmp401
    ......

    Fixes: af503716ac14 ("i2c: core: report OF style module alias for devices registered via OF")
    Signed-off-by: Camel Guo
    Link: https://lore.kernel.org/r/20220503114333.456476-1-camel.guo@axis.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Camel Guo
     

12 May, 2022

2 commits

  • commit 75d2b2b06bd8407d03a3f126bc8b95eb356906c7 upstream.

    Explicitly disable PEC when the client does not support it.
    The problematic scenario is the following. A device with enabled PEC
    support is up and running and a kernel driver is loaded.
    Then the driver is unloaded (or device unbound), the HW device
    is reconfigured externally (e.g. by i2cset) to advertise itself as not
    supporting PEC. Without a new code, at the second load of the driver
    (or bind) the "flags" variable is not updated to avoid PEC usage. As a
    consequence the further communication with the device is done with
    the PEC enabled, which is wrong and may fail.

    The implementation first disable the I2C_CLIENT_PEC flag, then the old
    code enable it if needed.

    Fixes: 4e5418f787ec ("hwmon: (pmbus_core) Check adapter PEC support")
    Signed-off-by: Adam Wujek
    Link: https://lore.kernel.org/r/20220420145059.431061-1-dev_public@wujek.eu
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Adam Wujek
     
  • commit 7b2666ce445c700b8dcee994da44ddcf050a0842 upstream.

    When removing the adt7470 module, a warning might be printed:

    do not call blocking ops when !TASK_RUNNING; state=1
    set at [] adt7470_update_thread+0x7b/0x130 [adt7470]

    This happens because adt7470_update_thread() can leave the kthread in
    TASK_INTERRUPTIBLE state when the kthread is being stopped before
    the call of set_current_state(). Since kthread_exit() might sleep in
    exit_signals(), the warning is printed.
    Fix that by using schedule_timeout_interruptible() and removing
    the call of set_current_state().
    This causes TASK_INTERRUPTIBLE to be set after kthread_should_stop()
    which might cause the kthread to exit.

    Reported-by: Zheyu Ma
    Fixes: 93cacfd41f82 (hwmon: (adt7470) Allow faster removal)
    Signed-off-by: Armin Wolf
    Tested-by: Zheyu Ma
    Link: https://lore.kernel.org/r/20220407101312.13331-1-W_Armin@gmx.de
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Armin Wolf
     

08 Apr, 2022

3 commits

  • [ Upstream commit a5436af598779219b375c1977555c82def1c35d0 ]

    If there is an input undervoltage fault, reported in STATUS_INPUT
    command response, there is quite likely a "Unit Off For Insufficient
    Input Voltage" condition as well.

    Add a constant for bit 3 of STATUS_INPUT. Update the Vin limit
    attributes to include both bits in the mask for clearing faults.

    If an input undervoltage fault occurs, causing a unit off for
    insufficient input voltage, but the unit is off bit is not cleared, the
    STATUS_WORD will not be updated to clear the input fault condition.
    Including the unit is off bit (bit 3) allows for the input fault
    condition to completely clear.

    Signed-off-by: Brandon Wyman
    Link: https://lore.kernel.org/r/20220317232123.2103592-1-bjwyman@gmail.com
    Fixes: b4ce237b7f7d3 ("hwmon: (pmbus) Introduce infrastructure to detect sensors and limit registers")
    [groeck: Dropped unnecessary ()]
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Brandon Wyman
     
  • [ Upstream commit 647d6f09bea7dacf4cdb6d4ea7e3051883955297 ]

    If the watchdog was already enabled by the BIOS after booting, the
    watchdog infrastructure needs to regularly send keepalives to
    prevent a unexpected reset.
    WDOG_ACTIVE only serves as an status indicator for userspace,
    we want to use WDOG_HW_RUNNING instead.

    Since my Fujitsu Esprimo P720 does not support the watchdog,
    this change is compile-tested only.

    Suggested-by: Guenter Roeck
    Fixes: fb551405c0f8 (watchdog: sch56xx: Use watchdog core)
    Signed-off-by: Armin Wolf
    Link: https://lore.kernel.org/r/20220131211935.3656-5-W_Armin@gmx.de
    Reviewed-by: Hans de Goede
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Armin Wolf
     
  • [ Upstream commit 686d303ee6301261b422ea51e64833d7909a2c36 ]

    On PMBUS devices with multiple pages, the regulator ops need to be
    protected with the update mutex. This prevents accidentally changing
    the page in a separate thread while operating on the PMBUS_OPERATION
    register.

    Tested on Infineon xdpe11280 while a separate thread polls for sensor
    data.

    Signed-off-by: Patrick Rudolph
    Signed-off-by: Marcello Sylvester Bauer
    Link: https://lore.kernel.org/r/b991506bcbf665f7af185945f70bf9d5cf04637c.1645804976.git.sylv@sylv.io
    Fixes: ddbb4db4ced1b ("hwmon: (pmbus) Add regulator support")
    Cc: Alan Tull
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Patrick Rudolph
     

22 Mar, 2022

1 commit


16 Mar, 2022

1 commit

  • [ Upstream commit 35f165f08950a876f1b95a61d79c93678fba2fd6 ]

    Almost all fault/warning bits in pmbus status registers remain set even
    after fault/warning condition are removed. As per pmbus specification
    these faults must be cleared by user.
    Modify hwmon behavior to clear fault/warning bit after fetching data if
    fault/warning bit was set. This allows to get fresh data in next read.

    Signed-off-by: Vikash Chandola
    Link: https://lore.kernel.org/r/20220222131253.2426834-1-vikash.chandola@linux.intel.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Vikash Chandola
     

11 Mar, 2022

1 commit

  • This is the 5.15.27 stable release

    * tag 'v5.15.27': (3069 commits)
    Linux 5.15.27
    hamradio: fix macro redefine warning
    KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots()
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    arch/arm/boot/dts/imx7ulp.dtsi
    arch/arm64/boot/dts/freescale/fsl-ls1028a-qds.dts
    arch/arm64/boot/dts/freescale/imx8mq.dtsi
    drivers/dma-buf/heaps/cma_heap.c
    drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
    drivers/gpu/drm/mxsfb/mxsfb_kms.c
    drivers/mmc/host/sdhci-esdhc-imx.c
    drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
    drivers/rpmsg/rpmsg_char.c
    drivers/soc/imx/gpcv2.c
    drivers/thermal/imx_thermal.c

    Jason Liu
     

02 Mar, 2022

1 commit

  • commit 1b5f517cca36292076d9e38fa6e33a257703e62e upstream.

    If an attempt is made to a sensor with a thermal zone and it fails,
    the call to devm_thermal_zone_of_sensor_register() may return -ENODEV.
    This may result in crashes similar to the following.

    Unable to handle kernel NULL pointer dereference at virtual address 00000000000003cd
    ...
    Internal error: Oops: 96000021 [#1] PREEMPT SMP
    ...
    pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : mutex_lock+0x18/0x60
    lr : thermal_zone_device_update+0x40/0x2e0
    sp : ffff800014c4fc60
    x29: ffff800014c4fc60 x28: ffff365ee3f6e000 x27: ffffdde218426790
    x26: ffff365ee3f6e000 x25: 0000000000000000 x24: ffff365ee3f6e000
    x23: ffffdde218426870 x22: ffff365ee3f6e000 x21: 00000000000003cd
    x20: ffff365ee8bf3308 x19: ffffffffffffffed x18: 0000000000000000
    x17: ffffdde21842689c x16: ffffdde1cb7a0b7c x15: 0000000000000040
    x14: ffffdde21a4889a0 x13: 0000000000000228 x12: 0000000000000000
    x11: 0000000000000000 x10: 0000000000000000 x9 : 0000000000000000
    x8 : 0000000001120000 x7 : 0000000000000001 x6 : 0000000000000000
    x5 : 0068000878e20f07 x4 : 0000000000000000 x3 : 00000000000003cd
    x2 : ffff365ee3f6e000 x1 : 0000000000000000 x0 : 00000000000003cd
    Call trace:
    mutex_lock+0x18/0x60
    hwmon_notify_event+0xfc/0x110
    0xffffdde1cb7a0a90
    0xffffdde1cb7a0b7c
    irq_thread_fn+0x2c/0xa0
    irq_thread+0x134/0x240
    kthread+0x178/0x190
    ret_from_fork+0x10/0x20
    Code: d503201f d503201f d2800001 aa0103e4 (c8e47c02)

    Jon Hunter reports that the exact call sequence is:

    hwmon_notify_event()
    --> hwmon_thermal_notify()
    --> thermal_zone_device_update()
    --> update_temperature()
    --> mutex_lock()

    The hwmon core needs to handle all errors returned from calls
    to devm_thermal_zone_of_sensor_register(). If the call fails
    with -ENODEV, report that the sensor was not attached to a
    thermal zone but continue to register the hwmon device.

    Reported-by: Jon Hunter
    Cc: Dmitry Osipenko
    Fixes: 1597b374af222 ("hwmon: Add notification support")
    Reviewed-by: Dmitry Osipenko
    Tested-by: Jon Hunter
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Guenter Roeck
     

16 Feb, 2022

1 commit

  • commit c0d79987a0d82671bff374c07f2201f9bdf4aaa2 upstream.

    When setting the fan speed, i8k_set_fan() calls i8k_get_fan_status(),
    causing an unnecessary SMM call since from the two users of this
    function, only i8k_ioctl_unlocked() needs to know the new fan status
    while dell_smm_write() ignores the new fan status.
    Since SMM calls can be very slow while also making error reporting
    difficult for dell_smm_write(), remove the function call from
    i8k_set_fan() and call it separately in i8k_ioctl_unlocked().

    Tested on a Dell Inspiron 3505.

    Signed-off-by: Armin Wolf
    Reviewed-by: Pali Rohár
    Link: https://lore.kernel.org/r/20211021190531.17379-6-W_Armin@gmx.de
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Armin Wolf
     

02 Feb, 2022

7 commits

  • [ Upstream commit c1ec0cabc36718efc7fe8b4157d41b82d08ec1d2 ]

    The "val" variable is controlled by the user and comes from
    hwmon_attr_store(). The FAN_RPM_TO_PERIOD() macro divides by "val"
    so a zero will crash the system. Check for that and return -EINVAL.
    Negatives are also invalid so return -EINVAL for those too.

    Fixes: fc958a61ff6d ("hwmon: (adt7470) Convert to devm_hwmon_device_register_with_info API")
    Signed-off-by: Dan Carpenter
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Dan Carpenter
     
  • [ Upstream commit d379880d9adb9f1ada3f1266aa49ea2561328e08 ]

    sysfs and udev notifications need to be sent to the _alarm
    attributes, not to the value attributes.

    Fixes: 94dbd23ed88c ("hwmon: (lm90) Use hwmon_notify_event()")
    Cc: Dmitry Osipenko
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Guenter Roeck
     
  • [ Upstream commit a53fff96f35763d132a36c620b183fdf11022d7a ]

    Experiments with MAX6654 show that its alert function is broken,
    similar to other chips supported by the lm90 driver. Mark it accordingly.

    Fixes: 229d495d8189 ("hwmon: (lm90) Add max6654 support to lm90 driver")
    Cc: Josh Lehan
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Guenter Roeck
     
  • [ Upstream commit bc341a1a98827925082e95db174734fc8bd68af6 ]

    If alert handling is broken, interrupts are disabled after an alert and
    re-enabled after the alert clears. However, if there is an interrupt
    handler, this does not apply if alerts were originally disabled and enabled
    when the driver was loaded. In that case, interrupts will stay disabled
    after an alert was handled though the alert handler even after the alert
    condition clears. Address the situation by always re-enabling interrupts
    after the alert condition clears if there is an interrupt handler.

    Fixes: 2abdc357c55d9 ("hwmon: (lm90) Unmask hardware interrupt")
    Cc: Dmitry Osipenko
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Guenter Roeck
     
  • [ Upstream commit a66c5ed539277b9f2363bbace0dba88b85b36c26 ]

    According to its datasheet, G781 supports a maximum conversion rate value
    of 8 (62.5 ms). However, chips labeled G781 and G780 were found to only
    support a maximum conversion rate value of 7 (125 ms). On the other side,
    chips labeled G781-1 and G784 were found to support a conversion rate value
    of 8. There is no known means to distinguish G780 from G781 or G784; all
    chips report the same manufacturer ID and chip revision.
    Setting the conversion rate register value to 8 on chips not supporting
    it causes unexpected behavior since the real conversion rate is set to 0
    (16 seconds) if a value of 8 is written into the conversion rate register.
    Limit the conversion rate register value to 7 for all G78x chips to avoid
    the problem.

    Fixes: ae544f64cc7b ("hwmon: (lm90) Add support for GMT G781")
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Guenter Roeck
     
  • commit 94746b0ba479743355e0d3cc1cb9cfe3011fb8be upstream.

    Experiments with MAX6680 and MAX6681 show that the alert function of those
    chips is broken, similar to other chips supported by the lm90 driver.
    Mark it accordingly.

    Fixes: 4667bcb8d8fc ("hwmon: (lm90) Introduce chip parameter structure")
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Guenter Roeck
     
  • commit f614629f9c1080dcc844a8430e3fb4c37ebbf05d upstream.

    Experiments with MAX6646 and MAX6648 show that the alert function of those
    chips is broken, similar to other chips supported by the lm90 driver.
    Mark it accordingly.

    Fixes: 4667bcb8d8fc ("hwmon: (lm90) Introduce chip parameter structure")
    Signed-off-by: Guenter Roeck
    Signed-off-by: Greg Kroah-Hartman

    Guenter Roeck
     

27 Jan, 2022

1 commit

  • [ Upstream commit a8d6d4992ad9d92356619ac372906bd29687bb46 ]

    In the file mr75203.c we have a macro named POWER_DELAY_CYCLE_256,
    the correct value should be 0x100. The register ip_tmr is expressed
    in units of IP clk cycles, in accordance with the datasheet.
    Typical power-up delays for Temperature Sensor are 256 cycles i.e. 0x100.

    Fixes: 9d823351a337 ("hwmon: Add hardware monitoring driver for Moortec MR75203 PVT controller")
    Signed-off-by: Arseny Demidov
    Link: https://lore.kernel.org/r/20211219102239.1112-1-a.demidov@yadro.com
    Signed-off-by: Guenter Roeck
    Signed-off-by: Sasha Levin

    Arseny Demidov
     

29 Dec, 2021

1 commit