1. 10 12月, 2021 1 次提交
  2. 08 12月, 2021 1 次提交
    • G
      Merge tag 'iio-fixes-for-5.16b' of... · 7c602f5d
      Greg Kroah-Hartman 提交于
      Merge tag 'iio-fixes-for-5.16b' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next
      
      Jonathan writes:
      
      2nd set of IIO fixes for 5.16
      
      Note 1st set were before the merge window.
      
      Biggest set in here fix what happens when things go wrong in
      the interrupt handlers for an IIO trigger.
      
      Otherwise normal mix of recent and ancient bugs.
      
      trigger core
       - Fix reference counting bug that was preventing the iio_trig
         structures from being released.
      adxrs290
       - Correctly sign extend the rate and temperature data.
      at91-sama5d2
       - Fix sign extension from the wrong bit and use the scan_type
         values to avoid it being open coded in two places (which were
         out of sync)
      axp20x_adc
       - Fix current reporting bit depth.
      dln2-adc
       - Fix a lock ordering issue and lockdep complaint that results.
       - Add error handling for failure to register the trigger.
      imx8qxp
       - Wrong config dependency
      kxcjk-1013
       - Potential leak due to wrong guard on cleanup.
      ltr501, kxsd9, stk3310, itg3200, ad7768
       - Don't return error codes from interrupt handler and call
         iio_trigger_notify_done() on all paths to avoid leaving
         trigger disabled on an intermittent fault.
      mma8452
       - Fix missing iio_trigger_get() that could lead to use after free.
      stm32
       - Fix a current leak.
       - Avoid null pointer derefence on defer_probe error due to wrong
         struct device being passed.
      stm32-timer
       - Drop space in MODULE_ALIAS.
      
      * tag 'iio-fixes-for-5.16b' of https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio:
        iio: trigger: stm32-timer: fix MODULE_ALIAS
        iio: adc: stm32: fix null pointer on defer_probe error
        iio: at91-sama5d2: Fix incorrect sign extension
        iio: adc: axp20x_adc: fix charging current reporting on AXP22x
        iio: gyro: adxrs290: fix data signedness
        iio: ad7768-1: Call iio_trigger_notify_done() on error
        iio: itg3200: Call iio_trigger_notify_done() on error
        iio: imx8qxp-adc: fix dependency to the intended ARCH_MXC config
        iio: dln2: Check return value of devm_iio_trigger_register()
        iio: trigger: Fix reference counting
        iio: dln2-adc: Fix lockdep complaint
        iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda
        iio: mma8452: Fix trigger reference couting
        iio: stk3310: Don't return error code in interrupt handler
        iio: kxsd9: Don't return error code in trigger handler
        iio: ltr501: Don't return error code in trigger handler
        iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove
      7c602f5d
  3. 04 12月, 2021 1 次提交
  4. 03 12月, 2021 6 次提交
    • K
      misc: rtsx: Avoid mangling IRQ during runtime PM · 0edeb899
      Kai-Heng Feng 提交于
      After commit 5b4258f6 ("misc: rtsx: rts5249 support runtime PM"), when the
      rtsx controller is runtime suspended, bring CPUs offline and back online, the
      runtime resume of the controller will fail:
      
      [   47.319391] smpboot: CPU 1 is now offline
      [   47.414140] x86: Booting SMP configuration:
      [   47.414147] smpboot: Booting Node 0 Processor 1 APIC 0x2
      [   47.571334] smpboot: CPU 2 is now offline
      [   47.686055] smpboot: Booting Node 0 Processor 2 APIC 0x4
      [   47.808174] smpboot: CPU 3 is now offline
      [   47.878146] smpboot: Booting Node 0 Processor 3 APIC 0x6
      [   48.003679] smpboot: CPU 4 is now offline
      [   48.086187] smpboot: Booting Node 0 Processor 4 APIC 0x1
      [   48.239627] smpboot: CPU 5 is now offline
      [   48.326059] smpboot: Booting Node 0 Processor 5 APIC 0x3
      [   48.472193] smpboot: CPU 6 is now offline
      [   48.574181] smpboot: Booting Node 0 Processor 6 APIC 0x5
      [   48.743375] smpboot: CPU 7 is now offline
      [   48.838047] smpboot: Booting Node 0 Processor 7 APIC 0x7
      [   48.965447] __common_interrupt: 1.35 No irq handler for vector
      [   51.174065] mmc0: error -110 doing runtime resume
      [   54.978088] I/O error, dev mmcblk0, sector 21479 op 0x1:(WRITE) flags 0x0 phys_seg 11 prio class 0
      [   54.978108] Buffer I/O error on dev mmcblk0p1, logical block 19431, lost async page write
      [   54.978129] Buffer I/O error on dev mmcblk0p1, logical block 19432, lost async page write
      [   54.978134] Buffer I/O error on dev mmcblk0p1, logical block 19433, lost async page write
      [   54.978137] Buffer I/O error on dev mmcblk0p1, logical block 19434, lost async page write
      [   54.978141] Buffer I/O error on dev mmcblk0p1, logical block 19435, lost async page write
      [   54.978145] Buffer I/O error on dev mmcblk0p1, logical block 19436, lost async page write
      [   54.978148] Buffer I/O error on dev mmcblk0p1, logical block 19437, lost async page write
      [   54.978152] Buffer I/O error on dev mmcblk0p1, logical block 19438, lost async page write
      [   54.978155] Buffer I/O error on dev mmcblk0p1, logical block 19439, lost async page write
      [   54.978160] Buffer I/O error on dev mmcblk0p1, logical block 19440, lost async page write
      [   54.978244] mmc0: card aaaa removed
      [   54.978452] FAT-fs (mmcblk0p1): FAT read failed (blocknr 4257)
      
      There's interrupt immediately raised on rtsx_pci_write_register() in
      runtime resume routine, but the IRQ handler hasn't registered yet.
      
      So we can either move rtsx_pci_write_register() after rtsx_pci_acquire_irq(),
      or just stop mangling IRQ on runtime PM. Choose the latter to save some
      CPU cycles.
      
      Fixes: 5b4258f6 ("misc: rtsx: rts5249 support runtime PM")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NKai-Heng Feng <kai.heng.feng@canonical.com>
      BugLink: https://bugs.launchpad.net/bugs/1951784
      Link: https://lore.kernel.org/r/20211126003246.1068770-1-kai.heng.feng@canonical.comSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0edeb899
    • R
      nvmem: eeprom: at25: fix FRAM byte_len · 9a626577
      Ralph Siemsen 提交于
      Commit fd307a4a ("nvmem: prepare basics for FRAM support") added
      support for FRAM devices such as the Cypress FM25V. During testing, it
      was found that the FRAM detects properly, however reads and writes fail.
      Upon further investigation, two problem were found in at25_probe() routine.
      
      1) In the case of an FRAM device without platform data, eg.
             fram == true && spi->dev.platform_data == NULL
      the stack local variable "struct spi_eeprom chip" is not initialized
      fully, prior to being copied into at25->chip. The chip.flags field in
      particular can cause problems.
      
      2) The byte_len of FRAM is computed from its ID register, and is stored
      into the stack local "struct spi_eeprom chip" structure. This happens
      after the same structure has been copied into at25->chip. As a result,
      at25->chip.byte_len does not contain the correct length of the device.
      In turn this can cause checks at beginning of at25_ee_read() to fail
      (or equally, it could allow reads beyond the end of the device length).
      
      Fix both of these issues by eliminating the on-stack struct spi_eeprom.
      Instead use the one inside at25_data structure, which starts of zeroed.
      
      Fixes: fd307a4a ("nvmem: prepare basics for FRAM support")
      Cc: stable <stable@vger.kernel.org>
      Reviewed-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NRalph Siemsen <ralph.siemsen@linaro.org>
      Link: https://lore.kernel.org/r/20211108181627.645638-1-ralph.siemsen@linaro.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9a626577
    • J
      misc: fastrpc: fix improper packet size calculation · 3a1bf591
      Jeya R 提交于
      The buffer list is sorted and this is not being considered while
      calculating packet size. This would lead to improper copy length
      calculation for non-dmaheap buffers which would eventually cause
      sending improper buffers to DSP.
      
      Fixes: c68cfb71 ("misc: fastrpc: Add support for context Invoke method")
      Reviewed-by: NSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Signed-off-by: NJeya R <jeyr@codeaurora.org>
      Link: https://lore.kernel.org/r/1637771481-4299-1-git-send-email-jeyr@codeaurora.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3a1bf591
    • S
      MAINTAINERS: add maintainer for Qualcomm FastRPC driver · f1297201
      Srinivas Kandagatla 提交于
      For some reason I forgot to add myself as maintainer when we
      upstreamed FastRPC patches.
      
      Add myself and Amol from Qualcomm as maintainers for Qualcomm FastRPC driver.
      Signed-off-by: NSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Link: https://lore.kernel.org/r/20211124142325.27108-1-srinivas.kandagatla@linaro.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f1297201
    • S
      bus: mhi: pci_generic: Fix device recovery failed issue · e2022cbe
      Slark Xiao 提交于
      For Foxconn T99W175 device(sdx55 platform) in some host platform,
      it would be unavailable once the host execute the err handler.
      
      After checking, it's caused by the delay time too short to
      get a successful reset.
      
      Please see my test evidence as bewlow(BTW, I add some extra test logs
      in function mhi_pci_reset_prepare and mhi_pci_reset_done):
        When MHI_POST_RESET_DELAY_MS equals to 500ms:
         Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222477] mhi mhi0: Device MHI is not in valid state
         Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222628] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare reset
         Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222631] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare mhi_soc_reset
         Nov  4 14:30:03 jbd-ThinkEdge kernel: [  146.222632] mhi mhi0:  mhi_soc_reset write soc to reset
         Nov  4 14:30:05 jbd-ThinkEdge kernel: [  147.839993] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_done
         Nov  4 14:30:05 jbd-ThinkEdge kernel: [  147.902063] mhi-pci-generic 0000:2d:00.0: reset failed
      
        When MHI_POST_RESET_DELAY_MS equals to 1000ms or 1500ms:
         Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.067857] mhi mhi0: Device MHI is not in valid state
         Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.068029] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare reset
         Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.068032] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare mhi_soc_reset
         Nov  4 19:07:26 jbd-ThinkEdge kernel: [  157.068034] mhi mhi0:  mhi_soc_reset write soc to reset
         Nov  4 19:07:29 jbd-ThinkEdge kernel: [  159.607006] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_done
         Nov  4 19:07:29 jbd-ThinkEdge kernel: [  159.607152] mhi mhi0: Requested to power ON
         Nov  4 19:07:51 jbd-ThinkEdge kernel: [  181.302872] mhi mhi0: Failed to reset MHI due to syserr state
         Nov  4 19:07:51 jbd-ThinkEdge kernel: [  181.303011] mhi-pci-generic 0000:2d:00.0: failed to power up MHI controller
      
        When MHI_POST_RESET_DELAY_MS equals to 2000ms:
         Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180527] mhi mhi0: Failed to transition from PM state: Linkdown or Error Fatal Detect to: SYS ERROR Process
         Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180535] mhi mhi0: Device MHI is not in valid state
         Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180722] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare reset
         Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180725] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_prepare mhi_soc_reset
         Nov  4 17:51:08 jbd-ThinkEdge kernel: [  147.180727] mhi mhi0:  mhi_soc_reset write soc to reset
         Nov  4 17:51:11 jbd-ThinkEdge kernel: [  150.230787] mhi-pci-generic 0000:2d:00.0: mhi_pci_reset_done
         Nov  4 17:51:11 jbd-ThinkEdge kernel: [  150.230928] mhi mhi0: Requested to power ON
         Nov  4 17:51:11 jbd-ThinkEdge kernel: [  150.231173] mhi mhi0: Power on setup success
         Nov  4 17:51:14 jbd-ThinkEdge kernel: [  153.254747] mhi mhi0: Wait for device to enter SBL or Mission mode
      
      I also tried big data like 3000, and it worked as well. 500ms may not be
      enough for all support mhi device. We shall increase it to 2000ms
      at least.
      
      Link: https://lore.kernel.org/r/20211108113127.3938-1-slark_xiao@163.com
      [mani: massaged commit message little bit, added Fixes tag and CCed stable]
      Fixes: 8ccc3279 ("mhi: pci_generic: Add support for reset")
      Cc: stable@vger.kernel.org
      Reviewed-by: NManivannan Sadhasivam <mani@kernel.org>
      Signed-off-by: NSlark Xiao <slark_xiao@163.com>
      Signed-off-by: NManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
      Link: https://lore.kernel.org/r/20211126104951.35685-2-manivannan.sadhasivam@linaro.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e2022cbe
    • G
      Merge tag 'phy-fixes-5.16' of... · 0ec7f1ae
      Greg Kroah-Hartman 提交于
      Merge tag 'phy-fixes-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy into char-misc-next
      
      Vinod writes:
      
      phy: fixes for 5.16
      
      Fixes for:
       - kernel-doc warnings for various drivers
       - error handling fix for HiSilicon driver
       - name fix for zynqmp phy
       - property name fix in stm32 phy
      
      * tag 'phy-fixes-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy:
        phy: HiSilicon: Fix copy and paste bug in error handling
        dt-bindings: phy: zynqmp-psgtr: fix USB phy name
        phy: ti: omap-usb2: Fix the kernel-doc style
        phy: qualcomm: ipq806x-usb: Fix kernel-doc style
        phy: ti: tusb1210: Fix the kernel-doc warn
        phy: qualcomm: usb-hsic: Fix the kernel-doc warn
        phy: qualcomm: qmp: Add missing struct documentation
        phy: mvebu-cp110-utmi: Fix kernel-doc warns
        phy: ti: report 2 non-kernel-doc comments
        phy: stm32: fix st,slow-hs-slew-rate with st,decrease-hs-slew-rate
      0ec7f1ae
  5. 29 11月, 2021 7 次提交
  6. 28 11月, 2021 17 次提交
  7. 27 11月, 2021 7 次提交
    • Y
      io_uring: Fix undefined-behaviour in io_issue_sqe · f6223ff7
      Ye Bin 提交于
      We got issue as follows:
      ================================================================================
      UBSAN: Undefined behaviour in ./include/linux/ktime.h:42:14
      signed integer overflow:
      -4966321760114568020 * 1000000000 cannot be represented in type 'long long int'
      CPU: 1 PID: 2186 Comm: syz-executor.2 Not tainted 4.19.90+ #12
      Hardware name: linux,dummy-virt (DT)
      Call trace:
       dump_backtrace+0x0/0x3f0 arch/arm64/kernel/time.c:78
       show_stack+0x28/0x38 arch/arm64/kernel/traps.c:158
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0x170/0x1dc lib/dump_stack.c:118
       ubsan_epilogue+0x18/0xb4 lib/ubsan.c:161
       handle_overflow+0x188/0x1dc lib/ubsan.c:192
       __ubsan_handle_mul_overflow+0x34/0x44 lib/ubsan.c:213
       ktime_set include/linux/ktime.h:42 [inline]
       timespec64_to_ktime include/linux/ktime.h:78 [inline]
       io_timeout fs/io_uring.c:5153 [inline]
       io_issue_sqe+0x42c8/0x4550 fs/io_uring.c:5599
       __io_queue_sqe+0x1b0/0xbc0 fs/io_uring.c:5988
       io_queue_sqe+0x1ac/0x248 fs/io_uring.c:6067
       io_submit_sqe fs/io_uring.c:6137 [inline]
       io_submit_sqes+0xed8/0x1c88 fs/io_uring.c:6331
       __do_sys_io_uring_enter fs/io_uring.c:8170 [inline]
       __se_sys_io_uring_enter fs/io_uring.c:8129 [inline]
       __arm64_sys_io_uring_enter+0x490/0x980 fs/io_uring.c:8129
       invoke_syscall arch/arm64/kernel/syscall.c:53 [inline]
       el0_svc_common+0x374/0x570 arch/arm64/kernel/syscall.c:121
       el0_svc_handler+0x190/0x260 arch/arm64/kernel/syscall.c:190
       el0_svc+0x10/0x218 arch/arm64/kernel/entry.S:1017
      ================================================================================
      
      As ktime_set only judge 'secs' if big than KTIME_SEC_MAX, but if we pass
      negative value maybe lead to overflow.
      To address this issue, we must check if 'sec' is negative.
      Signed-off-by: NYe Bin <yebin10@huawei.com>
      Link: https://lore.kernel.org/r/20211118015907.844807-1-yebin10@huawei.comSigned-off-by: NJens Axboe <axboe@kernel.dk>
      f6223ff7
    • Y
      io_uring: fix soft lockup when call __io_remove_buffers · 1d0254e6
      Ye Bin 提交于
      I got issue as follows:
      [ 567.094140] __io_remove_buffers: [1]start ctx=0xffff8881067bf000 bgid=65533 buf=0xffff8881fefe1680
      [  594.360799] watchdog: BUG: soft lockup - CPU#2 stuck for 26s! [kworker/u32:5:108]
      [  594.364987] Modules linked in:
      [  594.365405] irq event stamp: 604180238
      [  594.365906] hardirqs last  enabled at (604180237): [<ffffffff93fec9bd>] _raw_spin_unlock_irqrestore+0x2d/0x50
      [  594.367181] hardirqs last disabled at (604180238): [<ffffffff93fbbadb>] sysvec_apic_timer_interrupt+0xb/0xc0
      [  594.368420] softirqs last  enabled at (569080666): [<ffffffff94200654>] __do_softirq+0x654/0xa9e
      [  594.369551] softirqs last disabled at (569080575): [<ffffffff913e1d6a>] irq_exit_rcu+0x1ca/0x250
      [  594.370692] CPU: 2 PID: 108 Comm: kworker/u32:5 Tainted: G            L    5.15.0-next-20211112+ #88
      [  594.371891] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS ?-20190727_073836-buildvm-ppc64le-16.ppc.fedoraproject.org-3.fc31 04/01/2014
      [  594.373604] Workqueue: events_unbound io_ring_exit_work
      [  594.374303] RIP: 0010:_raw_spin_unlock_irqrestore+0x33/0x50
      [  594.375037] Code: 48 83 c7 18 53 48 89 f3 48 8b 74 24 10 e8 55 f5 55 fd 48 89 ef e8 ed a7 56 fd 80 e7 02 74 06 e8 43 13 7b fd fb bf 01 00 00 00 <e8> f8 78 474
      [  594.377433] RSP: 0018:ffff888101587a70 EFLAGS: 00000202
      [  594.378120] RAX: 0000000024030f0d RBX: 0000000000000246 RCX: 1ffffffff2f09106
      [  594.379053] RDX: 0000000000000000 RSI: ffffffff9449f0e0 RDI: 0000000000000001
      [  594.379991] RBP: ffffffff9586cdc0 R08: 0000000000000001 R09: fffffbfff2effcab
      [  594.380923] R10: ffffffff977fe557 R11: fffffbfff2effcaa R12: ffff8881b8f3def0
      [  594.381858] R13: 0000000000000246 R14: ffff888153a8b070 R15: 0000000000000000
      [  594.382787] FS:  0000000000000000(0000) GS:ffff888399c00000(0000) knlGS:0000000000000000
      [  594.383851] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  594.384602] CR2: 00007fcbe71d2000 CR3: 00000000b4216000 CR4: 00000000000006e0
      [  594.385540] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  594.386474] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [  594.387403] Call Trace:
      [  594.387738]  <TASK>
      [  594.388042]  find_and_remove_object+0x118/0x160
      [  594.389321]  delete_object_full+0xc/0x20
      [  594.389852]  kfree+0x193/0x470
      [  594.390275]  __io_remove_buffers.part.0+0xed/0x147
      [  594.390931]  io_ring_ctx_free+0x342/0x6a2
      [  594.392159]  io_ring_exit_work+0x41e/0x486
      [  594.396419]  process_one_work+0x906/0x15a0
      [  594.399185]  worker_thread+0x8b/0xd80
      [  594.400259]  kthread+0x3bf/0x4a0
      [  594.401847]  ret_from_fork+0x22/0x30
      [  594.402343]  </TASK>
      
      Message from syslogd@localhost at Nov 13 09:09:54 ...
      kernel:watchdog: BUG: soft lockup - CPU#2 stuck for 26s! [kworker/u32:5:108]
      [  596.793660] __io_remove_buffers: [2099199]start ctx=0xffff8881067bf000 bgid=65533 buf=0xffff8881fefe1680
      
      We can reproduce this issue by follow syzkaller log:
      r0 = syz_io_uring_setup(0x401, &(0x7f0000000300), &(0x7f0000003000/0x2000)=nil, &(0x7f0000ff8000/0x4000)=nil, &(0x7f0000000280)=<r1=>0x0, &(0x7f0000000380)=<r2=>0x0)
      sendmsg$ETHTOOL_MSG_FEATURES_SET(0xffffffffffffffff, &(0x7f0000003080)={0x0, 0x0, &(0x7f0000003040)={&(0x7f0000000040)=ANY=[], 0x18}}, 0x0)
      syz_io_uring_submit(r1, r2, &(0x7f0000000240)=@IORING_OP_PROVIDE_BUFFERS={0x1f, 0x5, 0x0, 0x401, 0x1, 0x0, 0x100, 0x0, 0x1, {0xfffd}}, 0x0)
      io_uring_enter(r0, 0x3a2d, 0x0, 0x0, 0x0, 0x0)
      
      The reason above issue  is 'buf->list' has 2,100,000 nodes, occupied cpu lead
      to soft lockup.
      To solve this issue, we need add schedule point when do while loop in
      '__io_remove_buffers'.
      After add  schedule point we do regression, get follow data.
      [  240.141864] __io_remove_buffers: [1]start ctx=0xffff888170603000 bgid=65533 buf=0xffff8881116fcb00
      [  268.408260] __io_remove_buffers: [1]start ctx=0xffff8881b92d2000 bgid=65533 buf=0xffff888130c83180
      [  275.899234] __io_remove_buffers: [2099199]start ctx=0xffff888170603000 bgid=65533 buf=0xffff8881116fcb00
      [  296.741404] __io_remove_buffers: [1]start ctx=0xffff8881b659c000 bgid=65533 buf=0xffff8881010fe380
      [  305.090059] __io_remove_buffers: [2099199]start ctx=0xffff8881b92d2000 bgid=65533 buf=0xffff888130c83180
      [  325.415746] __io_remove_buffers: [1]start ctx=0xffff8881b92d1000 bgid=65533 buf=0xffff8881a17d8f00
      [  333.160318] __io_remove_buffers: [2099199]start ctx=0xffff8881b659c000 bgid=65533 buf=0xffff8881010fe380
      ...
      
      Fixes:8bab4c09("io_uring: allow conditional reschedule for intensive iterators")
      Signed-off-by: NYe Bin <yebin10@huawei.com>
      Link: https://lore.kernel.org/r/20211122024737.2198530-1-yebin10@huawei.comSigned-off-by: NJens Axboe <axboe@kernel.dk>
      1d0254e6
    • S
      tracing: Fix pid filtering when triggers are attached · a55f224f
      Steven Rostedt (VMware) 提交于
      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: NSteven Rostedt (VMware) <rostedt@goodmis.org>
      a55f224f
    • A
      iommu/vt-d: Fix unmap_pages support · 86dc40c7
      Alex Williamson 提交于
      When supporting only the .map and .unmap callbacks of iommu_ops,
      the IOMMU driver can make assumptions about the size and alignment
      used for mappings based on the driver provided pgsize_bitmap.  VT-d
      previously used essentially PAGE_MASK for this bitmap as any power
      of two mapping was acceptably filled by native page sizes.
      
      However, with the .map_pages and .unmap_pages interface we're now
      getting page-size and count arguments.  If we simply combine these
      as (page-size * count) and make use of the previous map/unmap
      functions internally, any size and alignment assumptions are very
      different.
      
      As an example, a given vfio device assignment VM will often create
      a 4MB mapping at IOVA pfn [0x3fe00 - 0x401ff].  On a system that
      does not support IOMMU super pages, the unmap_pages interface will
      ask to unmap 1024 4KB pages at the base IOVA.  dma_pte_clear_level()
      will recurse down to level 2 of the page table where the first half
      of the pfn range exactly matches the entire pte level.  We clear the
      pte, increment the pfn by the level size, but (oops) the next pte is
      on a new page, so we exit the loop an pop back up a level.  When we
      then update the pfn based on that higher level, we seem to assume
      that the previous pfn value was at the start of the level.  In this
      case the level size is 256K pfns, which we add to the base pfn and
      get a results of 0x7fe00, which is clearly greater than 0x401ff,
      so we're done.  Meanwhile we never cleared the ptes for the remainder
      of the range.  When the VM remaps this range, we're overwriting valid
      ptes and the VT-d driver complains loudly, as reported by the user
      report linked below.
      
      The fix for this seems relatively simple, if each iteration of the
      loop in dma_pte_clear_level() is assumed to clear to the end of the
      level pte page, then our next pfn should be calculated from level_pfn
      rather than our working pfn.
      
      Fixes: 3f34f125 ("iommu/vt-d: Implement map/unmap_pages() iommu_ops callback")
      Reported-by: NAjay Garg <ajaygargnsit@gmail.com>
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Tested-by: NGiovanni Cabiddu <giovanni.cabiddu@intel.com>
      Link: https://lore.kernel.org/all/20211002124012.18186-1-ajaygargnsit@gmail.com/
      Link: https://lore.kernel.org/r/163659074748.1617923.12716161410774184024.stgit@omenSigned-off-by: NLu Baolu <baolu.lu@linux.intel.com>
      Link: https://lore.kernel.org/r/20211126135556.397932-3-baolu.lu@linux.intel.comSigned-off-by: NJoerg Roedel <jroedel@suse.de>
      86dc40c7
    • C
      iommu/vt-d: Fix an unbalanced rcu_read_lock/rcu_read_unlock() · 4e5973dd
      Christophe JAILLET 提交于
      If we return -EOPNOTSUPP, the rcu lock remains lock. This is spurious.
      Go through the end of the function instead. This way, the missing
      'rcu_read_unlock()' is called.
      
      Fixes: 7afd7f6a ("iommu/vt-d: Check FL and SL capability sanity in scalable mode")
      Signed-off-by: NChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Link: https://lore.kernel.org/r/40cc077ca5f543614eab2a10e84d29dd190273f6.1636217517.git.christophe.jaillet@wanadoo.frSigned-off-by: NLu Baolu <baolu.lu@linux.intel.com>
      Link: https://lore.kernel.org/r/20211126135556.397932-2-baolu.lu@linux.intel.comSigned-off-by: NJoerg Roedel <jroedel@suse.de>
      4e5973dd
    • A
      iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 · f7ff3cff
      Alex Bee 提交于
      With the submission of iommu driver for RK3568 a subtle bug was
      introduced: PAGE_DESC_HI_MASK1 and PAGE_DESC_HI_MASK2 have to be
      the other way arround - that leads to random errors, especially when
      addresses beyond 32 bit are used.
      
      Fix it.
      
      Fixes: c55356c5 ("iommu: rockchip: Add support for iommu v2")
      Signed-off-by: NAlex Bee <knaerzche@gmail.com>
      Tested-by: NPeter Geis <pgwipeout@gmail.com>
      Reviewed-by: NHeiko Stuebner <heiko@sntech.de>
      Tested-by: NDan Johansen <strit@manjaro.org>
      Reviewed-by: NBenjamin Gaignard <benjamin.gaignard@collabora.com>
      Link: https://lore.kernel.org/r/20211124021325.858139-1-knaerzche@gmail.comSigned-off-by: NJoerg Roedel <jroedel@suse.de>
      f7ff3cff
    • J
      iommu/amd: Clarify AMD IOMMUv2 initialization messages · 717e88aa
      Joerg Roedel 提交于
      The messages printed on the initialization of the AMD IOMMUv2 driver
      have caused some confusion in the past. Clarify the messages to lower
      the confusion in the future.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      Link: https://lore.kernel.org/r/20211123105507.7654-3-joro@8bytes.org
      717e88aa