[automerger skipped] OGKI: add approved android15-6.6 build am: bdf248781c -s ours

am skip reason: Merged-In I5f2dc5b53dc088a50de7f91c1be61de3f797e573 with SHA-1 6e0d15c4d8 is already in history

Original change: https://android-review.googlesource.com/c/kernel/configs/+/3345260

Change-Id: I0b4f5cc42efa16654f516e3dfb0e9f61a7d5b152
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index 7254d6a..1390cc2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -28,3 +28,10 @@
     src: "kernel-lifetimes.xml",
     sub_dir: "kernel",
 }
+
+filegroup {
+    name: "kernel_lifetimes_ref",
+    srcs: [
+        "kernel-lifetimes.xml",
+    ],
+}
diff --git a/OWNERS b/OWNERS
index ea62c47..8ae14d2 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,4 +1,3 @@
-adelva@google.com
-elsk@google.com
-sspatil@google.com
-tkjos@google.com
+include kernel/common:android-mainline:/OWNERS
+
+per-file approved-ogki-builds.xml=gprocida@google.com,szuweilin@google.com
diff --git a/kernel-lifetimes.xml b/kernel-lifetimes.xml
index b67526c..c2d01a5 100644
--- a/kernel-lifetimes.xml
+++ b/kernel-lifetimes.xml
@@ -6,65 +6,80 @@
 	<branch name="android-4.19" version="4.19" launch="2018-10-22" eol="2025-01-01">
 		<no-releases reason="non-GKI kernel"/>
 	</branch>
-	<branch name="android11-5.4" version="5.4" launch="2019-11-24" eol="2026-01-01">
+	<branch name="android11-5.4" min_android_release="11" version="5.4" launch="2019-11-24" eol="2026-01-01">
 		<no-releases reason="non-GKI kernel"/>
 	</branch>
-	<branch name="android12-5.4" version="5.4" launch="2019-11-24" eol="2026-01-01">
+	<branch name="android12-5.4" min_android_release="12" version="5.4" launch="2019-11-24" eol="2026-01-01">
 		<no-releases reason="non-GKI kernel"/>
 	</branch>
 
-	<branch name="android12-5.10" version="5.10" launch="2020-12-13" eol="2027-07-01">
+	<branch name="android12-5.10" min_android_release="12" version="5.10" launch="2020-12-13" eol="2027-07-01">
 		<lts-versions>
 			<release version="5.10.198" launch="2023-11-14" eol="2024-11-01"/>
 			<release version="5.10.205" launch="2024-03-12" eol="2024-11-01"/>
 			<release version="5.10.209" launch="2024-05-09" eol="2025-06-01"/>
+			<release version="5.10.218" launch="2024-08-12" eol="2025-09-01"/>
 		</lts-versions>
 	</branch>
 
-	<branch name="android13-5.10" version="5.10" launch="2020-12-13" eol="2027-07-01">
+	<branch name="android13-5.10" min_android_release="13" version="5.10" launch="2020-12-13" eol="2027-07-01">
 		<lts-versions>
 			<release version="5.10.189" launch="2023-10-31" eol="2024-11-01"/>
 			<release version="5.10.198" launch="2023-12-13" eol="2024-11-01"/>
 			<release version="5.10.205" launch="2024-02-20" eol="2024-11-01"/>
 			<release version="5.10.209" launch="2024-04-27" eol="2025-06-01"/>
 			<release version="5.10.210" launch="2024-06-21" eol="2025-07-01"/>
+			<release version="5.10.214" launch="2024-07-24" eol="2025-08-01"/>
+			<release version="5.10.218" launch="2024-08-22" eol="2025-09-01"/>
+			<release version="5.10.223" launch="2024-09-26" eol="2025-10-01"/>
 		</lts-versions>
 	</branch>
 
