lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [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

Powered by Openwall GNU/*/Linux Powered by OpenVZ