Skip to content
  1. Dec 01, 2021
    • Pali Rohár's avatar
      PCI: aardvark: Fix PCIe Max Payload Size setting · 75faadcc
      Pali Rohár authored
      commit a4e17d65 upstream.
      
      Change PCIe Max Payload Size setting in PCIe Device Control register to 512
      bytes to align with PCIe Link Initialization sequence as defined in Marvell
      Armada 3700 Functional Specification. According to the specification,
      maximal Max Payload Size supported by this device is 512 bytes.
      
      Without this kernel prints suspicious line:
      
          pci 0000:01:00.0: Upstream bridge's Max Payload Size set to 256 (was 16384, max 512)
      
      With this change it changes to:
      
          pci 0000:01:00.0: Upstream bridge's Max Payload Size set to 256 (was 512, max 512)
      
      Link: https://lore.kernel.org/r/20211005180952.6812-3-kabel@kernel.org
      Fixes: 8c39d710
      
       ("PCI: aardvark: Add Aardvark PCI host controller driver")
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarMarek Behún <kabel@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      75faadcc
    • Pali Rohár's avatar
      PCI: aardvark: Configure PCIe resources from 'ranges' DT property · c697885a
      Pali Rohár authored
      commit 64f160e1 upstream.
      
      In commit 6df6ba97 ("PCI: aardvark: Remove PCIe outbound window
      configuration") was removed aardvark PCIe outbound window configuration and
      commit description said that was recommended solution by HW designers.
      
      But that commit completely removed support for configuring PCIe IO
      resources without removing PCIe IO 'ranges' from DTS files. After that
      commit PCIe IO space started to be treated as PCIe MEM space and accessing
      it just caused kernel crash.
      
      Moreover implementation of PCIe outbound windows prior that commit was
      incorrect. It completely ignored offset between CPU address and PCIe bus
      address and expected that in DTS is CPU address always same as PCIe bus
      address without doing any checks. Also it completely ignored size of every
      PCIe resource specified in 'ranges' DTS property and expected that every
      PCIe resource has size 128 MB (also for PCIe IO range). Again without any
      check. Apparently none of PCIe resource has in DTS specified size of 128
      MB. So it was completely broken and thanks to how aardvark mask works,
      configuration was completely ignored.
      
      This patch reverts back support for PCIe outbound window configuration but
      implementation is a new without issues mentioned above. PCIe outbound
      window is required when DTS specify in 'ranges' property non-zero offset
      between CPU and PCIe address space. To address recommendation by HW
      designers as specified in commit description of 6df6ba97, set default
      outbound parameters as PCIe MEM access without translation and therefore
      for this PCIe 'ranges' it is not needed to configure PCIe outbound window.
      For PCIe IO space is needed to configure aardvark PCIe outbound window.
      
      This patch fixes kernel crash when trying to access PCIe IO space.
      
      Link: https://lore.kernel.org/r/20210624215546.4015-2-pali@kernel.org
      
      
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Cc: stable@vger.kernel.org # 6df6ba97
      
       ("PCI: aardvark: Remove PCIe outbound window configuration")
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c697885a
    • Russell King's avatar
      PCI: pci-bridge-emul: Fix array overruns, improve safety · e3c51ac7
      Russell King authored
      commit f8ee579d upstream.
      
      We allow up to PCI_EXP_SLTSTA2 registers to be accessed, but the
      pcie_cap_regs_behavior[] array only covers up to PCI_EXP_RTSTA.  Expand
      this array to avoid walking off the end of it.
      
      Do the same for pci_regs_behavior for consistency[], and add a
      BUILD_BUG_ON() to also check the bridge->conf structure size.
      
      Fixes: 23a5fba4 ("PCI: Introduce PCI bridge emulated config space common logic")
      Link: https://lore.kernel.org/r/E1l6z9W-0006Re-MQ@rmk-PC.armlinux.org.uk
      
      
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e3c51ac7
    • Pali Rohár's avatar
      PCI: aardvark: Update comment about disabling link training · ea6eef03
      Pali Rohár authored
      commit 1d1cd163 upstream.
      
      According to PCI Express Base Specifications (rev 4.0, 6.6.1
      "Conventional reset"), after fundamental reset a 100ms delay is needed
      prior to enabling link training.
      
      Update comment in code to reflect this requirement.
      
      Link: https://lore.kernel.org/r/20201202184659.3795-1-pali@kernel.org
      
      
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ea6eef03
    • Pali Rohár's avatar
      PCI: aardvark: Move PCIe reset card code to advk_pcie_train_link() · fe8a8c3a
      Pali Rohár authored
      commit d0c6a347 upstream.
      
      Move code which belongs to link training (delays and resets) into
      advk_pcie_train_link() function, so everything related to link training,
      including timings is at one place.
      
      After experiments it can be observed that link training in aardvark
      hardware is very sensitive to timings and delays, so it is a good idea to
      have this code at the same place as link training calls.
      
      This patch does not change behavior of aardvark initialization.
      
      Link: https://lore.kernel.org/r/20200907111038.5811-6-pali@kernel.org
      
      
      Tested-by: default avatarMarek Behún <marek.behun@nic.cz>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fe8a8c3a
    • Pali Rohár's avatar
      PCI: aardvark: Fix compilation on s390 · 14311e77
      Pali Rohár authored
      commit b32c012e upstream.
      
      Include linux/gpio/consumer.h instead of linux/gpio.h, as is said in the
      latter file.
      
      This was reported by kernel test bot when compiling for s390.
      
        drivers/pci/controller/pci-aardvark.c:350:2: error: implicit declaration of function 'gpiod_set_value_cansleep' [-Werror,-Wimplicit-function-declaration]
        drivers/pci/controller/pci-aardvark.c:1074:21: error: implicit declaration of function 'devm_gpiod_get_from_of_node' [-Werror,-Wimplicit-function-declaration]
        drivers/pci/controller/pci-aardvark.c:1076:14: error: use of undeclared identifier 'GPIOD_OUT_LOW'
      
      Link: https://lore.kernel.org/r/202006211118.LxtENQfl%25lkp@intel.com
      Link: https://lore.kernel.org/r/20200907111038.5811-2-pali@kernel.org
      Fixes: 5169a985
      
       ("PCI: aardvark: Issue PERST via GPIO")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarMarek Behún <marek.behun@nic.cz>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      14311e77
    • Pali Rohár's avatar
      PCI: aardvark: Don't touch PCIe registers if no card connected · 93491c5d
      Pali Rohár authored
      commit 70e38025 upstream.
      
      When there is no PCIe card connected and advk_pcie_rd_conf() or
      advk_pcie_wr_conf() is called for PCI bus which doesn't belong to emulated
      root bridge, the aardvark driver throws the following error message:
      
        advk-pcie d0070000.pcie: config read/write timed out
      
      Obviously accessing PCIe registers of disconnected card is not possible.
      
      Extend check in advk_pcie_valid_device() function for validating
      availability of PCIe bus. If PCIe link is down, then the device is marked
      as Not Found and the driver does not try to access these registers.
      
      This is just an optimization to prevent accessing PCIe registers when card
      is disconnected. Trying to access PCIe registers of disconnected card does
      not cause any crash, kernel just needs to wait for a timeout. So if card
      disappear immediately after checking for PCIe link (before accessing PCIe
      registers), it does not cause any problems.
      
      Link: https://lore.kernel.org/r/20200702083036.12230-1-pali@kernel.org
      
      
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      93491c5d
    • Pali Rohár's avatar
      PCI: aardvark: Replace custom macros by standard linux/pci_regs.h macros · 8b0f7b8b
      Pali Rohár authored
      commit 96be36db upstream.
      
      PCI-E capability macros are already defined in linux/pci_regs.h.
      Remove their reimplementation in pcie-aardvark.
      
      Link: https://lore.kernel.org/r/20200430080625.26070-9-pali@kernel.org
      
      
      Tested-by: default avatarTomasz Maciej Nowak <tmn505@gmail.com>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8b0f7b8b
    • Pali Rohár's avatar
      PCI: aardvark: Issue PERST via GPIO · e090b2e2
      Pali Rohár authored
      commit 5169a985 upstream.
      
      Add support for issuing PERST via GPIO specified in 'reset-gpios'
      property (as described in PCI device tree bindings).
      
      Some buggy cards (e.g. Compex WLE900VX or WLE1216) are not detected
      after reboot when PERST is not issued during driver initialization.
      
      If bootloader already enabled link training then issuing PERST has no
      effect for some buggy cards (e.g. Compex WLE900VX) and these cards are
      not detected. We therefore clear the LINK_TRAINING_EN register before.
      
      It was observed that Compex WLE900VX card needs to be in PERST reset
      for at least 10ms if bootloader enabled link training.
      
      Tested on Turris MOX.
      
      Link: https://lore.kernel.org/r/20200430080625.26070-6-pali@kernel.org
      
      
      Tested-by: default avatarTomasz Maciej Nowak <tmn505@gmail.com>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e090b2e2
    • Marek Behún's avatar
      PCI: aardvark: Improve link training · 0ad291db
      Marek Behún authored
      commit 43fc679c upstream.
      
      Currently the aardvark driver trains link in PCIe gen2 mode. This may
      cause some buggy gen1 cards (such as Compex WLE900VX) to be unstable or
      even not detected. Moreover when ASPM code tries to retrain link second
      time, these cards may stop responding and link goes down. If gen1 is
      used this does not happen.
      
      Unconditionally forcing gen1 is not a good solution since it may have
      performance impact on gen2 cards.
      
      To overcome this, read 'max-link-speed' property (as defined in PCI
      device tree bindings) and use this as max gen mode. Then iteratively try
      link training at this mode or lower until successful. After successful
      link training choose final controller gen based on Negotiated Link Speed
      from Link Status register, which should match card speed.
      
      Link: https://lore.kernel.org/r/20200430080625.26070-5-pali@kernel.org
      
      
      Tested-by: default avatarTomasz Maciej Nowak <tmn505@gmail.com>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarMarek Behún <marek.behun@nic.cz>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0ad291db
    • Pali Rohár's avatar
      PCI: aardvark: Train link immediately after enabling training · 063a98c0
      Pali Rohár authored
      commit 69644945 upstream.
      
      Adding even 100ms (PCI_PM_D3COLD_WAIT) delay between enabling link
      training and starting link training causes detection issues with some
      buggy cards (such as Compex WLE900VX).
      
      Move the code which enables link training immediately before the one
      which starts link traning.
      
      This fixes detection issues of Compex WLE900VX card on Turris MOX after
      cold boot.
      
      Link: https://lore.kernel.org/r/20200430080625.26070-2-pali@kernel.org
      Fixes: f4c7d053
      
       ("PCI: aardvark: Wait for endpoint to be ready...")
      Tested-by: default avatarTomasz Maciej Nowak <tmn505@gmail.com>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      063a98c0
    • Grzegorz Jaszczyk's avatar
      PCI: aardvark: Fix big endian support · bbe213fd
      Grzegorz Jaszczyk authored
      commit e078723f
      
       upstream.
      
      Initialise every multiple-byte field of emulated PCI bridge config
      space with proper cpu_to_le* macro. This is required since the structure
      describing config space of emulated bridge assumes little-endian
      convention.
      
      Signed-off-by: default avatarGrzegorz Jaszczyk <jaz@semihalf.com>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bbe213fd
    • Remi Pommarel's avatar
      PCI: aardvark: Wait for endpoint to be ready before training link · 5551081d
      Remi Pommarel authored
      commit f4c7d053
      
       upstream.
      
      When configuring pcie reset pin from gpio (e.g. initially set by
      u-boot) to pcie function this pin goes low for a brief moment
      asserting the PERST# signal. Thus connected device enters fundamental
      reset process and link configuration can only begin after a minimal
      100ms delay (see [1]).
      
      Because the pin configuration comes from the "default" pinctrl it is
      implicitly configured before the probe callback is called:
      
      driver_probe_device()
        really_probe()
          ...
          pinctrl_bind_pins() /* Here pin goes from gpio to PCIE reset
                                 function and PERST# is asserted */
          ...
          drv->probe()
      
      [1] "PCI Express Base Specification", REV. 4.0
          PCI Express, February 19 2014, 6.6.1 Conventional Reset
      
      Signed-off-by: default avatarRemi Pommarel <repk@triplefau.lt>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@bootlin.com>
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5551081d
    • Marek Behún's avatar
      PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() · 65d96219
      Marek Behún authored
      commit 67cb2a4c upstream.
      
      Avoid code repetition in advk_pcie_rd_conf() by handling errors with
      goto jump, as is customary in kernel.
      
      Link: https://lore.kernel.org/r/20211005180952.6812-9-kabel@kernel.org
      Fixes: 43f5c77b
      
       ("PCI: aardvark: Fix reporting CRS value")
      Signed-off-by: default avatarMarek Behún <kabel@kernel.org>
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      65d96219
    • Dylan Hung's avatar
      mdio: aspeed: Fix "Link is Down" issue · 57c7d46e
      Dylan Hung authored
      commit 9dbe33cf upstream.
      
      The issue happened randomly in runtime.  The message "Link is Down" is
      popped but soon it recovered to "Link is Up".
      
      The "Link is Down" results from the incorrect read data for reading the
      PHY register via MDIO bus.  The correct sequence for reading the data
      shall be:
      1. fire the command
      2. wait for command done (this step was missing)
      3. wait for data idle
      4. read data from data register
      
      Cc: stable@vger.kernel.org
      Fixes: f160e994
      
       ("net: phy: Add mdio-aspeed")
      Reviewed-by: default avatarJoel Stanley <joel@jms.id.au>
      Signed-off-by: default avatarDylan Hung <dylan_hung@aspeedtech.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      Link: https://lore.kernel.org/r/20211125024432.15809-1-dylan_hung@aspeedtech.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      57c7d46e
    • Adrian Hunter's avatar
      mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB · e4662786
      Adrian Hunter authored
      commit 3d7c194b
      
       upstream.
      
      The block layer forces a minimum segment size of PAGE_SIZE, so a segment
      can be too big for the ADMA table, if PAGE_SIZE >= 64KiB. Fix by writing
      multiple descriptors, noting that the ADMA table is sized for 4KiB chunks
      anyway, so it will be big enough.
      
      Reported-and-tested-by: default avatarBough Chen <haibo.chen@nxp.com>
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20211115082345.802238-1-adrian.hunter@intel.com
      
      
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e4662786
    • Steven Rostedt (VMware)'s avatar
      tracing: Fix pid filtering when triggers are attached · e09e868c
      Steven Rostedt (VMware) authored
      commit a55f224f upstream.
      
      If a event is filtered by pid and a trigger that requires processing of
      the event to happen is a attached to the event, the discard portion does
      not take the pid filtering into account, and the event will then be
      recorded when it should not have been.
      
      Cc: stable@vger.kernel.org
      Fixes: 3fdaf80f
      
       ("tracing: Implement event pid filtering")
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e09e868c
    • Jiri Olsa's avatar
      tracing/uprobe: Fix uprobe_perf_open probes iteration · f5bbebfd
      Jiri Olsa authored
      commit 1880ed71 upstream.
      
      Add missing 'tu' variable initialization in the probes loop,
      otherwise the head 'tu' is used instead of added probes.
      
      Link: https://lkml.kernel.org/r/20211123142801.182530-1-jolsa@kernel.org
      
      Cc: stable@vger.kernel.org
      Fixes: 99c9a923
      
       ("tracing/uprobe: Fix double perf_event linking on multiprobe uprobe")
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f5bbebfd
    • Nicholas Piggin's avatar
      KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB · 5c895828
      Nicholas Piggin authored
      commit cf0b0e37 upstream.
      
      The POWER9 ERAT flush instruction is a SLBIA with IH=7, which is a
      reserved value on POWER7/8. On POWER8 this invalidates the SLB entries
      above index 0, similarly to SLBIA IH=0.
      
      If the SLB entries are invalidated, and then the guest is bypassed, the
      host SLB does not get re-loaded, so the bolted entries above 0 will be
      lost. This can result in kernel stack access causing a SLB fault.
      
      Kernel stack access causing a SLB fault was responsible for the infamous
      mega bug (search "Fix SLB reload bug"). Although since commit
      48e7b769 ("powerpc/64s/hash: Convert SLB miss handlers to C") that
      starts using the kernel stack in the SLB miss handler, it might only
      result in an infinite loop of SLB faults. In any case it's a bug.
      
      Fix this by only executing the instruction on >= POWER9 where IH=7 is
      defined not to invalidate the SLB. POWER7/8 don't require this ERAT
      flush.
      
      Fixes: 50087112
      
       ("KVM: PPC: Book3S HV: Invalidate ERAT when flushing guest TLB entries")
      Cc: stable@vger.kernel.org # v5.2+
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Reviewed-by: default avatarFabiano Rosas <farosas@linux.ibm.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20211119031627.577853-1-npiggin@gmail.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5c895828
    • Stefano Stabellini's avatar
      xen: detect uninitialized xenbus in xenbus_init · 4f1adc3f
      Stefano Stabellini authored
      commit 36e8f60f
      
       upstream.
      
      If the xenstore page hasn't been allocated properly, reading the value
      of the related hvm_param (HVM_PARAM_STORE_PFN) won't actually return
      error. Instead, it will succeed and return zero. Instead of attempting
      to xen_remap a bad guest physical address, detect this condition and
      return early.
      
      Note that although a guest physical address of zero for
      HVM_PARAM_STORE_PFN is theoretically possible, it is not a good choice
      and zero has never been validly used in that capacity.
      
      Also recognize all bits set as an invalid value.
      
      For 32-bit Linux, any pfn above ULONG_MAX would get truncated. Pfns
      above ULONG_MAX should never be passed by the Xen tools to HVM guests
      anyway, so check for this condition and return early.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@xilinx.com>
      Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Link: https://lore.kernel.org/r/20211123210748.1910236-1-sstabellini@kernel.org
      
      
      Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4f1adc3f
    • Stefano Stabellini's avatar
      xen: don't continue xenstore initialization in case of errors · 173fe1ae
      Stefano Stabellini authored
      commit 08f6c2b0
      
       upstream.
      
      In case of errors in xenbus_init (e.g. missing xen_store_gfn parameter),
      we goto out_error but we forget to reset xen_store_domain_type to
      XS_UNKNOWN. As a consequence xenbus_probe_initcall and other initcalls
      will still try to initialize xenstore resulting into a crash at boot.
      
      [    2.479830] Call trace:
      [    2.482314]  xb_init_comms+0x18/0x150
      [    2.486354]  xs_init+0x34/0x138
      [    2.489786]  xenbus_probe+0x4c/0x70
      [    2.498432]  xenbus_probe_initcall+0x2c/0x7c
      [    2.503944]  do_one_initcall+0x54/0x1b8
      [    2.507358]  kernel_init_freeable+0x1ac/0x210
      [    2.511617]  kernel_init+0x28/0x130
      [    2.516112]  ret_from_fork+0x10/0x20
      
      Cc: <Stable@vger.kernel.org>
      Cc: jbeulich@suse.com
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@xilinx.com>
      Link: https://lore.kernel.org/r/20211115222719.2558207-1-sstabellini@kernel.org
      
      
      Reviewed-by: default avatarJan Beulich <jbeulich@suse.com>
      Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      173fe1ae
    • Dan Carpenter's avatar
      staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() · 2e1ec01a
      Dan Carpenter authored
      commit b535917c upstream.
      
      The free_rtllib() function frees the "dev" pointer so there is use
      after free on the next line.  Re-arrange things to avoid that.
      
      Fixes: 66898177
      
       ("staging: rtl8192e: Fix unload/reload problem")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/r/20211117072016.GA5237@kili
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2e1ec01a
    • Noralf Trønnes's avatar
      staging/fbtft: Fix backlight · e72e981d
      Noralf Trønnes authored
      commit 7865dd24 upstream.
      
      Commit b4a1ed0c ("fbdev: make FB_BACKLIGHT a tristate") forgot to
      update fbtft breaking its backlight support when FB_BACKLIGHT is a module.
      
      Since FB_TFT selects FB_BACKLIGHT there's no need for this conditional
      so just remove it and we're good.
      
      Fixes: b4a1ed0c
      
       ("fbdev: make FB_BACKLIGHT a tristate")
      Cc: <stable@vger.kernel.org>
      Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: default avatarNoralf Trønnes <noralf@tronnes.org>
      Link: https://lore.kernel.org/r/20211105204358.2991-1-noralf@tronnes.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e72e981d
    • Jason Gerecke's avatar
      HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts · 9b406e39
      Jason Gerecke authored
      commit 7fb0413b upstream.
      
      The HID descriptor of many of Wacom's touch input devices include a
      "Confidence" usage that signals if a particular touch collection contains
      useful data. The driver does not look at this flag, however, which causes
      even invalid contacts to be reported to userspace. A lucky combination of
      kernel event filtering and device behavior (specifically: contact ID 0 ==
      invalid, contact ID >0 == valid; and order all data so that all valid
      contacts are reported before any invalid contacts) spare most devices from
      any visibly-bad behavior.
      
      The DTH-2452 is one example of an unlucky device that misbehaves. It uses
      ID 0 for both the first valid contact and all invalid contacts. Because
      we report both the valid and invalid contacts, the kernel reports that
      contact 0 first goes down (valid) and then goes up (invalid) in every
      report. This causes ~100 clicks per second simply by touching the screen.
      
      This patch inroduces new `confidence` flag in our `hid_data` structure.
      The value is initially set to `true` at the start of a report and can be
      set to `false` if an invalid touch usage is seen.
      
      Link: https://github.com/linuxwacom/input-wacom/issues/270
      Fixes: f8b6a747
      
       ("HID: wacom: generic: Support multiple tools per report")
      Signed-off-by: default avatarJason Gerecke <jason.gerecke@wacom.com>
      Tested-by: default avatarJoshua Dickens <joshua.dickens@wacom.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9b406e39
    • Helge Deller's avatar
      Revert "parisc: Fix backtrace to always include init funtion names" · c03ad972
      Helge Deller authored
      commit 98400ad7 upstream.
      
      This reverts commit 279917e2
      
      .
      
      With the CONFIG_HARDENED_USERCOPY option enabled, this patch triggers
      kernel bugs at runtime:
      
        usercopy: Kernel memory overwrite attempt detected to kernel text (offset 2084839, size 6)!
        kernel BUG at mm/usercopy.c:99!
       Backtrace:
        IAOQ[0]: usercopy_abort+0xc4/0xe8
        [<00000000406ed1c8>] __check_object_size+0x174/0x238
        [<00000000407086d4>] copy_strings.isra.0+0x3e8/0x708
        [<0000000040709a20>] do_execveat_common.isra.0+0x1bc/0x328
        [<000000004070b760>] compat_sys_execve+0x7c/0xb8
        [<0000000040303eb8>] syscall_exit+0x0/0x14
      
      The problem is, that we have an init section of at least 2MB size which
      starts at _stext and is freed after bootup.
      
      If then later some kernel data is (temporarily) stored in this free
      memory, check_kernel_text_object() will trigger a bug since the data
      appears to be inside the kernel text (>=_stext) area:
              if (overlaps(ptr, len, _stext, _etext))
                      usercopy_abort("kernel text");
      
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      Cc: stable@kernel.org # 5.4+
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c03ad972
    • Hans Verkuil's avatar
      media: cec: copy sequence field for the reply · 4a6f918a
      Hans Verkuil authored
      commit 13cbaa4c
      
       upstream.
      
      When the reply for a non-blocking transmit arrives, the sequence
      field for that reply was never filled in, so userspace would have no
      way of associating the reply to the original transmit.
      
      Copy the sequence field to ensure that this is now possible.
      
      Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
      Fixes: 0dbacebe
      
       ([media] cec: move the CEC framework out of staging and to media)
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4a6f918a
    • Takashi Iwai's avatar
      ALSA: ctxfi: Fix out-of-range access · 8d0b9ea1
      Takashi Iwai authored
      commit 76c47183 upstream.
      
      The master and next_conj of rcs_ops are used for iterating the
      resource list entries, and currently those are supposed to return the
      current value.  The problem is that next_conf may go over the last
      entry before the loop abort condition is evaluated, and it may return
      the "current" value that is beyond the array size.  It was caught
      recently as a GPF, for example.
      
      Those return values are, however, never actually evaluated, hence
      basically we don't have to consider the current value as the return at
      all.  By dropping those return values, the potential out-of-range
      access above is also fixed automatically.
      
      This patch changes the return type of master and next_conj callbacks
      to void and drop the superfluous code accordingly.
      
      BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214985
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20211118215729.26257-1-tiwai@suse.de
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8d0b9ea1
    • Todd Kjos's avatar
      binder: fix test regression due to sender_euid change · aaa83768
      Todd Kjos authored
      commit c21a80ca upstream.
      
      This is a partial revert of commit
      29bc22ac ("binder: use euid from cred instead of using task").
      Setting sender_euid using proc->cred caused some Android system test
      regressions that need further investigation. It is a partial
      reversion because subsequent patches rely on proc->cred.
      
      Fixes: 29bc22ac
      
       ("binder: use euid from cred instead of using task")
      Cc: stable@vger.kernel.org # 4.4+
      Acked-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
      Signed-off-by: default avatarTodd Kjos <tkjos@google.com>
      Change-Id: I9b1769a3510fed250bb21859ef8beebabe034c66
      Link: https://lore.kernel.org/r/20211112180720.2858135-1-tkjos@google.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aaa83768
    • Mathias Nyman's avatar
      usb: hub: Fix locking issues with address0_mutex · d797fde8
      Mathias Nyman authored
      commit 6cca13de upstream.
      
      Fix the circular lock dependency and unbalanced unlock of addess0_mutex
      introduced when fixing an address0_mutex enumeration retry race in commit
      ae6dc22d2d1 ("usb: hub: Fix usb enumeration issue due to address0 race")
      
      Make sure locking order between port_dev->status_lock and address0_mutex
      is correct, and that address0_mutex is not unlocked in hub_port_connect
      "done:" codepath which may be reached without locking address0_mutex
      
      Fixes: 6ae6dc22
      
       ("usb: hub: Fix usb enumeration issue due to address0 race")
      Cc: <stable@vger.kernel.org>
      Reported-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Tested-by: default avatarHans de Goede <hdegoede@redhat.com>
      Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Acked-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20211123101656.1113518-1-mathias.nyman@linux.intel.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d797fde8
    • Mathias Nyman's avatar
      usb: hub: Fix usb enumeration issue due to address0 race · 4b354aee
      Mathias Nyman authored
      commit 6ae6dc22 upstream.
      
      xHC hardware can only have one slot in default state with address 0
      waiting for a unique address at a time, otherwise "undefined behavior
      may occur" according to xhci spec 5.4.3.4
      
      The address0_mutex exists to prevent this across both xhci roothubs.
      
      If hub_port_init() fails, it may unlock the mutex and exit with a xhci
      slot in default state. If the other xhci roothub calls hub_port_init()
      at this point we end up with two slots in default state.
      
      Make sure the address0_mutex protects the slot default state across
      hub_port_init() retries, until slot is addressed or disabled.
      
      Note, one known minor case is not fixed by this patch.
      If device needs to be reset during resume, but fails all hub_port_init()
      retries in usb_reset_and_verify_device(), then it's possible the slot is
      still left in default state when address0_mutex is unlocked.
      
      Cc: <stable@vger.kernel.org>
      Fixes: 638139eb
      
       ("usb: hub: allow to process more usb hub events in parallel")
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20211115221630.871204-1-mathias.nyman@linux.intel.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4b354aee
    • Ondřej Jirman's avatar
      usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts · d00bf013
      Ondřej Jirman authored
      commit 36246883 upstream.
      
      The code that enables either BC_LVL or COMP_CHNG interrupt in tcpm_set_cc
      wrongly assumes that the interrupt is unmasked by writing 1 to the apropriate
      bit in the mask register. In fact, interrupts are enabled when the mask
      is 0, so the tcpm_set_cc enables interrupt for COMP_CHNG when it expects
      BC_LVL interrupt to be enabled.
      
      This causes inability of the driver to recognize cable unplug events
      in host mode (unplug is recognized only via a COMP_CHNG interrupt).
      
      In device mode this bug was masked by simultaneous triggering of the VBUS
      change interrupt, because of loss of VBUS when the port peer is providing
      power.
      
      Fixes: 48242e30
      
       ("usb: typec: fusb302: Revert "Resolve fixed power role contract setup"")
      Cc: stable <stable@vger.kernel.org>
      Cc: Hans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
      Acked-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Signed-off-by: default avatarOndrej Jirman <megous@megous.com>
      Link: https://lore.kernel.org/r/20211108102833.2793803-1-megous@megous.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d00bf013
    • Nikolay Aleksandrov's avatar
      net: nexthop: fix null pointer dereference when IPv6 is not enabled · 7b6f4485
      Nikolay Aleksandrov authored
      commit 1c743127 upstream.
      
      When we try to add an IPv6 nexthop and IPv6 is not enabled
      (!CONFIG_IPV6) we'll hit a NULL pointer dereference[1] in the error path
      of nh_create_ipv6() due to calling ipv6_stub->fib6_nh_release. The bug
      has been present since the beginning of IPv6 nexthop gateway support.
      Commit 1aefd3de ("ipv6: Add fib6_nh_init and release to stubs") tells
      us that only fib6_nh_init has a dummy stub because fib6_nh_release should
      not be called if fib6_nh_init returns an error, but the commit below added
      a call to ipv6_stub->fib6_nh_release in its error path. To fix it return
      the dummy stub's -EAFNOSUPPORT error directly without calling
      ipv6_stub->fib6_nh_release in nh_create_ipv6()'s error path.
      
      [1]
       Output is a bit truncated, but it clearly shows the error.
       BUG: kernel NULL pointer dereference, address: 000000000000000000
       #PF: supervisor instruction fetch in kernel modede
       #PF: error_code(0x0010) - not-present pagege
       PGD 0 P4D 0
       Oops: 0010 [#1] PREEMPT SMP NOPTI
       CPU: 4 PID: 638 Comm: ip Kdump: loaded Not tainted 5.16.0-rc1+ #446
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-4.fc34 04/01/2014
       RIP: 0010:0x0
       Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
       RSP: 0018:ffff888109f5b8f0 EFLAGS: 00010286^Ac
       RAX: 0000000000000000 RBX: ffff888109f5ba28 RCX: 0000000000000000
       RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8881008a2860
       RBP: ffff888109f5b9d8 R08: 0000000000000000 R09: 0000000000000000
       R10: ffff888109f5b978 R11: ffff888109f5b948 R12: 00000000ffffff9f
       R13: ffff8881008a2a80 R14: ffff8881008a2860 R15: ffff8881008a2840
       FS:  00007f98de70f100(0000) GS:ffff88822bf00000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: ffffffffffffffd6 CR3: 0000000100efc000 CR4: 00000000000006e0
       Call Trace:
        <TASK>
        nh_create_ipv6+0xed/0x10c
        rtm_new_nexthop+0x6d7/0x13f3
        ? check_preemption_disabled+0x3d/0xf2
        ? lock_is_held_type+0xbe/0xfd
        rtnetlink_rcv_msg+0x23f/0x26a
        ? check_preemption_disabled+0x3d/0xf2
        ? rtnl_calcit.isra.0+0x147/0x147
        netlink_rcv_skb+0x61/0xb2
        netlink_unicast+0x100/0x187
        netlink_sendmsg+0x37f/0x3a0
        ? netlink_unicast+0x187/0x187
        sock_sendmsg_nosec+0x67/0x9b
        ____sys_sendmsg+0x19d/0x1f9
        ? copy_msghdr_from_user+0x4c/0x5e
        ? rcu_read_lock_any_held+0x2a/0x78
        ___sys_sendmsg+0x6c/0x8c
        ? asm_sysvec_apic_timer_interrupt+0x12/0x20
        ? lockdep_hardirqs_on+0xd9/0x102
        ? sockfd_lookup_light+0x69/0x99
        __sys_sendmsg+0x50/0x6e
        do_syscall_64+0xcb/0xf2
        entry_SYSCALL_64_after_hwframe+0x44/0xae
       RIP: 0033:0x7f98dea28914
       Code: 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b5 0f 1f 80 00 00 00 00 48 8d 05 e9 5d 0c 00 8b 00 85 c0 75 13 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 41 54 41 89 d4 55 48 89 f5 53
       RSP: 002b:00007fff859f5e68 EFLAGS: 00000246 ORIG_RAX: 000000000000002e2e
       RAX: ffffffffffffffda RBX: 00000000619cb810 RCX: 00007f98dea28914
       RDX: 0000000000000000 RSI: 00007fff859f5ed0 RDI: 0000000000000003
       RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000008
       R10: fffffffffffffce6 R11: 0000000000000246 R12: 0000000000000001
       R13: 000055c0097ae520 R14: 000055c0097957fd R15: 00007fff859f63a0
       </TASK>
       Modules linked in: bridge stp llc bonding virtio_net
      
      Cc: stable@vger.kernel.org
      Fixes: 53010f99
      
       ("nexthop: Add support for IPv6 gateways")
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7b6f4485
    • Nathan Chancellor's avatar
      usb: dwc2: hcd_queue: Fix use of floating point literal · 9ad421ae
      Nathan Chancellor authored
      commit 310780e8 upstream.
      
      A new commit in LLVM causes an error on the use of 'long double' when
      '-mno-x87' is used, which the kernel does through an alias,
      '-mno-80387' (see the LLVM commit below for more details around why it
      does this).
      
       drivers/usb/dwc2/hcd_queue.c:1744:25: error: expression requires  'long double' type support, but target 'x86_64-unknown-linux-gnu' does not support it
                               delay = ktime_set(0, DWC2_RETRY_WAIT_DELAY);
                                                   ^
       drivers/usb/dwc2/hcd_queue.c:62:34: note: expanded from macro 'DWC2_RETRY_WAIT_DELAY'
       #define DWC2_RETRY_WAIT_DELAY (1 * 1E6L)
                                       ^
       1 error generated.
      
      This happens due to the use of a 'long double' literal. The 'E6' part of
      '1E6L' causes the literal to be a 'double' then the 'L' suffix promotes
      it to 'long double'.
      
      There is no visible reason for a floating point value in this driver, as
      the value is only used as a parameter to a function that expects an
      integer type. Use NSEC_PER_MSEC, which is the same integer value as
      '1E6L', to avoid changing functionality but fix the error.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/1497
      Link: https://github.com/llvm/llvm-project/commit/a8083d42b1c346e21623a1d36d1f0cadd7801d83
      Fixes: 6ed30a7d
      
       ("usb: dwc2: host: use hrtimer for NAK retries")
      Cc: stable <stable@vger.kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: default avatarJohn Keeping <john@metanate.com>
      Acked-by: default avatarMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
      Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
      Link: https://lore.kernel.org/r/20211105145802.2520658-1-nathan@kernel.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9ad421ae
    • Minas Harutyunyan's avatar
      usb: dwc2: gadget: Fix ISOC flow for elapsed frames · e44a934f
      Minas Harutyunyan authored
      commit 7ad4a0b1 upstream.
      
      Added updating of request frame number for elapsed frames,
      otherwise frame number will remain as previous use of request.
      This will allow function driver to correctly track frames in
      case of Missed ISOC occurs.
      
      Added setting request actual length to 0 for elapsed frames.
      In Slave mode when pushing data to RxFIFO by dwords, request
      actual length incrementing accordingly. But before whole packet
      will be pushed into RxFIFO and send to host can occurs Missed
      ISOC and data will not send to host. So, in this case request
      actual length should be reset to 0.
      
      Fixes: 91bb163e
      
       ("usb: dwc2: gadget: Fix ISOC flow for BDMA and Slave")
      Cc: stable <stable@vger.kernel.org>
      Reviewed-by: default avatarJohn Keeping <john@metanate.com>
      Signed-off-by: default avatarMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
      Link: https://lore.kernel.org/r/c356baade6e9716d312d43df08d53ae557cb8037.1636011277.git.Minas.Harutyunyan@synopsys.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e44a934f
    • Mingjie Zhang's avatar
      USB: serial: option: add Fibocom FM101-GL variants · c2e05c4e
      Mingjie Zhang authored
      commit 88459e3e
      
       upstream.
      
      Update the USB serial option driver support for the Fibocom
      FM101-GL Cat.6
      LTE modules as there are actually several different variants.
      - VID:PID 2cb7:01a2, FM101-GL are laptop M.2 cards (with
        MBIM interfaces for /Linux/Chrome OS)
      - VID:PID 2cb7:01a4, FM101-GL for laptop debug M.2 cards(with adb
        interface for /Linux/Chrome OS)
      
      0x01a2: mbim, tty, tty, diag, gnss
      0x01a4: mbim, diag, tty, adb, gnss, gnss
      
      Here are the outputs of lsusb -v and usb-devices:
      
      T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 86 Spd=5000 MxCh= 0
      D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=01a2 Rev= 5.04
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=Fibocom FM101-GL Module
      S:  SerialNumber=673326ce
      C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
      A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
      I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
      I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
      I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
      I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
      
      Bus 002 Device 084: ID 2cb7:01a2 Fibocom Wireless Inc. Fibocom FM101-GL Module
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               3.20
        bDeviceClass            0
        bDeviceSubClass         0
        bDeviceProtocol         0
        bMaxPacketSize0         9
        idVendor           0x2cb7
        idProduct          0x01a2
        bcdDevice            5.04
        iManufacturer           1 Fibocom Wireless Inc.
        iProduct                2 Fibocom FM101-GL Module
        iSerial                 3 673326ce
        bNumConfigurations      1
        Configuration Descriptor:
          bLength                 9
          bDescriptorType         2
          wTotalLength       0x015d
          bNumInterfaces          6
          bConfigurationValue     1
          iConfiguration          4 MBIM_DUN_DUN_DIAG_NMEA
          bmAttributes         0xa0
            (Bus Powered)
            Remote Wakeup
          MaxPower              896mA
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         0
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass      14
            bFunctionProtocol       0
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        0
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass     14
            bInterfaceProtocol      0
            iInterface              5 Fibocom FM101-GL LTE Modem
            CDC Header:
              bcdCDC               1.10
            CDC Union:
              bMasterInterface        0
              bSlaveInterface         1
            CDC MBIM:
              bcdMBIMVersion       1.00
              wMaxControlMessage   4096
              bNumberFilters       32
              bMaxFilterSize       128
              wMaxSegmentSize      2048
              bmNetworkCapabilities 0x20
                8-byte ntb input size
            CDC MBIM Extended:
              bcdMBIMExtendedVersion           1.00
              bMaxOutstandingCommandMessages     64
              wMTU                             1500
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x81  EP 1 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               9
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        1
            bAlternateSetting       0
            bNumEndpoints           0
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0
            bInterfaceProtocol      2
            iInterface              0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        1
            bAlternateSetting       1
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0
            bInterfaceProtocol      2
            iInterface              6 MBIM Data
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x8e  EP 14 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               6
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x0f  EP 15 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               2
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        2
            bAlternateSetting       0
            bNumEndpoints           3
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass    255 Vendor Specific Subclass
            bInterfaceProtocol     64
            iInterface              0
            ** UNRECOGNIZED:  05 24 00 10 01
            ** UNRECOGNIZED:  05 24 01 00 00
            ** UNRECOGNIZED:  04 24 02 02
            ** UNRECOGNIZED:  05 24 06 00 00
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x83  EP 3 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x000a  1x 10 bytes
              bInterval               9
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x82  EP 2 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x01  EP 1 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        3
            bAlternateSetting       0
            bNumEndpoints           3
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass    255 Vendor Specific Subclass
            bInterfaceProtocol     64
            iInterface              0
            ** UNRECOGNIZED:  05 24 00 10 01
            ** UNRECOGNIZED:  05 24 01 00 00
            ** UNRECOGNIZED:  04 24 02 02
            ** UNRECOGNIZED:  05 24 06 00 00
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x85  EP 5 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x000a  1x 10 bytes
              bInterval               9
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x84  EP 4 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x02  EP 2 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        4
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass    255 Vendor Specific Subclass
            bInterfaceProtocol     48
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x03  EP 3 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x86  EP 6 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        5
            bAlternateSetting       0
            bNumEndpoints           3
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass      0
            bInterfaceProtocol     64
            iInterface              0
            ** UNRECOGNIZED:  05 24 00 10 01
            ** UNRECOGNIZED:  05 24 01 00 00
            ** UNRECOGNIZED:  04 24 02 02
            ** UNRECOGNIZED:  05 24 06 00 00
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x88  EP 8 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x000a  1x 10 bytes
              bInterval               9
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x87  EP 7 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x04  EP 4 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
      
      T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 85 Spd=5000 MxCh= 0
      D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=01a4 Rev= 5.04
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=Fibocom FM101-GL Module
      S:  SerialNumber=673326ce
      C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=896mA
      A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
      I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
      I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
      I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
      I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
      I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
      
      Bus 002 Device 085: ID 2cb7:01a4 Fibocom Wireless Inc. Fibocom FM101-GL Module
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               3.20
        bDeviceClass            0
        bDeviceSubClass         0
        bDeviceProtocol         0
        bMaxPacketSize0         9
        idVendor           0x2cb7
        idProduct          0x01a4
        bcdDevice            5.04
        iManufacturer           1 Fibocom Wireless Inc.
        iProduct                2 Fibocom FM101-GL Module
        iSerial                 3 673326ce
        bNumConfigurations      1
        Configuration Descriptor:
          bLength                 9
          bDescriptorType         2
          wTotalLength       0x0180
          bNumInterfaces          7
          bConfigurationValue     1
          iConfiguration          4 MBIM_DIAG_DUN_ADB_GNSS_GNSS
          bmAttributes         0xa0
            (Bus Powered)
            Remote Wakeup
          MaxPower              896mA
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         0
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass      14
            bFunctionProtocol       0
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        0
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass     14
            bInterfaceProtocol      0
            iInterface              5 Fibocom FM101-GL LTE Modem
            CDC Header:
              bcdCDC               1.10
            CDC Union:
              bMasterInterface        0
              bSlaveInterface         1
            CDC MBIM:
              bcdMBIMVersion       1.00
              wMaxControlMessage   4096
              bNumberFilters       32
              bMaxFilterSize       128
              wMaxSegmentSize      2048
              bmNetworkCapabilities 0x20
                8-byte ntb input size
            CDC MBIM Extended:
              bcdMBIMExtendedVersion           1.00
              bMaxOutstandingCommandMessages     64
              wMTU                             1500
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x81  EP 1 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               9
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        1
            bAlternateSetting       0
            bNumEndpoints           0
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0
            bInterfaceProtocol      2
            iInterface              0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        1
            bAlternateSetting       1
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0
            bInterfaceProtocol      2
            iInterface              6 MBIM Data
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x8e  EP 14 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               6
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x0f  EP 15 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               2
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        2
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass    255 Vendor Specific Subclass
            bInterfaceProtocol     48
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x01  EP 1 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x82  EP 2 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        3
            bAlternateSetting       0
            bNumEndpoints           3
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass    255 Vendor Specific Subclass
            bInterfaceProtocol     64
            iInterface              0
            ** UNRECOGNIZED:  05 24 00 10 01
            ** UNRECOGNIZED:  05 24 01 00 00
            ** UNRECOGNIZED:  04 24 02 02
            ** UNRECOGNIZED:  05 24 06 00 00
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x84  EP 4 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x000a  1x 10 bytes
              bInterval               9
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x83  EP 3 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x02  EP 2 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        4
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass     66
            bInterfaceProtocol      1
            iInterface              8 ADB Interface
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x03  EP 3 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x85  EP 5 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        5
            bAlternateSetting       0
            bNumEndpoints           3
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass      0
            bInterfaceProtocol     64
            iInterface              0
            ** UNRECOGNIZED:  05 24 00 10 01
            ** UNRECOGNIZED:  05 24 01 00 00
            ** UNRECOGNIZED:  04 24 02 02
            ** UNRECOGNIZED:  05 24 06 00 00
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x87  EP 7 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x000a  1x 10 bytes
              bInterval               9
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x86  EP 6 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x04  EP 4 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        6
            bAlternateSetting       0
            bNumEndpoints           3
            bInterfaceClass       255 Vendor Specific Class
            bInterfaceSubClass      0
            bInterfaceProtocol     64
            iInterface              0
            ** UNRECOGNIZED:  05 24 00 10 01
            ** UNRECOGNIZED:  05 24 01 00 00
            ** UNRECOGNIZED:  04 24 02 02
            ** UNRECOGNIZED:  05 24 06 00 00
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x89  EP 9 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x000a  1x 10 bytes
              bInterval               9
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x88  EP 8 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x05  EP 5 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0400  1x 1024 bytes
              bInterval               0
              bMaxBurst               0
      
      Signed-off-by: default avatarMingjie Zhang <superzmj@fibocom.com>
      Link: https://lore.kernel.org/r/20211123133757.37475-1-superzmj@fibocom.com
      
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c2e05c4e
    • Daniele Palmas's avatar
      USB: serial: option: add Telit LE910S1 0x9200 composition · ee034eae
      Daniele Palmas authored
      commit e353f3e8
      
       upstream.
      
      Add the following Telit LE910S1 composition:
      
      0x9200: tty
      
      Signed-off-by: default avatarDaniele Palmas <dnlplm@gmail.com>
      Link: https://lore.kernel.org/r/20211119140319.10448-1-dnlplm@gmail.com
      
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ee034eae
  2. Nov 26, 2021