public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] dma-mapping updates for Linux 6.12
@ 2024-09-19  7:54 Christoph Hellwig
  2024-09-19  9:40 ` pr-tracker-bot
  2024-09-19 21:41 ` Xi Ruoyao
  0 siblings, 2 replies; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-19  7:54 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, iommu

The following changes since commit 47ac09b91befbb6a235ab620c32af719f8208399:

  Linux 6.11-rc4 (2024-08-18 13:17:27 -0700)

are available in the Git repository at:

  git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-6.12-2024-09-19

for you to fetch changes up to a5fb217f13f74b2af2ab366ffad522bae717f93c:

  dma-mapping: reflow dma_supported (2024-09-12 16:28:00 +0200)

----------------------------------------------------------------
dma-mapping updates for linux 6.12

 - support DMA zones for arm64 systems where memory starts at > 4GB
   (Baruch Siach, Catalin Marinas)
 - support direct calls into dma-iommu and thus obsolete dma_map_ops for
   many common configurations (Leon Romanovsky)
 - add DMA-API tracing (Sean Anderson)
 - remove the not very useful return value from various dma_set_* APIs
   (Christoph Hellwig)
 - misc cleanups and minor optimizations (Chen Y, Yosry Ahmed,
   Christoph Hellwig)

----------------------------------------------------------------
Baruch Siach (2):
      arm64: mm: fix DMA zone when dma-ranges is missing
      arm64: mm: keep low RAM dma zone

Catalin Marinas (2):
      dma-mapping: replace zone_dma_bits by zone_dma_limit
      arm64: support DMA zone above 4GB

Chen Yu (1):
      dma-direct: optimize page freeing when it is not addressable

Christoph Hellwig (7):
      scsi: check that busses support the DMA API before setting dma parameters
      dma-mapping: don't return errors from dma_set_min_align_mask
      dma-mapping: don't return errors from dma_set_seg_boundary
      dma-mapping: don't return errors from dma_set_max_seg_size
      vdpa_sim: don't select DMA_OPS
      dma-mapping: clearly mark DMA ops as an architecture feature
      dma-mapping: reflow dma_supported

Leon Romanovsky (4):
      dma-mapping: call ->unmap_page and ->unmap_sg unconditionally
      dma-mapping: direct calls for dma-iommu
      dma-mapping: use IOMMU DMA calls for common alloc/free page calls
      dma-mapping: reliably inform about DMA support for IOMMU

Sean Anderson (1):
      dma-mapping: add tracing for dma-mapping API calls

Yosry Ahmed (1):
      dma-mapping: use bit masking to check VM_DMA_COHERENT

 MAINTAINERS                                        |   1 +
 arch/Kconfig                                       |   9 +
 arch/alpha/Kconfig                                 |   2 +-
 arch/arm/Kconfig                                   |   2 +-
 arch/arm64/Kconfig                                 |   1 +
 arch/arm64/mm/init.c                               |  39 ++-
 arch/mips/Kconfig                                  |   2 +-
 arch/parisc/Kconfig                                |   2 +-
 arch/powerpc/Kconfig                               |   2 +-
 arch/powerpc/mm/mem.c                              |   5 +-
 arch/s390/Kconfig                                  |   2 +-
 arch/s390/mm/init.c                                |   2 +-
 arch/sparc/Kconfig                                 |   2 +-
 arch/x86/Kconfig                                   |   2 +-
 drivers/accel/qaic/qaic_drv.c                      |   4 +-
 drivers/dma/idma64.c                               |   4 +-
 drivers/dma/pl330.c                                |   5 +-
 drivers/dma/qcom/bam_dma.c                         |   6 +-
 drivers/dma/sh/rcar-dmac.c                         |   4 +-
 drivers/dma/ste_dma40.c                            |   6 +-
 drivers/gpu/drm/mediatek/mtk_drm_drv.c             |   6 +-
 drivers/iommu/Kconfig                              |   2 +-
 drivers/iommu/dma-iommu.c                          | 104 +++----
 drivers/iommu/intel/Kconfig                        |   1 -
 drivers/macintosh/macio_asic.c                     |   4 +-
 .../media/common/videobuf2/videobuf2-dma-contig.c  |   3 +-
 drivers/media/pci/intel/ipu6/Kconfig               |   7 +-
 drivers/media/pci/intel/ipu6/ipu6.c                |   4 +-
 drivers/mmc/host/mmci_stm32_sdmmc.c                |   3 +-
 drivers/net/ethernet/microsoft/mana/gdma_main.c    |   6 +-
 drivers/scsi/lpfc/lpfc_init.c                      |   7 +-
 drivers/scsi/scsi_lib.c                            |  11 +-
 drivers/vdpa/Kconfig                               |  10 +-
 drivers/xen/Kconfig                                |   4 +-
 include/linux/device.h                             |   7 +-
 include/linux/dma-direct.h                         |   2 +-
 include/linux/dma-map-ops.h                        |  19 +-
 include/linux/dma-mapping.h                        |  25 +-
 include/linux/iommu-dma.h                          | 155 ++++++++++
 include/trace/events/dma.h                         | 341 +++++++++++++++++++++
 kernel/dma/Kconfig                                 |   7 +-
 kernel/dma/Makefile                                |   4 +-
 kernel/dma/direct.c                                |   8 +-
 kernel/dma/dummy.c                                 |  21 ++
 kernel/dma/mapping.c                               | 115 ++++++-
 kernel/dma/ops_helpers.c                           |  14 +-
 kernel/dma/pool.c                                  |   4 +-
 kernel/dma/remap.c                                 |   6 +-
 kernel/dma/swiotlb.c                               |   6 +-
 49 files changed, 782 insertions(+), 226 deletions(-)
 create mode 100644 include/linux/iommu-dma.h
 create mode 100644 include/trace/events/dma.h

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-19  7:54 [GIT PULL] dma-mapping updates for Linux 6.12 Christoph Hellwig
@ 2024-09-19  9:40 ` pr-tracker-bot
  2024-09-19 21:41 ` Xi Ruoyao
  1 sibling, 0 replies; 17+ messages in thread
