The I2C subsystem is not the shiniest part of the Linux Kernel. For embedded devices, though, it is one of the many puzzle pieces which just have to work. Wolfram Sang has the experience of maintaining this subsystem for nearly 7 years now. This talk gives a short overview of how maintaining works in general and specifically in this subsystem. But mainly, it will highlight noteworthy points in the timeline and lessons learnt from that. It will present trends, not so much regarding I2C but more the Linux Kernel and the embedded ecosystem in general. And of course, there will be plenty of anecdotes and bits from behind the scenes for your entertainment.
Wolfram Sang
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
1. From maintaining I2C to the big (embedded) picture
Wolfram Sang, Consultant / Renesas
24.09.2019, EmbeddedRecipes
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 1 / 26
2. Simple SoC Block Diagram
System Controller
Advanced Int. Ctrl.
Power Mgt. Ctrl.
PLL
Osc
RC Osc
Reset Ctrl.
Brownout Detect
Power On Reset
Prog. Int. Timer
Watchdog Timer
Real Time Timer
Debug Unit
PID Ctrl.
JTAG
Scan
Voltage
Regulator
Peripheral
Bridge
MemoryController
EBI
SRAM
Flash
Flash
Programmer
Peripheral
Data Controller
Application-Specific
Logic
CAN
USB
PWM
SD/MMC
Framebuffer/DisplayADC
I2C / TWI
SPI
UART
Ethernet
PIO
ARM
Processor
PIO
PIO
APB
ASB/
AHB
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 2 / 26
3. I2C: its simplicity is a problem
What could go wrong?
specs didn’t change much since 1982
definately not rocket science1
drivers are (relatively) simple
So, do an IP core, dump the driver, move on…
1
yet, gory details are everywhere
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 3 / 26
4. I2C: its simplicity is a problem
What could go wrong?
specs didn’t change much since 1982
definately not rocket science1
drivers are (relatively) simple
So, do an IP core, dump the driver, move on…
I2C is a good example
a Fly-by subsystem
mostly used by embedded
largely maintained in spare time
1
yet, gory details are everywhere
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 3 / 26
5. Growth of I2C bus master drivers
0
20
40
60
80
100
120
140
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5 v4.10 v4.15 v4.20
2011 2012 2013 2014 2015 2016 2017 2018 2018
number of files in drivers/i2c/busses
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 4 / 26
7. Good News
Message was received:
People are sending patches!
o/
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 6 / 26
8. More Bad News
We now have a scaling problem:
Who reviews all these patches2?
2
especially in fly-by subsystems
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 7 / 26
9. Number of unprocessed patches
0
50
100
150
200
250
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5
2011 2012 2013 2014 2015 2016
linux-i2c (72 commits in 4.8)
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 8 / 26
10. 1st lesson learned
There will be backlog3
3
Relax and live with it…
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 9 / 26
11. 2nd lesson learned
Do only stuff you are personally
interested in
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 10 / 26
12. Not maintaining the drivers anymore
commit 95df14f7937482a2a527814061eda9b534adb7eb
Author: Wolfram Sang <wsa@the-dreams.de>
Date: Tue Apr 10 21:49:13 2018 +0200
MAINTAINERS: remove me as maintainer for I2C host drivers
The number of I2C host controller drivers keeps increasing, and although
I had some success acquiring specific driver maintainers, my bandwidth
is by far not enough to act as a fallback for the rest of the drivers.
...
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 11 / 26
14. Group maintainership
Which group???happy it works for DRM, but difficult for fly-bys
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 12 / 26
15. Group maintainership
Which group???happy it works for DRM, but difficult for fly-bys
Still, thanks a ton to the I2C mux and I2C ACPI submaintainers!
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 12 / 26
16. Not that I tried…
From: Wolfram Sang <wsa@the-dreams.de>
Subject: I2C delay due to maintainer illness
sadly, I have been tied to bed for a few days now, not in a condition to
really work on I2C...
I think it is annoying, sure, but no catastrophe. However, it shows that
I am the single-point-of-failure for I2C patches, what I don't like.
Like I said before, I am open to group maintainership. If you think you
are a reliable candidate, please get in touch with me.
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 13 / 26
17. Not that I tried…
From: Wolfram Sang <wsa@the-dreams.de>
Subject: I2C delay due to maintainer illness
sadly, I have been tied to bed for a few days now, not in a condition to
really work on I2C...
I think it is annoying, sure, but no catastrophe. However, it shows that
I am the single-point-of-failure for I2C patches, what I don't like.
Like I said before, I am open to group maintainership. If you think you
are a reliable candidate, please get in touch with me.
“Get well soon!”
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 13 / 26
18. 3rd lesson learned
Divide & conquer
(to the extreme4)
4
i.e. to the driver level
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 14 / 26
19. Problem: new drivers
From: Khalil Blaiech <kblaiech@mellanox.com>
Subject: [PATCH v5 1/2] i2c: i2c-mlx: I2C SMBus driver for Mellanox BlueField
Added BlueField I2C driver to offer master and slave support for
Mellanox BlueField SoCs. The driver implements an SMBus adapter
and interfaces to multiple busses that can be probed using both
ACPI and Device Tree infrastructures.
Signed-off-by: Khalil Blaiech <kblaiech@mellanox.com>
---
drivers/i2c/busses/Kconfig | 13 +
drivers/i2c/busses/Makefile | 1 +
drivers/i2c/busses/i2c-mlx.c | 2513 ++++++++++++++++++++++++++++++++++++++++++
3 files changed, 2527 insertions(+)
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 15 / 26
20. 4th lesson learned
Let escalateI don’t like it, but I don’t scale
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 16 / 26
21. See the plateaus?
0
20
40
60
80
100
120
140
v3.0 v3.5 v3.10 v3.15 v4.0 v4.5 v4.10 v4.15 v4.20
2011 2012 2013 2014 2015 2016 2017 2018 2018
number of files in drivers/i2c/busses
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 17 / 26
22. Something to get rid off
This picture5
is still around
“The overall picture … is one of a development process that continues to
function like a relatively well-tuned machine. The number of contributors
continues to increase, the patch flow is steady, and there do not appear to
be many process-scalability issues in sight.”
Disclaimer: LWN’s opinion has changed meanwhile to the best of my
knowledge.
5
LWN on May 11th, 2016
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 18 / 26
23. News from Linux Plumbers
Dmitry Vyukov gave a talk at LPC.
It sparked some discussions
tooling
workflow
documentation
All nice but…
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 19 / 26
24. For my situation: tip of the iceberg
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 20 / 26
25. Proposed solution I
Send out the new message
Next level reached
Old message arrived: Submit patches
New message: Take part in QA6
6
review other patches and maintain core code
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 21 / 26
26. Proposed solution II
Kernel Infrastructure Initiative?
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 22 / 26
27. Proposed solution III
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 23 / 26
28. Proposed solution III
Maintainers on strike!
:)
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 23 / 26
30. The End
Questions? Comments?
Questions?
Right here, right now…
At the conference
wsa@the-dreams.de
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 25 / 26
31. References
ArmSoC diagram from my previous talk “Maintainer’s Diary: We
have a scaling problem” at ELC Europe 2013 in Edinburgh (based on
this version from Wikimedia (by Cburnett))
Iceberg picture from Wikimedia (by Uwe Kils and Wiska Bodo)
List of unprocessed patches in I2C from my previous talk “I Still Think
We Have a Scaling Problem” at LinuxCon Europe 2016 in Berlin
Wolfram Sang, Consultant / Renesas From I2C to the big picture 24.09.2019, EmbeddedRecipes 26 / 26