-	<branch name="android13-5.15" version="5.15" launch="2021-10-31" eol="2028-07-01">
+	<branch name="android13-5.15" min_android_release="13" version="5.15" launch="2021-10-31" eol="2028-07-01">
 		<lts-versions>
 			<release version="5.15.123" launch="2023-10-27" eol="2024-11-01"/>
 			<release version="5.15.137" launch="2023-12-13" eol="2024-11-01"/>
 			<release version="5.15.144" launch="2024-02-20" eol="2024-11-01"/>
 			<release version="5.15.148" launch="2024-04-27" eol="2025-05-01"/>
-			<release version="5.15.149" launch="2024-06-12" eol="2025-07-01"/>
+			<release version="5.15.149" launch="2024-06-12" eol="2025-08-01"/>
+			<release version="5.15.151" launch="2024-08-21" eol="2025-09-01"/>
+			<release version="5.15.153" launch="2024-09-25" eol="2025-09-01"/>
 		</lts-versions>
 	</branch>
 
-	<branch name="android14-5.15" version="5.15" launch="2021-10-31" eol="2028-07-01">
+	<branch name="android14-5.15" min_android_release="14" version="5.15" launch="2021-10-31" eol="2028-07-01">
 		<lts-versions>
 			<release version="5.15.123" launch="2023-10-27" eol="2024-11-01"/>
+			<release version="5.15.131" launch="2023-11-24" eol="2024-11-01"/>
 			<release version="5.15.137" launch="2023-12-13" eol="2024-11-01"/>
 			<release version="5.15.144" launch="2024-02-20" eol="2024-11-01"/>
 			<release version="5.15.148" launch="2024-04-27" eol="2025-05-01"/>
 			<release version="5.15.149" launch="2024-06-27" eol="2025-07-01"/>
 			<release version="5.15.153" launch="2024-07-09" eol="2025-08-01"/>
+			<release version="5.15.158" launch="2024-08-09" eol="2025-09-01"/>
+			<release version="5.15.164" launch="2024-09-10" eol="2025-10-01"/>
 		</lts-versions>
 	</branch>
 
-	<branch name="android14-6.1" version="6.1" launch="2022-12-11" eol="2029-07-01">
+	<branch name="android14-6.1" min_android_release="14" version="6.1" launch="2022-12-11" eol="2029-07-01">
 		<lts-versions>
 			<release version="6.1.43" launch="2023-10-31" eol="2024-11-01"/>
 			<release version="6.1.57" launch="2023-12-15" eol="2024-11-01"/>
 			<release version="6.1.68" launch="2024-02-21" eol="2024-11-01"/>
 			<release version="6.1.75" launch="2024-04-24" eol="2025-05-01"/>
 			<release version="6.1.78" launch="2024-06-20" eol="2025-07-01"/>
+			<release version="6.1.84" launch="2024-07-24" eol="2025-08-01"/>
+			<release version="6.1.90" launch="2024-08-22" eol="2025-09-01"/>
+			<release version="6.1.93" launch="2024-09-26" eol="2025-10-01"/>
+			<release version="6.1.99" launch="2024-10-09" eol="2025-11-01"/>
 		</lts-versions>
 	</branch>
 
-	<branch name="android15-6.6" version="6.6" launch="2023-10-29" eol="2028-07-01">
+	<branch name="android15-6.6" min_android_release="15" version="6.6" launch="2023-10-29" eol="2028-07-01">
 		<lts-versions>
-			<release version="6.6.30" launch="2024-07-12" eol="2025-08-01"/>
+			<release version="6.6.30" launch="2024-07-12" eol="2025-09-01"/>
+			<release version="6.6.46" launch="2024-09-16" eol="2025-10-01"/>
+			<release version="6.6.50" launch="2024-10-11" eol="2025-11-01"/>
 		</lts-versions>
 	</branch>
 </kernels>