From: pr-tracker-bot @ 2024-09-19  9:40 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Linus Torvalds, linux-kernel, iommu

The pull request you sent on Thu, 19 Sep 2024 09:54:05 +0200:

> git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-6.12-2024-09-19

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/726e2d0cf2bbc14e3bf38491cddda1a56fe18663

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-19  7:54 [GIT PULL] dma-mapping updates for Linux 6.12 Christoph Hellwig
  2024-09-19  9:40 ` pr-tracker-bot
@ 2024-09-19 21:41 ` Xi Ruoyao
  2024-09-20 11:26   ` Christoph Hellwig
  1 sibling, 1 reply; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-19 21:41 UTC (permalink / raw)
  To: Christoph Hellwig, Linus Torvalds; +Cc: linux-kernel, iommu

On Thu, 2024-09-19 at 09:54 +0200, Christoph Hellwig wrote:
> The following changes since commit 47ac09b91befbb6a235ab620c32af719f8208399:
> 
>   Linux 6.11-rc4 (2024-08-18 13:17:27 -0700)
> 
> are available in the Git repository at:
> 
>   git://git.infradead.org/users/hch/dma-mapping.git tags/dma-mapping-6.12-2024-09-19
> 
> for you to fetch changes up to a5fb217f13f74b2af2ab366ffad522bae717f93c:
> 
>   dma-mapping: reflow dma_supported (2024-09-12 16:28:00 +0200)
> 
> ----------------------------------------------------------------
> dma-mapping updates for linux 6.12
> 
>  - support DMA zones for arm64 systems where memory starts at > 4GB
>    (Baruch Siach, Catalin Marinas)
>  - support direct calls into dma-iommu and thus obsolete dma_map_ops for
>    many common configurations (Leon Romanovsky)
>  - add DMA-API tracing (Sean Anderson)
>  - remove the not very useful return value from various dma_set_* APIs
>    (Christoph Hellwig)
>  - misc cleanups and minor optimizations (Chen Y, Yosry Ahmed,
>    Christoph Hellwig)

Hi Christoph and Linus,

This breaks using my laptop camera with gstreamer (with "gst-launch-1.0
v4l2src ! videoconvert ! autovideosink" or GNOME snapshot).

"git bisect" gives:

The first bad commit could be any of:
b5a73bf4d1de95e620bf5f592557b81f71c76f0e
833bd284a45448f04ab9fcd4fdf7ef594d458eed
c42a01264ba1497eb3193c08ff3c2656d98250a6
560a861ab4174b42240157ab5cebe36b8c7bc418
b5c58b2fdc427e7958412ecb2de2804a1f7c1572
334304ac2baca7f3e821c47cf5129d90e7a6b1e6

(I had to use "git bisect skip" several times because I encountered
kernel panic on boot at some revisions.)

Reverting the merge fixes the issue.  I'm not sure if this is related to
the camera model (I can borrow another camera to test tomorrow).

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-19 21:41 ` Xi Ruoyao
@ 2024-09-20 11:26   ` Christoph Hellwig
  2024-09-20 14:06     ` Christoph Hellwig
  0 siblings, 1 reply; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-20 11:26 UTC (permalink / raw)
  To: Xi Ruoyao; +Cc: Christoph Hellwig, Linus Torvalds, linux-kernel, iommu

