Skip to content

Commit ad7c6cb

Browse files
committed
contributing: Add section on process for SOF FW ABI changes
Document revised process for ABI changes including a new step for Request-for-Comments phase. This is intended to ensure early engagement of interface changes across driver and firmware teams, to avoid wasting effort when concerns are raised at the very end of the process. Add cross-links between kernel driver and firmware sections. Also add link to ABI versioning definition in kernel/abi.h and pointers to TSC and driver maintainer team and who are the members. Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
1 parent d54935b commit ad7c6cb

File tree

4 files changed

+87
-1
lines changed

4 files changed

+87
-1
lines changed

contribute/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ patches for code, documentation, tests, and more, directly to the project.
1414
dox-source-code.rst
1515
process/bug-tracking
1616
process/docbuild
17+
process/abiprocess
1718
linux/development_tree

contribute/linux/development_tree.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ change tracker:
4343

4444
https://github.com/orgs/thesofproject/projects/2
4545

46+
Process for firmware ABI changes is documented in :ref:`SOF_ABI_changes`.
47+
4648
When the ABI is not backwards-compatible, the Pull Requests on the
4749
kernel side shall include code that deals with older firmware and
4850
topology files.
4951

50-
5152
Development branch
5253
==================
5354

@@ -84,6 +85,7 @@ as audio codecs, or bug fixes may be contributed by the community. SOF Linux
8485
maintainers will, on a regular basis (typically weekly), merge all upstream
8586
contributions into the SOF tree.
8687

88+
.. _sof_drv_maintainer_list:
8789

8890
Development flow
8991
****************

contribute/process/abiprocess.rst

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
.. _SOF_ABI_changes:
2+
3+
SOF ABI Change Process
4+
######################
5+
6+
SOF ABI Definitions
7+
*******************
8+
9+
SOF ABI consists of public structs used in host-FW communication
10+
defined in:
11+
12+
- src/include/kernel/
13+
- src/include/ipc/
14+
- src/include/user/
15+
16+
SOF ABI versioning is defined in firmware source code
17+
documentation `FW Source kernel/abi.h`_
18+
19+
.. _FW Source kernel/abi.h: https://github.com/thesofproject/sof/blob/master/src/include/kernel/abi.h#L8
20+
21+
Change Process
22+
**************
23+
24+
When a firmware change requires extending or modifying the public
25+
SOF ABI, developer needs to go through the ABI change process as defined
26+
in this section. It is responsibility of the developer to drive this
27+
process, contact the stakeholders, request reviews (and re-reviews when
28+
needed) and e.g. coordinate with the driver maintainers.
29+
30+
The main steps of the process are depicted in the following
31+
state diagram:
32+
33+
.. _ABI Change Tracker: https://github.com/orgs/thesofproject/projects/2
34+
35+
The pull requests are classified in GitHub using the following
36+
official `ABI Change Tracker`_
37+
38+
.. uml:: images/abiprocess.pu
39+
:caption: ABI process state diagram
40+
41+
When the ABI change is not backwards-compatible, the Pull Requests on the
42+
kernel side shall include code that deals with older firmware and
43+
topology files. See :ref:`development_tree` for kernel side
44+
documentation.
45+
46+
ABI Change Approvers
47+
********************
48+
49+
TSC
50+
---
51+
52+
Approval from SOF :ref:`tsc`
53+
member is needed for all ABI changes.
54+
55+
SOF Driver
56+
----------
57+
58+
Linux driver team approval for changes can be granted by
59+
any member of the SOF Linux driver maintainer team. Current
60+
list of members is maintained in :ref:`sof_drv_maintainer_list`
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
[*] --> NewABIChange: Firmware feature that requires ABI change
2+
3+
NewABIChange --> RFC: Send RFC Pull Request\ncovering interface changes\n and rationale for the change
4+
5+
note right of RFC : RFC stage is intended to\navoid wasted effort via early\n engagement with the ABI users
6+
7+
RFC --> RFCApproved: a) Approve+1 from at least\none Driver and one FW Maintainer,\n b) Owners assigned for FW and driver impl
8+
9+
NewABIChange --> FWImplementation: Fast path implementation\nonly when no driver impact
10+
11+
RFCApproved --> FWImplementation: Implementation done, submit as non-RFC PR
12+
13+
FWImplementation --> ABIClassification: Tag PR for ABI classifier
14+
15+
ABIClassification --> ABIApproved: TSC member approval and\nABI MAJOR.MINOR classification done
16+
17+
ABIApproved --> DriverPRCheck: If driver change is needed,\nwait until both sides ready for merge
18+
19+
DriverPRCheck --> FWChangeMerged: No driver change:\nAfter review and validation ok, merge
20+
21+
DriverPRCheck --> DrvChangeMerged: After review and\nvalidation ok, merge
22+
23+
DrvChangeMerged --> FWChangeMerged: After review and\nvalidation ok, merge

0 commit comments

Comments
 (0)