[GIT PULL] firewire updates for 7.0-rc1

From: Takashi Sakamoto

Date: Wed Feb 11 2026 - 00:29:02 EST


Hi Linus,
(C.C.ed to linux-sound, Jens Wiklander, and Jason Gunthorpe)

Please pull firewire changes for 7.0. It includes the following changes:

- Refactor page allocation dedicated to 1394 OHCI IR/IT/AR DMA contexts
- Allocate variable-sized buffer for isochronous context header
- Including a small change in sound subsystem

This subsystem has been a long-standing, single user of dma_alloc_pages().
Recently, TEE subsystem added usage in a commit
ab09dd6d9201 ("tee: add tee_shm_alloc_dma_mem()"), and it still remains.
I think the kernel API can be avoided in direct calls and encapsulated for
the convenience of DMA mapping layer developers.


Thanks

Takashi Sakamoto
(on a national holiday in Japan)

---

The following changes since commit 8f0b4cce4481fb22653697cced8d0d04027cb1e8:

Linux 6.19-rc1 (2025-12-14 16:05:07 +1200)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git tags/firewire-updates-7.0

for you to fetch changes up to 6b617317e5bc95e9962a712314ae0c4b7a4d5cc3:

ALSA: firewire: remove PCM buffer size constraint from isoc context header (2026-01-18 17:18:48 +0900)

----------------------------------------------------------------
firewire updates for v7.0

This update includes the following changes.

- Refactor page allocation dedicated to 1394 OHCI IR/IT/AR DMA contexts

Although 1394 OHCI specification does not impose any restriction on
the memory size dedicated to these DMA contexts, 1394 OHCI PCI driver
allocates pages for convenience when mapping them into either kernel
space or userspace VMA. The driver previously used dma_alloc_pages()
for both page allocation and mapping creation, even though this kernel
API is rarely used. Following discussions questioning the page-oriented
kernel API in the DMA layer, the driver has been refactored to avoid
using this API. In addition, the use of private members in the
allocated pages has been removed following long-standing concern.

- Allocate variable-sized buffer for isochronous context header

1394 OHCI PCI driver previously allocated a single page for isochronous
context header. As a result, the buffer size for the header was fixed
to PAGE_SIZE, which imposed a limitation on IEC 61883-1/6 packet
streaming engine. Consequently, the ALSA PCM devices provided by
drivers for audio and music units in IEEE 1394 bus were constrained in
the maximum size of buffer period (64 ms in most cases). This limitation
is resolved by dynamically allocating the header buffer with an
arbitrary size.

----------------------------------------------------------------
Takashi Sakamoto (18):
firewire: core: move private function declaration from public header to internal header
firewire: core: use mutex instead of spinlock for client isochronous context
firewire: core: code refactoring with cleanup function for isoc pages
firewire: core: use common kernel API to allocate and release a batch of pages
firewire: core: stop using page private to store DMA mapping address
firewire: ohci: use MAX macro to guarantee minimum count of pages for AR contexts
firewire: ohci: split page allocation from dma mapping
firewire: ohci: stop using page private to store DMA mapping address
firewire: ohci: fix index of pages for dma address to 1394 OHCI IT context
firewire: core: add function variants for isochronous context creation
firewire: ohci: refactor isoc single-channel state using a union
firewire: ohci: code refactoring to use union for isoc multiple channel state
firewire: ohci: use cleanup helper for isoc context header allocation
firewire: core: add flags member for isochronous context structure
firewire: ohci: allocate isoc context header by kvmalloc()
firewire: core: provide isoc header buffer size outside card driver
firewire: core: add fw_iso_context_create() variant with header storage size
ALSA: firewire: remove PCM buffer size constraint from isoc context header

drivers/firewire/core-card.c | 4 +-
drivers/firewire/core-cdev.c | 71 +++++--------
drivers/firewire/core-iso.c | 102 +++++++++---------
drivers/firewire/core.h | 14 ++-
drivers/firewire/ohci.c | 234 ++++++++++++++++++++++++------------------
include/linux/firewire.h | 36 +++++--
sound/firewire/amdtp-stream.c | 31 ++----
7 files changed, 266 insertions(+), 226 deletions(-)