On Fri, Sep 20, 2024 at 05:41:51AM +0800, Xi Ruoyao wrote:
> This breaks using my laptop camera with gstreamer (with "gst-launch-1.0
> v4l2src ! videoconvert ! autovideosink" or GNOME snapshot).

What camere and driver are you using?

> (I had to use "git bisect skip" several times because I encountered
> kernel panic on boot at some revisions.)

Do you have any traces of that?


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-20 11:26   ` Christoph Hellwig
@ 2024-09-20 14:06     ` Christoph Hellwig
  2024-09-20 17:15       ` Xi Ruoyao
  0 siblings, 1 reply; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-20 14:06 UTC (permalink / raw)
  To: Xi Ruoyao; +Cc: Christoph Hellwig, Linus Torvalds, linux-kernel, iommu

On Fri, Sep 20, 2024 at 04:26:01AM -0700, Christoph Hellwig wrote:
> On Fri, Sep 20, 2024 at 05:41:51AM +0800, Xi Ruoyao wrote:
> > This breaks using my laptop camera with gstreamer (with "gst-launch-1.0
> > v4l2src ! videoconvert ! autovideosink" or GNOME snapshot).
> 
> What camere and driver are you using?

And what architecture and platform are you on? 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-20 14:06     ` Christoph Hellwig
@ 2024-09-20 17:15       ` Xi Ruoyao
  2024-09-20 17:48         ` Xi Ruoyao
  2024-09-21  5:12         ` Christoph Hellwig
  0 siblings, 2 replies; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-20 17:15 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Linus Torvalds, linux-kernel, iommu

On Fri, 2024-09-20 at 07:06 -0700, Christoph Hellwig wrote:
> On Fri, Sep 20, 2024 at 04:26:01AM -0700, Christoph Hellwig wrote:
> > On Fri, Sep 20, 2024 at 05:41:51AM +0800, Xi Ruoyao wrote:
> > > This breaks using my laptop camera with gstreamer (with "gst-
> > > launch-1.0
> > > v4l2src ! videoconvert ! autovideosink" or GNOME snapshot).
> > 
> > What camere and driver are you using?

Bus 003 Device 003: ID 0c45:6366 Microdia Webcam Vitade AF

The driver is uvcvideo.

> And what architecture and platform are you on? 

A x86_64 laptop (with Core i5-11300H CPU).

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-20 17:15       ` Xi Ruoyao
@ 2024-09-20 17:48         ` Xi Ruoyao
  2024-09-21  5:12         ` Christoph Hellwig
  1 sibling, 0 replies; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-20 17:48 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Linus Torvalds, linux-kernel, iommu

On Sat, 2024-09-21 at 01:15 +0800, Xi Ruoyao wrote:
> On Fri, 2024-09-20 at 07:06 -0700, Christoph Hellwig wrote:
> > On Fri, Sep 20, 2024 at 04:26:01AM -0700, Christoph Hellwig wrote:
> > > On Fri, Sep 20, 2024 at 05:41:51AM +0800, Xi Ruoyao wrote:
> > > > This breaks using my laptop camera with gstreamer (with "gst-
> > > > launch-1.0
> > > > v4l2src ! videoconvert ! autovideosink" or GNOME snapshot).
> > > 
> > > What camere and driver are you using?
> 
> Bus 003 Device 003: ID 0c45:6366 Microdia Webcam Vitade AF
> 
> The driver is uvcvideo.

And I just borrowed a different camera:

Bus 003 Device 010: ID 1bcf:2283 Sunplus Innovation Technology Inc. FULL HD webcam

It suffers the same issue so it's unlikely to be related to a specific
camera model.  This camera is also driven by uvcvideo.

v4l2gl from v4l-utils-1.28.1 suffers the issue either, so it's unlikely
to be related to a specific userspace v4l2 program too.

> > And what architecture and platform are you on? 
> 
> A x86_64 laptop (with Core i5-11300H CPU).
> 

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-20 17:15       ` Xi Ruoyao
  2024-09-20 17:48         ` Xi Ruoyao
@ 2024-09-21  5:12         ` Christoph Hellwig
  2024-09-21  7:56           ` Xi Ruoyao
  1 sibling, 1 reply; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-21  5:12 UTC (permalink / raw)
  To: Xi Ruoyao; +Cc: Christoph Hellwig, Linus Torvalds, linux-kernel, iommu

On Sat, Sep 21, 2024 at 01:15:43AM +0800, Xi Ruoyao wrote:
> > > What camere and driver are you using?
> 
> Bus 003 Device 003: ID 0c45:6366 Microdia Webcam Vitade AF
> 
> The driver is uvcvideo.
> 
> > And what architecture and platform are you on? 
> 
> A x86_64 laptop (with Core i5-11300H CPU).

Oh, so it's not arm64, which has the most juicy changes this time
around.

Can you try the following "manual bisect" for me?

First test f69e342eec008e1bab772d3963c3dd9979293e13 to see if that
works.  If it doesn't work come back as I'm a bit lost :)

If it does work, try b5c58b2fdc427e7958412ecb2de2804a1f7c1572 next,
if it doesn't work can you send me your dmesg?

We'll then work from there.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-21  5:12         ` Christoph Hellwig
@ 2024-09-21  7:56           ` Xi Ruoyao
  2024-09-21 13:51             ` Christoph Hellwig
  0 siblings, 1 reply; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-21  7:56 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Linus Torvalds, linux-kernel, iommu

On Fri, 2024-09-20 at 22:12 -0700, Christoph Hellwig wrote:
> On Sat, Sep 21, 2024 at 01:15:43AM +0800, Xi Ruoyao wrote:
> > > > What camere and driver are you using?
> > 
> > Bus 003 Device 003: ID 0c45:6366 Microdia Webcam Vitade AF
> > 
> > The driver is uvcvideo.
> > 
> > > And what architecture and platform are you on? 
> > 
> > A x86_64 laptop (with Core i5-11300H CPU).
> 
> Oh, so it's not arm64, which has the most juicy changes this time
> around.
> 
> Can you try the following "manual bisect" for me?
> 
> First test f69e342eec008e1bab772d3963c3dd9979293e13 to see if that
> works.  If it doesn't work come back as I'm a bit lost :)

Yes it works (kernel boots fine and camera works fine).

> If it does work, try b5c58b2fdc427e7958412ecb2de2804a1f7c1572 next,
> if it doesn't work can you send me your dmesg?

It behaves completely erratically on boot.  I cannot get a full log
because the laptop has no serial output.  And the behavior seems not
deterministic.  I have some transcript of messages I photoed in several
boot attempts though:

