blob: 02eb6bde31fd0851d94efd4a7de414c14d9ee372 [file] [log] [blame]
Sandrine Bailleuxdad35612022-11-08 13:36:42 +01001Platform Ports Policy
2=====================
Soby Mathew02bdbb92018-09-26 11:17:23 +01003
Sandrine Bailleuxdad35612022-11-08 13:36:42 +01004This document clarifies a couple of policy points around platform ports
5management.
Soby Mathew02bdbb92018-09-26 11:17:23 +01006
7Platform compatibility policy
8-----------------------------
9
10Platform compatibility is mainly affected by changes to Platform APIs (as
Paul Beesleyf8640672019-04-12 14:19:42 +010011documented in the :ref:`Porting Guide`), driver APIs (like the GICv3 drivers) or
Soby Mathew02bdbb92018-09-26 11:17:23 +010012library interfaces (like xlat_table library). The project will try to maintain
Sandrine Bailleux1ffc9e52023-04-17 15:37:48 +020013compatibility for upstream platforms.
14
15Due to evolving requirements and enhancements, there might be changes affecting
16platform compatibility, which means the previous interface needs to be deprecated
17and a new interface introduced to replace it. In case the migration to the new
18interface is trivial, the contributor of the change is expected to make good
19effort to migrate the upstream platforms to the new interface.
20
21The project will generally not take into account downstream platforms. If those
22are affected by a deprecation / removal decision, we encourage their maintainers
23to upstream their platform code or copy the latest version of the code being
24deprecated into their downstream tree.
Soby Mathew02bdbb92018-09-26 11:17:23 +010025
Paul Beesleyf8640672019-04-12 14:19:42 +010026The deprecated interfaces are listed inside :ref:`Release Processes` as well as
John Tsichritzis4730c112019-07-05 14:14:40 +010027the release after which each one will be removed. When an interface is
28deprecated, the page must be updated to indicate the release after which the
29interface will be removed. This must be at least 1 full release cycle in future.
30For non-trivial interface changes, an email should be sent out to the `TF-A
31public mailing list`_ to notify platforms that they should migrate away from the
32deprecated interfaces. Platforms are expected to migrate before the removal of
33the deprecated interface.
Soby Mathew02bdbb92018-09-26 11:17:23 +010034
Sandrine Bailleux71dc9b52023-04-17 15:45:46 +020035Deprecation policy
36------------------
Sandrine Bailleuxdad35612022-11-08 13:36:42 +010037
Sandrine Bailleux71dc9b52023-04-17 15:45:46 +020038If a platform, driver or library interface is no longer maintained, it is best
39to deprecate it to keep the projects' source tree clean and healthy. Deprecation
40can be a 1-stage or 2-stage process (up to the maintainers).
Sandrine Bailleuxdad35612022-11-08 13:36:42 +010041
Sandrine Bailleux71dc9b52023-04-17 15:45:46 +020042 - *2-stage*: The source code can be kept in the repository for a cooling off
43 period before deleting it (typically 2 release cycles). In this case, we keep
44 track of the *Deprecated* version separately from the *Deleted* version.
Sandrine Bailleuxdad35612022-11-08 13:36:42 +010045
Sandrine Bailleux71dc9b52023-04-17 15:45:46 +020046 - *1-stage*: The source code can be deleted straight away. In this case, both
47 versions are the same.
Sandrine Bailleuxdad35612022-11-08 13:36:42 +010048
49The :ref:`Platform Ports` page provides a list of all deprecated/deleted
50platform ports (or soon to be) to this day.
51
Soby Mathew02bdbb92018-09-26 11:17:23 +010052--------------
53
Sandrine Bailleux1ffc9e52023-04-17 15:37:48 +020054*Copyright (c) 2018-2023, Arm Limited and Contributors. All rights reserved.*
Soby Mathew02bdbb92018-09-26 11:17:23 +010055
Sandrine Bailleux1a4efb12022-04-21 10:17:22 +020056.. _TF-A public mailing list: https://lists.trustedfirmware.org/mailman3/lists/tf-a.lists.trustedfirmware.org/