Skip to content

Commit e7ac579

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 e7ac579

File tree

4 files changed

+79
-1
lines changed

4 files changed

+79
-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: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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 the ABI changes, developers should follow the process
25+
defined in below state diagram.
26+
27+
.. _ABI Change Tracker: https://github.com/orgs/thesofproject/projects/2
28+
29+
The pull requests are classified in GitHub using the following
30+
official `ABI Change Tracker`_
31+
32+
.. uml:: images/abiprocess.pu
33+
:caption: ABI process state diagram
34+
35+
When the ABI change is not backwards-compatible, the Pull Requests on the
36+
kernel side shall include code that deals with older firmware and
37+
topology files. See :ref:`development_tree` for kernel side
38+
documentation.
39+
40+
ABI Change Approvers
41+
********************
42+
43+
TSC
44+
---
45+
46+
Approval from SOF :ref:`tsc`
47+
member is needed for all ABI changes.
48+
49+
SOF Driver
50+
----------
51+
52+
Linux driver team approval for changes can be granted by
53+
any member of the SOF Linux driver maintainer team. Current
54+
list of members is maintained in :ref:`sof_drv_maintainer_list`
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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: When PR review and validation is ok, merge
20+
21+
DriverPRCheck --> DrvChangeMerged: When PR review and validation is ok, merge

0 commit comments

Comments
 (0)