mbox series

[GIT,PULL] hte: New subsystem for v5.19-rc1

Message ID 20220603113908.78777-1-thierry.reding@gmail.com
State Accepted
Headers show
Series [GIT,PULL] hte: New subsystem for v5.19-rc1 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git tags/hte/for-5.19-rc1

Message

Thierry Reding June 3, 2022, 11:39 a.m. UTC
Hi Linus,

The following changes since commit 3123109284176b1532874591f7c81f3837bbdc17:

  Linux 5.18-rc1 (2022-04-03 14:08:21 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git tags/hte/for-5.19-rc1

for you to fetch changes up to 5dad4eccd2b4316a84209603a28d34c6346392bb:

  dt-bindings: timestamp: Correct id path (2022-06-02 15:56:59 +0200)

This is a new subsystem that introduces support for associating
hardware timestamps with certain events (such as GPIOs and IRQs). Dipen
has worked on this for a couple of months and it's been in linux-next
for a couple of weeks. We think it's now ready for inclusion in v5.19.

Dipen's the official maintainer, but I volunteered to help out with the
logistics while he gets set up with the necessary key signatures and a
kernel.org account. Hopefully this will all be done by the next merge
window, enabling Dipen to take over.

Apologies for this being a little late, but there were a few last-minute
tweaks in the device tree bindings that I wanted to give an extra day in
linux-next just to make sure. The impact of this should be minimal since
it is all new code.

Thanks,
Thierry

----------------------------------------------------------------
hte: New subsystem for v5.19-rc1

This contains the new HTE subsystem that has been in the works for a
couple of months now. The infrastructure provided allows for drivers to
register as hardware timestamp providers, while consumers will be able
to request events that they are interested in (such as GPIOs and IRQs)
to be timestamped by the hardware providers.

Note that this currently supports only one provider, but there seems to
be enough interest in this functionality and we expect to see more
drivers added once this is merged.

----------------------------------------------------------------
Dan Carpenter (2):
      hte: Fix off by one in hte_push_ts_ns()
      hte: Uninitialized variable in hte_ts_get()

Dipen Patel (12):
      Documentation: Add HTE subsystem guide
      drivers: Add hardware timestamp engine (HTE) subsystem
      hte: Add Tegra194 HTE kernel provider
      dt-bindings: Add HTE bindings
      gpiolib: Add HTE support
      gpio: tegra186: Add HTE support
      gpiolib: cdev: Add hardware timestamp clock type
      tools: gpio: Add new hardware clock type
      hte: Add Tegra HTE test driver
      MAINTAINERS: Add HTE Subsystem
      dt-bindings: Renamed hte directory to timestamp
      dt-bindings: timestamp: Correct id path

Jiapeng Chong (1):
      hte: Remove unused including <linux/version.h>

Yang Yingliang (1):
      hte: Fix possible use-after-free in tegra_hte_test_remove()

 .../timestamp/hardware-timestamps-common.yaml      |  29 +
 .../bindings/timestamp/hte-consumer.yaml           |  39 +
 .../bindings/timestamp/nvidia,tegra194-hte.yaml    |  88 ++
 Documentation/hte/hte.rst                          |  79 ++
 Documentation/hte/index.rst                        |  22 +
 Documentation/hte/tegra194-hte.rst                 |  49 ++
 Documentation/index.rst                            |   1 +
 MAINTAINERS                                        |   8 +
 drivers/Kconfig                                    |   2 +
 drivers/Makefile                                   |   1 +
 drivers/gpio/gpio-tegra186.c                       |  81 +-
 drivers/gpio/gpiolib-cdev.c                        | 252 +++++-
 drivers/gpio/gpiolib.c                             |  58 ++
 drivers/gpio/gpiolib.h                             |   1 +
 drivers/hte/Kconfig                                |  33 +
 drivers/hte/Makefile                               |   3 +
 drivers/hte/hte-tegra194-test.c                    | 238 ++++++
 drivers/hte/hte-tegra194.c                         | 730 ++++++++++++++++
 drivers/hte/hte.c                                  | 947 +++++++++++++++++++++
 include/linux/gpio/consumer.h                      |  16 +-
 include/linux/gpio/driver.h                        |  10 +
 include/linux/hte.h                                | 271 ++++++
 include/uapi/linux/gpio.h                          |   3 +
 tools/gpio/gpio-event-mon.c                        |   6 +-
 24 files changed, 2930 insertions(+), 37 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/timestamp/hardware-timestamps-common.yaml
 create mode 100644 Documentation/devicetree/bindings/timestamp/hte-consumer.yaml
 create mode 100644 Documentation/devicetree/bindings/timestamp/nvidia,tegra194-hte.yaml
 create mode 100644 Documentation/hte/hte.rst
 create mode 100644 Documentation/hte/index.rst
 create mode 100644 Documentation/hte/tegra194-hte.rst
 create mode 100644 drivers/hte/Kconfig
 create mode 100644 drivers/hte/Makefile
 create mode 100644 drivers/hte/hte-tegra194-test.c
 create mode 100644 drivers/hte/hte-tegra194.c
 create mode 100644 drivers/hte/hte.c
 create mode 100644 include/linux/hte.h

Comments

Linus Torvalds June 4, 2022, 4:37 a.m. UTC | #1
On Fri, Jun 3, 2022 at 4:39 AM Thierry Reding <thierry.reding@gmail.com> wrote:
>
> Note that this currently supports only one provider, but there seems to
> be enough interest in this functionality and we expect to see more
> drivers added once this is merged.

So the "one provider" worries me, but the part that really doesn't
make me all warm and fuzzy is how this came in at the end of the merge
window.

And it's a bit odd in other ways.

The DT bindings got the comment "why call it 'hardware timestamp'"
when no other case seems sane.

So the DT bindings got renamed. So now part of the code calls it "hte"
(which nobody understands outside of the hte community that is
apparently one single device: Tegra) and part of the code calls it
"timestamp".

Hmm.

             Linus
Linus Walleij June 4, 2022, 8:11 a.m. UTC | #2
On Sat, Jun 4, 2022 at 6:38 AM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> On Fri, Jun 3, 2022 at 4:39 AM Thierry Reding <thierry.reding@gmail.com> wrote:
> >
> > Note that this currently supports only one provider, but there seems to
> > be enough interest in this functionality and we expect to see more
> > drivers added once this is merged.
>
> So the "one provider" worries me, but the part that really doesn't
> make me all warm and fuzzy is how this came in at the end of the merge
> window.

Another provider did come up, and were requested (by me) to work with
Dipen on the subsystem in august last year, that was the Intel PMC in the
Elkhart and Tiger Lake platforms and forward:
https://patchwork.ozlabs.org/project/linux-gpio/cover/20210824164801.28896-1-lakshmi.sowjanya.d@intel.com/#2766453

[I added the other Intel people on that submission to CC]

Intel wanted to put this into the GPIO subsystem and what I saw as maintainer
was that this is a general problem and general purpose (binary) I/O just isn't
going to be the only thing they timestamp. Other events will be for IIO and
hwmon or whatever. They have been
requested to contribute to Dipens work the recent 9 months ... so... well I
understand people can get other priorities and stuff.

Dipen did the right thing and created a separate subsystem that is a provider
to GPIO and can be a provider to things like IIO as well, which is what
it needs to be because for things like sensor fusion and industrial control
systems in general precise timestamps are
of uttermost importance. And IIO handle a lot of sensors.

> The DT bindings got the comment "why call it 'hardware timestamp'"
> when no other case seems sane.

Intel is talking about "input timestamping", admittedly it is done in hardware
but the point is to timestamp input I/O events.

> So the DT bindings got renamed. So now part of the code calls it "hte"
> (which nobody understands outside of the hte community that is
> apparently one single device: Tegra) and part of the code calls it
> "timestamp".

HTE is "hardware timestamping engine", we have hwmon, hwspinlock,
hwtracing so maybe hwstamping would be a more natural name then?

Yours,
Linus Walleij
Linus Torvalds June 5, 2022, 4:16 p.m. UTC | #3
On Sat, Jun 4, 2022 at 1:11 AM Linus Walleij <linus.walleij@linaro.org> wrote:
>
> Another provider did come up, and were requested (by me) to work with
> Dipen on the subsystem in august last year, that was the Intel PMC in the
> Elkhart and Tiger Lake platforms and forward

Ok, I've pulled this now, even if I don't love the "hte" name. I
despise specialized TLA's that aren't some obvious "if you're a kernel
developer, you know what this means".

                       Linus
Thierry Reding June 5, 2022, 4:27 p.m. UTC | #4
On Sat, Jun 04, 2022 at 10:11:17AM +0200, Linus Walleij wrote:
> On Sat, Jun 4, 2022 at 6:38 AM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> > On Fri, Jun 3, 2022 at 4:39 AM Thierry Reding <thierry.reding@gmail.com> wrote:
> > >
> > > Note that this currently supports only one provider, but there seems to
> > > be enough interest in this functionality and we expect to see more
> > > drivers added once this is merged.
> >
> > So the "one provider" worries me, but the part that really doesn't
> > make me all warm and fuzzy is how this came in at the end of the merge
> > window.
> 
> Another provider did come up, and were requested (by me) to work with
> Dipen on the subsystem in august last year, that was the Intel PMC in the
> Elkhart and Tiger Lake platforms and forward:
> https://patchwork.ozlabs.org/project/linux-gpio/cover/20210824164801.28896-1-lakshmi.sowjanya.d@intel.com/#2766453
> 
> [I added the other Intel people on that submission to CC]
> 
> Intel wanted to put this into the GPIO subsystem and what I saw as maintainer
> was that this is a general problem and general purpose (binary) I/O just isn't
> going to be the only thing they timestamp. Other events will be for IIO and
> hwmon or whatever. They have been
> requested to contribute to Dipens work the recent 9 months ... so... well I
> understand people can get other priorities and stuff.
> 
> Dipen did the right thing and created a separate subsystem that is a provider
> to GPIO and can be a provider to things like IIO as well, which is what
> it needs to be because for things like sensor fusion and industrial control
> systems in general precise timestamps are
> of uttermost importance. And IIO handle a lot of sensors.
> 
> > The DT bindings got the comment "why call it 'hardware timestamp'"
> > when no other case seems sane.
> 
> Intel is talking about "input timestamping", admittedly it is done in hardware
> but the point is to timestamp input I/O events.
> 
> > So the DT bindings got renamed. So now part of the code calls it "hte"
> > (which nobody understands outside of the hte community that is
> > apparently one single device: Tegra) and part of the code calls it
> > "timestamp".
> 
> HTE is "hardware timestamping engine", we have hwmon, hwspinlock,
> hwtracing so maybe hwstamping would be a more natural name then?

Another alternative would be just drivers/timestamp since pretty much
anything in drivers/ is for "hw".

Thierry
Thierry Reding June 5, 2022, 4:32 p.m. UTC | #5
On Sun, Jun 05, 2022 at 09:16:21AM -0700, Linus Torvalds wrote:
> On Sat, Jun 4, 2022 at 1:11 AM Linus Walleij <linus.walleij@linaro.org> wrote:
> >
> > Another provider did come up, and were requested (by me) to work with
> > Dipen on the subsystem in august last year, that was the Intel PMC in the
> > Elkhart and Tiger Lake platforms and forward
> 
> Ok, I've pulled this now, even if I don't love the "hte" name. I
> despise specialized TLA's that aren't some obvious "if you're a kernel
> developer, you know what this means".

Thanks. If you prefer we could follow up with a rename for v5.20 and
name this similar to the device tree bindings. There are other cases
where the device tree bindings are named differently from the Linux
subsystem and/or driver directories, but admittedly it'd be easy to
make them match in this case. Given how little this is exposed at
this point, renaming should be fairly unintrusive.

Thierry
pr-tracker-bot@kernel.org June 5, 2022, 5:16 p.m. UTC | #6
The pull request you sent on Fri,  3 Jun 2022 13:39:08 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git tags/hte/for-5.19-rc1

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/2981436374177f78539b026ce5bcbab8c251818e

Thank you!
Dipen Patel June 16, 2022, 6:30 p.m. UTC | #7
Hi Linus,


Thanks for pulling in the hte subsystem. I wanted to check with you if renaming hte subsystem to "timestamp" as suggested by Thierry is ok or do you prefer to keep it as it is?


Best Regards,

Dipen Patel

On 6/5/22 9:16 AM, Linus Torvalds wrote:
> On Sat, Jun 4, 2022 at 1:11 AM Linus Walleij <linus.walleij@linaro.org> wrote:
>> Another provider did come up, and were requested (by me) to work with
>> Dipen on the subsystem in august last year, that was the Intel PMC in the
>> Elkhart and Tiger Lake platforms and forward
> Ok, I've pulled this now, even if I don't love the "hte" name. I
> despise specialized TLA's that aren't some obvious "if you're a kernel
> developer, you know what this means".
>
>                        Linus