[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240921031421.GA227826@workstation.local>
Date: Sat, 21 Sep 2024 12:14:21 +0900
From: Takashi Sakamoto <o-takashi@...amocchi.jp>
To: torvalds@...ux-foundation.org
Cc: linux-kernel@...r.kernel.org, linux1394-devel@...ts.sourceforge.net,
tiwai@...e.de
Subject: [GIT PULL] firewire updates for v6.12
Hi Linus,
Please pull FireWire subsystem updates for v6.11.
This updates includes a significant change to the processing context for
isochronous packets. Hopefully, many developers will test it before the
official release.
I hope you have a pleasant trip ;)
The following changes since commit de9c2c66ad8e787abec7c9d7eff4f8c3cdd28aed:
Linux 6.11-rc2 (2024-08-04 13:50:53 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git tags/firewire-updates-6.12
for you to fetch changes up to f1cba5212e252243a539e079813bc96fbf53e241:
firewire: core: rename cause flag of tracepoints event (2024-09-12 22:30:38 +0900)
----------------------------------------------------------------
firewire updates for v6.12
The batch of changes includes the followwing:
- Replacing tasklet with usual workqueue for isochronous context
- Replacing IDR with XArray
- Utilizing guard macro where possible
- Printing deprecation warning when enabling debug parameter of
firewire-ohci module
Additionally, it includes a single patch for sound subsystem which the
subsystem maintainer acked:
- Switching to nonatomic PCM operation
In FireWire subsystem, tasklet has been used as the bottom half of 1394
OHCi hardIRQ so long. In the recent kernel updates, BH workqueue has
been available, and some developers have proposed replacing tasklet with
BH workqueue. While it is fortunate that developers are still considering
the legacy subsystem, a simple replacement is not necessarily suitable.
As a first step towards dropping tasklet, I've investigated the
feasibility for 1394 OHCI isochronous context, and concluded that usual
workqueue is available. In the context, the batch of packets is processed
in the specific queue, thus the timing jitter caused by task scheduling is
not so critical. Additionally, DMA transmission can be scheduled
per-packet basis, therefore the context can be sleep between the operation
of transmissions. Furthermore, in-kernel protocol implementation involves
some CPU-bound tasks, which can sometimes consumes CPU time so long. These
characteristics suggest that usual workqueue is suitable, through BH
workqueues are not.
The replacement with usual workqueue allows unit drivers to process the
content of packets in non-atomic context. It brings some reliefs to some
drivers in sound subsystem that spin-lock is not mandatory anymore during
isochronous packet processing.
----------------------------------------------------------------
Takashi Sakamoto (55):
firewire: ohci: use TCODE_LINK_INTERNAL consistently
firewire: ohci: minor code refactoring to localize text table
firewire: core: use common helper function to serialize phy configuration packet
firewire: core: utilize kref to maintain fw_node with reference counting
firewire: ohci: add static inline functions to serialize/deserialize data of AT DMA
firewire: ohci: use static inline functions to serialize data of AT DMA
firewire: ohci: add static inline functions to serialize/deserialize data of IT DMA
firewire: ohci: use static inline functions to serialize data of IT DMA
firewire: core: use guard macro to maintain static packet data for phy configuration
firewire: core: use guard macro to maintain the list of card
firewire: core: use guard macro to maintain the list of cdev clients
firewire: ohci: use guard macro to serialize accesses to phy registers
firewire: core: use guard macro to maintain RCU scope for transaction address handler
firewire: core: use guard macro to access to IDR for fw_device
firewire: core: use guard macro to maintain the list of address handler for transaction
firewire: core: use guard macro to disable local IRQ
firewire: core: use guard macro to maintain list of events for userspace clients
firewire: core: use guard macro to maintain IDR of isochronous resources for userspace clients
firewire: core: use guard macro to maintain isochronous context for userspace client
firewire: core: use guard macro to maintain list of receivers for phy configuration packets
firewire: core: use guard macro to maintain list of asynchronous transaction
firewire: core: use guard macro to maintain properties of fw_card
firewire: ohci: use guard macro to maintain bus time
firewire: ohci: use guard macro to maintain image of configuration ROM
firewire: ohci: use guard macro to serialize operations for isochronous contexts
firewire: core: correct range of block for case of switch statement
firewire: core: replace IDR with XArray to maintain fw_device
firewire: core: use lock in Xarray instead of local R/W semaphore
firewire: core: minor code refactoring to release client resource
firewire: core: add helper functions to convert to parent resource structure
firewire: core: add helper function to detect data of iso resource structure
firewire: core: code refactoring to use idr_for_each_entry() macro instead of idr_for_each() function
firewire: core: use xarray instead of idr to maintain client resource
firewire: ohci: use helper macro for compiler aligned attribute
firewire: ohci: remove unused wrapper macro for dev_info()
firewire: core/ohci: minor refactoring for computation of configuration ROM size
firewire: ohci: fix error path to detect initiated reset in TI TSB41BA3D phy
firewire: core: update fw_device outside of device_find_child()
firewire: ohci: deprecate debug parameter
firewire: ohci: obsolete direct usage of printk_ratelimit()
firewire: core: allocate workqueue to handle isochronous contexts in card
firewire: core: add local API to queue work item to workqueue specific to isochronous contexts
firewire: ohci: operate IT/IR events in sleepable work process instead of tasklet softIRQ
firewire: core: non-atomic memory allocation for isochronous event to user client
ALSA: firewire: use nonatomic PCM operation
firewire: core: use WARN_ON_ONCE() to avoid superfluous dumps
firewire: core: expose kernel API to schedule work item to process isochronous context
firewire: core: fulfill documentation of fw_iso_context_flush_completions()
firewire: core: move workqueue handler from 1394 OHCI driver to core function
firewire: core: use mutex to coordinate concurrent calls to flush completions
Revert "firewire: core: use mutex to coordinate concurrent calls to flush completions"
Revert "firewire: core: move workqueue handler from 1394 OHCI driver to core function"
firewire: core: add helper function to retire descriptors
firewire: core: update documentation of kernel APIs for flushing completions
firewire: core: rename cause flag of tracepoints event
Documentation/driver-api/firewire.rst | 2 +
drivers/firewire/core-card.c | 91 ++++++++++++++++++-------------
drivers/firewire/core-cdev.c | 400 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------
drivers/firewire/core-device.c | 202 +++++++++++++++++++++++++++++++-------------------------------------
drivers/firewire/core-iso.c | 49 +++++++++++++++--
drivers/firewire/core-topology.c | 7 +--
drivers/firewire/core-transaction.c | 151 +++++++++++++++++++++------------------------------
drivers/firewire/core.h | 28 +++++++---
drivers/firewire/ohci-serdes-test.c | 66 +++++++++++++++++++++++
drivers/firewire/ohci.c | 574 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------
drivers/firewire/ohci.h | 200 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
include/linux/firewire.h | 22 ++++++++
include/trace/events/firewire.h | 4 +-
sound/firewire/amdtp-stream.c | 34 +++++++++---
sound/firewire/bebob/bebob_pcm.c | 1 +
sound/firewire/dice/dice-pcm.c | 1 +
sound/firewire/digi00x/digi00x-pcm.c | 1 +
sound/firewire/fireface/ff-pcm.c | 1 +
sound/firewire/fireworks/fireworks_pcm.c | 1 +
sound/firewire/isight.c | 1 +
sound/firewire/motu/motu-pcm.c | 1 +
sound/firewire/oxfw/oxfw-pcm.c | 1 +
sound/firewire/tascam/tascam-pcm.c | 1 +
23 files changed, 1065 insertions(+), 774 deletions(-)
Regards
Takashi Sakamoto
Powered by blists - more mailing lists