Skip to content
  1. May 02, 2024
    • Avraham Stern's avatar
      wifi: iwlwifi: mvm: remove old PASN station when adding a new one · 4dc8beb8
      Avraham Stern authored
      [ Upstream commit dbfff5bf ]
      
      If a PASN station is added, and an old PASN station already exists
      for the same mac address, remove the old station before adding the
      new one. Keeping the old station caueses old security context to
      be used in measurements.
      
      Fixes: 0739a7d7
      
       ("iwlwifi: mvm: initiator: add option for adding a PASN responder")
      Signed-off-by: default avatarAvraham Stern <avraham.stern@intel.com>
      Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
      Link: https://msgid.link/20240415114847.ef3544a416f2.I4e8c7c8ca22737f4f908ae5cd4fc0b920c703dd3@changeid
      
      
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      4dc8beb8
    • Alexey Brodkin's avatar
      ARC: [plat-hsdk]: Remove misplaced interrupt-cells property · b4a29e18
      Alexey Brodkin authored
      [ Upstream commit 61231eb8
      
       ]
      
      "gmac" node stands for just an ordinary Ethernet controller,
      which is by no means a provider of interrupts, i.e. it doesn't serve
      as an interrupt controller, thus "#interrupt-cells" property doesn't
      belong to it and so we remove it.
      
      Fixes:
      ------------>8------------
        DTC     arch/arc/boot/dts/hsdk.dtb
      arch/arc/boot/dts/hsdk.dts:207.23-235.5: Warning (interrupt_provider): /soc/ethernet@8000: '#interrupt-cells' found, but node is not an interrupt provider
      arch/arc/boot/dts/hsdk.dtb: Warning (interrupt_map): Failed prerequisite 'interrupt_provider'
      ------------>8------------
      
      Reported-by: default avatarVineet Gupta <vgupta@kernel.org>
      Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
      Signed-off-by: default avatarVineet Gupta <vgupta@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b4a29e18
    • Rafał Miłecki's avatar
      arm64: dts: mediatek: mt2712: fix validation errors · 4c7a2f71
      Rafał Miłecki authored
      [ Upstream commit 3baac729 ]
      
      1. Fixup infracfg clock controller binding
         It also acts as reset controller so #reset-cells is required.
      2. Use -pins suffix for pinctrl
      
      This fixes:
      arch/arm64/boot/dts/mediatek/mt2712-evb.dtb: syscon@10001000: '#reset-cells' is a required property
              from schema $id: http://devicetree.org/schemas/arm/mediatek/mediatek,infracfg.yaml#
      arch/arm64/boot/dts/mediatek/mt2712-evb.dtb: pinctrl@1000b000: 'eth_default', 'eth_sleep', 'usb0_iddig', 'usb1_iddig' do not match any of the regexes: 'pinctrl-[0-9]+', 'pins$'
              from schema $id: http://devicetree.org/schemas/pinctrl/mediatek,mt65xx-pinctrl.yaml#
      
      
      
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Link: https://lore.kernel.org/r/20240301074741.8362-1-zajec5@gmail.com
      [Angelo: Added Fixes tags]
      Fixes: 5d483970 ("arm64: dts: mt2712: Add clock controller device nodes")
      Fixes: 1724f4cc
      
       ("arm64: dts: Add USB3 related nodes for MT2712")
      Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      4c7a2f71
    • Rafał Miłecki's avatar
      arm64: dts: mediatek: mt7622: drop "reset-names" from thermal block · 755703e6
      Rafał Miłecki authored
      [ Upstream commit ecb5b003 ]
      
      Binding doesn't specify "reset-names" property and Linux driver also
      doesn't use it.
      
      Fix following validation error:
      arch/arm64/boot/dts/mediatek/mt7622-rfb1.dtb: thermal@1100b000: Unevaluated properties are not allowed ('reset-names' was unexpected)
              from schema $id: http://devicetree.org/schemas/thermal/mediatek,thermal.yaml#
      
      Fixes: ae457b76
      
       ("arm64: dts: mt7622: add SoC and peripheral related device nodes")
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Link: https://lore.kernel.org/r/20240317221050.18595-5-zajec5@gmail.com
      
      
      Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      755703e6
    • Rafał Miłecki's avatar
      arm64: dts: mediatek: mt7622: fix ethernet controller "compatible" · ed993f74
      Rafał Miłecki authored
      [ Upstream commit 208add29 ]
      
      Fix following validation error:
      arch/arm64/boot/dts/mediatek/mt7622-rfb1.dtb: ethernet@1b100000: compatible: ['mediatek,mt7622-eth', 'mediatek,mt2701-eth', 'syscon'] is too long
              from schema $id: http://devicetree.org/schemas/net/mediatek,net.yaml#
      (and other complains about wrong clocks).
      
      Fixes: 5f599b3a
      
       ("arm64: dts: mt7622: add ethernet device nodes")
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Link: https://lore.kernel.org/r/20240317221050.18595-4-zajec5@gmail.com
      
      
      Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ed993f74
    • Rafał Miłecki's avatar
      arm64: dts: mediatek: mt7622: fix IR nodename · 819da78e
      Rafał Miłecki authored
      [ Upstream commit 800dc93c ]
      
      Fix following validation error:
      arch/arm64/boot/dts/mediatek/mt7622-rfb1.dtb: cir@10009000: $nodename:0: 'cir@10009000' does not match '^ir(-receiver)?(@[a-f0-9]+)?$'
              from schema $id: http://devicetree.org/schemas/media/mediatek,mt7622-cir.yaml#
      
      Fixes: ae457b76
      
       ("arm64: dts: mt7622: add SoC and peripheral related device nodes")
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Link: https://lore.kernel.org/r/20240317221050.18595-3-zajec5@gmail.com
      
      
      Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      819da78e
    • Rafał Miłecki's avatar
      arm64: dts: mediatek: mt7622: fix clock controllers · 55d07efd
      Rafał Miłecki authored
      [ Upstream commit 3ba5a615 ]
      
      1. Drop unneeded "syscon"s (bindings were updated recently)
      2. Use "clock-controller" in nodenames
      3. Add missing "#clock-cells"
      
      Fixes: d7167881 ("arm64: dts: mt7622: add clock controller device nodes")
      Fixes: e9b65ecb
      
       ("arm64: dts: mediatek: mt7622: introduce nodes for Wireless Ethernet Dispatch")
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Link: https://lore.kernel.org/r/20240317221050.18595-2-zajec5@gmail.com
      
      
      Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      55d07efd
    • Felix Fietkau's avatar
      arm64: dts: mediatek: mt7622: introduce nodes for Wireless Ethernet Dispatch · 136c8e01
      Felix Fietkau authored
      [ Upstream commit e9b65ecb
      
       ]
      
      Introduce wed0 and wed1 nodes in order to enable offloading forwarding
      between ethernet and wireless devices on the mt7622 chipset.
      
      Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Stable-dep-of: 3ba5a615
      
       ("arm64: dts: mediatek: mt7622: fix clock controllers")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      136c8e01
    • Felix Fietkau's avatar
      arm64: dts: mediatek: mt7622: add support for coherent DMA · 57ff0904
      Felix Fietkau authored
      [ Upstream commit 3abd0630
      
       ]
      
      It improves performance by eliminating the need for a cache flush on rx and tx
      
      Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Stable-dep-of: 3ba5a615
      
       ("arm64: dts: mediatek: mt7622: fix clock controllers")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      57ff0904
    • Dragan Simic's avatar
      arm64: dts: rockchip: Remove unsupported node from the Pinebook Pro dts · f9930871
      Dragan Simic authored
      [ Upstream commit 43853e84 ]
      
      Remove a redundant node from the Pine64 Pinebook Pro dts, which is intended
      to provide a value for the delay in PCI Express enumeration, but that isn't
      supported without additional out-of-tree kernel patches.
      
      There were already efforts to upstream those kernel patches, because they
      reportedly make some PCI Express cards (such as LSI SAS HBAs) usable in
      Pine64 RockPro64 (which is also based on the RK3399);  otherwise, those PCI
      Express cards fail to enumerate.  However, providing the required background
      and explanations proved to be a tough nut to crack, which is the reason why
      those patches remain outside of the kernel mainline for now.
      
      If those out-of-tree patches eventually become upstreamed, the resulting
      device-tree changes will almost surely belong to the RK3399 SoC dtsi.  Also,
      the above-mentioned unusable-without-out-of-tree-patches PCI Express devices
      are in all fairness not usable in a Pinebook Pro without some extensive
      hardware modifications, which is another reason to delete this redundant
      node.  When it comes to the Pinebook Pro, only M.2 NVMe SSDs can be installed
      out of the box (using an additional passive adapter PCB sold separately by
      Pine64), which reportedly works fine with no additional patches.
      
      Fixes: 5a65505a
      
       ("arm64: dts: rockchip: Add initial support for Pinebook Pro")
      Signed-off-by: default avatarDragan Simic <dsimic@manjaro.org>
      Link: https://lore.kernel.org/r/0f82c3f97cb798d012270d13b34d8d15305ef293.1711923520.git.dsimic@manjaro.org
      
      
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f9930871
    • Quentin Schulz's avatar
      arm64: dts: rockchip: enable internal pull-up on PCIE_WAKE# for RK3399 Puma · 759796d7
      Quentin Schulz authored
      [ Upstream commit 945a7c85 ]
      
      The PCIE_WAKE# has a diode used as a level-shifter, and is used as an
      input pin. While the SoC default is to enable the pull-up, the core
      rk3399 pinconf for this pin opted for pull-none. So as to not disturb
      the behaviour of other boards which may rely on pull-none instead of
      pull-up, set the needed pull-up only for RK3399 Puma.
      
      Fixes: 60fd9f72
      
       ("arm64: dts: rockchip: add Haikou baseboard with RK3399-Q7 SoM")
      Signed-off-by: default avatarQuentin Schulz <quentin.schulz@theobroma-systems.com>
      Link: https://lore.kernel.org/r/20240308-puma-diode-pu-v2-2-309f83da110a@theobroma-systems.com
      
      
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      759796d7
    • Iskander Amara's avatar
      arm64: dts: rockchip: fix alphabetical ordering RK3399 puma · 38db853f
      Iskander Amara authored
      [ Upstream commit f0abb4b2
      
       ]
      
      Nodes overridden by their reference should be ordered alphabetically to
      make it easier to read the DTS. pinctrl node is defined in the wrong
      location so let's reorder it.
      
      Signed-off-by: default avatarIskander Amara <iskander.amara@theobroma-systems.com>
      Reviewed-by: default avatarQuentin Schulz <quentin.schulz@theobroma-systems.com>
      Link: https://lore.kernel.org/r/20240308085243.69903-2-iskander.amara@theobroma-systems.com
      
      
      Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Stable-dep-of: 945a7c85
      
       ("arm64: dts: rockchip: enable internal pull-up on PCIE_WAKE# for RK3399 Puma")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      38db853f
    • Jeongjun Park's avatar
      nilfs2: fix OOB in nilfs_set_de_type · 7061c7ef
      Jeongjun Park authored
      commit c4a7dc95 upstream.
      
      The size of the nilfs_type_by_mode array in the fs/nilfs2/dir.c file is
      defined as "S_IFMT >> S_SHIFT", but the nilfs_set_de_type() function,
      which uses this array, specifies the index to read from the array in the
      same way as "(mode & S_IFMT) >> S_SHIFT".
      
      static void nilfs_set_de_type(struct nilfs_dir_entry *de, struct inode
       *inode)
      {
      	umode_t mode = inode->i_mode;
      
      	de->file_type = nilfs_type_by_mode[(mode & S_IFMT)>>S_SHIFT]; // oob
      }
      
      However, when the index is determined this way, an out-of-bounds (OOB)
      error occurs by referring to an index that is 1 larger than the array size
      when the condition "mode & S_IFMT == S_IFMT" is satisfied.  Therefore, a
      patch to resize the nilfs_type_by_mode array should be applied to prevent
      OOB errors.
      
      Link: https://lkml.kernel.org/r/20240415182048.7144-1-konishi.ryusuke@gmail.com
      
      
      Reported-by: default avatar <syzbot+2e22057de05b9f3b30d8@syzkaller.appspotmail.com>
      Closes: https://syzkaller.appspot.com/bug?extid=2e22057de05b9f3b30d8
      Fixes: 2ba466d7
      
       ("nilfs2: directory entry operations")
      Signed-off-by: default avatarJeongjun Park <aha310510@gmail.com>
      Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Tested-by: default avatarRyusuke Konishi <konishi.ryusuke@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7061c7ef
    • Dave Airlie's avatar
      nouveau: fix instmem race condition around ptr stores · 13d76b2f
      Dave Airlie authored
      commit fff1386c upstream.
      
      Running a lot of VK CTS in parallel against nouveau, once every
      few hours you might see something like this crash.
      
      BUG: kernel NULL pointer dereference, address: 0000000000000008
      PGD 8000000114e6e067 P4D 8000000114e6e067 PUD 109046067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP PTI
      CPU: 7 PID: 53891 Comm: deqp-vk Not tainted 6.8.0-rc6+ #27
      Hardware name: Gigabyte Technology Co., Ltd. Z390 I AORUS PRO WIFI/Z390 I AORUS PRO WIFI-CF, BIOS F8 11/05/2021
      RIP: 0010:gp100_vmm_pgt_mem+0xe3/0x180 [nouveau]
      Code: c7 48 01 c8 49 89 45 58 85 d2 0f 84 95 00 00 00 41 0f b7 46 12 49 8b 7e 08 89 da 42 8d 2c f8 48 8b 47 08 41 83 c7 01 48 89 ee <48> 8b 40 08 ff d0 0f 1f 00 49 8b 7e 08 48 89 d9 48 8d 75 04 48 c1
      RSP: 0000:ffffac20c5857838 EFLAGS: 00010202
      RAX: 0000000000000000 RBX: 00000000004d8001 RCX: 0000000000000001
      RDX: 00000000004d8001 RSI: 00000000000006d8 RDI: ffffa07afe332180
      RBP: 00000000000006d8 R08: ffffac20c5857ad0 R09: 0000000000ffff10
      R10: 0000000000000001 R11: ffffa07af27e2de0 R12: 000000000000001c
      R13: ffffac20c5857ad0 R14: ffffa07a96fe9040 R15: 000000000000001c
      FS:  00007fe395eed7c0(0000) GS:ffffa07e2c980000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 000000011febe001 CR4: 00000000003706f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
      
      ...
      
       ? gp100_vmm_pgt_mem+0xe3/0x180 [nouveau]
       ? gp100_vmm_pgt_mem+0x37/0x180 [nouveau]
       nvkm_vmm_iter+0x351/0xa20 [nouveau]
       ? __pfx_nvkm_vmm_ref_ptes+0x10/0x10 [nouveau]
       ? __pfx_gp100_vmm_pgt_mem+0x10/0x10 [nouveau]
       ? __pfx_gp100_vmm_pgt_mem+0x10/0x10 [nouveau]
       ? __lock_acquire+0x3ed/0x2170
       ? __pfx_gp100_vmm_pgt_mem+0x10/0x10 [nouveau]
       nvkm_vmm_ptes_get_map+0xc2/0x100 [nouveau]
       ? __pfx_nvkm_vmm_ref_ptes+0x10/0x10 [nouveau]
       ? __pfx_gp100_vmm_pgt_mem+0x10/0x10 [nouveau]
       nvkm_vmm_map_locked+0x224/0x3a0 [nouveau]
      
      Adding any sort of useful debug usually makes it go away, so I hand
      wrote the function in a line, and debugged the asm.
      
      Every so often pt->memory->ptrs is NULL. This ptrs ptr is set in
      the nv50_instobj_acquire called from nvkm_kmap.
      
      If Thread A and Thread B both get to nv50_instobj_acquire around
      the same time, and Thread A hits the refcount_set line, and in
      lockstep thread B succeeds at refcount_inc_not_zero, there is a
      chance the ptrs value won't have been stored since refcount_set
      is unordered. Force a memory barrier here, I picked smp_mb, since
      we want it on all CPUs and it's write followed by a read.
      
      v2: use paired smp_rmb/smp_wmb.
      
      Cc: <stable@vger.kernel.org>
      Fixes: be55287a
      
       ("drm/nouveau/imem/nv50: embed nvkm_instobj directly into nv04_instobj")
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Signed-off-by: default avatarDanilo Krummrich <dakr@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240411011510.2546857-1-airlied@gmail.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      13d76b2f
    • xinhui pan's avatar
      drm/amdgpu: validate the parameters of bo mapping operations more clearly · 1fd7db5c
      xinhui pan authored
      commit 6fef2d4c upstream.
      
      Verify the parameters of
      amdgpu_vm_bo_(map/replace_map/clearing_mappings) in one common place.
      
      Fixes: dc54d3d1
      
       ("drm/amdgpu: implement AMDGPU_VA_OP_CLEAR v2")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarVlad Stolyarov <hexed@google.com>
      Suggested-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarxinhui pan <xinhui.pan@amd.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1fd7db5c
    • Yuntao Wang's avatar
      init/main.c: Fix potential static_command_line memory overflow · 2ef607ea
      Yuntao Wang authored
      commit 46dad3c1 upstream.
      
      We allocate memory of size 'xlen + strlen(boot_command_line) + 1' for
      static_command_line, but the strings copied into static_command_line are
      extra_command_line and command_line, rather than extra_command_line and
      boot_command_line.
      
      When strlen(command_line) > strlen(boot_command_line), static_command_line
      will overflow.
      
      This patch just recovers strlen(command_line) which was miss-consolidated
      with strlen(boot_command_line) in the commit f5c7310a ("init/main: add
      checks for the return value of memblock_alloc*()")
      
      Link: https://lore.kernel.org/all/20240412081733.35925-2-ytcoode@gmail.com/
      
      Fixes: f5c7310a
      
       ("init/main: add checks for the return value of memblock_alloc*()")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarYuntao Wang <ytcoode@gmail.com>
      Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2ef607ea
    • Alan Stern's avatar
      fs: sysfs: Fix reference leak in sysfs_break_active_protection() · 84bd4c2a
      Alan Stern authored
      commit a90bca22
      
       upstream.
      
      The sysfs_break_active_protection() routine has an obvious reference
      leak in its error path.  If the call to kernfs_find_and_get() fails then
      kn will be NULL, so the companion sysfs_unbreak_active_protection()
      routine won't get called (and would only cause an access violation by
      trying to dereference kn->parent if it was called).  As a result, the
      reference to kobj acquired at the start of the function will never be
      released.
      
      Fix the leak by adding an explicit kobject_put() call when kn is NULL.
      
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Fixes: 2afc9166
      
       ("scsi: sysfs: Introduce sysfs_{un,}break_active_protection()")
      Cc: Bart Van Assche <bvanassche@acm.org>
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Link: https://lore.kernel.org/r/8a4d3f0f-c5e3-4b70-a188-0ca433f9e6f9@rowland.harvard.edu
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      84bd4c2a
    • Samuel Thibault's avatar
      speakup: Avoid crash on very long word · 6401038a
      Samuel Thibault authored
      commit c8d2f34e
      
       upstream.
      
      In case a console is set up really large and contains a really long word
      (> 256 characters), we have to stop before the length of the word buffer.
      
      Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
      Fixes: c6e3fd22 ("Staging: add speakup to the staging directory")
      Cc: stable@vger.kernel.org
      Link: https://lore.kernel.org/r/20240323164843.1426997-1-samuel.thibault@ens-lyon.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6401038a
    • Alexander Usyskin's avatar
      mei: me: disable RPL-S on SPS and IGN firmwares · bf786df6
      Alexander Usyskin authored
      commit 0dc04112 upstream.
      
      Extend the quirk to disable MEI interface on Intel PCH Ignition (IGN)
      and SPS firmwares for RPL-S devices. These firmwares do not support
      the MEI protocol.
      
      Fixes: 3ed8c7d3
      
       ("mei: me: add raptor lake point S DID")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
      Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
      Link: https://lore.kernel.org/r/20240312051958.118478-1-tomas.winkler@intel.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bf786df6
    • Kai-Heng Feng's avatar
      usb: Disable USB3 LPM at shutdown · 5160b4bd
      Kai-Heng Feng authored
      commit d920a2ed
      
       upstream.
      
      SanDisks USB3 storage may disapper after system reboot:
      
      usb usb2-port3: link state change
      xhci_hcd 0000:00:14.0: clear port3 link state change, portsc: 0x2c0
      usb usb2-port3: do warm reset, port only
      xhci_hcd 0000:00:14.0: xhci_hub_status_data: stopping usb2 port polling
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x2b0, return 0x2b0
      usb usb2-port3: not warm reset yet, waiting 50ms
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x2f0, return 0x2f0
      usb usb2-port3: not warm reset yet, waiting 200ms
      ...
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x6802c0, return 0x7002c0
      usb usb2-port3: not warm reset yet, waiting 200ms
      xhci_hcd 0000:00:14.0: clear port3 reset change, portsc: 0x4802c0
      xhci_hcd 0000:00:14.0: clear port3 warm(BH) reset change, portsc: 0x4002c0
      xhci_hcd 0000:00:14.0: clear port3 link state change, portsc: 0x2c0
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x2c0, return 0x2c0
      usb usb2-port3: not enabled, trying warm reset again...
      
      This is due to the USB device still cause port change event after xHCI is
      shuted down:
      
      xhci_hcd 0000:38:00.0: // Setting command ring address to 0xffffe001
      xhci_hcd 0000:38:00.0: xhci_resume: starting usb3 port polling.
      xhci_hcd 0000:38:00.0: xhci_hub_status_data: stopping usb4 port polling
      xhci_hcd 0000:38:00.0: xhci_hub_status_data: stopping usb3 port polling
      xhci_hcd 0000:38:00.0: hcd_pci_runtime_resume: 0
      xhci_hcd 0000:38:00.0: xhci_shutdown: stopping usb3 port polling.
      xhci_hcd 0000:38:00.0: // Halt the HC
      xhci_hcd 0000:38:00.0: xhci_shutdown completed - status = 1
      xhci_hcd 0000:00:14.0: xhci_shutdown: stopping usb1 port polling.
      xhci_hcd 0000:00:14.0: // Halt the HC
      xhci_hcd 0000:00:14.0: xhci_shutdown completed - status = 1
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x1203, return 0x203
      xhci_hcd 0000:00:14.0: set port reset, actual port 2-3 status  = 0x1311
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x201203, return 0x100203
      xhci_hcd 0000:00:14.0: clear port3 reset change, portsc: 0x1203
      xhci_hcd 0000:00:14.0: clear port3 warm(BH) reset change, portsc: 0x1203
      xhci_hcd 0000:00:14.0: clear port3 link state change, portsc: 0x1203
      xhci_hcd 0000:00:14.0: clear port3 connect change, portsc: 0x1203
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x1203, return 0x203
      usb 2-3: device not accepting address 2, error -108
      xhci_hcd 0000:00:14.0: xHCI dying or halted, can't queue_command
      xhci_hcd 0000:00:14.0: Set port 2-3 link state, portsc: 0x1203, write 0x11261
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x1263, return 0x263
      xhci_hcd 0000:00:14.0: set port reset, actual port 2-3 status  = 0x1271
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x12b1, return 0x2b1
      usb usb2-port3: not reset yet, waiting 60ms
      ACPI: PM: Preparing to enter system sleep state S5
      xhci_hcd 0000:00:14.0: Get port status 2-3 read: 0x12f1, return 0x2f1
      usb usb2-port3: not reset yet, waiting 200ms
      reboot: Restarting system
      
      The port change event is caused by LPM transition, so disabling LPM at shutdown
      to make sure the device is in U0 for warmboot.
      
      Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
      Cc: stable <stable@kernel.org>
      Link: https://lore.kernel.org/r/20240305065140.66801-1-kai.heng.feng@canonical.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5160b4bd
    • Minas Harutyunyan's avatar
    • Greg Kroah-Hartman's avatar
      Revert "usb: cdc-wdm: close race between read and workqueue" · ab92e11b
      Greg Kroah-Hartman authored
      commit 1607830d upstream.
      
      This reverts commit 339f8361.
      
      It has been found to cause problems in a number of Chromebook devices,
      so revert the change until it can be brought back in a safe way.
      
      Link: https://lore.kernel.org/r/385a3519-b45d-48c5-a6fd-a3fdb6bec92f@chromium.org
      
      
      Reported-by: default avatar: Aleksander Morgado <aleksandermj@chromium.org>
      Fixes: 339f8361
      
       ("usb: cdc-wdm: close race between read and workqueue")
      Cc: stable <stable@kernel.org>
      Cc: Oliver Neukum <oneukum@suse.com>
      Cc: Bjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ab92e11b
    • Daniele Palmas's avatar
      USB: serial: option: add Telit FN920C04 rmnet compositions · ba11df45
      Daniele Palmas authored
      commit 582ee2f9
      
       upstream.
      
      Add the following Telit FN920C04 compositions:
      
      0x10a0: rmnet + tty (AT/NMEA) + tty (AT) + tty (diag)
      T:  Bus=03 Lev=01 Prnt=03 Port=06 Cnt=01 Dev#=  5 Spd=480  MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1bc7 ProdID=10a0 Rev=05.15
      S:  Manufacturer=Telit Cinterion
      S:  Product=FN920
      S:  SerialNumber=92c4c4d8
      C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      0x10a4: rmnet + tty (AT) + tty (AT) + tty (diag)
      T:  Bus=03 Lev=01 Prnt=03 Port=06 Cnt=01 Dev#=  8 Spd=480  MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1bc7 ProdID=10a4 Rev=05.15
      S:  Manufacturer=Telit Cinterion
      S:  Product=FN920
      S:  SerialNumber=92c4c4d8
      C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      0x10a9: rmnet + tty (AT) + tty (diag) + DPL (data packet logging) + adb
      T:  Bus=03 Lev=01 Prnt=03 Port=06 Cnt=01 Dev#=  9 Spd=480  MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1bc7 ProdID=10a9 Rev=05.15
      S:  Manufacturer=Telit Cinterion
      S:  Product=FN920
      S:  SerialNumber=92c4c4d8
      C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarDaniele Palmas <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>
      ba11df45
    • Vanillan Wang's avatar
      USB: serial: option: add Rolling RW101-GL and RW135-GL support · 33b29a50
      Vanillan Wang authored
      commit 311f97a4
      
       upstream.
      
      Update the USB serial option driver support for the Rolling
      LTE modules.
      
      - VID:PID 33f8:01a2, RW101-GL for laptop debug M.2 cards(with MBIM
      interface for /Linux/Chrome OS)
      0x01a2: mbim, diag, at, pipe
      - VID:PID 33f8:01a3, RW101-GL for laptop debug M.2 cards(with MBIM
      interface for /Linux/Chrome OS)
      0x01a3: mbim, pipe
      - VID:PID 33f8:01a4, RW101-GL for laptop debug M.2 cards(with MBIM
      interface for /Linux/Chrome OS)
      0x01a4: mbim, diag, at, pipe
      - VID:PID 33f8:0104, RW101-GL for laptop debug M.2 cards(with RMNET
      interface for /Linux/Chrome OS)
      0x0104: RMNET, diag, at, pipe
      - VID:PID 33f8:0115, RW135-GL for laptop debug M.2 cards(with MBIM
      interface for /Linux/Chrome OS)
      0x0115: MBIM, diag, at, pipe
      
      Here are the outputs of usb-devices:
      T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  5 Spd=480 MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=33f8 ProdID=01a2 Rev=05.15
      S:  Manufacturer=Rolling Wireless S.a.r.l.
      S:  Product=Rolling Module
      S:  SerialNumber=12345678
      C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  8 Spd=480 MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=33f8 ProdID=01a3 Rev=05.15
      S:  Manufacturer=Rolling Wireless S.a.r.l.
      S:  Product=Rolling Module
      S:  SerialNumber=12345678
      C:  #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 17 Spd=480 MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=33f8 ProdID=01a4 Rev=05.15
      S:  Manufacturer=Rolling Wireless S.a.r.l.
      S:  Product=Rolling Module
      S:  SerialNumber=12345678
      C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
      D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=33f8 ProdID=0104 Rev=05.04
      S:  Manufacturer=Rolling Wireless S.a.r.l.
      S:  Product=Rolling Module
      S:  SerialNumber=ba2eb033
      C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
      I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
      E:  Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=88(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      E:  Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
      E:  Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=89(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      
      T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 16 Spd=480 MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=33f8 ProdID=0115 Rev=05.15
      S:  Manufacturer=Rolling Wireless S.a.r.l.
      S:  Product=Rolling Module
      S:  SerialNumber=12345678
      C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarVanillan Wang <vanillanwang@163.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>
      33b29a50
    • Jerry Meng's avatar
      USB: serial: option: support Quectel EM060K sub-models · 6e7cdfd6
      Jerry Meng authored
      commit c840244a
      
       upstream.
      
      EM060K_129, EM060K_12a, EM060K_12b and EM0060K_12c are EM060K's sub-models,
      having the same name "Quectel EM060K-GL" and the same interface layout.
      
      MBIM + GNSS + DIAG + NMEA + AT + QDSS + DPL
      
      T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  8 Spd=480  MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=2c7c ProdID=0129 Rev= 5.04
      S:  Manufacturer=Quectel
      S:  Product=Quectel EM060K-GL
      S:  SerialNumber=f6fa08b6
      C:* #Ifs= 8 Cfg#= 1 Atr=a0 MxPwr=500mA
      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
      E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      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
      E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=option
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 6 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=70 Driver=(none)
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:* If#= 7 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
      E:  Ad=8f(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarJerry Meng <jerry-meng@foxmail.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>
      6e7cdfd6
    • Coia Prant's avatar
      USB: serial: option: add Lonsung U8300/U9300 product · b5c3ecee
      Coia Prant authored
      commit cf16ffa1
      
       upstream.
      
      Update the USB serial option driver to support Longsung U8300/U9300.
      
      For U8300
      
      Interface 4 is used by for QMI interface in stock firmware of U8300, the
      router which uses U8300 modem.
      Interface 5 is used by for ADB interface in stock firmware of U8300, the
      router which uses U8300 modem.
      
      Interface mapping is:
      0: unknown (Debug), 1: AT (Modem), 2: AT, 3: PPP (NDIS / Pipe), 4: QMI, 5: ADB
      
      T:  Bus=05 Lev=01 Prnt=03 Port=02 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1c9e ProdID=9b05 Rev=03.18
      S:  Manufacturer=Android
      S:  Product=Android
      C:  #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
      E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      For U9300
      
      Interface 1 is used by for ADB interface in stock firmware of U9300, the
      router which uses U9300 modem.
      Interface 4 is used by for QMI interface in stock firmware of U9300, the
      router which uses U9300 modem.
      
      Interface mapping is:
      0: ADB, 1: AT (Modem), 2: AT, 3: PPP (NDIS / Pipe), 4: QMI
      
      Note: Interface 3 of some models of the U9300 series can send AT commands.
      
      T:  Bus=05 Lev=01 Prnt=05 Port=04 Cnt=01 Dev#=  6 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=1c9e ProdID=9b3c Rev=03.18
      S:  Manufacturer=Android
      S:  Product=Android
      C:  #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=89(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      
      Tested successfully using Modem Manager on U9300.
      Tested successfully AT commands using If=1, If=2 and If=3 on U9300.
      
      Signed-off-by: default avatarCoia Prant <coiaprant@gmail.com>
      Reviewed-by: default avatarLars Melin <larsm17@gmail.com>
      [ johan: drop product defines, trim commit message ]
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b5c3ecee
    • Chuanhong Guo's avatar
      USB: serial: option: add support for Fibocom FM650/FG650 · e32faa0e
      Chuanhong Guo authored
      commit fb1f4584
      
       upstream.
      
      Fibocom FM650/FG650 are 5G modems with ECM/NCM/RNDIS/MBIM modes.
      This patch adds support to all 4 modes.
      
      In all 4 modes, the first serial port is the AT console while the other
      3 appear to be diagnostic interfaces for dumping modem logs.
      
      usb-devices output for all modes:
      
      ECM:
      T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=5000 MxCh= 0
      D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=0a04 Rev=04.04
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=FG650 Module
      S:  SerialNumber=0123456789ABCDEF
      C:  #Ifs= 5 Cfg#= 1 Atr=c0 MxPwr=504mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
      E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
      E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      
      NCM:
      T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=5000 MxCh= 0
      D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=0a05 Rev=04.04
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=FG650 Module
      S:  SerialNumber=0123456789ABCDEF
      C:  #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=504mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0d Prot=00 Driver=cdc_ncm
      E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=01 Driver=cdc_ncm
      E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      
      RNDIS:
      T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=5000 MxCh= 0
      D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=0a06 Rev=04.04
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=FG650 Module
      S:  SerialNumber=0123456789ABCDEF
      C:  #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=504mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
      E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
      E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      
      MBIM:
      T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  7 Spd=5000 MxCh= 0
      D:  Ver= 3.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=0a07 Rev=04.04
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=FG650 Module
      S:  SerialNumber=0123456789ABCDEF
      C:  #Ifs= 6 Cfg#= 1 Atr=c0 MxPwr=504mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
      
      Signed-off-by: default avatarChuanhong Guo <gch981213@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>
      e32faa0e
    • bolan wang's avatar
      USB: serial: option: add Fibocom FM135-GL variants · 3366e4fd
      bolan wang authored
      commit 356952b1
      
       upstream.
      
      Update the USB serial option driver support for the Fibocom
      FM135-GL LTE modules.
      - VID:PID 2cb7:0115, FM135-GL for laptop debug M.2 cards(with MBIM
      interface for /Linux/Chrome OS)
      
      0x0115: mbim, diag, at, pipe
      
      Here are the outputs of usb-devices:
      T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 16 Spd=480 MxCh= 0
      D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
      P:  Vendor=2cb7 ProdID=0115 Rev=05.15
      S:  Manufacturer=Fibocom Wireless Inc.
      S:  Product=Fibocom Module
      S:  SerialNumber=12345678
      C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
      I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
      I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
      E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
      E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
      
      Signed-off-by: default avatarbolan wang <bolan.wang@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>
      3366e4fd
    • Finn Thain's avatar
      serial/pmac_zilog: Remove flawed mitigation for rx irq flood · ab86cf6f
      Finn Thain authored
      commit 1be32264 upstream.
      
      The mitigation was intended to stop the irq completely. That may be
      better than a hard lock-up but it turns out that you get a crash anyway
      if you're using pmac_zilog as a serial console:
      
      ttyPZ0: pmz: rx irq flood !
      BUG: spinlock recursion on CPU#0, swapper/0
      
      That's because the pr_err() call in pmz_receive_chars() results in
      pmz_console_write() attempting to lock a spinlock already locked in
      pmz_interrupt(). With CONFIG_DEBUG_SPINLOCK=y, this produces a fatal
      BUG splat. The spinlock in question is the one in struct uart_port.
      
      Even when it's not fatal, the serial port rx function ceases to work.
      Also, the iteration limit doesn't play nicely with QEMU, as can be
      seen in the bug report linked below.
      
      A web search for other reports of the error message "pmz: rx irq flood"
      didn't produce anything. So I don't think this code is needed any more.
      Remove it.
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Nicholas Piggin <npiggin@gmail.com>
      Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
      Cc: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
      Cc: Naveen N. Rao <naveen.n.rao@linux.ibm.com>
      Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
      Cc: stable@kernel.org
      Cc: linux-m68k@lists.linux-m68k.org
      Link: https://github.com/vivier/qemu-m68k/issues/44
      Link: https://lore.kernel.org/all/1078874617.9746.36.camel@gaston/
      
      
      Acked-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Fixes: 1da177e4
      
       ("Linux-2.6.12-rc2")
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarFinn Thain <fthain@linux-m68k.org>
      Link: https://lore.kernel.org/r/e853cf2c762f23101cd2ddec0cc0c2be0e72685f.1712568223.git.fthain@linux-m68k.org
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ab86cf6f
    • Nikita Zhandarovich's avatar
      comedi: vmk80xx: fix incomplete endpoint checking · f15370e3
      Nikita Zhandarovich authored
      commit d1718530 upstream.
      
      While vmk80xx does have endpoint checking implemented, some things
      can fall through the cracks. Depending on the hardware model,
      URBs can have either bulk or interrupt type, and current version
      of vmk80xx_find_usb_endpoints() function does not take that fully
      into account. While this warning does not seem to be too harmful,
      at the very least it will crash systems with 'panic_on_warn' set on
      them.
      
      Fix the issue found by Syzkaller [1] by somewhat simplifying the
      endpoint checking process with usb_find_common_endpoints() and
      ensuring that only expected endpoint types are present.
      
      This patch has not been tested on real hardware.
      
      [1] Syzkaller report:
      usb 1-1: BOGUS urb xfer, pipe 1 != type 3
      WARNING: CPU: 0 PID: 781 at drivers/usb/core/urb.c:504 usb_submit_urb+0xc4e/0x18c0 drivers/usb/core/urb.c:503
      ...
      Call Trace:
       <TASK>
       usb_start_wait_urb+0x113/0x520 drivers/usb/core/message.c:59
       vmk80xx_reset_device drivers/comedi/drivers/vmk80xx.c:227 [inline]
       vmk80xx_auto_attach+0xa1c/0x1a40 drivers/comedi/drivers/vmk80xx.c:818
       comedi_auto_config+0x238/0x380 drivers/comedi/drivers.c:1067
       usb_probe_interface+0x5cd/0xb00 drivers/usb/core/driver.c:399
      ...
      
      Similar issue also found by Syzkaller:
      Link: https://syzkaller.appspot.com/bug?extid=5205eb2f17de3e01946e
      
      
      
      Reported-and-tested-by: default avatar <syzbot+5f29dc6a889fc42bd896@syzkaller.appspotmail.com>
      Cc: stable <stable@kernel.org>
      Fixes: 49253d54
      
       ("staging: comedi: vmk80xx: factor out usb endpoint detection")
      Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
      Signed-off-by: default avatarNikita Zhandarovich <n.zhandarovich@fintech.ru>
      Link: https://lore.kernel.org/r/20240408171633.31649-1-n.zhandarovich@fintech.ru
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f15370e3
    • Gil Fine's avatar
      thunderbolt: Fix wake configurations after device unplug · 5a7e30d9
      Gil Fine authored
      commit c38fa07d
      
       upstream.
      
      Currently we don't configure correctly the wake events after unplug of device
      router. What can happen is that the downstream ports of host router will be
      configured to wake on: USB4-wake and wake-on-disconnect, but not on
      wake-on-connect. This may cause the later plugged device not to wake the
      domain and fail in enumeration. Fix this by clearing downstream port's "USB4
      Port is Configured" bit, after unplug of a device router.
      
      Signed-off-by: default avatarGil Fine <gil.fine@linux.intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5a7e30d9
    • Gil Fine's avatar
      thunderbolt: Avoid notify PM core about runtime PM resume · e6245ed8
      Gil Fine authored
      commit dcd12aca
      
       upstream.
      
      Currently we notify PM core about occurred wakes after any resume. This
      is not actually needed after resume from runtime suspend. Hence, notify
      PM core about occurred wakes only after resume from system sleep. Also,
      if the wake occurred in USB4 router upstream port, we don't notify the
      PM core about it since it is not actually needed and can cause
      unexpected autowake (e.g. if /sys/power/wakeup_count is used).
      
      While there add the missing kernel-doc for tb_switch_resume().
      
      Signed-off-by: default avatarGil Fine <gil.fine@linux.intel.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e6245ed8
    • Carlos Llamas's avatar
      binder: check offset alignment in binder_get_object() · 48a1f83c
      Carlos Llamas authored
      commit aaef7382 upstream.
      
      Commit 6d98eb95 ("binder: avoid potential data leakage when copying
      txn") introduced changes to how binder objects are copied. In doing so,
      it unintentionally removed an offset alignment check done through calls
      to binder_alloc_copy_from_buffer() -> check_buffer().
      
      These calls were replaced in binder_get_object() with copy_from_user(),
      so now an explicit offset alignment check is needed here. This avoids
      later complications when unwinding the objects gets harder.
      
      It is worth noting this check existed prior to commit 7a67a393
      ("binder: add function to copy binder object from buffer"), likely
      removed due to redundancy at the time.
      
      Fixes: 6d98eb95
      
       ("binder: avoid potential data leakage when copying txn")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarCarlos Llamas <cmllamas@google.com>
      Acked-by: default avatarTodd Kjos <tkjos@google.com>
      Link: https://lore.kernel.org/r/20240330190115.1877819-1-cmllamas@google.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      48a1f83c
    • Eric Biggers's avatar
      x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ · 2e212ae0
      Eric Biggers authored
      [ Upstream commit 9543f6e2 ]
      
      Fix cpuid_deps[] to list the correct dependencies for GFNI, VAES, and
      VPCLMULQDQ.  These features don't depend on AVX512, and there exist CPUs
      that support these features but not AVX512.  GFNI actually doesn't even
      depend on AVX.
      
      This prevents GFNI from being unnecessarily disabled if AVX is disabled
      to mitigate the GDS vulnerability.
      
      This also prevents all three features from being unnecessarily disabled
      if AVX512VL (or its dependency AVX512F) were to be disabled, but it
      looks like there isn't any case where this happens anyway.
      
      Fixes: c128dbfa
      
       ("x86/cpufeatures: Enable new SSE/AVX/AVX512 CPU features")
      Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Acked-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
      Link: https://lore.kernel.org/r/20240417060434.47101-1-ebiggers@kernel.org
      
      
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      2e212ae0
    • Stephen Boyd's avatar
      clk: Get runtime PM before walking tree during disable_unused · 4af115f1
      Stephen Boyd authored
      [ Upstream commit e581cf5d
      
       ]
      
      Doug reported [1] the following hung task:
      
       INFO: task swapper/0:1 blocked for more than 122 seconds.
             Not tainted 5.15.149-21875-gf795ebc40eb8 #1
       "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
       task:swapper/0       state:D stack:    0 pid:    1 ppid:     0 flags:0x00000008
       Call trace:
        __switch_to+0xf4/0x1f4
        __schedule+0x418/0xb80
        schedule+0x5c/0x10c
        rpm_resume+0xe0/0x52c
        rpm_resume+0x178/0x52c
        __pm_runtime_resume+0x58/0x98
        clk_pm_runtime_get+0x30/0xb0
        clk_disable_unused_subtree+0x58/0x208
        clk_disable_unused_subtree+0x38/0x208
        clk_disable_unused_subtree+0x38/0x208
        clk_disable_unused_subtree+0x38/0x208
        clk_disable_unused_subtree+0x38/0x208
        clk_disable_unused+0x4c/0xe4
        do_one_initcall+0xcc/0x2d8
        do_initcall_level+0xa4/0x148
        do_initcalls+0x5c/0x9c
        do_basic_setup+0x24/0x30
        kernel_init_freeable+0xec/0x164
        kernel_init+0x28/0x120
        ret_from_fork+0x10/0x20
       INFO: task kworker/u16:0:9 blocked for more than 122 seconds.
             Not tainted 5.15.149-21875-gf795ebc40eb8 #1
       "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
       task:kworker/u16:0   state:D stack:    0 pid:    9 ppid:     2 flags:0x00000008
       Workqueue: events_unbound deferred_probe_work_func
       Call trace:
        __switch_to+0xf4/0x1f4
        __schedule+0x418/0xb80
        schedule+0x5c/0x10c
        schedule_preempt_disabled+0x2c/0x48
        __mutex_lock+0x238/0x488
        __mutex_lock_slowpath+0x1c/0x28
        mutex_lock+0x50/0x74
        clk_prepare_lock+0x7c/0x9c
        clk_core_prepare_lock+0x20/0x44
        clk_prepare+0x24/0x30
        clk_bulk_prepare+0x40/0xb0
        mdss_runtime_resume+0x54/0x1c8
        pm_generic_runtime_resume+0x30/0x44
        __genpd_runtime_resume+0x68/0x7c
        genpd_runtime_resume+0x108/0x1f4
        __rpm_callback+0x84/0x144
        rpm_callback+0x30/0x88
        rpm_resume+0x1f4/0x52c
        rpm_resume+0x178/0x52c
        __pm_runtime_resume+0x58/0x98
        __device_attach+0xe0/0x170
        device_initial_probe+0x1c/0x28
        bus_probe_device+0x3c/0x9c
        device_add+0x644/0x814
        mipi_dsi_device_register_full+0xe4/0x170
        devm_mipi_dsi_device_register_full+0x28/0x70
        ti_sn_bridge_probe+0x1dc/0x2c0
        auxiliary_bus_probe+0x4c/0x94
        really_probe+0xcc/0x2c8
        __driver_probe_device+0xa8/0x130
        driver_probe_device+0x48/0x110
        __device_attach_driver+0xa4/0xcc
        bus_for_each_drv+0x8c/0xd8
        __device_attach+0xf8/0x170
        device_initial_probe+0x1c/0x28
        bus_probe_device+0x3c/0x9c
        deferred_probe_work_func+0x9c/0xd8
        process_one_work+0x148/0x518
        worker_thread+0x138/0x350
        kthread+0x138/0x1e0
        ret_from_fork+0x10/0x20
      
      The first thread is walking the clk tree and calling
      clk_pm_runtime_get() to power on devices required to read the clk
      hardware via struct clk_ops::is_enabled(). This thread holds the clk
      prepare_lock, and is trying to runtime PM resume a device, when it finds
      that the device is in the process of resuming so the thread schedule()s
      away waiting for the device to finish resuming before continuing. The
      second thread is runtime PM resuming the same device, but the runtime
      resume callback is calling clk_prepare(), trying to grab the
      prepare_lock waiting on the first thread.
      
      This is a classic ABBA deadlock. To properly fix the deadlock, we must
      never runtime PM resume or suspend a device with the clk prepare_lock
      held. Actually doing that is near impossible today because the global
      prepare_lock would have to be dropped in the middle of the tree, the
      device runtime PM resumed/suspended, and then the prepare_lock grabbed
      again to ensure consistency of the clk tree topology. If anything
      changes with the clk tree in the meantime, we've lost and will need to
      start the operation all over again.
      
      Luckily, most of the time we're simply incrementing or decrementing the
      runtime PM count on an active device, so we don't have the chance to
      schedule away with the prepare_lock held. Let's fix this immediate
      problem that can be triggered more easily by simply booting on Qualcomm
      sc7180.
      
      Introduce a list of clk_core structures that have been registered, or
      are in the process of being registered, that require runtime PM to
      operate. Iterate this list and call clk_pm_runtime_get() on each of them
      without holding the prepare_lock during clk_disable_unused(). This way
      we can be certain that the runtime PM state of the devices will be
      active and resumed so we can't schedule away while walking the clk tree
      with the prepare_lock held. Similarly, call clk_pm_runtime_put() without
      the prepare_lock held to properly drop the runtime PM reference. We
      remove the calls to clk_pm_runtime_{get,put}() in this path because
      they're superfluous now that we know the devices are runtime resumed.
      
      Reported-by: default avatarDouglas Anderson <dianders@chromium.org>
      Closes: https://lore.kernel.org/all/20220922084322.RFC.2.I375b6b9e0a0a5348962f004beb3dafee6a12dfbb@changeid/ [1]
      Closes: https://issuetracker.google.com/328070191
      Cc: Marek Szyprowski <m.szyprowski@samsung.com>
      Cc: Ulf Hansson <ulf.hansson@linaro.org>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Fixes: 9a34b453
      
       ("clk: Add support for runtime PM")
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Link: https://lore.kernel.org/r/20240325184204.745706-5-sboyd@kernel.org
      
      
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      4af115f1
    • Stephen Boyd's avatar
      clk: Initialize struct clk_core kref earlier · d339ce27
      Stephen Boyd authored
      [ Upstream commit 9d05ae53
      
       ]
      
      Initialize this kref once we allocate memory for the struct clk_core so
      that we can reuse the release function to free any memory associated
      with the structure. This mostly consolidates code, but also clarifies
      that the kref lifetime exists once the container structure (struct
      clk_core) is allocated instead of leaving it in a half-baked state for
      most of __clk_core_init().
      
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Link: https://lore.kernel.org/r/20240325184204.745706-4-sboyd@kernel.org
      Stable-dep-of: e581cf5d
      
       ("clk: Get runtime PM before walking tree during disable_unused")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d339ce27
    • Konrad Dybcio's avatar
      clk: Print an info line before disabling unused clocks · 83e6e77f
      Konrad Dybcio authored
      [ Upstream commit 12ca59b9
      
       ]
      
      Currently, the regulator framework informs us before calling into
      their unused cleanup paths, which eases at least some debugging. The
      same could be beneficial for clocks, so that random shutdowns shortly
      after most initcalls are done can be less of a guess.
      
      Add a pr_info before disabling unused clocks to do so.
      
      Reviewed-by: default avatarMarijn Suijten <marijn.suijten@somainline.org>
      Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
      Link: https://lore.kernel.org/r/20230307132928.3887737-1-konrad.dybcio@linaro.org
      
      
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Stable-dep-of: e581cf5d
      
       ("clk: Get runtime PM before walking tree during disable_unused")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      83e6e77f
    • Claudiu Beznea's avatar
      clk: remove extra empty line · c04fc244
      Claudiu Beznea authored
      [ Upstream commit 79806d33
      
       ]
      
      Remove extra empty line.
      
      Signed-off-by: default avatarClaudiu Beznea <claudiu.beznea@microchip.com>
      Link: https://lore.kernel.org/r/20220630151205.3935560-1-claudiu.beznea@microchip.com
      
      
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Stable-dep-of: e581cf5d
      
       ("clk: Get runtime PM before walking tree during disable_unused")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      c04fc244
    • Stephen Boyd's avatar
      clk: Mark 'all_lists' as const · f5591ad6
      Stephen Boyd authored
      [ Upstream commit 75061a6f
      
       ]
      
      This list array doesn't change at runtime. Mark it const to move to RO
      memory.
      
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Link: https://lore.kernel.org/r/20220217220554.2711696-2-sboyd@kernel.org
      Stable-dep-of: e581cf5d
      
       ("clk: Get runtime PM before walking tree during disable_unused")
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      f5591ad6
    • Stephen Boyd's avatar
      clk: Remove prepare_lock hold assertion in __clk_release() · bde446f1
      Stephen Boyd authored
      [ Upstream commit 8358a76c ]
      
      Removing this assertion lets us move the kref_put() call outside the
      prepare_lock section. We don't need to hold the prepare_lock here to
      free memory and destroy the clk_core structure. We've already unlinked
      the clk from the clk tree and by the time the release function runs
      nothing holds a reference to the clk_core anymore so anything with the
      pointer can't access the memory that's being freed anyway. Way back in
      commit 496eadf8 ("clk: Use lockdep asserts to find missing hold of
      prepare_lock") we didn't need to have this assertion either.
      
      Fixes: 496eadf8
      
       ("clk: Use lockdep asserts to find missing hold of prepare_lock")
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Link: https://lore.kernel.org/r/20240325184204.745706-2-sboyd@kernel.org
      
      
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      bde446f1