Oops: general protection fault, probably non-canonical address 0xf5c1150c090c1cc1: 0000 [#1] PREEMPT SMP

BUG: kernel NULL pointer dereference, address: 0000000000000078

BUG: Bad page map in process systemd-journal pte:150000000b pmd:1641dc067


-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-21  7:56           ` Xi Ruoyao
@ 2024-09-21 13:51             ` Christoph Hellwig
  2024-09-21 17:49               ` Xi Ruoyao
  0 siblings, 1 reply; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-21 13:51 UTC (permalink / raw)
  To: Xi Ruoyao; +Cc: Christoph Hellwig, Linus Torvalds, linux-kernel, iommu

On Sat, Sep 21, 2024 at 03:56:11PM +0800, Xi Ruoyao wrote:
> because the laptop has no serial output.  And the behavior seems not
> deterministic.  I have some transcript of messages I photoed in several
> boot attempts though:

Can you send me the photos of the messages?  Probably best offlist
as the lists don't like attachments.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-21 13:51             ` Christoph Hellwig
@ 2024-09-21 17:49               ` Xi Ruoyao
  2024-09-22  4:58                 ` Christoph Hellwig
  0 siblings, 1 reply; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-21 17:49 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Linus Torvalds, linux-kernel, iommu

[-- Attachment #1: Type: text/plain, Size: 827 bytes --]

On Sat, 2024-09-21 at 06:51 -0700, Christoph Hellwig wrote:
> On Sat, Sep 21, 2024 at 03:56:11PM +0800, Xi Ruoyao wrote:
> > because the laptop has no serial output.  And the behavior seems not
> > deterministic.  I have some transcript of messages I photoed in several
> > boot attempts though:
> 
> Can you send me the photos of the messages?  Probably best offlist
> as the lists don't like attachments.

I've got something better: one attempt to boot
b5c58b2fdc427e7958412ecb2de2804a1f7c1572 succeeded and I got a dmesg
containing some Oops traces.

The camera does *not* work.  And when I rebooted the system it hung
(presumably related to these Oops). 

The dmesg output and kernel config attached.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 34816 bytes --]

[-- Attachment #3: dmesg.txt.gz --]
[-- Type: application/gzip, Size: 25757 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-21 17:49               ` Xi Ruoyao
@ 2024-09-22  4:58                 ` Christoph Hellwig
  2024-09-22  6:56                   ` Xi Ruoyao
  0 siblings, 1 reply; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-22  4:58 UTC (permalink / raw)
  To: Xi Ruoyao; +Cc: Christoph Hellwig, Linus Torvalds, linux-kernel, iommu

On Sun, Sep 22, 2024 at 01:49:35AM +0800, Xi Ruoyao wrote:
> On Sat, 2024-09-21 at 06:51 -0700, Christoph Hellwig wrote:
> > On Sat, Sep 21, 2024 at 03:56:11PM +0800, Xi Ruoyao wrote:
> > > because the laptop has no serial output.  And the behavior seems not
> > > deterministic.  I have some transcript of messages I photoed in several
> > > boot attempts though:
> > 
> > Can you send me the photos of the messages?  Probably best offlist
> > as the lists don't like attachments.
> 
> I've got something better: one attempt to boot
> b5c58b2fdc427e7958412ecb2de2804a1f7c1572 succeeded and I got a dmesg
> containing some Oops traces.
> 
> The camera does *not* work.  And when I rebooted the system it hung
> (presumably related to these Oops). 

So that oops actually comes from the sounds code and looks unrelated
to DMA.  I suspect that oops is what caused your crashes and thus
messed up the DMA bisection.  Can you try to boot with CONFIG_SND
disabled and see where the bisection for the video issues lands?

(Sorry that all this is such a mess)


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-22  4:58                 ` Christoph Hellwig
@ 2024-09-22  6:56                   ` Xi Ruoyao
  2024-09-22  7:19                     ` Christoph Hellwig
  0 siblings, 1 reply; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-22  6:56 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: Linus Torvalds, linux-kernel, iommu

On Sat, 2024-09-21 at 21:58 -0700, Christoph Hellwig wrote:
> On Sun, Sep 22, 2024 at 01:49:35AM +0800, Xi Ruoyao wrote:
> > On Sat, 2024-09-21 at 06:51 -0700, Christoph Hellwig wrote:
> > > On Sat, Sep 21, 2024 at 03:56:11PM +0800, Xi Ruoyao wrote:
> > > > because the laptop has no serial output.  And the behavior seems not
> > > > deterministic.  I have some transcript of messages I photoed in several
> > > > boot attempts though:
> > > 
> > > Can you send me the photos of the messages?  Probably best offlist
> > > as the lists don't like attachments.
> > 
> > I've got something better: one attempt to boot
> > b5c58b2fdc427e7958412ecb2de2804a1f7c1572 succeeded and I got a dmesg
> > containing some Oops traces.
> > 
> > The camera does *not* work.  And when I rebooted the system it hung
> > (presumably related to these Oops). 
> 
> So that oops actually comes from the sounds code and looks unrelated
> to DMA.  I suspect that oops is what caused your crashes and thus
> messed up the DMA bisection.  Can you try to boot with CONFIG_SND
> disabled and see where the bisection for the video issues lands?

With SND disabled, b5c58b2fdc427e7958412ecb2de2804a1f7c1572 boots fine
(no oops), but the camera does not work. 
f69e342eec008e1bab772d3963c3dd9979293e13 boots fine and the camera works
fine.

So the first bad commit is b5c58b2fdc427e7958412ecb2de2804a1f7c1572.


-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-22  6:56                   ` Xi Ruoyao
@ 2024-09-22  7:19                     ` Christoph Hellwig
  2024-09-22 10:32                       ` Leon Romanovsky
  2024-09-22 12:40                       ` Xi Ruoyao
  0 siblings, 2 replies; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-22  7:19 UTC (permalink / raw)
  To: Xi Ruoyao
  Cc: Linus Torvalds, linux-kernel, iommu, Leon Romanovsky,
	Robin Murphy

On Sun, Sep 22, 2024 at 02:56:57PM +0800, Xi Ruoyao wrote:
> With SND disabled, b5c58b2fdc427e7958412ecb2de2804a1f7c1572 boots fine
> (no oops), but the camera does not work. 
> f69e342eec008e1bab772d3963c3dd9979293e13 boots fine and the camera works
> fine.
> 
> So the first bad commit is b5c58b2fdc427e7958412ecb2de2804a1f7c1572.

Thanks a lot for the bisection!

I took a quitck look what is special in the intersection of uvcvideo
and that commit, and what springs to meind is that
uvcvideo is one of the very few users of dma_alloc_noncontiguous, and
while that and the free call for it got converted correctly, the
conversion was missed for the vmap and mmap callbacks.

Can you test the fix below?

diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 3672d619bcb691..2a9fa0c8cc00fe 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -1038,6 +1038,21 @@ static void *iommu_dma_alloc_remap(struct device *dev, size_t size,
 	return NULL;
 }
 
+/*
+ * This is the actual return value from the iommu_dma_alloc_noncontiguous.
+ *
+ * The users of the DMA API should only care about the sg_table, but to make
+ * the DMA-API internal vmaping and freeing easier we stash away the page
+ * array as well (except for the fallback case).  This can go away any time,
+ * e.g. when a vmap-variant that takes a scatterlist comes along.
+ */
+struct dma_sgt_handle {
+	struct sg_table sgt;
+	struct page **pages;
+};
+#define sgt_handle(sgt) \
+	container_of((sgt), struct dma_sgt_handle, sgt)
+
 struct sg_table *iommu_dma_alloc_noncontiguous(struct device *dev, size_t size,
 	       enum dma_data_direction dir, gfp_t gfp, unsigned long attrs)
 {
@@ -1066,6 +1081,24 @@ void iommu_dma_free_noncontiguous(struct device *dev, size_t size,
 	kfree(sh);
 }
 
+void *iommu_dma_vmap_noncontiguous(struct device *dev, size_t size,
+		struct sg_table *sgt)
+{
+	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
+
+	return vmap(sgt_handle(sgt)->pages, count, VM_MAP, PAGE_KERNEL);
+}
+
+int iommu_dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+		size_t size, struct sg_table *sgt)
+{
+	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
+
+	if (vma->vm_pgoff >= count || vma_pages(vma) > count - vma->vm_pgoff)
+		return -ENXIO;
+	return vm_map_pages(vma, sgt_handle(sgt)->pages, count);
+}
+
 void iommu_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
 		size_t size, enum dma_data_direction dir)
 {
diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
index 9668ddf3696e71..b7773201414c27 100644
--- a/include/linux/dma-map-ops.h
+++ b/include/linux/dma-map-ops.h
@@ -24,11 +24,6 @@ struct dma_map_ops {
 			gfp_t gfp);
 	void (*free_pages)(struct device *dev, size_t size, struct page *vaddr,
 			dma_addr_t dma_handle, enum dma_data_direction dir);
-	struct sg_table *(*alloc_noncontiguous)(struct device *dev, size_t size,
-			enum dma_data_direction dir, gfp_t gfp,
-			unsigned long attrs);
-	void (*free_noncontiguous)(struct device *dev, size_t size,
-			struct sg_table *sgt, enum dma_data_direction dir);
 	int (*mmap)(struct device *, struct vm_area_struct *,
 			void *, dma_addr_t, size_t, unsigned long attrs);
 
@@ -206,20 +201,6 @@ static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
 }
 #endif /* CONFIG_DMA_GLOBAL_POOL */
 
-/*
- * This is the actual return value from the ->alloc_noncontiguous method.
- * The users of the DMA API should only care about the sg_table, but to make
- * the DMA-API internal vmaping and freeing easier we stash away the page
- * array as well (except for the fallback case).  This can go away any time,
- * e.g. when a vmap-variant that takes a scatterlist comes along.
- */
-struct dma_sgt_handle {
-	struct sg_table sgt;
-	struct page **pages;
-};
-#define sgt_handle(sgt) \
-	container_of((sgt), struct dma_sgt_handle, sgt)
-
 int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
diff --git a/include/linux/iommu-dma.h b/include/linux/iommu-dma.h
index 1bb55ca1ab79d7..7bf145a52d6a1a 100644
--- a/include/linux/iommu-dma.h
+++ b/include/linux/iommu-dma.h
@@ -44,6 +44,12 @@ struct sg_table *iommu_dma_alloc_noncontiguous(struct device *dev, size_t size,
 		enum dma_data_direction dir, gfp_t gfp, unsigned long attrs);
 void iommu_dma_free_noncontiguous(struct device *dev, size_t size,
 		struct sg_table *sgt, enum dma_data_direction dir);
+void *iommu_dma_vmap_noncontiguous(struct device *dev, size_t size,
+		struct sg_table *sgt);
+#define iommu_dma_vunmap_noncontiguous(dev, vaddr) \
+	vunmap(vaddr);
+int iommu_dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+		size_t size, struct sg_table *sgt);
 void iommu_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
 		size_t size, enum dma_data_direction dir);
 void iommu_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index b839683da0baf0..7911c754d9f42a 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -750,7 +750,6 @@ static struct sg_table *alloc_single_sgt(struct device *dev, size_t size,
 struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size,
 		enum dma_data_direction dir, gfp_t gfp, unsigned long attrs)
 {
-	const struct dma_map_ops *ops = get_dma_ops(dev);
 	struct sg_table *sgt;
 
 	if (WARN_ON_ONCE(attrs & ~DMA_ATTR_ALLOC_SINGLE_PAGES))
@@ -758,9 +757,7 @@ struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size,
 	if (WARN_ON_ONCE(gfp & __GFP_COMP))
 		return NULL;
 
-	if (ops && ops->alloc_noncontiguous)
-		sgt = ops->alloc_noncontiguous(dev, size, dir, gfp, attrs);
-	else if (use_dma_iommu(dev))
+	if (use_dma_iommu(dev))
 		sgt = iommu_dma_alloc_noncontiguous(dev, size, dir, gfp, attrs);
 	else
 		sgt = alloc_single_sgt(dev, size, dir, gfp);
@@ -786,13 +783,10 @@ static void free_single_sgt(struct device *dev, size_t size,
 void dma_free_noncontiguous(struct device *dev, size_t size,
 		struct sg_table *sgt, enum dma_data_direction dir)
 {
-	const struct dma_map_ops *ops = get_dma_ops(dev);
-
 	trace_dma_unmap_sg(dev, sgt->sgl, sgt->orig_nents, dir, 0);
 	debug_dma_unmap_sg(dev, sgt->sgl, sgt->orig_nents, dir);
-	if (ops && ops->free_noncontiguous)
-		ops->free_noncontiguous(dev, size, sgt, dir);
-	else if (use_dma_iommu(dev))
+
+	if (use_dma_iommu(dev))
 		iommu_dma_free_noncontiguous(dev, size, sgt, dir);
 	else
 		free_single_sgt(dev, size, sgt, dir);
@@ -802,37 +796,26 @@ EXPORT_SYMBOL_GPL(dma_free_noncontiguous);
 void *dma_vmap_noncontiguous(struct device *dev, size_t size,
 		struct sg_table *sgt)
 {
-	const struct dma_map_ops *ops = get_dma_ops(dev);
-	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
 
-	if (ops && ops->alloc_noncontiguous)
-		return vmap(sgt_handle(sgt)->pages, count, VM_MAP, PAGE_KERNEL);
+	if (use_dma_iommu(dev))
+		return iommu_dma_vmap_noncontiguous(dev, size, sgt);
+
 	return page_address(sg_page(sgt->sgl));
 }
 EXPORT_SYMBOL_GPL(dma_vmap_noncontiguous);
 
 void dma_vunmap_noncontiguous(struct device *dev, void *vaddr)
 {
-	const struct dma_map_ops *ops = get_dma_ops(dev);
-
-	if (ops && ops->alloc_noncontiguous)
-		vunmap(vaddr);
+	if (use_dma_iommu(dev))
+		iommu_dma_vunmap_noncontiguous(dev, vaddr);
 }
 EXPORT_SYMBOL_GPL(dma_vunmap_noncontiguous);
 
 int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
 		size_t size, struct sg_table *sgt)
 {
-	const struct dma_map_ops *ops = get_dma_ops(dev);
-
-	if (ops && ops->alloc_noncontiguous) {
-		unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
-
-		if (vma->vm_pgoff >= count ||
-		    vma_pages(vma) > count - vma->vm_pgoff)
-			return -ENXIO;
-		return vm_map_pages(vma, sgt_handle(sgt)->pages, count);
-	}
+	if (use_dma_iommu(dev))
+		return iommu_dma_mmap_noncontiguous(dev, vma, size, sgt);
 	return dma_mmap_pages(dev, vma, size, sg_page(sgt->sgl));
 }
 EXPORT_SYMBOL_GPL(dma_mmap_noncontiguous);

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-22  7:19                     ` Christoph Hellwig
@ 2024-09-22 10:32                       ` Leon Romanovsky
  2024-09-22 14:03                         ` Christoph Hellwig
  2024-09-22 12:40                       ` Xi Ruoyao
  1 sibling, 1 reply; 17+ messages in thread
From: Leon Romanovsky @ 2024-09-22 10:32 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Xi Ruoyao, Linus Torvalds, linux-kernel, iommu, Robin Murphy

On Sun, Sep 22, 2024 at 12:19:41AM -0700, Christoph Hellwig wrote:
> On Sun, Sep 22, 2024 at 02:56:57PM +0800, Xi Ruoyao wrote:
> > With SND disabled, b5c58b2fdc427e7958412ecb2de2804a1f7c1572 boots fine
> > (no oops), but the camera does not work. 
> > f69e342eec008e1bab772d3963c3dd9979293e13 boots fine and the camera works
> > fine.
> > 
> > So the first bad commit is b5c58b2fdc427e7958412ecb2de2804a1f7c1572.
> 
> Thanks a lot for the bisection!


Christoph,

Another chunk that is missing according to this BZ
https://bugzilla.kernel.org/show_bug.cgi?id=219292:

diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index b839683da0ba..cf3b89e681a3 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -926,7 +926,7 @@ bool dma_addressing_limited(struct device *dev)
                         dma_get_required_mask(dev))
                return true;

-       if (unlikely(ops))
+       if (unlikely(ops) || use_dma_iommu(dev)
                return false;
        return !dma_direct_all_ram_mapped(dev);
 }

Sorry for such a mess.

Thanks

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-22  7:19                     ` Christoph Hellwig
  2024-09-22 10:32                       ` Leon Romanovsky
@ 2024-09-22 12:40                       ` Xi Ruoyao
  1 sibling, 0 replies; 17+ messages in thread
From: Xi Ruoyao @ 2024-09-22 12:40 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Linus Torvalds, linux-kernel, iommu, Leon Romanovsky,
	Robin Murphy

On Sun, 2024-09-22 at 00:19 -0700, Christoph Hellwig wrote:
> On Sun, Sep 22, 2024 at 02:56:57PM +0800, Xi Ruoyao wrote:
> > With SND disabled, b5c58b2fdc427e7958412ecb2de2804a1f7c1572 boots fine
> > (no oops), but the camera does not work. 
> > f69e342eec008e1bab772d3963c3dd9979293e13 boots fine and the camera works
> > fine.
> > 
> > So the first bad commit is b5c58b2fdc427e7958412ecb2de2804a1f7c1572.
> 
> Thanks a lot for the bisection!
> 
> I took a quitck look what is special in the intersection of uvcvideo
> and that commit, and what springs to meind is that
> uvcvideo is one of the very few users of dma_alloc_noncontiguous, and
> while that and the free call for it got converted correctly, the
> conversion was missed for the vmap and mmap callbacks.
> 
> Can you test the fix below?

Yes with the fix the camera is working fine now.  Thanks!

> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> index 3672d619bcb691..2a9fa0c8cc00fe 100644
> --- a/drivers/iommu/dma-iommu.c
> +++ b/drivers/iommu/dma-iommu.c
> @@ -1038,6 +1038,21 @@ static void *iommu_dma_alloc_remap(struct device *dev, size_t size,
>  	return NULL;
>  }
>  
> +/*
> + * This is the actual return value from the iommu_dma_alloc_noncontiguous.
> + *
> + * The users of the DMA API should only care about the sg_table, but to make
> + * the DMA-API internal vmaping and freeing easier we stash away the page
> + * array as well (except for the fallback case).  This can go away any time,
> + * e.g. when a vmap-variant that takes a scatterlist comes along.
> + */
> +struct dma_sgt_handle {
> +	struct sg_table sgt;
> +	struct page **pages;
> +};
> +#define sgt_handle(sgt) \
> +	container_of((sgt), struct dma_sgt_handle, sgt)
> +
>  struct sg_table *iommu_dma_alloc_noncontiguous(struct device *dev, size_t size,
>  	       enum dma_data_direction dir, gfp_t gfp, unsigned long attrs)
>  {
> @@ -1066,6 +1081,24 @@ void iommu_dma_free_noncontiguous(struct device *dev, size_t size,
>  	kfree(sh);
>  }
>  
> +void *iommu_dma_vmap_noncontiguous(struct device *dev, size_t size,
> +		struct sg_table *sgt)
> +{
> +	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> +
> +	return vmap(sgt_handle(sgt)->pages, count, VM_MAP, PAGE_KERNEL);
> +}
> +
> +int iommu_dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
> +		size_t size, struct sg_table *sgt)
> +{
> +	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> +
> +	if (vma->vm_pgoff >= count || vma_pages(vma) > count - vma->vm_pgoff)
> +		return -ENXIO;
> +	return vm_map_pages(vma, sgt_handle(sgt)->pages, count);
> +}
> +
>  void iommu_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
>  		size_t size, enum dma_data_direction dir)
>  {
> diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
> index 9668ddf3696e71..b7773201414c27 100644
> --- a/include/linux/dma-map-ops.h
> +++ b/include/linux/dma-map-ops.h
> @@ -24,11 +24,6 @@ struct dma_map_ops {
>  			gfp_t gfp);
>  	void (*free_pages)(struct device *dev, size_t size, struct page *vaddr,
>  			dma_addr_t dma_handle, enum dma_data_direction dir);
> -	struct sg_table *(*alloc_noncontiguous)(struct device *dev, size_t size,
> -			enum dma_data_direction dir, gfp_t gfp,
> -			unsigned long attrs);
> -	void (*free_noncontiguous)(struct device *dev, size_t size,
> -			struct sg_table *sgt, enum dma_data_direction dir);
>  	int (*mmap)(struct device *, struct vm_area_struct *,
>  			void *, dma_addr_t, size_t, unsigned long attrs);
>  
> @@ -206,20 +201,6 @@ static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
>  }
>  #endif /* CONFIG_DMA_GLOBAL_POOL */
>  
> -/*
> - * This is the actual return value from the ->alloc_noncontiguous method.
> - * The users of the DMA API should only care about the sg_table, but to make
> - * the DMA-API internal vmaping and freeing easier we stash away the page
> - * array as well (except for the fallback case).  This can go away any time,
> - * e.g. when a vmap-variant that takes a scatterlist comes along.
> - */
> -struct dma_sgt_handle {
> -	struct sg_table sgt;
> -	struct page **pages;
> -};
> -#define sgt_handle(sgt) \
> -	container_of((sgt), struct dma_sgt_handle, sgt)
> -
>  int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
>  		void *cpu_addr, dma_addr_t dma_addr, size_t size,
>  		unsigned long attrs);
> diff --git a/include/linux/iommu-dma.h b/include/linux/iommu-dma.h
> index 1bb55ca1ab79d7..7bf145a52d6a1a 100644
> --- a/include/linux/iommu-dma.h
> +++ b/include/linux/iommu-dma.h
> @@ -44,6 +44,12 @@ struct sg_table *iommu_dma_alloc_noncontiguous(struct device *dev, size_t size,
>  		enum dma_data_direction dir, gfp_t gfp, unsigned long attrs);
>  void iommu_dma_free_noncontiguous(struct device *dev, size_t size,
>  		struct sg_table *sgt, enum dma_data_direction dir);
> +void *iommu_dma_vmap_noncontiguous(struct device *dev, size_t size,
> +		struct sg_table *sgt);
> +#define iommu_dma_vunmap_noncontiguous(dev, vaddr) \
> +	vunmap(vaddr);
> +int iommu_dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
> +		size_t size, struct sg_table *sgt);
>  void iommu_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
>  		size_t size, enum dma_data_direction dir);
>  void iommu_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,
> diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
> index b839683da0baf0..7911c754d9f42a 100644
> --- a/kernel/dma/mapping.c
> +++ b/kernel/dma/mapping.c
> @@ -750,7 +750,6 @@ static struct sg_table *alloc_single_sgt(struct device *dev, size_t size,
>  struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size,
>  		enum dma_data_direction dir, gfp_t gfp, unsigned long attrs)
>  {
> -	const struct dma_map_ops *ops = get_dma_ops(dev);
>  	struct sg_table *sgt;
>  
>  	if (WARN_ON_ONCE(attrs & ~DMA_ATTR_ALLOC_SINGLE_PAGES))
> @@ -758,9 +757,7 @@ struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size,
>  	if (WARN_ON_ONCE(gfp & __GFP_COMP))
>  		return NULL;
>  
> -	if (ops && ops->alloc_noncontiguous)
> -		sgt = ops->alloc_noncontiguous(dev, size, dir, gfp, attrs);
> -	else if (use_dma_iommu(dev))
> +	if (use_dma_iommu(dev))
>  		sgt = iommu_dma_alloc_noncontiguous(dev, size, dir, gfp, attrs);
>  	else
>  		sgt = alloc_single_sgt(dev, size, dir, gfp);
> @@ -786,13 +783,10 @@ static void free_single_sgt(struct device *dev, size_t size,
>  void dma_free_noncontiguous(struct device *dev, size_t size,
>  		struct sg_table *sgt, enum dma_data_direction dir)
>  {
> -	const struct dma_map_ops *ops = get_dma_ops(dev);
> -
>  	trace_dma_unmap_sg(dev, sgt->sgl, sgt->orig_nents, dir, 0);
>  	debug_dma_unmap_sg(dev, sgt->sgl, sgt->orig_nents, dir);
> -	if (ops && ops->free_noncontiguous)
> -		ops->free_noncontiguous(dev, size, sgt, dir);
> -	else if (use_dma_iommu(dev))
> +
> +	if (use_dma_iommu(dev))
>  		iommu_dma_free_noncontiguous(dev, size, sgt, dir);
>  	else
>  		free_single_sgt(dev, size, sgt, dir);
> @@ -802,37 +796,26 @@ EXPORT_SYMBOL_GPL(dma_free_noncontiguous);
>  void *dma_vmap_noncontiguous(struct device *dev, size_t size,
>  		struct sg_table *sgt)
>  {
> -	const struct dma_map_ops *ops = get_dma_ops(dev);
> -	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
>  
> -	if (ops && ops->alloc_noncontiguous)
> -		return vmap(sgt_handle(sgt)->pages, count, VM_MAP, PAGE_KERNEL);
> +	if (use_dma_iommu(dev))
> +		return iommu_dma_vmap_noncontiguous(dev, size, sgt);
> +
>  	return page_address(sg_page(sgt->sgl));
>  }
>  EXPORT_SYMBOL_GPL(dma_vmap_noncontiguous);
>  
>  void dma_vunmap_noncontiguous(struct device *dev, void *vaddr)
>  {
> -	const struct dma_map_ops *ops = get_dma_ops(dev);
> -
> -	if (ops && ops->alloc_noncontiguous)
> -		vunmap(vaddr);
> +	if (use_dma_iommu(dev))
> +		iommu_dma_vunmap_noncontiguous(dev, vaddr);
>  }
>  EXPORT_SYMBOL_GPL(dma_vunmap_noncontiguous);
>  
>  int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
>  		size_t size, struct sg_table *sgt)
>  {
> -	const struct dma_map_ops *ops = get_dma_ops(dev);
> -
> -	if (ops && ops->alloc_noncontiguous) {
> -		unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
> -
> -		if (vma->vm_pgoff >= count ||
> -		    vma_pages(vma) > count - vma->vm_pgoff)
> -			return -ENXIO;
> -		return vm_map_pages(vma, sgt_handle(sgt)->pages, count);
> -	}
> +	if (use_dma_iommu(dev))
> +		return iommu_dma_mmap_noncontiguous(dev, vma, size, sgt);
>  	return dma_mmap_pages(dev, vma, size, sg_page(sgt->sgl));
>  }
>  EXPORT_SYMBOL_GPL(dma_mmap_noncontiguous);

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [GIT PULL] dma-mapping updates for Linux 6.12
  2024-09-22 10:32                       ` Leon Romanovsky
@ 2024-09-22 14:03                         ` Christoph Hellwig
  0 siblings, 0 replies; 17+ messages in thread
From: Christoph Hellwig @ 2024-09-22 14:03 UTC (permalink / raw)
  To: Leon Romanovsky
  Cc: Christoph Hellwig, Xi Ruoyao, Linus Torvalds, linux-kernel, iommu,
	Robin Murphy

On Sun, Sep 22, 2024 at 01:32:36PM +0300, Leon Romanovsky wrote:
> Another chunk that is missing according to this BZ
> https://bugzilla.kernel.org/show_bug.cgi?id=219292:


Can you send me a formal patch for this so that I can get a pull request
to Linus by Monday night or Tuesday morning?

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-09-22 14:03 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-19  7:54 [GIT PULL] dma-mapping updates for Linux 6.12 Christoph Hellwig
2024-09-19  9:40 ` pr-tracker-bot
2024-09-19 21:41 ` Xi Ruoyao
2024-09-20 11:26   ` Christoph Hellwig
2024-09-20 14:06     ` Christoph Hellwig
2024-09-20 17:15       ` Xi Ruoyao
2024-09-20 17:48         ` Xi Ruoyao
2024-09-21  5:12         ` Christoph Hellwig
2024-09-21  7:56           ` Xi Ruoyao
2024-09-21 13:51             ` Christoph Hellwig
2024-09-21 17:49               ` Xi Ruoyao
2024-09-22  4:58                 ` Christoph Hellwig
2024-09-22  6:56                   ` Xi Ruoyao
2024-09-22  7:19                     ` Christoph Hellwig
2024-09-22 10:32                       ` Leon Romanovsky
2024-09-22 14:03                         ` Christoph Hellwig
2024-09-22 12:40                       ` Xi Ruoyao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox