1. 21 11月, 2019 40 次提交
    • D
      tty: serial: qcom_geni_serial: Fix serial when not used as console · 1ea4603c
      Douglas Anderson 提交于
      [ Upstream commit c362272bdea32bf048d6916b0a2dc485eb9cf787 ]
      
      If you've got the "console" serial port setup to use just as a UART
      (AKA there is no "console=ttyMSMX" on the kernel command line) then
      certain initialization is skipped.  When userspace later tries to do
      something with the port then things go boom (specifically, on my
      system, some sort of exception hit that caused the system to reboot
      itself w/ no error messages).
      
      Let's cleanup / refactor the init so that we always run the same init
      code regardless of whether we're using the console.
      
      To make this work, we make rely on qcom_geni_serial_pm doing its job
      to turn resources on.
      
      For the record, here is a trace of the order of things (after this
      patch) when console= is specified on the command line and we have an
      agetty on the port:
        qcom_geni_serial_pm: 4 (undefined) => 0 (on)
        qcom_geni_console_setup
        qcom_geni_serial_port_setup
        qcom_geni_serial_console_write
        qcom_geni_serial_startup
        qcom_geni_serial_start_tx
      
      ...and here is the order of things (after this patch) when console= is
      _NOT_ specified on the command line and we have an agetty port:
        qcom_geni_serial_pm: 4 => 0
        qcom_geni_serial_pm: 0 => 3
        qcom_geni_serial_pm: 3 => 0
        qcom_geni_serial_startup
        qcom_geni_serial_port_setup
        qcom_geni_serial_pm: 0 => 3
        qcom_geni_serial_pm: 3 => 0
        qcom_geni_serial_startup
        qcom_geni_serial_start_tx
      
      Fixes: c4f52879 ("tty: serial: msm_geni_serial: Add serial driver support for GENI based QUP")
      Signed-off-by: NDouglas Anderson <dianders@chromium.org>
      Reviewed-by: NMatthias Kaehlcke <mka@chromium.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      1ea4603c
    • A
      serial: mxs-auart: Fix potential infinite loop · 87153f7a
      Anton Vasilyev 提交于
      [ Upstream commit 5963e8a3122471cadfe0eba41c4ceaeaa5c8bb4d ]
      
      On the error path of mxs_auart_request_gpio_irq() is performed
      backward iterating with index i of enum type. Underline enum type
      may be unsigned char. In this case check (--i >= 0) will be always
      true and error handling goes into infinite loop.
      
      The patch changes the check so that it is valid for signed and unsigned
      types.
      
      Found by Linux Driver Verification project (linuxtesting.org).
      Signed-off-by: NAnton Vasilyev <vasilyev@ispras.ru>
      Acked-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      87153f7a
    • M
      serial: samsung: Enable baud clock for UART reset procedure in resume · 400caa3d
      Marek Szyprowski 提交于
      [ Upstream commit 1ff3652bc7111df26b5807037f624be294cf69d5 ]
      
      Ensure that the baud clock is also enabled for UART register writes in
      driver resume. On Exynos5433 SoC this is needed to avoid external abort
      issue.
      Signed-off-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Reviewed-by: NKrzysztof Kozlowski <krzk@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      400caa3d
    • N
      serial: uartps: Fix suspend functionality · 30cfa3eb
      Nava kishore Manne 提交于
      [ Upstream commit 4b9d33c6a30688344a3e95179654ea31b07f59b7 ]
      
      The driver's suspend/resume functions were buggy.
      If UART node contains any child node in the DT and
      the child is established a communication path with
      the parent UART. The relevant /dev/ttyPS* node will
      be not available for other operations.
      If the driver is trying to do any operations like
      suspend/resume without checking the tty->dev status
      it leads to the kernel crash/hang.
      
      This patch fix this issue by call the device_may_wake()
      with the generic parameter of type struct device.
      in the uart suspend and resume paths.
      
      It also fixes a race condition in the uart suspend
      path(i.e uart_suspend_port() should be called at the
      end of cdns_uart_suspend API this path updates the same)
      Signed-off-by: NNava kishore Manne <navam@xilinx.com>
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      30cfa3eb
    • R
      ARM: dts: xilinx: Fix I2C and SPI bus warnings · bad4e6d3
      Rob Herring 提交于
      [ Upstream commit f5054ceed420b1f38d37920a4c65446fcc5d6b90 ]
      
      dtc has new checks for I2C and SPI buses. Fix the warnings in node names
      and unit-addresses.
      
      arch/arm/boot/dts/zynq-zc702.dtb: Warning (i2c_bus_reg): /amba/i2c@e0004000/i2c-mux@74/i2c@7/hwmon@52: I2C bus unit address format error, expected "34"
      arch/arm/boot/dts/zynq-zc702.dtb: Warning (i2c_bus_reg): /amba/i2c@e0004000/i2c-mux@74/i2c@7/hwmon@53: I2C bus unit address format error, expected "35"
      arch/arm/boot/dts/zynq-zc702.dtb: Warning (i2c_bus_reg): /amba/i2c@e0004000/i2c-mux@74/i2c@7/hwmon@54: I2C bus unit address format error, expected "36"
      arch/arm/boot/dts/zynq-zc770-xm013.dtb: Warning (spi_bus_reg): /amba/spi@e0006000/eeprom@0: SPI bus unit address format error, expected "2"
      arch/arm/boot/dts/zynq-zc770-xm010.dtb: Warning (spi_bus_reg): /amba/spi@e0007000/flash@0: SPI bus unit address format error, expected "1"
      
      Cc: Michal Simek <michal.simek@xilinx.com>
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NMichal Simek <michal.simek@xilinx.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      bad4e6d3
    • G
      PCI: mediatek: Fix unchecked return value · d15e5038
      Gustavo A. R. Silva 提交于
      [ Upstream commit 17a0a1e5f6c4bd6df17834312ff577c1373d87b8 ]
      
      Check return value of devm_pci_remap_iospace().
      
      Addresses-Coverity-ID: 1471965 ("Unchecked return value")
      Signed-off-by: NGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: NHonghui Zhang <honghui.zhang@mediatek.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      d15e5038
    • J
      net: socionext: Fix two sleep-in-atomic-context bugs in ave_rxfifo_reset() · 80ec7fcb
      Jia-Ju Bai 提交于
      [ Upstream commit 0020f5c807ef67954d9210eea0ba17a6134cdf7d ]
      
      The driver may sleep with holding a spinlock.
      The function call paths (from bottom to top) in Linux-4.17 are:
      
      [FUNC] usleep_range
      drivers/net/ethernet/socionext/sni_ave.c, 892:
      	usleep_range in ave_rxfifo_reset
      drivers/net/ethernet/socionext/sni_ave.c, 932:
      	ave_rxfifo_reset in ave_irq_handler
      
      [FUNC] usleep_range
      drivers/net/ethernet/socionext/sni_ave.c, 888:
      	usleep_range in ave_rxfifo_reset
      drivers/net/ethernet/socionext/sni_ave.c, 932:
      	ave_rxfifo_reset in ave_irq_handler
      
      To fix these bugs, usleep_range() is replaced with udelay().
      
      These bugs are found by my static analysis tool DSAC.
      Signed-off-by: NJia-Ju Bai <baijiaju1990@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      80ec7fcb
    • S
      PCI/ACPI: Correct error message for ASPM disabling · 176f6203
      Sinan Kaya 提交于
      [ Upstream commit 1ad61b612b95980a4d970c52022aa01dfc0f6068 ]
      
      If _OSC execution fails today for platforms without an _OSC entry, code is
      printing a misleading message saying disabling ASPM as follows:
      
        acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
      
      We need to ensure that platform supports ASPM to begin with.
      Reported-by: NMichael Kelley <mikelley@microsoft.com>
      Signed-off-by: NSinan Kaya <okaya@kernel.org>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      176f6203
    • J
      media: ov2680: don't register the v4l2 subdevice before checking chip ID · 525552a0
      Javier Martinez Canillas 提交于
      [ Upstream commit b7a417628abf49dae98cb80a272dc133b0e4d1a3 ]
      
      The driver registers the v4l2 subdevice before attempting to power on the
      chip and checking its ID. This means that a media device driver that it's
      waiting for this subdevice to be bound, will prematurely expose its media
      device node to userspace because if something goes wrong the media entity
      will be cleaned up again on the ov2680 probe function.
      
      This also simplifies the probe function error path since no initialization
      is made before attempting to enable the resources or checking the chip ID.
      
      Fixes: 3ee47cad ("media: ov2680: Add Omnivision OV2680 sensor driver")
      Signed-off-by: NJavier Martinez Canillas <javierm@redhat.com>
      Signed-off-by: NSakari Ailus <sakari.ailus@linux.intel.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      525552a0
    • K
      media: vsp1: Fix YCbCr planar formats pitch calculation · f4683c89
      Koji Matsuoka 提交于
      [ Upstream commit 9b2798d5b71c50f64c41a40f0cbcae47c3fbd067 ]
      
      YCbCr planar formats can have different pitch values for the luma and
      chroma planes. This isn't taken into account in the driver. Fix it.
      
      Based on a BSP patch from Koji Matsuoka <koji.matsuoka.xm@renesas.com>.
      
      Fixes: 7863ac50 ("drm: rcar-du: Add tri-planar memory formats support")
      [Updated documentation of the struct vsp1_du_atomic_config pitch field]
      Signed-off-by: NKoji Matsuoka <koji.matsuoka.xm@renesas.com>
      Signed-off-by: NLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Reviewed-by: NKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      f4683c89
    • L
      media: vsp1: Fix vsp1_regs.h license header · ee5a1460
      Laurent Pinchart 提交于
      [ Upstream commit 5eea860a6fec1e60709d19832015ee0991d3e80c ]
      
      All source files of the vsp1 driver are licensed under the GPLv2+ except
      for vsp1_regs.h which is licensed under GPLv2. This is caused by a bad
      copy&paste that dates back from the initial version of the driver. Fix
      it.
      Acked-by: NKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
      Acked-by: Sergei Shtylyov<sergei.shtylyov@cogentembedded.com>
      Acked-by: NNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
      Acked-by: NWolfram Sang <wsa+renesas@sang-engineering.com>
      Acked-by: NNobuhiro Iwamatsu <iwamatsu@nigauri.org>
      Signed-off-by: NLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      ee5a1460
    • J
      s390/qeth: invoke softirqs after napi_schedule() · 2d757828
      Julian Wiedmann 提交于
      [ Upstream commit 4d19db777a2f32c9b76f6fd517ed8960576cb43e ]
      
      Calling napi_schedule() from process context does not ensure that the
      NET_RX softirq is run in a timely fashion. So trigger it manually.
      
      This is no big issue with current code. A call to ndo_open() is usually
      followed by a ndo_set_rx_mode() call, and for qeth this contains a
      spin_unlock_bh(). Except for OSN, where qeth_l2_set_rx_mode() bails out
      early.
      Nevertheless it's best to not depend on this behaviour, and just fix
      the issue at its source like all other drivers do. For instance see
      commit 83a0c6e5 ("i40e: Invoke softirqs after napi_reschedule").
      
      Fixes: a1c3ed4c ("qeth: NAPI support for l2 and l3 discipline")
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      2d757828
    • J
      s390/qeth: uninstall IRQ handler on device removal · 66fb291b
      Julian Wiedmann 提交于
      [ Upstream commit 121ca39aa5585def682a2c8592983442438b84dc ]
      
      When setting up, qeth installs its IRQ handler on the ccw devices. But
      the IRQ handler is not cleared on removal - so even after qeth yields
      control of the ccw devices, spurious interrupts would still be presented
      to us.
      
      Make (de-)installation of the IRQ handler part of the ccw channel
      setup/removal helpers, and while at it also add the appropriate locking.
      Shift around qeth_setup_channel() to avoid a forward declaration for
      qeth_irq().
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      66fb291b
    • D
      ath9k: Fix a locking bug in ath9k_add_interface() · ccc1e600
      Dan Carpenter 提交于
      [ Upstream commit 461cf036057477805a8a391e5fd0f5264a5e56a8 ]
      
      We tried to revert commit d9c52fd17cb4 ("ath9k: fix tx99 with monitor
      mode interface") but accidentally missed part of the locking change.
      
      The lock has to be held earlier so that we're holding it when we do
      "sc->tx99_vif = vif;" and also there in the current code there is a
      stray unlock before we have taken the lock.
      
      Fixes: 6df0580be8bc ("ath9k: add back support for using active monitor interfaces for tx99")
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      ccc1e600
    • F
      netfilter: nf_tables: avoid BUG_ON usage · e97d0927
      Florian Westphal 提交于
      [ Upstream commit fa5950e498e7face21a1761f327e6c1152f778c3 ]
      
      None of these spots really needs to crash the kernel.
      In one two cases we can jsut report error to userspace, in the other
      cases we can just use WARN_ON (and leak memory instead).
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      e97d0927
    • H
      ACPI / LPSS: Exclude I2C busses shared with PUNIT from pmc_atom_d3_mask · d1440f1a
      Hans de Goede 提交于
      [ Upstream commit 86b62e5cd8965d3056f9e9ccdec51631c37add81 ]
      
      lpss_iosf_enter_d3_state() checks if all hw-blocks using the DMA
      controllers are in d3 before powering down the DMA controllers.
      
      But on devices, where the I2C bus connected to the PMIC is shared by
      the PUNIT, the controller for that bus will never reach d3 since it has
      an effectively empty _PS3 method. Instead it appears to automatically
      power-down during S0i3 and we never see it as being in d3.
      
      This causes the DMA controllers to never be powered-down on these devices,
      causing them to never reach S0i3. This commit uses the ACPI _SEM method
      to detect if an I2C bus is shared with the PUNIT and if it is, it removes
      it from the mask of devices which lpss_iosf_enter_d3_state() checks for.
      
      This fixes these devices never reaching any S0ix states.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      d1440f1a
    • R
      arm64: dts: rockchip: Fix I2C bus unit-address error on rk3399-puma-haikou · 75fd1aec
      Rob Herring 提交于
      [ Upstream commit 501500e65fa96f899230d66153fefd780f08dd34 ]
      
      dtc has new checks for I2C buses. Fix the warnings in unit-addresses.
      
      arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dtb: Warning (i2c_bus_reg): /i2c@ff3d0000/codec@0a: I2C bus unit address format error, expected "a"
      
      Cc: Heiko Stuebner <heiko@sntech.de>
      Cc: linux-rockchip@lists.infradead.org
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      75fd1aec
    • R
      ARM: dts: rockchip: Fix erroneous SPI bus dtc warnings on rk3036 · 5fc9af40
      Rob Herring 提交于
      [ Upstream commit 131c3eb428ccd5f0c784b9edb4f72ec296a045d2 ]
      
      dtc has new checks for SPI buses. The rk3036 dts file has a node named
      spi' which causes false positive warnings. As the node is a pinctrl child
      node, change the node name to be 'spi-pins' to fix the warnings.
      
      arch/arm/boot/dts/rk3036-evb.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #address-cells for SPI bus
      arch/arm/boot/dts/rk3036-kylin.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #address-cells for SPI bus
      arch/arm/boot/dts/rk3036-evb.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #size-cells for SPI bus
      arch/arm/boot/dts/rk3036-kylin.dtb: Warning (spi_bus_bridge): /pinctrl/spi: incorrect #size-cells for SPI bus
      
      Cc: Heiko Stuebner <heiko@sntech.de>
      Cc: linux-rockchip@lists.infradead.org
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      5fc9af40
    • V
      scsi: ufshcd: Fix NULL pointer dereference for in ufshcd_init · 0592c217
      Vivek Gautam 提交于
      [ Upstream commit eebcc19646489b68399ce7b35d9c38eb9f4ec40f ]
      
      Error paths in ufshcd_init() ufshcd_hba_exit() killed clk_scaling workqueue
      when the workqueue is actually created quite late in ufshcd_init().  So, we
      end up getting NULL pointer dereference in such error paths.  Fix this by
      moving clk_scaling initialization and kill codes to two separate methods, and
      call them at required places.
      
      Fixes: 401f1e44 ("scsi: ufs: don't suspend clock scaling during clock
      gating")
      Signed-off-by: NVivek Gautam <vivek.gautam@codeaurora.org>
      Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
      Cc: Subhash Jadavani <subhashj@codeaurora.org>
      Cc: Matthias Kaehlcke <mka@chromium.org>
      Cc: Evan Green <evgreen@chromium.org>
      Cc: Martin K. Petersen <martin.petersen@oracle.com>
      Reviewed-by: NEvan Green <evgreen@chromium.org>
      Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      0592c217
    • H
      ip_gre: fix parsing gre header in ipgre_err · 6745591c
      Haishuang Yan 提交于
      [ Upstream commit b0350d51f001e6edc13ee4f253b98b50b05dd401 ]
      
      gre_parse_header stops parsing when csum_err is encountered, which means
      tpi->key is undefined and ip_tunnel_lookup will return NULL improperly.
      
      This patch introduce a NULL pointer as csum_err parameter. Even when
      csum_err is encountered, it won't return error and continue parsing gre
      header as expected.
      
      Fixes: 9f57c67c ("gre: Remove support for sharing GRE protocol hook.")
      Reported-by: NJiri Benc <jbenc@redhat.com>
      Signed-off-by: NHaishuang Yan <yanhaishuang@cmss.chinamobile.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      6745591c
    • B
      kernfs: Fix range checks in kernfs_get_target_path · ada2a0f1
      Bernd Edlinger 提交于
      [ Upstream commit a75e78f21f9ad4b810868c89dbbabcc3931591ca ]
      
      The terminating NUL byte is only there because the buffer is
      allocated with kzalloc(PAGE_SIZE, GFP_KERNEL), but since the
      range-check is off-by-one, and PAGE_SIZE==PATH_MAX, the
      returned string may not be zero-terminated if it is exactly
      PATH_MAX characters long.  Furthermore also the initial loop
      may theoretically exceed PATH_MAX and cause a fault.
      Signed-off-by: NBernd Edlinger <bernd.edlinger@hotmail.de>
      Acked-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      ada2a0f1
    • B
      component: fix loop condition to call unbind() if bind() fails · 5fba8151
      Banajit Goswami 提交于
      [ Upstream commit bdae566d5d9733b6e32b378668b84eadf28a94d4 ]
      
      During component_bind_all(), if bind() fails for any
      particular component associated with a master, unbind()
      should be called for all previous components in that
      master's match array, whose bind() might have completed
      successfully. As per the current logic, if bind() fails
      for the component at position 'n' in the master's match
      array, it would start calling unbind() from component in
      'n'th position itself and work backwards, and will always
      skip calling unbind() for component in 0th position in the
      master's match array.
      Fix this by updating the loop condition, and the logic to
      refer to the components in master's match array, so that
      unbind() is called for all components starting from 'n-1'st
      position in the array, until (and including) component in
      0th position.
      Signed-off-by: NBanajit Goswami <bgoswami@codeaurora.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      5fba8151
    • T
      power: supply: max8998-charger: Fix platform data retrieval · 925c19a8
      Tomasz Figa 提交于
      [ Upstream commit cb90a2c6f77fe9b43d1e3f759bb2f13fe7fa1811 ]
      
      Since the max8998 MFD driver supports instantiation by DT, platform data
      retrieval is handled in MFD probe and cell drivers should get use
      the pdata field of max8998_dev struct to obtain them.
      
      Fixes: ee999fb3 ("mfd: max8998: Add support for Device Tree")
      Signed-off-by: NTomasz Figa <tomasz.figa@gmail.com>
      Signed-off-by: NPaweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
      Signed-off-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      925c19a8
    • C
      power: reset: at91-poweroff: do not procede if at91_shdwc is allocated · 82d8a344
      Claudiu Beznea 提交于
      [ Upstream commit 9f1e44774be578fb92776add95f1fcaf8284d692 ]
      
      There should be only one instance of struct shdwc in the system. This is
      referenced through at91_shdwc. Return in probe if at91_shdwc is already
      allocated.
      Signed-off-by: NClaudiu Beznea <claudiu.beznea@microchip.com>
      Acked-by: NNicolas Ferre <nicolas.ferre@microchip.com>
      Signed-off-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      82d8a344
    • D
      power: supply: ab8500_fg: silence uninitialized variable warnings · 1fb3d279
      Dan Carpenter 提交于
      [ Upstream commit 54baff8d4e5dce2cef61953b1dc22079cda1ddb1 ]
      
      If kstrtoul() fails then we print "charge_full" when it's uninitialized.
      The debug printk doesn't add anything so I deleted it and cleaned these
      two functions up a bit.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      1fb3d279
    • R
      arm64: dts: meson: Fix erroneous SPI bus warnings · c9398259
      Rob Herring 提交于
      [ Upstream commit 68ecb5c1920c5b98b1e717fd2349fba2ee5d4031 ]
      
      dtc has new checks for SPI buses. The meson dts files have a node named
      spi' which causes false positive warnings. As the node is a pinctrl child
      node, change the node name to be 'spi-pins' to fix the warnings.
      
      arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dtb: Warning (spi_bus_bridge): /soc/periphs@c8834000/pinctrl@4b0/spi: incorrect #address-cells for SPI bus
      
      Cc: Carlo Caione <carlo@caione.org>
      Cc: Kevin Hilman <khilman@baylibre.com>
      Cc: linux-amlogic@lists.infradead.org
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NKevin Hilman <khilman@baylibre.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      c9398259
    • P
      blok, bfq: do not plug I/O if all queues are weight-raised · 89f4d27c
      Paolo Valente 提交于
      [ Upstream commit c8765de0adfcaaf4ffb2d951e07444f00ffa9453 ]
      
      To reduce latency for interactive and soft real-time applications, bfq
      privileges the bfq_queues containing the I/O of these
      applications. These privileged queues, referred-to as weight-raised
      queues, get a much higher share of the device throughput
      w.r.t. non-privileged queues. To preserve this higher share, the I/O
      of any non-weight-raised queue must be plugged whenever a sync
      weight-raised queue, while being served, remains temporarily empty. To
      attain this goal, bfq simply plugs any I/O (from any queue), if a sync
      weight-raised queue remains empty while in service.
      
      Unfortunately, this plugging typically lowers throughput with random
      I/O, on devices with internal queueing (because it reduces the filling
      level of the internal queues of the device).
      
      This commit addresses this issue by restricting the cases where
      plugging is performed: if a sync weight-raised queue remains empty
      while in service, then I/O plugging is performed only if some of the
      active bfq_queues are *not* weight-raised (which is actually the only
      circumstance where plugging is needed to preserve the higher share of
      the throughput of weight-raised queues). This restriction proved able
      to boost throughput in really many use cases needing only maximum
      throughput.
      Signed-off-by: NPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      89f4d27c
    • P
      block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash · 6c9a7965
      Paolo Valente 提交于
      [ Upstream commit d0edc2473be9d70f999282e1ca7863ad6ae704dc ]
      
      The Achilles' heel of BFQ is its failing to reach a high throughput
      with sync random I/O on flash storage with internal queueing, in case
      the processes doing I/O have differentiated weights.
      
      The cause of this failure is as follows. If at least two processes do
      sync I/O, and have a different weight from each other, then BFQ plugs
      I/O dispatching every time one of these processes, while it is being
      served, remains temporarily without pending I/O requests. This
      plugging is necessary to guarantee that every process enjoys a
      bandwidth proportional to its weight; but it empties the internal
      queue(s) of the drive. And this kills throughput with random I/O. So,
      if some processes have differentiated weights and do both sync and
      random I/O, the end result is a throughput collapse.
      
      This commit tries to counter this problem by injecting the service of
      other processes, in a controlled way, while the process in service
      happens to have no I/O. This injection is performed only if the medium
      is non rotational and performs internal queueing, and the process in
      service does random I/O (service injection might be beneficial for
      sequential I/O too, we'll work on that).
      
      As an example of the benefits of this commit, on a PLEXTOR PX-256M5S
      SSD, and with five processes having differentiated weights and doing
      sync random 4KB I/O, this commit makes the throughput with bfq grow by
      400%, from 25 to 100MB/s. This higher throughput is 10MB/s lower than
      that reached with none. As some less random I/O is added to the mix,
      the throughput becomes equal to or higher than that with none.
      
      This commit is a very first attempt to recover throughput without
      losing control, and certainly has many limitations. One is, e.g., that
      the processes whose service is injected are not chosen so as to
      distribute the extra bandwidth they receive in accordance to their
      weights. Thus there might be loss of weighted fairness in some
      cases. Anyway, this loss concerns extra service, which would not have
      been received at all without this commit. Other limitations and issues
      will probably show up with usage.
      Signed-off-by: NPaolo Valente <paolo.valente@linaro.org>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      6c9a7965
    • H
      arm64: fix for bad_mode() handler to always result in panic · 6d7757f0
      Hari Vyas 提交于
      [ Upstream commit e4ba15debcfd27f60d43da940a58108783bff2a6 ]
      
      The bad_mode() handler is called if we encounter an uunknown exception,
      with the expectation that the subsequent call to panic() will halt the
      system. Unfortunately, if the exception calling bad_mode() is taken from
      EL0, then the call to die() can end up killing the current user task and
      calling schedule() instead of falling through to panic().
      
      Remove the die() call altogether, since we really want to bring down the
      machine in this "impossible" case.
      Signed-off-by: NHari Vyas <hari.vyas@broadcom.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      6d7757f0
    • G
      cxgb4: Fix endianness issue in t4_fwcache() · 7f49a221
      Ganesh Goudar 提交于
      [ Upstream commit 0dc235afc59a226d951352b0adf4a89b532a9d13 ]
      
      Do not put host-endian 0 or 1 into big endian feild.
      Reported-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      7f49a221
    • S
      android: binder: no outgoing transaction when thread todo has transaction · b0cb2d81
      Sherry Yang 提交于
      [ Upstream commit 44b73962cb25f1c8170ea695c4564b05a75e1fd4 ]
      
      When a process dies, failed reply is sent to the sender of any transaction
      queued on a dead thread's todo list. The sender asserts that the
      received failed reply corresponds to the head of the transaction stack.
      This assert can fail if the dead thread is allowed to send outgoing
      transactions when there is already a transaction on its todo list,
      because this new transaction can end up on the transaction stack of the
      original sender. The following steps illustrate how this assertion can
      fail.
      
      1. Thread1 sends txn19 to Thread2
         (T1->transaction_stack=txn19, T2->todo+=txn19)
      2. Without processing todo list, Thread2 sends txn20 to Thread1
         (T1->todo+=txn20, T2->transaction_stack=txn20)
      3. T1 processes txn20 on its todo list
         (T1->transaction_stack=txn20->txn19, T1->todo=<empty>)
      4. T2 dies, T2->todo cleanup attempts to send failed reply for txn19, but
         T1->transaction_stack points to txn20 -- assertion failes
      
      Step 2. is the incorrect behavior. When there is a transaction on a
      thread's todo list, this thread should not be able to send any outgoing
      synchronous transactions. Only the head of the todo list needs to be
      checked because only threads that are waiting for proc work can directly
      receive work from another thread, and no work is allowed to be queued
      on such a thread without waking up the thread. This patch also enforces
      that a thread is not waiting for proc work when a work is directly
      enqueued to its todo list.
      Acked-by: NArve Hjønnevåg <arve@android.com>
      Signed-off-by: NSherry Yang <sherryy@android.com>
      Reviewed-by: NMartijn Coenen <maco@android.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      b0cb2d81
    • R
      ARM: dts: sun9i: Fix I2C bus warnings · 31e470f9
      Rob Herring 提交于
      [ Upstream commit 57a83c5222c1b5e7b3acc72c6e60fce00a38991a ]
      
      dtc has new checks for I2C buses. The sun9i-a80 dts file has a node named
      'i2c' which causes a false positive warning. As the node is a RSB bus,
      correct the node name to be 'rsb' to fix the warnings.
      
      arch/arm/boot/dts/sun9i-a80-cubieboard4.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/codec@e89:reg: I2C address must be less than 10-bits, got "0xe89"
      arch/arm/boot/dts/sun9i-a80-cubieboard4.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/pmic@745:reg: I2C address must be less than 10-bits, got "0x745"
      arch/arm/boot/dts/sun9i-a80-optimus.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/codec@e89:reg: I2C address must be less than 10-bits, got "0xe89"
      arch/arm/boot/dts/sun9i-a80-optimus.dtb: Warning (i2c_bus_reg): /soc/i2c@8003400/pmic@745:reg: I2C address must be less than 10-bits, got "0x745"
      
      Cc: Maxime Ripard <maxime.ripard@bootlin.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      31e470f9
    • L
      pinctrl: at91: don't use the same irqchip with multiple gpiochips · 0989aa65
      Ludovic Desroches 提交于
      [ Upstream commit 0c3dfa176912b5f87732545598200fb55e9c1978 ]
      
      Sharing the same irqchip with multiple gpiochips is not a good
      practice. For instance, when installing hooks, we change the state
      of the irqchip. The initial state of the irqchip for the second
      gpiochip to register is then disrupted.
      Signed-off-by: NLudovic Desroches <ludovic.desroches@microchip.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      0989aa65
    • R
      ARM: dts: sunxi: Fix I2C bus warnings · d1b9d321
      Rob Herring 提交于
      [ Upstream commit 0729b4af5753b65aa031f58c435da53dbbf56d19 ]
      
      dtc has new checks for I2C buses. Fix the warnings in unit-addresses.
      
      arch/arm/boot/dts/sun8i-a23-gt90h-v4.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
      arch/arm/boot/dts/sun8i-a23-inet86dz.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
      arch/arm/boot/dts/sun8i-a23-polaroid-mid2407pxe03.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
      arch/arm/boot/dts/sun8i-a23-polaroid-mid2809pxe04.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
      arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: I2C bus unit address format error, expected "40"
      arch/arm/boot/dts/sun8i-a33-inet-d978-rev2.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: missing or empty reg property
      arch/arm/boot/dts/sun8i-a33-ippo-q8h-v1.2.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: missing or empty reg property
      arch/arm/boot/dts/sun8i-a33-q8-tablet.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2ac00/touchscreen@0: missing or empty reg property
      arch/arm/boot/dts/sun5i-a13-utoo-p66.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: I2C bus unit address format error, expected "40"
      arch/arm/boot/dts/sun5i-a13-difrnce-dit4350.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
      arch/arm/boot/dts/sun5i-a13-empire-electronix-m712.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
      arch/arm/boot/dts/sun5i-a13-inet-98v-rev2.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
      arch/arm/boot/dts/sun5i-a13-q8-tablet.dtb: Warning (i2c_bus_reg): /soc@1c00000/i2c@1c2b000/touchscreen: missing or empty reg property
      
      Cc: Maxime Ripard <maxime.ripard@bootlin.com>
      Cc: Chen-Yu Tsai <wens@csie.org>
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      d1b9d321
    • D
      ARM: dts: socfpga: Fix I2C bus unit-address error · 8ac08053
      Dinh Nguyen 提交于
      [ Upstream commit cbbc488ed85061a765cf370c3e41f383c1e0add6 ]
      
      dtc has new checks for I2C buses. Fix the warnings in unit-addresses.
      
      arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dtb: Warning (i2c_bus_reg): /soc/i2c@ffc04000/adxl345@0: I2C bus unit address format error, expected "53"
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NDinh Nguyen <dinguyen@kernel.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      8ac08053
    • A
      powerpc/vdso: Correct call frame information · e70ccd8a
      Alan Modra 提交于
      [ Upstream commit 56d20861c027498b5a1112b4f9f05b56d906fdda ]
      
      Call Frame Information is used by gdb for back-traces and inserting
      breakpoints on function return for the "finish" command.  This failed
      when inside __kernel_clock_gettime.  More concerning than difficulty
      debugging is that CFI is also used by stack frame unwinding code to
      implement exceptions.  If you have an app that needs to handle
      asynchronous exceptions for some reason, and you are unlucky enough to
      get one inside the VDSO time functions, your app will crash.
      
      What's wrong:  There is control flow in __kernel_clock_gettime that
      reaches label 99 without saving lr in r12.  CFI info however is
      interpreted by the unwinder without reference to control flow: It's a
      simple matter of "Execute all the CFI opcodes up to the current
      address".  That means the unwinder thinks r12 contains the return
      address at label 99.  Disabuse it of that notion by resetting CFI for
      the return address at label 99.
      
      Note that the ".cfi_restore lr" could have gone anywhere from the
      "mtlr r12" a few instructions earlier to the instruction at label 99.
      I put the CFI as late as possible, because in general that's best
      practice (and if possible grouped with other CFI in order to reduce
      the number of CFI opcodes executed when unwinding).  Using r12 as the
      return address is perfectly fine after the "mtlr r12" since r12 on
      that code path still contains the return address.
      
      __get_datapage also has a CFI error.  That function temporarily saves
      lr in r0, and reflects that fact with ".cfi_register lr,r0".  A later
      use of r0 means the CFI at that point isn't correct, as r0 no longer
      contains the return address.  Fix that too.
      Signed-off-by: NAlan Modra <amodra@gmail.com>
      Tested-by: NReza Arbab <arbab@linux.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@ozlabs.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      e70ccd8a
    • R
      ARM: dts: aspeed: Fix I2C bus warnings · 11d78428
      Rob Herring 提交于
      [ Upstream commit 1426d40e11f730e0c0fd3700a7048082f87b0e6e ]
      
      dtc has new checks for I2C buses. The ASpeed dts files have a node named
      'i2c' which causes a false positive warning. As the node is a 'simple-bus',
      correct the node name to be 'bus' to fix the warnings.
      
      arch/arm/boot/dts/aspeed-bmc-opp-lanyang.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-opp-romulus.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-ast2500-evb.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-arm-centriq2400-rep.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-opp-zaius.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-portwell-neptune.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dtb: Warning (i2c_bus_bridge): /ahb/apb/i2c@1e78a000: incorrect #size-cells for I2C bus
      
      Cc: Joel Stanley <joel@jms.id.au>
      Cc: Andrew Jeffery <andrew@aj.id.au>
      Cc: linux-aspeed@lists.ozlabs.org
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NJoel Stanley <joel@jms.id.au>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      11d78428
    • R
      ARM: dts: bcm: Fix SPI bus warnings · 5a8130ed
      Rob Herring 提交于
      [ Upstream commit ab0b47d2eff413d60b0a1fc0c1f87f87f0d7f375 ]
      
      dtc has new checks for SPI buses. Fix the warnings in node names.
      
      arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dtb: Warning (spi_bus_bridge): /axi@18000000/qspi@27200: node name for SPI buses should be 'spi'
      arch/arm/boot/dts/bcm958525er.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
      arch/arm/boot/dts/bcm958525xmc.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
      arch/arm/boot/dts/bcm958622hr.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
      arch/arm/boot/dts/bcm958625hr.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
      arch/arm/boot/dts/bcm988312hr.dtb: Warning (spi_bus_bridge): /axi/qspi@27200: node name for SPI buses should be 'spi'
      
      Cc: Ray Jui <rjui@broadcom.com>
      Cc: Scott Branden <sbranden@broadcom.com>
      Cc: Jon Mason <jonmason@broadcom.com>
      Cc: bcm-kernel-feedback-list@broadcom.com
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      5a8130ed
    • R
      arm64: dts: broadcom: Fix I2C and SPI bus warnings · 08ffefc8
      Rob Herring 提交于
      [ Upstream commit 7cdbe45da1a189e744e6801aebb462ee47235580 ]
      
      dtc has new checks for I2C and SPI buses. Fix the warnings in node names
      and unit-addresses.
      
      arch/arm64/boot/dts/broadcom/stingray/bcm958742k.dtb: Warning (i2c_bus_reg): /hsls/i2c@e0000/pcf8574@20: I2C bus unit address format error, expected "27"
      arch/arm64/boot/dts/broadcom/stingray/bcm958742t.dtb: Warning (i2c_bus_reg): /hsls/i2c@e0000/pcf8574@20: I2C bus unit address format error, expected "27"
      arch/arm64/boot/dts/broadcom/stingray/bcm958742k.dtb: Warning (spi_bus_bridge): /hsls/ssp@180000: node name for SPI buses should be 'spi'
      arch/arm64/boot/dts/broadcom/stingray/bcm958742k.dtb: Warning (spi_bus_bridge): /hsls/ssp@190000: node name for SPI buses should be 'spi'
      
      Cc: Ray Jui <rjui@broadcom.com>
      Cc: Scott Branden <sbranden@broadcom.com>
      Cc: Jon Mason <jonmason@broadcom.com>
      Cc: bcm-kernel-feedback-list@broadcom.com
      Signed-off-by: NRob Herring <robh@kernel.org>
      Acked-by: NScott Branden <sbranden@broadcom.com>
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      08ffefc8
    • L
      drivers: qcom: rpmh-rsc: clear wait_for_compl after use · 174e8262
      Lina Iyer 提交于
      [ Upstream commit 09e97b6c8754c91470455e69ebd827b741f80af5 ]
      
      The wait_for_compl register ensures the request sequence is maintained
      when sending requests from the TCS. Clear the register after sending
      active request and during invalidate of the sleep and wake TCS.
      Reported-by: NRaju P.L.S.S.S.N <rplsssn@codeaurora.org>
      Signed-off-by: NLina Iyer <ilina@codeaurora.org>
      Signed-off-by: NAndy Gross <andy.gross@linaro.org>
      Signed-off-by: NSasha Levin <sashal@kernel.org>
      174e8262