diff --git a/tools/bump.py b/tools/bump.py
index 8aed6bd..13fd4f8 100755
--- a/tools/bump.py
+++ b/tools/bump.py
@@ -30,7 +30,9 @@
     subprocess.check_call(*args, **kwargs)
 
 def replace_configs_module_name(current_release, new_release, file_path):
-    check_call("sed -i'' -E 's/\"kernel_config_{}_([0-9.]*)\"/\"kernel_config_{}_\\1\"/g' {}"
+    # TODO(b/355580919): Remove the pattern '[0-9]+\\.next' by replacing the
+    # version placeholder with 'next'.
+    check_call("sed -i'' -E 's/\"kernel_config_{}_([0-9]+\\.[0-9]+|[0-9]+\\.next|next)\"/\"kernel_config_{}_\\1\"/g' {}"
                 .format(current_release, new_release, file_path), shell=True)
 
 class Bump(object):
diff --git a/w/android-6.next/Android.bp b/w/android-6.12/Android.bp
similarity index 95%
rename from w/android-6.next/Android.bp
rename to w/android-6.12/Android.bp
index 1f9c8ae..db574e2 100644
--- a/w/android-6.next/Android.bp
+++ b/w/android-6.12/Android.bp
@@ -18,7 +18,7 @@
 }
 
 kernel_config {
-    name: "kernel_config_w_6.next",
+    name: "kernel_config_w_6.12",
     srcs: [
         "android-base.config",
     ],
diff --git a/w/android-6.next/android-base-conditional.xml b/w/android-6.12/android-base-conditional.xml
similarity index 97%
rename from w/android-6.next/android-base-conditional.xml
rename to w/android-6.12/android-base-conditional.xml
index cb7cd51..5b88bd1 100644
--- a/w/android-6.next/android-base-conditional.xml
+++ b/w/android-6.12/android-base-conditional.xml
@@ -1,4 +1,4 @@
-<kernel minlts="6.6.0" />
+<kernel minlts="6.12.0" />
 
 <!-- KEEP ALPHABETICALLY SORTED -->
 <!-- ARM base requirements -->
@@ -114,11 +114,11 @@
 		<value type="bool">y</value>
 	</config>
 	<config>
-		<key>CONFIG_PAGE_TABLE_ISOLATION</key>
+		<key>CONFIG_MITIGATION_PAGE_TABLE_ISOLATION</key>
 		<value type="bool">y</value>
 	</config>
 	<config>
-		<key>CONFIG_RETPOLINE</key>
+		<key>CONFIG_MITIGATION_RETPOLINE</key>
 		<value type="bool">y</value>
 	</config>
 	<config>
@@ -241,4 +241,4 @@
 		<key>CONFIG_INIT_STACK_ALL_ZERO</key>
 		<value type="bool">y</value>
 	</config>
-</group>
\ No newline at end of file
+</group>
diff --git a/w/android-6.next/android-base.config b/w/android-6.12/android-base.config
similarity index 100%
rename from w/android-6.next/android-base.config
rename to w/android-6.12/android-base.config
diff --git a/w/android-6.next/Android.bp b/xsd/approvedBuild/Android.bp
similarity index 69%
copy from w/android-6.next/Android.bp
copy to xsd/approvedBuild/Android.bp
index 1f9c8ae..5a5e517 100644
--- a/w/android-6.next/Android.bp
+++ b/xsd/approvedBuild/Android.bp
@@ -1,26 +1,29 @@
+//
 // Copyright (C) 2024 The Android Open Source Project
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
-//     http://www.apache.org/licenses/LICENSE-2.0
+//      http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
+//
 
 package {
-    // See: http://go/android-license-faq
+    default_team: "trendy_team_android_kernel",
+
+    // http://go/android-license-faq
     default_applicable_licenses: ["Android-Apache-2.0"],
 }
 
-kernel_config {
-    name: "kernel_config_w_6.next",
-    srcs: [
-        "android-base.config",
-    ],
-    meta: "android-base-conditional.xml",
+xsd_config {
+    name: "approved_build",
+    srcs: ["approved_build.xsd"],
+    package_name: "approved.build",
+    api_dir: "schema",
 }
diff --git a/xsd/approvedBuild/approved_build.xsd b/xsd/approvedBuild/approved_build.xsd
new file mode 100644
index 0000000..a2d06aa
--- /dev/null
+++ b/xsd/approvedBuild/approved_build.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2024 The Android Open Source Project
+
+         Licensed under the Apache License, Version 2.0 (the "License");
+         you may not use this file except in compliance with the License.
+         You may obtain a copy of the License at
+
+                    http://www.apache.org/licenses/LICENSE-2.0
+
+         Unless required by applicable law or agreed to in writing, software
+         distributed under the License is distributed on an "AS IS" BASIS,
+         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+         See the License for the specific language governing permissions and
+         limitations under the License.
+-->
+
+<xs:schema version="2.0"
+           elementFormDefault="qualified"
+           attributeFormDefault="unqualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:element name="ogki-approved">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="branch" type="branch" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+            <xs:attribute name="version" type="xs:int" use="required"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:complexType name="branch">
+        <xs:sequence>
+            <xs:element name="build" type="build" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+        <xs:attribute name="name" type="xs:string" use="required"/>
+    </xs:complexType>
+    <xs:complexType name="build">
+        <xs:attribute name="id" type="xs:string" use="required"/>
+        <xs:attribute name="bug" type="xs:integer"/>
+    </xs:complexType>
+</xs:schema>
diff --git a/xsd/approvedBuild/schema/current.txt b/xsd/approvedBuild/schema/current.txt
new file mode 100644
index 0000000..329b837
--- /dev/null
+++ b/xsd/approvedBuild/schema/current.txt
@@ -0,0 +1,34 @@
+// Signature format: 2.0
+package approved.build {
+
+  public class Branch {
+    ctor public Branch();
+    method public java.util.List<approved.build.Build> getBuild();
+    method public String getName();
+    method public void setName(String);
+  }
+
+  public class Build {
+    ctor public Build();
+    method public java.math.BigInteger getBug();
+    method public String getId();
+    method public void setBug(java.math.BigInteger);
+    method public void setId(String);
+  }
+
+  public class OgkiApproved {
+    ctor public OgkiApproved();
+    method public java.util.List<approved.build.Branch> getBranch();
+    method public int getVersion();
+    method public void setVersion(int);
+  }
+
+  public class XmlParser {
+    ctor public XmlParser();
+    method public static approved.build.OgkiApproved read(java.io.InputStream) throws javax.xml.datatype.DatatypeConfigurationException, java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public static String readText(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+    method public static void skip(org.xmlpull.v1.XmlPullParser) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+  }
+
+}
+
diff --git a/xsd/approvedBuild/schema/last_current.txt b/xsd/approvedBuild/schema/last_current.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/xsd/approvedBuild/schema/last_current.txt
diff --git a/xsd/approvedBuild/schema/last_removed.txt b/xsd/approvedBuild/schema/last_removed.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/xsd/approvedBuild/schema/last_removed.txt
diff --git a/xsd/approvedBuild/schema/removed.txt b/xsd/approvedBuild/schema/removed.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/xsd/approvedBuild/schema/removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/xsd/approvedBuild/vts/Android.bp b/xsd/approvedBuild/vts/Android.bp
new file mode 100644
index 0000000..1a02a0a
--- /dev/null
+++ b/xsd/approvedBuild/vts/Android.bp
@@ -0,0 +1,54 @@
+//
+// Copyright (C) 2024 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+    default_team: "trendy_team_android_kernel",
+
+    // http://go/android-license-faq
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_test {
+    name: "vts_approvedBuild_validate_test",
+    srcs: [
+        "ValidateApprovedBuild.cpp",
+    ],
+    defaults: [
+        "libvintf_static_user_defaults",
+    ],
+    static_libs: [
+        "android.hardware.audio.common.test.utility",
+        "libkver",
+        "libvintf",
+        "libxml2",
+    ],
+    shared_libs: [
+        "liblog",
+        "libbase",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    data: [
+        ":approved_build",
+    ],
+    test_suites: [
+        "device-tests",
+        "vts",
+    ],
+    auto_gen_config: true,
+}
diff --git a/xsd/approvedBuild/vts/ValidateApprovedBuild.cpp b/xsd/approvedBuild/vts/ValidateApprovedBuild.cpp
new file mode 100644
index 0000000..4f790a3
--- /dev/null
+++ b/xsd/approvedBuild/vts/ValidateApprovedBuild.cpp
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <android-base/file.h>
+#include <kver/kernel_release.h>
+#include <unistd.h>
+#include <vintf/VintfObject.h>
+
+#include <string>
+
+#include "utility/ValidateXml.h"
+
+TEST(CheckConfig, approvedBuildValidation) {
+  const auto kernel_release = android::kver::KernelRelease::Parse(
+      android::vintf::VintfObject::GetRuntimeInfo()->osRelease(),
+      /* allow_suffix = */ true);
+  if (!kernel_release.has_value()) {
+    GTEST_FAIL() << "Failed to parse the kernel release string";
+  }
+  if (kernel_release->android_release() < 14) {
+    GTEST_SKIP() << "Kernel releases below android14 are exempt";
+  }
+
+  RecordProperty("description",
+                 "Verify that the approved OGKI builds file "
+                 "is valid according to the schema");
+
+  std::string xml_schema_path =
+      android::base::GetExecutableDirectory() + "/approved_build.xsd";
+  std::vector<const char*> locations = {"/system/etc/kernel"};
+  EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS("approved-ogki-builds.xml", locations,
+                                          xml_schema_path.c_str());
+}
diff --git a/xsd/kernelLifetimes/kernel_lifetimes.xsd b/xsd/kernelLifetimes/kernel_lifetimes.xsd
index d345899..7f90d89 100644
--- a/xsd/kernelLifetimes/kernel_lifetimes.xsd
+++ b/xsd/kernelLifetimes/kernel_lifetimes.xsd
@@ -32,6 +32,7 @@
             <xs:element name="lts-versions" type="lts-versions"/>
         </xs:choice>
         <xs:attribute name="name" type="xs:string" use="required"/>
+        <xs:attribute name="min_android_release" type="xs:int"/>
         <xs:attribute name="version" type="xs:string" use="required"/>
         <xs:attribute name="launch" type="xs:date" use="required"/>
         <xs:attribute name="eol" type="xs:date" use="required"/>
diff --git a/xsd/kernelLifetimes/schema/current.txt b/xsd/kernelLifetimes/schema/current.txt
index 1add2ec..bd96b76 100644
--- a/xsd/kernelLifetimes/schema/current.txt
+++ b/xsd/kernelLifetimes/schema/current.txt
@@ -6,12 +6,14 @@
     method public javax.xml.datatype.XMLGregorianCalendar getEol();
     method public javax.xml.datatype.XMLGregorianCalendar getLaunch();
     method public kernel.lifetimes.LtsVersions getLtsVersions_optional();
+    method public int getMin_android_release();
     method public String getName();
     method public kernel.lifetimes.NoReleases getNoReleases_optional();
     method public String getVersion();
     method public void setEol(javax.xml.datatype.XMLGregorianCalendar);
     method public void setLaunch(javax.xml.datatype.XMLGregorianCalendar);
     method public void setLtsVersions_optional(kernel.lifetimes.LtsVersions);
+    method public void setMin_android_release(int);
     method public void setName(String);
     method public void setNoReleases_optional(kernel.lifetimes.NoReleases);
     method public void setVersion(String);