diff --git a/android/GKI_VERSION b/android/GKI_VERSION
index 28f2366794e6..ff5db118dee3 100644
--- a/android/GKI_VERSION
+++ b/android/GKI_VERSION
@@ -1 +1 @@
-LTS_5.4.61_dc2d5a0ace05
+LTS_5.4.61_37201331c48d
diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml
index 715bd63ce516..599c5c28ba4c 100644
--- a/android/abi_gki_aarch64.xml
+++ b/android/abi_gki_aarch64.xml
@@ -16,6 +16,7 @@
+
@@ -80,6 +81,7 @@
+
@@ -164,6 +166,7 @@
+
@@ -366,10 +369,12 @@
+
+
@@ -561,6 +566,7 @@
+
@@ -1039,6 +1045,7 @@
+
@@ -1136,6 +1143,8 @@
+
+
@@ -1149,6 +1158,7 @@
+
@@ -1170,7 +1180,9 @@
+
+
@@ -1186,6 +1198,7 @@
+
@@ -1222,6 +1235,8 @@
+
+
@@ -1264,6 +1279,8 @@
+
+
@@ -1288,6 +1305,8 @@
+
+
@@ -1300,6 +1319,7 @@
+
@@ -1345,6 +1365,7 @@
+
@@ -1363,17 +1384,21 @@
+
+
+
+
@@ -1394,6 +1419,7 @@
+
@@ -1422,6 +1448,7 @@
+
@@ -1429,6 +1456,7 @@
+
@@ -1454,12 +1482,15 @@
+
+
+
@@ -1538,8 +1569,11 @@
+
+
+
@@ -1587,9 +1621,14 @@
+
+
+
+
+
@@ -1667,6 +1706,7 @@
+
@@ -2238,6 +2278,7 @@
+
@@ -2392,6 +2433,7 @@
+
@@ -2524,6 +2566,7 @@
+
@@ -2532,12 +2575,16 @@
+
+
+
+
@@ -2566,9 +2613,14 @@
+
+
+
+
+
@@ -2633,6 +2685,12 @@
+
+
+
+
+
+
@@ -2689,6 +2747,7 @@
+
@@ -2703,15 +2762,21 @@
+
+
+
+
+
+
@@ -2720,24 +2785,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3635,6 +3717,7 @@
+
@@ -3819,6 +3902,7 @@
+
@@ -4201,6 +4285,8 @@
+
+
@@ -4391,6 +4477,7 @@
+
@@ -4444,6 +4531,7 @@
+
@@ -5326,6 +5414,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -14433,17 +14532,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -15371,6 +15459,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -22863,102 +22965,102 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -23169,6 +23271,14 @@
+
+
+
+
+
+
+
+
@@ -23712,10 +23822,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -30708,6 +30832,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -30719,7 +30855,6 @@
-
@@ -30762,7 +30897,6 @@
-
@@ -30941,6 +31075,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -31010,6 +31154,10 @@
+
+
+
+
@@ -31048,6 +31196,11 @@
+
+
+
+
+
@@ -31170,6 +31323,11 @@
+
+
+
+
+
@@ -31395,10 +31553,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31458,6 +31632,7 @@
+
@@ -31513,7 +31688,7 @@
-
+
@@ -31746,7 +31921,7 @@
-
+
@@ -32044,7 +32219,7 @@
-
+
@@ -34657,7 +34832,7 @@
-
+
@@ -34849,6 +35024,11 @@
+
+
+
+
+
@@ -35164,7 +35344,7 @@
-
+
@@ -35436,7 +35616,7 @@
-
+
@@ -35793,6 +35973,15 @@
+
+
+
+
+
+
+
+
+
@@ -36350,6 +36539,7 @@
+
@@ -36487,6 +36677,10 @@
+
+
+
+
@@ -36518,7 +36712,7 @@
-
+
@@ -36528,6 +36722,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -36541,6 +37041,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -36602,7 +37112,7 @@
-
+
@@ -36664,7 +37174,6 @@
-
@@ -36773,6 +37282,14 @@
+
+
+
+
+
+
+
+
@@ -37166,6 +37683,10 @@
+
+
+
+
@@ -37237,7 +37758,7 @@
-
+
@@ -37686,6 +38207,14 @@
+
+
+
+
+
+
+
+
@@ -37718,6 +38247,11 @@
+
+
+
+
+
@@ -37728,6 +38262,10 @@
+
+
+
+
@@ -37758,14 +38296,6 @@
-
-
-
-
-
-
-
-
@@ -53987,6 +54517,7 @@
+
@@ -54010,7 +54541,7 @@
-
+
@@ -54018,7 +54549,7 @@
-
+
@@ -54210,17 +54741,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -54582,8 +55102,8 @@
-
-
+
+
@@ -54648,17 +55168,17 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -55034,23 +55554,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -55096,16 +55599,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55219,7 +55755,7 @@
-
+
@@ -55483,6 +56019,14 @@
+
+
+
+
+
+
+
+
@@ -55500,8 +56044,8 @@
-
-
+
+
@@ -55529,20 +56073,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55576,6 +56119,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55609,20 +56182,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55645,18 +56239,23 @@
+
+
+
+
+
-
+
-
+
-
+
@@ -55779,6 +56378,7 @@
+
@@ -55794,15 +56394,31 @@
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -55812,11 +56428,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -55825,11 +56465,22 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -55842,6 +56493,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -63140,7 +63817,7 @@
-
+
@@ -63149,7 +63826,7 @@
-
+
@@ -64925,8 +65602,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64995,13 +65695,18 @@
+
+
+
+
+
-
+
@@ -65025,12 +65730,21 @@
+
+
+
+
+
+
+
+
+
@@ -65370,6 +66084,279 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65381,6 +66368,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65447,17 +66537,10 @@
-
-
-
-
-
-
-
@@ -65808,244 +66891,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -66073,36 +66918,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -66112,14 +66938,9 @@
-
-
-
-
-
@@ -66127,10 +66948,6 @@
-
-
-
-
@@ -66258,74 +67075,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -66408,26 +67161,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -66444,6 +67177,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -66969,6 +67745,11 @@
+
+
+
+
+
@@ -67113,6 +67894,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -71383,6 +72176,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -74347,6 +75164,11 @@
+
+
+
+
+
@@ -74689,17 +75511,17 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -77317,14 +78139,6 @@
-
-
-
-
-
-
-
-
@@ -86414,6 +87228,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -86866,7 +87759,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -86899,27 +87806,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -88563,14 +89463,6 @@
-
-
-
-
-
-
-
-
@@ -91222,6 +92114,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -99818,13 +100724,13 @@
-
+
-
+
-
+
@@ -99866,7 +100772,7 @@
-
+
@@ -104029,7 +104935,7 @@
-
+
@@ -104045,7 +104951,7 @@
-
+
@@ -104053,7 +104959,7 @@
-
+
@@ -104067,7 +104973,7 @@
-
+
@@ -106011,6 +106917,13 @@
+
+
+
+
+
+
+
@@ -106182,6 +107095,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -107973,240 +108898,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -108359,18 +109053,7 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -108553,13 +109236,12 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -108567,10 +109249,6 @@
-
-
-
-
@@ -108785,7 +109463,7 @@
-
+
@@ -108963,33 +109641,33 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
+
+
@@ -111630,14 +112308,6 @@
-
-
-
-
-
-
-
-
@@ -112804,6 +113474,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -114619,29 +115311,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -114649,7 +115319,7 @@
-
+
@@ -114657,7 +115327,7 @@
-
+
@@ -114665,7 +115335,7 @@
-
+
@@ -114673,7 +115343,7 @@
-
+
@@ -114681,7 +115351,7 @@
-
+
@@ -114692,7 +115362,7 @@
-
+
@@ -114703,7 +115373,15 @@
-
+
+
+
+
+
+
+
+
+
@@ -114711,14 +115389,6 @@
-
-
-
-
-
-
-
-
@@ -114741,7 +115411,7 @@
-
+
@@ -114811,45 +115481,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -114857,7 +115489,7 @@
-
+
@@ -114942,8 +115574,8 @@
-
-
+
+
@@ -116705,14 +117337,6 @@
-
-
-
-
-
-
-
-
@@ -117620,7 +118244,268 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -117704,6 +118589,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -121625,6 +122521,12 @@
+
+
+
+
+
+
@@ -122334,15 +123236,12 @@
-
+
-
+
-
-
-
-
+
@@ -122820,7 +123719,7 @@
-
+
@@ -122846,13 +123745,13 @@
-
+
-
+
@@ -122860,35 +123759,35 @@
-
+
-
+
-
+
-
+
-
+
@@ -122897,28 +123796,28 @@
-
+
-
+
-
+
-
+
@@ -122926,12 +123825,12 @@
-
+
-
+
@@ -122939,18 +123838,18 @@
-
+
-
+
-
+
@@ -129051,6 +129950,14 @@
+
+
+
+
+
+
+
+
@@ -129249,14 +130156,6 @@
-
-
-
-
-
-
-
-
diff --git a/android/abi_gki_aarch64_d6430e6763.xml b/android/abi_gki_aarch64_d6430e6763.xml
index 5c75765b2018..3178f71f91ca 100644
--- a/android/abi_gki_aarch64_d6430e6763.xml
+++ b/android/abi_gki_aarch64_d6430e6763.xml
@@ -340,6 +340,7 @@
+
@@ -779,6 +780,7 @@
+
@@ -896,9 +898,11 @@
+
+
@@ -1868,6 +1872,8 @@
+
+
@@ -2415,6 +2421,8 @@
+
+
@@ -2659,6 +2667,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2671,6 +2702,10 @@
+
+
+
+
@@ -7071,7 +7106,7 @@
-
+
@@ -7667,48 +7702,48 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -10266,7 +10301,7 @@
-
+
@@ -18897,6 +18932,10 @@
+
+
+
+
@@ -18952,6 +18991,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -20131,33 +20180,33 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -21658,7 +21707,6 @@
-
@@ -21670,8 +21718,6 @@
-
-
@@ -29900,7 +29946,7 @@
-
+
@@ -30818,9 +30864,9 @@
-
-
-
+
+
+
@@ -31291,8 +31337,8 @@
-
-
+
+
@@ -31304,47 +31350,47 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -35227,7 +35273,7 @@
-
+
@@ -41139,231 +41185,231 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -41714,18 +41760,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -41792,57 +41838,57 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -41882,68 +41928,68 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -42101,39 +42147,39 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -42214,50 +42260,50 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -51535,6 +51581,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65617,7 +65876,7 @@
-
+
@@ -67261,8 +67520,8 @@
-
-
+
+
@@ -90841,11 +91100,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -96125,6 +96384,12 @@
+
+
+
+
+
+
@@ -97580,9 +97845,9 @@
-
-
-
+
+
+
@@ -98282,8 +98547,8 @@
-
-
+
+
diff --git a/android/abi_gki_aarch64_exynosauto b/android/abi_gki_aarch64_exynosauto
new file mode 100644
index 000000000000..084429b560c2
--- /dev/null
+++ b/android/abi_gki_aarch64_exynosauto
@@ -0,0 +1,1462 @@
+[abi_symbol_list]
+# commonly used symbols
+ add_timer
+ __alloc_pages_nodemask
+ alloc_workqueue
+ __arch_copy_from_user
+ __arch_copy_to_user
+ arm64_const_caps_ready
+ atomic_notifier_call_chain
+ atomic_notifier_chain_register
+ __bitmap_and
+ __bitmap_andnot
+ blocking_notifier_call_chain
+ blocking_notifier_chain_register
+ blocking_notifier_chain_unregister
+ bpf_trace_run1
+ bpf_trace_run2
+ bpf_trace_run3
+ bpf_trace_run4
+ cancel_delayed_work
+ cancel_delayed_work_sync
+ cancel_work_sync
+ cdev_init
+ __cfi_slowpath
+ __check_object_size
+ __class_create
+ class_destroy
+ clk_bulk_disable
+ clk_bulk_unprepare
+ clk_disable
+ clk_enable
+ clk_get
+ clk_get_rate
+ clk_prepare
+ clk_put
+ clk_set_rate
+ clk_unprepare
+ complete
+ complete_all
+ __const_udelay
+ cpu_bit_bitmap
+ cpu_hwcap_keys
+ cpu_hwcaps
+ cpumask_next
+ cpu_number
+ __cpu_online_mask
+ __cpu_possible_mask
+ crc32_le
+ delayed_work_timer_fn
+ del_timer
+ del_timer_sync
+ destroy_workqueue
+ dev_driver_string
+ _dev_emerg
+ _dev_err
+ device_create
+ device_create_file
+ device_destroy
+ device_for_each_child
+ device_initialize
+ device_init_wakeup
+ device_property_present
+ device_property_read_u32_array
+ device_remove_file
+ _dev_info
+ devm_add_action
+ devm_clk_get
+ devm_free_irq
+ devm_gpiod_get_optional
+ devm_gpio_request_one
+ devm_ioremap
+ devm_ioremap_nocache
+ devm_ioremap_resource
+ devm_kfree
+ devm_kmalloc
+ __devm_of_phy_provider_register
+ devm_phy_create
+ devm_phy_get
+ devm_pinctrl_get
+ devm_platform_ioremap_resource
+ devm_request_threaded_irq
+ devm_usb_get_phy_by_phandle
+ _dev_notice
+ dev_pm_opp_add
+ dev_set_name
+ _dev_warn
+ disable_irq
+ disable_irq_nosync
+ display_timings_release
+ dma_alloc_attrs
+ dma_buf_attach
+ dma_buf_begin_cpu_access
+ dma_buf_detach
+ dma_buf_end_cpu_access
+ dma_buf_export
+ dma_buf_get
+ dma_buf_kmap
+ dma_buf_kunmap
+ dma_buf_map_attachment
+ dma_buf_mmap
+ dma_buf_put
+ dma_buf_unmap_attachment
+ dma_buf_vmap
+ dma_buf_vunmap
+ dma_direct_map_page
+ dma_direct_map_sg
+ dma_direct_sync_sg_for_cpu
+ dma_direct_sync_sg_for_device
+ dma_direct_sync_single_for_cpu
+ dma_direct_sync_single_for_device
+ dma_direct_unmap_page
+ dma_direct_unmap_sg
+ dma_fence_add_callback
+ dma_fence_context_alloc
+ dma_fence_default_wait
+ dma_fence_init
+ dma_fence_release
+ dma_fence_remove_callback
+ dma_fence_signal
+ dma_free_attrs
+ dma_release_channel
+ dma_request_slave_channel
+ dma_set_coherent_mask
+ dma_set_mask
+ down
+ down_read
+ down_trylock
+ drm_add_edid_modes
+ drm_atomic_helper_connector_destroy_state
+ drm_atomic_helper_connector_duplicate_state
+ drm_atomic_helper_connector_reset
+ drm_bridge_add
+ drm_bridge_remove
+ drm_connector_attach_encoder
+ drm_connector_cleanup
+ drm_connector_init
+ drm_connector_register
+ drm_connector_update_edid_property
+ drm_display_mode_from_videomode
+ drm_err
+ drm_helper_probe_single_connector_modes
+ drm_kms_helper_hotplug_event
+ drm_mode_copy
+ drm_mode_create
+ drm_mode_duplicate
+ drm_mode_probed_add
+ drm_mode_vrefresh
+ drm_panel_detach
+ enable_irq
+ event_triggers_call
+ fd_install
+ find_next_bit
+ find_vma
+ finish_wait
+ flush_delayed_work
+ flush_work
+ flush_workqueue
+ fput
+ frame_vector_to_pages
+ free_irq
+ __free_pages
+ free_pages
+ freezing_slow_path
+ generic_handle_irq
+ get_device
+ __get_free_pages
+ get_random_bytes
+ get_task_mm
+ get_unused_fd_flags
+ get_user_pages
+ gpiod_direction_input
+ gpiod_direction_output_raw
+ gpiod_get_raw_value
+ gpiod_set_raw_value
+ gpiod_set_value_cansleep
+ gpiod_to_irq
+ gpio_free
+ gpio_request
+ gpio_request_one
+ gpio_to_desc
+ handle_edge_irq
+ handle_level_irq
+ handle_nested_irq
+ i2c_add_numbered_adapter
+ i2c_del_driver
+ i2c_get_adapter
+ i2c_new_dummy
+ i2c_register_driver
+ i2c_transfer
+ i2c_unregister_device
+ __init_rwsem
+ init_timer_key
+ init_wait_entry
+ __init_waitqueue_head
+ iomem_resource
+ iommu_register_device_fault_handler
+ iommu_unregister_device_fault_handler
+ ion_alloc
+ ion_query_heaps_kernel
+ __ioremap
+ iounmap
+ __irq_alloc_descs
+ __irq_domain_add
+ irq_domain_remove
+ irq_find_mapping
+ irq_get_irq_data
+ irq_modify_status
+ irq_of_parse_and_map
+ irq_set_affinity_hint
+ irq_set_chip_and_handler_name
+ irq_set_chip_data
+ irq_set_irq_wake
+ irq_to_desc
+ jiffies
+ kasprintf
+ kernel_kobj
+ kfree
+ kimage_vaddr
+ kimage_voffset
+ __kmalloc
+ kmalloc_caches
+ kmalloc_order_trace
+ kmem_cache_alloc
+ kmem_cache_alloc_trace
+ kmem_cache_free
+ kmemdup
+ kobject_create_and_add
+ krealloc
+ kstrdup
+ kstrtobool
+ kstrtoint
+ kstrtou8
+ kstrtouint
+ kstrtoull
+ kthread_create_on_node
+ __kthread_init_worker
+ kthread_queue_work
+ kthread_stop
+ kthread_worker_fn
+ ktime_get
+ ktime_get_mono_fast_ns
+ ktime_get_raw_ts64
+ ktime_get_real_ts64
+ __list_add_valid
+ __list_del_entry_valid
+ mdiobus_read
+ mdiobus_write
+ memcpy
+ memdup_user
+ memset
+ mfd_add_devices
+ mfd_remove_devices
+ mipi_dsi_attach
+ mipi_dsi_detach
+ mipi_dsi_device_register_full
+ mipi_dsi_device_unregister
+ mipi_dsi_driver_register_full
+ mipi_dsi_driver_unregister
+ misc_deregister
+ misc_register
+ mmput
+ mod_delayed_work_on
+ mod_timer
+ module_layout
+ __msecs_to_jiffies
+ msleep
+ __mutex_init
+ mutex_is_locked
+ mutex_lock
+ mutex_unlock
+ names_cachep
+ netif_carrier_off
+ no_llseek
+ nr_cpu_ids
+ __num_online_cpus
+ of_address_to_resource
+ of_alias_get_id
+ of_clk_get
+ of_device_get_match_data
+ of_device_is_available
+ of_device_is_compatible
+ of_find_compatible_node
+ of_find_device_by_node
+ of_find_matching_node_and_match
+ of_find_mipi_dsi_host_by_node
+ of_find_node_by_name
+ of_find_property
+ of_get_child_by_name
+ of_get_display_timings
+ of_get_drm_display_mode
+ of_get_named_gpio_flags
+ of_get_next_child
+ of_get_property
+ of_get_regulator_init_data
+ of_graph_get_remote_node
+ of_iomap
+ of_match_device
+ of_match_node
+ of_parse_phandle
+ of_platform_populate
+ of_property_count_elems_of_size
+ of_property_read_string
+ of_property_read_string_helper
+ of_property_read_u32_index
+ of_property_read_variable_u16_array
+ of_property_read_variable_u32_array
+ of_property_read_variable_u8_array
+ of_prop_next_string
+ of_reserved_mem_lookup
+ of_root
+ panic
+ panic_notifier_list
+ param_ops_bool
+ param_ops_int
+ param_ops_uint
+ perf_trace_buf_alloc
+ perf_trace_run_bpf_submit
+ pfn_valid
+ phy_disconnect
+ phy_ethtool_get_eee
+ phy_ethtool_ksettings_get
+ phy_ethtool_ksettings_set
+ phy_ethtool_set_eee
+ phy_get_eee_err
+ phy_init_eee
+ phy_mii_ioctl
+ phy_power_off
+ phy_power_on
+ phy_stop
+ physvirt_offset
+ pinctrl_lookup_state
+ pinctrl_pm_select_sleep_state
+ pinctrl_select_state
+ platform_bus_type
+ platform_device_add
+ platform_device_add_properties
+ platform_device_add_resources
+ platform_device_alloc
+ platform_device_put
+ platform_device_unregister
+ __platform_driver_register
+ platform_driver_unregister
+ platform_get_irq
+ platform_get_resource
+ platform_get_resource_byname
+ pm_qos_update_request
+ pm_runtime_allow
+ __pm_runtime_disable
+ pm_runtime_enable
+ pm_runtime_forbid
+ __pm_runtime_idle
+ __pm_runtime_resume
+ pm_runtime_set_autosuspend_delay
+ __pm_runtime_set_status
+ __pm_runtime_suspend
+ __pm_runtime_use_autosuspend
+ preempt_schedule
+ preempt_schedule_notrace
+ prepare_to_wait_event
+ print_hex_dump
+ printk
+ put_device
+ __put_page
+ __put_task_struct
+ put_unused_fd
+ queue_delayed_work_on
+ queue_work_on
+ ___ratelimit
+ _raw_spin_lock
+ _raw_spin_lock_irq
+ _raw_spin_lock_irqsave
+ _raw_spin_unlock
+ _raw_spin_unlock_irq
+ _raw_spin_unlock_irqrestore
+ __rcu_read_lock
+ __rcu_read_unlock
+ rdev_get_drvdata
+ rdev_get_id
+ refcount_dec_and_test_checked
+ refcount_inc_checked
+ refcount_inc_not_zero_checked
+ __refrigerator
+ register_pm_notifier
+ register_reboot_notifier
+ register_restart_handler
+ register_syscore_ops
+ regmap_read
+ regmap_update_bits_base
+ regmap_write
+ regulator_disable
+ regulator_enable
+ regulator_get_optional
+ regulator_list_voltage_linear
+ regulator_map_voltage_linear
+ regulator_put
+ regulator_register
+ regulator_unregister
+ release_firmware
+ __release_region
+ request_firmware
+ __request_region
+ request_threaded_irq
+ reset_control_assert
+ sched_clock
+ schedule
+ schedule_timeout
+ scnprintf
+ seq_printf
+ set_cpus_allowed_ptr
+ set_page_dirty_lock
+ sg_alloc_table
+ sg_alloc_table_from_pages
+ sg_free_table
+ sg_init_table
+ sg_next
+ simple_read_from_buffer
+ simple_strtoul
+ snprintf
+ sprintf
+ sscanf
+ __stack_chk_fail
+ __stack_chk_guard
+ strcasecmp
+ strcmp
+ strcpy
+ strlcpy
+ strlen
+ strncmp
+ strncpy
+ strnlen
+ strstr
+ subsys_system_register
+ __sw_hweight32
+ __sw_hweight64
+ sync_file_create
+ sync_file_get_fence
+ synchronize_irq
+ syscon_regmap_lookup_by_phandle
+ sysfs_create_file_ns
+ sysfs_create_group
+ sysfs_create_groups
+ sysfs_remove_group
+ system_freezing_cnt
+ system_wq
+ tasklet_init
+ tasklet_kill
+ __tasklet_schedule
+ _totalram_pages
+ trace_define_field
+ trace_event_buffer_commit
+ trace_event_buffer_reserve
+ trace_event_ignore_this_pid
+ trace_event_raw_init
+ trace_event_reg
+ trace_handle_return
+ trace_print_symbols_seq
+ trace_raw_output_prep
+ trace_seq_printf
+ __udelay
+ unregister_chrdev_region
+ unregister_pm_notifier
+ up
+ up_read
+ usb_add_hcd
+ usb_disabled
+ usb_hcd_is_primary_hcd
+ usb_put_hcd
+ usb_remove_hcd
+ __usecs_to_jiffies
+ usleep_range
+ v4l2_device_register
+ v4l2_device_unregister
+ v4l2_fh_add
+ v4l2_fh_del
+ v4l2_fh_exit
+ v4l2_fh_init
+ v4l2_subdev_init
+ vabits_actual
+ vb2_buffer_done
+ vb2_dqbuf
+ vb2_mmap
+ vb2_plane_cookie
+ vb2_plane_vaddr
+ vb2_poll
+ vb2_prepare_buf
+ vb2_qbuf
+ vb2_querybuf
+ vb2_queue_init
+ vb2_queue_release
+ vb2_reqbufs
+ vb2_streamoff
+ vb2_streamon
+ vfree
+ video_devdata
+ video_device_alloc
+ video_device_release
+ video_ioctl2
+ __video_register_device
+ video_unregister_device
+ vmalloc
+ vmalloc_to_page
+ vmap
+ vmemmap
+ vsnprintf
+ vunmap
+ vzalloc
+ wait_for_completion
+ wait_for_completion_interruptible_timeout
+ wait_for_completion_timeout
+ __wake_up
+ wake_up_process
+ __warn_printk
+ work_busy
+
+# required by adv7511.ko
+ cec_allocate_adapter
+ cec_delete_adapter
+ cec_received_msg_ts
+ cec_register_adapter
+ cec_s_phys_addr
+ cec_s_phys_addr_from_edid
+ cec_transmit_attempt_done_ts
+ cec_transmit_done_ts
+ cec_unregister_adapter
+ __devm_regmap_init_i2c
+ devm_regulator_bulk_get
+ drm_detect_hdmi_monitor
+ drm_do_get_edid
+ hdmi_avi_infoframe_init
+ hdmi_avi_infoframe_pack
+ i2c_new_ancillary_device
+ regcache_mark_dirty
+ regcache_sync
+ regmap_bulk_write
+ regmap_register_patch
+ regulator_bulk_disable
+ regulator_bulk_enable
+
+# required by bufq.ko
+ kstrndup
+
+# required by clk-exynos-audss.ko
+ __clk_get_name
+ clk_hw_register_divider
+ clk_hw_register_gate
+ clk_hw_register_mux
+ clk_hw_unregister_divider
+ clk_hw_unregister_gate
+ clk_hw_unregister_mux
+ of_clk_add_hw_provider
+ of_clk_del_provider
+ of_clk_hw_onecell_get
+ pm_runtime_force_resume
+ pm_runtime_force_suspend
+
+# required by clk_exynos.ko
+ __clk_get_hw
+ clk_hw_get_parent
+ clk_register
+ clk_register_clkdev
+ clk_register_fixed_factor
+ clk_register_fixed_rate
+ of_clk_add_provider
+ of_clk_src_onecell_get
+
+# required by cmupmucal.ko
+ pm_qos_add_request
+
+# required by dss.ko
+ __alloc_percpu
+ init_task
+ kstat
+ nr_irqs
+ of_count_phandle_with_args
+ __per_cpu_offset
+ proc_create
+ register_die_notifier
+ return_address
+ sched_show_task
+ smp_call_function
+ touch_softlockup_watchdog
+ __tracepoint_android_vh_ipi_stop
+ __tracepoint_device_pm_callback_end
+ __tracepoint_device_pm_callback_start
+ tracepoint_probe_register
+ __tracepoint_suspend_resume
+
+# required by dwc3-of-simple.ko
+ clk_bulk_enable
+ clk_bulk_get_all
+ clk_bulk_prepare
+ clk_bulk_put_all
+ of_platform_depopulate
+ of_reset_control_array_get
+ reset_control_deassert
+ reset_control_put
+ reset_control_reset
+
+# required by dwc3.ko
+ dev_fwnode
+ device_property_read_string
+ device_property_read_u8_array
+ devm_regulator_get
+ devm_usb_get_phy
+ extcon_find_edev_by_node
+ extcon_get_edev_by_phandle
+ extcon_get_extcon_dev
+ extcon_get_state
+ extcon_register_notifier
+ extcon_unregister_notifier
+ of_usb_get_phy_mode
+ phy_calibrate
+ phy_create_lookup
+ phy_exit
+ phy_init
+ phy_remove_lookup
+ phy_reset
+ phy_set_mode_ext
+ platform_device_add_data
+ platform_device_del
+ platform_get_irq_byname_optional
+ typec_register_partner
+ typec_register_port
+ typec_set_data_role
+ typec_set_pwr_opmode
+ typec_set_pwr_role
+ typec_unregister_partner
+ typec_unregister_port
+ usb_add_gadget_udc
+ usb_decode_ctrl
+ usb_del_gadget_udc
+ usb_ep_set_maxpacket_limit
+ usb_gadget_giveback_request
+ usb_gadget_map_request_by_dev
+ usb_gadget_set_state
+ usb_gadget_udc_reset
+ usb_gadget_unmap_request_by_dev
+ usb_gadget_vbus_connect
+ usb_gadget_vbus_disconnect
+ usb_get_dr_mode
+ usb_get_maximum_speed
+ usb_otg_state_string
+ usb_role_switch_register
+ usb_role_switch_unregister
+ wakeup_source_register
+ wakeup_source_unregister
+
+# required by ect_parser.ko
+ seq_lseek
+ seq_read
+ single_open
+ single_release
+
+# required by exynos-acme.ko
+ bitmap_parselist
+ __cpu_active_mask
+ cpufreq_cpu_get
+ cpufreq_cpu_get_raw
+ cpufreq_cpu_put
+ __cpufreq_driver_target
+ cpufreq_freq_transition_begin
+ cpufreq_freq_transition_end
+ cpufreq_frequency_table_verify
+ cpufreq_generic_attr
+ cpufreq_register_driver
+ cpufreq_table_index_unsorted
+ cpuhp_tasks_frozen
+ freq_qos_add_request
+ freq_qos_update_request
+ get_cpu_device
+ strsep
+ system_state
+
+# required by exynos-chipid_v2.ko
+ of_find_node_opts_by_path
+ soc_device_register
+
+# required by exynos-pd.ko
+ of_genpd_add_provider_simple
+ pm_genpd_add_subdomain
+ pm_genpd_init
+
+# required by exynos-pd_el3.ko
+ __arm_smccc_smc
+
+# required by exynos-pmu-if.ko
+ cpu_topology
+
+# required by exynos-reboot.ko
+ pm_power_off
+
+# required by exynos9drm.ko
+ add_wait_queue
+ bus_find_device
+ component_add
+ component_bind_all
+ component_del
+ component_master_add_with_match
+ component_master_del
+ component_unbind_all
+ console_trylock
+ console_unlock
+ device_rename
+ drm_atomic_helper_async_check
+ drm_atomic_helper_check
+ drm_atomic_helper_cleanup_planes
+ drm_atomic_helper_commit
+ drm_atomic_helper_commit_modeset_disables
+ drm_atomic_helper_commit_modeset_enables
+ drm_atomic_helper_commit_planes
+ drm_atomic_helper_crtc_destroy_state
+ drm_atomic_helper_crtc_duplicate_state
+ drm_atomic_helper_crtc_reset
+ drm_atomic_helper_disable_plane
+ drm_atomic_helper_disable_planes_on_crtc
+ drm_atomic_helper_fake_vblank
+ drm_atomic_helper_page_flip
+ __drm_atomic_helper_plane_destroy_state
+ __drm_atomic_helper_plane_duplicate_state
+ __drm_atomic_helper_plane_reset
+ drm_atomic_helper_set_config
+ drm_atomic_helper_shutdown
+ drm_atomic_helper_update_plane
+ drm_atomic_helper_wait_for_vblanks
+ drm_atomic_normalize_zpos
+ drm_atomic_private_obj_init
+ drm_bridge_attach
+ drm_compat_ioctl
+ drm_connector_list_iter_begin
+ drm_connector_list_iter_end
+ drm_connector_list_iter_next
+ drm_connector_set_path_property
+ drm_connector_set_tile_property
+ drm_connector_unregister
+ drm_crtc_arm_vblank_event
+ drm_crtc_cleanup
+ __drm_crtc_commit_free
+ drm_crtc_handle_vblank
+ drm_crtc_init_with_planes
+ drm_crtc_send_vblank_event
+ drm_crtc_vblank_count
+ drm_crtc_vblank_get
+ drm_crtc_vblank_off
+ drm_crtc_vblank_on
+ drm_crtc_vblank_put
+ drm_crtc_vblank_waitqueue
+ drm_dbg
+ drm_dev_alloc
+ drm_dev_dbg
+ drm_dev_printk
+ drm_dev_put
+ drm_dev_register
+ drm_dev_unregister
+ drm_display_mode_to_videomode
+ drm_dp_aux_register
+ drm_dp_aux_unregister
+ drm_dp_bw_code_to_link_rate
+ drm_dp_calc_pbn_mode
+ drm_dp_channel_eq_ok
+ drm_dp_check_act_status
+ drm_dp_clock_recovery_ok
+ drm_dp_dpcd_read
+ drm_dp_dpcd_read_link_status
+ drm_dp_dpcd_write
+ drm_dp_dsc_sink_line_buf_depth
+ drm_dp_dsc_sink_max_slice_count
+ drm_dp_find_vcpi_slots
+ drm_dp_link_train_channel_eq_delay
+ drm_dp_link_train_clock_recovery_delay
+ drm_dp_mst_allocate_vcpi
+ drm_dp_mst_deallocate_vcpi
+ drm_dp_mst_detect_port
+ drm_dp_mst_hpd_irq
+ drm_dp_mst_put_port_malloc
+ drm_dp_mst_reset_vcpi_slots
+ drm_dp_mst_topology_mgr_init
+ drm_dp_mst_topology_mgr_set_mst
+ drm_dp_mst_topology_state_funcs
+ drm_dp_update_payload_part1
+ drm_dp_update_payload_part2
+ drm_dsc_compute_rc_parameters
+ drm_dsc_pps_payload_pack
+ drm_encoder_cleanup
+ drm_encoder_init
+ drm_flip_work_cleanup
+ drm_flip_work_commit
+ drm_flip_work_init
+ drm_flip_work_queue
+ drm_framebuffer_cleanup
+ drm_framebuffer_init
+ drm_gem_create_mmap_offset
+ drm_gem_handle_create
+ drm_gem_mmap
+ drm_gem_object_lookup
+ drm_gem_object_put
+ drm_gem_object_put_unlocked
+ drm_gem_object_release
+ drm_gem_prime_fd_to_handle
+ drm_gem_prime_handle_to_fd
+ drm_gem_private_object_init
+ drm_gem_vm_close
+ drm_gem_vm_open
+ drm_get_connector_status_name
+ drm_get_edid
+ drm_get_format_info
+ drm_helper_connector_dpms
+ drm_helper_hpd_irq_event
+ drm_helper_mode_fill_fb_struct
+ drm_ioctl
+ drm_kms_helper_poll_fini
+ drm_kms_helper_poll_init
+ drm_mode_config_cleanup
+ drm_mode_config_helper_resume
+ drm_mode_config_helper_suspend
+ drm_mode_config_init
+ drm_mode_config_reset
+ drm_mode_object_find
+ drm_mode_object_get
+ drm_mode_object_put
+ drm_object_attach_property
+ drm_of_component_match_add
+ drm_of_crtc_port_mask
+ drm_of_find_possible_crtcs
+ drm_open
+ drm_panel_attach
+ drm_panel_disable
+ drm_panel_enable
+ drm_panel_get_modes
+ drm_panel_prepare
+ drm_panel_unprepare
+ drm_plane_cleanup
+ drm_plane_create_zpos_immutable_property
+ drm_plane_create_zpos_property
+ drm_poll
+ drm_prime_gem_destroy
+ drm_property_add_enum
+ drm_property_create
+ drm_property_create_range
+ drm_property_destroy
+ drm_read
+ drm_release
+ drm_universal_plane_init
+ drm_vblank_init
+ mipi_dsi_host_register
+ mipi_dsi_host_unregister
+ of_drm_find_bridge
+ of_drm_find_panel
+ of_get_next_available_child
+ of_graph_get_endpoint_by_regs
+ of_graph_get_endpoint_count
+ of_graph_get_next_endpoint
+ of_graph_get_port_by_id
+ of_graph_get_remote_port
+ of_graph_get_remote_port_parent
+ of_graph_parse_endpoint
+ of_io_request_and_map
+ of_platform_device_create
+ of_platform_device_destroy
+ of_property_match_string
+ strlcat
+ videomode_from_timings
+
+# required by exynos_devfreq.ko
+ devfreq_add_device
+ devfreq_add_governor
+ devfreq_recommended_opp
+ devfreq_register_opp_notifier
+ devfreq_remove_device
+ devfreq_unregister_opp_notifier
+ dev_pm_opp_disable
+ dev_pm_opp_get_freq
+ dev_pm_opp_put
+ unregister_reboot_notifier
+ update_devfreq
+
+# required by exynos_mfc.ko
+ iommu_dma_reserve_iova
+ iommu_get_domain_for_dev
+ iommu_map_sg
+ iommu_unmap
+ mutex_lock_interruptible
+ ns_to_timeval
+
+# required by exynos_pm_qos.ko
+ kstrtoint_from_user
+ noop_llseek
+ _raw_read_lock_irqsave
+ _raw_read_unlock_irqrestore
+
+# required by exynos_thermal.ko
+ of_thermal_get_ntrips
+ of_thermal_is_trip_valid
+ thermal_zone_device_update
+ thermal_zone_of_sensor_register
+ thermal_zone_of_sensor_unregister
+
+# required by exynos_tty.ko
+ dma_get_slave_caps
+ dma_request_chan
+ do_SAK
+ handle_sysrq
+ register_console
+ tty_flip_buffer_push
+ tty_insert_flip_string_fixed_flag
+ tty_kref_put
+ tty_port_tty_get
+ uart_add_one_port
+ uart_console_write
+ uart_get_baud_rate
+ uart_parse_options
+ uart_register_driver
+ uart_remove_one_port
+ uart_resume_port
+ uart_set_options
+ uart_suspend_port
+ uart_unregister_driver
+ uart_update_timeout
+ uart_write_wakeup
+
+# required by exynosauto9-itmon.ko
+ atomic_notifier_chain_unregister
+
+# required by g2d.ko
+ __arch_copy_in_user
+ compat_alloc_user_space
+ device_get_dma_attr
+ dma_fence_signal_locked
+ frame_vector_create
+ frame_vector_destroy
+ get_vaddr_frames
+ put_vaddr_frames
+
+# required by i2c-dev.ko
+ bus_register_notifier
+ bus_unregister_notifier
+ cdev_device_add
+ cdev_device_del
+ i2c_adapter_type
+ i2c_bus_type
+ i2c_for_each_dev
+ i2c_put_adapter
+ i2c_smbus_xfer
+ i2c_transfer_buffer_flags
+ i2c_verify_client
+ register_chrdev_region
+
+# required by i2c-exynosauto.ko
+ i2c_del_adapter
+
+# required by ion_exynos_mod.ko
+ adjust_managed_page_count
+ arch_setup_dma_ops
+ cma_alloc
+ cma_get_name
+ cma_release
+ contig_page_data
+ gen_pool_add_owner
+ gen_pool_alloc_algo_owner
+ gen_pool_create
+ gen_pool_destroy
+ gen_pool_free_owner
+ ion_buffer_prep_noncached
+ ion_buffer_zero
+ __ion_device_add_heap
+ ion_device_remove_heap
+ ion_free
+ ion_heap_map_kernel
+ ion_heap_map_user
+ ion_heap_unmap_kernel
+ kthread_should_stop
+ list_sort
+ mod_node_page_state
+ of_reserved_mem_device_init_by_idx
+ of_reserved_mem_device_release
+ register_oom_notifier
+ sched_setscheduler
+
+# required by mali_kbase.ko
+ anon_inode_getfd
+ __arch_clear_user
+ __bitmap_weight
+ bpf_trace_run5
+ cache_line_size
+ clear_page
+ __clk_is_enabled
+ __close_fd
+ dev_pm_opp_of_add_table
+ dev_pm_opp_of_remove_table
+ dev_pm_opp_put_regulators
+ dev_pm_opp_set_regulators
+ dma_fence_get_status
+ downgrade_write
+ down_write
+ dump_stack
+ __get_task_comm
+ get_user_pages_fast
+ get_user_pages_remote
+ hrtimer_active
+ hrtimer_cancel
+ hrtimer_forward
+ hrtimer_init
+ hrtimer_start_range_ns
+ kfree_call_rcu
+ kobject_put
+ ktime_get_raw
+ __mmdrop
+ module_put
+ of_machine_is_compatible
+ param_ops_byte
+ rb_erase
+ rb_first
+ rb_insert_color
+ rb_next
+ rb_prev
+ rb_replace_node
+ register_shrinker
+ remap_pfn_range
+ remap_vmalloc_range
+ static_key_slow_dec
+ static_key_slow_inc
+ strcspn
+ strncasecmp
+ synchronize_rcu
+ sysfs_remove_file_ns
+ sysfs_streq
+ system_highpri_wq
+ trace_output_call
+ __tracepoint_gpu_mem_total
+ trace_print_array_seq
+ trace_print_flags_seq
+ try_module_get
+ unmap_mapping_range
+ unregister_shrinker
+ up_write
+ vmalloc_user
+ vmf_insert_pfn_prot
+
+# required by marvell.ko
+ __genphy_config_aneg
+ genphy_loopback
+ genphy_read_status
+ genphy_restart_aneg
+ genphy_resume
+ genphy_setup_forced
+ genphy_soft_reset
+ genphy_suspend
+ genphy_update_link
+ __mdiobus_read
+ __mdiobus_write
+ phy_drivers_register
+ phy_drivers_unregister
+ phy_gbit_fibre_features
+ __phy_modify
+ phy_modify
+ phy_modify_paged
+ phy_read_paged
+ phy_restore_page
+ phy_save_page
+ phy_select_page
+ phy_write_paged
+
+# required by mcDrvModule.ko
+ alloc_chrdev_region
+ cdev_add
+ cdev_del
+ crypto_alloc_shash
+ crypto_destroy_tfm
+ crypto_shash_final
+ crypto_shash_update
+ d_path
+ get_task_exe_file
+ get_zeroed_page
+ release_pages
+ sg_miter_next
+ sg_miter_start
+ sg_miter_stop
+ wait_for_completion_interruptible
+ wait_for_completion_killable
+
+# required by panel-samsung-dummy.ko
+ drm_panel_add
+ drm_panel_init
+ drm_panel_remove
+ videomode_from_timing
+
+# required by pcie-exynos-dw-ep.ko
+ dw_pcie_ep_init
+ dw_pcie_read_dbi
+ dw_pcie_write_dbi
+ pci_epc_clear_bar
+ pci_epc_map_addr
+ pci_epc_mem_alloc_addr
+ pci_epc_mem_free_addr
+ pci_epc_set_bar
+ pci_epc_unmap_addr
+
+# required by pcie-exynos-dw-rc.ko
+ bitmap_find_free_region
+ bitmap_release_region
+ dw_pcie_host_init
+ dw_pcie_msi_init
+ dw_pcie_read
+ dw_pcie_setup_rc
+ dw_pcie_write
+ irq_chip_ack_parent
+ irq_chip_mask_parent
+ irq_chip_unmask_parent
+ irq_domain_get_irq_data
+ irq_domain_set_info
+ irq_domain_update_bus_token
+ pcie_set_mps
+ pci_find_bus
+ pci_get_device
+ pci_load_saved_state
+ pci_msi_create_irq_domain
+ pci_msi_mask_irq
+ pci_msi_unmask_irq
+ pci_rescan_bus
+ pci_restore_state
+ pci_save_state
+ pci_store_saved_state
+
+# required by phylink.ko
+ __bitmap_or
+ dev_printk
+ fwnode_get_named_child_node
+ fwnode_get_named_gpiod
+ fwnode_handle_put
+ fwnode_property_get_reference_args
+ fwnode_property_present
+ fwnode_property_read_string
+ fwnode_property_read_u32_array
+ gpiod_get_value_cansleep
+ gpiod_put
+ netdev_printk
+ netif_carrier_on
+ of_phy_attach
+ phy_attach_direct
+ phy_detach
+ phy_duplex_to_str
+ phy_ethtool_get_wol
+ phy_ethtool_set_wol
+ phy_lookup_setting
+ phy_request_interrupt
+ phy_restart_aneg
+ phy_set_asym_pause
+ phy_speed_to_str
+ phy_start
+ rtnl_is_locked
+ swphy_read_reg
+ system_power_efficient_wq
+
+# required by pinctrl-samsung-core.ko
+ devm_gpiochip_add_data
+ devm_pinctrl_register
+ gpiochip_generic_free
+ gpiochip_generic_request
+ gpiochip_get_data
+ gpiochip_lock_as_irq
+ gpiochip_unlock_as_irq
+ irq_create_mapping
+ irq_domain_xlate_twocell
+ irq_set_chained_handler_and_data
+ of_node_name_eq
+ pinctrl_add_gpio_range
+ pinctrl_dev_get_drvdata
+ pinctrl_remove_gpio_range
+
+# required by pl330.ko
+ amba_driver_register
+ amba_driver_unregister
+ dma_async_device_register
+ dma_async_device_unregister
+ dma_async_tx_descriptor_init
+ dma_direct_map_resource
+ dmaengine_unmap_put
+ dma_get_slave_channel
+ of_dma_controller_free
+ of_dma_controller_register
+ pm_runtime_irq_safe
+
+# required by rtc-s2vps01.ko
+ devm_rtc_device_register
+ pm_wakeup_ws_event
+ rtc_time64_to_tm
+ rtc_tm_to_time64
+ rtc_update_irq
+ rtc_valid_tm
+
+# required by s3c2410_wdt.ko
+ rtc_class_close
+ rtc_class_open
+ rtc_read_time
+ watchdog_init_timeout
+ watchdog_register_device
+ watchdog_set_restart_priority
+ watchdog_unregister_device
+
+# required by sam-is-cis-4ec.ko
+ v4l2_i2c_subdev_init
+
+# required by sam-is.ko
+ down_interruptible
+ filp_close
+ filp_open
+ get_random_u32
+ get_task_pid
+ i2c_new_device
+ jiffies_to_msecs
+ kstrtou16
+ kthread_flush_work
+ kthread_flush_worker
+ ktime_get_ts64
+ ktime_get_with_offset
+ mutex_trylock
+ ns_to_timespec
+ param_ops_string
+ phy_configure
+ pm_relax
+ pm_stay_awake
+ regulator_get_voltage
+ regulator_is_enabled
+ regulator_set_voltage
+ sched_setscheduler_nocheck
+ v4l2_device_register_subdev
+ v4l2_device_set_name
+ v4l2_device_unregister_subdev
+ v4l2_subdev_call_wrappers
+ vscnprintf
+
+# required by samsung-iommu-group.ko
+ iommu_group_alloc
+ iommu_group_set_name
+
+# required by samsung-seqos.ko
+ alloc_etherdev_mqs
+ capable
+ consume_skb
+ dev_close
+ device_set_wakeup_capable
+ device_set_wakeup_enable
+ __dev_kfree_skb_any
+ dev_open
+ dql_completed
+ dql_reset
+ eth_mac_addr
+ ethtool_op_get_link
+ ethtool_op_get_ts_info
+ eth_type_trans
+ free_netdev
+ in4_pton
+ in6_pton
+ jiffies_to_usecs
+ mdiobus_alloc_size
+ mdiobus_free
+ mdiobus_get_phy
+ __mdiobus_register
+ mdiobus_unregister
+ napi_complete_done
+ napi_disable
+ napi_gro_receive
+ __napi_schedule
+ __napi_schedule_irqoff
+ napi_schedule_prep
+ netdev_alert
+ __netdev_alloc_skb
+ netdev_err
+ netdev_info
+ netdev_update_features
+ netdev_warn
+ netif_device_attach
+ netif_device_detach
+ netif_napi_add
+ netif_napi_del
+ netif_schedule_queue
+ netif_set_real_num_rx_queues
+ netif_set_real_num_tx_queues
+ netif_tx_wake_queue
+ net_ratelimit
+ ns_to_timespec64
+ of_get_mac_address
+ of_get_phy_mode
+ of_mdiobus_register
+ of_phy_deregister_fixed_link
+ of_phy_is_fixed_link
+ of_phy_register_fixed_link
+ phy_attached_info
+ phy_ethtool_nway_reset
+ phy_mac_interrupt
+ phy_resume
+ phy_start_aneg
+ phy_suspend
+ pinctrl_pm_select_default_state
+ platform_get_irq_byname
+ pm_wakeup_dev_event
+ _raw_spin_lock_bh
+ _raw_spin_unlock_bh
+ register_netdev
+ rtnl_lock
+ rtnl_unlock
+ skb_pull
+ skb_put
+ skb_tstamp_tx
+ unregister_netdev
+
+# required by samsung_iommu.ko
+ bus_set_iommu
+ device_link_add
+ device_link_del
+ devres_add
+ devres_alloc_node
+ iommu_attach_group
+ iommu_device_link
+ iommu_device_register
+ iommu_device_sysfs_add
+ iommu_device_sysfs_remove
+ iommu_device_unlink
+ iommu_device_unregister
+ iommu_domain_alloc
+ iommu_fwspec_add_ids
+ iommu_fwspec_free
+ iommu_get_dma_cookie
+ iommu_group_for_each_dev
+ iommu_group_get
+ iommu_group_get_for_dev
+ iommu_group_get_iommudata
+ iommu_group_put
+ iommu_group_remove_device
+ iommu_group_set_iommudata
+ iommu_put_dma_cookie
+ iommu_report_device_fault
+ kmem_cache_create
+ kmem_cache_destroy
+ of_get_dma_window
+ pm_runtime_get_if_in_use
+
+# required by scaler.ko
+ clk_set_parent
+ pm_qos_remove_request
+ sort
+ v4l2_ctrl_handler_free
+ v4l2_ctrl_handler_init_class
+ v4l2_ctrl_handler_setup
+ v4l2_ctrl_new_custom
+ v4l2_ctrl_new_std
+ v4l_bound_align_image
+
+# required by spi-exynosauto.ko
+ loops_per_jiffy
+ __spi_alloc_controller
+ spi_controller_resume
+ spi_controller_suspend
+ spi_finalize_current_message
+ spi_register_controller
+ spi_unregister_controller
+
+# required by spidev.ko
+ driver_unregister
+ find_next_zero_bit
+ __register_chrdev
+ __spi_register_driver
+ spi_setup
+ spi_sync
+ stream_open
+ __unregister_chrdev
+
+# required by ufs-exynos-core.ko
+ ufshcd_config_pwr_mode
+ ufshcd_dme_get_attr
+ ufshcd_dme_set_attr
+ ufshcd_pltfrm_init
+ ufshcd_remove
+ ufshcd_shutdown
+ ufshcd_system_resume
+ ufshcd_system_suspend
+
+# required by v4l2-mem2mem.ko
+ media_create_intf_link
+ media_create_pad_link
+ media_device_register_entity
+ media_device_unregister_entity
+ media_devnode_create
+ media_devnode_remove
+ media_entity_pads_init
+ media_entity_remove_links
+ media_remove_intf_links
+ v4l2_event_pending
+ vb2_create_bufs
+ vb2_expbuf
+ vb2_request_object_is_buffer
+
+# required by videobuf2-dma-sg.ko
+ kvfree
+ kvmalloc_node
+ split_page
+ vb2_common_vm_ops
+ vb2_create_framevec
+ vb2_destroy_framevec
+ vm_map_pages
+ vm_map_ram
+ vm_unmap_ram
+
+# required by xhci-hcd.ko
+ dma_pool_alloc
+ dma_pool_create
+ dma_pool_destroy
+ dma_pool_free
+ param_ops_ullong
+ pci_alloc_irq_vectors_affinity
+ pci_free_irq_vectors
+ pci_irq_vector
+ radix_tree_delete
+ radix_tree_insert
+ radix_tree_lookup
+ radix_tree_maybe_preload
+ schedule_timeout_uninterruptible
+ sg_pcopy_from_buffer
+ sg_pcopy_to_buffer
+ usb_amd_dev_put
+ usb_amd_pt_check_port
+ usb_amd_quirk_pll_disable
+ usb_amd_quirk_pll_enable
+ usb_asmedia_modifyflowcontrol
+ usb_disable_xhci_ports
+ usb_hcd_check_unlink_urb
+ usb_hcd_end_port_resume
+ usb_hcd_giveback_urb
+ usb_hc_died
+ usb_hcd_irq
+ usb_hcd_link_urb_to_ep
+ usb_hcd_map_urb_for_dma
+ usb_hcd_poll_rh_status
+ usb_hcd_resume_root_hub
+ usb_hcd_start_port_resume
+ usb_hcd_unlink_urb_from_ep
+ usb_hub_clear_tt_buffer
+ usb_root_hub_lost_power
+ usb_wakeup_notification
+
+# required by xhci-pci.ko
+ pci_d3cold_disable
+ pci_read_config_byte
+ __pci_register_driver
+ pci_set_mwi
+ pci_set_power_state
+ pci_unregister_driver
+ usb_amd_quirk_pll_check
+ usb_create_shared_hcd
+ usb_enable_intel_xhci_ports
+ usb_hcd_pci_pm_ops
+ usb_hcd_pci_probe
+ usb_hcd_pci_remove
+ usb_hcd_pci_shutdown
+
+# required by xhci-plat-hcd.ko
+ device_wakeup_enable
+ devm_clk_get_optional
+ of_fwnode_ops
+ of_usb_host_tpl_support
+ pci_bus_type
+ __usb_create_hcd
+ usb_hcd_platform_shutdown
diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy
index 400b3a7699ca..7d254cd6dd84 100644
--- a/android/abi_gki_aarch64_galaxy
+++ b/android/abi_gki_aarch64_galaxy
@@ -144,8 +144,11 @@
__spi_alloc_controller
__spi_register_driver
__spmi_driver_register
+ __srcu_read_lock
+ __srcu_read_unlock
__stack_chk_fail
__stack_chk_guard
+ __sw_hweight8
__sw_hweight32
__sw_hweight64
__sync_dirty_buffer
@@ -177,6 +180,7 @@
__wake_up
__wake_up_locked
__warn_printk
+ __xa_alloc
_bcd2bin
_bin2bcd
_copy_from_iter_full
@@ -441,6 +445,7 @@
cpufreq_table_index_unsorted
cpufreq_unregister_driver
cpufreq_unregister_notifier
+ cpufreq_update_policy
cpuhp_tasks_frozen
cpuidle_pause_and_lock
cpuidle_resume_and_unlock
@@ -457,6 +462,8 @@
crypto_destroy_tfm
crypto_register_rngs
crypto_shash_digest
+ crypto_shash_final
+ crypto_shash_update
crypto_unregister_rngs
csum_partial
d_add
@@ -575,6 +582,7 @@
devm_gpio_request_one
devm_gpiochip_add_data
devm_gpiod_get
+ devm_gpiod_get_index
devm_gpiod_get_optional
devm_iio_channel_get
devm_iio_device_alloc
@@ -678,6 +686,7 @@
dma_fence_context_alloc
dma_fence_default_wait
dma_fence_enable_sw_signaling
+ dma_fence_free
dma_fence_get_status
dma_fence_init
dma_fence_release
@@ -1079,6 +1088,7 @@
gpiod_direction_input
gpiod_direction_output
gpiod_direction_output_raw
+ gpiod_cansleep
gpiod_get_optional
gpiod_get_raw_value
gpiod_get_raw_value_cansleep
@@ -1115,6 +1125,7 @@
hrtimer_try_to_cancel
hvc_alloc
hvc_kick
+ hvc_poll
hvc_remove
hwrng_register
hwrng_unregister
@@ -1192,6 +1203,7 @@
in6_pton
init_dummy_netdev
init_net
+ init_srcu_struct
init_task
init_timer_key
init_uts_ns
@@ -1336,6 +1348,7 @@
kernel_kobj
kernel_read
kernel_recvmsg
+ kernel_restart
kernel_sendmsg
kernel_setsockopt
kernel_write
@@ -1376,6 +1389,7 @@
kstat
kstrdup
kstrdup_quotable
+ kstrdup_quotable_cmdline
kstrndup
kstrtobool
kstrtobool_from_user
@@ -1812,6 +1826,7 @@
power_supply_unregister
preempt_schedule
preempt_schedule_notrace
+ prepare_to_wait
prepare_to_wait_event
print_hex_dump
printk
@@ -1913,6 +1928,7 @@
regulator_enable
regulator_force_disable
regulator_get
+ regulator_get_current_limit
regulator_get_mode
regulator_get_optional
regulator_get_voltage
@@ -1933,6 +1949,7 @@
regulatory_hint
release_firmware
release_sock
+ regmap_mmio_detach_clk
remap_pfn_range
remap_vmalloc_range
remove_proc_entry
@@ -2113,6 +2130,7 @@
smp_call_function_single
smp_call_function_single_async
smp_call_on_cpu
+ smpboot_register_percpu_thread
smpboot_unregister_percpu_thread
snd_card_free
snd_card_new
@@ -2321,6 +2339,7 @@
sync_filesystem
synchronize_irq
synchronize_rcu
+ synchronize_srcu
sys_tz
syscon_node_to_regmap
syscon_regmap_lookup_by_phandle
@@ -2379,6 +2398,7 @@
trace_raw_output_prep
trace_seq_printf
tracepoint_probe_register
+ tracing_off
truncate_inode_pages
try_module_get
try_wait_for_completion
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
index 2eec223cb60a..e1cc280307ec 100644
--- a/android/abi_gki_aarch64_qcom
+++ b/android/abi_gki_aarch64_qcom
@@ -164,6 +164,7 @@
cfg80211_scan_done
cfg80211_sched_scan_results
__cfg80211_send_event_skb
+ cfg80211_stop_iface
cfg80211_tdls_oper_request
cfg80211_unlink_bss
cfg80211_update_owe_info_event
@@ -663,6 +664,7 @@
drm_connector_list_iter_end
drm_connector_list_iter_next
drm_connector_register
+ drm_connector_set_tile_property
drm_connector_unregister
drm_connector_update_edid_property
drm_crtc_cleanup
@@ -781,9 +783,11 @@
drm_mode_copy
drm_mode_create
drm_mode_create_dp_colorspace_property
+ drm_mode_create_tile_group
drm_mode_debug_printmodeline
drm_mode_duplicate
drm_mode_equal
+ drm_mode_get_tile_group
drm_mode_object_find
drm_mode_object_get
drm_mode_object_put
@@ -1882,6 +1886,8 @@
register_shrinker
register_syscore_ops
register_sysctl_table
+ register_virtio_device
+ register_virtio_driver
regmap_bulk_read
regmap_bulk_write
regmap_field_read
@@ -2485,6 +2491,8 @@
unregister_shrinker
unregister_syscore_ops
unregister_sysctl_table
+ unregister_virtio_device
+ unregister_virtio_driver
up
update_devfreq
up_read
@@ -2741,6 +2749,29 @@
video_ioctl2
__video_register_device
video_unregister_device
+ virtio_check_driver_offered_feature
+ virtio_config_changed
+ virtio_max_dma_size
+ virtqueue_add_inbuf
+ virtqueue_add_inbuf_ctx
+ virtqueue_add_outbuf
+ virtqueue_add_sgs
+ virtqueue_detach_unused_buf
+ virtqueue_disable_cb
+ virtqueue_enable_cb
+ virtqueue_enable_cb_delayed
+ virtqueue_enable_cb_prepare
+ virtqueue_get_avail_addr
+ virtqueue_get_buf
+ virtqueue_get_buf_ctx
+ virtqueue_get_desc_addr
+ virtqueue_get_used_addr
+ virtqueue_get_vring_size
+ virtqueue_is_broken
+ virtqueue_kick
+ virtqueue_kick_prepare
+ virtqueue_notify
+ virtqueue_poll
vmalloc
vmalloc_to_page
vmalloc_user
@@ -2754,6 +2785,10 @@
vm_map_ram
vm_unmap_ram
vprintk
+ vring_create_virtqueue
+ vring_del_virtqueue
+ vring_interrupt
+ vring_transport_features
vscnprintf
vsnprintf
vunmap
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig
index 519ff58e67b3..0afcae9f7cf8 100644
--- a/arch/arm/configs/bcm2835_defconfig
+++ b/arch/arm/configs/bcm2835_defconfig
@@ -178,6 +178,7 @@ CONFIG_SCHED_TRACER=y
CONFIG_STACK_TRACER=y
CONFIG_FUNCTION_PROFILER=y
CONFIG_TEST_KSTRTOX=y
+CONFIG_DEBUG_FS=y
CONFIG_KGDB=y
CONFIG_KGDB_KDB=y
CONFIG_STRICT_DEVMEM=y
diff --git a/arch/arm/configs/socfpga_defconfig b/arch/arm/configs/socfpga_defconfig
index fe2e1e82e233..e73c97b0f5b0 100644
--- a/arch/arm/configs/socfpga_defconfig
+++ b/arch/arm/configs/socfpga_defconfig
@@ -157,6 +157,7 @@ CONFIG_NLS_ISO8859_1=y
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_INFO=y
CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_FS=y
CONFIG_DETECT_HUNG_TASK=y
# CONFIG_SCHED_DEBUG is not set
CONFIG_FUNCTION_TRACER=y
diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
index 996a934ece7d..267bd182946d 100644
--- a/arch/mips/vdso/Makefile
+++ b/arch/mips/vdso/Makefile
@@ -18,6 +18,10 @@ ccflags-vdso := \
$(filter -mno-loongson-%,$(KBUILD_CFLAGS)) \
-D__VDSO__
+ifndef CONFIG_64BIT
+ccflags-vdso += -DBUILD_VDSO32
+endif
+
ifdef CONFIG_CC_IS_CLANG
ccflags-vdso += $(filter --target=%,$(KBUILD_CFLAGS))
endif
diff --git a/arch/x86/include/asm/vgtod.h b/arch/x86/include/asm/vgtod.h
index a2638c6124ed..f3fe0057647c 100644
--- a/arch/x86/include/asm/vgtod.h
+++ b/arch/x86/include/asm/vgtod.h
@@ -2,6 +2,11 @@
#ifndef _ASM_X86_VGTOD_H
#define _ASM_X86_VGTOD_H
+/*
+ * This check is required to prevent ARCH=um to include
+ * unwanted headers.
+ */
+#ifdef CONFIG_GENERIC_GETTIMEOFDAY
#include
#include
#include
@@ -14,6 +19,7 @@ typedef u64 gtod_long_t;
#else
typedef unsigned long gtod_long_t;
#endif
+#endif /* CONFIG_GENERIC_GETTIMEOFDAY */
extern int vclocks_used;
static inline bool vclock_was_used(int vclock)
diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64
index b5aef871837c..58ea308926f0 100644
--- a/build.config.gki.aarch64
+++ b/build.config.gki.aarch64
@@ -8,6 +8,7 @@ ADDITIONAL_KMI_SYMBOL_LISTS="
android/abi_gki_aarch64_cuttlefish
android/abi_gki_aarch64_db845c
android/abi_gki_aarch64_exynos
+android/abi_gki_aarch64_exynosauto
android/abi_gki_aarch64_galaxy
android/abi_gki_aarch64_goldfish
android/abi_gki_aarch64_hikey960
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 67e58a4ca3f4..0d9fe94b7089 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -806,9 +806,7 @@ static void device_link_put_kref(struct device_link *link)
void device_link_del(struct device_link *link)
{
device_links_write_lock();
- device_pm_lock();
device_link_put_kref(link);
- device_pm_unlock();
device_links_write_unlock();
}
EXPORT_SYMBOL_GPL(device_link_del);
@@ -829,7 +827,6 @@ void device_link_remove(void *consumer, struct device *supplier)
return;
device_links_write_lock();
- device_pm_lock();
list_for_each_entry(link, &supplier->links.consumers, s_node) {
if (link->consumer == consumer) {
@@ -838,7 +835,6 @@ void device_link_remove(void *consumer, struct device *supplier)
}
}
- device_pm_unlock();
device_links_write_unlock();
}
EXPORT_SYMBOL_GPL(device_link_remove);
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 966c7277f6c9..5c023ecb922c 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -449,6 +449,10 @@
#define USB_VENDOR_ID_FRUCTEL 0x25B6
#define USB_DEVICE_ID_GAMETEL_MT_MODE 0x0002
+#define USB_VENDOR_ID_GAMEVICE 0x27F8
+#define USB_DEVICE_ID_GAMEVICE_GV186 0x0BBE
+#define USB_DEVICE_ID_GAMEVICE_KISHI 0x0BBF
+
#define USB_VENDOR_ID_GAMERON 0x0810
#define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001
#define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR 0x0002
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
index 1e666cd3d090..f3042643e4dd 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
@@ -84,6 +84,10 @@ static const struct hid_device_id hid_quirks[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28), HID_QUIRK_NOGET },
{ HID_USB_DEVICE(USB_VENDOR_ID_FUTABA, USB_DEVICE_ID_LED_DISPLAY), HID_QUIRK_NO_INIT_REPORTS },
{ HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, USB_DEVICE_ID_GREENASIA_DUAL_USB_JOYPAD), HID_QUIRK_MULTI_INPUT },
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_GV186),
+ HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
+ { HID_USB_DEVICE(USB_VENDOR_ID_GAMEVICE, USB_DEVICE_ID_GAMEVICE_KISHI),
+ HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE },
{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING), HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },
diff --git a/drivers/mfd/sprd-sc27xx-spi.c b/drivers/mfd/sprd-sc27xx-spi.c
index ebdf2f11ae28..bb502f4c56df 100644
--- a/drivers/mfd/sprd-sc27xx-spi.c
+++ b/drivers/mfd/sprd-sc27xx-spi.c
@@ -256,7 +256,7 @@ static int sprd_pmic_probe(struct spi_device *spi)
}
ret = devm_regmap_add_irq_chip(&spi->dev, ddata->regmap, ddata->irq,
- IRQF_ONESHOT | IRQF_NO_SUSPEND, 0,
+ IRQF_ONESHOT, 0,
&ddata->irq_chip, &ddata->irq_data);
if (ret) {
dev_err(&spi->dev, "Failed to add PMIC irq chip %d\n", ret);
@@ -272,9 +272,34 @@ static int sprd_pmic_probe(struct spi_device *spi)
return ret;
}
+ device_init_wakeup(&spi->dev, true);
return 0;
}
+#ifdef CONFIG_PM_SLEEP
+static int sprd_pmic_suspend(struct device *dev)
+{
+ struct sprd_pmic *ddata = dev_get_drvdata(dev);
+
+ if (device_may_wakeup(dev))
+ enable_irq_wake(ddata->irq);
+
+ return 0;
+}
+
+static int sprd_pmic_resume(struct device *dev)
+{
+ struct sprd_pmic *ddata = dev_get_drvdata(dev);
+
+ if (device_may_wakeup(dev))
+ disable_irq_wake(ddata->irq);
+
+ return 0;
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(sprd_pmic_pm_ops, sprd_pmic_suspend, sprd_pmic_resume);
+
static const struct of_device_id sprd_pmic_match[] = {
{ .compatible = "sprd,sc2731", .data = &sc2731_data },
{},
@@ -286,6 +311,7 @@ static struct spi_driver sprd_pmic_driver = {
.name = "sc27xx-pmic",
.bus = &spi_bus_type,
.of_match_table = sprd_pmic_match,
+ .pm = &sprd_pmic_pm_ops,
},
.probe = sprd_pmic_probe,
};
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 520f7b5ee6dc..0a65377dc1c8 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -4014,9 +4014,6 @@ int sdhci_setup_host(struct sdhci_host *host)
mmc_hostname(mmc), host->version);
}
- if (host->quirks & SDHCI_QUIRK_BROKEN_CQE)
- mmc->caps2 &= ~MMC_CAP2_CQE;
-
if (host->quirks & SDHCI_QUIRK_FORCE_DMA)
host->flags |= SDHCI_USE_SDMA;
else if (!(host->caps & SDHCI_CAN_DO_SDMA))
@@ -4557,6 +4554,12 @@ int __sdhci_add_host(struct sdhci_host *host)
struct mmc_host *mmc = host->mmc;
int ret;
+ if ((mmc->caps2 & MMC_CAP2_CQE) &&
+ (host->quirks & SDHCI_QUIRK_BROKEN_CQE)) {
+ mmc->caps2 &= ~MMC_CAP2_CQE;
+ mmc->cqe_ops = NULL;
+ }
+
host->complete_wq = alloc_workqueue("sdhci", flags, 0);
if (!host->complete_wq)
return -ENOMEM;
diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index ced6751f2def..48526c6509e9 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -921,7 +921,6 @@ static void wil_rx_handle_eapol(struct wil6210_vif *vif, struct sk_buff *skb)
void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid,
struct wil_net_stats *stats, bool gro)
{
- gro_result_t rc = GRO_NORMAL;
struct wil6210_vif *vif = ndev_to_vif(ndev);
struct wil6210_priv *wil = ndev_to_wil(ndev);
struct wireless_dev *wdev = vif_to_wdev(vif);
@@ -932,22 +931,16 @@ void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid,
*/
int mcast = is_multicast_ether_addr(da);
struct sk_buff *xmit_skb = NULL;
- static const char * const gro_res_str[] = {
- [GRO_MERGED] = "GRO_MERGED",
- [GRO_MERGED_FREE] = "GRO_MERGED_FREE",
- [GRO_HELD] = "GRO_HELD",
- [GRO_NORMAL] = "GRO_NORMAL",
- [GRO_DROP] = "GRO_DROP",
- [GRO_CONSUMED] = "GRO_CONSUMED",
- };
if (wdev->iftype == NL80211_IFTYPE_STATION) {
sa = wil_skb_get_sa(skb);
if (mcast && ether_addr_equal(sa, ndev->dev_addr)) {
/* mcast packet looped back to us */
- rc = GRO_DROP;
dev_kfree_skb(skb);
- goto stats;
+ ndev->stats.rx_dropped++;
+ stats->rx_dropped++;
+ wil_dbg_txrx(wil, "Rx drop %d bytes\n", len);
+ return;
}
} else if (wdev->iftype == NL80211_IFTYPE_AP && !vif->ap_isolate) {
if (mcast) {
@@ -991,26 +984,16 @@ void wil_netif_rx(struct sk_buff *skb, struct net_device *ndev, int cid,
wil_rx_handle_eapol(vif, skb);
if (gro)
- rc = napi_gro_receive(&wil->napi_rx, skb);
+ napi_gro_receive(&wil->napi_rx, skb);
else
netif_rx_ni(skb);
- wil_dbg_txrx(wil, "Rx complete %d bytes => %s\n",
- len, gro_res_str[rc]);
- }
-stats:
- /* statistics. rc set to GRO_NORMAL for AP bridging */
- if (unlikely(rc == GRO_DROP)) {
- ndev->stats.rx_dropped++;
- stats->rx_dropped++;
- wil_dbg_txrx(wil, "Rx drop %d bytes\n", len);
- } else {
- ndev->stats.rx_packets++;
- stats->rx_packets++;
- ndev->stats.rx_bytes += len;
- stats->rx_bytes += len;
- if (mcast)
- ndev->stats.multicast++;
}
+ ndev->stats.rx_packets++;
+ stats->rx_packets++;
+ ndev->stats.rx_bytes += len;
+ stats->rx_bytes += len;
+ if (mcast)
+ ndev->stats.multicast++;
}
void wil_netif_rx_any(struct sk_buff *skb, struct net_device *ndev)
diff --git a/drivers/nvmem/sprd-efuse.c b/drivers/nvmem/sprd-efuse.c
index 925feb21d5ad..59523245db8a 100644
--- a/drivers/nvmem/sprd-efuse.c
+++ b/drivers/nvmem/sprd-efuse.c
@@ -378,8 +378,8 @@ static int sprd_efuse_probe(struct platform_device *pdev)
return -ENOMEM;
efuse->base = devm_platform_ioremap_resource(pdev, 0);
- if (!efuse->base)
- return -ENOMEM;
+ if (IS_ERR(efuse->base))
+ return PTR_ERR(efuse->base);
ret = of_hwspin_lock_get_id(np, 0);
if (ret < 0) {
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index c616c4d9f082..55d719347810 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -518,10 +518,11 @@ static int __init of_platform_default_populate_init(void)
{
struct device_node *node;
+ device_links_supplier_sync_state_pause();
+
if (!of_have_populated_dt())
return -ENODEV;
- device_links_supplier_sync_state_pause();
/*
* Handle certain compatibles explicitly, since we don't want to create
* platform_devices for every node in /reserved-memory with a
@@ -547,8 +548,7 @@ arch_initcall_sync(of_platform_default_populate_init);
static int __init of_platform_sync_state_init(void)
{
- if (of_have_populated_dt())
- device_links_supplier_sync_state_resume();
+ device_links_supplier_sync_state_resume();
return 0;
}
late_initcall_sync(of_platform_sync_state_init);
diff --git a/drivers/of/property.c b/drivers/of/property.c
index 277d2d854ad5..c3cca636e8ea 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1031,8 +1031,20 @@ static int of_link_to_phandle(struct device *dev, struct device_node *sup_np,
* Find the device node that contains the supplier phandle. It may be
* @sup_np or it may be an ancestor of @sup_np.
*/
- while (sup_np && !of_find_property(sup_np, "compatible", NULL))
+ while (sup_np) {
+
+ /* Don't allow linking to a disabled supplier */
+ if (!of_device_is_available(sup_np)) {
+ of_node_put(sup_np);
+ sup_np = NULL;
+ }
+
+ if (of_find_property(sup_np, "compatible", NULL))
+ break;
+
sup_np = of_get_next_parent(sup_np);
+ }
+
if (!sup_np) {
dev_dbg(dev, "Not linking to %pOFP - No device\n", tmp_np);
return -ENODEV;
@@ -1311,7 +1323,7 @@ static int of_link_to_suppliers(struct device *dev,
if (of_link_property(dev, con_np, p->name))
ret = -ENODEV;
- for_each_child_of_node(con_np, child)
+ for_each_available_child_of_node(con_np, child)
if (of_link_to_suppliers(dev, child) && !ret)
ret = -EAGAIN;
diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/scsi/ufs/ufs-mediatek.c
index f435c938455e..e22f91695b04 100644
--- a/drivers/scsi/ufs/ufs-mediatek.c
+++ b/drivers/scsi/ufs/ufs-mediatek.c
@@ -129,7 +129,10 @@ static int ufs_mtk_bind_mphy(struct ufs_hba *hba)
__func__, err);
} else if (IS_ERR(host->mphy)) {
err = PTR_ERR(host->mphy);
- dev_info(dev, "%s: PHY get failed %d\n", __func__, err);
+ if (err != -ENODEV) {
+ dev_info(dev, "%s: PHY get failed %d\n", __func__,
+ err);
+ }
}
if (err)
@@ -669,13 +672,7 @@ static int ufs_mtk_apply_dev_quirks(struct ufs_hba *hba)
static void ufs_mtk_fixup_dev_quirks(struct ufs_hba *hba)
{
- struct ufs_dev_info *dev_info = &hba->dev_info;
- u16 mid = dev_info->wmanufacturerid;
-
ufshcd_fixup_dev_quirks(hba, ufs_mtk_dev_fixups);
-
- if (mid == UFS_VENDOR_SAMSUNG)
- hba->dev_quirks &= ~UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE;
}
/**
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index e0e9019f890d..e33744ae391c 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -6339,7 +6339,7 @@ static irqreturn_t ufshcd_intr(int irq, void *__hba)
intr_status = ufshcd_readl(hba, REG_INTERRUPT_STATUS);
} while (intr_status && --retries);
- if (retval == IRQ_NONE) {
+ if (enabled_intr_status && retval == IRQ_NONE) {
dev_err(hba->dev, "%s: Unhandled interrupt 0x%08x\n",
__func__, intr_status);
ufshcd_dump_regs(hba, 0, UFSHCI_REG_SPACE_SIZE, "host_regs: ");
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index bb3066cedb7e..cbcb40924824 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -3119,6 +3119,15 @@ int spi_setup(struct spi_device *spi)
status);
return status;
}
+
+ /*
+ * We do not want to return positive value from pm_runtime_get,
+ * there are many instances of devices calling spi_setup() and
+ * checking for a non-zero return value instead of a negative
+ * return value.
+ */
+ status = 0;
+
spi_set_cs(spi, false);
pm_runtime_mark_last_busy(spi->controller->dev.parent);
pm_runtime_put_autosuspend(spi->controller->dev.parent);
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index c324074fc67c..690e53f22ddf 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -108,7 +108,7 @@ config THERMAL_DEFAULT_GOV_USER_SPACE
config THERMAL_DEFAULT_GOV_POWER_ALLOCATOR
bool "power_allocator"
- select THERMAL_GOV_POWER_ALLOCATOR
+ depends on THERMAL_GOV_POWER_ALLOCATOR
help
Select this if you want to control temperature based on
system and device power allocation. This governor can only
diff --git a/drivers/thermal/sprd_thermal.c b/drivers/thermal/sprd_thermal.c
index a340374e8c51..4cde70dcf655 100644
--- a/drivers/thermal/sprd_thermal.c
+++ b/drivers/thermal/sprd_thermal.c
@@ -348,8 +348,8 @@ static int sprd_thm_probe(struct platform_device *pdev)
thm->var_data = pdata;
thm->base = devm_platform_ioremap_resource(pdev, 0);
- if (!thm->base)
- return -ENOMEM;
+ if (IS_ERR(thm->base))
+ return PTR_ERR(thm->base);
thm->nr_sensors = of_get_child_count(np);
if (thm->nr_sensors == 0 || thm->nr_sensors > SPRD_THM_MAX_SENSOR) {
diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
index b3b85aca479c..ad76b1e9c934 100644
--- a/drivers/thermal/thermal_sysfs.c
+++ b/drivers/thermal/thermal_sysfs.c
@@ -980,10 +980,8 @@ void thermal_cooling_device_stats_update(struct thermal_cooling_device *cdev,
{
struct cooling_dev_stats *stats = cdev->stats;
-#ifdef CONFIG_QTI_THERMAL
if (!stats)
return;
-#endif
spin_lock(&stats->lock);
diff --git a/drivers/usb/host/xhci-pci-renesas.c b/drivers/usb/host/xhci-pci-renesas.c
index be2e7eff492f..02fcb01bc2b9 100644
--- a/drivers/usb/host/xhci-pci-renesas.c
+++ b/drivers/usb/host/xhci-pci-renesas.c
@@ -7,7 +7,7 @@
#include
#include
#include
-#include
+#include
#include "xhci.h"
#include "xhci-trace.h"
diff --git a/fs/crypto/fscrypt_private.h b/fs/crypto/fscrypt_private.h
index ea28dd500d2b..688ae13f8f5f 100644
--- a/fs/crypto/fscrypt_private.h
+++ b/fs/crypto/fscrypt_private.h
@@ -363,13 +363,16 @@ fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
const struct fscrypt_info *ci)
{
/*
- * The READ_ONCE() here pairs with the smp_store_release() in
- * fscrypt_prepare_key(). (This only matters for the per-mode keys,
- * which are shared by multiple inodes.)
+ * The two smp_load_acquire()'s here pair with the smp_store_release()'s
+ * in fscrypt_prepare_inline_crypt_key() and fscrypt_prepare_key().
+ * I.e., in some cases (namely, if this prep_key is a per-mode
+ * encryption key) another task can publish blk_key or tfm concurrently,
+ * executing a RELEASE barrier. We need to use smp_load_acquire() here
+ * to safely ACQUIRE the memory the other task published.
*/
if (fscrypt_using_inline_encryption(ci))
- return READ_ONCE(prep_key->blk_key) != NULL;
- return READ_ONCE(prep_key->tfm) != NULL;
+ return smp_load_acquire(&prep_key->blk_key) != NULL;
+ return smp_load_acquire(&prep_key->tfm) != NULL;
}
#else /* CONFIG_FS_ENCRYPTION_INLINE_CRYPT */
@@ -416,7 +419,7 @@ static inline bool
fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
const struct fscrypt_info *ci)
{
- return READ_ONCE(prep_key->tfm) != NULL;
+ return smp_load_acquire(&prep_key->tfm) != NULL;
}
#endif /* !CONFIG_FS_ENCRYPTION_INLINE_CRYPT */
diff --git a/fs/crypto/inline_crypt.c b/fs/crypto/inline_crypt.c
index 6504f053ae57..3b3a684c19d5 100644
--- a/fs/crypto/inline_crypt.c
+++ b/fs/crypto/inline_crypt.c
@@ -202,8 +202,10 @@ int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
}
}
/*
- * Pairs with READ_ONCE() in fscrypt_is_key_prepared(). (Only matters
- * for the per-mode keys, which are shared by multiple inodes.)
+ * Pairs with the smp_load_acquire() in fscrypt_is_key_prepared().
+ * I.e., here we publish ->blk_key with a RELEASE barrier so that
+ * concurrent tasks can ACQUIRE it. Note that this concurrency is only
+ * possible for per-mode keys, not for per-file keys.
*/
smp_store_release(&prep_key->blk_key, blk_key);
return 0;
diff --git a/fs/crypto/keysetup.c b/fs/crypto/keysetup.c
index 2ce4d48b6655..96609a5c3843 100644
--- a/fs/crypto/keysetup.c
+++ b/fs/crypto/keysetup.c
@@ -134,8 +134,10 @@ int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key,
if (IS_ERR(tfm))
return PTR_ERR(tfm);
/*
- * Pairs with READ_ONCE() in fscrypt_is_key_prepared(). (Only matters
- * for the per-mode keys, which are shared by multiple inodes.)
+ * Pairs with the smp_load_acquire() in fscrypt_is_key_prepared().
+ * I.e., here we publish ->tfm with a RELEASE barrier so that
+ * concurrent tasks can ACQUIRE it. Note that this concurrency is only
+ * possible for per-mode keys, not for per-file keys.
*/
smp_store_release(&prep_key->tfm, tfm);
return 0;
diff --git a/fs/crypto/policy.c b/fs/crypto/policy.c
index d23ff162c78b..026dbb2fa36f 100644
--- a/fs/crypto/policy.c
+++ b/fs/crypto/policy.c
@@ -77,6 +77,20 @@ static bool supported_iv_ino_lblk_policy(const struct fscrypt_policy_v2 *policy,
struct super_block *sb = inode->i_sb;
int ino_bits = 64, lblk_bits = 64;
+ /*
+ * IV_INO_LBLK_* exist only because of hardware limitations, and
+ * currently the only known use case for them involves AES-256-XTS.
+ * That's also all we test currently. For these reasons, for now only
+ * allow AES-256-XTS here. This can be relaxed later if a use case for
+ * IV_INO_LBLK_* with other encryption modes arises.
+ */
+ if (policy->contents_encryption_mode != FSCRYPT_MODE_AES_256_XTS) {
+ fscrypt_warn(inode,
+ "Can't use %s policy with contents mode other than AES-256-XTS",
+ type);
+ return false;
+ }
+
/*
* It's unsafe to include inode numbers in the IVs if the filesystem can
* potentially renumber inodes, e.g. via filesystem shrinking.
@@ -178,10 +192,15 @@ static bool fscrypt_supported_v2_policy(const struct fscrypt_policy_v2 *policy,
32, 32))
return false;
+ /*
+ * IV_INO_LBLK_32 hashes the inode number, so in principle it can
+ * support any ino_bits. However, currently the inode number is gotten
+ * from inode::i_ino which is 'unsigned long'. So for now the
+ * implementation limit is 32 bits.
+ */
if ((policy->flags & FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32) &&
- /* This uses hashed inode numbers, so ino_bits doesn't matter. */
!supported_iv_ino_lblk_policy(policy, inode, "IV_INO_LBLK_32",
- INT_MAX, 32))
+ 32, 32))
return false;
if (memchr_inv(policy->__reserved, 0, sizeof(policy->__reserved))) {
diff --git a/include/linux/mfd/syscon.h b/include/linux/mfd/syscon.h
index 714cab1e09d3..7f20e9b502a5 100644
--- a/include/linux/mfd/syscon.h
+++ b/include/linux/mfd/syscon.h
@@ -51,7 +51,7 @@ static inline struct regmap *syscon_regmap_lookup_by_phandle(
return ERR_PTR(-ENOTSUPP);
}
-static struct regmap *syscon_regmap_lookup_by_phandle_args(
+static inline struct regmap *syscon_regmap_lookup_by_phandle_args(
struct device_node *np,
const char *property,
int arg_count,
diff --git a/include/net/ndisc.h b/include/net/ndisc.h
index 5ffba5a4e5c5..6cb3e6c11132 100644
--- a/include/net/ndisc.h
+++ b/include/net/ndisc.h
@@ -41,7 +41,7 @@ enum {
ND_OPT_DNSSL = 31, /* RFC6106 */
ND_OPT_6CO = 34, /* RFC6775 */
ND_OPT_CAPTIVE_PORTAL = 37, /* RFC7710 */
- ND_OPT_PREF64 = 38, /* RFC-ietf-6man-ra-pref64-09 */
+ ND_OPT_PREF64 = 38, /* RFC8781 */
__ND_OPT_MAX
};
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index a7f4a780d0ca..b97769950354 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7209,7 +7209,9 @@ int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu,
continue;
util = cpu_util_next(cpu, p, cpu);
cpu_cap = capacity_of(cpu);
- spare_cap = cpu_cap - util;
+ spare_cap = cpu_cap;
+ lsub_positive(&spare_cap, util);
+
/*
* Skip CPUs that cannot satisfy the capacity request.
* IOW, placing the task there would make the CPU
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index 59225b484e4e..7e5d3524e924 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
@@ -11,6 +11,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -558,6 +559,7 @@ void tick_unfreeze(void)
trace_suspend_resume(TPS("timekeeping_freeze"),
smp_processor_id(), false);
} else {
+ touch_softlockup_watchdog();
tick_resume_local();
}
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index e53fe52dd764..b2c203bcf24c 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3671,6 +3671,7 @@ struct sk_buff *skb_segment_list(struct sk_buff *skb,
skb_push(nskb, -skb_network_offset(nskb) + offset);
+ skb_release_head_state(nskb);
__copy_skb_header(nskb, skb);
skb_headers_offset_update(nskb, skb_headroom(nskb) - skb_headroom(skb));
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index 4d7d23e47829..66e830727c98 100644
--- a/net/mac80211/mesh.c
+++ b/net/mac80211/mesh.c
@@ -590,6 +590,19 @@ int mesh_add_he_oper_ie(struct ieee80211_sub_if_data *sdata,
int mesh_add_he_6ghz_cap_ie(struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb)
{
+ struct ieee80211_supported_band *sband;
+ const struct ieee80211_sband_iftype_data *iftd;
+
+ sband = ieee80211_get_sband(sdata);
+ if (!sband)
+ return -EINVAL;
+
+ iftd = ieee80211_get_sband_iftype_data(sband,
+ NL80211_IFTYPE_MESH_POINT);
+ /* The device doesn't support HE in mesh mode or at all */
+ if (!iftd)
+ return 0;
+
ieee80211_ie_build_he_6ghz_cap(sdata, skb);
return 0;
}
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index a27f7aa3f9c9..9fdee728f29b 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2845,6 +2845,10 @@ void ieee80211_ie_build_he_6ghz_cap(struct ieee80211_sub_if_data *sdata,
if (WARN_ON(!iftd))
return;
+ /* Check for device HE 6 GHz capability before adding element */
+ if (!iftd->he_6ghz_capa.capa)
+ return;
+
cap = le16_to_cpu(iftd->he_6ghz_capa.capa);
cap &= ~IEEE80211_HE_6GHZ_CAP_SM_PS;
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 2b01f92388ac..fec0dbcfa9ed 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -4995,7 +4995,7 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
info->attrs[NL80211_ATTR_HE_BSS_COLOR],
¶ms.he_bss_color);
if (err)
- return err;
+ goto out;
}
nl80211_calculate_ap_params(¶ms);
diff --git a/net/wireless/util.c b/net/wireless/util.c
index e3053aaedbf8..6b009f41ccf6 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -95,7 +95,7 @@ u32 ieee80211_channel_to_freq_khz(int chan, enum nl80211_band band)
/* see 802.11ax D6.1 27.3.23.2 */
if (chan == 2)
return MHZ_TO_KHZ(5935);
- if (chan <= 253)
+ if (chan <= 233)
return MHZ_TO_KHZ(5950 + chan * 5);
break;
case NL80211_BAND_60GHZ:
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index e352ce1e1779..5199dd3f3db5 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -1261,6 +1261,12 @@ int security_sidtab_hash_stats(struct selinux_state *state, char *page)
{
int rc;
+ if (!state->initialized) {
+ pr_err("SELinux: %s: called before initial load_policy\n",
+ __func__);
+ return -EINVAL;
+ }
+
read_lock(&state->ss->policy_rwlock);
rc = sidtab_hash_stats(state->ss->sidtab, page);
read_unlock(&state->ss->policy_rwlock);