[PATCH 0/5] firewire: ohci: invoke all AT packet callbacks from a workqueue

Takashi Sakamoto posted 5 patches 5 days, 10 hours ago
drivers/firewire/core-card.c        |   7 +-
drivers/firewire/core-transaction.c |  22 ++---
drivers/firewire/ohci.c             | 119 ++++++++++++++++++++++------
include/linux/firewire.h            |   5 +-
4 files changed, 107 insertions(+), 46 deletions(-)
[PATCH 0/5] firewire: ohci: invoke all AT packet callbacks from a workqueue
Posted by Takashi Sakamoto 5 days, 10 hours ago
Hi,

For local-to-local asynchronous transactions, a shortcut is implemented to
handle the relevant packets in the request initiator's context instead of
queueing them to the hardware. This may seem beneficial since the
transaction completes immediately within the software stack.

However, this has the drawback that the context in which the callback
handler is invoked is unspecified, as it runs in the initiator's context.
This makes it difficult to implement the callback handlers, especially
address handlers.

This patchset addresses this issue by using a workqueue. All packet
callbacks are now invoked in process context.

Takashi Sakamoto (5):
  firewire: ohci: use workqueue to handle error case of AT
    request/response packet queueing
  firewire: ohci: use workqueue to handle local AT request/response
    packets
  firewire: ohci: refactor branches in at_context_transmit()
  firewire: core: use spinlock without irqsave for card split_timeout
    member
  firewire: core: use spinlock without irqsave for card topology_map
    member

 drivers/firewire/core-card.c        |   7 +-
 drivers/firewire/core-transaction.c |  22 ++---
 drivers/firewire/ohci.c             | 119 ++++++++++++++++++++++------
 include/linux/firewire.h            |   5 +-
 4 files changed, 107 insertions(+), 46 deletions(-)


base-commit: a20545fbf9226591017fc371bdfb1bfd490b0e0b
-- 
2.53.0
Re: [PATCH 0/5] firewire: ohci: invoke all AT packet callbacks from a workqueue
Posted by Takashi Sakamoto 4 days, 14 hours ago
On Sat, Sep 19, 2026 at 08:50:12PM +0900, Takashi Sakamoto wrote:
> Hi,
> 
> For local-to-local asynchronous transactions, a shortcut is implemented to
> handle the relevant packets in the request initiator's context instead of
> queueing them to the hardware. This may seem beneficial since the
> transaction completes immediately within the software stack.
> 
> However, this has the drawback that the context in which the callback
> handler is invoked is unspecified, as it runs in the initiator's context.
> This makes it difficult to implement the callback handlers, especially
> address handlers.
> 
> This patchset addresses this issue by using a workqueue. All packet
> callbacks are now invoked in process context.
> 
> Takashi Sakamoto (5):
>   firewire: ohci: use workqueue to handle error case of AT
>     request/response packet queueing
>   firewire: ohci: use workqueue to handle local AT request/response
>     packets
>   firewire: ohci: refactor branches in at_context_transmit()
>   firewire: core: use spinlock without irqsave for card split_timeout
>     member
>   firewire: core: use spinlock without irqsave for card topology_map
>     member
> 
>  drivers/firewire/core-card.c        |   7 +-
>  drivers/firewire/core-transaction.c |  22 ++---
>  drivers/firewire/ohci.c             | 119 ++++++++++++++++++++++------
>  include/linux/firewire.h            |   5 +-
>  4 files changed, 107 insertions(+), 46 deletions(-)

Applied to for-next branch.


Regards

Takashi Sakamoto