1*91f16700SchasingluluPlatform Ports Policy 2*91f16700Schasinglulu===================== 3*91f16700Schasinglulu 4*91f16700SchasingluluThis document clarifies a couple of policy points around platform ports 5*91f16700Schasinglulumanagement. 6*91f16700Schasinglulu 7*91f16700SchasingluluPlatform compatibility policy 8*91f16700Schasinglulu----------------------------- 9*91f16700Schasinglulu 10*91f16700SchasingluluPlatform compatibility is mainly affected by changes to Platform APIs (as 11*91f16700Schasingluludocumented in the :ref:`Porting Guide`), driver APIs (like the GICv3 drivers) or 12*91f16700Schasinglululibrary interfaces (like xlat_table library). The project will try to maintain 13*91f16700Schasinglulucompatibility for upstream platforms. 14*91f16700Schasinglulu 15*91f16700SchasingluluDue to evolving requirements and enhancements, there might be changes affecting 16*91f16700Schasingluluplatform compatibility, which means the previous interface needs to be deprecated 17*91f16700Schasingluluand a new interface introduced to replace it. In case the migration to the new 18*91f16700Schasingluluinterface is trivial, the contributor of the change is expected to make good 19*91f16700Schasinglulueffort to migrate the upstream platforms to the new interface. 20*91f16700Schasinglulu 21*91f16700SchasingluluThe project will generally not take into account downstream platforms. If those 22*91f16700Schasingluluare affected by a deprecation / removal decision, we encourage their maintainers 23*91f16700Schasingluluto upstream their platform code or copy the latest version of the code being 24*91f16700Schasingluludeprecated into their downstream tree. 25*91f16700Schasinglulu 26*91f16700SchasingluluThe deprecated interfaces are listed inside :ref:`Release Processes` as well as 27*91f16700Schasingluluthe release after which each one will be removed. When an interface is 28*91f16700Schasingluludeprecated, the page must be updated to indicate the release after which the 29*91f16700Schasingluluinterface will be removed. This must be at least 1 full release cycle in future. 30*91f16700SchasingluluFor non-trivial interface changes, an email should be sent out to the `TF-A 31*91f16700Schasinglulupublic mailing list`_ to notify platforms that they should migrate away from the 32*91f16700Schasingluludeprecated interfaces. Platforms are expected to migrate before the removal of 33*91f16700Schasingluluthe deprecated interface. 34*91f16700Schasinglulu 35*91f16700SchasingluluDeprecation policy 36*91f16700Schasinglulu------------------ 37*91f16700Schasinglulu 38*91f16700SchasingluluIf a platform, driver or library interface is no longer maintained, it is best 39*91f16700Schasingluluto deprecate it to keep the projects' source tree clean and healthy. Deprecation 40*91f16700Schasinglulucan be a 1-stage or 2-stage process (up to the maintainers). 41*91f16700Schasinglulu 42*91f16700Schasinglulu - *2-stage*: The source code can be kept in the repository for a cooling off 43*91f16700Schasinglulu period before deleting it (typically 2 release cycles). In this case, we keep 44*91f16700Schasinglulu track of the *Deprecated* version separately from the *Deleted* version. 45*91f16700Schasinglulu 46*91f16700Schasinglulu - *1-stage*: The source code can be deleted straight away. In this case, both 47*91f16700Schasinglulu versions are the same. 48*91f16700Schasinglulu 49*91f16700SchasingluluThe :ref:`Platform Ports` page provides a list of all deprecated/deleted 50*91f16700Schasingluluplatform ports (or soon to be) to this day. 51*91f16700Schasinglulu 52*91f16700Schasinglulu-------------- 53*91f16700Schasinglulu 54*91f16700Schasinglulu*Copyright (c) 2018-2023, Arm Limited and Contributors. All rights reserved.* 55*91f16700Schasinglulu 56*91f16700Schasinglulu.. _TF-A public mailing list: https://lists.trustedfirmware.org/mailman3/lists/tf-a.lists.trustedfirmware.org/ 57