All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] firewire: assist unit driver to compute packet timestamp
@ 2021-12-02 11:34 ` Takashi Sakamoto
  0 siblings, 0 replies; 12+ messages in thread
From: Takashi Sakamoto @ 2021-12-02 11:34 UTC (permalink / raw)
  To: stefanr; +Cc: linux1394-devel, linux-kernel, clemens, alsa-devel, marcan

Hi,

In 1394 OHCI specification, each descriptor of IR/IT/AR/AT DMA context
has timeStamp field. The value of timeStamp field express the time in
which the controller accept packet. The resolution of value is isochronous
cycle count (8,000 Hz) with second up to 7.

I have a plan to use the value of timeStamp field for ALSA firewire stack
so that userspace ALSA PCM/Rawmidi applications can get converted timestamp
(ktime) for PCM frame/MIDI message. The timestamp can ideally express
finer granularity than the time to invoke IRQ handler (and co).

Current implementation of Linux FireWire subsystem delivers the value of
timeStamp field to unit driver for IR/IT/AT DMA context, but not for AR
DMA context. Additionally, the way to refer to Isochronous Cycle Timer
Register in MMIO region of 1394 OHCI controller is transaction to local
node. It includes overhead of transaction and it's preferable to add
less-overhead way available in any type of IRQ context.

This patchset adds two functions exposed in kernel space:

 * fw_card_read_cycle_time()
    * allow unit driver to access to CYCLE_TIME register in MMIO region
      without initiate transaction
 * fw_request_get_timestamp()
    * allow unit driver to get timestamp of request packet inner request
      handler

I note that Hector Martin found kernel null pointer dereference during
process to remove PCI card and has posted a patch:

 * https://lore.kernel.org/lkml/20211027113130.8802-1-marcan@marcan.st/

His patch is included in the series with my comment for relevant commit
20802224298c ("firewire: core: add forgotten dummy driver methods, remove
unused ones"). The patch is required since unit driver can refer to dummy
driver between removal callback of PCI subsystem and removal callback of
FireWire subsystem.

Hector Martin (1):
  firewire: Add dummy read_csr/write_csr functions

Takashi Sakamoto (2):
  firewire: add kernel API to access CYCLE_TIME register
  firewire: add kernel API to access packet structure in request
    structure for AR context

 drivers/firewire/core-card.c        | 39 +++++++++++++++++++++++++++++
 drivers/firewire/core-cdev.c        |  6 +++--
 drivers/firewire/core-transaction.c | 18 +++++++++++++
 include/linux/firewire.h            |  3 +++
 4 files changed, 64 insertions(+), 2 deletions(-)

-- 
2.32.0


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

end of thread, other threads:[~2022-01-12  7:47 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-02 11:34 [PATCH 0/3] firewire: assist unit driver to compute packet timestamp Takashi Sakamoto
2021-12-02 11:34 ` Takashi Sakamoto
2021-12-02 11:34 ` [PATCH 1/3] firewire: Add dummy read_csr/write_csr functions Takashi Sakamoto
2021-12-02 11:34   ` Takashi Sakamoto
2021-12-02 11:34 ` [PATCH 2/3] firewire: add kernel API to access CYCLE_TIME register Takashi Sakamoto
2021-12-02 11:34   ` Takashi Sakamoto
2021-12-02 11:34 ` [PATCH 3/3] firewire: add kernel API to access packet structure in request structure for AR context Takashi Sakamoto
2021-12-02 11:34   ` Takashi Sakamoto
2021-12-21 10:54 ` [PATCH 0/3] firewire: assist unit driver to compute packet timestamp Takashi Sakamoto
2022-01-07 11:01   ` Takashi Sakamoto
2022-01-12  3:51     ` Takashi Sakamoto
2022-01-12  7:47       ` Hector Martin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.