diff --git a/Documentation/dev-tools/ubsan.rst b/Documentation/dev-tools/ubsan.rst
index 655e6b63c227..1be6618e232d 100644
--- a/Documentation/dev-tools/ubsan.rst
+++ b/Documentation/dev-tools/ubsan.rst
@@ -86,3 +86,4 @@ References
.. _1: https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Debugging-Options.html
.. _2: https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
+.. _3: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml
index f8b3a1e169d8..e08fb6906bcd 100755
--- a/android/abi_gki_aarch64.xml
+++ b/android/abi_gki_aarch64.xml
@@ -231,6 +231,7 @@
+
@@ -384,6 +385,8 @@
+
+
@@ -395,6 +398,8 @@
+
+
@@ -426,7 +431,13 @@
+
+
+
+
+
+
@@ -452,6 +463,7 @@
+
@@ -473,13 +485,16 @@
+
+
+
@@ -540,11 +555,13 @@
+
+
@@ -556,6 +573,7 @@
+
@@ -646,6 +664,7 @@
+
@@ -835,11 +854,16 @@
+
+
+
+
+
@@ -1134,15 +1158,19 @@
+
+
+
+
@@ -1167,11 +1195,13 @@
+
+
@@ -1181,6 +1211,7 @@
+
@@ -2126,7 +2157,9 @@
+
+
@@ -2268,6 +2301,7 @@
+
@@ -2708,7 +2742,10 @@
+
+
+
@@ -2882,6 +2919,7 @@
+
@@ -3219,6 +3257,7 @@
+
@@ -3274,6 +3313,7 @@
+
@@ -3643,6 +3683,7 @@
+
@@ -4366,6 +4407,7 @@
+
@@ -4626,6 +4668,7 @@
+
@@ -4761,8 +4804,10 @@
+
+
@@ -4891,9 +4936,16 @@
+
+
+
+
+
+
+
@@ -5309,6 +5361,7 @@
+
@@ -5635,6 +5688,9 @@
+
+
+
@@ -5642,6 +5698,8 @@
+
+
@@ -5687,6 +5745,8 @@
+
+
@@ -5699,6 +5759,8 @@
+
+
@@ -5731,7 +5793,13 @@
+
+
+
+
+
+
@@ -5767,6 +5835,7 @@
+
@@ -5789,7 +5858,9 @@
+
+
@@ -5798,6 +5869,7 @@
+
@@ -5861,11 +5933,13 @@
+
+
@@ -5884,6 +5958,7 @@
+
@@ -6184,6 +6259,12 @@
+
+
+
+
+
+
@@ -6197,81 +6278,81 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -6550,15 +6631,15 @@
-
+
-
+
-
+
-
+
@@ -7232,36 +7313,36 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -7296,7 +7377,7 @@
-
+
@@ -8479,6 +8560,7 @@
+
@@ -10343,6 +10425,7 @@
+
@@ -10619,6 +10702,7 @@
+
@@ -11562,24 +11646,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -15057,6 +15141,7 @@
+
@@ -16416,6 +16501,7 @@
+
@@ -17784,42 +17870,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -21073,12 +21159,12 @@
-
+
-
+
-
+
@@ -22492,6 +22578,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -23395,42 +23525,42 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -25715,6 +25845,10 @@
+
+
+
+
@@ -26757,6 +26891,14 @@
+
+
+
+
+
+
+
+
@@ -28671,141 +28813,141 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -29560,6 +29702,7 @@
+
@@ -30192,6 +30335,7 @@
+
@@ -32909,60 +33053,60 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -35017,6 +35161,7 @@
+
@@ -35161,6 +35306,7 @@
+
@@ -38787,6 +38933,7 @@
+
@@ -38830,6 +38977,7 @@
+
@@ -38904,7 +39052,7 @@
-
+
@@ -40148,6 +40296,7 @@
+
@@ -43134,12 +43283,12 @@
-
+
-
+
-
+
@@ -44380,6 +44529,7 @@
+
@@ -46473,7 +46623,7 @@
-
+
@@ -48427,6 +48577,10 @@
+
+
+
+
@@ -49559,18 +49713,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -50038,6 +50192,7 @@
+
@@ -53505,6 +53660,7 @@
+
@@ -56110,390 +56266,390 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -56573,6 +56729,12 @@
+
+
+
+
+
+
@@ -56997,36 +57159,36 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -61251,6 +61413,7 @@
+
@@ -65071,9 +65234,9 @@
-
+
-
+
@@ -65711,7 +65874,7 @@
-
+
@@ -67746,6 +67909,7 @@
+
@@ -67769,6 +67933,7 @@
+
@@ -68310,7 +68475,7 @@
-
+
@@ -68590,6 +68755,7 @@
+
@@ -69421,15 +69587,15 @@
-
+
-
+
-
+
-
+
@@ -71174,6 +71340,7 @@
+
@@ -71943,6 +72110,7 @@
+
@@ -73246,6 +73414,14 @@
+
+
+
+
+
+
+
+
@@ -74236,15 +74412,15 @@
-
+
-
+
-
+
-
+
@@ -76242,6 +76418,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -77644,6 +77831,7 @@
+
@@ -80335,73 +80523,73 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -80813,18 +81001,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -83062,24 +83250,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -87318,6 +87506,7 @@
+
@@ -88031,12 +88220,12 @@
-
+
-
+
-
+
@@ -88532,6 +88721,10 @@
+
+
+
+
@@ -91692,6 +91885,7 @@
+
@@ -94302,6 +94496,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -96947,46 +97155,46 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -99285,24 +99493,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -99663,6 +99871,7 @@
+
@@ -100002,6 +100211,10 @@
+
+
+
+
@@ -100931,6 +101144,7 @@
+
@@ -103277,6 +103491,10 @@
+
+
+
+
@@ -104319,6 +104537,7 @@
+
@@ -104569,6 +104788,7 @@
+
@@ -108569,12 +108789,12 @@
-
+
-
+
-
+
@@ -109811,6 +110031,7 @@
+
@@ -110064,6 +110285,7 @@
+
@@ -112072,6 +112294,7 @@
+
@@ -112728,9 +112951,9 @@
-
-
-
+
+
+
@@ -112946,9 +113169,9 @@
-
-
-
+
+
+
@@ -113432,9 +113655,9 @@
-
-
-
+
+
+
@@ -113582,12 +113805,12 @@
-
-
+
+
-
-
+
+
@@ -113605,8 +113828,8 @@
-
-
+
+
@@ -113915,8 +114138,8 @@
-
-
+
+
@@ -113956,6 +114179,10 @@
+
+
+
+
@@ -113976,10 +114203,10 @@
-
-
-
-
+
+
+
+
@@ -114031,7 +114258,7 @@
-
+
@@ -114934,6 +115161,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -115006,6 +115245,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -115200,11 +115452,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -115354,6 +115639,11 @@
+
+
+
+
+
@@ -115478,12 +115768,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -115521,6 +115825,14 @@
+
+
+
+
+
+
+
+
@@ -115894,6 +116206,12 @@
+
+
+
+
+
+
@@ -115923,6 +116241,11 @@
+
+
+
+
+
@@ -116057,6 +116380,9 @@
+
+
+
@@ -116064,6 +116390,8 @@
+
+
@@ -116109,6 +116437,8 @@
+
+
@@ -116121,6 +116451,8 @@
+
+
@@ -116153,7 +116485,13 @@
+
+
+
+
+
+
@@ -116189,6 +116527,7 @@
+
@@ -116211,7 +116550,9 @@
+
+
@@ -116220,6 +116561,7 @@
+
@@ -116283,11 +116625,13 @@
+
+
@@ -116309,6 +116653,11 @@
+
+
+
+
+
@@ -116686,12 +117035,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -116783,6 +117132,11 @@
+
+
+
+
+
@@ -116854,13 +117208,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -117407,9 +117761,9 @@
-
-
-
+
+
+
@@ -117775,6 +118129,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -117804,6 +118177,12 @@
+
+
+
+
+
+
@@ -117831,21 +118210,21 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
+
@@ -118307,21 +118686,21 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -119175,9 +119554,9 @@
-
-
-
+
+
+
@@ -119395,6 +119774,14 @@
+
+
+
+
+
+
+
+
@@ -119425,10 +119812,20 @@
+
+
+
+
+
+
+
+
+
+
@@ -119438,6 +119835,10 @@
+
+
+
+
@@ -119564,6 +119965,12 @@
+
+
+
+
+
+
@@ -119585,6 +119992,10 @@
+
+
+
+
@@ -119621,9 +120032,14 @@
-
-
-
+
+
+
+
+
+
+
+
@@ -119953,10 +120369,10 @@
-
-
-
-
+
+
+
+
@@ -119991,9 +120407,9 @@
-
-
-
+
+
+
@@ -120020,9 +120436,9 @@
-
-
-
+
+
+
@@ -120362,19 +120778,19 @@
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
@@ -124650,12 +125066,23 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -124762,10 +125189,10 @@
-
-
-
-
+
+
+
+
@@ -125242,10 +125669,10 @@
-
-
-
-
+
+
+
+
@@ -125292,8 +125719,8 @@
-
-
+
+
@@ -125390,6 +125817,11 @@
+
+
+
+
+
@@ -125848,9 +126280,9 @@
-
-
-
+
+
+
@@ -127157,8 +127589,8 @@
-
-
+
+
@@ -127642,11 +128074,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -128239,8 +128689,8 @@
-
-
+
+
@@ -128295,15 +128745,15 @@
-
-
-
+
+
+
-
-
-
-
+
+
+
+
@@ -128328,9 +128778,9 @@
-
-
-
+
+
+
@@ -128607,6 +129057,9 @@
+
+
+
@@ -129947,9 +130400,9 @@
-
-
-
+
+
+
@@ -129957,22 +130410,22 @@
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
@@ -130003,9 +130456,9 @@
-
-
-
+
+
+
@@ -130013,88 +130466,88 @@
-
-
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -130114,31 +130567,31 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -130155,13 +130608,13 @@
-
-
-
+
+
+
-
-
+
+
@@ -130220,6 +130673,11 @@
+
+
+
+
+
@@ -130509,6 +130967,10 @@
+
+
+
+
@@ -131344,10 +131806,10 @@
-
-
-
-
+
+
+
+
@@ -132057,10 +132519,10 @@
-
-
-
-
+
+
+
+
@@ -132074,38 +132536,38 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -132121,8 +132583,8 @@
-
-
+
+
@@ -132135,23 +132597,23 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -132282,16 +132744,16 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -132432,6 +132894,11 @@
+
+
+
+
+
@@ -132774,7 +133241,7 @@
-
+
@@ -133640,12 +134107,12 @@
-
-
+
+
-
-
+
+
@@ -134382,7 +134849,7 @@
-
+
@@ -134609,7 +135076,7 @@
-
+
@@ -135003,17 +135470,17 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -135028,8 +135495,8 @@
-
-
+
+
@@ -135085,8 +135552,8 @@
-
-
+
+
@@ -135097,24 +135564,24 @@
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -135130,9 +135597,9 @@
-
-
-
+
+
+
@@ -135157,19 +135624,19 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -135177,22 +135644,22 @@
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
@@ -135200,10 +135667,10 @@
-
-
-
-
+
+
+
+
@@ -135212,17 +135679,17 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -135852,8 +136319,8 @@
-
-
+
+
@@ -136005,8 +136472,8 @@
-
-
+
+
@@ -136069,6 +136536,12 @@
+
+
+
+
+
+
@@ -136888,71 +137361,71 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -136978,48 +137451,48 @@
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -137031,9 +137504,9 @@
-
-
-
+
+
+
@@ -137071,9 +137544,9 @@
-
-
-
+
+
+
@@ -137128,61 +137601,61 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
@@ -137227,11 +137700,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -137243,10 +137716,10 @@
-
-
-
-
+
+
+
+
@@ -137254,9 +137727,9 @@
-
-
-
+
+
+
@@ -137278,12 +137751,12 @@
-
-
+
+
-
-
+
+
@@ -137480,6 +137953,14 @@
+
+
+
+
+
+
+
+
@@ -137846,7 +138327,7 @@
-
+
@@ -138041,7 +138522,7 @@
-
+
@@ -138146,6 +138627,11 @@
+
+
+
+
+
@@ -138154,6 +138640,10 @@
+
+
+
+
@@ -138531,15 +139021,15 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
@@ -138564,12 +139054,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -138836,19 +139326,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -139097,48 +139621,48 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -139148,13 +139672,13 @@
-
-
-
+
+
+
-
-
+
+
@@ -139163,31 +139687,31 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -139219,91 +139743,91 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -139314,11 +139838,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -139384,21 +139908,21 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -140241,10 +140765,10 @@
-
-
-
-
+
+
+
+
@@ -140260,28 +140784,28 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
@@ -140308,9 +140832,9 @@
-
-
-
+
+
+
@@ -140326,34 +140850,34 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -140933,6 +141457,11 @@
+
+
+
+
+
@@ -142048,8 +142577,8 @@
-
-
+
+
@@ -142069,12 +142598,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -142124,9 +142653,9 @@
-
-
-
+
+
+
diff --git a/android/abi_gki_aarch64_fips140 b/android/abi_gki_aarch64_fips140
index cf48b6d66aa9..faea593f3b77 100644
--- a/android/abi_gki_aarch64_fips140
+++ b/android/abi_gki_aarch64_fips140
@@ -6,12 +6,14 @@
# required by fips140.ko
add_random_ready_callback
aead_register_instance
- arm64_const_caps_ready
+ ahash_register_instance
+ arch_timer_read_counter
bcmp
cancel_work_sync
__cfi_slowpath
+ complete_all
+ completion_done
cpu_have_feature
- cpu_hwcap_keys
crypto_aead_decrypt
crypto_aead_encrypt
crypto_aead_setauthsize
@@ -19,7 +21,6 @@
crypto_ahash_finup
crypto_ahash_setkey
crypto_alg_list
- crypto_alg_mod_lookup
crypto_alg_sem
crypto_alloc_aead
crypto_alloc_base
@@ -28,7 +29,6 @@
crypto_alloc_skcipher
crypto_attr_alg_name
crypto_check_attr_type
- crypto_cipher_decrypt_one
crypto_cipher_encrypt_one
crypto_cipher_setkey
crypto_destroy_tfm
@@ -38,17 +38,23 @@
crypto_grab_ahash
crypto_grab_shash
crypto_grab_skcipher
+ crypto_grab_spawn
crypto_inst_setname
crypto_put_default_null_skcipher
crypto_register_aead
+ crypto_register_aeads
+ crypto_register_ahash
+ crypto_register_ahashes
crypto_register_alg
+ crypto_register_algs
+ crypto_register_rng
crypto_register_rngs
crypto_register_shash
crypto_register_shashes
+ crypto_register_skcipher
crypto_register_skciphers
crypto_register_template
crypto_register_templates
- crypto_remove_final
crypto_remove_spawns
crypto_req_done
crypto_rng_reset
@@ -63,8 +69,10 @@
crypto_skcipher_encrypt
crypto_skcipher_setkey
crypto_spawn_tfm2
+ crypto_spawn_tfm
crypto_unregister_aead
crypto_unregister_alg
+ crypto_unregister_rng
crypto_unregister_rngs
crypto_unregister_shash
crypto_unregister_shashes
@@ -87,6 +95,7 @@
kmalloc_order_trace
kmem_cache_alloc_trace
kmemdup
+ ktime_get
__list_add_valid
__list_del_entry_valid
memcpy
@@ -99,6 +108,9 @@
preempt_schedule_notrace
printk
queue_work_on
+ ___ratelimit
+ _raw_spin_lock
+ _raw_spin_unlock
refcount_warn_saturate
scatterwalk_ffwd
scatterwalk_map_and_copy
@@ -121,7 +133,6 @@
strlcpy
strlen
strncmp
- synchronize_rcu_tasks
system_wq
__traceiter_android_vh_aes_decrypt
__traceiter_android_vh_aes_encrypt
@@ -134,23 +145,29 @@
tracepoint_probe_register
up_write
wait_for_completion
+ xa_load
+ xa_store
-# needed by fips140.ko but not identified by the tooling
-# TODO(b/189327973): [GKI: ABI] Build of fips140.ko module fails to identify some symbols
- __crypto_memneq
- __crypto_xor
+# preserved by --additions-only
aes_decrypt
aes_encrypt
aes_expandkey
+ arm64_const_caps_ready
ce_aes_expandkey
+ cpu_hwcap_keys
crypto_aes_inv_sbox
crypto_aes_sbox
crypto_aes_set_key
+ crypto_alg_mod_lookup
+ crypto_cipher_decrypt_one
crypto_ft_tab
crypto_inc
crypto_it_tab
+ __crypto_memneq
+ crypto_remove_final
crypto_sha1_finup
crypto_sha1_update
+ __crypto_xor
gf128mul_lle
sha1_transform
sha224_final
@@ -158,3 +175,4 @@
sha256_block_data_order
sha256_final
sha256_update
+ synchronize_rcu_tasks
diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy
index 6370941fad5e..8fc8f58f678d 100644
--- a/android/abi_gki_aarch64_galaxy
+++ b/android/abi_gki_aarch64_galaxy
@@ -1,4595 +1,4611 @@
[abi_symbol_list]
-PDE_DATA
-__ClearPageMovable
-__SetPageMovable
-___pskb_trim
-___ratelimit
-__alloc_disk_node
-__alloc_pages_nodemask
-__alloc_percpu
-__alloc_percpu_gfp
-__alloc_skb
-__arch_clear_user
-__arch_copy_from_user
-__arch_copy_in_user
-__arch_copy_to_user
-__arm_smccc_hvc
-__arm_smccc_smc
-__bitmap_andnot
-__bitmap_clear
-__bitmap_complement
-__bitmap_or
-__bitmap_set
-__bitmap_weight
-__bitmap_xor
-__blk_mq_debugfs_rq_show
-__blk_mq_end_request
-__blk_rq_map_sg
-__blkdev_issue_discard
-__blkdev_issue_zeroout
-__cfi_slowpath
-__check_object_size
-__class_create
-__class_register
-__clk_determine_rate
-__clk_get_hw
-__clk_get_name
-__clk_hw_register_divider
-__clk_hw_register_gate
-__clk_hw_register_mux
-__clk_is_enabled
-__clk_mux_determine_rate_closest
-__clocksource_register_scale
-__close_fd
-__const_udelay
-__cpu_active_mask
-__cpu_online_mask
-__cpu_possible_mask
-__cpu_present_mask
-__cpufreq_driver_target
-__cpuhp_remove_state
-__cpuhp_setup_state
-__cpuhp_setup_state_cpuslocked
-__cpuhp_state_add_instance
-__cpuhp_state_remove_instance
-__dev_get_by_index
-__dev_kfree_skb_any
-__devm_alloc_percpu
-__devm_drm_dev_alloc
-__devm_iio_device_register
-__devm_irq_alloc_descs
-__devm_of_phy_provider_register
-__devm_regmap_init
-__devm_regmap_init_i2c
-__devm_regmap_init_mmio_clk
-__devm_regmap_init_spi
-__devm_release_region
-__devm_request_region
-__devm_reset_control_get
-__devm_spi_alloc_controller
-__dma_request_channel
-__do_once_done
-__do_once_start
-__drm_atomic_helper_connector_destroy_state
-__drm_atomic_helper_connector_duplicate_state
-__drm_atomic_helper_connector_reset
-__drm_atomic_helper_crtc_destroy_state
-__drm_atomic_helper_crtc_duplicate_state
-__drm_atomic_helper_crtc_reset
-__drm_atomic_helper_plane_destroy_state
-__drm_atomic_helper_plane_duplicate_state
-__drm_atomic_helper_private_obj_duplicate_state
-__drm_atomic_state_free
-__drm_dbg
-__drm_debug
-__drm_err
-__drm_printfn_coredump
-__drm_printfn_info
-__drm_printfn_seq_file
-__drm_puts_coredump
-__drm_puts_seq_file
-__dynamic_dev_dbg
-__dynamic_pr_debug
-__ethtool_get_link_ksettings
-__fdget
-__flush_icache_range
-__free_pages
-__genphy_config_aneg
-__get_free_pages
-__get_task_comm
-__hid_register_driver
-__hid_request
-__hrtimer_get_remaining
-__hvc_resize
-__hwspin_lock_timeout
-__hwspin_unlock
-__i2c_smbus_xfer
-__i2c_transfer
-__iio_device_register
-__init_rwsem
-__init_swait_queue_head
-__init_waitqueue_head
-__ioread32_copy
-__ioremap
-__iowrite32_copy
-__ipv6_addr_type
-__irq_alloc_descs
-__irq_domain_add
-__irq_set_handler
-__kfifo_alloc
-__kfifo_free
-__kfifo_in
-__kfifo_init
-__kfifo_out
-__kfifo_out_peek
-__kfifo_to_user
-__kfree_skb
-__kmalloc
-__kthread_init_worker
-__list_add_valid
-__list_del_entry_valid
-__local_bh_enable_ip
-__lock_page
-__log_post_read_mmio
-__log_read_mmio
-__log_write_mmio
-__mdiobus_register
-__media_device_register
-__memcat_p
-__memcpy_fromio
-__memcpy_toio
-__memset_io
-__mmc_claim_host
-__mmc_send_status
-__mmdrop
-__module_get
-__msecs_to_jiffies
-__mutex_init
-__napi_alloc_skb
-__napi_schedule
-__ndelay
-__netdev_alloc_skb
-__netif_napi_del
-__netif_set_xps_queue
-__netlink_kernel_create
-__next_zones_zonelist
-__nla_parse
-__nla_validate
-__nlmsg_put
-__num_online_cpus
-__of_reset_control_get
-__pci_register_driver
-__per_cpu_offset
-__percpu_down_read
-__percpu_init_rwsem
-__platform_driver_probe
-__platform_driver_register
-__platform_register_drivers
-__pm_relax
-__pm_runtime_disable
-__pm_runtime_idle
-__pm_runtime_resume
-__pm_runtime_set_status
-__pm_runtime_suspend
-__pm_runtime_use_autosuspend
-__pm_stay_awake
-__printk_ratelimit
-__pskb_pull_tail
-__put_page
-__put_task_struct
-__rb_erase_color
-__rb_insert_augmented
-__rcu_read_lock
-__rcu_read_unlock
-__refrigerator
-__register_chrdev
-__register_rpmsg_driver
-__regmap_init
-__release_region
-__request_module
-__request_percpu_irq
-__request_region
-__rht_bucket_nested
-__rtc_register_device
-__scsi_execute
-__scsi_iterate_devices
-__scsi_print_sense
-__sdhci_add_host
-__seq_open_private
-__serio_register_driver
-__serio_register_port
-__sg_page_iter_dma_next
-__sg_page_iter_next
-__sg_page_iter_start
-__skb_ext_put
-__skb_flow_dissect
-__skb_get_hash
-__skb_gso_segment
-__skb_pad
-__spi_alloc_controller
-__spi_register_driver
-__splice_from_pipe
-__spmi_driver_register
-__srcu_read_lock
-__srcu_read_unlock
-__stack_chk_fail
-__stack_chk_guard
-__sw_hweight16
-__sw_hweight32
-__sw_hweight64
-__sw_hweight8
-__sysfs_match_string
-__task_pid_nr_ns
-__task_rq_lock
-__tasklet_hi_schedule
-__tasklet_schedule
-__trace_bprintk
-__trace_bputs
-__trace_printk
-__traceiter_android_rvh_account_irq
-__traceiter_android_rvh_build_perf_domains
-__traceiter_android_rvh_can_migrate_task
-__traceiter_android_rvh_check_preempt_wakeup
-__traceiter_android_rvh_cpu_cgroup_attach
-__traceiter_android_rvh_cpu_cgroup_can_attach
-__traceiter_android_rvh_cpu_cgroup_online
-__traceiter_android_rvh_cpu_overutilized
-__traceiter_android_rvh_cpufreq_transition
-__traceiter_android_rvh_dequeue_task
-__traceiter_android_rvh_die_kernel_fault
-__traceiter_android_rvh_do_mem_abort
-__traceiter_android_rvh_do_sp_pc_abort
-__traceiter_android_rvh_enqueue_task
-__traceiter_android_rvh_find_busiest_queue
-__traceiter_android_rvh_find_energy_efficient_cpu
-__traceiter_android_rvh_find_lowest_rq
-__traceiter_android_rvh_flush_task
-__traceiter_android_rvh_irqs_disable
-__traceiter_android_rvh_irqs_enable
-__traceiter_android_rvh_migrate_queued_task
-__traceiter_android_rvh_new_task_stats
-__traceiter_android_rvh_pick_next_entity
-__traceiter_android_rvh_place_entity
-__traceiter_android_rvh_preempt_disable
-__traceiter_android_rvh_preempt_enable
-__traceiter_android_rvh_replace_next_task_fair
-__traceiter_android_rvh_report_bug
-__traceiter_android_rvh_resume_cpus
-__traceiter_android_rvh_sched_balance_rt
-__traceiter_android_rvh_sched_cpu_dying
-__traceiter_android_rvh_sched_cpu_starting
-__traceiter_android_rvh_sched_exec
-__traceiter_android_rvh_sched_fork
-__traceiter_android_rvh_sched_fork_init
-__traceiter_android_rvh_sched_newidle_balance
-__traceiter_android_rvh_sched_nohz_balancer_kick
-__traceiter_android_rvh_sched_rebalance_domains
-__traceiter_android_rvh_schedule
-__traceiter_android_rvh_schedule_bug
-__traceiter_android_rvh_select_fallback_rq
-__traceiter_android_rvh_select_task_rq_fair
-__traceiter_android_rvh_select_task_rq_rt
-__traceiter_android_rvh_set_gfp_zone_flags
-__traceiter_android_rvh_set_iowait
-__traceiter_android_rvh_set_readahead_gfp_mask
-__traceiter_android_rvh_set_skip_swapcache_flags
-__traceiter_android_rvh_set_task_cpu
-__traceiter_android_rvh_tick_entry
-__traceiter_android_rvh_try_to_wake_up
-__traceiter_android_rvh_try_to_wake_up_success
-__traceiter_android_rvh_ttwu_cond
-__traceiter_android_rvh_typec_tcpci_chk_contaminant
-__traceiter_android_rvh_typec_tcpci_get_vbus
-__traceiter_android_rvh_uclamp_eff_get
-__traceiter_android_rvh_update_cpu_capacity
-__traceiter_android_rvh_update_cpus_allowed
-__traceiter_android_rvh_update_misfit_status
-__traceiter_android_rvh_util_est_update
-__traceiter_android_rvh_wake_up_new_task
-__traceiter_android_vh_allow_domain_state
-__traceiter_android_vh_arch_set_freq_scale
-__traceiter_android_vh_binder_restore_priority
-__traceiter_android_vh_binder_set_priority
-__traceiter_android_vh_binder_transaction_init
-__traceiter_android_vh_binder_wakeup_ilocked
-__traceiter_android_vh_cma_alloc_finish
-__traceiter_android_vh_cma_alloc_start
-__traceiter_android_vh_cpu_idle_enter
-__traceiter_android_vh_cpu_idle_exit
-__traceiter_android_vh_dump_throttled_rt_tasks
-__traceiter_android_vh_enable_thermal_genl_check
-__traceiter_android_vh_ep_create_wakeup_source
-__traceiter_android_vh_freq_table_limits
-__traceiter_android_vh_ftrace_dump_buffer
-__traceiter_android_vh_ftrace_format_check
-__traceiter_android_vh_ftrace_oops_enter
-__traceiter_android_vh_ftrace_oops_exit
-__traceiter_android_vh_ftrace_size_check
-__traceiter_android_vh_iommu_setup_dma_ops
-__traceiter_android_vh_ipi_stop
-__traceiter_android_vh_is_fpsimd_save
-__traceiter_android_vh_jiffies_update
-__traceiter_android_vh_kfree_skb
-__traceiter_android_vh_logbuf
-__traceiter_android_vh_logbuf_pr_cont
-__traceiter_android_vh_meminfo_proc_show
-__traceiter_android_vh_pagecache_get_page
-__traceiter_android_vh_printk_hotplug
-__traceiter_android_vh_ptype_head
-__traceiter_android_vh_rmqueue
-__traceiter_android_vh_scheduler_tick
-__traceiter_android_vh_show_max_freq
-__traceiter_android_vh_show_mem
-__traceiter_android_vh_show_resume_epoch_val
-__traceiter_android_vh_show_suspend_epoch_val
-__traceiter_android_vh_timer_calc_index
-__traceiter_android_vh_timerfd_create
-__traceiter_android_vh_typec_store_partner_src_caps
-__traceiter_android_vh_typec_tcpci_override_toggling
-__traceiter_android_vh_typec_tcpm_adj_current_limit
-__traceiter_android_vh_typec_tcpm_get_timer
-__traceiter_android_vh_ufs_check_int_errors
-__traceiter_android_vh_ufs_compl_command
-__traceiter_android_vh_ufs_fill_prdt
-__traceiter_android_vh_ufs_prepare_command
-__traceiter_android_vh_ufs_send_command
-__traceiter_android_vh_ufs_send_tm_command
-__traceiter_android_vh_ufs_send_uic_command
-__traceiter_android_vh_ufs_update_sdev
-__traceiter_android_vh_ufs_update_sysfs
-__traceiter_clock_set_rate
-__traceiter_cpu_frequency
-__traceiter_dma_fence_emit
-__traceiter_dwc3_readl
-__traceiter_dwc3_writel
-__traceiter_gpu_mem_total
-__traceiter_sched_util_est_se_tp
-__traceiter_xdp_exception
-__tracepoint_android_rvh_account_irq
-__tracepoint_android_rvh_arm64_serror_panic
-__tracepoint_android_rvh_bad_mode
-__tracepoint_android_rvh_build_perf_domains
-__tracepoint_android_rvh_can_migrate_task
-__tracepoint_android_rvh_check_preempt_wakeup
-__tracepoint_android_rvh_cpu_cgroup_attach
-__tracepoint_android_rvh_cpu_cgroup_can_attach
-__tracepoint_android_rvh_cpu_cgroup_online
-__tracepoint_android_rvh_cpu_overutilized
-__tracepoint_android_rvh_cpufreq_transition
-__tracepoint_android_rvh_dequeue_task
-__tracepoint_android_rvh_dequeue_task_idle
-__tracepoint_android_rvh_die_kernel_fault
-__tracepoint_android_rvh_do_mem_abort
-__tracepoint_android_rvh_do_sea
-__tracepoint_android_rvh_do_sp_pc_abort
-__tracepoint_android_rvh_do_undefinstr
-__tracepoint_android_rvh_enqueue_task
-__tracepoint_android_rvh_find_busiest_queue
-__tracepoint_android_rvh_find_energy_efficient_cpu
-__tracepoint_android_rvh_find_lowest_rq
-__tracepoint_android_rvh_flush_task
-__tracepoint_android_rvh_irqs_disable
-__tracepoint_android_rvh_irqs_enable
-__tracepoint_android_rvh_migrate_queued_task
-__tracepoint_android_rvh_new_task_stats
-__tracepoint_android_rvh_pick_next_entity
-__tracepoint_android_rvh_place_entity
-__tracepoint_android_rvh_preempt_disable
-__tracepoint_android_rvh_preempt_enable
-__tracepoint_android_rvh_replace_next_task_fair
-__tracepoint_android_rvh_report_bug
-__tracepoint_android_rvh_resume_cpus
-__tracepoint_android_rvh_sched_balance_rt
-__tracepoint_android_rvh_sched_cpu_dying
-__tracepoint_android_rvh_sched_cpu_starting
-__tracepoint_android_rvh_sched_exec
-__tracepoint_android_rvh_sched_fork
-__tracepoint_android_rvh_sched_fork_init
-__tracepoint_android_rvh_sched_newidle_balance
-__tracepoint_android_rvh_sched_nohz_balancer_kick
-__tracepoint_android_rvh_sched_rebalance_domains
-__tracepoint_android_rvh_schedule
-__tracepoint_android_rvh_schedule_bug
-__tracepoint_android_rvh_select_fallback_rq
-__tracepoint_android_rvh_select_task_rq_fair
-__tracepoint_android_rvh_select_task_rq_rt
-__tracepoint_android_rvh_set_gfp_zone_flags
-__tracepoint_android_rvh_set_iowait
-__tracepoint_android_rvh_set_readahead_gfp_mask
-__tracepoint_android_rvh_set_skip_swapcache_flags
-__tracepoint_android_rvh_set_task_cpu
-__tracepoint_android_rvh_tick_entry
-__tracepoint_android_rvh_try_to_wake_up
-__tracepoint_android_rvh_try_to_wake_up_success
-__tracepoint_android_rvh_ttwu_cond
-__tracepoint_android_rvh_typec_tcpci_chk_contaminant
-__tracepoint_android_rvh_typec_tcpci_get_vbus
-__tracepoint_android_rvh_uclamp_eff_get
-__tracepoint_android_rvh_update_cpu_capacity
-__tracepoint_android_rvh_update_cpus_allowed
-__tracepoint_android_rvh_update_misfit_status
-__tracepoint_android_rvh_util_est_update
-__tracepoint_android_rvh_wake_up_new_task
-__tracepoint_android_vh_allow_domain_state
-__tracepoint_android_vh_arch_set_freq_scale
-__tracepoint_android_vh_binder_restore_priority
-__tracepoint_android_vh_binder_set_priority
-__tracepoint_android_vh_binder_transaction_init
-__tracepoint_android_vh_binder_wakeup_ilocked
-__tracepoint_android_vh_cgroup_attach
-__tracepoint_android_vh_cma_alloc_finish
-__tracepoint_android_vh_cma_alloc_start
-__tracepoint_android_vh_cpu_idle_enter
-__tracepoint_android_vh_cpu_idle_exit
-__tracepoint_android_vh_dump_throttled_rt_tasks
-__tracepoint_android_vh_enable_thermal_genl_check
-__tracepoint_android_vh_ep_create_wakeup_source
-__tracepoint_android_vh_freq_table_limits
-__tracepoint_android_vh_ftrace_dump_buffer
-__tracepoint_android_vh_ftrace_format_check
-__tracepoint_android_vh_ftrace_oops_enter
-__tracepoint_android_vh_ftrace_oops_exit
-__tracepoint_android_vh_ftrace_size_check
-__tracepoint_android_vh_iommu_setup_dma_ops
-__tracepoint_android_vh_ipi_stop
-__tracepoint_android_vh_is_fpsimd_save
-__tracepoint_android_vh_jiffies_update
-__tracepoint_android_vh_kfree_skb
-__tracepoint_android_vh_logbuf
-__tracepoint_android_vh_logbuf_pr_cont
-__tracepoint_android_vh_meminfo_proc_show
-__tracepoint_android_vh_mutex_wait_finish
-__tracepoint_android_vh_mutex_wait_start
-__tracepoint_android_vh_pagecache_get_page
-__tracepoint_android_vh_printk_hotplug
-__tracepoint_android_vh_ptype_head
-__tracepoint_android_vh_rmqueue
-__tracepoint_android_vh_rtmutex_wait_finish
-__tracepoint_android_vh_rtmutex_wait_start
-__tracepoint_android_vh_rwsem_read_wait_finish
-__tracepoint_android_vh_rwsem_read_wait_start
-__tracepoint_android_vh_rwsem_write_wait_finish
-__tracepoint_android_vh_rwsem_write_wait_start
-__tracepoint_android_vh_sched_show_task
-__tracepoint_android_vh_scheduler_tick
-__tracepoint_android_vh_show_max_freq
-__tracepoint_android_vh_show_mem
-__tracepoint_android_vh_show_resume_epoch_val
-__tracepoint_android_vh_show_suspend_epoch_val
-__tracepoint_android_vh_timer_calc_index
-__tracepoint_android_vh_timerfd_create
-__tracepoint_android_vh_try_to_freeze_todo
-__tracepoint_android_vh_try_to_freeze_todo_unfrozen
-__tracepoint_android_vh_typec_store_partner_src_caps
-__tracepoint_android_vh_typec_tcpci_override_toggling
-__tracepoint_android_vh_typec_tcpm_adj_current_limit
-__tracepoint_android_vh_typec_tcpm_get_timer
-__tracepoint_android_vh_ufs_check_int_errors
-__tracepoint_android_vh_ufs_compl_command
-__tracepoint_android_vh_ufs_fill_prdt
-__tracepoint_android_vh_ufs_prepare_command
-__tracepoint_android_vh_ufs_send_command
-__tracepoint_android_vh_ufs_send_tm_command
-__tracepoint_android_vh_ufs_send_uic_command
-__tracepoint_android_vh_ufs_update_sdev
-__tracepoint_android_vh_ufs_update_sysfs
-__tracepoint_android_vh_watchdog_timer_softlockup
-__tracepoint_android_vh_wq_lockup_pool
-__tracepoint_binder_transaction_received
-__tracepoint_clock_set_rate
-__tracepoint_cpu_frequency
-__tracepoint_cpu_frequency_limits
-__tracepoint_cpu_idle
-__tracepoint_device_pm_callback_end
-__tracepoint_device_pm_callback_start
-__tracepoint_dma_fence_emit
-__tracepoint_dwc3_ep_queue
-__tracepoint_dwc3_readl
-__tracepoint_dwc3_writel
-__tracepoint_gpu_mem_total
-__tracepoint_hrtimer_expire_entry
-__tracepoint_hrtimer_expire_exit
-__tracepoint_ipi_entry
-__tracepoint_ipi_exit
-__tracepoint_ipi_raise
-__tracepoint_irq_handler_entry
-__tracepoint_irq_handler_exit
-__tracepoint_pelt_cfs_tp
-__tracepoint_pelt_dl_tp
-__tracepoint_pelt_irq_tp
-__tracepoint_pelt_rt_tp
-__tracepoint_pelt_se_tp
-__tracepoint_rwmmio_post_read
-__tracepoint_rwmmio_read
-__tracepoint_rwmmio_write
-__tracepoint_sched_cpu_capacity_tp
-__tracepoint_sched_overutilized_tp
-__tracepoint_sched_switch
-__tracepoint_sched_util_est_cfs_tp
-__tracepoint_sched_util_est_se_tp
-__tracepoint_suspend_resume
-__tracepoint_workqueue_execute_end
-__tracepoint_workqueue_execute_start
-__tracepoint_xdp_exception
-__tty_alloc_driver
-__tty_insert_flip_char
-__udelay
-__uio_register_device
-__unregister_chrdev
-__update_load_avg_blocked_se
-__usb_create_hcd
-__usb_get_extra_descriptor
-__usecs_to_jiffies
-__v4l2_device_register_subdev_nodes
-__video_register_device
-__wait_rcu_gp
-__wake_up
-__wake_up_locked
-__wake_up_locked_key
-__wake_up_sync
-__warn_printk
-__xa_alloc
-__xa_insert
-__xfrm_state_destroy
-_atomic_dec_and_lock
-_copy_from_iter
-_copy_from_iter_full
-_copy_to_iter
-_ctype
-_dev_alert
-_dev_crit
-_dev_emerg
-_dev_err
-_dev_info
-_dev_notice
-_dev_warn
-_raw_read_lock
-_raw_read_lock_bh
-_raw_read_lock_irq
-_raw_read_lock_irqsave
-_raw_read_unlock
-_raw_read_unlock_bh
-_raw_read_unlock_irq
-_raw_read_unlock_irqrestore
-_raw_spin_lock
-_raw_spin_lock_bh
-_raw_spin_lock_irq
-_raw_spin_lock_irqsave
-_raw_spin_trylock
-_raw_spin_trylock_bh
-_raw_spin_unlock
-_raw_spin_unlock_bh
-_raw_spin_unlock_irq
-_raw_spin_unlock_irqrestore
-_raw_write_lock
-_raw_write_lock_bh
-_raw_write_lock_irq
-_raw_write_lock_irqsave
-_raw_write_unlock
-_raw_write_unlock_bh
-_raw_write_unlock_irq
-_raw_write_unlock_irqrestore
-_snd_ctl_add_follower
-_snd_pcm_stream_lock_irqsave
-_totalram_pages
-access_process_vm
-ack_all_badblocks
-activate_task
-add_cpu
-add_device_randomness
-add_memory
-add_memory_subsection
-add_taint
-add_timer
-add_timer_on
-add_uevent_var
-add_wait_queue
-adjust_managed_page_count
-alarm_cancel
-alarm_init
-alarm_start
-alarm_start_relative
-alarm_try_to_cancel
-alarmtimer_get_rtcdev
-all_vm_events
-alloc_anon_inode
-alloc_chrdev_region
-alloc_etherdev_mqs
-alloc_io_pgtable_ops
-alloc_netdev_mqs
-alloc_page_buffers
-alloc_pages_exact
-alloc_skb_with_frags
-alloc_workqueue
-amba_bustype
-amba_driver_register
-amba_driver_unregister
-amba_release_regions
-amba_request_regions
-android_debug_per_cpu_symbol
-android_debug_symbol
-android_rvh_probe_register
-anon_inode_getfd
-anon_inode_getfile
-arch_timer_read_counter
-argv_free
-argv_split
-arm64_const_caps_ready
-arm64_use_ng_mappings
-async_schedule_node
-async_schedule_node_domain
-async_synchronize_full_domain
-atomic_notifier_call_chain
-atomic_notifier_chain_register
-atomic_notifier_chain_unregister
-autoremove_wake_function
-available_idle_cpu
-backlight_device_get_by_type
-backlight_device_register
-backlight_device_set_brightness
-backlight_device_unregister
-badblocks_clear
-badblocks_exit
-badblocks_init
-badblocks_set
-badblocks_show
-badblocks_store
-balloon_aops
-balloon_page_alloc
-balloon_page_dequeue
-balloon_page_enqueue
-bcmp
-bd_link_disk_holder
-bd_set_nr_sectors
-bd_unlink_disk_holder
-bdev_check_media_change
-bdev_read_only
-bdevname
-bdget_disk
-bdput
-bgpio_init
-bin2hex
-bio_add_page
-bio_alloc_bioset
-bio_associate_blkg
-bio_chain
-bio_clone_blkg_association
-bio_endio
-bio_init
-bio_put
-bioset_exit
-bioset_init
-bitmap_allocate_region
-bitmap_find_next_zero_area_off
-bitmap_from_arr32
-bitmap_parse
-bitmap_parselist
-bitmap_parselist_user
-bitmap_print_to_pagebuf
-bitmap_release_region
-bitmap_to_arr32
-bitmap_zalloc
-blk_alloc_queue
-blk_cleanup_queue
-blk_execute_rq
-blk_execute_rq_nowait
-blk_finish_plug
-blk_freeze_queue_start
-blk_get_queue
-blk_get_request
-blk_mq_alloc_request
-blk_mq_alloc_request_hctx
-blk_mq_alloc_tag_set
-blk_mq_complete_request
-blk_mq_complete_request_remote
-blk_mq_debugfs_rq_show
-blk_mq_delay_kick_requeue_list
-blk_mq_end_request
-blk_mq_free_request
-blk_mq_free_tag_set
-blk_mq_freeze_queue
-blk_mq_freeze_queue_wait
-blk_mq_freeze_queue_wait_timeout
-blk_mq_init_queue
-blk_mq_map_queues
-blk_mq_pci_map_queues
-blk_mq_quiesce_queue
-blk_mq_requeue_request
-blk_mq_rq_cpu
-blk_mq_run_hw_queues
-blk_mq_sched_request_inserted
-blk_mq_sched_try_insert_merge
-blk_mq_sched_try_merge
-blk_mq_start_request
-blk_mq_start_stopped_hw_queues
-blk_mq_stop_hw_queue
-blk_mq_tag_to_rq
-blk_mq_tagset_busy_iter
-blk_mq_tagset_wait_completed_request
-blk_mq_unfreeze_queue
-blk_mq_unique_tag
-blk_mq_unquiesce_queue
-blk_mq_update_nr_hw_queues
-blk_mq_virtio_map_queues
-blk_poll
-blk_put_queue
-blk_put_request
-blk_queue_alignment_offset
-blk_queue_bounce_limit
-blk_queue_can_use_dma_map_merging
-blk_queue_chunk_sectors
-blk_queue_dma_alignment
-blk_queue_flag_clear
-blk_queue_flag_set
-blk_queue_flag_test_and_set
-blk_queue_io_min
-blk_queue_io_opt
-blk_queue_logical_block_size
-blk_queue_max_discard_sectors
-blk_queue_max_discard_segments
-blk_queue_max_hw_sectors
-blk_queue_max_segment_size
-blk_queue_max_segments
-blk_queue_max_write_zeroes_sectors
-blk_queue_physical_block_size
-blk_queue_rq_timeout
-blk_queue_split
-blk_queue_virt_boundary
-blk_queue_write_cache
-blk_register_region
-blk_rq_map_kern
-blk_rq_map_user
-blk_rq_map_user_iov
-blk_rq_unmap_user
-blk_set_queue_dying
-blk_set_stacking_limits
-blk_start_plug
-blk_status_to_errno
-blk_sync_queue
-blk_unregister_region
-blk_update_request
-blk_verify_command
-blkdev_fsync
-blkdev_get_by_dev
-blkdev_get_by_path
-blkdev_issue_flush
-blkdev_put
-blocking_notifier_call_chain
-blocking_notifier_chain_register
-blocking_notifier_chain_unregister
-bmap
-bpf_dispatcher_xdp_func
-bpf_prog_add
-bpf_prog_put
-bpf_prog_sub
-bpf_stats_enabled_key
-bpf_trace_run1
-bpf_trace_run10
-bpf_trace_run11
-bpf_trace_run12
-bpf_trace_run2
-bpf_trace_run3
-bpf_trace_run4
-bpf_trace_run5
-bpf_trace_run6
-bpf_trace_run7
-bpf_trace_run8
-bpf_trace_run9
-bpf_warn_invalid_xdp_action
-bsearch
-bt_err
-bt_info
-build_skb
-bus_find_device
-bus_for_each_dev
-bus_for_each_drv
-bus_register
-bus_register_notifier
-bus_set_iommu
-bus_unregister
-bus_unregister_notifier
-cache_line_size
-call_netdevice_notifiers
-call_rcu
-call_rcu_tasks
-call_rcu_tasks_trace
-call_srcu
-cancel_delayed_work
-cancel_delayed_work_sync
-cancel_work_sync
-capable
-cdc_ncm_bind_common
-cdc_ncm_change_mtu
-cdc_ncm_fill_tx_frame
-cdc_ncm_rx_verify_ndp16
-cdc_ncm_rx_verify_nth16
-cdc_ncm_select_altsetting
-cdc_ncm_unbind
-cdc_parse_cdc_header
-cdev_add
-cdev_alloc
-cdev_del
-cdev_device_add
-cdev_device_del
-cdev_init
-cec_allocate_adapter
-cec_delete_adapter
-cec_received_msg_ts
-cec_register_adapter
-cec_s_log_addrs
-cec_s_phys_addr
-cec_s_phys_addr_from_edid
-cec_transmit_attempt_done_ts
-cec_transmit_done_ts
-cec_unregister_adapter
-cgroup_path_ns
-cgroup_taskset_first
-cgroup_taskset_next
-check_preempt_curr
-check_zeroed_user
-class_create_file_ns
-class_destroy
-class_find_device
-class_for_each_device
-class_interface_unregister
-class_remove_file_ns
-class_unregister
-cleancache_register_ops
-cleanup_srcu_struct
-clear_page
-clk_bulk_disable
-clk_bulk_enable
-clk_bulk_get_all
-clk_bulk_prepare
-clk_bulk_put_all
-clk_bulk_unprepare
-clk_disable
-clk_enable
-clk_fixed_factor_ops
-clk_fixed_rate_ops
-clk_get
-clk_get_parent
-clk_get_rate
-clk_hw_get_flags
-clk_hw_get_name
-clk_hw_get_num_parents
-clk_hw_get_parent
-clk_hw_get_parent_by_index
-clk_hw_get_rate
-clk_hw_is_enabled
-clk_hw_is_prepared
-clk_hw_register
-clk_hw_register_fixed_factor
-clk_hw_round_rate
-clk_hw_set_rate_range
-clk_hw_unregister
-clk_hw_unregister_divider
-clk_hw_unregister_fixed_factor
-clk_hw_unregister_gate
-clk_hw_unregister_mux
-clk_notifier_register
-clk_notifier_unregister
-clk_prepare
-clk_put
-clk_register
-clk_register_clkdev
-clk_register_fixed_factor
-clk_register_fixed_rate
-clk_register_gate
-clk_round_rate
-clk_set_parent
-clk_set_rate
-clk_sync_state
-clk_unprepare
-clk_unregister
-clockevents_config_and_register
-clocks_calc_mult_shift
-cma_alloc
-cma_for_each_area
-cma_get_name
-cma_release
-compat_alloc_user_space
-compat_only_sysfs_link_entry_to_kobj
-compat_ptr_ioctl
-complete
-complete_all
-complete_and_exit
-completion_done
-component_add
-component_bind_all
-component_del
-component_master_add_with_match
-component_master_del
-component_match_add_release
-component_unbind_all
-cond_synchronize_rcu
-config_ep_by_speed
-config_group_init
-config_group_init_type_name
-config_item_get
-config_item_put
-configfs_register_subsystem
-configfs_unregister_subsystem
-console_drivers
-console_printk
-console_stop
-console_suspend_enabled
-console_trylock
-console_unlock
-consume_skb
-contig_page_data
-copy_from_kernel_nofault
-copy_page
-cpu_all_bits
-cpu_bit_bitmap
-cpu_hwcap_keys
-cpu_hwcaps
-cpu_irqtime
-cpu_is_hotpluggable
-cpu_latency_qos_add_request
-cpu_latency_qos_remove_request
-cpu_latency_qos_request_active
-cpu_latency_qos_update_request
-cpu_number
-cpu_pm_register_notifier
-cpu_pm_unregister_notifier
-cpu_scale
-cpu_subsys
-cpu_topology
-cpufreq_add_update_util_hook
-cpufreq_cpu_get
-cpufreq_cpu_get_raw
-cpufreq_cpu_put
-cpufreq_disable_fast_switch
-cpufreq_driver_fast_switch
-cpufreq_driver_resolve_freq
-cpufreq_enable_boost_support
-cpufreq_enable_fast_switch
-cpufreq_freq_attr_scaling_available_freqs
-cpufreq_freq_attr_scaling_boost_freqs
-cpufreq_freq_transition_begin
-cpufreq_freq_transition_end
-cpufreq_frequency_table_verify
-cpufreq_generic_attr
-cpufreq_generic_frequency_table_verify
-cpufreq_generic_get
-cpufreq_generic_suspend
-cpufreq_get_driver_data
-cpufreq_get_policy
-cpufreq_policy_transition_delay_us
-cpufreq_quick_get
-cpufreq_quick_get_max
-cpufreq_register_driver
-cpufreq_register_governor
-cpufreq_register_notifier
-cpufreq_remove_update_util_hook
-cpufreq_table_index_unsorted
-cpufreq_this_cpu_can_update
-cpufreq_unregister_driver
-cpufreq_unregister_notifier
-cpufreq_update_policy
-cpuhp_tasks_frozen
-cpuidle_governor_latency_req
-cpuidle_register_governor
-cpumask_any_but
-cpumask_next
-cpumask_next_and
-cpumask_next_wrap
-cpupri_find_fitness
-cpus_read_lock
-cpus_read_unlock
-crc16
-crc32_le
-crc8
-crc8_populate_msb
-create_function_device
-crypto_aead_encrypt
-crypto_aead_setauthsize
-crypto_aead_setkey
-crypto_alloc_aead
-crypto_alloc_base
-crypto_alloc_shash
-crypto_alloc_skcipher
-crypto_cipher_encrypt_one
-crypto_cipher_setkey
-crypto_comp_compress
-crypto_comp_decompress
-crypto_destroy_tfm
-crypto_has_alg
-crypto_register_alg
-crypto_register_rngs
-crypto_register_scomp
-crypto_shash_digest
-crypto_shash_final
-crypto_shash_setkey
-crypto_shash_update
-crypto_skcipher_decrypt
-crypto_skcipher_encrypt
-crypto_skcipher_setkey
-crypto_unregister_alg
-crypto_unregister_rngs
-crypto_unregister_scomp
-css_next_child
-csum_ipv6_magic
-csum_partial
-csum_tcpudp_nofold
-current_time
-current_work
-d_add
-d_alloc_name
-d_delete
-d_make_root
-d_path
-dapm_pinctrl_event
-dapm_regulator_event
-datagram_poll
-deactivate_task
-debugfs_attr_read
-debugfs_attr_write
-debugfs_create_atomic_t
-debugfs_create_blob
-debugfs_create_bool
-debugfs_create_dir
-debugfs_create_file
-debugfs_create_file_unsafe
-debugfs_create_regset32
-debugfs_create_size_t
-debugfs_create_symlink
-debugfs_create_u16
-debugfs_create_u32
-debugfs_create_u64
-debugfs_create_u8
-debugfs_create_ulong
-debugfs_create_x32
-debugfs_create_x64
-debugfs_create_x8
-debugfs_file_get
-debugfs_file_put
-debugfs_lookup
-debugfs_print_regs32
-debugfs_remove
-dec_zone_page_state
-default_llseek
-deferred_free
-del_gendisk
-del_timer
-del_timer_sync
-delayed_work_timer_fn
-desc_to_gpio
-destroy_workqueue
-dev_alloc_name
-dev_close
-dev_coredumpm
-dev_coredumpv
-dev_driver_string
-dev_err_probe
-dev_fwnode
-dev_get_by_index
-dev_get_by_name
-dev_get_regmap
-dev_get_stats
-dev_mc_sync_multiple
-dev_mc_unsync
-dev_open
-dev_pm_clear_wake_irq
-dev_pm_domain_attach
-dev_pm_domain_attach_by_name
-dev_pm_domain_detach
-dev_pm_genpd_add_notifier
-dev_pm_genpd_remove_notifier
-dev_pm_genpd_set_next_wakeup
-dev_pm_genpd_set_performance_state
-dev_pm_opp_add
-dev_pm_opp_adjust_voltage
-dev_pm_opp_disable
-dev_pm_opp_enable
-dev_pm_opp_find_freq_ceil
-dev_pm_opp_find_freq_ceil_by_volt
-dev_pm_opp_find_freq_exact
-dev_pm_opp_find_freq_floor
-dev_pm_opp_free_cpufreq_table
-dev_pm_opp_get_freq
-dev_pm_opp_get_level
-dev_pm_opp_get_max_transition_latency
-dev_pm_opp_get_opp_count
-dev_pm_opp_get_opp_table
-dev_pm_opp_get_sharing_cpus
-dev_pm_opp_get_suspend_opp_freq
-dev_pm_opp_get_voltage
-dev_pm_opp_init_cpufreq_table
-dev_pm_opp_of_add_table
-dev_pm_opp_of_cpumask_add_table
-dev_pm_opp_of_cpumask_remove_table
-dev_pm_opp_of_find_icc_paths
-dev_pm_opp_of_get_sharing_cpus
-dev_pm_opp_of_register_em
-dev_pm_opp_of_remove_table
-dev_pm_opp_put
-dev_pm_opp_put_clkname
-dev_pm_opp_put_opp_table
-dev_pm_opp_put_regulators
-dev_pm_opp_register_notifier
-dev_pm_opp_remove_all_dynamic
-dev_pm_opp_set_bw
-dev_pm_opp_set_clkname
-dev_pm_opp_set_rate
-dev_pm_opp_set_regulators
-dev_pm_opp_set_sharing_cpus
-dev_pm_opp_set_supported_hw
-dev_pm_opp_unregister_notifier
-dev_pm_qos_add_notifier
-dev_pm_qos_add_request
-dev_pm_qos_expose_latency_tolerance
-dev_pm_qos_hide_latency_tolerance
-dev_pm_qos_read_value
-dev_pm_qos_remove_notifier
-dev_pm_qos_remove_request
-dev_pm_qos_update_request
-dev_pm_qos_update_user_latency_tolerance
-dev_pm_set_dedicated_wake_irq
-dev_printk
-dev_printk_emit
-dev_queue_xmit
-dev_set_mtu
-dev_set_name
-dev_uc_sync_multiple
-dev_uc_unsync
-devfreq_add_device
-devfreq_add_governor
-devfreq_cooling_unregister
-devfreq_get_devfreq_by_phandle
-devfreq_monitor_resume
-devfreq_monitor_start
-devfreq_monitor_stop
-devfreq_monitor_suspend
-devfreq_recommended_opp
-devfreq_register_opp_notifier
-devfreq_remove_device
-devfreq_remove_governor
-devfreq_resume_device
-devfreq_suspend_device
-devfreq_unregister_opp_notifier
-devfreq_update_interval
-device_add
-device_add_disk
-device_add_groups
-device_attach
-device_bind_driver
-device_create
-device_create_bin_file
-device_create_file
-device_create_with_groups
-device_del
-device_destroy
-device_find_child
-device_for_each_child
-device_get_dma_attr
-device_get_mac_address
-device_get_match_data
-device_get_named_child_node
-device_get_next_child_node
-device_init_wakeup
-device_initialize
-device_link_add
-device_link_del
-device_match_fwnode
-device_match_name
-device_match_of_node
-device_property_present
-device_property_read_string
-device_property_read_string_array
-device_property_read_u16_array
-device_property_read_u32_array
-device_property_read_u8_array
-device_register
-device_release_driver
-device_remove_bin_file
-device_remove_file
-device_remove_file_self
-device_remove_groups
-device_set_wakeup_capable
-device_set_wakeup_enable
-device_show_bool
-device_show_int
-device_store_bool
-device_store_int
-device_unregister
-device_wakeup_disable
-device_wakeup_enable
-devm_add_action
-devm_backlight_device_register
-devm_backlight_device_unregister
-devm_blk_ksm_init
-devm_clk_bulk_get
-devm_clk_bulk_get_all
-devm_clk_bulk_get_optional
-devm_clk_get
-devm_clk_get_optional
-devm_clk_hw_register
-devm_clk_hw_register_clkdev
-devm_clk_put
-devm_clk_register
-devm_devfreq_add_device
-devm_devfreq_register_notifier
-devm_devfreq_unregister_notifier
-devm_device_add_group
-devm_device_add_groups
-devm_device_remove_group
-devm_drm_panel_bridge_add_typed
-devm_extcon_dev_allocate
-devm_extcon_dev_register
-devm_extcon_dev_unregister
-devm_extcon_register_notifier
-devm_free_irq
-devm_free_percpu
-devm_gen_pool_create
-devm_get_clk_from_child
-devm_gpio_free
-devm_gpio_request
-devm_gpio_request_one
-devm_gpiochip_add_data_with_key
-devm_gpiod_get
-devm_gpiod_get_array
-devm_gpiod_get_index
-devm_gpiod_get_optional
-devm_gpiod_put_array
-devm_hwrng_register
-devm_hwspin_lock_register
-devm_i2c_new_dummy_device
-devm_iio_channel_get
-devm_iio_device_alloc
-devm_input_allocate_device
-devm_ioremap
-devm_ioremap_resource
-devm_ioremap_wc
-devm_iounmap
-devm_kasprintf
-devm_kfree
-devm_kmalloc
-devm_kmemdup
-devm_kstrdup
-devm_kstrdup_const
-devm_kvasprintf
-devm_led_classdev_register_ext
-devm_mbox_controller_register
-devm_memremap
-devm_mfd_add_devices
-devm_nvmem_cell_get
-devm_nvmem_device_get
-devm_nvmem_register
-devm_of_clk_add_hw_provider
-devm_of_icc_get
-devm_of_iomap
-devm_of_platform_populate
-devm_of_pwm_get
-devm_pci_alloc_host_bridge
-devm_phy_create
-devm_phy_get
-devm_phy_put
-devm_pinctrl_get
-devm_pinctrl_put
-devm_pinctrl_register
-devm_pinctrl_register_and_init
-devm_platform_get_and_ioremap_resource
-devm_platform_ioremap_resource
-devm_platform_ioremap_resource_byname
-devm_power_supply_register
-devm_pwm_put
-devm_regmap_add_irq_chip
-devm_regmap_del_irq_chip
-devm_regmap_field_alloc
-devm_regulator_bulk_get
-devm_regulator_get
-devm_regulator_get_exclusive
-devm_regulator_get_optional
-devm_regulator_put
-devm_regulator_register
-devm_regulator_register_notifier
-devm_request_any_context_irq
-devm_request_threaded_irq
-devm_reset_control_array_get
-devm_reset_controller_register
-devm_rtc_allocate_device
-devm_rtc_device_register
-devm_snd_dmaengine_pcm_register
-devm_snd_soc_register_card
-devm_snd_soc_register_component
-devm_spi_register_controller
-devm_thermal_of_cooling_device_register
-devm_thermal_zone_of_sensor_register
-devm_thermal_zone_of_sensor_unregister
-devm_usb_get_phy
-devm_usb_get_phy_by_node
-devm_usb_get_phy_by_phandle
-devm_watchdog_register_device
-devres_add
-devres_alloc_node
-devres_free
-devres_release
-disable_irq
-disable_irq_nosync
-disable_percpu_irq
-disk_end_io_acct
-disk_start_io_acct
-divider_get_val
-divider_recalc_rate
-divider_ro_round_rate_parent
-divider_round_rate_parent
-dma_alloc_attrs
-dma_async_device_register
-dma_async_device_unregister
-dma_async_tx_descriptor_init
-dma_buf_attach
-dma_buf_begin_cpu_access
-dma_buf_begin_cpu_access_partial
-dma_buf_detach
-dma_buf_dynamic_attach
-dma_buf_end_cpu_access
-dma_buf_end_cpu_access_partial
-dma_buf_export
-dma_buf_fd
-dma_buf_get
-dma_buf_get_flags
-dma_buf_map_attachment
-dma_buf_mmap
-dma_buf_move_notify
-dma_buf_pin
-dma_buf_put
-dma_buf_unmap_attachment
-dma_buf_unpin
-dma_buf_vmap
-dma_buf_vunmap
-dma_contiguous_default_area
-dma_fence_add_callback
-dma_fence_array_create
-dma_fence_array_ops
-dma_fence_context_alloc
-dma_fence_default_wait
-dma_fence_enable_sw_signaling
-dma_fence_free
-dma_fence_get_status
-dma_fence_get_stub
-dma_fence_init
-dma_fence_match_context
-dma_fence_release
-dma_fence_remove_callback
-dma_fence_signal
-dma_fence_signal_locked
-dma_fence_wait_any_timeout
-dma_fence_wait_timeout
-dma_free_attrs
-dma_get_merge_boundary
-dma_get_required_mask
-dma_get_sgtable_attrs
-dma_get_slave_caps
-dma_get_slave_channel
-dma_heap_add
-dma_heap_buffer_alloc
-dma_heap_buffer_free
-dma_heap_find
-dma_heap_get_dev
-dma_heap_get_drvdata
-dma_heap_get_name
-dma_heap_put
-dma_map_page_attrs
-dma_map_resource
-dma_map_sg_attrs
-dma_max_mapping_size
-dma_mmap_attrs
-dma_pool_alloc
-dma_pool_create
-dma_pool_destroy
-dma_pool_free
-dma_release_channel
-dma_request_chan
-dma_resv_add_excl_fence
-dma_resv_add_shared_fence
-dma_resv_fini
-dma_resv_get_fences_rcu
-dma_resv_init
-dma_resv_reserve_shared
-dma_resv_test_signaled_rcu
-dma_resv_wait_timeout_rcu
-dma_set_coherent_mask
-dma_set_mask
-dma_sync_sg_for_cpu
-dma_sync_sg_for_device
-dma_sync_single_for_cpu
-dma_sync_single_for_device
-dma_unmap_page_attrs
-dma_unmap_resource
-dma_unmap_sg_attrs
-dmabuf_page_pool_alloc
-dmabuf_page_pool_create
-dmabuf_page_pool_destroy
-dmabuf_page_pool_free
-dmaengine_unmap_put
-dmam_alloc_attrs
-dmam_free_coherent
-dmam_pool_create
-do_SAK
-do_exit
-do_trace_rcu_torture_read
-do_wait_intr
-do_wait_intr_irq
-down
-down_interruptible
-down_read
-down_read_killable
-down_read_trylock
-down_timeout
-down_trylock
-down_write
-downgrade_write
-dput
-drain_workqueue
-driver_attach
-driver_create_file
-driver_find_device
-driver_register
-driver_remove_file
-driver_unregister
-drm_add_edid_modes
-drm_add_modes_noedid
-drm_atomic_add_affected_connectors
-drm_atomic_add_affected_planes
-drm_atomic_commit
-drm_atomic_get_connector_state
-drm_atomic_get_crtc_state
-drm_atomic_get_new_connector_for_encoder
-drm_atomic_get_plane_state
-drm_atomic_get_private_obj_state
-drm_atomic_helper_bridge_destroy_state
-drm_atomic_helper_bridge_duplicate_state
-drm_atomic_helper_bridge_reset
-drm_atomic_helper_check
-drm_atomic_helper_check_modeset
-drm_atomic_helper_check_plane_state
-drm_atomic_helper_check_planes
-drm_atomic_helper_cleanup_planes
-drm_atomic_helper_commit
-drm_atomic_helper_commit_cleanup_done
-drm_atomic_helper_commit_duplicated_state
-drm_atomic_helper_commit_hw_done
-drm_atomic_helper_commit_modeset_disables
-drm_atomic_helper_commit_modeset_enables
-drm_atomic_helper_commit_planes
-drm_atomic_helper_commit_tail
-drm_atomic_helper_connector_destroy_state
-drm_atomic_helper_connector_duplicate_state
-drm_atomic_helper_connector_reset
-drm_atomic_helper_crtc_destroy_state
-drm_atomic_helper_crtc_duplicate_state
-drm_atomic_helper_crtc_reset
-drm_atomic_helper_damage_merged
-drm_atomic_helper_dirtyfb
-drm_atomic_helper_disable_plane
-drm_atomic_helper_disable_planes_on_crtc
-drm_atomic_helper_duplicate_state
-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_prepare_planes
-drm_atomic_helper_set_config
-drm_atomic_helper_setup_commit
-drm_atomic_helper_shutdown
-drm_atomic_helper_swap_state
-drm_atomic_helper_update_legacy_modeset_state
-drm_atomic_helper_update_plane
-drm_atomic_helper_wait_for_dependencies
-drm_atomic_helper_wait_for_fences
-drm_atomic_helper_wait_for_flip_done
-drm_atomic_helper_wait_for_vblanks
-drm_atomic_normalize_zpos
-drm_atomic_private_obj_fini
-drm_atomic_private_obj_init
-drm_atomic_set_crtc_for_connector
-drm_atomic_set_crtc_for_plane
-drm_atomic_set_fb_for_plane
-drm_atomic_set_fence_for_plane
-drm_atomic_set_mode_for_crtc
-drm_atomic_state_alloc
-drm_atomic_state_clear
-drm_atomic_state_default_clear
-drm_atomic_state_default_release
-drm_atomic_state_init
-drm_bridge_add
-drm_bridge_attach
-drm_bridge_chain_disable
-drm_bridge_chain_enable
-drm_bridge_chain_mode_set
-drm_bridge_chain_post_disable
-drm_bridge_chain_pre_enable
-drm_bridge_hpd_notify
-drm_bridge_remove
-drm_client_init
-drm_client_modeset_commit_locked
-drm_client_register
-drm_compat_ioctl
-drm_connector_attach_dp_subconnector_property
-drm_connector_attach_edid_property
-drm_connector_attach_encoder
-drm_connector_cleanup
-drm_connector_has_possible_encoder
-drm_connector_init
-drm_connector_init_with_ddc
-drm_connector_list_iter_begin
-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_arm_vblank_event
-drm_crtc_cleanup
-drm_crtc_enable_color_mgmt
-drm_crtc_from_index
-drm_crtc_handle_vblank
-drm_crtc_helper_set_config
-drm_crtc_helper_set_mode
-drm_crtc_init
-drm_crtc_init_with_planes
-drm_crtc_send_vblank_event
-drm_crtc_set_max_vblank_count
-drm_crtc_vblank_count
-drm_crtc_vblank_count_and_time
-drm_crtc_vblank_get
-drm_crtc_vblank_helper_get_vblank_timestamp
-drm_crtc_vblank_off
-drm_crtc_vblank_on
-drm_crtc_vblank_put
-drm_crtc_vblank_reset
-drm_crtc_wait_one_vblank
-drm_cvt_mode
-drm_debugfs_create_files
-drm_detect_hdmi_monitor
-drm_detect_monitor_audio
-drm_dev_alloc
-drm_dev_dbg
-drm_dev_enter
-drm_dev_exit
-drm_dev_get
-drm_dev_printk
-drm_dev_put
-drm_dev_register
-drm_dev_set_unique
-drm_dev_unplug
-drm_dev_unregister
-drm_display_mode_to_videomode
-drm_do_get_edid
-drm_dp_atomic_find_vcpi_slots
-drm_dp_atomic_release_vcpi_slots
-drm_dp_aux_init
-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_find_vcpi_slots
-drm_dp_get_adjust_request_pre_emphasis
-drm_dp_get_adjust_request_voltage
-drm_dp_get_edid_quirks
-drm_dp_link_rate_to_bw_code
-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_get_edid
-drm_dp_mst_get_port_malloc
-drm_dp_mst_hpd_irq
-drm_dp_mst_put_port_malloc
-drm_dp_mst_reset_vcpi_slots
-drm_dp_mst_topology_mgr_destroy
-drm_dp_mst_topology_mgr_init
-drm_dp_mst_topology_mgr_set_mst
-drm_dp_send_power_updown_phy
-drm_dp_set_subconnector_property
-drm_dp_update_payload_part1
-drm_dp_update_payload_part2
-drm_edid_block_valid
-drm_edid_duplicate
-drm_edid_get_monitor_name
-drm_edid_header_is_valid
-drm_edid_is_valid
-drm_edid_to_sad
-drm_edid_to_speaker_allocation
-drm_encoder_cleanup
-drm_encoder_init
-drm_event_cancel_free
-drm_event_reserve_init
-drm_event_reserve_init_locked
-drm_fb_cma_get_gem_obj
-drm_flip_work_cleanup
-drm_flip_work_commit
-drm_flip_work_init
-drm_flip_work_queue
-drm_format_info
-drm_framebuffer_cleanup
-drm_framebuffer_init
-drm_framebuffer_lookup
-drm_framebuffer_remove
-drm_framebuffer_unregister_private
-drm_gem_cma_dumb_create_internal
-drm_gem_cma_free_object
-drm_gem_cma_mmap
-drm_gem_cma_prime_get_sg_table
-drm_gem_cma_prime_import_sg_table
-drm_gem_cma_prime_mmap
-drm_gem_cma_prime_vmap
-drm_gem_cma_prime_vunmap
-drm_gem_cma_vm_ops
-drm_gem_create_mmap_offset
-drm_gem_dmabuf_mmap
-drm_gem_dmabuf_release
-drm_gem_dmabuf_vmap
-drm_gem_dmabuf_vunmap
-drm_gem_fb_create
-drm_gem_fb_create_handle
-drm_gem_fb_destroy
-drm_gem_fb_get_obj
-drm_gem_fb_prepare_fb
-drm_gem_free_mmap_offset
-drm_gem_get_pages
-drm_gem_handle_create
-drm_gem_lock_reservations
-drm_gem_map_attach
-drm_gem_map_detach
-drm_gem_map_dma_buf
-drm_gem_mmap
-drm_gem_mmap_obj
-drm_gem_object_free
-drm_gem_object_init
-drm_gem_object_lookup
-drm_gem_object_put_locked
-drm_gem_object_release
-drm_gem_prime_export
-drm_gem_prime_fd_to_handle
-drm_gem_prime_handle_to_fd
-drm_gem_prime_import
-drm_gem_prime_import_dev
-drm_gem_prime_mmap
-drm_gem_private_object_init
-drm_gem_put_pages
-drm_gem_shmem_create
-drm_gem_shmem_free_object
-drm_gem_shmem_get_sg_table
-drm_gem_shmem_mmap
-drm_gem_shmem_pin
-drm_gem_shmem_print_info
-drm_gem_shmem_unpin
-drm_gem_shmem_vmap
-drm_gem_shmem_vunmap
-drm_gem_unlock_reservations
-drm_gem_unmap_dma_buf
-drm_gem_vm_close
-drm_gem_vm_open
-drm_get_connector_status_name
-drm_get_edid
-drm_get_format_info
-drm_get_format_name
-drm_handle_vblank
-drm_hdmi_avi_infoframe_from_display_mode
-drm_helper_connector_dpms
-drm_helper_disable_unused_functions
-drm_helper_force_disable_all
-drm_helper_hpd_irq_event
-drm_helper_mode_fill_fb_struct
-drm_helper_probe_single_connector_modes
-drm_helper_resume_force_mode
-drm_ioctl
-drm_irq_install
-drm_irq_uninstall
-drm_is_current_master
-drm_kms_helper_hotplug_event
-drm_kms_helper_is_poll_worker
-drm_kms_helper_poll_disable
-drm_kms_helper_poll_enable
-drm_kms_helper_poll_fini
-drm_kms_helper_poll_init
-drm_match_cea_mode
-drm_mm_init
-drm_mm_insert_node_in_range
-drm_mm_print
-drm_mm_remove_node
-drm_mm_takedown
-drm_mode_config_cleanup
-drm_mode_config_helper_resume
-drm_mode_config_helper_suspend
-drm_mode_config_reset
-drm_mode_convert_to_umode
-drm_mode_convert_umode
-drm_mode_copy
-drm_mode_create
-drm_mode_create_dp_colorspace_property
-drm_mode_create_scaling_mode_property
-drm_mode_create_tile_group
-drm_mode_crtc_set_gamma_size
-drm_mode_debug_printmodeline
-drm_mode_destroy
-drm_mode_duplicate
-drm_mode_equal
-drm_mode_equal_no_clocks
-drm_mode_get_tile_group
-drm_mode_is_420_only
-drm_mode_match
-drm_mode_object_find
-drm_mode_object_get
-drm_mode_object_put
-drm_mode_probed_add
-drm_mode_set_crtcinfo
-drm_mode_set_name
-drm_mode_sort
-drm_mode_vrefresh
-drm_modeset_acquire_fini
-drm_modeset_acquire_init
-drm_modeset_backoff
-drm_modeset_drop_locks
-drm_modeset_lock
-drm_modeset_lock_all
-drm_modeset_lock_all_ctx
-drm_modeset_lock_init
-drm_modeset_unlock
-drm_modeset_unlock_all
-drm_need_swiotlb
-drm_object_attach_property
-drm_object_property_set_value
-drm_of_component_match_add
-drm_of_find_possible_crtcs
-drm_open
-drm_panel_add
-drm_panel_disable
-drm_panel_enable
-drm_panel_get_modes
-drm_panel_init
-drm_panel_prepare
-drm_panel_remove
-drm_panel_unprepare
-drm_plane_cleanup
-drm_plane_create_alpha_property
-drm_plane_create_blend_mode_property
-drm_plane_create_rotation_property
-drm_plane_create_zpos_property
-drm_plane_enable_fb_damage_clips
-drm_poll
-drm_prime_gem_destroy
-drm_prime_pages_to_sg
-drm_prime_sg_to_page_addr_arrays
-drm_printf
-drm_property_blob_get
-drm_property_blob_put
-drm_property_create
-drm_property_create_bitmask
-drm_property_create_blob
-drm_property_create_bool
-drm_property_create_enum
-drm_property_create_range
-drm_property_create_signed_range
-drm_property_lookup_blob
-drm_property_replace_blob
-drm_puts
-drm_read
-drm_rect_calc_hscale
-drm_rect_calc_vscale
-drm_rect_clip_scaled
-drm_rect_intersect
-drm_release
-drm_rotation_simplify
-drm_send_event
-drm_send_event_locked
-drm_set_preferred_mode
-drm_simple_encoder_init
-drm_state_dump
-drm_syncobj_add_point
-drm_syncobj_create
-drm_syncobj_find
-drm_syncobj_find_fence
-drm_syncobj_free
-drm_syncobj_get_fd
-drm_syncobj_get_handle
-drm_syncobj_replace_fence
-drm_sysfs_hotplug_event
-drm_universal_plane_init
-drm_vblank_init
-drm_vma_node_allow
-drm_vma_node_is_allowed
-drm_vma_node_revoke
-drm_wait_one_vblank
-drm_writeback_connector_init
-drm_writeback_queue_job
-drm_writeback_signal_completion
-drmm_kmalloc
-drmm_mode_config_init
-dst_release
-dump_backtrace
-dump_stack
-dup_iter
-dw_handle_msi_irq
-dw_pcie_host_init
-dw_pcie_msi_init
-dw_pcie_own_conf_map_bus
-dw_pcie_read
-dw_pcie_setup_rc
-dw_pcie_write
-dwc3_send_gadget_ep_cmd
-dwc3_stop_active_transfer
-edac_device_add_device
-edac_device_alloc_ctl_info
-edac_device_alloc_index
-edac_device_del_device
-edac_device_free_ctl_info
-edac_device_handle_ce_count
-edac_device_handle_ue_count
-efi
-efi_tpm_final_log_size
-elevator_alloc
-elv_bio_merge_ok
-elv_rb_add
-elv_rb_del
-elv_rb_find
-elv_rb_former_request
-elv_rb_latter_request
-elv_register
-elv_rqhash_add
-elv_rqhash_del
-elv_unregister
-emergency_restart
-enable_irq
-enable_percpu_irq
-eth_commit_mac_addr_change
-eth_mac_addr
-eth_platform_get_mac_address
-eth_prepare_mac_addr_change
-eth_type_trans
-eth_validate_addr
-ether_setup
-ethtool_op_get_link
-ethtool_op_get_ts_info
-ethtool_virtdev_set_link_ksettings
-event_triggers_call
-eventfd_ctx_fdget
-eventfd_ctx_fileget
-eventfd_ctx_put
-eventfd_ctx_remove_wait_queue
-eventfd_signal
-extcon_find_edev_by_node
-extcon_get_edev_by_phandle
-extcon_get_edev_name
-extcon_get_extcon_dev
-extcon_get_property
-extcon_get_state
-extcon_register_notifier
-extcon_set_property
-extcon_set_property_capability
-extcon_set_state_sync
-extcon_unregister_notifier
-fasync_helper
-fd_install
-fget
-file_path
-file_ra_state_init
-filp_close
-filp_open_block
-find_get_pid
-find_last_bit
-find_next_bit
-find_next_zero_bit
-find_snd_usb_substream
-find_task_by_vpid
-find_vma
-find_vpid
-finish_wait
-firmware_request_nowarn
-fixed_size_llseek
-flow_keys_basic_dissector
-flush_dcache_page
-flush_delayed_work
-flush_signals
-flush_work
-flush_workqueue
-fput
-frame_vector_create
-frame_vector_destroy
-frame_vector_to_pages
-free_buffer_head
-free_io_pgtable_ops
-free_irq
-free_netdev
-free_pages
-free_pages_exact
-free_percpu
-free_percpu_irq
-freezing_slow_path
-freq_qos_add_request
-freq_qos_remove_request
-freq_qos_update_request
-freq_scale
-fs_bio_set
-fsync_bdev
-ftrace_dump
-full_name_hash
-fwnode_find_reference
-fwnode_get_name
-fwnode_get_named_child_node
-fwnode_get_next_child_node
-fwnode_gpiod_get_index
-fwnode_handle_get
-fwnode_handle_put
-fwnode_property_present
-fwnode_property_read_string
-fwnode_property_read_u32_array
-fwnode_usb_role_switch_get
-gcd
-gen_pool_add_owner
-gen_pool_alloc_algo_owner
-gen_pool_avail
-gen_pool_best_fit
-gen_pool_create
-gen_pool_destroy
-gen_pool_dma_alloc_align
-gen_pool_dma_zalloc_align
-gen_pool_first_fit_align
-gen_pool_first_fit_order_align
-gen_pool_free_owner
-gen_pool_has_addr
-gen_pool_set_algo
-gen_pool_size
-gen_pool_virt_to_phys
-generic_delete_inode
-generic_device_group
-generic_file_llseek
-generic_file_read_iter
-generic_handle_irq
-generic_iommu_put_resv_regions
-generic_mii_ioctl
-generic_perform_write
-generic_write_checks
-genl_notify
-genl_register_family
-genl_unregister_family
-genlmsg_put
-genphy_read_status
-genphy_resume
-genphy_soft_reset
-genphy_suspend
-get_cpu_device
-get_cpu_idle_time
-get_cpu_idle_time_us
-get_cpu_iowait_time_us
-get_device
-get_device_system_crosststamp
-get_governor_parent_kobj
-get_next_ino
-get_option
-get_options
-get_pid_task
-get_random_bytes
-get_random_bytes_arch
-get_random_u32
-get_random_u64
-get_sg_io_hdr
-get_state_synchronize_rcu
-get_task_exe_file
-get_task_mm
-get_task_pid
-get_thermal_instance
-get_tree_single
-get_unmapped_area
-get_unused_fd_flags
-get_user_pages
-get_user_pages_fast
-get_user_pages_remote
-get_vaddr_frames
-get_zeroed_page
-getboottime64
-gfp_zone
-gic_nonsecure_priorities
-glob_match
-gnss_allocate_device
-gnss_deregister_device
-gnss_insert_raw
-gnss_put_device
-gnss_register_device
-gov_attr_set_get
-gov_attr_set_init
-gov_attr_set_put
-governor_sysfs_ops
-gpio_free
-gpio_free_array
-gpio_request
-gpio_request_one
-gpio_to_desc
-gpiochip_add_data_with_key
-gpiochip_add_pin_range
-gpiochip_find
-gpiochip_generic_config
-gpiochip_generic_free
-gpiochip_generic_request
-gpiochip_get_data
-gpiochip_line_is_valid
-gpiochip_lock_as_irq
-gpiochip_populate_parent_fwspec_fourcell
-gpiochip_remove
-gpiochip_unlock_as_irq
-gpiod_cansleep
-gpiod_count
-gpiod_direction_input
-gpiod_direction_output
-gpiod_direction_output_raw
-gpiod_get_optional
-gpiod_get_raw_value
-gpiod_get_raw_value_cansleep
-gpiod_get_value
-gpiod_get_value_cansleep
-gpiod_set_consumer_name
-gpiod_set_debounce
-gpiod_set_raw_value
-gpiod_set_raw_value_cansleep
-gpiod_set_value
-gpiod_set_value_cansleep
-gpiod_to_chip
-gpiod_to_irq
-gro_cells_destroy
-gro_cells_init
-gro_cells_receive
-gserial_alloc_line
-gserial_connect
-gserial_disconnect
-guid_gen
-handle_bad_irq
-handle_edge_irq
-handle_fasteoi_ack_irq
-handle_fasteoi_irq
-handle_level_irq
-handle_nested_irq
-handle_simple_irq
-handle_sysrq
-hash_digest_size
-hashlen_string
-have_governor_per_policy
-hci_alloc_dev
-hci_free_dev
-hci_recv_frame
-hci_register_dev
-hci_unregister_dev
-hdmi_audio_infoframe_init
-hdmi_audio_infoframe_pack
-hdmi_avi_infoframe_init
-hdmi_avi_infoframe_pack
-hdmi_infoframe_pack
-hex2bin
-hex_dump_to_buffer
-hex_to_bin
-hid_hw_close
-hid_hw_open
-hid_hw_start
-hid_hw_stop
-hid_open_report
-hid_report_raw_event
-hid_unregister_driver
-hmm_range_fault
-hrtimer_active
-hrtimer_cancel
-hrtimer_forward
-hrtimer_init
-hrtimer_init_sleeper
-hrtimer_sleeper_start_expires
-hrtimer_start_range_ns
-hrtimer_try_to_cancel
-hvc_alloc
-hvc_instantiate
-hvc_kick
-hvc_poll
-hvc_remove
-hwrng_register
-hwrng_unregister
-hwspin_lock_free
-hwspin_lock_request_specific
-hypervisor_kobj
-i2c_adapter_type
-i2c_add_adapter
-i2c_add_numbered_adapter
-i2c_bit_add_bus
-i2c_bit_add_numbered_bus
-i2c_bus_type
-i2c_client_type
-i2c_del_adapter
-i2c_del_driver
-i2c_for_each_dev
-i2c_generic_scl_recovery
-i2c_get_adapter
-i2c_get_device_id
-i2c_get_dma_safe_msg_buf
-i2c_match_id
-i2c_new_ancillary_device
-i2c_new_client_device
-i2c_new_dummy_device
-i2c_new_scanned_device
-i2c_parse_fw_timings
-i2c_put_adapter
-i2c_put_dma_safe_msg_buf
-i2c_recover_bus
-i2c_register_driver
-i2c_smbus_read_byte
-i2c_smbus_read_byte_data
-i2c_smbus_read_i2c_block_data
-i2c_smbus_read_word_data
-i2c_smbus_write_byte
-i2c_smbus_write_byte_data
-i2c_smbus_write_i2c_block_data
-i2c_smbus_write_word_data
-i2c_smbus_xfer
-i2c_transfer
-i2c_transfer_buffer_flags
-i2c_unregister_device
-i2c_verify_adapter
-i2c_verify_client
-icc_disable
-icc_enable
-icc_get
-icc_link_create
-icc_node_add
-icc_node_create
-icc_node_del
-icc_node_destroy
-icc_nodes_remove
-icc_provider_add
-icc_provider_del
-icc_put
-icc_set_bw
-icc_set_tag
-icc_std_aggregate
-icc_sync_state
-ida_alloc_range
-ida_destroy
-ida_free
-idr_alloc
-idr_alloc_cyclic
-idr_alloc_u32
-idr_destroy
-idr_find
-idr_for_each
-idr_get_next
-idr_preload
-idr_remove
-idr_replace
-ieee802154_alloc_hw
-ieee802154_free_hw
-ieee802154_register_hw
-ieee802154_rx_irqsafe
-ieee802154_unregister_hw
-ieee802154_wake_queue
-ieee802154_xmit_complete
-iio_buffer_init
-iio_buffer_put
-iio_channel_get
-iio_channel_get_all
-iio_channel_release
-iio_device_alloc
-iio_device_attach_buffer
-iio_device_free
-iio_device_unregister
-iio_push_to_buffers
-iio_read_channel_processed
-iio_read_channel_raw
-import_iovec
-in4_pton
-in6_dev_finish_destroy
-in6_pton
-in_aton
-in_egroup_p
-inc_zone_page_state
-inet_proto_csum_replace4
-init_dummy_netdev
-init_iova_domain
-init_net
-init_on_free
-init_pid_ns
-init_pseudo
-init_srcu_struct
-init_task
-init_timer_key
-init_uts_ns
-init_wait_entry
-input_alloc_absinfo
-input_allocate_device
-input_close_device
-input_event
-input_ff_create
-input_ff_create_memless
-input_ff_destroy
-input_free_device
-input_mt_assign_slots
-input_mt_destroy_slots
-input_mt_drop_unused
-input_mt_init_slots
-input_mt_report_finger_count
-input_mt_report_pointer_emulation
-input_mt_report_slot_state
-input_mt_sync_frame
-input_open_device
-input_register_device
-input_register_handle
-input_register_handler
-input_set_abs_params
-input_set_capability
-input_set_timestamp
-input_unregister_device
-input_unregister_handle
-input_unregister_handler
-int_pow
-int_sqrt
-interval_tree_insert
-interval_tree_iter_first
-interval_tree_iter_next
-interval_tree_remove
-invalidate_bdev
-invalidate_mapping_pages
-io_schedule_timeout
-iomem_resource
-iommu_alloc_resv_region
-iommu_attach_device
-iommu_attach_group
-iommu_aux_attach_device
-iommu_aux_detach_device
-iommu_aux_get_pasid
-iommu_detach_device
-iommu_detach_group
-iommu_dev_enable_feature
-iommu_dev_feature_enabled
-iommu_device_register
-iommu_device_sysfs_add
-iommu_device_sysfs_remove
-iommu_device_unlink
-iommu_device_unregister
-iommu_dma_enable_best_fit_algo
-iommu_dma_get_resv_regions
-iommu_dma_reserve_iova
-iommu_domain_alloc
-iommu_domain_free
-iommu_domain_get_attr
-iommu_domain_set_attr
-iommu_fwspec_add_ids
-iommu_fwspec_free
-iommu_get_dma_cookie
-iommu_get_domain_for_dev
-iommu_get_msi_cookie
-iommu_group_alloc
-iommu_group_for_each_dev
-iommu_group_get
-iommu_group_get_iommudata
-iommu_group_put
-iommu_group_ref_get
-iommu_group_set_iommudata
-iommu_group_set_name
-iommu_iova_to_phys
-iommu_map
-iommu_map_sg
-iommu_present
-iommu_put_dma_cookie
-iommu_register_device_fault_handler
-iommu_report_device_fault
-iommu_set_fault_handler
-iommu_unmap
-iommu_unregister_device_fault_handler
-iounmap
-iov_iter_bvec
-iov_iter_kvec
-ip_compute_csum
-ip_send_check
-ipi_desc_get
-iput
-ipv6_ext_hdr
-ipv6_find_hdr
-ipv6_skip_exthdr
-irq_chip_ack_parent
-irq_chip_disable_parent
-irq_chip_enable_parent
-irq_chip_eoi_parent
-irq_chip_get_parent_state
-irq_chip_mask_parent
-irq_chip_retrigger_hierarchy
-irq_chip_set_affinity_parent
-irq_chip_set_parent_state
-irq_chip_set_type_parent
-irq_chip_set_vcpu_affinity_parent
-irq_chip_set_wake_parent
-irq_chip_unmask_parent
-irq_create_fwspec_mapping
-irq_create_mapping_affinity
-irq_create_of_mapping
-irq_dispose_mapping
-irq_domain_alloc_irqs_parent
-irq_domain_create_hierarchy
-irq_domain_free_irqs_common
-irq_domain_free_irqs_parent
-irq_domain_get_irq_data
-irq_domain_remove
-irq_domain_set_hwirq_and_chip
-irq_domain_set_info
-irq_domain_simple_ops
-irq_domain_update_bus_token
-irq_domain_xlate_onecell
-irq_domain_xlate_onetwocell
-irq_domain_xlate_twocell
-irq_find_mapping
-irq_find_matching_fwspec
-irq_get_irq_data
-irq_get_irqchip_state
-irq_modify_status
-irq_of_parse_and_map
-irq_set_affinity_hint
-irq_set_affinity_notifier
-irq_set_chained_handler_and_data
-irq_set_chip
-irq_set_chip_and_handler_name
-irq_set_chip_data
-irq_set_handler_data
-irq_set_irq_type
-irq_set_irq_wake
-irq_set_irqchip_state
-irq_set_parent
-irq_to_desc
-irq_work_queue
-irq_work_queue_on
-irq_work_sync
-is_dma_buf_file
-is_vmalloc_addr
-jiffies
-jiffies64_to_msecs
-jiffies_64_to_clock_t
-jiffies_to_msecs
-jiffies_to_usecs
-kasan_flag_enabled
-kasprintf
-kern_mount
-kern_unmount
-kernel_bind
-kernel_connect
-kernel_cpustat
-kernel_getsockname
-kernel_kobj
-kernel_power_off
-kernel_recvmsg
-kernel_restart
-kernel_sendmsg
-kernel_sigaction
-kernfs_find_and_get_ns
-kernfs_notify
-kernfs_path_from_node
-kernfs_put
-kfree
-kfree_const
-kfree_sensitive
-kfree_skb
-kick_all_cpus_sync
-kill_anon_super
-kill_fasync
-kill_litter_super
-kimage_vaddr
-kimage_voffset
-kiocb_set_cancel_fn
-kmalloc_caches
-kmalloc_order
-kmalloc_order_trace
-kmem_cache_alloc
-kmem_cache_alloc_trace
-kmem_cache_create
-kmem_cache_create_usercopy
-kmem_cache_destroy
-kmem_cache_free
-kmemdup
-kmemdup_nul
-kmsg_dump_get_line
-kmsg_dump_rewind
-kobj_sysfs_ops
-kobject_add
-kobject_create_and_add
-kobject_del
-kobject_get
-kobject_init
-kobject_init_and_add
-kobject_put
-kobject_set_name
-kobject_uevent
-kobject_uevent_env
-krealloc
-kset_create_and_add
-kset_unregister
-ksize
-ksoftirqd
-kstat
-kstat_irqs_cpu
-kstat_irqs_usr
-kstrdup
-kstrdup_const
-kstrdup_quotable_cmdline
-kstrndup
-kstrtobool
-kstrtobool_from_user
-kstrtoint
-kstrtoint_from_user
-kstrtol_from_user
-kstrtoll
-kstrtos8
-kstrtos8_from_user
-kstrtou16
-kstrtou16_from_user
-kstrtou8
-kstrtou8_from_user
-kstrtouint
-kstrtouint_from_user
-kstrtoul_from_user
-kstrtoull
-kstrtoull_from_user
-ksys_sync_helper
-kthread_bind
-kthread_bind_mask
-kthread_cancel_delayed_work_sync
-kthread_cancel_work_sync
-kthread_create_on_node
-kthread_create_worker
-kthread_delayed_work_timer_fn
-kthread_destroy_worker
-kthread_flush_work
-kthread_flush_worker
-kthread_mod_delayed_work
-kthread_park
-kthread_parkme
-kthread_queue_delayed_work
-kthread_queue_work
-kthread_should_park
-kthread_should_stop
-kthread_stop
-kthread_unpark
-kthread_unuse_mm
-kthread_use_mm
-kthread_worker_fn
-ktime_add_safe
-ktime_get
-ktime_get_coarse_with_offset
-ktime_get_mono_fast_ns
-ktime_get_raw
-ktime_get_raw_ts64
-ktime_get_real_seconds
-ktime_get_real_ts64
-ktime_get_seconds
-ktime_get_ts64
-ktime_get_with_offset
-kvasprintf
-kvfree
-kvfree_call_rcu
-kvmalloc_node
-led_classdev_flash_register_ext
-led_classdev_flash_unregister
-led_classdev_register_ext
-led_classdev_unregister
-led_trigger_event
-led_trigger_register_simple
-led_trigger_unregister_simple
-list_sort
-llist_add_batch
-llist_reverse_order
-lock_sock_nested
-log_abnormal_wakeup_reason
-log_buf_addr_get
-log_buf_len_get
-log_threaded_irq_wakeup_reason
-loops_per_jiffy
-lzo1x_1_compress
-lzo1x_decompress_safe
-lzorle1x_1_compress
-mac_pton
-match_string
-mbox_chan_received_data
-mbox_chan_txdone
-mbox_client_txdone
-mbox_controller_register
-mbox_controller_unregister
-mbox_free_channel
-mbox_request_channel
-mbox_send_message
-mdiobus_alloc_size
-mdiobus_free
-mdiobus_read
-mdiobus_unregister
-mdiobus_write
-media_device_cleanup
-media_device_init
-media_device_unregister
-media_entity_pads_init
-memblock_end_of_DRAM
-memblock_free
-memchr
-memchr_inv
-memcmp
-memcpy
-memdup_user
-memdup_user_nul
-memmove
-memory_block_size_bytes
-memory_read_from_buffer
-memparse
-mempool_alloc
-mempool_alloc_slab
-mempool_create
-mempool_create_node
-mempool_destroy
-mempool_exit
-mempool_free
-mempool_free_slab
-mempool_init
-mempool_kfree
-mempool_kmalloc
-memremap
-memset
-memset64
-memstart_addr
-memunmap
-mfd_add_devices
-mfd_remove_devices
-migrate_swap
-mii_check_media
-mii_ethtool_get_link_ksettings
-mii_ethtool_gset
-mii_ethtool_set_link_ksettings
-mii_link_ok
-mii_nway_restart
-mipi_dsi_attach
-mipi_dsi_compression_mode
-mipi_dsi_create_packet
-mipi_dsi_dcs_read
-mipi_dsi_dcs_set_column_address
-mipi_dsi_dcs_set_display_brightness
-mipi_dsi_dcs_set_page_address
-mipi_dsi_dcs_set_tear_off
-mipi_dsi_dcs_write_buffer
-mipi_dsi_detach
-mipi_dsi_device_register_full
-mipi_dsi_device_unregister
-mipi_dsi_driver_register_full
-mipi_dsi_driver_unregister
-mipi_dsi_host_register
-mipi_dsi_host_unregister
-mipi_dsi_packet_format_is_long
-mipi_dsi_picture_parameter_set
-misc_deregister
-misc_register
-mktime64
-mm_trace_rss_stat
-mmc_add_host
-mmc_alloc_host
-mmc_app_cmd
-mmc_calc_max_discard
-mmc_can_erase
-mmc_can_gpio_cd
-mmc_can_secure_erase_trim
-mmc_can_trim
-mmc_cmdq_disable
-mmc_cmdq_enable
-mmc_cqe_post_req
-mmc_cqe_recovery
-mmc_cqe_request_done
-mmc_cqe_start_req
-mmc_detect_card_removed
-mmc_detect_change
-mmc_erase
-mmc_erase_group_aligned
-mmc_flush_cache
-mmc_free_host
-mmc_get_card
-mmc_get_ext_csd
-mmc_gpio_get_cd
-mmc_gpio_get_ro
-mmc_gpiod_request_cd
-mmc_gpiod_request_cd_irq
-mmc_gpiod_request_ro
-mmc_hw_reset
-mmc_of_parse
-mmc_of_parse_voltage
-mmc_put_card
-mmc_register_driver
-mmc_regulator_get_supply
-mmc_regulator_set_ocr
-mmc_regulator_set_vqmmc
-mmc_release_host
-mmc_remove_host
-mmc_request_done
-mmc_retune_pause
-mmc_retune_release
-mmc_retune_unpause
-mmc_run_bkops
-mmc_sanitize
-mmc_send_status
-mmc_send_tuning
-mmc_set_data_timeout
-mmc_start_request
-mmc_switch
-mmc_unregister_driver
-mmc_wait_for_cmd
-mmc_wait_for_req
-mmput
-mmu_interval_notifier_insert
-mmu_interval_notifier_remove
-mmu_interval_read_begin
-mmu_notifier_synchronize
-mod_delayed_work_on
-mod_node_page_state
-mod_timer
-module_layout
-module_put
-msleep
-msleep_interruptible
-mutex_is_locked
-mutex_lock
-mutex_lock_interruptible
-mutex_trylock
-mutex_trylock_recursive
-mutex_unlock
-name_to_dev_t
-names_cachep
-napi_complete_done
-napi_consume_skb
-napi_disable
-napi_gro_flush
-napi_gro_receive
-napi_schedule_prep
-net_namespace_list
-net_ratelimit
-netdev_change_features
-netdev_err
-netdev_increment_features
-netdev_info
-netdev_lower_state_changed
-netdev_master_upper_dev_link
-netdev_notify_peers
-netdev_pick_tx
-netdev_rx_handler_register
-netdev_rx_handler_unregister
-netdev_state_change
-netdev_update_features
-netdev_upper_dev_link
-netdev_upper_dev_unlink
-netdev_warn
-netif_carrier_off
-netif_carrier_on
-netif_device_attach
-netif_device_detach
-netif_napi_add
-netif_receive_skb
-netif_receive_skb_list
-netif_rx
-netif_rx_ni
-netif_schedule_queue
-netif_set_real_num_rx_queues
-netif_set_real_num_tx_queues
-netif_stacked_transfer_operstate
-netif_tx_stop_all_queues
-netif_tx_wake_queue
-netlink_ack
-netlink_broadcast
-netlink_capable
-netlink_has_listeners
-netlink_kernel_release
-netlink_register_notifier
-netlink_unicast
-netlink_unregister_notifier
-new_inode
-nf_conntrack_destroy
-nla_append
-nla_find
-nla_memcpy
-nla_put
-nla_put_64bit
-nla_put_nohdr
-nla_reserve
-nla_reserve_64bit
-nla_strlcpy
-no_llseek
-no_seek_end_llseek
-nonseekable_open
-noop_llseek
-nr_cpu_ids
-nr_ipi_get
-nr_irqs
-ns_capable
-ns_to_timespec64
-nsec_to_clock_t
-nsecs_to_jiffies
-nvdimm_bus_register
-nvdimm_bus_unregister
-nvdimm_pmem_region_create
-nvmem_cell_get
-nvmem_cell_put
-nvmem_cell_read
-nvmem_cell_read_u32
-nvmem_cell_write
-nvmem_device_put
-nvmem_device_read
-nvmem_device_write
-of_address_to_resource
-of_alias_get_highest_id
-of_alias_get_id
-of_clk_add_hw_provider
-of_clk_add_provider
-of_clk_del_provider
-of_clk_get
-of_clk_get_by_name
-of_clk_get_from_provider
-of_clk_get_parent_count
-of_clk_get_parent_name
-of_clk_hw_onecell_get
-of_clk_hw_simple_get
-of_clk_set_defaults
-of_clk_src_onecell_get
-of_clk_src_simple_get
-of_count_phandle_with_args
-of_cpu_node_to_id
-of_cpufreq_cooling_register
-of_devfreq_cooling_register
-of_devfreq_cooling_register_power
-of_device_get_match_data
-of_device_is_available
-of_device_is_compatible
-of_device_modalias
-of_device_request_module
-of_device_uevent_modalias
-of_dma_configure_id
-of_dma_controller_free
-of_dma_controller_register
-of_dma_is_coherent
-of_drm_find_bridge
-of_drm_find_panel
-of_find_all_nodes
-of_find_compatible_node
-of_find_device_by_node
-of_find_i2c_adapter_by_node
-of_find_i2c_device_by_node
-of_find_matching_node_and_match
-of_find_mipi_dsi_host_by_node
-of_find_node_by_name
-of_find_node_by_phandle
-of_find_node_by_type
-of_find_node_opts_by_path
-of_find_node_with_property
-of_find_property
-of_fwnode_ops
-of_genpd_add_provider_onecell
-of_genpd_add_provider_simple
-of_genpd_del_provider
-of_get_address
-of_get_child_by_name
-of_get_compatible_child
-of_get_cpu_node
-of_get_dma_window
-of_get_named_gpio_flags
-of_get_next_available_child
-of_get_next_child
-of_get_next_parent
-of_get_parent
-of_get_property
-of_get_regulator_init_data
-of_graph_get_endpoint_by_regs
-of_graph_get_next_endpoint
-of_graph_get_port_parent
-of_graph_get_remote_endpoint
-of_graph_get_remote_node
-of_graph_get_remote_port
-of_graph_get_remote_port_parent
-of_graph_is_present
-of_graph_parse_endpoint
-of_hwspin_lock_get_id
-of_i2c_get_board_info
-of_icc_get
-of_icc_xlate_onecell
-of_iomap
-of_irq_find_parent
-of_irq_get
-of_irq_get_byname
-of_irq_parse_one
-of_machine_is_compatible
-of_match_device
-of_match_node
-of_modalias_node
-of_n_addr_cells
-of_n_size_cells
-of_node_name_eq
-of_nvmem_device_get
-of_parse_phandle
-of_parse_phandle_with_args
-of_parse_phandle_with_fixed_args
-of_phandle_iterator_init
-of_phandle_iterator_next
-of_phy_simple_xlate
-of_platform_depopulate
-of_platform_device_create
-of_platform_device_destroy
-of_platform_populate
-of_prop_next_string
-of_prop_next_u32
-of_property_count_elems_of_size
-of_property_match_string
-of_property_read_string
-of_property_read_string_helper
-of_property_read_u32_index
-of_property_read_u64
-of_property_read_u64_index
-of_property_read_variable_u16_array
-of_property_read_variable_u32_array
-of_property_read_variable_u64_array
-of_property_read_variable_u8_array
-of_pwm_xlate_with_flags
-of_reserved_mem_device_init_by_idx
-of_reserved_mem_device_release
-of_reserved_mem_lookup
-of_reset_control_array_get
-of_root
-of_thermal_get_ntrips
-of_thermal_get_trip_points
-of_thermal_is_trip_valid
-of_translate_address
-of_usb_get_phy_mode
-of_usb_host_tpl_support
-on_each_cpu
-oops_in_progress
-orderly_poweroff
-overflowuid
-page_endio
-page_mapping
-page_reporting_register
-page_reporting_unregister
-panic
-panic_notifier_list
-panic_timeout
-param_array_ops
-param_get_int
-param_get_string
-param_get_uint
-param_get_ullong
-param_ops_bint
-param_ops_bool
-param_ops_byte
-param_ops_charp
-param_ops_hexint
-param_ops_int
-param_ops_long
-param_ops_short
-param_ops_string
-param_ops_uint
-param_ops_ullong
-param_ops_ulong
-param_ops_ushort
-param_set_bool
-param_set_copystring
-param_set_int
-param_set_uint
-part_end_io_acct
-part_start_io_acct
-passthru_features_check
-pause_cpus
-pci_alloc_irq_vectors_affinity
-pci_assign_resource
-pci_assign_unassigned_bus_resources
-pci_bus_resource_n
-pci_bus_type
-pci_clear_master
-pci_d3cold_disable
-pci_dev_present
-pci_dev_put
-pci_device_group
-pci_device_is_present
-pci_disable_device
-pci_disable_msi
-pci_enable_atomic_ops_to_root
-pci_enable_device
-pci_enable_device_mem
-pci_enable_msi
-pci_enable_wake
-pci_find_bus
-pci_find_capability
-pci_find_ext_capability
-pci_find_next_capability
-pci_free_irq
-pci_free_irq_vectors
-pci_generic_config_read
-pci_generic_config_write
-pci_get_device
-pci_get_domain_bus_and_slot
-pci_get_slot
-pci_host_probe
-pci_intx
-pci_iomap
-pci_iomap_range
-pci_ioremap_bar
-pci_irq_get_affinity
-pci_irq_vector
-pci_load_and_free_saved_state
-pci_load_saved_state
-pci_map_rom
-pci_match_id
-pci_msi_create_irq_domain
-pci_msi_mask_irq
-pci_msi_unmask_irq
-pci_msix_vec_count
-pci_read_config_byte
-pci_read_config_dword
-pci_read_config_word
-pci_release_region
-pci_release_regions
-pci_release_resource
-pci_release_selected_regions
-pci_request_irq
-pci_request_region
-pci_request_regions
-pci_request_selected_regions
-pci_rescan_bus
-pci_resize_resource
-pci_restore_msi_state
-pci_restore_state
-pci_save_state
-pci_select_bars
-pci_set_master
-pci_set_mwi
-pci_set_power_state
-pci_store_saved_state
-pci_unmap_rom
-pci_unregister_driver
-pci_wake_from_d3
-pci_walk_bus
-pci_write_config_byte
-pci_write_config_dword
-pci_write_config_word
-pcibios_resource_to_bus
-pcie_aspm_enabled
-pcie_bandwidth_available
-pcie_capability_read_word
-pcie_capability_write_word
-pcie_get_mps
-pcie_get_speed_cap
-pcim_enable_device
-per_cpu_ptr_to_phys
-percpu_down_write
-percpu_ref_exit
-percpu_ref_init
-percpu_ref_is_zero
-percpu_ref_kill_and_confirm
-percpu_ref_switch_to_atomic_sync
-percpu_ref_switch_to_percpu
-percpu_up_write
-perf_aux_output_begin
-perf_aux_output_end
-perf_aux_output_flag
-perf_event_addr_filters_sync
-perf_event_create_kernel_counter
-perf_event_disable
-perf_event_enable
-perf_event_pause
-perf_event_read_local
-perf_event_read_value
-perf_event_release_kernel
-perf_event_update_userpage
-perf_get_aux
-perf_pmu_migrate_context
-perf_pmu_register
-perf_pmu_unregister
-perf_trace_buf_alloc
-perf_trace_run_bpf_submit
-pfn_valid
-phy_attached_info
-phy_calibrate
-phy_configure
-phy_connect
-phy_connect_direct
-phy_disconnect
-phy_do_ioctl_running
-phy_drivers_register
-phy_drivers_unregister
-phy_ethtool_get_link_ksettings
-phy_ethtool_nway_reset
-phy_ethtool_set_link_ksettings
-phy_exit
-phy_find_first
-phy_get_pause
-phy_init
-phy_init_hw
-phy_mii_ioctl
-phy_pm_runtime_get_sync
-phy_pm_runtime_put_sync
-phy_power_off
-phy_power_on
-phy_print_status
-phy_set_mode_ext
-phy_start
-phy_stop
-pick_highest_pushable_task
-pid_nr_ns
-pid_task
-pin_get_name
-pin_user_pages
-pin_user_pages_fast
-pin_user_pages_remote
-pinconf_generic_dt_free_map
-pinconf_generic_dt_node_to_map
-pinctrl_add_gpio_range
-pinctrl_dev_get_drvdata
-pinctrl_enable
-pinctrl_force_default
-pinctrl_force_sleep
-pinctrl_get
-pinctrl_lookup_state
-pinctrl_pm_select_default_state
-pinctrl_pm_select_idle_state
-pinctrl_pm_select_sleep_state
-pinctrl_put
-pinctrl_remove_gpio_range
-pinctrl_select_default_state
-pinctrl_select_state
-pinctrl_utils_free_map
-pipe_lock
-pipe_unlock
-pktgen_xfrm_outer_mode_output
-platform_add_devices
-platform_bus_type
-platform_device_add
-platform_device_add_data
-platform_device_add_properties
-platform_device_add_resources
-platform_device_alloc
-platform_device_del
-platform_device_put
-platform_device_register
-platform_device_register_full
-platform_device_unregister
-platform_driver_unregister
-platform_find_device_by_driver
-platform_get_irq
-platform_get_irq_byname
-platform_get_irq_byname_optional
-platform_get_irq_optional
-platform_get_resource
-platform_get_resource_byname
-platform_irq_count
-pm_clk_add
-pm_clk_create
-pm_clk_destroy
-pm_clk_resume
-pm_clk_suspend
-pm_generic_resume
-pm_generic_runtime_resume
-pm_generic_runtime_suspend
-pm_generic_suspend
-pm_genpd_add_subdomain
-pm_genpd_init
-pm_genpd_remove
-pm_genpd_remove_subdomain
-pm_power_off
-pm_relax
-pm_runtime_allow
-pm_runtime_autosuspend_expiration
-pm_runtime_barrier
-pm_runtime_enable
-pm_runtime_forbid
-pm_runtime_force_resume
-pm_runtime_force_suspend
-pm_runtime_get_if_active
-pm_runtime_irq_safe
-pm_runtime_no_callbacks
-pm_runtime_set_autosuspend_delay
-pm_stay_awake
-pm_suspend_global_flags
-pm_system_wakeup
-pm_wakeup_dev_event
-pm_wakeup_ws_event
-policy_has_boost_freq
-power_supply_changed
-power_supply_get_by_name
-power_supply_get_by_phandle_array
-power_supply_get_drvdata
-power_supply_get_property
-power_supply_is_system_supplied
-power_supply_put
-power_supply_reg_notifier
-power_supply_register
-power_supply_set_property
-power_supply_unreg_notifier
-power_supply_unregister
-prandom_bytes
-prandom_u32
-preempt_schedule
-preempt_schedule_notrace
-prepare_to_wait
-prepare_to_wait_event
-print_hex_dump
-printk
-printk_deferred
-printk_timed_ratelimit
-proc_create
-proc_create_data
-proc_create_single_data
-proc_dointvec
-proc_dointvec_minmax
-proc_dostring
-proc_douintvec_minmax
-proc_mkdir
-proc_mkdir_data
-proc_remove
-proc_set_size
-proc_set_user
-proc_symlink
-proto_register
-proto_unregister
-ps2_begin_command
-ps2_cmd_aborted
-ps2_command
-ps2_drain
-ps2_end_command
-ps2_handle_ack
-ps2_handle_response
-ps2_init
-ps2_sendbyte
-ps2_sliced_command
-pskb_expand_head
-pstore_register
-pstore_unregister
-public_key_verify_signature
-put_device
-put_disk
-put_iova_domain
-put_pid
-put_sg_io_hdr
-put_tty_driver
-put_unused_fd
-put_vaddr_frames
-pwm_apply_state
-pwm_get_chip_data
-pwm_set_chip_data
-pwmchip_add
-pwmchip_remove
-qcom_smem_state_get
-qcom_smem_state_register
-qcom_smem_state_unregister
-qcom_smem_state_update_bits
-qdisc_reset
-queue_delayed_work_on
-queue_work_on
-radix_tree_delete
-radix_tree_insert
-radix_tree_iter_delete
-radix_tree_iter_resume
-radix_tree_lookup
-radix_tree_maybe_preload
-radix_tree_next_chunk
-radix_tree_tagged
-rational_best_approximation
-raw_notifier_call_chain
-raw_notifier_chain_register
-raw_notifier_chain_unregister
-rb_erase
-rb_first
-rb_first_postorder
-rb_insert_color
-rb_last
-rb_next
-rb_next_postorder
-rb_prev
-rb_replace_node
-rcu_barrier
-rcu_barrier_tasks
-rcu_barrier_tasks_trace
-rcu_bind_current_to_nocb
-rcu_cpu_stall_suppress
-rcu_cpu_stall_suppress_at_boot
-rcu_expedite_gp
-rcu_force_quiescent_state
-rcu_fwd_progress_check
-rcu_get_gp_kthreads_prio
-rcu_get_gp_seq
-rcu_gp_is_expedited
-rcu_gp_is_normal
-rcu_gp_set_torture_wait
-rcu_inkernel_boot_has_ended
-rcu_is_watching
-rcu_jiffies_till_stall_check
-rcu_read_unlock_trace_special
-rcu_unexpedite_gp
-rcutorture_get_gp_data
-rcuwait_wake_up
-rdev_get_drvdata
-rdev_get_id
-reboot_mode
-reciprocal_value
-refcount_dec_and_lock
-refcount_dec_and_mutex_lock
-refcount_dec_not_one
-refcount_warn_saturate
-refresh_frequency_limits
-regcache_cache_bypass
-regcache_cache_only
-regcache_drop_region
-regcache_mark_dirty
-regcache_sync
-regcache_sync_region
-register_blkdev
-register_chrdev_region
-register_console
-register_die_notifier
-register_filesystem
-register_ftrace_export
-register_inet6addr_notifier
-register_inetaddr_notifier
-register_kernel_break_hook
-register_kprobe
-register_kretprobe
-register_memory_notifier
-register_module_notifier
-register_net_sysctl
-register_netdev
-register_netdevice
-register_netdevice_notifier
-register_netevent_notifier
-register_oom_notifier
-register_pernet_device
-register_pernet_subsys
-register_pm_notifier
-register_reboot_notifier
-register_restart_handler
-register_shrinker
-register_syscore_ops
-register_sysctl
-register_sysctl_table
-register_virtio_device
-register_virtio_driver
-register_vmap_purge_notifier
-regmap_add_irq_chip
-regmap_async_complete
-regmap_bulk_read
-regmap_bulk_write
-regmap_check_range_table
-regmap_del_irq_chip
-regmap_exit
-regmap_field_read
-regmap_field_update_bits_base
-regmap_get_device
-regmap_irq_get_domain
-regmap_irq_get_virq
-regmap_mmio_detach_clk
-regmap_multi_reg_write
-regmap_multi_reg_write_bypassed
-regmap_raw_read
-regmap_raw_write
-regmap_raw_write_async
-regmap_read
-regmap_register_patch
-regmap_update_bits_base
-regmap_write
-regulator_allow_bypass
-regulator_bulk_disable
-regulator_bulk_enable
-regulator_bulk_get
-regulator_count_voltages
-regulator_disable
-regulator_disable_deferred
-regulator_disable_regmap
-regulator_enable
-regulator_enable_regmap
-regulator_force_disable
-regulator_get
-regulator_get_current_limit
-regulator_get_drvdata
-regulator_get_mode
-regulator_get_optional
-regulator_get_voltage
-regulator_get_voltage_rdev
-regulator_get_voltage_sel_regmap
-regulator_is_enabled
-regulator_is_enabled_regmap
-regulator_is_supported_voltage
-regulator_list_voltage_linear
-regulator_list_voltage_linear_range
-regulator_list_voltage_table
-regulator_map_voltage_ascend
-regulator_map_voltage_linear
-regulator_notifier_call_chain
-regulator_put
-regulator_register
-regulator_register_notifier
-regulator_set_current_limit
-regulator_set_load
-regulator_set_mode
-regulator_set_voltage
-regulator_set_voltage_sel_regmap
-regulator_unregister
-regulator_unregister_notifier
-release_firmware
-release_pages
-release_sock
-remap_pfn_range
-remap_vmalloc_range
-remove_cpu
-remove_memory_subsection
-remove_proc_entry
-remove_wait_queue
-report_iommu_fault
-request_any_context_irq
-request_firmware
-request_firmware_direct
-request_firmware_into_buf
-request_firmware_nowait
-request_threaded_irq
-resched_curr
-reservation_ww_class
-reset_control_assert
-reset_control_deassert
-reset_control_put
-reset_control_reset
-resume_cpus
-return_address
-revalidate_disk_size
-rfkill_alloc
-rfkill_destroy
-rfkill_find_type
-rfkill_init_sw_state
-rfkill_register
-rfkill_set_sw_state
-rfkill_unregister
-rhashtable_destroy
-rhashtable_init
-rhashtable_insert_slow
-rht_bucket_nested
-rht_bucket_nested_insert
-rndis_deregister
-rndis_free_response
-rndis_get_next_response
-rndis_msg_parser
-rndis_register
-rndis_set_host_mac
-rndis_set_param_dev
-rndis_set_param_medium
-rndis_set_param_vendor
-rndis_signal_connect
-rndis_uninit
-root_task_group
-round_jiffies_relative
-round_jiffies_up
-rpmsg_get_signals
-rpmsg_poll
-rpmsg_register_device
-rpmsg_send
-rpmsg_set_signals
-rpmsg_trysend
-rpmsg_unregister_device
-rproc_add
-rproc_add_subdev
-rproc_alloc
-rproc_boot
-rproc_coredump_add_custom_segment
-rproc_coredump_add_segment
-rproc_coredump_set_elf_info
-rproc_coredump_using_sections
-rproc_del
-rproc_elf_get_boot_addr
-rproc_free
-rproc_get_by_child
-rproc_get_by_phandle
-rproc_put
-rproc_remove_subdev
-rproc_report_crash
-rproc_shutdown
-rps_needed
-rt_mutex_lock
-rt_mutex_trylock
-rt_mutex_unlock
-rtc_class_close
-rtc_class_open
-rtc_read_time
-rtc_set_time
-rtc_time64_to_tm
-rtc_tm_to_time64
-rtc_update_irq
-rtc_valid_tm
-rtc_year_days
-rtnl_is_locked
-rtnl_link_register
-rtnl_link_unregister
-rtnl_lock
-rtnl_register_module
-rtnl_trylock
-rtnl_unicast
-rtnl_unlock
-rtnl_unregister
-runqueues
-sb800_prefetch
-sbitmap_queue_min_shallow_depth
-sched_clock
-sched_feat_keys
-sched_feat_names
-sched_set_fifo
-sched_set_fifo_low
-sched_set_normal
-sched_setattr
-sched_setattr_nocheck
-sched_setscheduler
-sched_setscheduler_nocheck
-sched_show_task
-sched_trace_cfs_rq_avg
-sched_trace_cfs_rq_cpu
-sched_trace_cfs_rq_path
-sched_trace_rd_span
-sched_trace_rq_avg_dl
-sched_trace_rq_avg_irq
-sched_trace_rq_avg_rt
-sched_trace_rq_cpu
-sched_uclamp_used
-schedule
-schedule_hrtimeout
-schedule_timeout
-schedule_timeout_interruptible
-schedule_timeout_uninterruptible
-scnprintf
-scsi_autopm_get_device
-scsi_autopm_put_device
-scsi_block_requests
-scsi_block_when_processing_errors
-scsi_command_size_tbl
-scsi_compat_ioctl
-scsi_device_get
-scsi_device_put
-scsi_device_quiesce
-scsi_eh_ready_devs
-scsi_ioctl
-scsi_ioctl_block_when_processing_errors
-scsi_normalize_sense
-scsi_print_sense_hdr
-scsi_register_interface
-scsi_remove_device
-scsi_unblock_requests
-sdev_prefix_printk
-sdhci_add_host
-sdhci_cleanup_host
-sdhci_cqe_disable
-sdhci_cqe_enable
-sdhci_cqe_irq
-sdhci_enable_clk
-sdhci_get_property
-sdhci_pltfm_free
-sdhci_pltfm_init
-sdhci_remove_host
-sdhci_reset
-sdhci_set_bus_width
-sdhci_set_power_noreg
-sdhci_setup_host
-sdio_claim_host
-sdio_disable_func
-sdio_enable_func
-sdio_f0_readb
-sdio_f0_writeb
-sdio_get_host_pm_caps
-sdio_memcpy_fromio
-sdio_memcpy_toio
-sdio_readsb
-sdio_register_driver
-sdio_release_host
-sdio_set_block_size
-sdio_set_host_pm_flags
-sdio_signal_irq
-sdio_unregister_driver
-sdio_writesb
-securityfs_create_dir
-securityfs_create_file
-securityfs_remove
-seq_buf_printf
-seq_file_path
-seq_hex_dump
-seq_list_next
-seq_list_start
-seq_lseek
-seq_open
-seq_printf
-seq_putc
-seq_puts
-seq_read
-seq_release
-seq_release_private
-seq_vprintf
-seq_write
-serdev_device_close
-serdev_device_open
-serdev_device_set_baudrate
-serdev_device_set_flow_control
-serdev_device_wait_until_sent
-serdev_device_write
-serdev_device_write_wakeup
-serio_close
-serio_interrupt
-serio_open
-serio_reconnect
-serio_rescan
-serio_unregister_child_port
-serio_unregister_driver
-serio_unregister_port
-set_blocksize
-set_capacity_revalidate_and_notify
-set_cpus_allowed_ptr
-set_disk_ro
-set_freezable
-set_normalized_timespec64
-set_page_dirty
-set_page_dirty_lock
-set_task_cpu
-set_user_nice
-sg_alloc_table
-sg_alloc_table_from_pages
-sg_free_table
-sg_init_one
-sg_init_table
-sg_miter_next
-sg_miter_start
-sg_miter_stop
-sg_nents_for_len
-sg_next
-sg_pcopy_from_buffer
-sg_pcopy_to_buffer
-sg_scsi_ioctl
-sg_zero_buffer
-sgl_alloc
-sgl_free
-shmem_truncate_range
-show_rcu_gp_kthreads
-show_regs
-si_mem_available
-si_meminfo
-si_swapinfo
-sigprocmask
-simple_attr_open
-simple_attr_read
-simple_attr_release
-simple_attr_write
-simple_dir_inode_operations
-simple_dir_operations
-simple_open
-simple_read_from_buffer
-simple_statfs
-simple_strtol
-simple_strtoll
-simple_strtoul
-simple_strtoull
-simple_write_to_buffer
-single_open
-single_open_size
-single_release
-sk_alloc
-sk_free
-skb_add_rx_frag
-skb_append_pagefrags
-skb_checksum
-skb_clone
-skb_coalesce_rx_frag
-skb_copy
-skb_copy_bits
-skb_copy_datagram_iter
-skb_copy_expand
-skb_copy_ubufs
-skb_dequeue
-skb_dequeue_tail
-skb_ensure_writable
-skb_free_datagram
-skb_page_frag_refill
-skb_partial_csum_set
-skb_pull
-skb_push
-skb_put
-skb_queue_head
-skb_queue_purge
-skb_queue_tail
-skb_realloc_headroom
-skb_recv_datagram
-skb_set_owner_w
-skb_store_bits
-skb_to_sgvec
-skb_trim
-skb_tstamp_tx
-skb_unlink
-skip_spaces
-smp_call_function
-smp_call_function_any
-smp_call_function_many
-smp_call_function_single
-smp_call_function_single_async
-smp_call_on_cpu
-smpboot_register_percpu_thread
-smpboot_unregister_percpu_thread
-snd_card_disconnect
-snd_card_free
-snd_card_new
-snd_card_register
-snd_card_rw_proc_new
-snd_component_add
-snd_compr_stop_error
-snd_ctl_add
-snd_ctl_add_vmaster_hook
-snd_ctl_apply_vmaster_followers
-snd_ctl_boolean_mono_info
-snd_ctl_boolean_stereo_info
-snd_ctl_enum_info
-snd_ctl_find_id
-snd_ctl_make_virtual_master
-snd_ctl_new1
-snd_ctl_notify
-snd_ctl_remove
-snd_ctl_remove_id
-snd_ctl_sync_vmaster
-snd_device_disconnect
-snd_device_free
-snd_device_new
-snd_dma_alloc_pages
-snd_dma_free_pages
-snd_dmaengine_pcm_prepare_slave_config
-snd_hwdep_new
-snd_info_create_card_entry
-snd_info_create_module_entry
-snd_info_free_entry
-snd_info_register
-snd_interval_refine
-snd_jack_new
-snd_jack_report
-snd_jack_set_key
-snd_pci_quirk_lookup
-snd_pcm_add_chmap_ctls
-snd_pcm_alt_chmaps
-snd_pcm_create_iec958_consumer_hw_params
-snd_pcm_format_physical_width
-snd_pcm_format_width
-snd_pcm_hw_constraint_eld
-snd_pcm_hw_constraint_integer
-snd_pcm_hw_constraint_list
-snd_pcm_hw_constraint_minmax
-snd_pcm_hw_constraint_msbits
-snd_pcm_hw_constraint_step
-snd_pcm_hw_limit_rates
-snd_pcm_hw_rule_add
-snd_pcm_lib_default_mmap
-snd_pcm_lib_free_pages
-snd_pcm_lib_ioctl
-snd_pcm_lib_malloc_pages
-snd_pcm_lib_preallocate_free_for_all
-snd_pcm_lib_preallocate_pages
-snd_pcm_new
-snd_pcm_period_elapsed
-snd_pcm_rate_range_to_bits
-snd_pcm_set_managed_buffer_all
-snd_pcm_set_ops
-snd_pcm_set_sync
-snd_pcm_std_chmaps
-snd_pcm_stream_lock
-snd_pcm_stream_unlock
-snd_pcm_stream_unlock_irqrestore
-snd_soc_add_card_controls
-snd_soc_add_component_controls
-snd_soc_add_dai_controls
-snd_soc_bytes_info_ext
-snd_soc_bytes_tlv_callback
-snd_soc_card_get_kcontrol
-snd_soc_card_jack_new
-snd_soc_component_async_complete
-snd_soc_component_disable_pin
-snd_soc_component_exit_regmap
-snd_soc_component_force_enable_pin
-snd_soc_component_init_regmap
-snd_soc_component_read
-snd_soc_component_set_jack
-snd_soc_component_set_pll
-snd_soc_component_set_sysclk
-snd_soc_component_update_bits
-snd_soc_component_update_bits_async
-snd_soc_component_write
-snd_soc_dai_get_channel_map
-snd_soc_dai_link_set_capabilities
-snd_soc_dai_set_bclk_ratio
-snd_soc_dai_set_channel_map
-snd_soc_dai_set_fmt
-snd_soc_dai_set_pll
-snd_soc_dai_set_sysclk
-snd_soc_dai_set_tdm_slot
-snd_soc_dapm_add_routes
-snd_soc_dapm_disable_pin
-snd_soc_dapm_disable_pin_unlocked
-snd_soc_dapm_enable_pin
-snd_soc_dapm_force_enable_pin
-snd_soc_dapm_force_enable_pin_unlocked
-snd_soc_dapm_get_enum_double
-snd_soc_dapm_get_pin_status
-snd_soc_dapm_get_pin_switch
-snd_soc_dapm_get_volsw
-snd_soc_dapm_ignore_suspend
-snd_soc_dapm_info_pin_switch
-snd_soc_dapm_kcontrol_dapm
-snd_soc_dapm_kcontrol_widget
-snd_soc_dapm_mixer_update_power
-snd_soc_dapm_mux_update_power
-snd_soc_dapm_new_control
-snd_soc_dapm_new_controls
-snd_soc_dapm_new_widgets
-snd_soc_dapm_put_enum_double
-snd_soc_dapm_put_pin_switch
-snd_soc_dapm_put_volsw
-snd_soc_dapm_sync
-snd_soc_dapm_sync_unlocked
-snd_soc_dapm_weak_routes
-snd_soc_find_dai
-snd_soc_get_enum_double
-snd_soc_get_pcm_runtime
-snd_soc_get_volsw
-snd_soc_get_volsw_range
-snd_soc_get_volsw_sx
-snd_soc_get_xr_sx
-snd_soc_info_enum_double
-snd_soc_info_multi_ext
-snd_soc_info_volsw
-snd_soc_info_volsw_range
-snd_soc_info_volsw_sx
-snd_soc_info_xr_sx
-snd_soc_jack_add_gpios
-snd_soc_jack_report
-snd_soc_lookup_component
-snd_soc_new_compress
-snd_soc_of_get_dai_link_codecs
-snd_soc_of_get_dai_name
-snd_soc_of_parse_audio_routing
-snd_soc_of_parse_audio_simple_widgets
-snd_soc_of_parse_aux_devs
-snd_soc_of_parse_card_name
-snd_soc_of_parse_daifmt
-snd_soc_of_parse_node_prefix
-snd_soc_of_parse_tdm_slot
-snd_soc_of_put_dai_link_codecs
-snd_soc_params_to_bclk
-snd_soc_params_to_frame_size
-snd_soc_pm_ops
-snd_soc_put_enum_double
-snd_soc_put_volsw
-snd_soc_put_volsw_range
-snd_soc_put_volsw_sx
-snd_soc_put_xr_sx
-snd_soc_register_card
-snd_soc_register_component
-snd_soc_rtdcom_lookup
-snd_soc_runtime_calc_hw
-snd_soc_runtime_set_dai_fmt
-snd_soc_set_runtime_hwparams
-snd_soc_tplg_component_load
-snd_soc_tplg_component_remove
-snd_soc_tplg_widget_bind_event
-snd_soc_unregister_card
-snd_soc_unregister_component
-snd_usb_enable_audio_stream
-snd_vendor_set_ops
-snprintf
-soc_device_register
-soc_device_unregister
-sock_alloc_send_skb
-sock_create_kern
-sock_gettstamp
-sock_i_uid
-sock_init_data
-sock_no_accept
-sock_no_listen
-sock_no_mmap
-sock_no_sendpage
-sock_no_shutdown
-sock_no_socketpair
-sock_queue_rcv_skb
-sock_register
-sock_release
-sock_setsockopt
-sock_unregister
-sock_wfree
-softnet_data
-sort
-spi_bus_lock
-spi_bus_type
-spi_bus_unlock
-spi_controller_resume
-spi_controller_suspend
-spi_delay_exec
-spi_finalize_current_message
-spi_finalize_current_transfer
-spi_get_next_queued_message
-spi_register_controller
-spi_setup
-spi_sync
-spi_sync_locked
-spi_unregister_controller
-split_page
-spmi_controller_add
-spmi_controller_alloc
-spmi_controller_remove
-spmi_ext_register_read
-spmi_ext_register_readl
-spmi_ext_register_write
-spmi_ext_register_writel
-spmi_register_read
-spmi_register_write
-spmi_register_zero_write
-sprint_symbol
-sprint_symbol_no_offset
-sprintf
-srcu_barrier
-srcu_batches_completed
-srcu_init_notifier_head
-srcu_notifier_call_chain
-srcu_notifier_chain_register
-srcu_notifier_chain_unregister
-srcu_torture_stats_print
-srcutorture_get_gp_data
-sscanf
-stack_trace_print
-stack_trace_save
-stack_trace_save_regs
-stack_trace_save_tsk
-static_key_disable
-static_key_disable_cpuslocked
-static_key_slow_dec
-static_key_slow_inc
-stop_machine
-stop_one_cpu_nowait
-stpcpy
-strcasecmp
-strcat
-strchr
-strchrnul
-strcmp
-strcpy
-strcspn
-stream_open
-strim
-string_get_size
-strlcat
-strlcpy
-strlen
-strncasecmp
-strncat
-strnchr
-strncmp
-strncpy
-strncpy_from_user
-strndup_user
-strnlen
-strnstr
-strpbrk
-strrchr
-strreplace
-strscpy
-strsep
-strspn
-strstr
-submit_bh
-submit_bio
-submit_bio_wait
-subsys_system_register
-swiotlb_nr_tbl
-sync_blockdev
-sync_file_create
-sync_file_get_fence
-synchronize_irq
-synchronize_net
-synchronize_rcu
-synchronize_rcu_expedited
-synchronize_rcu_tasks
-synchronize_rcu_tasks_trace
-synchronize_srcu
-synchronize_srcu_expedited
-sys_tz
-syscon_node_to_regmap
-syscon_regmap_lookup_by_phandle
-sysctl_sched_features
-sysctl_sched_latency
-sysctl_vals
-sysfs_add_file_to_group
-sysfs_add_link_to_group
-sysfs_create_bin_file
-sysfs_create_file_ns
-sysfs_create_files
-sysfs_create_group
-sysfs_create_groups
-sysfs_create_link
-sysfs_emit
-sysfs_emit_at
-sysfs_notify
-sysfs_remove_bin_file
-sysfs_remove_file_from_group
-sysfs_remove_file_ns
-sysfs_remove_files
-sysfs_remove_group
-sysfs_remove_groups
-sysfs_remove_link
-sysfs_remove_link_from_group
-sysfs_streq
-sysfs_update_group
-sysrq_mask
-system_freezable_wq
-system_freezing_cnt
-system_highpri_wq
-system_long_wq
-system_power_efficient_wq
-system_state
-system_unbound_wq
-system_wq
-task_active_pid_ns
-task_groups
-task_may_not_preempt
-task_rq_lock
-tasklet_init
-tasklet_kill
-tasklet_setup
-tasklist_lock
-tcp_register_congestion_control
-tcp_reno_cong_avoid
-tcp_reno_ssthresh
-tcp_reno_undo_cwnd
-tcp_slow_start
-tcp_unregister_congestion_control
-tcpci_get_tcpm_port
-tcpci_irq
-tcpci_register_port
-tcpci_unregister_port
-tcpm_cc_change
-tcpm_is_toggling
-tcpm_pd_hard_reset
-tcpm_pd_receive
-tcpm_pd_transmit_complete
-tcpm_sink_frs
-tcpm_sourcing_vbus
-tcpm_update_sink_capabilities
-tcpm_vbus_change
-thermal_cdev_update
-thermal_cooling_device_register
-thermal_cooling_device_unregister
-thermal_of_cooling_device_register
-thermal_pressure
-thermal_zone_device_disable
-thermal_zone_device_enable
-thermal_zone_device_is_enabled
-thermal_zone_device_register
-thermal_zone_device_unregister
-thermal_zone_device_update
-thermal_zone_get_slope
-thermal_zone_get_temp
-thermal_zone_get_zone_by_name
-thermal_zone_of_sensor_register
-thermal_zone_of_sensor_unregister
-thread_group_cputime_adjusted
-tick_nohz_get_idle_calls_cpu
-tick_nohz_get_sleep_length
-time64_to_tm
-timecounter_init
-timecounter_read
-timer_unstable_counter_workaround
-topology_set_thermal_pressure
-total_swapcache_pages
-trace_clock_local
-trace_event_buffer_commit
-trace_event_buffer_reserve
-trace_event_ignore_this_pid
-trace_event_raw_init
-trace_event_reg
-trace_handle_return
-trace_output_call
-trace_print_array_seq
-trace_print_flags_seq
-trace_print_hex_seq
-trace_print_symbols_seq
-trace_raw_output_prep
-trace_seq_printf
-trace_seq_putc
-tracepoint_probe_register
-tracepoint_probe_register_prio
-tracepoint_probe_unregister
-tracing_off
-try_module_get
-try_to_del_timer_sync
-try_wait_for_completion
-ttm_bo_bulk_move_lru_tail
-ttm_bo_device_init
-ttm_bo_device_release
-ttm_bo_dma_acc_size
-ttm_bo_evict_mm
-ttm_bo_eviction_valuable
-ttm_bo_glob
-ttm_bo_init_reserved
-ttm_bo_kmap
-ttm_bo_kunmap
-ttm_bo_lock_delayed_workqueue
-ttm_bo_mem_space
-ttm_bo_mmap
-ttm_bo_mmap_obj
-ttm_bo_move_accel_cleanup
-ttm_bo_move_memcpy
-ttm_bo_move_to_lru_tail
-ttm_bo_move_ttm
-ttm_bo_put
-ttm_bo_unlock_delayed_workqueue
-ttm_bo_validate
-ttm_dma_page_alloc_debugfs
-ttm_dma_populate
-ttm_dma_tt_fini
-ttm_dma_unpopulate
-ttm_eu_backoff_reservation
-ttm_eu_fence_buffer_objects
-ttm_eu_reserve_buffers
-ttm_page_alloc_debugfs
-ttm_populate_and_map_pages
-ttm_range_man_fini
-ttm_range_man_init
-ttm_resource_free
-ttm_resource_manager_force_list_clean
-ttm_resource_manager_init
-ttm_sg_tt_init
-ttm_tt_destroy_common
-ttm_tt_populate
-ttm_tt_set_placement_caching
-ttm_unmap_and_unpopulate_pages
-tty_flip_buffer_push
-tty_insert_flip_string_fixed_flag
-tty_kref_put
-tty_ldisc_deref
-tty_ldisc_ref
-tty_port_close
-tty_port_destroy
-tty_port_hangup
-tty_port_init
-tty_port_open
-tty_port_register_device
-tty_port_tty_get
-tty_port_tty_wakeup
-tty_register_driver
-tty_set_operations
-tty_standard_install
-tty_std_termios
-tty_termios_baud_rate
-tty_termios_copy_hw
-tty_termios_encode_baud_rate
-tty_unregister_device
-tty_unregister_driver
-tty_vhangup
-typec_altmode_get_partner
-typec_altmode_update_active
-typec_get_drvdata
-typec_partner_register_altmode
-typec_port_register_altmode
-typec_register_partner
-typec_register_port
-typec_set_data_role
-typec_set_pwr_opmode
-typec_set_pwr_role
-typec_switch_get_drvdata
-typec_switch_register
-typec_switch_unregister
-typec_unregister_altmode
-typec_unregister_partner
-typec_unregister_port
-uart_add_one_port
-uart_console_device
-uart_console_write
-uart_get_baud_rate
-uart_insert_char
-uart_parse_options
-uart_register_driver
-uart_remove_one_port
-uart_resume_port
-uart_set_options
-uart_suspend_port
-uart_try_toggle_sysrq
-uart_unregister_driver
-uart_update_timeout
-uart_write_wakeup
-uclamp_eff_value
-ucsi_connector_change
-ucsi_create
-ucsi_destroy
-ucsi_get_drvdata
-ucsi_register
-ucsi_set_drvdata
-ucsi_unregister
-udp4_hwcsum
-ufshcd_auto_hibern8_update
-ufshcd_bkops_ctrl
-ufshcd_dme_get_attr
-ufshcd_dme_set_attr
-ufshcd_dump_regs
-ufshcd_fixup_dev_quirks
-ufshcd_get_local_unipro_ver
-ufshcd_get_pwr_dev_param
-ufshcd_hold
-ufshcd_map_desc_id_to_length
-ufshcd_pltfrm_init
-ufshcd_pltfrm_resume
-ufshcd_pltfrm_runtime_idle
-ufshcd_pltfrm_runtime_resume
-ufshcd_pltfrm_runtime_suspend
-ufshcd_pltfrm_shutdown
-ufshcd_pltfrm_suspend
-ufshcd_query_attr
-ufshcd_query_attr_retry
-ufshcd_query_descriptor_retry
-ufshcd_query_flag
-ufshcd_query_flag_retry
-ufshcd_read_desc_param
-ufshcd_release
-ufshcd_remove
-ufshcd_shutdown
-ufshcd_system_resume
-ufshcd_system_suspend
-ufshcd_uic_hibern8_enter
-ufshcd_uic_hibern8_exit
-uio_unregister_device
-unlock_page
-unmap_mapping_range
-unpin_user_page
-unregister_blkdev
-unregister_chrdev_region
-unregister_console
-unregister_die_notifier
-unregister_filesystem
-unregister_ftrace_export
-unregister_inet6addr_notifier
-unregister_inetaddr_notifier
-unregister_kprobe
-unregister_kretprobe
-unregister_module_notifier
-unregister_netdev
-unregister_netdevice_many
-unregister_netdevice_notifier
-unregister_netdevice_queue
-unregister_netevent_notifier
-unregister_oom_notifier
-unregister_pernet_device
-unregister_pernet_subsys
-unregister_pm_notifier
-unregister_reboot_notifier
-unregister_restart_handler
-unregister_rpmsg_driver
-unregister_shrinker
-unregister_syscore_ops
-unregister_sysctl_table
-unregister_virtio_device
-unregister_virtio_driver
-unregister_vmap_purge_notifier
-up
-up_read
-up_write
-update_devfreq
-update_rq_clock
-usb_add_function
-usb_add_gadget
-usb_add_gadget_udc
-usb_add_hcd
-usb_add_phy_dev
-usb_alloc_coherent
-usb_alloc_dev
-usb_alloc_urb
-usb_amd_dev_put
-usb_amd_prefetch_quirk
-usb_amd_pt_check_port
-usb_amd_quirk_pll_check
-usb_amd_quirk_pll_disable
-usb_amd_quirk_pll_enable
-usb_asmedia_modifyflowcontrol
-usb_assign_descriptors
-usb_autopm_get_interface
-usb_autopm_get_interface_no_resume
-usb_autopm_put_interface
-usb_bulk_msg
-usb_calc_bus_time
-usb_choose_configuration
-usb_composite_setup_continue
-usb_control_msg
-usb_copy_descriptors
-usb_create_hcd
-usb_debug_root
-usb_decode_ctrl
-usb_del_gadget_udc
-usb_deregister
-usb_deregister_dev
-usb_disable_xhci_ports
-usb_disabled
-usb_enable_autosuspend
-usb_enable_intel_xhci_ports
-usb_ep_alloc_request
-usb_ep_autoconfig
-usb_ep_clear_halt
-usb_ep_dequeue
-usb_ep_disable
-usb_ep_enable
-usb_ep_fifo_flush
-usb_ep_fifo_status
-usb_ep_free_request
-usb_ep_queue
-usb_ep_set_halt
-usb_ep_set_maxpacket_limit
-usb_find_common_endpoints
-usb_find_interface
-usb_free_all_descriptors
-usb_free_coherent
-usb_free_urb
-usb_function_register
-usb_function_unregister
-usb_gadget_giveback_request
-usb_gadget_map_request_by_dev
-usb_gadget_probe_driver
-usb_gadget_set_state
-usb_gadget_udc_reset
-usb_gadget_unmap_request_by_dev
-usb_gadget_unregister_driver
-usb_gadget_vbus_connect
-usb_gadget_vbus_disconnect
-usb_gadget_vbus_draw
-usb_gadget_wakeup
-usb_get_dev
-usb_get_dr_mode
-usb_get_gadget_udc_name
-usb_get_intf
-usb_get_maximum_speed
-usb_get_urb
-usb_gstrings_attach
-usb_hc_died
-usb_hcd_check_unlink_urb
-usb_hcd_end_port_resume
-usb_hcd_giveback_urb
-usb_hcd_irq
-usb_hcd_is_primary_hcd
-usb_hcd_link_urb_to_ep
-usb_hcd_map_urb_for_dma
-usb_hcd_pci_pm_ops
-usb_hcd_pci_probe
-usb_hcd_pci_remove
-usb_hcd_pci_shutdown
-usb_hcd_platform_shutdown
-usb_hcd_poll_rh_status
-usb_hcd_resume_root_hub
-usb_hcd_start_port_resume
-usb_hcd_unlink_urb_from_ep
-usb_hcds_loaded
-usb_hub_clear_tt_buffer
-usb_hub_find_child
-usb_ifnum_to_if
-usb_initialize_gadget
-usb_interface_id
-usb_kill_urb
-usb_match_id
-usb_match_one_id
-usb_otg_state_string
-usb_phy_set_charger_current
-usb_poison_anchored_urbs
-usb_poison_urb
-usb_put_dev
-usb_put_function_instance
-usb_put_hcd
-usb_put_intf
-usb_register_dev
-usb_register_driver
-usb_register_notify
-usb_remove_hcd
-usb_remove_phy
-usb_role_switch_find_by_fwnode
-usb_role_switch_get
-usb_role_switch_get_drvdata
-usb_role_switch_put
-usb_role_switch_register
-usb_role_switch_set_role
-usb_role_switch_unregister
-usb_root_hub_lost_power
-usb_set_device_state
-usb_set_interface
-usb_show_dynids
-usb_speed_string
-usb_store_new_id
-usb_string_id
-usb_submit_urb
-usb_unpoison_urb
-usb_unregister_notify
-usb_wakeup_notification
-usbnet_change_mtu
-usbnet_defer_kevent
-usbnet_disconnect
-usbnet_get_drvinfo
-usbnet_get_endpoints
-usbnet_get_link
-usbnet_get_link_ksettings
-usbnet_get_msglevel
-usbnet_get_stats64
-usbnet_link_change
-usbnet_nway_reset
-usbnet_open
-usbnet_probe
-usbnet_read_cmd
-usbnet_read_cmd_nopm
-usbnet_resume
-usbnet_set_link_ksettings
-usbnet_set_msglevel
-usbnet_skb_return
-usbnet_start_xmit
-usbnet_stop
-usbnet_suspend
-usbnet_tx_timeout
-usbnet_unlink_rx_urbs
-usbnet_update_max_qlen
-usbnet_write_cmd
-usbnet_write_cmd_async
-usbnet_write_cmd_nopm
-usleep_range
-uuid_gen
-uuid_null
-uuid_parse
-v4l2_compat_ioctl32
-v4l2_ctrl_find
-v4l2_ctrl_handler_free
-v4l2_ctrl_handler_init_class
-v4l2_ctrl_handler_setup
-v4l2_ctrl_log_status
-v4l2_ctrl_new_custom
-v4l2_ctrl_new_std
-v4l2_ctrl_new_std_menu
-v4l2_device_register
-v4l2_device_register_subdev
-v4l2_device_set_name
-v4l2_device_unregister
-v4l2_device_unregister_subdev
-v4l2_event_dequeue
-v4l2_event_pending
-v4l2_event_queue
-v4l2_event_queue_fh
-v4l2_event_subscribe
-v4l2_event_unsubscribe
-v4l2_fh_add
-v4l2_fh_del
-v4l2_fh_exit
-v4l2_fh_init
-v4l2_fh_open
-v4l2_fh_release
-v4l2_i2c_subdev_init
-v4l2_m2m_buf_queue
-v4l2_m2m_buf_remove
-v4l2_m2m_ctx_init
-v4l2_m2m_ctx_release
-v4l2_m2m_dqbuf
-v4l2_m2m_fop_mmap
-v4l2_m2m_fop_poll
-v4l2_m2m_get_curr_priv
-v4l2_m2m_get_vq
-v4l2_m2m_init
-v4l2_m2m_ioctl_dqbuf
-v4l2_m2m_ioctl_querybuf
-v4l2_m2m_ioctl_reqbufs
-v4l2_m2m_ioctl_streamoff
-v4l2_m2m_ioctl_streamon
-v4l2_m2m_job_finish
-v4l2_m2m_mmap
-v4l2_m2m_next_buf
-v4l2_m2m_poll
-v4l2_m2m_qbuf
-v4l2_m2m_querybuf
-v4l2_m2m_release
-v4l2_m2m_reqbufs
-v4l2_m2m_streamoff
-v4l2_m2m_streamon
-v4l2_m2m_try_schedule
-v4l2_s_ctrl
-v4l2_subdev_call_wrappers
-v4l2_subdev_init
-v4l_bound_align_image
-vabits_actual
-vb2_buffer_done
-vb2_common_vm_ops
-vb2_create_framevec
-vb2_destroy_framevec
-vb2_dqbuf
-vb2_fop_mmap
-vb2_fop_poll
-vb2_fop_read
-vb2_fop_release
-vb2_ioctl_create_bufs
-vb2_ioctl_dqbuf
-vb2_ioctl_expbuf
-vb2_ioctl_qbuf
-vb2_ioctl_querybuf
-vb2_ioctl_reqbufs
-vb2_ioctl_streamoff
-vb2_ioctl_streamon
-vb2_mmap
-vb2_ops_wait_finish
-vb2_ops_wait_prepare
-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
-vb2_vmalloc_memops
-vb2_wait_for_all_buffers
-vchan_dma_desc_free_list
-vchan_find_desc
-vchan_init
-vchan_tx_desc_free
-vchan_tx_submit
-vfree
-vfs_fsync_range
-video_devdata
-video_device_alloc
-video_device_release
-video_device_release_empty
-video_ioctl2
-video_unregister_device
-virtio_check_driver_offered_feature
-virtio_config_changed
-virtio_device_freeze
-virtio_device_restore
-virtio_max_dma_size
-virtio_transport_connect
-virtio_transport_deliver_tap_pkt
-virtio_transport_destruct
-virtio_transport_dgram_allow
-virtio_transport_dgram_bind
-virtio_transport_dgram_dequeue
-virtio_transport_dgram_enqueue
-virtio_transport_do_socket_init
-virtio_transport_free_pkt
-virtio_transport_notify_buffer_size
-virtio_transport_notify_poll_in
-virtio_transport_notify_poll_out
-virtio_transport_notify_recv_init
-virtio_transport_notify_recv_post_dequeue
-virtio_transport_notify_recv_pre_block
-virtio_transport_notify_recv_pre_dequeue
-virtio_transport_notify_send_init
-virtio_transport_notify_send_post_enqueue
-virtio_transport_notify_send_pre_block
-virtio_transport_notify_send_pre_enqueue
-virtio_transport_recv_pkt
-virtio_transport_release
-virtio_transport_shutdown
-virtio_transport_stream_allow
-virtio_transport_stream_dequeue
-virtio_transport_stream_enqueue
-virtio_transport_stream_has_data
-virtio_transport_stream_has_space
-virtio_transport_stream_is_active
-virtio_transport_stream_rcvhiwat
-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
-vm_event_states
-vm_get_page_prot
-vm_insert_page
-vm_iomap_memory
-vm_map_pages
-vm_map_ram
-vm_mmap
-vm_munmap
-vm_node_stat
-vm_unmap_ram
-vm_zone_stat
-vmalloc
-vmalloc_nr_pages
-vmalloc_to_page
-vmalloc_to_pfn
-vmalloc_user
-vmap
-vmemdup_user
-vmf_insert_mixed
-vmf_insert_pfn
-vmf_insert_pfn_prot
-vprintk
-vring_create_virtqueue
-vring_del_virtqueue
-vring_interrupt
-vring_new_virtqueue
-vring_transport_features
-vscnprintf
-vsnprintf
-vsock_core_register
-vsock_core_unregister
-vsock_for_each_connected_socket
-vsprintf
-vunmap
-vzalloc
-vzalloc_node
-wait_for_completion
-wait_for_completion_interruptible
-wait_for_completion_interruptible_timeout
-wait_for_completion_io_timeout
-wait_for_completion_killable
-wait_for_completion_killable_timeout
-wait_for_completion_timeout
-wait_woken
-wake_up_if_idle
-wake_up_process
-wakeup_source_add
-wakeup_source_create
-wakeup_source_destroy
-wakeup_source_register
-wakeup_source_remove
-wakeup_source_unregister
-watchdog_init_timeout
-watchdog_register_device
-watchdog_set_restart_priority
-watchdog_unregister_device
-wireless_send_event
-woken_wake_function
-work_busy
-ww_mutex_lock
-ww_mutex_lock_interruptible
-ww_mutex_unlock
-xa_destroy
-xa_erase
-xa_find
-xa_find_after
-xa_load
-xa_store
-xdp_convert_zc_to_xdp_frame
-xdp_do_flush
-xdp_do_redirect
-xdp_return_frame
-xdp_return_frame_rx_napi
-xdp_rxq_info_reg
-xdp_rxq_info_reg_mem_model
-xdp_rxq_info_unreg
-xdp_warn
-xfrm_state_lookup_byspi
-xfrm_stateonly_find
-xhci_add_endpoint
-xhci_address_device
-xhci_alloc_command
-xhci_alloc_erst
-xhci_check_trb_in_td_math
-xhci_free_command
-xhci_free_erst
-xhci_gen_setup
-xhci_get_endpoint_index
-xhci_get_ep_ctx
-xhci_get_slot_ctx
-xhci_handle_event
-xhci_init_driver
-xhci_initialize_ring_info
-xhci_link_segments
-xhci_queue_stop_endpoint
-xhci_resume
-xhci_ring_alloc
-xhci_ring_cmd_db
-xhci_ring_free
-xhci_run
-xhci_segment_free
-xhci_suspend
-xhci_trb_virt_to_dma
-xhci_update_erst_dequeue
-xhci_vendor_get_ops
-zone_watermark_ok
-zone_watermark_ok_safe
+ PDE_DATA
+ __ClearPageMovable
+ __SetPageMovable
+ ___pskb_trim
+ ___ratelimit
+ __alloc_disk_node
+ __alloc_pages_nodemask
+ __alloc_percpu
+ __alloc_percpu_gfp
+ __alloc_skb
+ __arch_clear_user
+ __arch_copy_from_user
+ __arch_copy_in_user
+ __arch_copy_to_user
+ __arm_smccc_hvc
+ __arm_smccc_smc
+ __bitmap_andnot
+ __bitmap_clear
+ __bitmap_complement
+ __bitmap_or
+ __bitmap_set
+ __bitmap_weight
+ __bitmap_xor
+ __blk_mq_debugfs_rq_show
+ __blk_mq_end_request
+ __blk_rq_map_sg
+ __blkdev_issue_discard
+ __blkdev_issue_zeroout
+ __cfi_slowpath
+ __check_object_size
+ __class_create
+ __class_register
+ __clk_determine_rate
+ __clk_get_hw
+ __clk_get_name
+ __clk_hw_register_divider
+ __clk_hw_register_gate
+ __clk_hw_register_mux
+ __clk_is_enabled
+ __clk_mux_determine_rate_closest
+ __clocksource_register_scale
+ __close_fd
+ __const_udelay
+ __cpu_active_mask
+ __cpu_online_mask
+ __cpu_possible_mask
+ __cpu_present_mask
+ __cpufreq_driver_target
+ __cpuhp_remove_state
+ __cpuhp_setup_state
+ __cpuhp_setup_state_cpuslocked
+ __cpuhp_state_add_instance
+ __cpuhp_state_remove_instance
+ __dev_get_by_index
+ __dev_kfree_skb_any
+ __devm_alloc_percpu
+ __devm_drm_dev_alloc
+ __devm_iio_device_register
+ __devm_irq_alloc_descs
+ __devm_of_phy_provider_register
+ __devm_regmap_init
+ __devm_regmap_init_i2c
+ __devm_regmap_init_mmio_clk
+ __devm_regmap_init_spi
+ __devm_release_region
+ __devm_request_region
+ __devm_reset_control_get
+ __devm_spi_alloc_controller
+ __dma_request_channel
+ __do_once_done
+ __do_once_start
+ __drm_atomic_helper_connector_destroy_state
+ __drm_atomic_helper_connector_duplicate_state
+ __drm_atomic_helper_connector_reset
+ __drm_atomic_helper_crtc_destroy_state
+ __drm_atomic_helper_crtc_duplicate_state
+ __drm_atomic_helper_crtc_reset
+ __drm_atomic_helper_plane_destroy_state
+ __drm_atomic_helper_plane_duplicate_state
+ __drm_atomic_helper_private_obj_duplicate_state
+ __drm_atomic_state_free
+ __drm_dbg
+ __drm_debug
+ __drm_err
+ __drm_printfn_coredump
+ __drm_printfn_info
+ __drm_printfn_seq_file
+ __drm_puts_coredump
+ __drm_puts_seq_file
+ __dynamic_dev_dbg
+ __dynamic_pr_debug
+ __ethtool_get_link_ksettings
+ __fdget
+ __flush_icache_range
+ __free_pages
+ __genphy_config_aneg
+ __get_free_pages
+ __get_task_comm
+ __hid_register_driver
+ __hid_request
+ __hrtimer_get_remaining
+ __hvc_resize
+ __hwspin_lock_timeout
+ __hwspin_unlock
+ __i2c_smbus_xfer
+ __i2c_transfer
+ __iio_device_register
+ __init_rwsem
+ __init_swait_queue_head
+ __init_waitqueue_head
+ __ioread32_copy
+ __ioremap
+ __iowrite32_copy
+ __ipv6_addr_type
+ __irq_alloc_descs
+ __irq_domain_add
+ __irq_set_handler
+ __kfifo_alloc
+ __kfifo_free
+ __kfifo_in
+ __kfifo_init
+ __kfifo_out
+ __kfifo_out_peek
+ __kfifo_to_user
+ __kfree_skb
+ __kmalloc
+ __kthread_init_worker
+ __list_add_valid
+ __list_del_entry_valid
+ __local_bh_enable_ip
+ __lock_page
+ __log_post_read_mmio
+ __log_read_mmio
+ __log_write_mmio
+ __mdiobus_register
+ __media_device_register
+ __memcat_p
+ __memcpy_fromio
+ __memcpy_toio
+ __memset_io
+ __mmc_claim_host
+ __mmc_send_status
+ __mmdrop
+ __module_get
+ __msecs_to_jiffies
+ __mutex_init
+ __napi_alloc_skb
+ __napi_schedule
+ __ndelay
+ __netdev_alloc_skb
+ __netif_napi_del
+ __netif_set_xps_queue
+ __netlink_kernel_create
+ __next_zones_zonelist
+ __nla_parse
+ __nla_validate
+ __nlmsg_put
+ __num_online_cpus
+ __of_reset_control_get
+ __pci_register_driver
+ __per_cpu_offset
+ __percpu_down_read
+ __percpu_init_rwsem
+ __platform_driver_probe
+ __platform_driver_register
+ __platform_register_drivers
+ __pm_relax
+ __pm_runtime_disable
+ __pm_runtime_idle
+ __pm_runtime_resume
+ __pm_runtime_set_status
+ __pm_runtime_suspend
+ __pm_runtime_use_autosuspend
+ __pm_stay_awake
+ __printk_ratelimit
+ __pskb_pull_tail
+ __put_page
+ __put_task_struct
+ __rb_erase_color
+ __rb_insert_augmented
+ __rcu_read_lock
+ __rcu_read_unlock
+ __refrigerator
+ __register_chrdev
+ __register_rpmsg_driver
+ __regmap_init
+ __release_region
+ __request_module
+ __request_percpu_irq
+ __request_region
+ __rht_bucket_nested
+ __rtc_register_device
+ __scsi_execute
+ __scsi_iterate_devices
+ __scsi_print_sense
+ __sdhci_add_host
+ __seq_open_private
+ __serio_register_driver
+ __serio_register_port
+ __sg_page_iter_dma_next
+ __sg_page_iter_next
+ __sg_page_iter_start
+ __skb_ext_put
+ __skb_flow_dissect
+ __skb_get_hash
+ __skb_gso_segment
+ __skb_pad
+ __spi_alloc_controller
+ __spi_register_driver
+ __splice_from_pipe
+ __spmi_driver_register
+ __srcu_read_lock
+ __srcu_read_unlock
+ __stack_chk_fail
+ __stack_chk_guard
+ __sw_hweight16
+ __sw_hweight32
+ __sw_hweight64
+ __sw_hweight8
+ __sysfs_match_string
+ __task_pid_nr_ns
+ __task_rq_lock
+ __tasklet_hi_schedule
+ __tasklet_schedule
+ __trace_bprintk
+ __trace_bputs
+ __trace_printk
+ __traceiter_android_rvh_account_irq
+ __traceiter_android_rvh_build_perf_domains
+ __traceiter_android_rvh_can_migrate_task
+ __traceiter_android_rvh_check_preempt_wakeup
+ __traceiter_android_rvh_cpu_cgroup_attach
+ __traceiter_android_rvh_cpu_cgroup_can_attach
+ __traceiter_android_rvh_cpu_cgroup_online
+ __traceiter_android_rvh_cpu_overutilized
+ __traceiter_android_rvh_cpufreq_transition
+ __traceiter_android_rvh_dequeue_task
+ __traceiter_android_rvh_die_kernel_fault
+ __traceiter_android_rvh_do_mem_abort
+ __traceiter_android_rvh_do_sp_pc_abort
+ __traceiter_android_rvh_enqueue_task
+ __traceiter_android_rvh_find_busiest_queue
+ __traceiter_android_rvh_find_energy_efficient_cpu
+ __traceiter_android_rvh_find_lowest_rq
+ __traceiter_android_rvh_flush_task
+ __traceiter_android_rvh_irqs_disable
+ __traceiter_android_rvh_irqs_enable
+ __traceiter_android_rvh_migrate_queued_task
+ __traceiter_android_rvh_new_task_stats
+ __traceiter_android_rvh_pick_next_entity
+ __traceiter_android_rvh_place_entity
+ __traceiter_android_rvh_preempt_disable
+ __traceiter_android_rvh_preempt_enable
+ __traceiter_android_rvh_replace_next_task_fair
+ __traceiter_android_rvh_report_bug
+ __traceiter_android_rvh_resume_cpus
+ __traceiter_android_rvh_sched_balance_rt
+ __traceiter_android_rvh_sched_cpu_dying
+ __traceiter_android_rvh_sched_cpu_starting
+ __traceiter_android_rvh_sched_exec
+ __traceiter_android_rvh_sched_fork
+ __traceiter_android_rvh_sched_fork_init
+ __traceiter_android_rvh_sched_newidle_balance
+ __traceiter_android_rvh_sched_nohz_balancer_kick
+ __traceiter_android_rvh_sched_rebalance_domains
+ __traceiter_android_rvh_schedule
+ __traceiter_android_rvh_schedule_bug
+ __traceiter_android_rvh_select_fallback_rq
+ __traceiter_android_rvh_select_task_rq_fair
+ __traceiter_android_rvh_select_task_rq_rt
+ __traceiter_android_rvh_set_gfp_zone_flags
+ __traceiter_android_rvh_set_iowait
+ __traceiter_android_rvh_set_readahead_gfp_mask
+ __traceiter_android_rvh_set_skip_swapcache_flags
+ __traceiter_android_rvh_set_task_cpu
+ __traceiter_android_rvh_tick_entry
+ __traceiter_android_rvh_try_to_wake_up
+ __traceiter_android_rvh_try_to_wake_up_success
+ __traceiter_android_rvh_ttwu_cond
+ __traceiter_android_rvh_typec_tcpci_chk_contaminant
+ __traceiter_android_rvh_typec_tcpci_get_vbus
+ __traceiter_android_rvh_uclamp_eff_get
+ __traceiter_android_rvh_update_cpu_capacity
+ __traceiter_android_rvh_update_cpus_allowed
+ __traceiter_android_rvh_update_misfit_status
+ __traceiter_android_rvh_util_est_update
+ __traceiter_android_rvh_wake_up_new_task
+ __traceiter_android_vh_allow_domain_state
+ __traceiter_android_vh_arch_set_freq_scale
+ __traceiter_android_vh_binder_restore_priority
+ __traceiter_android_vh_binder_set_priority
+ __traceiter_android_vh_binder_transaction_init
+ __traceiter_android_vh_binder_wakeup_ilocked
+ __traceiter_android_vh_cma_alloc_finish
+ __traceiter_android_vh_cma_alloc_start
+ __traceiter_android_vh_cpu_idle_enter
+ __traceiter_android_vh_cpu_idle_exit
+ __traceiter_android_vh_dump_throttled_rt_tasks
+ __traceiter_android_vh_enable_thermal_genl_check
+ __traceiter_android_vh_ep_create_wakeup_source
+ __traceiter_android_vh_freq_table_limits
+ __traceiter_android_vh_ftrace_dump_buffer
+ __traceiter_android_vh_ftrace_format_check
+ __traceiter_android_vh_ftrace_oops_enter
+ __traceiter_android_vh_ftrace_oops_exit
+ __traceiter_android_vh_ftrace_size_check
+ __traceiter_android_vh_iommu_setup_dma_ops
+ __traceiter_android_vh_ipi_stop
+ __traceiter_android_vh_is_fpsimd_save
+ __traceiter_android_vh_jiffies_update
+ __traceiter_android_vh_kfree_skb
+ __traceiter_android_vh_logbuf
+ __traceiter_android_vh_logbuf_pr_cont
+ __traceiter_android_vh_meminfo_proc_show
+ __traceiter_android_vh_pagecache_get_page
+ __traceiter_android_vh_printk_hotplug
+ __traceiter_android_vh_ptype_head
+ __traceiter_android_vh_rmqueue
+ __traceiter_android_vh_scheduler_tick
+ __traceiter_android_vh_show_max_freq
+ __traceiter_android_vh_show_mem
+ __traceiter_android_vh_show_resume_epoch_val
+ __traceiter_android_vh_show_suspend_epoch_val
+ __traceiter_android_vh_timer_calc_index
+ __traceiter_android_vh_timerfd_create
+ __traceiter_android_vh_typec_store_partner_src_caps
+ __traceiter_android_vh_typec_tcpci_override_toggling
+ __traceiter_android_vh_typec_tcpm_adj_current_limit
+ __traceiter_android_vh_typec_tcpm_get_timer
+ __traceiter_android_vh_ufs_check_int_errors
+ __traceiter_android_vh_ufs_compl_command
+ __traceiter_android_vh_ufs_fill_prdt
+ __traceiter_android_vh_ufs_prepare_command
+ __traceiter_android_vh_ufs_send_command
+ __traceiter_android_vh_ufs_send_tm_command
+ __traceiter_android_vh_ufs_send_uic_command
+ __traceiter_android_vh_ufs_update_sdev
+ __traceiter_android_vh_ufs_update_sysfs
+ __traceiter_clock_set_rate
+ __traceiter_cpu_frequency
+ __traceiter_dma_fence_emit
+ __traceiter_dwc3_readl
+ __traceiter_dwc3_writel
+ __traceiter_gpu_mem_total
+ __traceiter_sched_util_est_se_tp
+ __traceiter_xdp_exception
+ __tracepoint_android_rvh_account_irq
+ __tracepoint_android_rvh_arm64_serror_panic
+ __tracepoint_android_rvh_bad_mode
+ __tracepoint_android_rvh_build_perf_domains
+ __tracepoint_android_rvh_can_migrate_task
+ __tracepoint_android_rvh_check_preempt_wakeup
+ __tracepoint_android_rvh_cpu_cgroup_attach
+ __tracepoint_android_rvh_cpu_cgroup_can_attach
+ __tracepoint_android_rvh_cpu_cgroup_online
+ __tracepoint_android_rvh_cpu_overutilized
+ __tracepoint_android_rvh_cpufreq_transition
+ __tracepoint_android_rvh_dequeue_task
+ __tracepoint_android_rvh_dequeue_task_idle
+ __tracepoint_android_rvh_die_kernel_fault
+ __tracepoint_android_rvh_do_mem_abort
+ __tracepoint_android_rvh_do_sea
+ __tracepoint_android_rvh_do_sp_pc_abort
+ __tracepoint_android_rvh_do_undefinstr
+ __tracepoint_android_rvh_enqueue_task
+ __tracepoint_android_rvh_find_busiest_queue
+ __tracepoint_android_rvh_find_energy_efficient_cpu
+ __tracepoint_android_rvh_find_lowest_rq
+ __tracepoint_android_rvh_flush_task
+ __tracepoint_android_rvh_irqs_disable
+ __tracepoint_android_rvh_irqs_enable
+ __tracepoint_android_rvh_migrate_queued_task
+ __tracepoint_android_rvh_new_task_stats
+ __tracepoint_android_rvh_pick_next_entity
+ __tracepoint_android_rvh_place_entity
+ __tracepoint_android_rvh_preempt_disable
+ __tracepoint_android_rvh_preempt_enable
+ __tracepoint_android_rvh_replace_next_task_fair
+ __tracepoint_android_rvh_report_bug
+ __tracepoint_android_rvh_resume_cpus
+ __tracepoint_android_rvh_sched_balance_rt
+ __tracepoint_android_rvh_sched_cpu_dying
+ __tracepoint_android_rvh_sched_cpu_starting
+ __tracepoint_android_rvh_sched_exec
+ __tracepoint_android_rvh_sched_fork
+ __tracepoint_android_rvh_sched_fork_init
+ __tracepoint_android_rvh_sched_newidle_balance
+ __tracepoint_android_rvh_sched_nohz_balancer_kick
+ __tracepoint_android_rvh_sched_rebalance_domains
+ __tracepoint_android_rvh_schedule
+ __tracepoint_android_rvh_schedule_bug
+ __tracepoint_android_rvh_select_fallback_rq
+ __tracepoint_android_rvh_select_task_rq_fair
+ __tracepoint_android_rvh_select_task_rq_rt
+ __tracepoint_android_rvh_set_gfp_zone_flags
+ __tracepoint_android_rvh_set_iowait
+ __tracepoint_android_rvh_set_readahead_gfp_mask
+ __tracepoint_android_rvh_set_skip_swapcache_flags
+ __tracepoint_android_rvh_set_task_cpu
+ __tracepoint_android_rvh_tick_entry
+ __tracepoint_android_rvh_try_to_wake_up
+ __tracepoint_android_rvh_try_to_wake_up_success
+ __tracepoint_android_rvh_ttwu_cond
+ __tracepoint_android_rvh_typec_tcpci_chk_contaminant
+ __tracepoint_android_rvh_typec_tcpci_get_vbus
+ __tracepoint_android_rvh_uclamp_eff_get
+ __tracepoint_android_rvh_update_cpu_capacity
+ __tracepoint_android_rvh_update_cpus_allowed
+ __tracepoint_android_rvh_update_misfit_status
+ __tracepoint_android_rvh_util_est_update
+ __tracepoint_android_rvh_wake_up_new_task
+ __tracepoint_android_vh_allow_domain_state
+ __tracepoint_android_vh_arch_set_freq_scale
+ __tracepoint_android_vh_binder_restore_priority
+ __tracepoint_android_vh_binder_set_priority
+ __tracepoint_android_vh_binder_transaction_init
+ __tracepoint_android_vh_binder_wakeup_ilocked
+ __tracepoint_android_vh_cgroup_attach
+ __tracepoint_android_vh_cma_alloc_finish
+ __tracepoint_android_vh_cma_alloc_start
+ __tracepoint_android_vh_cpu_idle_enter
+ __tracepoint_android_vh_cpu_idle_exit
+ __tracepoint_android_vh_dump_throttled_rt_tasks
+ __tracepoint_android_vh_enable_thermal_genl_check
+ __tracepoint_android_vh_ep_create_wakeup_source
+ __tracepoint_android_vh_freq_table_limits
+ __tracepoint_android_vh_ftrace_dump_buffer
+ __tracepoint_android_vh_ftrace_format_check
+ __tracepoint_android_vh_ftrace_oops_enter
+ __tracepoint_android_vh_ftrace_oops_exit
+ __tracepoint_android_vh_ftrace_size_check
+ __tracepoint_android_vh_iommu_setup_dma_ops
+ __tracepoint_android_vh_ipi_stop
+ __tracepoint_android_vh_is_fpsimd_save
+ __tracepoint_android_vh_jiffies_update
+ __tracepoint_android_vh_kfree_skb
+ __tracepoint_android_vh_logbuf
+ __tracepoint_android_vh_logbuf_pr_cont
+ __tracepoint_android_vh_meminfo_proc_show
+ __tracepoint_android_vh_mutex_wait_finish
+ __tracepoint_android_vh_mutex_wait_start
+ __tracepoint_android_vh_pagecache_get_page
+ __tracepoint_android_vh_printk_hotplug
+ __tracepoint_android_vh_ptype_head
+ __tracepoint_android_vh_rmqueue
+ __tracepoint_android_vh_rtmutex_wait_finish
+ __tracepoint_android_vh_rtmutex_wait_start
+ __tracepoint_android_vh_rwsem_read_wait_finish
+ __tracepoint_android_vh_rwsem_read_wait_start
+ __tracepoint_android_vh_rwsem_write_wait_finish
+ __tracepoint_android_vh_rwsem_write_wait_start
+ __tracepoint_android_vh_sched_show_task
+ __tracepoint_android_vh_scheduler_tick
+ __tracepoint_android_vh_show_max_freq
+ __tracepoint_android_vh_show_mem
+ __tracepoint_android_vh_show_resume_epoch_val
+ __tracepoint_android_vh_show_suspend_epoch_val
+ __tracepoint_android_vh_timer_calc_index
+ __tracepoint_android_vh_timerfd_create
+ __tracepoint_android_vh_try_to_freeze_todo
+ __tracepoint_android_vh_try_to_freeze_todo_unfrozen
+ __tracepoint_android_vh_typec_store_partner_src_caps
+ __tracepoint_android_vh_typec_tcpci_override_toggling
+ __tracepoint_android_vh_typec_tcpm_adj_current_limit
+ __tracepoint_android_vh_typec_tcpm_get_timer
+ __tracepoint_android_vh_ufs_check_int_errors
+ __tracepoint_android_vh_ufs_compl_command
+ __tracepoint_android_vh_ufs_fill_prdt
+ __tracepoint_android_vh_ufs_prepare_command
+ __tracepoint_android_vh_ufs_send_command
+ __tracepoint_android_vh_ufs_send_tm_command
+ __tracepoint_android_vh_ufs_send_uic_command
+ __tracepoint_android_vh_ufs_update_sdev
+ __tracepoint_android_vh_ufs_update_sysfs
+ __tracepoint_android_vh_watchdog_timer_softlockup
+ __tracepoint_android_vh_wq_lockup_pool
+ __tracepoint_binder_transaction_received
+ __tracepoint_clock_set_rate
+ __tracepoint_cpu_frequency
+ __tracepoint_cpu_frequency_limits
+ __tracepoint_cpu_idle
+ __tracepoint_device_pm_callback_end
+ __tracepoint_device_pm_callback_start
+ __tracepoint_dma_fence_emit
+ __tracepoint_dwc3_ep_queue
+ __tracepoint_dwc3_readl
+ __tracepoint_dwc3_writel
+ __tracepoint_gpu_mem_total
+ __tracepoint_hrtimer_expire_entry
+ __tracepoint_hrtimer_expire_exit
+ __tracepoint_ipi_entry
+ __tracepoint_ipi_exit
+ __tracepoint_ipi_raise
+ __tracepoint_irq_handler_entry
+ __tracepoint_irq_handler_exit
+ __tracepoint_pelt_cfs_tp
+ __tracepoint_pelt_dl_tp
+ __tracepoint_pelt_irq_tp
+ __tracepoint_pelt_rt_tp
+ __tracepoint_pelt_se_tp
+ __tracepoint_rwmmio_post_read
+ __tracepoint_rwmmio_read
+ __tracepoint_rwmmio_write
+ __tracepoint_sched_cpu_capacity_tp
+ __tracepoint_sched_overutilized_tp
+ __tracepoint_sched_switch
+ __tracepoint_sched_util_est_cfs_tp
+ __tracepoint_sched_util_est_se_tp
+ __tracepoint_suspend_resume
+ __tracepoint_workqueue_execute_end
+ __tracepoint_workqueue_execute_start
+ __tracepoint_xdp_exception
+ __tty_alloc_driver
+ __tty_insert_flip_char
+ __udelay
+ __uio_register_device
+ __unregister_chrdev
+ __update_load_avg_blocked_se
+ __usb_create_hcd
+ __usb_get_extra_descriptor
+ __usecs_to_jiffies
+ __v4l2_device_register_subdev_nodes
+ __video_register_device
+ __wait_rcu_gp
+ __wake_up
+ __wake_up_locked
+ __wake_up_locked_key
+ __wake_up_sync
+ __warn_printk
+ __xa_alloc
+ __xa_insert
+ __xfrm_state_destroy
+ _atomic_dec_and_lock
+ _copy_from_iter
+ _copy_from_iter_full
+ _copy_to_iter
+ _ctype
+ _dev_alert
+ _dev_crit
+ _dev_emerg
+ _dev_err
+ _dev_info
+ _dev_notice
+ _dev_warn
+ _raw_read_lock
+ _raw_read_lock_bh
+ _raw_read_lock_irq
+ _raw_read_lock_irqsave
+ _raw_read_unlock
+ _raw_read_unlock_bh
+ _raw_read_unlock_irq
+ _raw_read_unlock_irqrestore
+ _raw_spin_lock
+ _raw_spin_lock_bh
+ _raw_spin_lock_irq
+ _raw_spin_lock_irqsave
+ _raw_spin_trylock
+ _raw_spin_trylock_bh
+ _raw_spin_unlock
+ _raw_spin_unlock_bh
+ _raw_spin_unlock_irq
+ _raw_spin_unlock_irqrestore
+ _raw_write_lock
+ _raw_write_lock_bh
+ _raw_write_lock_irq
+ _raw_write_lock_irqsave
+ _raw_write_unlock
+ _raw_write_unlock_bh
+ _raw_write_unlock_irq
+ _raw_write_unlock_irqrestore
+ _snd_ctl_add_follower
+ _snd_pcm_stream_lock_irqsave
+ _totalram_pages
+ access_process_vm
+ ack_all_badblocks
+ activate_task
+ add_cpu
+ add_device_randomness
+ add_memory
+ add_memory_subsection
+ add_taint
+ add_timer
+ add_timer_on
+ add_uevent_var
+ add_wait_queue
+ adjust_managed_page_count
+ alarm_cancel
+ alarm_init
+ alarm_start
+ alarm_start_relative
+ alarm_try_to_cancel
+ alarmtimer_get_rtcdev
+ all_vm_events
+ alloc_anon_inode
+ alloc_chrdev_region
+ alloc_etherdev_mqs
+ alloc_io_pgtable_ops
+ alloc_netdev_mqs
+ alloc_page_buffers
+ alloc_pages_exact
+ alloc_skb_with_frags
+ alloc_workqueue
+ amba_bustype
+ amba_driver_register
+ amba_driver_unregister
+ amba_release_regions
+ amba_request_regions
+ android_debug_per_cpu_symbol
+ android_debug_symbol
+ android_rvh_probe_register
+ anon_inode_getfd
+ anon_inode_getfile
+ arch_timer_read_counter
+ argv_free
+ argv_split
+ arm64_const_caps_ready
+ arm64_use_ng_mappings
+ async_schedule_node
+ async_schedule_node_domain
+ async_synchronize_full_domain
+ atomic_notifier_call_chain
+ atomic_notifier_chain_register
+ atomic_notifier_chain_unregister
+ autoremove_wake_function
+ available_idle_cpu
+ backlight_device_get_by_type
+ backlight_device_register
+ backlight_device_set_brightness
+ backlight_device_unregister
+ badblocks_clear
+ badblocks_exit
+ badblocks_init
+ badblocks_set
+ badblocks_show
+ badblocks_store
+ balloon_aops
+ balloon_page_alloc
+ balloon_page_dequeue
+ balloon_page_enqueue
+ bcmp
+ bd_link_disk_holder
+ bd_set_nr_sectors
+ bd_unlink_disk_holder
+ bdev_check_media_change
+ bdev_read_only
+ bdevname
+ bdget_disk
+ bdput
+ bgpio_init
+ bin2hex
+ bio_add_page
+ bio_alloc_bioset
+ bio_associate_blkg
+ bio_chain
+ bio_clone_blkg_association
+ bio_endio
+ bio_init
+ bio_put
+ bioset_exit
+ bioset_init
+ bitmap_allocate_region
+ bitmap_find_next_zero_area_off
+ bitmap_from_arr32
+ bitmap_parse
+ bitmap_parselist
+ bitmap_parselist_user
+ bitmap_print_to_pagebuf
+ bitmap_release_region
+ bitmap_to_arr32
+ bitmap_zalloc
+ blk_alloc_queue
+ blk_cleanup_queue
+ blk_execute_rq
+ blk_execute_rq_nowait
+ blk_finish_plug
+ blk_freeze_queue_start
+ blk_get_queue
+ blk_get_request
+ blk_mq_alloc_request
+ blk_mq_alloc_request_hctx
+ blk_mq_alloc_tag_set
+ blk_mq_complete_request
+ blk_mq_complete_request_remote
+ blk_mq_debugfs_rq_show
+ blk_mq_delay_kick_requeue_list
+ blk_mq_end_request
+ blk_mq_free_request
+ blk_mq_free_tag_set
+ blk_mq_freeze_queue
+ blk_mq_freeze_queue_wait
+ blk_mq_freeze_queue_wait_timeout
+ blk_mq_init_queue
+ blk_mq_map_queues
+ blk_mq_pci_map_queues
+ blk_mq_quiesce_queue
+ blk_mq_requeue_request
+ blk_mq_rq_cpu
+ blk_mq_run_hw_queues
+ blk_mq_sched_request_inserted
+ blk_mq_sched_try_insert_merge
+ blk_mq_sched_try_merge
+ blk_mq_start_request
+ blk_mq_start_stopped_hw_queues
+ blk_mq_stop_hw_queue
+ blk_mq_tag_to_rq
+ blk_mq_tagset_busy_iter
+ blk_mq_tagset_wait_completed_request
+ blk_mq_unfreeze_queue
+ blk_mq_unique_tag
+ blk_mq_unquiesce_queue
+ blk_mq_update_nr_hw_queues
+ blk_mq_virtio_map_queues
+ blk_poll
+ blk_put_queue
+ blk_put_request
+ blk_queue_alignment_offset
+ blk_queue_bounce_limit
+ blk_queue_can_use_dma_map_merging
+ blk_queue_chunk_sectors
+ blk_queue_dma_alignment
+ blk_queue_flag_clear
+ blk_queue_flag_set
+ blk_queue_flag_test_and_set
+ blk_queue_io_min
+ blk_queue_io_opt
+ blk_queue_logical_block_size
+ blk_queue_max_discard_sectors
+ blk_queue_max_discard_segments
+ blk_queue_max_hw_sectors
+ blk_queue_max_segment_size
+ blk_queue_max_segments
+ blk_queue_max_write_zeroes_sectors
+ blk_queue_physical_block_size
+ blk_queue_rq_timeout
+ blk_queue_split
+ blk_queue_virt_boundary
+ blk_queue_write_cache
+ blk_register_region
+ blk_rq_map_kern
+ blk_rq_map_user
+ blk_rq_map_user_iov
+ blk_rq_unmap_user
+ blk_set_queue_dying
+ blk_set_stacking_limits
+ blk_start_plug
+ blk_status_to_errno
+ blk_sync_queue
+ blk_unregister_region
+ blk_update_request
+ blk_verify_command
+ blkcg_activate_policy
+ blkcg_deactivate_policy
+ blkcg_policy_register
+ blkcg_policy_unregister
+ blkcg_root
+ blkdev_fsync
+ blkdev_get_by_dev
+ blkdev_get_by_path
+ blkdev_issue_flush
+ blkdev_put
+ blkg_lookup_slowpath
+ blocking_notifier_call_chain
+ blocking_notifier_chain_register
+ blocking_notifier_chain_unregister
+ bmap
+ bpf_dispatcher_xdp_func
+ bpf_prog_add
+ bpf_prog_put
+ bpf_prog_sub
+ bpf_stats_enabled_key
+ bpf_trace_run1
+ bpf_trace_run10
+ bpf_trace_run11
+ bpf_trace_run12
+ bpf_trace_run2
+ bpf_trace_run3
+ bpf_trace_run4
+ bpf_trace_run5
+ bpf_trace_run6
+ bpf_trace_run7
+ bpf_trace_run8
+ bpf_trace_run9
+ bpf_warn_invalid_xdp_action
+ bsearch
+ bt_err
+ bt_info
+ build_skb
+ bus_find_device
+ bus_for_each_dev
+ bus_for_each_drv
+ bus_register
+ bus_register_notifier
+ bus_set_iommu
+ bus_unregister
+ bus_unregister_notifier
+ cache_line_size
+ call_netdevice_notifiers
+ call_rcu
+ call_rcu_tasks
+ call_rcu_tasks_trace
+ call_srcu
+ cancel_delayed_work
+ cancel_delayed_work_sync
+ cancel_work_sync
+ capable
+ cdc_ncm_bind_common
+ cdc_ncm_change_mtu
+ cdc_ncm_fill_tx_frame
+ cdc_ncm_rx_verify_ndp16
+ cdc_ncm_rx_verify_nth16
+ cdc_ncm_select_altsetting
+ cdc_ncm_unbind
+ cdc_parse_cdc_header
+ cdev_add
+ cdev_alloc
+ cdev_del
+ cdev_device_add
+ cdev_device_del
+ cdev_init
+ cec_allocate_adapter
+ cec_delete_adapter
+ cec_received_msg_ts
+ cec_register_adapter
+ cec_s_log_addrs
+ cec_s_phys_addr
+ cec_s_phys_addr_from_edid
+ cec_transmit_attempt_done_ts
+ cec_transmit_done_ts
+ cec_unregister_adapter
+ cgroup_path_ns
+ cgroup_taskset_first
+ cgroup_taskset_next
+ check_preempt_curr
+ check_zeroed_user
+ class_create_file_ns
+ class_destroy
+ class_find_device
+ class_for_each_device
+ class_interface_unregister
+ class_remove_file_ns
+ class_unregister
+ cleancache_register_ops
+ cleanup_srcu_struct
+ clear_page
+ clk_bulk_disable
+ clk_bulk_enable
+ clk_bulk_get_all
+ clk_bulk_prepare
+ clk_bulk_put_all
+ clk_bulk_unprepare
+ clk_disable
+ clk_enable
+ clk_fixed_factor_ops
+ clk_fixed_rate_ops
+ clk_get
+ clk_get_parent
+ clk_get_rate
+ clk_hw_get_flags
+ clk_hw_get_name
+ clk_hw_get_num_parents
+ clk_hw_get_parent
+ clk_hw_get_parent_by_index
+ clk_hw_get_rate
+ clk_hw_is_enabled
+ clk_hw_is_prepared
+ clk_hw_register
+ clk_hw_register_fixed_factor
+ clk_hw_round_rate
+ clk_hw_set_rate_range
+ clk_hw_unregister
+ clk_hw_unregister_divider
+ clk_hw_unregister_fixed_factor
+ clk_hw_unregister_gate
+ clk_hw_unregister_mux
+ clk_notifier_register
+ clk_notifier_unregister
+ clk_prepare
+ clk_put
+ clk_register
+ clk_register_clkdev
+ clk_register_fixed_factor
+ clk_register_fixed_rate
+ clk_register_gate
+ clk_round_rate
+ clk_set_parent
+ clk_set_rate
+ clk_sync_state
+ clk_unprepare
+ clk_unregister
+ clockevents_config_and_register
+ clocks_calc_mult_shift
+ cma_alloc
+ cma_for_each_area
+ cma_get_name
+ cma_release
+ compat_alloc_user_space
+ compat_only_sysfs_link_entry_to_kobj
+ compat_ptr_ioctl
+ complete
+ complete_all
+ complete_and_exit
+ completion_done
+ component_add
+ component_bind_all
+ component_del
+ component_master_add_with_match
+ component_master_del
+ component_match_add_release
+ component_unbind_all
+ cond_synchronize_rcu
+ config_ep_by_speed
+ config_group_init
+ config_group_init_type_name
+ config_item_get
+ config_item_put
+ configfs_register_subsystem
+ configfs_unregister_subsystem
+ console_drivers
+ console_printk
+ console_stop
+ console_suspend_enabled
+ console_trylock
+ console_unlock
+ consume_skb
+ contig_page_data
+ copy_from_kernel_nofault
+ copy_page
+ cpu_all_bits
+ cpu_bit_bitmap
+ cpu_hotplug_disable
+ cpu_hotplug_enable
+ cpu_hwcap_keys
+ cpu_hwcaps
+ cpu_irqtime
+ cpu_is_hotpluggable
+ cpu_latency_qos_add_request
+ cpu_latency_qos_remove_request
+ cpu_latency_qos_request_active
+ cpu_latency_qos_update_request
+ cpu_number
+ cpu_pm_register_notifier
+ cpu_pm_unregister_notifier
+ cpu_scale
+ cpu_subsys
+ cpu_topology
+ cpufreq_add_update_util_hook
+ cpufreq_cpu_get
+ cpufreq_cpu_get_raw
+ cpufreq_cpu_put
+ cpufreq_disable_fast_switch
+ cpufreq_driver_fast_switch
+ cpufreq_driver_resolve_freq
+ cpufreq_enable_boost_support
+ cpufreq_enable_fast_switch
+ cpufreq_freq_attr_scaling_available_freqs
+ cpufreq_freq_attr_scaling_boost_freqs
+ cpufreq_freq_transition_begin
+ cpufreq_freq_transition_end
+ cpufreq_frequency_table_verify
+ cpufreq_generic_attr
+ cpufreq_generic_frequency_table_verify
+ cpufreq_generic_get
+ cpufreq_generic_suspend
+ cpufreq_get_driver_data
+ cpufreq_get_policy
+ cpufreq_policy_transition_delay_us
+ cpufreq_quick_get
+ cpufreq_quick_get_max
+ cpufreq_register_driver
+ cpufreq_register_governor
+ cpufreq_register_notifier
+ cpufreq_remove_update_util_hook
+ cpufreq_table_index_unsorted
+ cpufreq_this_cpu_can_update
+ cpufreq_unregister_driver
+ cpufreq_unregister_notifier
+ cpufreq_update_policy
+ cpuhp_tasks_frozen
+ cpuidle_governor_latency_req
+ cpuidle_register_governor
+ cpumask_any_but
+ cpumask_next
+ cpumask_next_and
+ cpumask_next_wrap
+ cpupri_find_fitness
+ cpus_read_lock
+ cpus_read_unlock
+ crc16
+ crc32_le
+ crc8
+ crc8_populate_msb
+ create_function_device
+ crypto_aead_encrypt
+ crypto_aead_setauthsize
+ crypto_aead_setkey
+ crypto_alloc_aead
+ crypto_alloc_base
+ crypto_alloc_shash
+ crypto_alloc_skcipher
+ crypto_cipher_encrypt_one
+ crypto_cipher_setkey
+ crypto_comp_compress
+ crypto_comp_decompress
+ crypto_destroy_tfm
+ crypto_has_alg
+ crypto_register_alg
+ crypto_register_rngs
+ crypto_register_scomp
+ crypto_shash_digest
+ crypto_shash_final
+ crypto_shash_setkey
+ crypto_shash_update
+ crypto_skcipher_decrypt
+ crypto_skcipher_encrypt
+ crypto_skcipher_setkey
+ crypto_unregister_alg
+ crypto_unregister_rngs
+ crypto_unregister_scomp
+ css_next_child
+ css_next_descendant_pre
+ csum_ipv6_magic
+ csum_partial
+ csum_tcpudp_nofold
+ current_time
+ current_work
+ d_add
+ d_alloc_name
+ d_delete
+ d_make_root
+ d_path
+ dapm_pinctrl_event
+ dapm_regulator_event
+ datagram_poll
+ deactivate_task
+ debugfs_attr_read
+ debugfs_attr_write
+ debugfs_create_atomic_t
+ debugfs_create_blob
+ debugfs_create_bool
+ debugfs_create_dir
+ debugfs_create_file
+ debugfs_create_file_unsafe
+ debugfs_create_regset32
+ debugfs_create_size_t
+ debugfs_create_symlink
+ debugfs_create_u16
+ debugfs_create_u32
+ debugfs_create_u64
+ debugfs_create_u8
+ debugfs_create_ulong
+ debugfs_create_x32
+ debugfs_create_x64
+ debugfs_create_x8
+ debugfs_file_get
+ debugfs_file_put
+ debugfs_lookup
+ debugfs_print_regs32
+ debugfs_remove
+ dec_zone_page_state
+ default_llseek
+ deferred_free
+ del_gendisk
+ del_timer
+ del_timer_sync
+ delayed_work_timer_fn
+ desc_to_gpio
+ destroy_workqueue
+ dev_alloc_name
+ dev_close
+ dev_coredumpm
+ dev_coredumpv
+ dev_driver_string
+ dev_err_probe
+ dev_fwnode
+ dev_get_by_index
+ dev_get_by_name
+ dev_get_regmap
+ dev_get_stats
+ dev_mc_sync_multiple
+ dev_mc_unsync
+ dev_open
+ dev_pm_clear_wake_irq
+ dev_pm_domain_attach
+ dev_pm_domain_attach_by_name
+ dev_pm_domain_detach
+ dev_pm_genpd_add_notifier
+ dev_pm_genpd_remove_notifier
+ dev_pm_genpd_set_next_wakeup
+ dev_pm_genpd_set_performance_state
+ dev_pm_opp_add
+ dev_pm_opp_adjust_voltage
+ dev_pm_opp_disable
+ dev_pm_opp_enable
+ dev_pm_opp_find_freq_ceil
+ dev_pm_opp_find_freq_ceil_by_volt
+ dev_pm_opp_find_freq_exact
+ dev_pm_opp_find_freq_floor
+ dev_pm_opp_free_cpufreq_table
+ dev_pm_opp_get_freq
+ dev_pm_opp_get_level
+ dev_pm_opp_get_max_transition_latency
+ dev_pm_opp_get_opp_count
+ dev_pm_opp_get_opp_table
+ dev_pm_opp_get_sharing_cpus
+ dev_pm_opp_get_suspend_opp_freq
+ dev_pm_opp_get_voltage
+ dev_pm_opp_init_cpufreq_table
+ dev_pm_opp_of_add_table
+ dev_pm_opp_of_cpumask_add_table
+ dev_pm_opp_of_cpumask_remove_table
+ dev_pm_opp_of_find_icc_paths
+ dev_pm_opp_of_get_sharing_cpus
+ dev_pm_opp_of_register_em
+ dev_pm_opp_of_remove_table
+ dev_pm_opp_put
+ dev_pm_opp_put_clkname
+ dev_pm_opp_put_opp_table
+ dev_pm_opp_put_regulators
+ dev_pm_opp_register_notifier
+ dev_pm_opp_remove_all_dynamic
+ dev_pm_opp_set_bw
+ dev_pm_opp_set_clkname
+ dev_pm_opp_set_rate
+ dev_pm_opp_set_regulators
+ dev_pm_opp_set_sharing_cpus
+ dev_pm_opp_set_supported_hw
+ dev_pm_opp_unregister_notifier
+ dev_pm_qos_add_notifier
+ dev_pm_qos_add_request
+ dev_pm_qos_expose_latency_tolerance
+ dev_pm_qos_hide_latency_tolerance
+ dev_pm_qos_read_value
+ dev_pm_qos_remove_notifier
+ dev_pm_qos_remove_request
+ dev_pm_qos_update_request
+ dev_pm_qos_update_user_latency_tolerance
+ dev_pm_set_dedicated_wake_irq
+ dev_printk
+ dev_printk_emit
+ dev_queue_xmit
+ dev_set_mtu
+ dev_set_name
+ dev_uc_sync_multiple
+ dev_uc_unsync
+ devfreq_add_device
+ devfreq_add_governor
+ devfreq_cooling_unregister
+ devfreq_get_devfreq_by_phandle
+ devfreq_monitor_resume
+ devfreq_monitor_start
+ devfreq_monitor_stop
+ devfreq_monitor_suspend
+ devfreq_recommended_opp
+ devfreq_register_opp_notifier
+ devfreq_remove_device
+ devfreq_remove_governor
+ devfreq_resume_device
+ devfreq_suspend_device
+ devfreq_unregister_opp_notifier
+ devfreq_update_interval
+ device_add
+ device_add_disk
+ device_add_groups
+ device_attach
+ device_bind_driver
+ device_create
+ device_create_bin_file
+ device_create_file
+ device_create_with_groups
+ device_del
+ device_destroy
+ device_find_child
+ device_for_each_child
+ device_get_child_node_count
+ device_get_dma_attr
+ device_get_mac_address
+ device_get_match_data
+ device_get_named_child_node
+ device_get_next_child_node
+ device_init_wakeup
+ device_initialize
+ device_link_add
+ device_link_del
+ device_match_fwnode
+ device_match_name
+ device_match_of_node
+ device_property_present
+ device_property_read_string
+ device_property_read_string_array
+ device_property_read_u16_array
+ device_property_read_u32_array
+ device_property_read_u8_array
+ device_register
+ device_release_driver
+ device_remove_bin_file
+ device_remove_file
+ device_remove_file_self
+ device_remove_groups
+ device_set_wakeup_capable
+ device_set_wakeup_enable
+ device_show_bool
+ device_show_int
+ device_store_bool
+ device_store_int
+ device_unregister
+ device_wakeup_disable
+ device_wakeup_enable
+ devm_add_action
+ devm_backlight_device_register
+ devm_backlight_device_unregister
+ devm_blk_ksm_init
+ devm_clk_bulk_get
+ devm_clk_bulk_get_all
+ devm_clk_bulk_get_optional
+ devm_clk_get
+ devm_clk_get_optional
+ devm_clk_hw_register
+ devm_clk_hw_register_clkdev
+ devm_clk_put
+ devm_clk_register
+ devm_devfreq_add_device
+ devm_devfreq_register_notifier
+ devm_devfreq_unregister_notifier
+ devm_device_add_group
+ devm_device_add_groups
+ devm_device_remove_group
+ devm_drm_panel_bridge_add_typed
+ devm_extcon_dev_allocate
+ devm_extcon_dev_register
+ devm_extcon_dev_unregister
+ devm_extcon_register_notifier
+ devm_free_irq
+ devm_free_percpu
+ devm_gen_pool_create
+ devm_get_clk_from_child
+ devm_gpio_free
+ devm_gpio_request
+ devm_gpio_request_one
+ devm_gpiochip_add_data_with_key
+ devm_gpiod_get
+ devm_gpiod_get_array
+ devm_gpiod_get_index
+ devm_gpiod_get_optional
+ devm_gpiod_put_array
+ devm_hwrng_register
+ devm_hwspin_lock_register
+ devm_i2c_new_dummy_device
+ devm_iio_channel_get
+ devm_iio_device_alloc
+ devm_input_allocate_device
+ devm_ioremap
+ devm_ioremap_resource
+ devm_ioremap_wc
+ devm_iounmap
+ devm_kasprintf
+ devm_kfree
+ devm_kmalloc
+ devm_kmemdup
+ devm_kstrdup
+ devm_kstrdup_const
+ devm_kvasprintf
+ devm_led_classdev_register_ext
+ devm_mbox_controller_register
+ devm_memremap
+ devm_mfd_add_devices
+ devm_nvmem_cell_get
+ devm_nvmem_device_get
+ devm_nvmem_register
+ devm_of_clk_add_hw_provider
+ devm_of_icc_get
+ devm_of_iomap
+ devm_of_platform_populate
+ devm_of_pwm_get
+ devm_pci_alloc_host_bridge
+ devm_phy_create
+ devm_phy_get
+ devm_phy_put
+ devm_pinctrl_get
+ devm_pinctrl_put
+ devm_pinctrl_register
+ devm_pinctrl_register_and_init
+ devm_platform_get_and_ioremap_resource
+ devm_platform_ioremap_resource
+ devm_platform_ioremap_resource_byname
+ devm_power_supply_register
+ devm_pwm_put
+ devm_regmap_add_irq_chip
+ devm_regmap_del_irq_chip
+ devm_regmap_field_alloc
+ devm_regulator_bulk_get
+ devm_regulator_get
+ devm_regulator_get_exclusive
+ devm_regulator_get_optional
+ devm_regulator_put
+ devm_regulator_register
+ devm_regulator_register_notifier
+ devm_request_any_context_irq
+ devm_request_threaded_irq
+ devm_reset_control_array_get
+ devm_reset_controller_register
+ devm_rtc_allocate_device
+ devm_rtc_device_register
+ devm_snd_dmaengine_pcm_register
+ devm_snd_soc_register_card
+ devm_snd_soc_register_component
+ devm_spi_register_controller
+ devm_thermal_of_cooling_device_register
+ devm_thermal_zone_of_sensor_register
+ devm_thermal_zone_of_sensor_unregister
+ devm_usb_get_phy
+ devm_usb_get_phy_by_node
+ devm_usb_get_phy_by_phandle
+ devm_watchdog_register_device
+ devres_add
+ devres_alloc_node
+ devres_free
+ devres_release
+ disable_irq
+ disable_irq_nosync
+ disable_percpu_irq
+ disk_end_io_acct
+ disk_start_io_acct
+ divider_get_val
+ divider_recalc_rate
+ divider_ro_round_rate_parent
+ divider_round_rate_parent
+ dma_alloc_attrs
+ dma_async_device_register
+ dma_async_device_unregister
+ dma_async_tx_descriptor_init
+ dma_buf_attach
+ dma_buf_begin_cpu_access
+ dma_buf_begin_cpu_access_partial
+ dma_buf_detach
+ dma_buf_dynamic_attach
+ dma_buf_end_cpu_access
+ dma_buf_end_cpu_access_partial
+ dma_buf_export
+ dma_buf_fd
+ dma_buf_get
+ dma_buf_get_flags
+ dma_buf_map_attachment
+ dma_buf_mmap
+ dma_buf_move_notify
+ dma_buf_pin
+ dma_buf_put
+ dma_buf_unmap_attachment
+ dma_buf_unpin
+ dma_buf_vmap
+ dma_buf_vunmap
+ dma_contiguous_default_area
+ dma_fence_add_callback
+ dma_fence_array_create
+ dma_fence_array_ops
+ dma_fence_context_alloc
+ dma_fence_default_wait
+ dma_fence_enable_sw_signaling
+ dma_fence_free
+ dma_fence_get_status
+ dma_fence_get_stub
+ dma_fence_init
+ dma_fence_match_context
+ dma_fence_release
+ dma_fence_remove_callback
+ dma_fence_signal
+ dma_fence_signal_locked
+ dma_fence_wait_any_timeout
+ dma_fence_wait_timeout
+ dma_free_attrs
+ dma_get_merge_boundary
+ dma_get_required_mask
+ dma_get_sgtable_attrs
+ dma_get_slave_caps
+ dma_get_slave_channel
+ dma_heap_add
+ dma_heap_buffer_alloc
+ dma_heap_buffer_free
+ dma_heap_find
+ dma_heap_get_dev
+ dma_heap_get_drvdata
+ dma_heap_get_name
+ dma_heap_put
+ dma_map_page_attrs
+ dma_map_resource
+ dma_map_sg_attrs
+ dma_max_mapping_size
+ dma_mmap_attrs
+ dma_pool_alloc
+ dma_pool_create
+ dma_pool_destroy
+ dma_pool_free
+ dma_release_channel
+ dma_request_chan
+ dma_resv_add_excl_fence
+ dma_resv_add_shared_fence
+ dma_resv_fini
+ dma_resv_get_fences_rcu
+ dma_resv_init
+ dma_resv_reserve_shared
+ dma_resv_test_signaled_rcu
+ dma_resv_wait_timeout_rcu
+ dma_set_coherent_mask
+ dma_set_mask
+ dma_sync_sg_for_cpu
+ dma_sync_sg_for_device
+ dma_sync_single_for_cpu
+ dma_sync_single_for_device
+ dma_unmap_page_attrs
+ dma_unmap_resource
+ dma_unmap_sg_attrs
+ dmabuf_page_pool_alloc
+ dmabuf_page_pool_create
+ dmabuf_page_pool_destroy
+ dmabuf_page_pool_free
+ dmaengine_unmap_put
+ dmam_alloc_attrs
+ dmam_free_coherent
+ dmam_pool_create
+ do_SAK
+ do_exit
+ do_trace_rcu_torture_read
+ do_wait_intr
+ do_wait_intr_irq
+ down
+ down_interruptible
+ down_read
+ down_read_killable
+ down_read_trylock
+ down_timeout
+ down_trylock
+ down_write
+ downgrade_write
+ dput
+ drain_workqueue
+ driver_attach
+ driver_create_file
+ driver_find_device
+ driver_register
+ driver_remove_file
+ driver_unregister
+ drm_add_edid_modes
+ drm_add_modes_noedid
+ drm_atomic_add_affected_connectors
+ drm_atomic_add_affected_planes
+ drm_atomic_commit
+ drm_atomic_get_connector_state
+ drm_atomic_get_crtc_state
+ drm_atomic_get_new_connector_for_encoder
+ drm_atomic_get_plane_state
+ drm_atomic_get_private_obj_state
+ drm_atomic_helper_bridge_destroy_state
+ drm_atomic_helper_bridge_duplicate_state
+ drm_atomic_helper_bridge_reset
+ drm_atomic_helper_check
+ drm_atomic_helper_check_modeset
+ drm_atomic_helper_check_plane_state
+ drm_atomic_helper_check_planes
+ drm_atomic_helper_cleanup_planes
+ drm_atomic_helper_commit
+ drm_atomic_helper_commit_cleanup_done
+ drm_atomic_helper_commit_duplicated_state
+ drm_atomic_helper_commit_hw_done
+ drm_atomic_helper_commit_modeset_disables
+ drm_atomic_helper_commit_modeset_enables
+ drm_atomic_helper_commit_planes
+ drm_atomic_helper_commit_tail
+ drm_atomic_helper_connector_destroy_state
+ drm_atomic_helper_connector_duplicate_state
+ drm_atomic_helper_connector_reset
+ drm_atomic_helper_crtc_destroy_state
+ drm_atomic_helper_crtc_duplicate_state
+ drm_atomic_helper_crtc_reset
+ drm_atomic_helper_damage_merged
+ drm_atomic_helper_dirtyfb
+ drm_atomic_helper_disable_plane
+ drm_atomic_helper_disable_planes_on_crtc
+ drm_atomic_helper_duplicate_state
+ 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_prepare_planes
+ drm_atomic_helper_set_config
+ drm_atomic_helper_setup_commit
+ drm_atomic_helper_shutdown
+ drm_atomic_helper_swap_state
+ drm_atomic_helper_update_legacy_modeset_state
+ drm_atomic_helper_update_plane
+ drm_atomic_helper_wait_for_dependencies
+ drm_atomic_helper_wait_for_fences
+ drm_atomic_helper_wait_for_flip_done
+ drm_atomic_helper_wait_for_vblanks
+ drm_atomic_normalize_zpos
+ drm_atomic_private_obj_fini
+ drm_atomic_private_obj_init
+ drm_atomic_set_crtc_for_connector
+ drm_atomic_set_crtc_for_plane
+ drm_atomic_set_fb_for_plane
+ drm_atomic_set_fence_for_plane
+ drm_atomic_set_mode_for_crtc
+ drm_atomic_state_alloc
+ drm_atomic_state_clear
+ drm_atomic_state_default_clear
+ drm_atomic_state_default_release
+ drm_atomic_state_init
+ drm_bridge_add
+ drm_bridge_attach
+ drm_bridge_chain_disable
+ drm_bridge_chain_enable
+ drm_bridge_chain_mode_set
+ drm_bridge_chain_post_disable
+ drm_bridge_chain_pre_enable
+ drm_bridge_hpd_notify
+ drm_bridge_remove
+ drm_client_init
+ drm_client_modeset_commit_locked
+ drm_client_register
+ drm_compat_ioctl
+ drm_connector_attach_dp_subconnector_property
+ drm_connector_attach_edid_property
+ drm_connector_attach_encoder
+ drm_connector_cleanup
+ drm_connector_has_possible_encoder
+ drm_connector_init
+ drm_connector_init_with_ddc
+ drm_connector_list_iter_begin
+ 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_arm_vblank_event
+ drm_crtc_cleanup
+ drm_crtc_enable_color_mgmt
+ drm_crtc_from_index
+ drm_crtc_handle_vblank
+ drm_crtc_helper_set_config
+ drm_crtc_helper_set_mode
+ drm_crtc_init
+ drm_crtc_init_with_planes
+ drm_crtc_send_vblank_event
+ drm_crtc_set_max_vblank_count
+ drm_crtc_vblank_count
+ drm_crtc_vblank_count_and_time
+ drm_crtc_vblank_get
+ drm_crtc_vblank_helper_get_vblank_timestamp
+ drm_crtc_vblank_off
+ drm_crtc_vblank_on
+ drm_crtc_vblank_put
+ drm_crtc_vblank_reset
+ drm_crtc_wait_one_vblank
+ drm_cvt_mode
+ drm_debugfs_create_files
+ drm_detect_hdmi_monitor
+ drm_detect_monitor_audio
+ drm_dev_alloc
+ drm_dev_dbg
+ drm_dev_enter
+ drm_dev_exit
+ drm_dev_get
+ drm_dev_printk
+ drm_dev_put
+ drm_dev_register
+ drm_dev_set_unique
+ drm_dev_unplug
+ drm_dev_unregister
+ drm_display_mode_to_videomode
+ drm_do_get_edid
+ drm_dp_atomic_find_vcpi_slots
+ drm_dp_atomic_release_vcpi_slots
+ drm_dp_aux_init
+ 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_find_vcpi_slots
+ drm_dp_get_adjust_request_pre_emphasis
+ drm_dp_get_adjust_request_voltage
+ drm_dp_get_edid_quirks
+ drm_dp_link_rate_to_bw_code
+ 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_get_edid
+ drm_dp_mst_get_port_malloc
+ drm_dp_mst_hpd_irq
+ drm_dp_mst_put_port_malloc
+ drm_dp_mst_reset_vcpi_slots
+ drm_dp_mst_topology_mgr_destroy
+ drm_dp_mst_topology_mgr_init
+ drm_dp_mst_topology_mgr_set_mst
+ drm_dp_send_power_updown_phy
+ drm_dp_set_subconnector_property
+ drm_dp_update_payload_part1
+ drm_dp_update_payload_part2
+ drm_edid_block_valid
+ drm_edid_duplicate
+ drm_edid_get_monitor_name
+ drm_edid_header_is_valid
+ drm_edid_is_valid
+ drm_edid_to_sad
+ drm_edid_to_speaker_allocation
+ drm_encoder_cleanup
+ drm_encoder_init
+ drm_event_cancel_free
+ drm_event_reserve_init
+ drm_event_reserve_init_locked
+ drm_fb_cma_get_gem_obj
+ drm_flip_work_cleanup
+ drm_flip_work_commit
+ drm_flip_work_init
+ drm_flip_work_queue
+ drm_format_info
+ drm_framebuffer_cleanup
+ drm_framebuffer_init
+ drm_framebuffer_lookup
+ drm_framebuffer_remove
+ drm_framebuffer_unregister_private
+ drm_gem_cma_dumb_create_internal
+ drm_gem_cma_free_object
+ drm_gem_cma_mmap
+ drm_gem_cma_prime_get_sg_table
+ drm_gem_cma_prime_import_sg_table
+ drm_gem_cma_prime_mmap
+ drm_gem_cma_prime_vmap
+ drm_gem_cma_prime_vunmap
+ drm_gem_cma_vm_ops
+ drm_gem_create_mmap_offset
+ drm_gem_dmabuf_mmap
+ drm_gem_dmabuf_release
+ drm_gem_dmabuf_vmap
+ drm_gem_dmabuf_vunmap
+ drm_gem_fb_create
+ drm_gem_fb_create_handle
+ drm_gem_fb_destroy
+ drm_gem_fb_get_obj
+ drm_gem_fb_prepare_fb
+ drm_gem_free_mmap_offset
+ drm_gem_get_pages
+ drm_gem_handle_create
+ drm_gem_lock_reservations
+ drm_gem_map_attach
+ drm_gem_map_detach
+ drm_gem_map_dma_buf
+ drm_gem_mmap
+ drm_gem_mmap_obj
+ drm_gem_object_free
+ drm_gem_object_init
+ drm_gem_object_lookup
+ drm_gem_object_put_locked
+ drm_gem_object_release
+ drm_gem_prime_export
+ drm_gem_prime_fd_to_handle
+ drm_gem_prime_handle_to_fd
+ drm_gem_prime_import
+ drm_gem_prime_import_dev
+ drm_gem_prime_mmap
+ drm_gem_private_object_init
+ drm_gem_put_pages
+ drm_gem_shmem_create
+ drm_gem_shmem_free_object
+ drm_gem_shmem_get_sg_table
+ drm_gem_shmem_mmap
+ drm_gem_shmem_pin
+ drm_gem_shmem_print_info
+ drm_gem_shmem_unpin
+ drm_gem_shmem_vmap
+ drm_gem_shmem_vunmap
+ drm_gem_unlock_reservations
+ drm_gem_unmap_dma_buf
+ drm_gem_vm_close
+ drm_gem_vm_open
+ drm_get_connector_status_name
+ drm_get_edid
+ drm_get_format_info
+ drm_get_format_name
+ drm_handle_vblank
+ drm_hdmi_avi_infoframe_from_display_mode
+ drm_helper_connector_dpms
+ drm_helper_disable_unused_functions
+ drm_helper_force_disable_all
+ drm_helper_hpd_irq_event
+ drm_helper_mode_fill_fb_struct
+ drm_helper_probe_single_connector_modes
+ drm_helper_resume_force_mode
+ drm_ioctl
+ drm_irq_install
+ drm_irq_uninstall
+ drm_is_current_master
+ drm_kms_helper_hotplug_event
+ drm_kms_helper_is_poll_worker
+ drm_kms_helper_poll_disable
+ drm_kms_helper_poll_enable
+ drm_kms_helper_poll_fini
+ drm_kms_helper_poll_init
+ drm_match_cea_mode
+ drm_mm_init
+ drm_mm_insert_node_in_range
+ drm_mm_print
+ drm_mm_remove_node
+ drm_mm_takedown
+ drm_mode_config_cleanup
+ drm_mode_config_helper_resume
+ drm_mode_config_helper_suspend
+ drm_mode_config_reset
+ drm_mode_convert_to_umode
+ drm_mode_convert_umode
+ drm_mode_copy
+ drm_mode_create
+ drm_mode_create_dp_colorspace_property
+ drm_mode_create_scaling_mode_property
+ drm_mode_create_tile_group
+ drm_mode_crtc_set_gamma_size
+ drm_mode_debug_printmodeline
+ drm_mode_destroy
+ drm_mode_duplicate
+ drm_mode_equal
+ drm_mode_equal_no_clocks
+ drm_mode_get_tile_group
+ drm_mode_is_420_only
+ drm_mode_match
+ drm_mode_object_find
+ drm_mode_object_get
+ drm_mode_object_put
+ drm_mode_probed_add
+ drm_mode_set_crtcinfo
+ drm_mode_set_name
+ drm_mode_sort
+ drm_mode_vrefresh
+ drm_modeset_acquire_fini
+ drm_modeset_acquire_init
+ drm_modeset_backoff
+ drm_modeset_drop_locks
+ drm_modeset_lock
+ drm_modeset_lock_all
+ drm_modeset_lock_all_ctx
+ drm_modeset_lock_init
+ drm_modeset_unlock
+ drm_modeset_unlock_all
+ drm_need_swiotlb
+ drm_object_attach_property
+ drm_object_property_set_value
+ drm_of_component_match_add
+ drm_of_find_possible_crtcs
+ drm_open
+ drm_panel_add
+ drm_panel_disable
+ drm_panel_enable
+ drm_panel_get_modes
+ drm_panel_init
+ drm_panel_prepare
+ drm_panel_remove
+ drm_panel_unprepare
+ drm_plane_cleanup
+ drm_plane_create_alpha_property
+ drm_plane_create_blend_mode_property
+ drm_plane_create_rotation_property
+ drm_plane_create_zpos_property
+ drm_plane_enable_fb_damage_clips
+ drm_poll
+ drm_prime_gem_destroy
+ drm_prime_pages_to_sg
+ drm_prime_sg_to_page_addr_arrays
+ drm_printf
+ drm_property_blob_get
+ drm_property_blob_put
+ drm_property_create
+ drm_property_create_bitmask
+ drm_property_create_blob
+ drm_property_create_bool
+ drm_property_create_enum
+ drm_property_create_range
+ drm_property_create_signed_range
+ drm_property_lookup_blob
+ drm_property_replace_blob
+ drm_puts
+ drm_read
+ drm_rect_calc_hscale
+ drm_rect_calc_vscale
+ drm_rect_clip_scaled
+ drm_rect_intersect
+ drm_release
+ drm_rotation_simplify
+ drm_send_event
+ drm_send_event_locked
+ drm_set_preferred_mode
+ drm_simple_encoder_init
+ drm_state_dump
+ drm_syncobj_add_point
+ drm_syncobj_create
+ drm_syncobj_find
+ drm_syncobj_find_fence
+ drm_syncobj_free
+ drm_syncobj_get_fd
+ drm_syncobj_get_handle
+ drm_syncobj_replace_fence
+ drm_sysfs_hotplug_event
+ drm_universal_plane_init
+ drm_vblank_init
+ drm_vma_node_allow
+ drm_vma_node_is_allowed
+ drm_vma_node_revoke
+ drm_wait_one_vblank
+ drm_writeback_connector_init
+ drm_writeback_queue_job
+ drm_writeback_signal_completion
+ drmm_kmalloc
+ drmm_mode_config_init
+ dst_release
+ dump_align
+ dump_backtrace
+ dump_emit
+ dump_stack
+ dup_iter
+ dw_handle_msi_irq
+ dw_pcie_host_init
+ dw_pcie_msi_init
+ dw_pcie_own_conf_map_bus
+ dw_pcie_read
+ dw_pcie_setup_rc
+ dw_pcie_write
+ dwc3_send_gadget_ep_cmd
+ dwc3_stop_active_transfer
+ edac_device_add_device
+ edac_device_alloc_ctl_info
+ edac_device_alloc_index
+ edac_device_del_device
+ edac_device_free_ctl_info
+ edac_device_handle_ce_count
+ edac_device_handle_ue_count
+ efi
+ efi_tpm_final_log_size
+ elevator_alloc
+ elv_bio_merge_ok
+ elv_rb_add
+ elv_rb_del
+ elv_rb_find
+ elv_rb_former_request
+ elv_rb_latter_request
+ elv_register
+ elv_rqhash_add
+ elv_rqhash_del
+ elv_unregister
+ emergency_restart
+ enable_irq
+ enable_percpu_irq
+ eth_commit_mac_addr_change
+ eth_mac_addr
+ eth_platform_get_mac_address
+ eth_prepare_mac_addr_change
+ eth_type_trans
+ eth_validate_addr
+ ether_setup
+ ethtool_op_get_link
+ ethtool_op_get_ts_info
+ ethtool_virtdev_set_link_ksettings
+ event_triggers_call
+ eventfd_ctx_fdget
+ eventfd_ctx_fileget
+ eventfd_ctx_put
+ eventfd_ctx_remove_wait_queue
+ eventfd_signal
+ extcon_find_edev_by_node
+ extcon_get_edev_by_phandle
+ extcon_get_edev_name
+ extcon_get_extcon_dev
+ extcon_get_property
+ extcon_get_state
+ extcon_register_notifier
+ extcon_set_property
+ extcon_set_property_capability
+ extcon_set_state_sync
+ extcon_unregister_notifier
+ fasync_helper
+ fd_install
+ fget
+ file_path
+ file_ra_state_init
+ filp_close
+ filp_open_block
+ find_get_pid
+ find_last_bit
+ find_next_bit
+ find_next_zero_bit
+ find_snd_usb_substream
+ find_task_by_vpid
+ find_vma
+ find_vpid
+ finish_wait
+ firmware_request_nowarn
+ fixed_size_llseek
+ flow_keys_basic_dissector
+ flush_dcache_page
+ flush_delayed_work
+ flush_signals
+ flush_work
+ flush_workqueue
+ fput
+ frame_vector_create
+ frame_vector_destroy
+ frame_vector_to_pages
+ free_buffer_head
+ free_io_pgtable_ops
+ free_irq
+ free_netdev
+ free_pages
+ free_pages_exact
+ free_percpu
+ free_percpu_irq
+ freezing_slow_path
+ freq_qos_add_request
+ freq_qos_remove_request
+ freq_qos_update_request
+ freq_scale
+ fs_bio_set
+ fsync_bdev
+ ftrace_dump
+ full_name_hash
+ fwnode_find_reference
+ fwnode_get_name
+ fwnode_get_named_child_node
+ fwnode_get_next_child_node
+ fwnode_gpiod_get_index
+ fwnode_handle_get
+ fwnode_handle_put
+ fwnode_property_present
+ fwnode_property_read_string
+ fwnode_property_read_u32_array
+ fwnode_usb_role_switch_get
+ gcd
+ gen_pool_add_owner
+ gen_pool_alloc_algo_owner
+ gen_pool_avail
+ gen_pool_best_fit
+ gen_pool_create
+ gen_pool_destroy
+ gen_pool_dma_alloc_align
+ gen_pool_dma_zalloc_align
+ gen_pool_first_fit_align
+ gen_pool_first_fit_order_align
+ gen_pool_free_owner
+ gen_pool_has_addr
+ gen_pool_set_algo
+ gen_pool_size
+ gen_pool_virt_to_phys
+ generic_delete_inode
+ generic_device_group
+ generic_file_llseek
+ generic_file_read_iter
+ generic_handle_irq
+ generic_iommu_put_resv_regions
+ generic_mii_ioctl
+ generic_perform_write
+ generic_write_checks
+ genl_notify
+ genl_register_family
+ genl_unregister_family
+ genlmsg_put
+ genphy_read_status
+ genphy_resume
+ genphy_soft_reset
+ genphy_suspend
+ get_cpu_device
+ get_cpu_idle_time
+ get_cpu_idle_time_us
+ get_cpu_iowait_time_us
+ get_device
+ get_device_system_crosststamp
+ get_governor_parent_kobj
+ get_next_ino
+ get_option
+ get_options
+ get_pid_task
+ get_random_bytes
+ get_random_bytes_arch
+ get_random_u32
+ get_random_u64
+ get_sg_io_hdr
+ get_state_synchronize_rcu
+ get_task_exe_file
+ get_task_mm
+ get_task_pid
+ get_thermal_instance
+ get_tree_single
+ get_unmapped_area
+ get_unused_fd_flags
+ get_user_pages
+ get_user_pages_fast
+ get_user_pages_remote
+ get_vaddr_frames
+ get_zeroed_page
+ getboottime64
+ gfp_zone
+ gic_nonsecure_priorities
+ glob_match
+ gnss_allocate_device
+ gnss_deregister_device
+ gnss_insert_raw
+ gnss_put_device
+ gnss_register_device
+ gov_attr_set_get
+ gov_attr_set_init
+ gov_attr_set_put
+ governor_sysfs_ops
+ gpio_free
+ gpio_free_array
+ gpio_request
+ gpio_request_one
+ gpio_to_desc
+ gpiochip_add_data_with_key
+ gpiochip_add_pin_range
+ gpiochip_find
+ gpiochip_generic_config
+ gpiochip_generic_free
+ gpiochip_generic_request
+ gpiochip_get_data
+ gpiochip_line_is_valid
+ gpiochip_lock_as_irq
+ gpiochip_populate_parent_fwspec_fourcell
+ gpiochip_remove
+ gpiochip_unlock_as_irq
+ gpiod_cansleep
+ gpiod_count
+ gpiod_direction_input
+ gpiod_direction_output
+ gpiod_direction_output_raw
+ gpiod_get_optional
+ gpiod_get_raw_value
+ gpiod_get_raw_value_cansleep
+ gpiod_get_value
+ gpiod_get_value_cansleep
+ gpiod_set_consumer_name
+ gpiod_set_debounce
+ gpiod_set_raw_value
+ gpiod_set_raw_value_cansleep
+ gpiod_set_value
+ gpiod_set_value_cansleep
+ gpiod_to_chip
+ gpiod_to_irq
+ gro_cells_destroy
+ gro_cells_init
+ gro_cells_receive
+ gserial_alloc_line
+ gserial_connect
+ gserial_disconnect
+ guid_gen
+ handle_bad_irq
+ handle_edge_irq
+ handle_fasteoi_ack_irq
+ handle_fasteoi_irq
+ handle_level_irq
+ handle_nested_irq
+ handle_simple_irq
+ handle_sysrq
+ hash_digest_size
+ hashlen_string
+ have_governor_per_policy
+ hci_alloc_dev
+ hci_free_dev
+ hci_recv_frame
+ hci_register_dev
+ hci_unregister_dev
+ hdmi_audio_infoframe_init
+ hdmi_audio_infoframe_pack
+ hdmi_avi_infoframe_init
+ hdmi_avi_infoframe_pack
+ hdmi_infoframe_pack
+ hex2bin
+ hex_dump_to_buffer
+ hex_to_bin
+ hid_hw_close
+ hid_hw_open
+ hid_hw_start
+ hid_hw_stop
+ hid_open_report
+ hid_report_raw_event
+ hid_unregister_driver
+ hmm_range_fault
+ hrtimer_active
+ hrtimer_cancel
+ hrtimer_forward
+ hrtimer_init
+ hrtimer_init_sleeper
+ hrtimer_sleeper_start_expires
+ hrtimer_start_range_ns
+ hrtimer_try_to_cancel
+ hvc_alloc
+ hvc_instantiate
+ hvc_kick
+ hvc_poll
+ hvc_remove
+ hwrng_register
+ hwrng_unregister
+ hwspin_lock_free
+ hwspin_lock_request_specific
+ hypervisor_kobj
+ i2c_adapter_type
+ i2c_add_adapter
+ i2c_add_numbered_adapter
+ i2c_bit_add_bus
+ i2c_bit_add_numbered_bus
+ i2c_bus_type
+ i2c_client_type
+ i2c_del_adapter
+ i2c_del_driver
+ i2c_for_each_dev
+ i2c_generic_scl_recovery
+ i2c_get_adapter
+ i2c_get_device_id
+ i2c_get_dma_safe_msg_buf
+ i2c_match_id
+ i2c_new_ancillary_device
+ i2c_new_client_device
+ i2c_new_dummy_device
+ i2c_new_scanned_device
+ i2c_parse_fw_timings
+ i2c_put_adapter
+ i2c_put_dma_safe_msg_buf
+ i2c_recover_bus
+ i2c_register_driver
+ i2c_smbus_read_byte
+ i2c_smbus_read_byte_data
+ i2c_smbus_read_i2c_block_data
+ i2c_smbus_read_word_data
+ i2c_smbus_write_byte
+ i2c_smbus_write_byte_data
+ i2c_smbus_write_i2c_block_data
+ i2c_smbus_write_word_data
+ i2c_smbus_xfer
+ i2c_transfer
+ i2c_transfer_buffer_flags
+ i2c_unregister_device
+ i2c_verify_adapter
+ i2c_verify_client
+ icc_disable
+ icc_enable
+ icc_get
+ icc_link_create
+ icc_node_add
+ icc_node_create
+ icc_node_del
+ icc_node_destroy
+ icc_nodes_remove
+ icc_provider_add
+ icc_provider_del
+ icc_put
+ icc_set_bw
+ icc_set_tag
+ icc_std_aggregate
+ icc_sync_state
+ ida_alloc_range
+ ida_destroy
+ ida_free
+ idr_alloc
+ idr_alloc_cyclic
+ idr_alloc_u32
+ idr_destroy
+ idr_find
+ idr_for_each
+ idr_get_next
+ idr_preload
+ idr_remove
+ idr_replace
+ ieee802154_alloc_hw
+ ieee802154_free_hw
+ ieee802154_register_hw
+ ieee802154_rx_irqsafe
+ ieee802154_unregister_hw
+ ieee802154_wake_queue
+ ieee802154_xmit_complete
+ iio_buffer_init
+ iio_buffer_put
+ iio_channel_get
+ iio_channel_get_all
+ iio_channel_release
+ iio_device_alloc
+ iio_device_attach_buffer
+ iio_device_free
+ iio_device_unregister
+ iio_push_to_buffers
+ iio_read_channel_processed
+ iio_read_channel_raw
+ import_iovec
+ in4_pton
+ in6_dev_finish_destroy
+ in6_pton
+ in_aton
+ in_egroup_p
+ inc_zone_page_state
+ inet_proto_csum_replace4
+ init_dummy_netdev
+ init_iova_domain
+ init_net
+ init_on_free
+ init_pid_ns
+ init_pseudo
+ init_srcu_struct
+ init_task
+ init_timer_key
+ init_uts_ns
+ init_wait_entry
+ input_alloc_absinfo
+ input_allocate_device
+ input_close_device
+ input_event
+ input_ff_create
+ input_ff_create_memless
+ input_ff_destroy
+ input_free_device
+ input_mt_assign_slots
+ input_mt_destroy_slots
+ input_mt_drop_unused
+ input_mt_init_slots
+ input_mt_report_finger_count
+ input_mt_report_pointer_emulation
+ input_mt_report_slot_state
+ input_mt_sync_frame
+ input_open_device
+ input_register_device
+ input_register_handle
+ input_register_handler
+ input_set_abs_params
+ input_set_capability
+ input_set_timestamp
+ input_unregister_device
+ input_unregister_handle
+ input_unregister_handler
+ int_pow
+ int_sqrt
+ interval_tree_insert
+ interval_tree_iter_first
+ interval_tree_iter_next
+ interval_tree_remove
+ invalidate_bdev
+ invalidate_mapping_pages
+ io_schedule_timeout
+ iomem_resource
+ iommu_alloc_resv_region
+ iommu_attach_device
+ iommu_attach_group
+ iommu_aux_attach_device
+ iommu_aux_detach_device
+ iommu_aux_get_pasid
+ iommu_detach_device
+ iommu_detach_group
+ iommu_dev_enable_feature
+ iommu_dev_feature_enabled
+ iommu_device_register
+ iommu_device_sysfs_add
+ iommu_device_sysfs_remove
+ iommu_device_unlink
+ iommu_device_unregister
+ iommu_dma_enable_best_fit_algo
+ iommu_dma_get_resv_regions
+ iommu_dma_reserve_iova
+ iommu_domain_alloc
+ iommu_domain_free
+ iommu_domain_get_attr
+ iommu_domain_set_attr
+ iommu_fwspec_add_ids
+ iommu_fwspec_free
+ iommu_get_dma_cookie
+ iommu_get_domain_for_dev
+ iommu_get_msi_cookie
+ iommu_group_alloc
+ iommu_group_for_each_dev
+ iommu_group_get
+ iommu_group_get_iommudata
+ iommu_group_put
+ iommu_group_ref_get
+ iommu_group_set_iommudata
+ iommu_group_set_name
+ iommu_iova_to_phys
+ iommu_map
+ iommu_map_sg
+ iommu_present
+ iommu_put_dma_cookie
+ iommu_register_device_fault_handler
+ iommu_report_device_fault
+ iommu_set_fault_handler
+ iommu_unmap
+ iommu_unregister_device_fault_handler
+ iounmap
+ iov_iter_bvec
+ iov_iter_kvec
+ ip_compute_csum
+ ip_send_check
+ ipi_desc_get
+ iput
+ ipv6_ext_hdr
+ ipv6_find_hdr
+ ipv6_skip_exthdr
+ irq_chip_ack_parent
+ irq_chip_disable_parent
+ irq_chip_enable_parent
+ irq_chip_eoi_parent
+ irq_chip_get_parent_state
+ irq_chip_mask_parent
+ irq_chip_retrigger_hierarchy
+ irq_chip_set_affinity_parent
+ irq_chip_set_parent_state
+ irq_chip_set_type_parent
+ irq_chip_set_vcpu_affinity_parent
+ irq_chip_set_wake_parent
+ irq_chip_unmask_parent
+ irq_create_fwspec_mapping
+ irq_create_mapping_affinity
+ irq_create_of_mapping
+ irq_dispose_mapping
+ irq_domain_alloc_irqs_parent
+ irq_domain_create_hierarchy
+ irq_domain_free_irqs_common
+ irq_domain_free_irqs_parent
+ irq_domain_get_irq_data
+ irq_domain_remove
+ irq_domain_set_hwirq_and_chip
+ irq_domain_set_info
+ irq_domain_simple_ops
+ irq_domain_update_bus_token
+ irq_domain_xlate_onecell
+ irq_domain_xlate_onetwocell
+ irq_domain_xlate_twocell
+ irq_find_mapping
+ irq_find_matching_fwspec
+ irq_get_irq_data
+ irq_get_irqchip_state
+ irq_modify_status
+ irq_of_parse_and_map
+ irq_set_affinity_hint
+ irq_set_affinity_notifier
+ irq_set_chained_handler_and_data
+ irq_set_chip
+ irq_set_chip_and_handler_name
+ irq_set_chip_data
+ irq_set_handler_data
+ irq_set_irq_type
+ irq_set_irq_wake
+ irq_set_irqchip_state
+ irq_set_parent
+ irq_to_desc
+ irq_work_queue
+ irq_work_queue_on
+ irq_work_sync
+ is_dma_buf_file
+ is_vmalloc_addr
+ jiffies
+ jiffies64_to_msecs
+ jiffies_64_to_clock_t
+ jiffies_to_msecs
+ jiffies_to_usecs
+ kasan_flag_enabled
+ kasprintf
+ kern_mount
+ kern_unmount
+ kernel_bind
+ kernel_connect
+ kernel_cpustat
+ kernel_getsockname
+ kernel_kobj
+ kernel_power_off
+ kernel_recvmsg
+ kernel_restart
+ kernel_sendmsg
+ kernel_sigaction
+ kernfs_find_and_get_ns
+ kernfs_notify
+ kernfs_path_from_node
+ kernfs_put
+ kfree
+ kfree_const
+ kfree_sensitive
+ kfree_skb
+ kick_all_cpus_sync
+ kill_anon_super
+ kill_fasync
+ kill_litter_super
+ kimage_vaddr
+ kimage_voffset
+ kiocb_set_cancel_fn
+ kmalloc_caches
+ kmalloc_order
+ kmalloc_order_trace
+ kmem_cache_alloc
+ kmem_cache_alloc_trace
+ kmem_cache_create
+ kmem_cache_create_usercopy
+ kmem_cache_destroy
+ kmem_cache_free
+ kmemdup
+ kmemdup_nul
+ kmsg_dump_get_line
+ kmsg_dump_rewind
+ kobj_sysfs_ops
+ kobject_add
+ kobject_create_and_add
+ kobject_del
+ kobject_get
+ kobject_init
+ kobject_init_and_add
+ kobject_put
+ kobject_set_name
+ kobject_uevent
+ kobject_uevent_env
+ krealloc
+ kset_create_and_add
+ kset_unregister
+ ksize
+ ksoftirqd
+ kstat
+ kstat_irqs_cpu
+ kstat_irqs_usr
+ kstrdup
+ kstrdup_const
+ kstrdup_quotable_cmdline
+ kstrndup
+ kstrtobool
+ kstrtobool_from_user
+ kstrtoint
+ kstrtoint_from_user
+ kstrtol_from_user
+ kstrtoll
+ kstrtos8
+ kstrtos8_from_user
+ kstrtou16
+ kstrtou16_from_user
+ kstrtou8
+ kstrtou8_from_user
+ kstrtouint
+ kstrtouint_from_user
+ kstrtoul_from_user
+ kstrtoull
+ kstrtoull_from_user
+ ksys_sync_helper
+ kthread_bind
+ kthread_bind_mask
+ kthread_blkcg
+ kthread_cancel_delayed_work_sync
+ kthread_cancel_work_sync
+ kthread_create_on_node
+ kthread_create_worker
+ kthread_delayed_work_timer_fn
+ kthread_destroy_worker
+ kthread_flush_work
+ kthread_flush_worker
+ kthread_mod_delayed_work
+ kthread_park
+ kthread_parkme
+ kthread_queue_delayed_work
+ kthread_queue_work
+ kthread_should_park
+ kthread_should_stop
+ kthread_stop
+ kthread_unpark
+ kthread_unuse_mm
+ kthread_use_mm
+ kthread_worker_fn
+ ktime_add_safe
+ ktime_get
+ ktime_get_coarse_with_offset
+ ktime_get_mono_fast_ns
+ ktime_get_raw
+ ktime_get_raw_ts64
+ ktime_get_real_seconds
+ ktime_get_real_ts64
+ ktime_get_seconds
+ ktime_get_ts64
+ ktime_get_with_offset
+ kvasprintf
+ kvfree
+ kvfree_call_rcu
+ kvmalloc_node
+ led_classdev_flash_register_ext
+ led_classdev_flash_unregister
+ led_classdev_register_ext
+ led_classdev_unregister
+ led_trigger_event
+ led_trigger_register_simple
+ led_trigger_unregister_simple
+ list_sort
+ llist_add_batch
+ llist_reverse_order
+ lock_sock_nested
+ log_abnormal_wakeup_reason
+ log_buf_addr_get
+ log_buf_len_get
+ log_threaded_irq_wakeup_reason
+ loops_per_jiffy
+ lzo1x_1_compress
+ lzo1x_decompress_safe
+ lzorle1x_1_compress
+ mac_pton
+ match_string
+ mbox_chan_received_data
+ mbox_chan_txdone
+ mbox_client_txdone
+ mbox_controller_register
+ mbox_controller_unregister
+ mbox_free_channel
+ mbox_request_channel
+ mbox_send_message
+ mdiobus_alloc_size
+ mdiobus_free
+ mdiobus_read
+ mdiobus_unregister
+ mdiobus_write
+ media_device_cleanup
+ media_device_init
+ media_device_unregister
+ media_entity_pads_init
+ memblock_end_of_DRAM
+ memblock_free
+ memchr
+ memchr_inv
+ memcmp
+ memcpy
+ memdup_user
+ memdup_user_nul
+ memmove
+ memory_block_size_bytes
+ memory_read_from_buffer
+ memparse
+ mempool_alloc
+ mempool_alloc_slab
+ mempool_create
+ mempool_create_node
+ mempool_destroy
+ mempool_exit
+ mempool_free
+ mempool_free_slab
+ mempool_init
+ mempool_kfree
+ mempool_kmalloc
+ memremap
+ memset
+ memset64
+ memstart_addr
+ memunmap
+ mfd_add_devices
+ mfd_remove_devices
+ migrate_swap
+ mii_check_media
+ mii_ethtool_get_link_ksettings
+ mii_ethtool_gset
+ mii_ethtool_set_link_ksettings
+ mii_link_ok
+ mii_nway_restart
+ mipi_dsi_attach
+ mipi_dsi_compression_mode
+ mipi_dsi_create_packet
+ mipi_dsi_dcs_read
+ mipi_dsi_dcs_set_column_address
+ mipi_dsi_dcs_set_display_brightness
+ mipi_dsi_dcs_set_page_address
+ mipi_dsi_dcs_set_tear_off
+ mipi_dsi_dcs_write_buffer
+ mipi_dsi_detach
+ mipi_dsi_device_register_full
+ mipi_dsi_device_unregister
+ mipi_dsi_driver_register_full
+ mipi_dsi_driver_unregister
+ mipi_dsi_host_register
+ mipi_dsi_host_unregister
+ mipi_dsi_packet_format_is_long
+ mipi_dsi_picture_parameter_set
+ misc_deregister
+ misc_register
+ mktime64
+ mm_trace_rss_stat
+ mmc_add_host
+ mmc_alloc_host
+ mmc_app_cmd
+ mmc_calc_max_discard
+ mmc_can_erase
+ mmc_can_gpio_cd
+ mmc_can_secure_erase_trim
+ mmc_can_trim
+ mmc_cmdq_disable
+ mmc_cmdq_enable
+ mmc_cqe_post_req
+ mmc_cqe_recovery
+ mmc_cqe_request_done
+ mmc_cqe_start_req
+ mmc_detect_card_removed
+ mmc_detect_change
+ mmc_erase
+ mmc_erase_group_aligned
+ mmc_flush_cache
+ mmc_free_host
+ mmc_get_card
+ mmc_get_ext_csd
+ mmc_gpio_get_cd
+ mmc_gpio_get_ro
+ mmc_gpiod_request_cd
+ mmc_gpiod_request_cd_irq
+ mmc_gpiod_request_ro
+ mmc_hw_reset
+ mmc_of_parse
+ mmc_of_parse_voltage
+ mmc_put_card
+ mmc_register_driver
+ mmc_regulator_get_supply
+ mmc_regulator_set_ocr
+ mmc_regulator_set_vqmmc
+ mmc_release_host
+ mmc_remove_host
+ mmc_request_done
+ mmc_retune_pause
+ mmc_retune_release
+ mmc_retune_unpause
+ mmc_run_bkops
+ mmc_sanitize
+ mmc_send_status
+ mmc_send_tuning
+ mmc_set_data_timeout
+ mmc_start_request
+ mmc_switch
+ mmc_unregister_driver
+ mmc_wait_for_cmd
+ mmc_wait_for_req
+ mmput
+ mmu_interval_notifier_insert
+ mmu_interval_notifier_remove
+ mmu_interval_read_begin
+ mmu_notifier_synchronize
+ mod_delayed_work_on
+ mod_node_page_state
+ mod_timer
+ module_layout
+ module_put
+ msleep
+ msleep_interruptible
+ mutex_is_locked
+ mutex_lock
+ mutex_lock_interruptible
+ mutex_trylock
+ mutex_trylock_recursive
+ mutex_unlock
+ name_to_dev_t
+ names_cachep
+ napi_complete_done
+ napi_consume_skb
+ napi_disable
+ napi_gro_flush
+ napi_gro_receive
+ napi_schedule_prep
+ net_namespace_list
+ net_ratelimit
+ netdev_change_features
+ netdev_err
+ netdev_increment_features
+ netdev_info
+ netdev_lower_state_changed
+ netdev_master_upper_dev_link
+ netdev_notify_peers
+ netdev_pick_tx
+ netdev_rx_handler_register
+ netdev_rx_handler_unregister
+ netdev_state_change
+ netdev_update_features
+ netdev_upper_dev_link
+ netdev_upper_dev_unlink
+ netdev_warn
+ netif_carrier_off
+ netif_carrier_on
+ netif_device_attach
+ netif_device_detach
+ netif_napi_add
+ netif_receive_skb
+ netif_receive_skb_list
+ netif_rx
+ netif_rx_ni
+ netif_schedule_queue
+ netif_set_real_num_rx_queues
+ netif_set_real_num_tx_queues
+ netif_stacked_transfer_operstate
+ netif_tx_stop_all_queues
+ netif_tx_wake_queue
+ netlink_ack
+ netlink_broadcast
+ netlink_capable
+ netlink_has_listeners
+ netlink_kernel_release
+ netlink_register_notifier
+ netlink_unicast
+ netlink_unregister_notifier
+ new_inode
+ nf_conntrack_destroy
+ nla_append
+ nla_find
+ nla_memcpy
+ nla_put
+ nla_put_64bit
+ nla_put_nohdr
+ nla_reserve
+ nla_reserve_64bit
+ nla_strlcpy
+ no_llseek
+ no_seek_end_llseek
+ nonseekable_open
+ noop_llseek
+ nr_cpu_ids
+ nr_ipi_get
+ nr_irqs
+ ns_capable
+ ns_to_timespec64
+ nsec_to_clock_t
+ nsecs_to_jiffies
+ nvdimm_bus_register
+ nvdimm_bus_unregister
+ nvdimm_pmem_region_create
+ nvmem_cell_get
+ nvmem_cell_put
+ nvmem_cell_read
+ nvmem_cell_read_u32
+ nvmem_cell_write
+ nvmem_device_put
+ nvmem_device_read
+ nvmem_device_write
+ of_address_to_resource
+ of_alias_get_highest_id
+ of_alias_get_id
+ of_clk_add_hw_provider
+ of_clk_add_provider
+ of_clk_del_provider
+ of_clk_get
+ of_clk_get_by_name
+ of_clk_get_from_provider
+ of_clk_get_parent_count
+ of_clk_get_parent_name
+ of_clk_hw_onecell_get
+ of_clk_hw_simple_get
+ of_clk_set_defaults
+ of_clk_src_onecell_get
+ of_clk_src_simple_get
+ of_count_phandle_with_args
+ of_cpu_node_to_id
+ of_cpufreq_cooling_register
+ of_css
+ of_devfreq_cooling_register
+ of_devfreq_cooling_register_power
+ of_device_get_match_data
+ of_device_is_available
+ of_device_is_compatible
+ of_device_modalias
+ of_device_request_module
+ of_device_uevent_modalias
+ of_dma_configure_id
+ of_dma_controller_free
+ of_dma_controller_register
+ of_dma_is_coherent
+ of_drm_find_bridge
+ of_drm_find_panel
+ of_find_all_nodes
+ of_find_compatible_node
+ of_find_device_by_node
+ of_find_i2c_adapter_by_node
+ of_find_i2c_device_by_node
+ of_find_matching_node_and_match
+ of_find_mipi_dsi_host_by_node
+ of_find_node_by_name
+ of_find_node_by_phandle
+ of_find_node_by_type
+ of_find_node_opts_by_path
+ of_find_node_with_property
+ of_find_property
+ of_fwnode_ops
+ of_genpd_add_provider_onecell
+ of_genpd_add_provider_simple
+ of_genpd_del_provider
+ of_get_address
+ of_get_child_by_name
+ of_get_compatible_child
+ of_get_cpu_node
+ of_get_dma_window
+ of_get_named_gpio_flags
+ of_get_next_available_child
+ of_get_next_child
+ of_get_next_parent
+ of_get_parent
+ of_get_property
+ of_get_regulator_init_data
+ of_graph_get_endpoint_by_regs
+ of_graph_get_next_endpoint
+ of_graph_get_port_parent
+ of_graph_get_remote_endpoint
+ of_graph_get_remote_node
+ of_graph_get_remote_port
+ of_graph_get_remote_port_parent
+ of_graph_is_present
+ of_graph_parse_endpoint
+ of_hwspin_lock_get_id
+ of_i2c_get_board_info
+ of_icc_get
+ of_icc_xlate_onecell
+ of_iomap
+ of_irq_find_parent
+ of_irq_get
+ of_irq_get_byname
+ of_irq_parse_one
+ of_machine_is_compatible
+ of_match_device
+ of_match_node
+ of_modalias_node
+ of_n_addr_cells
+ of_n_size_cells
+ of_node_name_eq
+ of_nvmem_device_get
+ of_parse_phandle
+ of_parse_phandle_with_args
+ of_parse_phandle_with_fixed_args
+ of_phandle_iterator_init
+ of_phandle_iterator_next
+ of_phy_simple_xlate
+ of_platform_depopulate
+ of_platform_device_create
+ of_platform_device_destroy
+ of_platform_populate
+ of_prop_next_string
+ of_prop_next_u32
+ of_property_count_elems_of_size
+ of_property_match_string
+ of_property_read_string
+ of_property_read_string_helper
+ of_property_read_u32_index
+ of_property_read_u64
+ of_property_read_u64_index
+ of_property_read_variable_u16_array
+ of_property_read_variable_u32_array
+ of_property_read_variable_u64_array
+ of_property_read_variable_u8_array
+ of_pwm_xlate_with_flags
+ of_reserved_mem_device_init_by_idx
+ of_reserved_mem_device_release
+ of_reserved_mem_lookup
+ of_reset_control_array_get
+ of_root
+ of_thermal_get_ntrips
+ of_thermal_get_trip_points
+ of_thermal_is_trip_valid
+ of_translate_address
+ of_usb_get_phy_mode
+ of_usb_host_tpl_support
+ on_each_cpu
+ oops_in_progress
+ orderly_poweroff
+ overflowuid
+ page_endio
+ page_mapping
+ page_reporting_register
+ page_reporting_unregister
+ panic
+ panic_notifier_list
+ panic_timeout
+ param_array_ops
+ param_get_int
+ param_get_string
+ param_get_uint
+ param_get_ullong
+ param_ops_bint
+ param_ops_bool
+ param_ops_byte
+ param_ops_charp
+ param_ops_hexint
+ param_ops_int
+ param_ops_long
+ param_ops_short
+ param_ops_string
+ param_ops_uint
+ param_ops_ullong
+ param_ops_ulong
+ param_ops_ushort
+ param_set_bool
+ param_set_copystring
+ param_set_int
+ param_set_uint
+ part_end_io_acct
+ part_start_io_acct
+ passthru_features_check
+ pause_cpus
+ pci_alloc_irq_vectors_affinity
+ pci_assign_resource
+ pci_assign_unassigned_bus_resources
+ pci_bus_resource_n
+ pci_bus_type
+ pci_clear_master
+ pci_d3cold_disable
+ pci_dev_present
+ pci_dev_put
+ pci_device_group
+ pci_device_is_present
+ pci_disable_device
+ pci_disable_msi
+ pci_enable_atomic_ops_to_root
+ pci_enable_device
+ pci_enable_device_mem
+ pci_enable_msi
+ pci_enable_wake
+ pci_find_bus
+ pci_find_capability
+ pci_find_ext_capability
+ pci_find_next_capability
+ pci_free_irq
+ pci_free_irq_vectors
+ pci_generic_config_read
+ pci_generic_config_write
+ pci_get_device
+ pci_get_domain_bus_and_slot
+ pci_get_slot
+ pci_host_probe
+ pci_intx
+ pci_iomap
+ pci_iomap_range
+ pci_ioremap_bar
+ pci_irq_get_affinity
+ pci_irq_vector
+ pci_load_and_free_saved_state
+ pci_load_saved_state
+ pci_map_rom
+ pci_match_id
+ pci_msi_create_irq_domain
+ pci_msi_mask_irq
+ pci_msi_unmask_irq
+ pci_msix_vec_count
+ pci_read_config_byte
+ pci_read_config_dword
+ pci_read_config_word
+ pci_release_region
+ pci_release_regions
+ pci_release_resource
+ pci_release_selected_regions
+ pci_request_irq
+ pci_request_region
+ pci_request_regions
+ pci_request_selected_regions
+ pci_rescan_bus
+ pci_resize_resource
+ pci_restore_msi_state
+ pci_restore_state
+ pci_save_state
+ pci_select_bars
+ pci_set_master
+ pci_set_mwi
+ pci_set_power_state
+ pci_store_saved_state
+ pci_unmap_rom
+ pci_unregister_driver
+ pci_wake_from_d3
+ pci_walk_bus
+ pci_write_config_byte
+ pci_write_config_dword
+ pci_write_config_word
+ pcibios_resource_to_bus
+ pcie_aspm_enabled
+ pcie_bandwidth_available
+ pcie_capability_read_word
+ pcie_capability_write_word
+ pcie_get_mps
+ pcie_get_speed_cap
+ pcim_enable_device
+ per_cpu_ptr_to_phys
+ percpu_down_write
+ percpu_ref_exit
+ percpu_ref_init
+ percpu_ref_is_zero
+ percpu_ref_kill_and_confirm
+ percpu_ref_switch_to_atomic_sync
+ percpu_ref_switch_to_percpu
+ percpu_up_write
+ perf_aux_output_begin
+ perf_aux_output_end
+ perf_aux_output_flag
+ perf_event_addr_filters_sync
+ perf_event_create_kernel_counter
+ perf_event_disable
+ perf_event_enable
+ perf_event_pause
+ perf_event_read_local
+ perf_event_read_value
+ perf_event_release_kernel
+ perf_event_update_userpage
+ perf_get_aux
+ perf_pmu_migrate_context
+ perf_pmu_register
+ perf_pmu_unregister
+ perf_trace_buf_alloc
+ perf_trace_run_bpf_submit
+ pfn_valid
+ phy_attached_info
+ phy_calibrate
+ phy_configure
+ phy_connect
+ phy_connect_direct
+ phy_disconnect
+ phy_do_ioctl_running
+ phy_drivers_register
+ phy_drivers_unregister
+ phy_ethtool_get_link_ksettings
+ phy_ethtool_nway_reset
+ phy_ethtool_set_link_ksettings
+ phy_exit
+ phy_find_first
+ phy_get_pause
+ phy_init
+ phy_init_hw
+ phy_mii_ioctl
+ phy_pm_runtime_get_sync
+ phy_pm_runtime_put_sync
+ phy_power_off
+ phy_power_on
+ phy_print_status
+ phy_set_mode_ext
+ phy_start
+ phy_stop
+ pick_highest_pushable_task
+ pid_nr_ns
+ pid_task
+ pin_get_name
+ pin_user_pages
+ pin_user_pages_fast
+ pin_user_pages_remote
+ pinconf_generic_dt_free_map
+ pinconf_generic_dt_node_to_map
+ pinctrl_add_gpio_range
+ pinctrl_dev_get_drvdata
+ pinctrl_enable
+ pinctrl_force_default
+ pinctrl_force_sleep
+ pinctrl_get
+ pinctrl_lookup_state
+ pinctrl_pm_select_default_state
+ pinctrl_pm_select_idle_state
+ pinctrl_pm_select_sleep_state
+ pinctrl_put
+ pinctrl_remove_gpio_range
+ pinctrl_select_default_state
+ pinctrl_select_state
+ pinctrl_utils_free_map
+ pipe_lock
+ pipe_unlock
+ pktgen_xfrm_outer_mode_output
+ platform_add_devices
+ platform_bus_type
+ platform_device_add
+ platform_device_add_data
+ platform_device_add_properties
+ platform_device_add_resources
+ platform_device_alloc
+ platform_device_del
+ platform_device_put
+ platform_device_register
+ platform_device_register_full
+ platform_device_unregister
+ platform_driver_unregister
+ platform_find_device_by_driver
+ platform_get_irq
+ platform_get_irq_byname
+ platform_get_irq_byname_optional
+ platform_get_irq_optional
+ platform_get_resource
+ platform_get_resource_byname
+ platform_irq_count
+ pm_clk_add
+ pm_clk_create
+ pm_clk_destroy
+ pm_clk_resume
+ pm_clk_suspend
+ pm_generic_resume
+ pm_generic_runtime_resume
+ pm_generic_runtime_suspend
+ pm_generic_suspend
+ pm_genpd_add_subdomain
+ pm_genpd_init
+ pm_genpd_remove
+ pm_genpd_remove_subdomain
+ pm_power_off
+ pm_relax
+ pm_runtime_allow
+ pm_runtime_autosuspend_expiration
+ pm_runtime_barrier
+ pm_runtime_enable
+ pm_runtime_forbid
+ pm_runtime_force_resume
+ pm_runtime_force_suspend
+ pm_runtime_get_if_active
+ pm_runtime_irq_safe
+ pm_runtime_no_callbacks
+ pm_runtime_set_autosuspend_delay
+ pm_stay_awake
+ pm_suspend_global_flags
+ pm_system_wakeup
+ pm_wakeup_dev_event
+ pm_wakeup_ws_event
+ policy_has_boost_freq
+ power_supply_changed
+ power_supply_get_by_name
+ power_supply_get_by_phandle_array
+ power_supply_get_drvdata
+ power_supply_get_property
+ power_supply_is_system_supplied
+ power_supply_put
+ power_supply_reg_notifier
+ power_supply_register
+ power_supply_set_property
+ power_supply_unreg_notifier
+ power_supply_unregister
+ prandom_bytes
+ prandom_u32
+ preempt_schedule
+ preempt_schedule_notrace
+ prepare_to_wait
+ prepare_to_wait_event
+ print_hex_dump
+ printk
+ printk_deferred
+ printk_timed_ratelimit
+ proc_create
+ proc_create_data
+ proc_create_single_data
+ proc_dointvec
+ proc_dointvec_minmax
+ proc_dostring
+ proc_douintvec_minmax
+ proc_mkdir
+ proc_mkdir_data
+ proc_remove
+ proc_set_size
+ proc_set_user
+ proc_symlink
+ proto_register
+ proto_unregister
+ ps2_begin_command
+ ps2_cmd_aborted
+ ps2_command
+ ps2_drain
+ ps2_end_command
+ ps2_handle_ack
+ ps2_handle_response
+ ps2_init
+ ps2_sendbyte
+ ps2_sliced_command
+ pskb_expand_head
+ pstore_register
+ pstore_unregister
+ public_key_verify_signature
+ put_device
+ put_disk
+ put_iova_domain
+ put_pid
+ put_sg_io_hdr
+ put_tty_driver
+ put_unused_fd
+ put_vaddr_frames
+ pwm_apply_state
+ pwm_get_chip_data
+ pwm_set_chip_data
+ pwmchip_add
+ pwmchip_remove
+ qcom_smem_state_get
+ qcom_smem_state_register
+ qcom_smem_state_unregister
+ qcom_smem_state_update_bits
+ qdisc_reset
+ queue_delayed_work_on
+ queue_work_on
+ radix_tree_delete
+ radix_tree_insert
+ radix_tree_iter_delete
+ radix_tree_iter_resume
+ radix_tree_lookup
+ radix_tree_maybe_preload
+ radix_tree_next_chunk
+ radix_tree_tagged
+ rational_best_approximation
+ raw_notifier_call_chain
+ raw_notifier_chain_register
+ raw_notifier_chain_unregister
+ rb_erase
+ rb_first
+ rb_first_postorder
+ rb_insert_color
+ rb_last
+ rb_next
+ rb_next_postorder
+ rb_prev
+ rb_replace_node
+ rcu_barrier
+ rcu_barrier_tasks
+ rcu_barrier_tasks_trace
+ rcu_bind_current_to_nocb
+ rcu_cpu_stall_suppress
+ rcu_cpu_stall_suppress_at_boot
+ rcu_expedite_gp
+ rcu_force_quiescent_state
+ rcu_fwd_progress_check
+ rcu_get_gp_kthreads_prio
+ rcu_get_gp_seq
+ rcu_gp_is_expedited
+ rcu_gp_is_normal
+ rcu_gp_set_torture_wait
+ rcu_inkernel_boot_has_ended
+ rcu_is_watching
+ rcu_jiffies_till_stall_check
+ rcu_read_unlock_trace_special
+ rcu_unexpedite_gp
+ rcutorture_get_gp_data
+ rcuwait_wake_up
+ rdev_get_drvdata
+ rdev_get_id
+ reboot_mode
+ reciprocal_value
+ refcount_dec_and_lock
+ refcount_dec_and_mutex_lock
+ refcount_dec_not_one
+ refcount_warn_saturate
+ refresh_frequency_limits
+ regcache_cache_bypass
+ regcache_cache_only
+ regcache_drop_region
+ regcache_mark_dirty
+ regcache_sync
+ regcache_sync_region
+ register_blkdev
+ register_chrdev_region
+ register_console
+ register_die_notifier
+ register_filesystem
+ register_ftrace_export
+ register_inet6addr_notifier
+ register_inetaddr_notifier
+ register_kernel_break_hook
+ register_kprobe
+ register_kretprobe
+ register_memory_notifier
+ register_module_notifier
+ register_net_sysctl
+ register_netdev
+ register_netdevice
+ register_netdevice_notifier
+ register_netevent_notifier
+ register_oom_notifier
+ register_pernet_device
+ register_pernet_subsys
+ register_pm_notifier
+ register_reboot_notifier
+ register_restart_handler
+ register_shrinker
+ register_syscore_ops
+ register_sysctl
+ register_sysctl_table
+ register_virtio_device
+ register_virtio_driver
+ register_vmap_purge_notifier
+ regmap_add_irq_chip
+ regmap_async_complete
+ regmap_bulk_read
+ regmap_bulk_write
+ regmap_check_range_table
+ regmap_del_irq_chip
+ regmap_exit
+ regmap_field_read
+ regmap_field_update_bits_base
+ regmap_get_device
+ regmap_irq_get_domain
+ regmap_irq_get_virq
+ regmap_mmio_detach_clk
+ regmap_multi_reg_write
+ regmap_multi_reg_write_bypassed
+ regmap_raw_read
+ regmap_raw_write
+ regmap_raw_write_async
+ regmap_read
+ regmap_register_patch
+ regmap_update_bits_base
+ regmap_write
+ regulator_allow_bypass
+ regulator_bulk_disable
+ regulator_bulk_enable
+ regulator_bulk_get
+ regulator_count_voltages
+ regulator_disable
+ regulator_disable_deferred
+ regulator_disable_regmap
+ regulator_enable
+ regulator_enable_regmap
+ regulator_force_disable
+ regulator_get
+ regulator_get_current_limit
+ regulator_get_drvdata
+ regulator_get_mode
+ regulator_get_optional
+ regulator_get_voltage
+ regulator_get_voltage_rdev
+ regulator_get_voltage_sel_regmap
+ regulator_is_enabled
+ regulator_is_enabled_regmap
+ regulator_is_supported_voltage
+ regulator_list_voltage_linear
+ regulator_list_voltage_linear_range
+ regulator_list_voltage_table
+ regulator_map_voltage_ascend
+ regulator_map_voltage_linear
+ regulator_notifier_call_chain
+ regulator_put
+ regulator_register
+ regulator_register_notifier
+ regulator_set_current_limit
+ regulator_set_load
+ regulator_set_mode
+ regulator_set_voltage
+ regulator_set_voltage_sel_regmap
+ regulator_unregister
+ regulator_unregister_notifier
+ release_firmware
+ release_pages
+ release_sock
+ remap_pfn_range
+ remap_vmalloc_range
+ remove_cpu
+ remove_memory_subsection
+ remove_proc_entry
+ remove_wait_queue
+ report_iommu_fault
+ request_any_context_irq
+ request_firmware
+ request_firmware_direct
+ request_firmware_into_buf
+ request_firmware_nowait
+ request_threaded_irq
+ resched_curr
+ reservation_ww_class
+ reset_control_assert
+ reset_control_deassert
+ reset_control_put
+ reset_control_reset
+ resume_cpus
+ return_address
+ revalidate_disk_size
+ rfkill_alloc
+ rfkill_destroy
+ rfkill_find_type
+ rfkill_init_sw_state
+ rfkill_register
+ rfkill_set_sw_state
+ rfkill_unregister
+ rhashtable_destroy
+ rhashtable_init
+ rhashtable_insert_slow
+ rht_bucket_nested
+ rht_bucket_nested_insert
+ rndis_deregister
+ rndis_free_response
+ rndis_get_next_response
+ rndis_msg_parser
+ rndis_register
+ rndis_set_host_mac
+ rndis_set_param_dev
+ rndis_set_param_medium
+ rndis_set_param_vendor
+ rndis_signal_connect
+ rndis_uninit
+ root_task_group
+ round_jiffies_relative
+ round_jiffies_up
+ rpmsg_get_signals
+ rpmsg_poll
+ rpmsg_register_device
+ rpmsg_send
+ rpmsg_set_signals
+ rpmsg_trysend
+ rpmsg_unregister_device
+ rproc_add
+ rproc_add_subdev
+ rproc_alloc
+ rproc_boot
+ rproc_coredump_add_custom_segment
+ rproc_coredump_add_segment
+ rproc_coredump_set_elf_info
+ rproc_coredump_using_sections
+ rproc_del
+ rproc_elf_get_boot_addr
+ rproc_free
+ rproc_get_by_child
+ rproc_get_by_phandle
+ rproc_put
+ rproc_remove_subdev
+ rproc_report_crash
+ rproc_shutdown
+ rps_needed
+ rt_mutex_lock
+ rt_mutex_trylock
+ rt_mutex_unlock
+ rtc_class_close
+ rtc_class_open
+ rtc_read_time
+ rtc_set_time
+ rtc_time64_to_tm
+ rtc_tm_to_time64
+ rtc_update_irq
+ rtc_valid_tm
+ rtc_year_days
+ rtnl_is_locked
+ rtnl_link_register
+ rtnl_link_unregister
+ rtnl_lock
+ rtnl_register_module
+ rtnl_trylock
+ rtnl_unicast
+ rtnl_unlock
+ rtnl_unregister
+ runqueues
+ sb800_prefetch
+ sbitmap_queue_min_shallow_depth
+ sched_clock
+ sched_feat_keys
+ sched_feat_names
+ sched_set_fifo
+ sched_set_fifo_low
+ sched_set_normal
+ sched_setattr
+ sched_setattr_nocheck
+ sched_setscheduler
+ sched_setscheduler_nocheck
+ sched_show_task
+ sched_trace_cfs_rq_avg
+ sched_trace_cfs_rq_cpu
+ sched_trace_cfs_rq_path
+ sched_trace_rd_span
+ sched_trace_rq_avg_dl
+ sched_trace_rq_avg_irq
+ sched_trace_rq_avg_rt
+ sched_trace_rq_cpu
+ sched_uclamp_used
+ schedule
+ schedule_hrtimeout
+ schedule_timeout
+ schedule_timeout_interruptible
+ schedule_timeout_uninterruptible
+ scnprintf
+ scsi_autopm_get_device
+ scsi_autopm_put_device
+ scsi_block_requests
+ scsi_block_when_processing_errors
+ scsi_command_size_tbl
+ scsi_compat_ioctl
+ scsi_device_get
+ scsi_device_put
+ scsi_device_quiesce
+ scsi_dma_unmap
+ scsi_eh_ready_devs
+ scsi_ioctl
+ scsi_ioctl_block_when_processing_errors
+ scsi_normalize_sense
+ scsi_print_sense_hdr
+ scsi_register_interface
+ scsi_remove_device
+ scsi_unblock_requests
+ sdev_prefix_printk
+ sdhci_add_host
+ sdhci_cleanup_host
+ sdhci_cqe_disable
+ sdhci_cqe_enable
+ sdhci_cqe_irq
+ sdhci_enable_clk
+ sdhci_get_property
+ sdhci_pltfm_free
+ sdhci_pltfm_init
+ sdhci_remove_host
+ sdhci_reset
+ sdhci_set_bus_width
+ sdhci_set_power_noreg
+ sdhci_setup_host
+ sdio_claim_host
+ sdio_disable_func
+ sdio_enable_func
+ sdio_f0_readb
+ sdio_f0_writeb
+ sdio_get_host_pm_caps
+ sdio_memcpy_fromio
+ sdio_memcpy_toio
+ sdio_readsb
+ sdio_register_driver
+ sdio_release_host
+ sdio_set_block_size
+ sdio_set_host_pm_flags
+ sdio_signal_irq
+ sdio_unregister_driver
+ sdio_writesb
+ securityfs_create_dir
+ securityfs_create_file
+ securityfs_remove
+ send_sig_info
+ seq_buf_printf
+ seq_file_path
+ seq_hex_dump
+ seq_list_next
+ seq_list_start
+ seq_lseek
+ seq_open
+ seq_printf
+ seq_putc
+ seq_puts
+ seq_read
+ seq_release
+ seq_release_private
+ seq_vprintf
+ seq_write
+ serdev_device_close
+ serdev_device_open
+ serdev_device_set_baudrate
+ serdev_device_set_flow_control
+ serdev_device_wait_until_sent
+ serdev_device_write
+ serdev_device_write_wakeup
+ serio_close
+ serio_interrupt
+ serio_open
+ serio_reconnect
+ serio_rescan
+ serio_unregister_child_port
+ serio_unregister_driver
+ serio_unregister_port
+ set_blocksize
+ set_capacity_revalidate_and_notify
+ set_cpus_allowed_ptr
+ set_disk_ro
+ set_freezable
+ set_normalized_timespec64
+ set_page_dirty
+ set_page_dirty_lock
+ set_task_cpu
+ set_user_nice
+ sg_alloc_table
+ sg_alloc_table_from_pages
+ sg_free_table
+ sg_init_one
+ sg_init_table
+ sg_miter_next
+ sg_miter_start
+ sg_miter_stop
+ sg_nents_for_len
+ sg_next
+ sg_pcopy_from_buffer
+ sg_pcopy_to_buffer
+ sg_scsi_ioctl
+ sg_zero_buffer
+ sgl_alloc
+ sgl_free
+ shmem_truncate_range
+ show_rcu_gp_kthreads
+ show_regs
+ si_mem_available
+ si_meminfo
+ si_swapinfo
+ sigprocmask
+ simple_attr_open
+ simple_attr_read
+ simple_attr_release
+ simple_attr_write
+ simple_dir_inode_operations
+ simple_dir_operations
+ simple_open
+ simple_read_from_buffer
+ simple_statfs
+ simple_strtol
+ simple_strtoll
+ simple_strtoul
+ simple_strtoull
+ simple_write_to_buffer
+ single_open
+ single_open_size
+ single_release
+ sk_alloc
+ sk_free
+ skb_add_rx_frag
+ skb_append_pagefrags
+ skb_checksum
+ skb_clone
+ skb_coalesce_rx_frag
+ skb_copy
+ skb_copy_bits
+ skb_copy_datagram_iter
+ skb_copy_expand
+ skb_copy_ubufs
+ skb_dequeue
+ skb_dequeue_tail
+ skb_ensure_writable
+ skb_free_datagram
+ skb_page_frag_refill
+ skb_partial_csum_set
+ skb_pull
+ skb_push
+ skb_put
+ skb_queue_head
+ skb_queue_purge
+ skb_queue_tail
+ skb_realloc_headroom
+ skb_recv_datagram
+ skb_set_owner_w
+ skb_store_bits
+ skb_to_sgvec
+ skb_trim
+ skb_tstamp_tx
+ skb_unlink
+ skip_spaces
+ smp_call_function
+ smp_call_function_any
+ smp_call_function_many
+ smp_call_function_single
+ smp_call_function_single_async
+ smp_call_on_cpu
+ smpboot_register_percpu_thread
+ smpboot_unregister_percpu_thread
+ snd_card_disconnect
+ snd_card_free
+ snd_card_new
+ snd_card_register
+ snd_card_rw_proc_new
+ snd_component_add
+ snd_compr_stop_error
+ snd_ctl_add
+ snd_ctl_add_vmaster_hook
+ snd_ctl_apply_vmaster_followers
+ snd_ctl_boolean_mono_info
+ snd_ctl_boolean_stereo_info
+ snd_ctl_enum_info
+ snd_ctl_find_id
+ snd_ctl_make_virtual_master
+ snd_ctl_new1
+ snd_ctl_notify
+ snd_ctl_remove
+ snd_ctl_remove_id
+ snd_ctl_sync_vmaster
+ snd_device_disconnect
+ snd_device_free
+ snd_device_new
+ snd_dma_alloc_pages
+ snd_dma_free_pages
+ snd_dmaengine_pcm_prepare_slave_config
+ snd_hwdep_new
+ snd_info_create_card_entry
+ snd_info_create_module_entry
+ snd_info_free_entry
+ snd_info_register
+ snd_interval_refine
+ snd_jack_new
+ snd_jack_report
+ snd_jack_set_key
+ snd_pci_quirk_lookup
+ snd_pcm_add_chmap_ctls
+ snd_pcm_alt_chmaps
+ snd_pcm_create_iec958_consumer_hw_params
+ snd_pcm_format_physical_width
+ snd_pcm_format_width
+ snd_pcm_hw_constraint_eld
+ snd_pcm_hw_constraint_integer
+ snd_pcm_hw_constraint_list
+ snd_pcm_hw_constraint_minmax
+ snd_pcm_hw_constraint_msbits
+ snd_pcm_hw_constraint_step
+ snd_pcm_hw_limit_rates
+ snd_pcm_hw_rule_add
+ snd_pcm_lib_default_mmap
+ snd_pcm_lib_free_pages
+ snd_pcm_lib_ioctl
+ snd_pcm_lib_malloc_pages
+ snd_pcm_lib_preallocate_free_for_all
+ snd_pcm_lib_preallocate_pages
+ snd_pcm_new
+ snd_pcm_period_elapsed
+ snd_pcm_rate_range_to_bits
+ snd_pcm_set_managed_buffer_all
+ snd_pcm_set_ops
+ snd_pcm_set_sync
+ snd_pcm_std_chmaps
+ snd_pcm_stream_lock
+ snd_pcm_stream_unlock
+ snd_pcm_stream_unlock_irqrestore
+ snd_soc_add_card_controls
+ snd_soc_add_component_controls
+ snd_soc_add_dai_controls
+ snd_soc_bytes_info_ext
+ snd_soc_bytes_tlv_callback
+ snd_soc_card_get_kcontrol
+ snd_soc_card_jack_new
+ snd_soc_component_async_complete
+ snd_soc_component_disable_pin
+ snd_soc_component_exit_regmap
+ snd_soc_component_force_enable_pin
+ snd_soc_component_init_regmap
+ snd_soc_component_read
+ snd_soc_component_set_jack
+ snd_soc_component_set_pll
+ snd_soc_component_set_sysclk
+ snd_soc_component_update_bits
+ snd_soc_component_update_bits_async
+ snd_soc_component_write
+ snd_soc_dai_get_channel_map
+ snd_soc_dai_link_set_capabilities
+ snd_soc_dai_set_bclk_ratio
+ snd_soc_dai_set_channel_map
+ snd_soc_dai_set_fmt
+ snd_soc_dai_set_pll
+ snd_soc_dai_set_sysclk
+ snd_soc_dai_set_tdm_slot
+ snd_soc_dapm_add_routes
+ snd_soc_dapm_disable_pin
+ snd_soc_dapm_disable_pin_unlocked
+ snd_soc_dapm_enable_pin
+ snd_soc_dapm_force_enable_pin
+ snd_soc_dapm_force_enable_pin_unlocked
+ snd_soc_dapm_get_enum_double
+ snd_soc_dapm_get_pin_status
+ snd_soc_dapm_get_pin_switch
+ snd_soc_dapm_get_volsw
+ snd_soc_dapm_ignore_suspend
+ snd_soc_dapm_info_pin_switch
+ snd_soc_dapm_kcontrol_dapm
+ snd_soc_dapm_kcontrol_widget
+ snd_soc_dapm_mixer_update_power
+ snd_soc_dapm_mux_update_power
+ snd_soc_dapm_new_control
+ snd_soc_dapm_new_controls
+ snd_soc_dapm_new_widgets
+ snd_soc_dapm_put_enum_double
+ snd_soc_dapm_put_pin_switch
+ snd_soc_dapm_put_volsw
+ snd_soc_dapm_sync
+ snd_soc_dapm_sync_unlocked
+ snd_soc_dapm_weak_routes
+ snd_soc_find_dai
+ snd_soc_get_enum_double
+ snd_soc_get_pcm_runtime
+ snd_soc_get_volsw
+ snd_soc_get_volsw_range
+ snd_soc_get_volsw_sx
+ snd_soc_get_xr_sx
+ snd_soc_info_enum_double
+ snd_soc_info_multi_ext
+ snd_soc_info_volsw
+ snd_soc_info_volsw_range
+ snd_soc_info_volsw_sx
+ snd_soc_info_xr_sx
+ snd_soc_jack_add_gpios
+ snd_soc_jack_report
+ snd_soc_lookup_component
+ snd_soc_new_compress
+ snd_soc_of_get_dai_link_codecs
+ snd_soc_of_get_dai_name
+ snd_soc_of_parse_audio_routing
+ snd_soc_of_parse_audio_simple_widgets
+ snd_soc_of_parse_aux_devs
+ snd_soc_of_parse_card_name
+ snd_soc_of_parse_daifmt
+ snd_soc_of_parse_node_prefix
+ snd_soc_of_parse_tdm_slot
+ snd_soc_of_put_dai_link_codecs
+ snd_soc_params_to_bclk
+ snd_soc_params_to_frame_size
+ snd_soc_pm_ops
+ snd_soc_put_enum_double
+ snd_soc_put_volsw
+ snd_soc_put_volsw_range
+ snd_soc_put_volsw_sx
+ snd_soc_put_xr_sx
+ snd_soc_register_card
+ snd_soc_register_component
+ snd_soc_rtdcom_lookup
+ snd_soc_runtime_calc_hw
+ snd_soc_runtime_set_dai_fmt
+ snd_soc_set_runtime_hwparams
+ snd_soc_tplg_component_load
+ snd_soc_tplg_component_remove
+ snd_soc_tplg_widget_bind_event
+ snd_soc_unregister_card
+ snd_soc_unregister_component
+ snd_usb_enable_audio_stream
+ snd_vendor_set_ops
+ snprintf
+ soc_device_register
+ soc_device_unregister
+ sock_alloc_send_skb
+ sock_create_kern
+ sock_gettstamp
+ sock_i_uid
+ sock_init_data
+ sock_no_accept
+ sock_no_listen
+ sock_no_mmap
+ sock_no_sendpage
+ sock_no_shutdown
+ sock_no_socketpair
+ sock_queue_rcv_skb
+ sock_register
+ sock_release
+ sock_setsockopt
+ sock_unregister
+ sock_wfree
+ softnet_data
+ sort
+ spi_bus_lock
+ spi_bus_type
+ spi_bus_unlock
+ spi_controller_resume
+ spi_controller_suspend
+ spi_delay_exec
+ spi_finalize_current_message
+ spi_finalize_current_transfer
+ spi_get_next_queued_message
+ spi_register_controller
+ spi_setup
+ spi_sync
+ spi_sync_locked
+ spi_unregister_controller
+ split_page
+ spmi_controller_add
+ spmi_controller_alloc
+ spmi_controller_remove
+ spmi_ext_register_read
+ spmi_ext_register_readl
+ spmi_ext_register_write
+ spmi_ext_register_writel
+ spmi_register_read
+ spmi_register_write
+ spmi_register_zero_write
+ sprint_symbol
+ sprint_symbol_no_offset
+ sprintf
+ srcu_barrier
+ srcu_batches_completed
+ srcu_init_notifier_head
+ srcu_notifier_call_chain
+ srcu_notifier_chain_register
+ srcu_notifier_chain_unregister
+ srcu_torture_stats_print
+ srcutorture_get_gp_data
+ sscanf
+ stack_trace_print
+ stack_trace_save
+ stack_trace_save_regs
+ stack_trace_save_tsk
+ static_key_disable
+ static_key_disable_cpuslocked
+ static_key_slow_dec
+ static_key_slow_inc
+ stop_machine
+ stop_one_cpu_nowait
+ stpcpy
+ strcasecmp
+ strcat
+ strchr
+ strchrnul
+ strcmp
+ strcpy
+ strcspn
+ stream_open
+ strim
+ string_get_size
+ strlcat
+ strlcpy
+ strlen
+ strncasecmp
+ strncat
+ strnchr
+ strncmp
+ strncpy
+ strncpy_from_user
+ strndup_user
+ strnlen
+ strnstr
+ strpbrk
+ strrchr
+ strreplace
+ strscpy
+ strsep
+ strspn
+ strstr
+ submit_bh
+ submit_bio
+ submit_bio_wait
+ subsys_system_register
+ swiotlb_nr_tbl
+ sync_blockdev
+ sync_file_create
+ sync_file_get_fence
+ synchronize_irq
+ synchronize_net
+ synchronize_rcu
+ synchronize_rcu_expedited
+ synchronize_rcu_tasks
+ synchronize_rcu_tasks_trace
+ synchronize_srcu
+ synchronize_srcu_expedited
+ sys_tz
+ syscon_node_to_regmap
+ syscon_regmap_lookup_by_phandle
+ sysctl_sched_features
+ sysctl_sched_latency
+ sysctl_vals
+ sysfs_add_file_to_group
+ sysfs_add_link_to_group
+ sysfs_create_bin_file
+ sysfs_create_file_ns
+ sysfs_create_files
+ sysfs_create_group
+ sysfs_create_groups
+ sysfs_create_link
+ sysfs_emit
+ sysfs_emit_at
+ sysfs_notify
+ sysfs_remove_bin_file
+ sysfs_remove_file_from_group
+ sysfs_remove_file_ns
+ sysfs_remove_files
+ sysfs_remove_group
+ sysfs_remove_groups
+ sysfs_remove_link
+ sysfs_remove_link_from_group
+ sysfs_streq
+ sysfs_update_group
+ sysrq_mask
+ system_freezable_wq
+ system_freezing_cnt
+ system_highpri_wq
+ system_long_wq
+ system_power_efficient_wq
+ system_state
+ system_unbound_wq
+ system_wq
+ task_active_pid_ns
+ task_groups
+ task_may_not_preempt
+ task_rq_lock
+ tasklet_init
+ tasklet_kill
+ tasklet_setup
+ tasklist_lock
+ tcp_register_congestion_control
+ tcp_reno_cong_avoid
+ tcp_reno_ssthresh
+ tcp_reno_undo_cwnd
+ tcp_slow_start
+ tcp_unregister_congestion_control
+ tcpci_get_tcpm_port
+ tcpci_irq
+ tcpci_register_port
+ tcpci_unregister_port
+ tcpm_cc_change
+ tcpm_is_toggling
+ tcpm_pd_hard_reset
+ tcpm_pd_receive
+ tcpm_pd_transmit_complete
+ tcpm_sink_frs
+ tcpm_sourcing_vbus
+ tcpm_update_sink_capabilities
+ tcpm_vbus_change
+ thermal_cdev_update
+ thermal_cooling_device_register
+ thermal_cooling_device_unregister
+ thermal_of_cooling_device_register
+ thermal_pressure
+ thermal_zone_device_disable
+ thermal_zone_device_enable
+ thermal_zone_device_is_enabled
+ thermal_zone_device_register
+ thermal_zone_device_unregister
+ thermal_zone_device_update
+ thermal_zone_get_slope
+ thermal_zone_get_temp
+ thermal_zone_get_zone_by_name
+ thermal_zone_of_sensor_register
+ thermal_zone_of_sensor_unregister
+ thread_group_cputime_adjusted
+ tick_nohz_get_idle_calls_cpu
+ tick_nohz_get_sleep_length
+ time64_to_tm
+ timecounter_init
+ timecounter_read
+ timer_unstable_counter_workaround
+ topology_set_thermal_pressure
+ total_swapcache_pages
+ trace_clock_local
+ trace_event_buffer_commit
+ trace_event_buffer_reserve
+ trace_event_ignore_this_pid
+ trace_event_raw_init
+ trace_event_reg
+ trace_handle_return
+ trace_output_call
+ trace_print_array_seq
+ trace_print_flags_seq
+ trace_print_hex_seq
+ trace_print_symbols_seq
+ trace_raw_output_prep
+ trace_seq_printf
+ trace_seq_putc
+ tracepoint_probe_register
+ tracepoint_probe_register_prio
+ tracepoint_probe_unregister
+ tracing_off
+ try_module_get
+ try_to_del_timer_sync
+ try_wait_for_completion
+ ttm_bo_bulk_move_lru_tail
+ ttm_bo_device_init
+ ttm_bo_device_release
+ ttm_bo_dma_acc_size
+ ttm_bo_evict_mm
+ ttm_bo_eviction_valuable
+ ttm_bo_glob
+ ttm_bo_init_reserved
+ ttm_bo_kmap
+ ttm_bo_kunmap
+ ttm_bo_lock_delayed_workqueue
+ ttm_bo_mem_space
+ ttm_bo_mmap
+ ttm_bo_mmap_obj
+ ttm_bo_move_accel_cleanup
+ ttm_bo_move_memcpy
+ ttm_bo_move_to_lru_tail
+ ttm_bo_move_ttm
+ ttm_bo_put
+ ttm_bo_unlock_delayed_workqueue
+ ttm_bo_validate
+ ttm_dma_page_alloc_debugfs
+ ttm_dma_populate
+ ttm_dma_tt_fini
+ ttm_dma_unpopulate
+ ttm_eu_backoff_reservation
+ ttm_eu_fence_buffer_objects
+ ttm_eu_reserve_buffers
+ ttm_page_alloc_debugfs
+ ttm_populate_and_map_pages
+ ttm_range_man_fini
+ ttm_range_man_init
+ ttm_resource_free
+ ttm_resource_manager_force_list_clean
+ ttm_resource_manager_init
+ ttm_sg_tt_init
+ ttm_tt_destroy_common
+ ttm_tt_populate
+ ttm_tt_set_placement_caching
+ ttm_unmap_and_unpopulate_pages
+ tty_flip_buffer_push
+ tty_insert_flip_string_fixed_flag
+ tty_kref_put
+ tty_ldisc_deref
+ tty_ldisc_ref
+ tty_port_close
+ tty_port_destroy
+ tty_port_hangup
+ tty_port_init
+ tty_port_open
+ tty_port_register_device
+ tty_port_tty_get
+ tty_port_tty_wakeup
+ tty_register_driver
+ tty_set_operations
+ tty_standard_install
+ tty_std_termios
+ tty_termios_baud_rate
+ tty_termios_copy_hw
+ tty_termios_encode_baud_rate
+ tty_unregister_device
+ tty_unregister_driver
+ tty_vhangup
+ typec_altmode_get_partner
+ typec_altmode_update_active
+ typec_get_drvdata
+ typec_partner_register_altmode
+ typec_port_register_altmode
+ typec_register_partner
+ typec_register_port
+ typec_set_data_role
+ typec_set_pwr_opmode
+ typec_set_pwr_role
+ typec_switch_get_drvdata
+ typec_switch_register
+ typec_switch_unregister
+ typec_unregister_altmode
+ typec_unregister_partner
+ typec_unregister_port
+ uart_add_one_port
+ uart_console_device
+ uart_console_write
+ uart_get_baud_rate
+ uart_insert_char
+ uart_parse_options
+ uart_register_driver
+ uart_remove_one_port
+ uart_resume_port
+ uart_set_options
+ uart_suspend_port
+ uart_try_toggle_sysrq
+ uart_unregister_driver
+ uart_update_timeout
+ uart_write_wakeup
+ uclamp_eff_value
+ ucsi_connector_change
+ ucsi_create
+ ucsi_destroy
+ ucsi_get_drvdata
+ ucsi_register
+ ucsi_set_drvdata
+ ucsi_unregister
+ udp4_hwcsum
+ ufshcd_auto_hibern8_update
+ ufshcd_bkops_ctrl
+ ufshcd_dme_get_attr
+ ufshcd_dme_set_attr
+ ufshcd_dump_regs
+ ufshcd_fixup_dev_quirks
+ ufshcd_get_local_unipro_ver
+ ufshcd_get_pwr_dev_param
+ ufshcd_hold
+ ufshcd_map_desc_id_to_length
+ ufshcd_pltfrm_init
+ ufshcd_pltfrm_resume
+ ufshcd_pltfrm_runtime_idle
+ ufshcd_pltfrm_runtime_resume
+ ufshcd_pltfrm_runtime_suspend
+ ufshcd_pltfrm_shutdown
+ ufshcd_pltfrm_suspend
+ ufshcd_query_attr
+ ufshcd_query_attr_retry
+ ufshcd_query_descriptor_retry
+ ufshcd_query_flag
+ ufshcd_query_flag_retry
+ ufshcd_read_desc_param
+ ufshcd_release
+ ufshcd_remove
+ ufshcd_shutdown
+ ufshcd_system_resume
+ ufshcd_system_suspend
+ ufshcd_uic_hibern8_enter
+ ufshcd_uic_hibern8_exit
+ uio_unregister_device
+ unlock_page
+ unmap_mapping_range
+ unpin_user_page
+ unregister_blkdev
+ unregister_chrdev_region
+ unregister_console
+ unregister_die_notifier
+ unregister_filesystem
+ unregister_ftrace_export
+ unregister_inet6addr_notifier
+ unregister_inetaddr_notifier
+ unregister_kprobe
+ unregister_kretprobe
+ unregister_module_notifier
+ unregister_netdev
+ unregister_netdevice_many
+ unregister_netdevice_notifier
+ unregister_netdevice_queue
+ unregister_netevent_notifier
+ unregister_oom_notifier
+ unregister_pernet_device
+ unregister_pernet_subsys
+ unregister_pm_notifier
+ unregister_reboot_notifier
+ unregister_restart_handler
+ unregister_rpmsg_driver
+ unregister_shrinker
+ unregister_syscore_ops
+ unregister_sysctl_table
+ unregister_virtio_device
+ unregister_virtio_driver
+ unregister_vmap_purge_notifier
+ up
+ up_read
+ up_write
+ update_devfreq
+ update_rq_clock
+ usb_add_function
+ usb_add_gadget
+ usb_add_gadget_udc
+ usb_add_hcd
+ usb_add_phy_dev
+ usb_alloc_coherent
+ usb_alloc_dev
+ usb_alloc_urb
+ usb_amd_dev_put
+ usb_amd_prefetch_quirk
+ usb_amd_pt_check_port
+ usb_amd_quirk_pll_check
+ usb_amd_quirk_pll_disable
+ usb_amd_quirk_pll_enable
+ usb_asmedia_modifyflowcontrol
+ usb_assign_descriptors
+ usb_autopm_get_interface
+ usb_autopm_get_interface_no_resume
+ usb_autopm_put_interface
+ usb_bulk_msg
+ usb_calc_bus_time
+ usb_choose_configuration
+ usb_composite_setup_continue
+ usb_control_msg
+ usb_copy_descriptors
+ usb_create_hcd
+ usb_debug_root
+ usb_decode_ctrl
+ usb_del_gadget_udc
+ usb_deregister
+ usb_deregister_dev
+ usb_disable_xhci_ports
+ usb_disabled
+ usb_enable_autosuspend
+ usb_enable_intel_xhci_ports
+ usb_ep_alloc_request
+ usb_ep_autoconfig
+ usb_ep_clear_halt
+ usb_ep_dequeue
+ usb_ep_disable
+ usb_ep_enable
+ usb_ep_fifo_flush
+ usb_ep_fifo_status
+ usb_ep_free_request
+ usb_ep_queue
+ usb_ep_set_halt
+ usb_ep_set_maxpacket_limit
+ usb_find_common_endpoints
+ usb_find_interface
+ usb_free_all_descriptors
+ usb_free_coherent
+ usb_free_urb
+ usb_function_register
+ usb_function_unregister
+ usb_gadget_giveback_request
+ usb_gadget_map_request_by_dev
+ usb_gadget_probe_driver
+ usb_gadget_set_state
+ usb_gadget_udc_reset
+ usb_gadget_unmap_request_by_dev
+ usb_gadget_unregister_driver
+ usb_gadget_vbus_connect
+ usb_gadget_vbus_disconnect
+ usb_gadget_vbus_draw
+ usb_gadget_wakeup
+ usb_get_dev
+ usb_get_dr_mode
+ usb_get_gadget_udc_name
+ usb_get_intf
+ usb_get_maximum_speed
+ usb_get_urb
+ usb_gstrings_attach
+ usb_hc_died
+ usb_hcd_check_unlink_urb
+ usb_hcd_end_port_resume
+ usb_hcd_giveback_urb
+ usb_hcd_irq
+ usb_hcd_is_primary_hcd
+ usb_hcd_link_urb_to_ep
+ usb_hcd_map_urb_for_dma
+ usb_hcd_pci_pm_ops
+ usb_hcd_pci_probe
+ usb_hcd_pci_remove
+ usb_hcd_pci_shutdown
+ usb_hcd_platform_shutdown
+ usb_hcd_poll_rh_status
+ usb_hcd_resume_root_hub
+ usb_hcd_start_port_resume
+ usb_hcd_unlink_urb_from_ep
+ usb_hcds_loaded
+ usb_hub_clear_tt_buffer
+ usb_hub_find_child
+ usb_ifnum_to_if
+ usb_initialize_gadget
+ usb_interface_id
+ usb_kill_urb
+ usb_match_id
+ usb_match_one_id
+ usb_otg_state_string
+ usb_phy_set_charger_current
+ usb_poison_anchored_urbs
+ usb_poison_urb
+ usb_put_dev
+ usb_put_function_instance
+ usb_put_hcd
+ usb_put_intf
+ usb_register_dev
+ usb_register_driver
+ usb_register_notify
+ usb_remove_hcd
+ usb_remove_phy
+ usb_role_switch_find_by_fwnode
+ usb_role_switch_get
+ usb_role_switch_get_drvdata
+ usb_role_switch_put
+ usb_role_switch_register
+ usb_role_switch_set_role
+ usb_role_switch_unregister
+ usb_root_hub_lost_power
+ usb_set_device_state
+ usb_set_interface
+ usb_show_dynids
+ usb_speed_string
+ usb_store_new_id
+ usb_string_id
+ usb_submit_urb
+ usb_unpoison_urb
+ usb_unregister_notify
+ usb_wakeup_notification
+ usbnet_change_mtu
+ usbnet_defer_kevent
+ usbnet_disconnect
+ usbnet_get_drvinfo
+ usbnet_get_endpoints
+ usbnet_get_link
+ usbnet_get_link_ksettings
+ usbnet_get_msglevel
+ usbnet_get_stats64
+ usbnet_link_change
+ usbnet_nway_reset
+ usbnet_open
+ usbnet_probe
+ usbnet_read_cmd
+ usbnet_read_cmd_nopm
+ usbnet_resume
+ usbnet_set_link_ksettings
+ usbnet_set_msglevel
+ usbnet_skb_return
+ usbnet_start_xmit
+ usbnet_stop
+ usbnet_suspend
+ usbnet_tx_timeout
+ usbnet_unlink_rx_urbs
+ usbnet_update_max_qlen
+ usbnet_write_cmd
+ usbnet_write_cmd_async
+ usbnet_write_cmd_nopm
+ usleep_range
+ uuid_gen
+ uuid_null
+ uuid_parse
+ v4l2_compat_ioctl32
+ v4l2_ctrl_find
+ v4l2_ctrl_handler_free
+ v4l2_ctrl_handler_init_class
+ v4l2_ctrl_handler_setup
+ v4l2_ctrl_log_status
+ v4l2_ctrl_new_custom
+ v4l2_ctrl_new_std
+ v4l2_ctrl_new_std_menu
+ v4l2_device_register
+ v4l2_device_register_subdev
+ v4l2_device_set_name
+ v4l2_device_unregister
+ v4l2_device_unregister_subdev
+ v4l2_event_dequeue
+ v4l2_event_pending
+ v4l2_event_queue
+ v4l2_event_queue_fh
+ v4l2_event_subscribe
+ v4l2_event_unsubscribe
+ v4l2_fh_add
+ v4l2_fh_del
+ v4l2_fh_exit
+ v4l2_fh_init
+ v4l2_fh_open
+ v4l2_fh_release
+ v4l2_i2c_subdev_init
+ v4l2_m2m_buf_queue
+ v4l2_m2m_buf_remove
+ v4l2_m2m_ctx_init
+ v4l2_m2m_ctx_release
+ v4l2_m2m_dqbuf
+ v4l2_m2m_fop_mmap
+ v4l2_m2m_fop_poll
+ v4l2_m2m_get_curr_priv
+ v4l2_m2m_get_vq
+ v4l2_m2m_init
+ v4l2_m2m_ioctl_dqbuf
+ v4l2_m2m_ioctl_querybuf
+ v4l2_m2m_ioctl_reqbufs
+ v4l2_m2m_ioctl_streamoff
+ v4l2_m2m_ioctl_streamon
+ v4l2_m2m_job_finish
+ v4l2_m2m_mmap
+ v4l2_m2m_next_buf
+ v4l2_m2m_poll
+ v4l2_m2m_qbuf
+ v4l2_m2m_querybuf
+ v4l2_m2m_release
+ v4l2_m2m_reqbufs
+ v4l2_m2m_streamoff
+ v4l2_m2m_streamon
+ v4l2_m2m_try_schedule
+ v4l2_s_ctrl
+ v4l2_subdev_call_wrappers
+ v4l2_subdev_init
+ v4l_bound_align_image
+ vabits_actual
+ vb2_buffer_done
+ vb2_common_vm_ops
+ vb2_create_framevec
+ vb2_destroy_framevec
+ vb2_dqbuf
+ vb2_fop_mmap
+ vb2_fop_poll
+ vb2_fop_read
+ vb2_fop_release
+ vb2_ioctl_create_bufs
+ vb2_ioctl_dqbuf
+ vb2_ioctl_expbuf
+ vb2_ioctl_qbuf
+ vb2_ioctl_querybuf
+ vb2_ioctl_reqbufs
+ vb2_ioctl_streamoff
+ vb2_ioctl_streamon
+ vb2_mmap
+ vb2_ops_wait_finish
+ vb2_ops_wait_prepare
+ 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
+ vb2_vmalloc_memops
+ vb2_wait_for_all_buffers
+ vchan_dma_desc_free_list
+ vchan_find_desc
+ vchan_init
+ vchan_tx_desc_free
+ vchan_tx_submit
+ vfree
+ vfs_fsync_range
+ video_devdata
+ video_device_alloc
+ video_device_release
+ video_device_release_empty
+ video_ioctl2
+ video_unregister_device
+ virtio_check_driver_offered_feature
+ virtio_config_changed
+ virtio_device_freeze
+ virtio_device_restore
+ virtio_max_dma_size
+ virtio_transport_connect
+ virtio_transport_deliver_tap_pkt
+ virtio_transport_destruct
+ virtio_transport_dgram_allow
+ virtio_transport_dgram_bind
+ virtio_transport_dgram_dequeue
+ virtio_transport_dgram_enqueue
+ virtio_transport_do_socket_init
+ virtio_transport_free_pkt
+ virtio_transport_notify_buffer_size
+ virtio_transport_notify_poll_in
+ virtio_transport_notify_poll_out
+ virtio_transport_notify_recv_init
+ virtio_transport_notify_recv_post_dequeue
+ virtio_transport_notify_recv_pre_block
+ virtio_transport_notify_recv_pre_dequeue
+ virtio_transport_notify_send_init
+ virtio_transport_notify_send_post_enqueue
+ virtio_transport_notify_send_pre_block
+ virtio_transport_notify_send_pre_enqueue
+ virtio_transport_recv_pkt
+ virtio_transport_release
+ virtio_transport_shutdown
+ virtio_transport_stream_allow
+ virtio_transport_stream_dequeue
+ virtio_transport_stream_enqueue
+ virtio_transport_stream_has_data
+ virtio_transport_stream_has_space
+ virtio_transport_stream_is_active
+ virtio_transport_stream_rcvhiwat
+ 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
+ vm_event_states
+ vm_get_page_prot
+ vm_insert_page
+ vm_iomap_memory
+ vm_map_pages
+ vm_map_ram
+ vm_mmap
+ vm_munmap
+ vm_node_stat
+ vm_unmap_ram
+ vm_zone_stat
+ vmalloc
+ vmalloc_nr_pages
+ vmalloc_to_page
+ vmalloc_to_pfn
+ vmalloc_user
+ vmap
+ vmemdup_user
+ vmf_insert_mixed
+ vmf_insert_pfn
+ vmf_insert_pfn_prot
+ vprintk
+ vring_create_virtqueue
+ vring_del_virtqueue
+ vring_interrupt
+ vring_new_virtqueue
+ vring_transport_features
+ vscnprintf
+ vsnprintf
+ vsock_core_register
+ vsock_core_unregister
+ vsock_for_each_connected_socket
+ vsprintf
+ vunmap
+ vzalloc
+ vzalloc_node
+ wait_for_completion
+ wait_for_completion_interruptible
+ wait_for_completion_interruptible_timeout
+ wait_for_completion_io_timeout
+ wait_for_completion_killable
+ wait_for_completion_killable_timeout
+ wait_for_completion_timeout
+ wait_woken
+ wake_up_if_idle
+ wake_up_process
+ wakeup_source_add
+ wakeup_source_create
+ wakeup_source_destroy
+ wakeup_source_register
+ wakeup_source_remove
+ wakeup_source_unregister
+ watchdog_init_timeout
+ watchdog_register_device
+ watchdog_set_restart_priority
+ watchdog_unregister_device
+ wireless_send_event
+ woken_wake_function
+ work_busy
+ ww_mutex_lock
+ ww_mutex_lock_interruptible
+ ww_mutex_unlock
+ xa_destroy
+ xa_erase
+ xa_find
+ xa_find_after
+ xa_load
+ xa_store
+ xdp_convert_zc_to_xdp_frame
+ xdp_do_flush
+ xdp_do_redirect
+ xdp_return_frame
+ xdp_return_frame_rx_napi
+ xdp_rxq_info_reg
+ xdp_rxq_info_reg_mem_model
+ xdp_rxq_info_unreg
+ xdp_warn
+ xfrm_state_lookup_byspi
+ xfrm_stateonly_find
+ xhci_add_endpoint
+ xhci_address_device
+ xhci_alloc_command
+ xhci_alloc_erst
+ xhci_check_trb_in_td_math
+ xhci_free_command
+ xhci_free_erst
+ xhci_gen_setup
+ xhci_get_endpoint_index
+ xhci_get_ep_ctx
+ xhci_get_slot_ctx
+ xhci_handle_event
+ xhci_init_driver
+ xhci_initialize_ring_info
+ xhci_link_segments
+ xhci_queue_stop_endpoint
+ xhci_resume
+ xhci_ring_alloc
+ xhci_ring_cmd_db
+ xhci_ring_free
+ xhci_run
+ xhci_segment_free
+ xhci_suspend
+ xhci_trb_virt_to_dma
+ xhci_update_erst_dequeue
+ xhci_vendor_get_ops
+ zone_watermark_ok
+ zone_watermark_ok_safe
diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx
index b90451f6f40d..13ac690aa640 100644
--- a/android/abi_gki_aarch64_imx
+++ b/android/abi_gki_aarch64_imx
@@ -133,6 +133,7 @@
devm_extcon_dev_allocate
devm_extcon_dev_register
devm_free_irq
+ devm_get_clk_from_child
devm_gpiochip_add_data_with_key
devm_gpiod_get
devm_gpiod_get_index
@@ -148,7 +149,6 @@
devm_phy_create
devm_phy_get
devm_pinctrl_get
- devm_pinctrl_put
devm_platform_ioremap_resource
__devm_regmap_init
__devm_regmap_init_i2c
@@ -307,6 +307,7 @@
drm_mode_duplicate
drm_mode_equal
drm_mode_find_dmt
+ drm_mode_is_420_also
drm_mode_is_420_only
drm_mode_probed_add
drm_mode_set_name
@@ -337,7 +338,6 @@
eth_validate_addr
event_triggers_call
extcon_set_state_sync
- filp_close
find_next_bit
finish_wait
flush_work
@@ -433,7 +433,6 @@
kobject_put
kobject_uevent_env
kthread_create_on_node
- kthread_should_stop
ktime_get
ktime_get_mono_fast_ns
ktime_get_real_ts64
@@ -500,6 +499,7 @@
netif_device_attach
netif_device_detach
netif_napi_add
+ netif_receive_skb
netif_rx
netif_rx_ni
netif_tx_stop_all_queues
@@ -652,6 +652,8 @@
regcache_mark_dirty
regcache_sync
__register_chrdev
+ register_inet6addr_notifier
+ register_inetaddr_notifier
register_netdev
register_netdevice
register_netdevice_notifier
@@ -818,10 +820,11 @@
trace_raw_output_prep
trace_seq_printf
try_module_get
- tty_flip_buffer_push
__udelay
__unregister_chrdev
unregister_chrdev_region
+ unregister_inet6addr_notifier
+ unregister_inetaddr_notifier
unregister_netdev
unregister_netdevice_notifier
unregister_netdevice_queue
@@ -877,6 +880,7 @@
v4l2_m2m_job_finish
v4l2_m2m_next_buf
v4l2_m2m_release
+ v4l2_src_change_event_subscribe
v4l2_subdev_call_wrappers
v4l2_subdev_init
v4l2_subdev_link_validate
@@ -1140,7 +1144,6 @@
drm_atomic_get_new_connector_for_encoder
drm_connector_attach_max_bpc_property
drm_connector_init_with_ddc
- drm_mode_is_420_also
drm_scdc_read
drm_scdc_set_high_tmds_clock_ratio
drm_scdc_set_scrambling
@@ -1258,8 +1261,6 @@
__put_page
reset_control_reset
schedule_hrtimeout
- set_user_nice
- si_meminfo
sync_file_create
sync_file_get_fence
__task_pid_nr_ns
@@ -1268,6 +1269,7 @@
up_write
vm_mmap
vm_munmap
+ vm_zone_stat
# required by gmsl-max9286.ko
i2c_smbus_read_byte_data
@@ -1402,6 +1404,7 @@
rational_best_approximation
_raw_spin_trylock
sysrq_mask
+ tty_flip_buffer_push
__tty_insert_flip_char
tty_insert_flip_string_fixed_flag
tty_termios_encode_baud_rate
@@ -1533,13 +1536,10 @@
kvfree
kvmalloc_node
netdev_set_default_ethtool_ops
- netif_receive_skb
netif_receive_skb_list
prandom_bytes
___pskb_trim
rcu_barrier
- register_inet6addr_notifier
- register_inetaddr_notifier
rhashtable_free_and_destroy
rhashtable_insert_slow
rhltable_init
@@ -1560,14 +1560,10 @@
__skb_gso_segment
skb_queue_head
system_freezable_wq
- unregister_inet6addr_notifier
- unregister_inetaddr_notifier
unregister_netdevice_many
__usecs_to_jiffies
# required by moal.ko
- bitmap_parse
- cpumask_next_and
default_wake_function
hex_dump_to_buffer
in4_pton
@@ -1579,6 +1575,7 @@
iw_handler_get_thrspy
iw_handler_set_spy
iw_handler_set_thrspy
+ kthread_should_stop
ktime_get_raw_ts64
mmc_hw_reset
mmc_set_data_timeout
@@ -1609,7 +1606,7 @@
proc_create_data
proc_mkdir
remove_proc_entry
- rps_needed
+ request_firmware_direct
sdio_claim_host
sdio_claim_irq
sdio_disable_func
@@ -1629,8 +1626,6 @@
sdio_writesb
skb_realloc_headroom
sort
- static_key_slow_dec
- static_key_slow_inc
strcat
strchr
strim
@@ -1680,7 +1675,6 @@
# required by mxc-jpeg-encdec.ko
v4l2_m2m_dqbuf
v4l2_m2m_qbuf
- v4l2_src_change_event_subscribe
# required by mxs-dma.ko
dmaenginem_async_device_register
@@ -1720,6 +1714,9 @@
v4l2_event_subdev_unsubscribe
__v4l2_find_nearest_size
+# required by ov5640_camera_mipi_v2.ko
+ devm_pinctrl_put
+
# required by panel-raydium-rm67191.ko
devm_backlight_device_register
mipi_dsi_dcs_enter_sleep_mode
@@ -1836,7 +1833,6 @@
backlight_device_register
backlight_device_unregister
devm_pwm_get
- gpiod_get_direction
pwm_apply_state
pwm_free
pwm_request
@@ -1995,7 +1991,6 @@
snd_soc_dapm_put_enum_double
# required by snd-soc-simple-card-utils.ko
- devm_get_clk_from_child
devm_kvasprintf
of_property_read_string_helper
snd_soc_dapm_get_pin_switch
@@ -2056,6 +2051,8 @@
# required by trusty-ipc.ko
_copy_from_iter
+ dma_buf_vmap
+ dma_buf_vunmap
fget
import_iovec
strncpy_from_user
@@ -2117,6 +2114,7 @@
# required by vsiv4l2.ko
devm_device_add_group
v4l2_event_dequeue
+ vb2_create_bufs
vb2_prepare_buf
# required by vvcam-video.ko
diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk
index 37eeb6f8b5f2..9dd6a627f4ab 100644
--- a/android/abi_gki_aarch64_mtk
+++ b/android/abi_gki_aarch64_mtk
@@ -1940,6 +1940,7 @@
__traceiter_android_vh_rwsem_wake
__traceiter_android_vh_rwsem_write_finished
__traceiter_android_vh_scheduler_tick
+ __traceiter_android_vh_scmi_timeout_sync
__traceiter_android_vh_selinux_avc_insert
__traceiter_android_vh_selinux_avc_lookup
__traceiter_android_vh_selinux_avc_node_delete
@@ -1952,6 +1953,7 @@
__traceiter_android_vh_set_module_permit_after_init
__traceiter_android_vh_set_module_permit_before_init
__traceiter_android_vh_set_wake_flags
+ __traceiter_android_vh_snd_soc_card_get_comp_chain
__traceiter_android_vh_syscall_prctl_finished
__traceiter_android_vh_ufs_send_command
__traceiter_android_vh_ufs_send_tm_command
@@ -2018,6 +2020,7 @@
__tracepoint_android_vh_rwsem_wake
__tracepoint_android_vh_rwsem_write_finished
__tracepoint_android_vh_scheduler_tick
+ __tracepoint_android_vh_scmi_timeout_sync
__tracepoint_android_vh_selinux_avc_insert
__tracepoint_android_vh_selinux_avc_lookup
__tracepoint_android_vh_selinux_avc_node_delete
@@ -2030,6 +2033,7 @@
__tracepoint_android_vh_set_module_permit_after_init
__tracepoint_android_vh_set_module_permit_before_init
__tracepoint_android_vh_set_wake_flags
+ __tracepoint_android_vh_snd_soc_card_get_comp_chain
__tracepoint_android_vh_syscall_prctl_finished
__tracepoint_android_vh_ufs_send_command
__tracepoint_android_vh_ufs_send_tm_command
diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus
index a0f221271a40..5476614fa58e 100644
--- a/android/abi_gki_aarch64_oplus
+++ b/android/abi_gki_aarch64_oplus
@@ -1173,7 +1173,10 @@
ioremap_cache
iounmap
__iowrite32_copy
+ ip6_local_out
+ ip6_route_me_harder
ipi_desc_get
+ ip_local_out
ip_route_me_harder
iput
ipv6_find_hdr
@@ -1526,6 +1529,7 @@
net_namespace_list
net_ns_type_operations
net_ratelimit
+ nf_ct_attach
nf_ct_delete
nf_register_net_hooks
nf_unregister_net_hooks
@@ -2254,6 +2258,7 @@
si_swapinfo
sk_alloc
skb_add_rx_frag
+ __skb_checksum_complete
skb_checksum_help
skb_clone
skb_clone_sk
@@ -2263,6 +2268,7 @@
skb_copy_datagram_iter
skb_copy_expand
skb_dequeue
+ skb_dump
skb_ensure_writable
skb_free_datagram
__skb_get_hash
@@ -2592,8 +2598,10 @@
__traceiter_android_vh_clear_mask_adjust
__traceiter_android_vh_clear_reserved_fmt_fields
__traceiter_android_vh_commit_creds
+ __traceiter_android_vh_cpufreq_acct_update_power
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
+ __traceiter_android_vh_cpu_up
__traceiter_android_vh_do_send_sig_info
__traceiter_android_vh_em_cpu_energy
__traceiter_android_vh_exclude_reserved_zone
@@ -2617,6 +2625,12 @@
__traceiter_android_vh_jiffies_update
__traceiter_android_vh_kmalloc_slab
__traceiter_android_vh_logbuf
+ __traceiter_android_vh_mem_cgroup_alloc
+ __traceiter_android_vh_mem_cgroup_css_offline
+ __traceiter_android_vh_mem_cgroup_css_online
+ __traceiter_android_vh_mem_cgroup_free
+ __traceiter_android_vh_mem_cgroup_id_remove
+ __traceiter_android_vh_meminfo_proc_show
__traceiter_android_vh_mutex_unlock_slowpath
__traceiter_android_vh_mutex_wait_finish
__traceiter_android_vh_mutex_wait_start
@@ -2625,6 +2639,7 @@
__traceiter_android_vh_printk_hotplug
__traceiter_android_vh_process_killed
__traceiter_android_vh_revert_creds
+ __traceiter_android_vh_rmqueue
__traceiter_android_vh_rwsem_init
__traceiter_android_vh_rwsem_wake
__traceiter_android_vh_rwsem_wake_finish
@@ -2653,6 +2668,7 @@
__traceiter_android_vh_syscall_prctl_finished
__traceiter_android_vh_timer_calc_index
__traceiter_android_vh_tune_inactive_ratio
+ __traceiter_android_vh_tune_scan_type
__traceiter_android_vh_tune_swappiness
__traceiter_android_vh_ufs_compl_command
__traceiter_android_vh_ufs_send_command
@@ -2673,9 +2689,11 @@
__traceiter_sched_overutilized_tp
__traceiter_sched_stat_blocked
__traceiter_sched_stat_iowait
+ __traceiter_sched_stat_sleep
__traceiter_sched_stat_wait
__traceiter_sched_switch
__traceiter_sched_update_nr_running_tp
+ __traceiter_sched_waking
__traceiter_suspend_resume
__traceiter_task_newtask
__traceiter_task_rename
@@ -2766,8 +2784,10 @@
__tracepoint_android_vh_clear_mask_adjust
__tracepoint_android_vh_clear_reserved_fmt_fields
__tracepoint_android_vh_commit_creds
+ __tracepoint_android_vh_cpufreq_acct_update_power
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
+ __tracepoint_android_vh_cpu_up
__tracepoint_android_vh_do_send_sig_info
__tracepoint_android_vh_em_cpu_energy
__tracepoint_android_vh_exclude_reserved_zone
@@ -2791,6 +2811,12 @@
__tracepoint_android_vh_jiffies_update
__tracepoint_android_vh_kmalloc_slab
__tracepoint_android_vh_logbuf
+ __tracepoint_android_vh_mem_cgroup_alloc
+ __tracepoint_android_vh_mem_cgroup_css_offline
+ __tracepoint_android_vh_mem_cgroup_css_online
+ __tracepoint_android_vh_mem_cgroup_free
+ __tracepoint_android_vh_mem_cgroup_id_remove
+ __tracepoint_android_vh_meminfo_proc_show
__tracepoint_android_vh_mutex_unlock_slowpath
__tracepoint_android_vh_mutex_wait_finish
__tracepoint_android_vh_mutex_wait_start
@@ -2799,6 +2825,7 @@
__tracepoint_android_vh_printk_hotplug
__tracepoint_android_vh_process_killed
__tracepoint_android_vh_revert_creds
+ __tracepoint_android_vh_rmqueue
__tracepoint_android_vh_rwsem_init
__tracepoint_android_vh_rwsem_wake
__tracepoint_android_vh_rwsem_wake_finish
@@ -2827,6 +2854,7 @@
__tracepoint_android_vh_syscall_prctl_finished
__tracepoint_android_vh_timer_calc_index
__tracepoint_android_vh_tune_inactive_ratio
+ __tracepoint_android_vh_tune_scan_type
__tracepoint_android_vh_tune_swappiness
__tracepoint_android_vh_ufs_compl_command
__tracepoint_android_vh_ufs_send_command
@@ -2850,9 +2878,11 @@
__tracepoint_sched_overutilized_tp
__tracepoint_sched_stat_blocked
__tracepoint_sched_stat_iowait
+ __tracepoint_sched_stat_sleep
__tracepoint_sched_stat_wait
__tracepoint_sched_switch
__tracepoint_sched_update_nr_running_tp
+ __tracepoint_sched_waking
tracepoint_srcu
__tracepoint_suspend_resume
__tracepoint_task_newtask
diff --git a/android/abi_gki_aarch64_rockchip b/android/abi_gki_aarch64_rockchip
index d2a2cad1d6cf..dd78baf2a17a 100644
--- a/android/abi_gki_aarch64_rockchip
+++ b/android/abi_gki_aarch64_rockchip
@@ -56,7 +56,11 @@
__clk_get_name
clk_get_parent
clk_get_rate
+ clk_hw_get_flags
clk_hw_get_name
+ clk_hw_get_parent
+ clk_hw_get_rate
+ __clk_mux_determine_rate
clk_notifier_register
clk_notifier_unregister
clk_prepare
@@ -109,6 +113,7 @@
del_gendisk
del_timer
del_timer_sync
+ desc_to_gpio
destroy_workqueue
dev_driver_string
_dev_err
@@ -140,9 +145,10 @@
devm_devfreq_register_opp_notifier
devm_extcon_dev_allocate
devm_extcon_dev_register
- devm_extcon_register_notifier
devm_free_irq
devm_fwnode_gpiod_get_index
+ devm_get_clk_from_child
+ devm_gpiochip_add_data_with_key
devm_gpiod_get
devm_gpiod_get_index
devm_gpiod_get_index_optional
@@ -156,18 +162,21 @@
devm_kmemdup
devm_kstrdup
devm_led_classdev_register_ext
+ devm_mfd_add_devices
devm_nvmem_register
devm_of_clk_add_hw_provider
__devm_of_phy_provider_register
devm_phy_create
devm_phy_get
devm_pinctrl_get
+ devm_pinctrl_register
devm_platform_get_and_ioremap_resource
devm_platform_ioremap_resource
devm_platform_ioremap_resource_byname
devm_power_supply_register
devm_pwm_get
devm_regmap_field_alloc
+ __devm_regmap_init
__devm_regmap_init_i2c
__devm_regmap_init_mmio_clk
devm_regulator_bulk_get
@@ -294,7 +303,6 @@
dummy_irq_chip
enable_irq
extcon_get_edev_by_phandle
- extcon_get_property
extcon_get_state
extcon_register_notifier
extcon_set_state_sync
@@ -308,6 +316,7 @@
flush_workqueue
fpsimd_context_busy
frame_vector_to_pages
+ free_irq
__free_pages
free_pages
fwnode_handle_put
@@ -340,6 +349,7 @@
gpiod_set_value_cansleep
gpiod_to_irq
gpio_to_desc
+ handle_nested_irq
handle_simple_irq
hid_debug
hid_hw_close
@@ -358,6 +368,7 @@
i2c_get_adapter
i2c_put_adapter
i2c_register_driver
+ i2c_smbus_read_byte_data
__i2c_smbus_xfer
i2c_smbus_xfer
i2c_transfer
@@ -383,11 +394,14 @@
iommu_get_domain_for_dev
__ioremap
iounmap
+ irq_create_mapping_affinity
__irq_domain_add
irq_domain_remove
irq_find_mapping
irq_get_irq_data
+ irq_modify_status
irq_set_chained_handler_and_data
+ irq_set_chip
irq_set_chip_and_handler_name
irq_set_chip_data
irq_set_irq_type
@@ -449,7 +463,9 @@
memdup_user
memset
memstart_addr
+ mfd_remove_devices
mmc_of_parse
+ mod_delayed_work_on
mod_timer
module_layout
module_put
@@ -471,6 +487,7 @@
of_clk_del_provider
of_clk_get
of_clk_get_by_name
+ of_clk_src_onecell_get
of_clk_src_simple_get
of_count_phandle_with_args
of_devfreq_cooling_register_power
@@ -522,11 +539,15 @@
phy_power_off
phy_power_on
phy_set_mode_ext
+ pinconf_generic_dt_node_to_map
pinctrl_dev_get_drvdata
+ pinctrl_gpio_direction_input
+ pinctrl_gpio_direction_output
pinctrl_lookup_state
pinctrl_pm_select_default_state
pinctrl_pm_select_sleep_state
pinctrl_select_state
+ pinctrl_utils_free_map
platform_bus_type
platform_device_put
platform_device_register_full
@@ -593,7 +614,9 @@
regmap_bulk_write
regmap_field_read
regmap_field_update_bits_base
+ regmap_irq_get_domain
regmap_irq_get_virq
+ regmap_raw_write
regmap_read
regmap_update_bits_base
regmap_write
@@ -616,6 +639,7 @@
regulator_set_voltage_time_sel
remap_pfn_range
remove_proc_entry
+ request_threaded_irq
reset_control_assert
reset_control_deassert
revalidate_disk_size
@@ -624,6 +648,7 @@
rtc_tm_to_time64
rtc_valid_tm
scatterwalk_map_and_copy
+ sched_clock
schedule
schedule_timeout
scnprintf
@@ -676,6 +701,8 @@
snd_soc_put_enum_double
snd_soc_put_volsw
snprintf
+ __spi_register_driver
+ spi_sync
sprintf
sscanf
__stack_chk_fail
@@ -694,6 +721,7 @@
sysfs_create_file_ns
sysfs_create_group
sysfs_create_link
+ __sysfs_match_string
sysfs_remove_group
sysfs_remove_link
system_unbound_wq
@@ -714,6 +742,7 @@
update_devfreq
up_read
up_write
+ usb_debug_root
usleep_range
uuid_null
v4l2_async_notifier_cleanup
@@ -826,7 +855,6 @@
drm_dp_dpcd_write
drm_dp_start_crc
drm_dp_stop_crc
- irq_modify_status
# required by ch.ko
param_array_ops
@@ -839,6 +867,15 @@
of_clk_add_hw_provider
of_clk_hw_simple_get
+# required by clk-rk628.ko
+ devm_reset_controller_register
+
+# required by clk-rockchip-regmap.ko
+ clk_hw_get_num_parents
+ clk_hw_get_parent_by_index
+ divider_recalc_rate
+ divider_round_rate_parent
+
# required by clk-rockchip.ko
clk_divider_ops
clk_divider_ro_ops
@@ -846,12 +883,8 @@
clk_fractional_divider_ops
clk_gate_ops
__clk_get_hw
- clk_hw_get_flags
- clk_hw_get_parent
- clk_hw_get_rate
clk_hw_register_composite
clk_hw_round_rate
- __clk_mux_determine_rate
clk_mux_ops
clk_mux_ro_ops
clk_register_composite
@@ -861,7 +894,6 @@
clk_register_mux_table
divider_get_val
match_string
- of_clk_src_onecell_get
register_restart_handler
reset_controller_register
__udelay
@@ -922,7 +954,6 @@
power_supply_get_battery_info
power_supply_put_battery_info
regmap_raw_read
- regmap_raw_write
# required by dw-hdmi-cec.ko
cec_allocate_adapter
@@ -968,7 +999,6 @@
extcon_set_property_capability
hdmi_drm_infoframe_pack
hdmi_vendor_infoframe_pack
- mod_delayed_work_on
of_get_i2c_adapter_by_node
# required by dw-mipi-dsi.ko
@@ -1031,7 +1061,6 @@
usb_add_hcd
usb_calc_bus_time
usb_create_hcd
- usb_debug_root
usb_del_gadget_udc
usb_disabled
usb_ep_set_maxpacket_limit
@@ -1060,6 +1089,23 @@
# required by fan53555.ko
gpiod_set_raw_value
+# required by fusb302.ko
+ device_get_named_child_node
+ disable_irq_nosync
+ extcon_get_extcon_dev
+ fwnode_create_software_node
+ i2c_smbus_read_i2c_block_data
+ i2c_smbus_write_byte_data
+ i2c_smbus_write_i2c_block_data
+ tcpm_cc_change
+ tcpm_pd_hard_reset
+ tcpm_pd_receive
+ tcpm_pd_transmit_complete
+ tcpm_register_port
+ tcpm_unregister_port
+ tcpm_vbus_change
+ vsnprintf
+
# required by ghash-ce.ko
aes_expandkey
gf128mul_lle
@@ -1073,7 +1119,6 @@
handle_edge_irq
handle_level_irq
__irq_alloc_domain_generic_chips
- irq_create_mapping_affinity
irq_gc_ack_set_bit
irq_gc_mask_clr_bit
irq_gc_mask_set_bit
@@ -1114,19 +1159,16 @@
i2c_verify_client
# required by i2c-gpio.ko
- desc_to_gpio
i2c_bit_add_numbered_bus
# required by i2c-hid.ko
dev_printk
- free_irq
hid_add_device
hid_allocate_device
hid_destroy_device
hid_input_report
hid_parse_report
i2c_smbus_read_byte
- request_threaded_irq
# required by i2c-mux.ko
i2c_add_numbered_adapter
@@ -1381,6 +1423,7 @@
nvmem_cell_get
# required by phy-rockchip-inno-usb2.ko
+ devm_extcon_register_notifier
extcon_set_state
extcon_sync
wakeup_source_remove
@@ -1389,16 +1432,24 @@
strcasecmp
usb_add_phy
+# required by phy-rockchip-typec.ko
+ extcon_get_property
+
# required by phy-rockchip-usb.ko
__of_reset_control_get
-# required by pinctrl-rk805.ko
- devm_gpiochip_add_data_with_key
- devm_pinctrl_register
- pinconf_generic_dt_node_to_map
- pinctrl_gpio_direction_input
- pinctrl_gpio_direction_output
- pinctrl_utils_free_map
+# required by pinctrl-rk628.ko
+ irq_domain_xlate_twocell
+ pinctrl_add_gpio_range
+ pinctrl_find_gpio_range_from_pin
+
+# required by pinctrl-rockchip.ko
+ of_find_node_by_phandle
+ of_platform_populate
+ pinconf_generic_parse_dt_config
+ pinctrl_force_default
+ pinctrl_force_sleep
+ pin_get_name
# required by pl330.ko
amba_driver_register
@@ -1448,22 +1499,35 @@
devres_release
kernel_kobj
+# required by rk628.ko
+ irq_dispose_mapping
+ irq_domain_xlate_onetwocell
+ irq_set_parent
+ mfd_add_devices
+
# required by rk805-pwrkey.ko
devm_request_any_context_irq
input_set_capability
+# required by rk806-core.ko
+ devm_regmap_add_irq_chip
+
+# required by rk806-spi.ko
+ spi_write_then_read
+
# required by rk808-regulator.ko
gpiod_is_active_low
# required by rk808.ko
- devm_mfd_add_devices
- i2c_smbus_read_byte_data
kobject_create_and_add
platform_device_add
platform_device_alloc
+ pm_power_off_prepare
+ register_syscore_ops
regmap_add_irq_chip
regmap_del_irq_chip
- regmap_irq_get_domain
+ system_state
+ unregister_syscore_ops
# required by rk818_battery.ko
blocking_notifier_call_chain
@@ -1571,9 +1635,6 @@
iio_push_to_buffers
iio_trigger_notify_done
-# required by rockchip_sip.ko
- sched_clock
-
# required by rockchip_thermal.ko
devm_thermal_zone_of_sensor_register
thermal_zone_device_disable
@@ -1719,6 +1780,7 @@
drm_property_create_range
drm_property_destroy
__drm_puts_seq_file
+ drm_rect_calc_hscale
drm_send_event_locked
drm_simple_encoder_init
drm_universal_plane_init
@@ -1822,7 +1884,6 @@
of_property_read_variable_u8_array
# required by snd-soc-cx2072x.ko
- __devm_regmap_init
regmap_multi_reg_write
snd_soc_params_to_frame_size
@@ -1840,8 +1901,13 @@
snd_pcm_hw_constraint_eld
snd_soc_dapm_add_routes
+# required by snd-soc-rk817.ko
+ snd_soc_add_component_controls
+ snd_soc_component_exit_regmap
+ snd_soc_component_init_regmap
+ snd_soc_unregister_component
+
# required by snd-soc-simple-card-utils.ko
- devm_get_clk_from_child
devm_kasprintf
devm_kvasprintf
snd_soc_card_jack_new
@@ -1874,9 +1940,7 @@
spi_finalize_current_transfer
# required by spidev.ko
- __spi_register_driver
spi_setup
- spi_sync
stream_open
# required by system_heap.ko
@@ -1889,6 +1953,12 @@
__sg_page_iter_next
__sg_page_iter_start
+# required by tcpci_husb311.ko
+ i2c_smbus_read_word_data
+ tcpci_irq
+ tcpci_register_port
+ tcpci_unregister_port
+
# required by tee.ko
bus_register
bus_unregister
@@ -1913,6 +1983,19 @@
# required by tps65132-regulator.ko
regulator_set_active_discharge_regmap
+# required by typec_displayport.ko
+ fwnode_find_reference
+ sysfs_notify
+ typec_altmode2port
+ typec_altmode_enter
+ typec_altmode_exit
+ typec_altmode_get_partner
+ typec_altmode_notify
+ __typec_altmode_register_driver
+ typec_altmode_unregister_driver
+ typec_altmode_vdm
+ typec_get_negotiated_svdm_version
+
# required by v4l2-fwnode.ko
fwnode_device_is_available
fwnode_get_name
@@ -1970,7 +2053,6 @@
page_endio
register_blkdev
strcpy
- __sysfs_match_string
sysfs_streq
unregister_blkdev
vzalloc
diff --git a/android/abi_gki_aarch64_virtual_device b/android/abi_gki_aarch64_virtual_device
index e2a5103e1b75..33752fac64a8 100644
--- a/android/abi_gki_aarch64_virtual_device
+++ b/android/abi_gki_aarch64_virtual_device
@@ -693,9 +693,7 @@
led_set_brightness_nosleep
led_trigger_event
led_trigger_register
- led_trigger_register_simple
led_trigger_unregister
- led_trigger_unregister_simple
# required by lzo-rle.ko
lzorle1x_1_compress
@@ -1349,6 +1347,7 @@
# required by virtio_pci.ko
irq_set_affinity_hint
pci_alloc_irq_vectors_affinity
+ pci_device_is_present
pci_disable_sriov
pci_enable_sriov
pci_find_capability
@@ -1383,8 +1382,6 @@
wait_for_completion_interruptible_timeout
# required by vmw_vsock_virtio_transport.ko
- lock_sock_nested
- release_sock
virtio_transport_connect
virtio_transport_deliver_tap_pkt
virtio_transport_destruct
diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo
index 464ac490992d..d8703539183d 100644
--- a/android/abi_gki_aarch64_vivo
+++ b/android/abi_gki_aarch64_vivo
@@ -1713,6 +1713,8 @@
__traceiter_android_vh_binder_wakeup_ilocked
__traceiter_android_vh_cpu_idle_enter
__traceiter_android_vh_cpu_idle_exit
+ __traceiter_android_vh_filemap_fault_cache_page
+ __traceiter_android_vh_filemap_fault_get_page
__traceiter_android_vh_ftrace_dump_buffer
__traceiter_android_vh_ftrace_format_check
__traceiter_android_vh_ftrace_oops_enter
@@ -1721,6 +1723,7 @@
__traceiter_android_vh_iommu_setup_dma_ops
__traceiter_android_vh_ipi_stop
__traceiter_android_vh_jiffies_update
+ __traceiter_android_vh_mmap_region
__traceiter_android_vh_mmc_attach_sd
__traceiter_android_vh_mmc_blk_mq_rw_recovery
__traceiter_android_vh_mmc_blk_reset
@@ -1732,7 +1735,9 @@
__traceiter_android_vh_show_max_freq
__traceiter_android_vh_show_resume_epoch_val
__traceiter_android_vh_show_suspend_epoch_val
+ __traceiter_android_vh_shrink_slab_bypass
__traceiter_android_vh_timer_calc_index
+ __traceiter_android_vh_try_to_unmap_one
__traceiter_android_vh_ufs_check_int_errors
__traceiter_android_vh_ufs_compl_command
__traceiter_android_vh_ufs_send_command
@@ -1782,10 +1787,15 @@
__tracepoint_android_rvh_set_readahead_gfp_mask
__tracepoint_android_rvh_set_skip_swapcache_flags
__tracepoint_android_rvh_set_task_cpu
+ __tracepoint_android_rvh_tcp_recvmsg
+ __tracepoint_android_rvh_tcp_recvmsg_stat
+ __tracepoint_android_rvh_tcp_sendmsg_locked
__tracepoint_android_rvh_tick_entry
__tracepoint_android_rvh_try_to_wake_up
__tracepoint_android_rvh_try_to_wake_up_success
__tracepoint_android_rvh_ttwu_cond
+ __tracepoint_android_rvh_udp_recvmsg
+ __tracepoint_android_rvh_udp_sendmsg
__tracepoint_android_rvh_update_cpu_capacity
__tracepoint_android_rvh_update_cpus_allowed
__tracepoint_android_rvh_update_misfit_status
@@ -1799,6 +1809,8 @@
__tracepoint_android_vh_cpu_idle_enter
__tracepoint_android_vh_cpu_idle_exit
__tracepoint_android_vh_dup_task_struct
+ __tracepoint_android_vh_filemap_fault_cache_page
+ __tracepoint_android_vh_filemap_fault_get_page
__tracepoint_android_vh_ftrace_dump_buffer
__tracepoint_android_vh_ftrace_format_check
__tracepoint_android_vh_ftrace_oops_enter
@@ -1808,6 +1820,7 @@
__tracepoint_android_vh_ipi_stop
__tracepoint_android_vh_irqtime_account_process_tick
__tracepoint_android_vh_jiffies_update
+ __tracepoint_android_vh_mmap_region
__tracepoint_android_vh_mmc_attach_sd
__tracepoint_android_vh_mmc_blk_mq_rw_recovery
__tracepoint_android_vh_mmc_blk_reset
@@ -1819,7 +1832,9 @@
__tracepoint_android_vh_show_max_freq
__tracepoint_android_vh_show_resume_epoch_val
__tracepoint_android_vh_show_suspend_epoch_val
+ __tracepoint_android_vh_shrink_slab_bypass
__tracepoint_android_vh_timer_calc_index
+ __tracepoint_android_vh_try_to_unmap_one
__tracepoint_android_vh_tune_scan_type
__tracepoint_android_vh_tune_swappiness
__tracepoint_android_vh_ufs_check_int_errors
diff --git a/arch/arm64/Makefile.postlink b/arch/arm64/Makefile.postlink
index eedcf35f8d94..a13789148bfb 100644
--- a/arch/arm64/Makefile.postlink
+++ b/arch/arm64/Makefile.postlink
@@ -3,8 +3,11 @@
#
# This file is included by the generic Kbuild makefile to permit the
# architecture to perform postlink actions on vmlinux and any .ko module file.
-# In this case, we only need it for fips140.ko, which needs a HMAC digest to be
-# injected into it. All other targets are NOPs.
+# In this case, we only need it for fips140.ko, which needs some postprocessing
+# for the integrity check mandated by FIPS. This involves making copies of the
+# relocation sections so that the module will have access to them at
+# initialization time, and calculating and injecting a HMAC digest into the
+# module. All other targets are NOPs.
#
PHONY := __archpost
@@ -15,7 +18,14 @@ include scripts/Kbuild.include
CMD_FIPS140_GEN_HMAC = crypto/fips140_gen_hmac
quiet_cmd_gen_hmac = HMAC $@
- cmd_gen_hmac = $(CMD_FIPS140_GEN_HMAC) $@
+ cmd_gen_hmac = $(OBJCOPY) $@ \
+ --dump-section=$(shell $(READELF) -SW $@|grep -Eo '\.rela\.text\S*')=$@.rela.text \
+ --dump-section=$(shell $(READELF) -SW $@|grep -Eo '\.rela\.rodata\S*')=$@.rela.rodata \
+ --add-section=.init.rela.text=$@.rela.text \
+ --add-section=.init.rela.rodata=$@.rela.rodata \
+ --set-section-flags=.init.rela.text=alloc,readonly \
+ --set-section-flags=.init.rela.rodata=alloc,readonly && \
+ $(CMD_FIPS140_GEN_HMAC) $@
# `@true` prevents complaints when there is nothing to be done
@@ -29,7 +39,7 @@ $(objtree)/crypto/fips140.ko: FORCE
@true
clean:
- @true
+ rm -f $(objtree)/crypto/fips140.ko.rela.*
PHONY += FORCE clean
diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig
index 30bd964dd2c8..3ae364535af6 100644
--- a/arch/arm64/configs/gki_defconfig
+++ b/arch/arm64/configs/gki_defconfig
@@ -495,6 +495,7 @@ CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
CONFIG_USB_CONFIGFS_F_UAC2=y
CONFIG_USB_CONFIGFS_F_MIDI=y
CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=y
@@ -667,7 +668,10 @@ CONFIG_MAGIC_SYSRQ=y
CONFIG_UBSAN=y
CONFIG_UBSAN_TRAP=y
CONFIG_UBSAN_LOCAL_BOUNDS=y
-# CONFIG_UBSAN_MISC is not set
+# CONFIG_UBSAN_SHIFT is not set
+# CONFIG_UBSAN_OBJECT_SIZE is not set
+# CONFIG_UBSAN_BOOL is not set
+# CONFIG_UBSAN_ENUM is not set
CONFIG_PAGE_OWNER=y
CONFIG_PAGE_PINNER=y
CONFIG_DEBUG_MEMORY_INIT=y
diff --git a/arch/arm64/configs/rockchip_gki.fragment b/arch/arm64/configs/rockchip_gki.fragment
new file mode 100644
index 000000000000..36645c46d0b4
--- /dev/null
+++ b/arch/arm64/configs/rockchip_gki.fragment
@@ -0,0 +1,237 @@
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_ARM_ROCKCHIP_BUS_DEVFREQ=m
+CONFIG_ARM_ROCKCHIP_CPUFREQ=m
+# CONFIG_ATA_SFF is not set
+CONFIG_BACKLIGHT_PWM=m
+CONFIG_BATTERY_CW2015=m
+CONFIG_BATTERY_RK817=m
+CONFIG_BATTERY_RK818=m
+CONFIG_BLK_DEV_NVME=m
+CONFIG_BMA2XX_ACC=m
+CONFIG_CHARGER_BQ25700=m
+CONFIG_CHARGER_RK817=m
+CONFIG_CHARGER_RK818=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CLK_RK1808 is not set
+# CONFIG_CLK_RK3308 is not set
+CONFIG_COMMON_CLK_PWM=m
+CONFIG_COMMON_CLK_RK808=m
+CONFIG_COMMON_CLK_ROCKCHIP=m
+CONFIG_COMMON_CLK_SCMI=m
+CONFIG_COMPASS_AK8963=m
+CONFIG_COMPASS_AK8975=m
+CONFIG_COMPASS_DEVICE=m
+CONFIG_CPUFREQ_DT=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_PX30=y
+CONFIG_CPU_RK3328=y
+CONFIG_CPU_RK3368=y
+CONFIG_CPU_RK3399=y
+CONFIG_CPU_RK3568=y
+CONFIG_CRYPTO_AES_ARM64_CE_CCM=m
+CONFIG_CRYPTO_GHASH_ARM64_CE=m
+CONFIG_CRYPTO_SHA1_ARM64_CE=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_DEVFREQ_EVENT_ROCKCHIP_NOCP=m
+CONFIG_DMABUF_HEAPS_CMA=m
+CONFIG_DMABUF_HEAPS_SYSTEM=m
+CONFIG_DRAGONRISE_FF=y
+CONFIG_DRM_DW_HDMI_CEC=m
+CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
+CONFIG_DRM_PANEL_SIMPLE=m
+CONFIG_DRM_ROCKCHIP=m
+CONFIG_DRM_SII902X=m
+CONFIG_DTC_SYMBOLS=y
+# CONFIG_DWMAC_GENERIC is not set
+CONFIG_DW_WATCHDOG=m
+CONFIG_GPIO_ROCKCHIP=m
+CONFIG_GREENASIA_FF=y
+CONFIG_GSENSOR_DEVICE=m
+CONFIG_GS_DA223=m
+CONFIG_GS_KXTJ9=m
+CONFIG_GS_LIS3DH=m
+CONFIG_GS_LSM303D=m
+CONFIG_GS_MC3230=m
+CONFIG_GS_MMA7660=m
+CONFIG_GS_MMA8452=m
+CONFIG_GS_MXC6655XA=m
+CONFIG_GS_SC7660=m
+CONFIG_GS_SC7A20=m
+CONFIG_GS_SC7A30=m
+CONFIG_GYROSCOPE_DEVICE=m
+CONFIG_GYRO_EWTSA=m
+CONFIG_GYRO_L3G20D=m
+CONFIG_GYRO_L3G4200D=m
+CONFIG_GYRO_LSM330=m
+CONFIG_GYRO_MPU6500=m
+CONFIG_GYRO_MPU6880=m
+CONFIG_HALL_DEVICE=m
+CONFIG_HID_A4TECH=m
+CONFIG_HID_ACRUX=m
+CONFIG_HID_ACRUX_FF=y
+CONFIG_HID_ALPS=m
+CONFIG_HID_APPLEIR=m
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+CONFIG_HID_CYPRESS=m
+CONFIG_HID_DRAGONRISE=m
+CONFIG_HID_EMS_FF=m
+CONFIG_HID_EZKEY=m
+CONFIG_HID_GREENASIA=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HID_ICADE=m
+CONFIG_HID_KENSINGTON=m
+CONFIG_HID_KEYTOUCH=m
+CONFIG_HID_KYE=m
+CONFIG_HID_LCPOWER=m
+CONFIG_HID_LENOVO=m
+CONFIG_HID_MONTEREY=m
+CONFIG_HID_NTRIG=m
+CONFIG_HID_ORTEK=m
+CONFIG_HID_PANTHERLORD=m
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_PRIMAX=m
+CONFIG_HID_SAITEK=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SMARTJOYPLUS=m
+CONFIG_HID_SPEEDLINK=m
+CONFIG_HID_STEELSERIES=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_THINGM=m
+CONFIG_HID_THRUSTMASTER=m
+CONFIG_HID_TIVO=m
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_WALTOP=m
+CONFIG_HID_ZEROPLUS=m
+CONFIG_HID_ZYDACRON=m
+CONFIG_HS_MH248=m
+CONFIG_HW_RANDOM_ROCKCHIP=m
+CONFIG_I2C_CHARDEV=m
+CONFIG_I2C_GPIO=m
+CONFIG_I2C_HID=m
+CONFIG_I2C_RK3X=m
+CONFIG_IIO_BUFFER_CB=m
+CONFIG_INPUT_RK805_PWRKEY=m
+CONFIG_ION=y
+CONFIG_ION_SYSTEM_HEAP=y
+CONFIG_JOLIET=y
+CONFIG_KEYBOARD_ADC=m
+CONFIG_LEDS_GPIO=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LIGHT_DEVICE=m
+CONFIG_LSM330_ACC=m
+CONFIG_LS_CM3217=m
+CONFIG_LS_CM3218=m
+CONFIG_LS_STK3410=m
+# CONFIG_MALI400_PROFILING is not set
+CONFIG_MFD_RK808=m
+CONFIG_MMC_DW=m
+CONFIG_MMC_DW_ROCKCHIP=m
+CONFIG_MMC_SDHCI_OF_ARASAN=m
+CONFIG_MMC_SDHCI_OF_DWCMSHC=m
+CONFIG_MPU6500_ACC=m
+CONFIG_MPU6880_ACC=m
+CONFIG_OPTEE=m
+CONFIG_PANTHERLORD_FF=y
+CONFIG_PHY_ROCKCHIP_DP=m
+CONFIG_PHY_ROCKCHIP_EMMC=m
+CONFIG_PHY_ROCKCHIP_INNO_DSIDPHY=m
+CONFIG_PHY_ROCKCHIP_INNO_USB2=m
+CONFIG_PHY_ROCKCHIP_INNO_USB3=m
+CONFIG_PHY_ROCKCHIP_NANENG_COMBO_PHY=m
+CONFIG_PHY_ROCKCHIP_NANENG_EDP=m
+CONFIG_PHY_ROCKCHIP_PCIE=m
+CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=m
+CONFIG_PHY_ROCKCHIP_TYPEC=m
+CONFIG_PHY_ROCKCHIP_USB=m
+CONFIG_PINCTRL_RK805=m
+CONFIG_PINCTRL_ROCKCHIP=m
+CONFIG_PL330_DMA=m
+CONFIG_PROXIMITY_DEVICE=m
+CONFIG_PS_STK3410=m
+CONFIG_PWM_ROCKCHIP=m
+CONFIG_REGULATOR_ACT8865=m
+CONFIG_REGULATOR_FAN53555=m
+CONFIG_REGULATOR_GPIO=m
+CONFIG_REGULATOR_LP8752=m
+CONFIG_REGULATOR_MP8865=m
+CONFIG_REGULATOR_PWM=m
+CONFIG_REGULATOR_RK808=m
+CONFIG_REGULATOR_TPS65132=m
+CONFIG_REGULATOR_XZ3216=m
+CONFIG_RK_CONSOLE_THREAD=y
+CONFIG_RK_NAND=m
+CONFIG_ROCKCHIP_ANALOGIX_DP=y
+CONFIG_ROCKCHIP_CDN_DP=y
+CONFIG_ROCKCHIP_CPUINFO=m
+CONFIG_ROCKCHIP_DEBUG=m
+CONFIG_ROCKCHIP_DW_HDMI=y
+CONFIG_ROCKCHIP_DW_MIPI_DSI=y
+CONFIG_ROCKCHIP_EFUSE=m
+CONFIG_ROCKCHIP_FIQ_DEBUGGER=m
+CONFIG_ROCKCHIP_GRF=m
+CONFIG_ROCKCHIP_INNO_HDMI=y
+CONFIG_ROCKCHIP_IODOMAIN=m
+CONFIG_ROCKCHIP_IOMMU=m
+CONFIG_ROCKCHIP_IPA=m
+CONFIG_ROCKCHIP_LVDS=y
+CONFIG_ROCKCHIP_OPP=m
+CONFIG_ROCKCHIP_OTP=m
+CONFIG_ROCKCHIP_PHY=m
+CONFIG_ROCKCHIP_PM_DOMAINS=m
+CONFIG_ROCKCHIP_PVTM=m
+CONFIG_ROCKCHIP_REMOTECTL=m
+CONFIG_ROCKCHIP_REMOTECTL_PWM=m
+CONFIG_ROCKCHIP_RGB=y
+CONFIG_ROCKCHIP_SARADC=m
+CONFIG_ROCKCHIP_SIP=m
+CONFIG_ROCKCHIP_SYSTEM_MONITOR=m
+CONFIG_ROCKCHIP_THERMAL=m
+CONFIG_ROCKCHIP_VENDOR_STORAGE=m
+CONFIG_ROCKCHIP_VENDOR_STORAGE_UPDATE_LOADER=y
+CONFIG_RTC_DRV_RK808=m
+CONFIG_SENSOR_DEVICE=m
+CONFIG_SMARTJOYPLUS_FF=y
+CONFIG_SND_SIMPLE_CARD=m
+CONFIG_SND_SOC_BT_SCO=m
+CONFIG_SND_SOC_CX2072X=m
+CONFIG_SND_SOC_DUMMY_CODEC=m
+CONFIG_SND_SOC_ES7202=m
+CONFIG_SND_SOC_ES7210=m
+CONFIG_SND_SOC_ES7243E=m
+CONFIG_SND_SOC_ES8311=m
+CONFIG_SND_SOC_ES8316=m
+CONFIG_SND_SOC_ES8396=m
+CONFIG_SND_SOC_RK3328=m
+CONFIG_SND_SOC_RK817=m
+CONFIG_SND_SOC_RK_CODEC_DIGITAL=m
+CONFIG_SND_SOC_ROCKCHIP=m
+CONFIG_SND_SOC_ROCKCHIP_PDM=m
+CONFIG_SND_SOC_ROCKCHIP_SPDIF=m
+CONFIG_SND_SOC_RT5640=m
+CONFIG_SND_SOC_SPDIF=m
+CONFIG_SPI_ROCKCHIP=m
+CONFIG_SPI_SPIDEV=m
+CONFIG_SW_SYNC=m
+CONFIG_SYSCON_REBOOT_MODE=m
+CONFIG_TEE=m
+CONFIG_TEST_POWER=m
+CONFIG_TOUCHSCREEN_GSLX680_PAD=m
+CONFIG_TOUCHSCREEN_GT1X=m
+CONFIG_TYPEC_DP_ALTMODE=m
+CONFIG_TYPEC_FUSB302=m
+CONFIG_VIDEO_DW9714=m
+CONFIG_VIDEO_OV2680=m
+CONFIG_VIDEO_OV5695=m
+CONFIG_ZISOFS=y
+CONFIG_ZRAM=m
+CONFIG_ZSMALLOC=m
+# CONFIG_USB_DUMMY_HCD is not set
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index f4f14a9978ec..8cd9ef7bdf60 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -45,7 +45,6 @@
#include
#include
#include
-#include
#include
#include
@@ -572,11 +571,6 @@ __notrace_funcgraph struct task_struct *__switch_to(struct task_struct *prev,
ssbs_thread_switch(next);
erratum_1418040_thread_switch(prev, next);
ptrauth_thread_switch_user(next);
- /*
- * vendor hook is needed before the dsb(),
- * because MPAM is related to cache maintenance.
- */
- trace_android_vh_mpam_set(prev, next);
/*
* Complete any pending TLB or cache maintenance on this CPU in case
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 4a1f494ef03f..72fa3c00229a 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -311,6 +311,10 @@ SECTIONS
#else
.data : AT(ADDR(.data) - LOAD_OFFSET) {
DATA_DATA
+#ifdef CONFIG_UBSAN
+ *(.data..Lubsan_data*)
+ *(.data..Lubsan_type*)
+#endif
*(.data.rel*)
*(.toc1)
*(.branch_lt)
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
index 332d9b539ed8..7c344566df2a 100644
--- a/arch/x86/configs/gki_defconfig
+++ b/arch/x86/configs/gki_defconfig
@@ -446,6 +446,7 @@ CONFIG_USB_CONFIGFS_F_ACC=y
CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
CONFIG_USB_CONFIGFS_F_MIDI=y
CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
CONFIG_TYPEC=y
CONFIG_TYPEC_TCPM=y
CONFIG_TYPEC_TCPCI=y
@@ -601,7 +602,10 @@ CONFIG_MAGIC_SYSRQ=y
CONFIG_UBSAN=y
CONFIG_UBSAN_TRAP=y
CONFIG_UBSAN_LOCAL_BOUNDS=y
-# CONFIG_UBSAN_MISC is not set
+# CONFIG_UBSAN_SHIFT is not set
+# CONFIG_UBSAN_OBJECT_SIZE is not set
+# CONFIG_UBSAN_BOOL is not set
+# CONFIG_UBSAN_ENUM is not set
CONFIG_PAGE_OWNER=y
CONFIG_PAGE_PINNER=y
CONFIG_DEBUG_MEMORY_INIT=y
diff --git a/build.config.gki.aarch64.fips140 b/build.config.gki.aarch64.fips140
index a1a75a8dbeee..f7ef7dae35e3 100644
--- a/build.config.gki.aarch64.fips140
+++ b/build.config.gki.aarch64.fips140
@@ -15,3 +15,4 @@ DEFCONFIG=fips140_gki_defconfig
KMI_SYMBOL_LIST=android/abi_gki_aarch64_fips140
PRE_DEFCONFIG_CMDS="cat ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/fips140_gki.fragment > ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG};"
POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG}"
+KMI_SYMBOL_LIST_ADD_ONLY=1
diff --git a/build.config.rockchip b/build.config.rockchip
new file mode 100644
index 000000000000..e7f08311793b
--- /dev/null
+++ b/build.config.rockchip
@@ -0,0 +1,8 @@
+. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64
+
+
+DEFCONFIG=rockchip_aarch64_gki_defconfig
+KMI_SYMBOL_LIST=android/abi_gki_aarch64_rockchip
+PRE_DEFCONFIG_CMDS="KCONFIG_CONFIG=${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG} ${ROOT_DIR}/common/scripts/kconfig/merge_config.sh -m -r ${ROOT_DIR}/common/arch/arm64/configs/gki_defconfig ${ROOT_DIR}/common/arch/arm64/configs/rockchip_gki.config"
+POST_DEFCONFIG_CMDS="rm ${ROOT_DIR}/common/arch/arm64/configs/${DEFCONFIG}"
+
diff --git a/crypto/Makefile b/crypto/Makefile
index aff52de1f84b..9ada957d4cbd 100644
--- a/crypto/Makefile
+++ b/crypto/Makefile
@@ -200,14 +200,19 @@ obj-$(CONFIG_CRYPTO_SIMD) += crypto_simd.o
ifneq ($(CONFIG_CRYPTO_FIPS140_MOD),)
-FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO
+FIPS140_CFLAGS := -D__DISABLE_EXPORTS -DBUILD_FIPS140_KO -include fips140-defs.h
+
+CFLAGS_jitterentropy-fips.o := -O0
+KASAN_SANITIZE_jitterentropy-fips.o = n
+UBSAN_SANITIZE_jitterentropy-fips.o = n
#
# Create a separate FIPS archive containing a duplicate of each builtin generic
# module that is in scope for FIPS 140-2 certification
#
-crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o gcm.o xts.o hmac.o memneq.o \
- gf128mul.o aes_generic.o lib-crypto-aes.o \
+crypto-fips-objs := drbg.o ecb.o cbc.o ctr.o cts.o gcm.o xts.o hmac.o cmac.o \
+ memneq.o gf128mul.o aes_generic.o lib-crypto-aes.o \
+ jitterentropy.o jitterentropy-kcapi.o \
sha1_generic.o sha256_generic.o sha512_generic.o \
lib-sha1.o lib-crypto-sha256.o
crypto-fips-objs := $(foreach o,$(crypto-fips-objs),$(o:.o=-fips.o))
@@ -228,10 +233,17 @@ $(obj)/lib-crypto-%-fips.o: $(srctree)/lib/crypto/%.c FORCE
$(obj)/crypto-fips.a: $(addprefix $(obj)/,$(crypto-fips-objs)) FORCE
$(call if_changed,ar_and_symver)
-fips140-objs := fips140-module.o fips140-selftests.o crypto-fips.a
-obj-m += fips140.o
+fips140-objs := \
+ fips140-alg-registration.o \
+ fips140-module.o \
+ fips140-refs.o \
+ fips140-selftests.o \
+ crypto-fips.a
+obj-m += fips140.o
+CFLAGS_fips140-alg-registration.o += $(FIPS140_CFLAGS)
CFLAGS_fips140-module.o += $(FIPS140_CFLAGS)
+CFLAGS_fips140-selftests.o += $(FIPS140_CFLAGS)
hostprogs-always-y := fips140_gen_hmac
HOSTLDLIBS_fips140_gen_hmac := -lcrypto -lelf
diff --git a/crypto/fips140-alg-registration.c b/crypto/fips140-alg-registration.c
new file mode 100644
index 000000000000..03757f88890b
--- /dev/null
+++ b/crypto/fips140-alg-registration.c
@@ -0,0 +1,388 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Block crypto operations until tests complete
+ *
+ * Copyright 2021 Google LLC
+ *
+ * This file defines the fips140_crypto_register_*() functions, to which all
+ * calls to crypto_register_*() in the module are redirected. These functions
+ * override the tfm initialization function of each algorithm to insert a wait
+ * for the module having completed its self-tests and integrity check.
+ *
+ * The exact field that we override depends on the algorithm type. For
+ * algorithm types that have a strongly-typed initialization function pointer
+ * (e.g. skcipher), we must override that, since cra_init isn't guaranteed to be
+ * called for those despite the field being present in the base struct. For the
+ * other algorithm types (e.g. "cipher") we must override cra_init.
+ *
+ * All of this applies to both normal algorithms and template instances.
+ *
+ * The purpose of all of this is to meet a FIPS requirement where the module
+ * must not produce any output from cryptographic algorithms until it completes
+ * its tests. Technically this is impossible, but this solution meets the
+ * intent of the requirement, assuming the user makes a supported sequence of
+ * API calls. Note that we can't simply run the tests before registering the
+ * algorithms, as the algorithms must be registered in order to run the tests.
+ *
+ * It would be much easier to handle this in the kernel's crypto API framework.
+ * Unfortunately, that was deemed insufficient because the module itself is
+ * required to do the enforcement. What is *actually* required is still very
+ * vague, but the approach implemented here should meet the requirement.
+ */
+
+/*
+ * This file is the one place in fips140.ko that needs to call the kernel's real
+ * algorithm registration functions, so #undefine all the macros from
+ * fips140-defs.h so that the "fips140_" prefix doesn't automatically get added.
+ */
+#undef aead_register_instance
+#undef ahash_register_instance
+#undef crypto_register_aead
+#undef crypto_register_aeads
+#undef crypto_register_ahash
+#undef crypto_register_ahashes
+#undef crypto_register_alg
+#undef crypto_register_algs
+#undef crypto_register_rng
+#undef crypto_register_rngs
+#undef crypto_register_shash
+#undef crypto_register_shashes
+#undef crypto_register_skcipher
+#undef crypto_register_skciphers
+#undef shash_register_instance
+#undef skcipher_register_instance
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "fips140-module.h"
+
+/* Indicates whether the self-tests and integrity check have completed */
+DECLARE_COMPLETION(fips140_tests_done);
+
+/* The thread running the self-tests and integrity check */
+struct task_struct *fips140_init_thread;
+
+/*
+ * Map from crypto_alg to original initialization function (possibly NULL)
+ *
+ * Note: unregistering an algorithm will leak its map entry, as we don't bother
+ * to remove it. This should be fine since fips140.ko can't be unloaded. The
+ * proper solution would be to store the original function pointer in a new
+ * field in 'struct crypto_alg', but that would require kernel support.
+ */
+static DEFINE_XARRAY(fips140_init_func_map);
+
+static bool fips140_ready(void)
+{
+ return completion_done(&fips140_tests_done);
+}
+
+/*
+ * Wait until crypto operations are allowed to proceed. Return true if the
+ * tests are done, or false if the caller is the thread running the tests so it
+ * is allowed to proceed anyway.
+ */
+static bool fips140_wait_until_ready(struct crypto_alg *alg)
+{
+ if (fips140_ready())
+ return true;
+ /*
+ * The thread running the tests must not wait. Since tfms can only be
+ * allocated in task context, we can reliably determine whether the
+ * invocation is from that thread or not by checking 'current'.
+ */
+ if (current == fips140_init_thread)
+ return false;
+
+ pr_info("blocking user of %s until tests complete\n",
+ alg->cra_driver_name);
+ wait_for_completion(&fips140_tests_done);
+ pr_info("tests done, allowing %s to proceed\n", alg->cra_driver_name);
+ return true;
+}
+
+static int fips140_store_init_function(struct crypto_alg *alg, void *func)
+{
+ void *ret;
+
+ /*
+ * The XArray API requires 4-byte aligned values. Although function
+ * pointers in general aren't guaranteed to be 4-byte aligned, it should
+ * be the case for the platforms this module is used on.
+ */
+ if (WARN_ON((unsigned long)func & 3))
+ return -EINVAL;
+
+ ret = xa_store(&fips140_init_func_map, (unsigned long)alg, func,
+ GFP_KERNEL);
+ return xa_err(ret);
+}
+
+/* Get the algorithm's original initialization function (possibly NULL) */
+static void *fips140_load_init_function(struct crypto_alg *alg)
+{
+ return xa_load(&fips140_init_func_map, (unsigned long)alg);
+}
+
+/* tfm initialization function overrides */
+
+static int fips140_alg_init_tfm(struct crypto_tfm *tfm)
+{
+ struct crypto_alg *alg = tfm->__crt_alg;
+ int (*cra_init)(struct crypto_tfm *tfm) =
+ fips140_load_init_function(alg);
+
+ if (fips140_wait_until_ready(alg))
+ WRITE_ONCE(alg->cra_init, cra_init);
+ return cra_init ? cra_init(tfm) : 0;
+}
+
+static int fips140_aead_init_tfm(struct crypto_aead *tfm)
+{
+ struct aead_alg *alg = crypto_aead_alg(tfm);
+ int (*init)(struct crypto_aead *tfm) =
+ fips140_load_init_function(&alg->base);
+
+ if (fips140_wait_until_ready(&alg->base))
+ WRITE_ONCE(alg->init, init);
+ return init ? init(tfm) : 0;
+}
+
+static int fips140_ahash_init_tfm(struct crypto_ahash *tfm)
+{
+ struct hash_alg_common *halg = crypto_hash_alg_common(tfm);
+ struct ahash_alg *alg = container_of(halg, struct ahash_alg, halg);
+ int (*init_tfm)(struct crypto_ahash *tfm) =
+ fips140_load_init_function(&halg->base);
+
+ if (fips140_wait_until_ready(&halg->base))
+ WRITE_ONCE(alg->init_tfm, init_tfm);
+ return init_tfm ? init_tfm(tfm) : 0;
+}
+
+static int fips140_shash_init_tfm(struct crypto_shash *tfm)
+{
+ struct shash_alg *alg = crypto_shash_alg(tfm);
+ int (*init_tfm)(struct crypto_shash *tfm) =
+ fips140_load_init_function(&alg->base);
+
+ if (fips140_wait_until_ready(&alg->base))
+ WRITE_ONCE(alg->init_tfm, init_tfm);
+ return init_tfm ? init_tfm(tfm) : 0;
+}
+
+static int fips140_skcipher_init_tfm(struct crypto_skcipher *tfm)
+{
+ struct skcipher_alg *alg = crypto_skcipher_alg(tfm);
+ int (*init)(struct crypto_skcipher *tfm) =
+ fips140_load_init_function(&alg->base);
+
+ if (fips140_wait_until_ready(&alg->base))
+ WRITE_ONCE(alg->init, init);
+ return init ? init(tfm) : 0;
+}
+
+/* Single algorithm registration */
+
+#define prepare_alg(alg, base_alg, field, wrapper_func) \
+({ \
+ int err = 0; \
+ \
+ if (!fips140_ready() && alg->field != wrapper_func) { \
+ err = fips140_store_init_function(base_alg, alg->field);\
+ if (err == 0) \
+ alg->field = wrapper_func; \
+ } \
+ err; \
+})
+
+static int fips140_prepare_alg(struct crypto_alg *alg)
+{
+ /*
+ * Override cra_init. This is only for algorithm types like cipher and
+ * rng that don't have a strongly-typed initialization function.
+ */
+ return prepare_alg(alg, alg, cra_init, fips140_alg_init_tfm);
+}
+
+static int fips140_prepare_aead_alg(struct aead_alg *alg)
+{
+ return prepare_alg(alg, &alg->base, init, fips140_aead_init_tfm);
+}
+
+static int fips140_prepare_ahash_alg(struct ahash_alg *alg)
+{
+ return prepare_alg(alg, &alg->halg.base, init_tfm,
+ fips140_ahash_init_tfm);
+}
+
+static int fips140_prepare_rng_alg(struct rng_alg *alg)
+{
+ /*
+ * rng doesn't have a strongly-typed initialization function, so we must
+ * treat rng algorithms as "generic" algorithms.
+ */
+ return fips140_prepare_alg(&alg->base);
+}
+
+static int fips140_prepare_shash_alg(struct shash_alg *alg)
+{
+ return prepare_alg(alg, &alg->base, init_tfm, fips140_shash_init_tfm);
+}
+
+static int fips140_prepare_skcipher_alg(struct skcipher_alg *alg)
+{
+ return prepare_alg(alg, &alg->base, init, fips140_skcipher_init_tfm);
+}
+
+int fips140_crypto_register_alg(struct crypto_alg *alg)
+{
+ return fips140_prepare_alg(alg) ?: crypto_register_alg(alg);
+}
+
+int fips140_crypto_register_aead(struct aead_alg *alg)
+{
+ return fips140_prepare_aead_alg(alg) ?: crypto_register_aead(alg);
+}
+
+int fips140_crypto_register_ahash(struct ahash_alg *alg)
+{
+ return fips140_prepare_ahash_alg(alg) ?: crypto_register_ahash(alg);
+}
+
+int fips140_crypto_register_rng(struct rng_alg *alg)
+{
+ return fips140_prepare_rng_alg(alg) ?: crypto_register_rng(alg);
+}
+
+int fips140_crypto_register_shash(struct shash_alg *alg)
+{
+ return fips140_prepare_shash_alg(alg) ?: crypto_register_shash(alg);
+}
+
+int fips140_crypto_register_skcipher(struct skcipher_alg *alg)
+{
+ return fips140_prepare_skcipher_alg(alg) ?:
+ crypto_register_skcipher(alg);
+}
+
+/* Instance registration */
+
+int fips140_aead_register_instance(struct crypto_template *tmpl,
+ struct aead_instance *inst)
+{
+ return fips140_prepare_aead_alg(&inst->alg) ?:
+ aead_register_instance(tmpl, inst);
+}
+
+int fips140_ahash_register_instance(struct crypto_template *tmpl,
+ struct ahash_instance *inst)
+{
+ return fips140_prepare_ahash_alg(&inst->alg) ?:
+ ahash_register_instance(tmpl, inst);
+}
+
+int fips140_shash_register_instance(struct crypto_template *tmpl,
+ struct shash_instance *inst)
+{
+ return fips140_prepare_shash_alg(&inst->alg) ?:
+ shash_register_instance(tmpl, inst);
+}
+
+int fips140_skcipher_register_instance(struct crypto_template *tmpl,
+ struct skcipher_instance *inst)
+{
+ return fips140_prepare_skcipher_alg(&inst->alg) ?:
+ skcipher_register_instance(tmpl, inst);
+}
+
+/* Bulk algorithm registration */
+
+int fips140_crypto_register_algs(struct crypto_alg *algs, int count)
+{
+ int i;
+ int err;
+
+ for (i = 0; i < count; i++) {
+ err = fips140_prepare_alg(&algs[i]);
+ if (err)
+ return err;
+ }
+
+ return crypto_register_algs(algs, count);
+}
+
+int fips140_crypto_register_aeads(struct aead_alg *algs, int count)
+{
+ int i;
+ int err;
+
+ for (i = 0; i < count; i++) {
+ err = fips140_prepare_aead_alg(&algs[i]);
+ if (err)
+ return err;
+ }
+
+ return crypto_register_aeads(algs, count);
+}
+
+int fips140_crypto_register_ahashes(struct ahash_alg *algs, int count)
+{
+ int i;
+ int err;
+
+ for (i = 0; i < count; i++) {
+ err = fips140_prepare_ahash_alg(&algs[i]);
+ if (err)
+ return err;
+ }
+
+ return crypto_register_ahashes(algs, count);
+}
+
+int fips140_crypto_register_rngs(struct rng_alg *algs, int count)
+{
+ int i;
+ int err;
+
+ for (i = 0; i < count; i++) {
+ err = fips140_prepare_rng_alg(&algs[i]);
+ if (err)
+ return err;
+ }
+
+ return crypto_register_rngs(algs, count);
+}
+
+int fips140_crypto_register_shashes(struct shash_alg *algs, int count)
+{
+ int i;
+ int err;
+
+ for (i = 0; i < count; i++) {
+ err = fips140_prepare_shash_alg(&algs[i]);
+ if (err)
+ return err;
+ }
+
+ return crypto_register_shashes(algs, count);
+}
+
+int fips140_crypto_register_skciphers(struct skcipher_alg *algs, int count)
+{
+ int i;
+ int err;
+
+ for (i = 0; i < count; i++) {
+ err = fips140_prepare_skcipher_alg(&algs[i]);
+ if (err)
+ return err;
+ }
+
+ return crypto_register_skciphers(algs, count);
+}
diff --git a/crypto/fips140-defs.h b/crypto/fips140-defs.h
new file mode 100644
index 000000000000..e64a2f739aa9
--- /dev/null
+++ b/crypto/fips140-defs.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2021 Google LLC
+ *
+ * This file is automatically included by all files built into fips140.ko, via
+ * the "-include" compiler flag. It redirects all calls to algorithm
+ * registration functions to the wrapper functions defined within the module.
+ */
+
+#define aead_register_instance fips140_aead_register_instance
+#define ahash_register_instance fips140_ahash_register_instance
+#define crypto_register_aead fips140_crypto_register_aead
+#define crypto_register_aeads fips140_crypto_register_aeads
+#define crypto_register_ahash fips140_crypto_register_ahash
+#define crypto_register_ahashes fips140_crypto_register_ahashes
+#define crypto_register_alg fips140_crypto_register_alg
+#define crypto_register_algs fips140_crypto_register_algs
+#define crypto_register_rng fips140_crypto_register_rng
+#define crypto_register_rngs fips140_crypto_register_rngs
+#define crypto_register_shash fips140_crypto_register_shash
+#define crypto_register_shashes fips140_crypto_register_shashes
+#define crypto_register_skcipher fips140_crypto_register_skcipher
+#define crypto_register_skciphers fips140_crypto_register_skciphers
+#define shash_register_instance fips140_shash_register_instance
+#define skcipher_register_instance fips140_skcipher_register_instance
diff --git a/crypto/fips140-generated-testvecs.h b/crypto/fips140-generated-testvecs.h
index 9328e9bacca7..d4ccd77eb97f 100644
--- a/crypto/fips140-generated-testvecs.h
+++ b/crypto/fips140-generated-testvecs.h
@@ -11,19 +11,19 @@ static const u8 fips_message[32] __initconst =
static const u8 fips_aes_key[16] __initconst = "128-bit AES key";
-static const u8 fips_aes_iv[16] __initconst = "ABCDEFGHIJKL";
+static const u8 fips_aes_iv[16] __initconst = "ABCDEFGHIJKLMNOP";
static const u8 fips_aes_cbc_ciphertext[32] __initconst =
- "\xc4\x6d\xad\xa4\x04\x52\x11\x5a\x7a\xb3\x7c\x68\x85\x8d\x90\xf0"
- "\x55\xc3\xd3\x35\xc1\x75\x31\x90\xdf\x90\x4b\x5a\x56\xfd\xa7\x89";
+ "\x4c\x3e\xeb\x38\x8d\x1f\x28\xfd\xa2\x3b\xa9\xda\x36\xf2\x99\xe2"
+ "\x84\x84\x66\x37\x0a\x53\x68\x2f\x17\x95\x8d\x7f\xca\x5a\x68\x4e";
static const u8 fips_aes_ecb_ciphertext[32] __initconst =
"\xc1\x9d\xe6\xb8\xb2\x90\xff\xfe\xf2\x77\x18\xb0\x55\xd3\xee\xa9"
"\xe2\x6f\x4a\x32\x67\xfd\xb7\xa5\x2f\x4b\x6e\x1a\x86\x2b\x6e\x3a";
static const u8 fips_aes_ctr_ciphertext[32] __initconst =
- "\x92\xbe\x23\xa1\x80\x88\x5d\x31\x27\xb3\x9c\x40\x58\x57\x1d\xde"
- "\xc1\x8d\x5b\xe7\x42\x93\x09\xf8\xd4\xf7\x49\x42\xcf\x40\x62\x7e";
+ "\xed\x06\x2c\xd0\xbc\x48\xd1\x2e\x6a\x4e\x13\xe9\xaa\x17\x40\xca"
+ "\x00\xb4\xaf\x3b\x4f\xee\x73\xd6\x6c\x41\xf6\x4c\x8b\x0d\x6a\x0f";
static const u8 fips_aes_gcm_assoc[22] __initconst = "associated data string";
@@ -36,8 +36,11 @@ static const u8 fips_aes_xts_key[32] __initconst =
"This is an AES-128-XTS key.";
static const u8 fips_aes_xts_ciphertext[32] __initconst =
- "\x5e\xb9\x98\xd6\x26\xb3\x55\xbf\x44\xab\x3e\xae\x73\xc0\x81\xc9"
- "\xf4\x29\x0e\x17\x1e\xc5\xc8\x90\x79\x99\xf1\x43\x3a\x23\x08\x5a";
+ "\x4f\xf7\x9f\x6c\x00\xa8\x30\xdf\xff\xf3\x25\x9c\xf6\x0b\x1b\xfd"
+ "\x3b\x34\x5e\x67\x7c\xf8\x8b\x68\x9a\xb9\x5a\x89\x51\x51\xbd\x35";
+
+static const u8 fips_aes_cmac_digest[16] __initconst =
+ "\x0c\x05\xda\x64\x51\x0c\x8e\x6c\x86\x52\x46\xa8\x2d\xb1\xfe\x0f";
static const u8 fips_hmac_key[16] __initconst = "128-bit HMAC key";
diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c
index a91735c37c67..5e42891fbd0d 100644
--- a/crypto/fips140-module.c
+++ b/crypto/fips140-module.c
@@ -14,6 +14,8 @@
* don't need to meet these requirements.
*/
+#undef __DISABLE_EXPORTS
+
#include
#include
#include
@@ -66,34 +68,57 @@ const u8 *__rodata_start = &__fips140_rodata_start;
/*
* The list of the crypto API algorithms (by cra_name) that will be unregistered
* by this module, in preparation for the module registering its own
- * implementation(s) of them. When adding a new algorithm here, make sure to
- * consider whether it needs a self-test added to fips140_selftests[] as well.
+ * implementation(s) of them.
+ *
+ * All algorithms that will be declared as FIPS-approved in the module
+ * certification must be listed here, to ensure that the non-FIPS-approved
+ * implementations of these algorithms in the kernel image aren't used.
+ *
+ * For every algorithm in this list, the module should contain all the "same"
+ * implementations that the kernel image does, including the C implementation as
+ * well as any architecture-specific implementations. This is needed to avoid
+ * performance regressions as well as the possibility of an algorithm being
+ * unavailable on some CPUs. E.g., "xcbc(aes)" isn't in this list, as the
+ * module doesn't have a C implementation of it (and it won't be FIPS-approved).
+ *
+ * Due to a quirk in the FIPS requirements, "gcm(aes)" isn't actually able to be
+ * FIPS-approved. However, we otherwise treat it the same as the algorithms
+ * that will be FIPS-approved, and therefore it's included in this list.
+ *
+ * When adding a new algorithm here, make sure to consider whether it needs a
+ * self-test added to fips140_selftests[] as well.
*/
-static const char * const fips140_algorithms[] __initconst = {
- "aes",
+static const struct {
+ const char *name;
+ bool approved;
+} fips140_algs_to_replace[] = {
+ {"aes", true},
- "gcm(aes)",
+ {"cmac(aes)", true},
+ {"ecb(aes)", true},
- "ecb(aes)",
- "cbc(aes)",
- "ctr(aes)",
- "xts(aes)",
+ {"cbc(aes)", true},
+ {"cts(cbc(aes))", true},
+ {"ctr(aes)", true},
+ {"xts(aes)", true},
+ {"gcm(aes)", false},
- "hmac(sha1)",
- "hmac(sha224)",
- "hmac(sha256)",
- "hmac(sha384)",
- "hmac(sha512)",
- "sha1",
- "sha224",
- "sha256",
- "sha384",
- "sha512",
+ {"hmac(sha1)", true},
+ {"hmac(sha224)", true},
+ {"hmac(sha256)", true},
+ {"hmac(sha384)", true},
+ {"hmac(sha512)", true},
+ {"sha1", true},
+ {"sha224", true},
+ {"sha256", true},
+ {"sha384", true},
+ {"sha512", true},
- "stdrng",
+ {"stdrng", true},
+ {"jitterentropy_rng", false},
};
-static bool __init is_fips140_algo(struct crypto_alg *alg)
+static bool __init fips140_should_unregister_alg(struct crypto_alg *alg)
{
int i;
@@ -104,13 +129,70 @@ static bool __init is_fips140_algo(struct crypto_alg *alg)
if (alg->cra_flags & CRYPTO_ALG_ASYNC)
return false;
- for (i = 0; i < ARRAY_SIZE(fips140_algorithms); i++)
- if (!strcmp(alg->cra_name, fips140_algorithms[i]))
+ for (i = 0; i < ARRAY_SIZE(fips140_algs_to_replace); i++) {
+ if (!strcmp(alg->cra_name, fips140_algs_to_replace[i].name))
return true;
+ }
return false;
}
-static LIST_HEAD(unchecked_fips140_algos);
+/*
+ * FIPS 140-3 service indicators. FIPS 140-3 requires that all services
+ * "provide an indicator when the service utilises an approved cryptographic
+ * algorithm, security function or process in an approved manner". What this
+ * means is very debatable, even with the help of the FIPS 140-3 Implementation
+ * Guidance document. However, it was decided that a function that takes in an
+ * algorithm name and returns whether that algorithm is approved or not will
+ * meet this requirement. Note, this relies on some properties of the module:
+ *
+ * - The module doesn't distinguish between "services" and "algorithms"; its
+ * services are simply its algorithms.
+ *
+ * - The status of an approved algorithm is never non-approved, since (a) the
+ * module doesn't support operating in a non-approved mode, such as a mode
+ * where the self-tests are skipped; (b) there are no cases where the module
+ * supports non-approved settings for approved algorithms, e.g.
+ * non-approved key sizes; and (c) this function isn't available to be
+ * called until the module_init function has completed, so it's guaranteed
+ * that the self-tests and integrity check have already passed.
+ *
+ * - The module does support some non-approved algorithms, so a single static
+ * indicator ("return true;") would not be acceptable.
+ */
+bool fips140_is_approved_service(const char *name)
+{
+ size_t i;
+
+ for (i = 0; i < ARRAY_SIZE(fips140_algs_to_replace); i++) {
+ if (!strcmp(name, fips140_algs_to_replace[i].name))
+ return fips140_algs_to_replace[i].approved;
+ }
+ return false;
+}
+EXPORT_SYMBOL_GPL(fips140_is_approved_service);
+
+/*
+ * FIPS 140-3 requires that modules provide a "service" that outputs "the name
+ * or module identifier and the versioning information that can be correlated
+ * with a validation record". This function meets that requirement.
+ *
+ * Note: the module also prints this same information to the kernel log when it
+ * is loaded. That might meet the requirement by itself. However, given the
+ * vagueness of what counts as a "service", we provide this function too, just
+ * in case the certification lab or CMVP is happier with an explicit function.
+ *
+ * Note: /sys/modules/fips140/scmversion also provides versioning information
+ * about the module. However that file just shows the bare git commit ID, so it
+ * probably isn't sufficient to meet the FIPS requirement, which seems to want
+ * the "official" module name and version number used in the FIPS certificate.
+ */
+const char *fips140_module_version(void)
+{
+ return FIPS140_MODULE_NAME " " FIPS140_MODULE_VERSION;
+}
+EXPORT_SYMBOL_GPL(fips140_module_version);
+
+static LIST_HEAD(existing_live_algos);
/*
* Release a list of algorithms which have been removed from crypto_alg_list.
@@ -153,38 +235,53 @@ static void __init unregister_existing_fips140_algos(void)
down_write(&crypto_alg_sem);
/*
- * Find all registered algorithms that we care about, and move them to
- * a private list so that they are no longer exposed via the algo
- * lookup API. Subsequently, we will unregister them if they are not in
- * active use. If they are, we cannot simply remove them but we can
- * adapt them later to use our integrity checked backing code.
+ * Find all registered algorithms that we care about, and move them to a
+ * private list so that they are no longer exposed via the algo lookup
+ * API. Subsequently, we will unregister them if they are not in active
+ * use. If they are, we can't fully unregister them but we can ensure
+ * that new users won't use them.
*/
list_for_each_entry_safe(alg, tmp, &crypto_alg_list, cra_list) {
- if (is_fips140_algo(alg)) {
- if (refcount_read(&alg->cra_refcnt) == 1) {
- /*
- * This algorithm is not currently in use, but
- * there may be template instances holding
- * references to it via spawns. So let's tear
- * it down like crypto_unregister_alg() would,
- * but without releasing the lock, to prevent
- * races with concurrent TFM allocations.
- */
- alg->cra_flags |= CRYPTO_ALG_DEAD;
- list_move(&alg->cra_list, &remove_list);
- crypto_remove_spawns(alg, &spawns, NULL);
- } else {
- /*
- * This algorithm is live, i.e., there are TFMs
- * allocated that rely on it for its crypto
- * transformations. We will swap these out
- * later with integrity checked versions.
- */
- pr_info("found already-live algorithm '%s' ('%s')\n",
- alg->cra_name, alg->cra_driver_name);
- list_move(&alg->cra_list,
- &unchecked_fips140_algos);
- }
+ if (!fips140_should_unregister_alg(alg))
+ continue;
+ if (refcount_read(&alg->cra_refcnt) == 1) {
+ /*
+ * This algorithm is not currently in use, but there may
+ * be template instances holding references to it via
+ * spawns. So let's tear it down like
+ * crypto_unregister_alg() would, but without releasing
+ * the lock, to prevent races with concurrent TFM
+ * allocations.
+ */
+ alg->cra_flags |= CRYPTO_ALG_DEAD;
+ list_move(&alg->cra_list, &remove_list);
+ crypto_remove_spawns(alg, &spawns, NULL);
+ } else {
+ /*
+ * This algorithm is live, i.e. it has TFMs allocated,
+ * so we can't fully unregister it. It's not necessary
+ * to dynamically redirect existing users to the FIPS
+ * code, given that they can't be relying on FIPS
+ * certified crypto in the first place. However, we do
+ * need to ensure that new users will get the FIPS code.
+ *
+ * In most cases, setting alg->cra_priority to 0
+ * achieves this. However, that isn't enough for
+ * algorithms like "hmac(sha256)" that need to be
+ * instantiated from a template, since existing
+ * algorithms always take priority over a template being
+ * instantiated. Therefore, we move the algorithm to
+ * a private list so that algorithm lookups won't find
+ * it anymore. To further distinguish it from the FIPS
+ * algorithms, we also append "+orig" to its name.
+ */
+ pr_info("found already-live algorithm '%s' ('%s')\n",
+ alg->cra_name, alg->cra_driver_name);
+ alg->cra_priority = 0;
+ strlcat(alg->cra_name, "+orig", CRYPTO_MAX_ALG_NAME);
+ strlcat(alg->cra_driver_name, "+orig",
+ CRYPTO_MAX_ALG_NAME);
+ list_move(&alg->cra_list, &existing_live_algos);
}
}
up_write(&crypto_alg_sem);
@@ -259,12 +356,19 @@ static void __init unapply_rodata_relocations(void *section, int section_size,
}
}
+extern struct {
+ u32 offset;
+ u32 count;
+} fips140_rela_text, fips140_rela_rodata;
+
static bool __init check_fips140_module_hmac(void)
{
+ struct crypto_shash *tfm = NULL;
SHASH_DESC_ON_STACK(desc, dontcare);
u8 digest[SHA256_DIGEST_SIZE];
void *textcopy, *rodatacopy;
int textsize, rodatasize;
+ bool ok = false;
int err;
textsize = &__fips140_text_end - &__fips140_text_start;
@@ -276,7 +380,7 @@ static bool __init check_fips140_module_hmac(void)
textcopy = kmalloc(textsize + rodatasize, GFP_KERNEL);
if (!textcopy) {
pr_err("Failed to allocate memory for copy of .text\n");
- return false;
+ goto out;
}
rodatacopy = textcopy + textsize;
@@ -286,38 +390,36 @@ static bool __init check_fips140_module_hmac(void)
// apply the relocations in reverse on the copies of .text and .rodata
unapply_text_relocations(textcopy, textsize,
- __this_module.arch.text_relocations,
- __this_module.arch.num_text_relocations);
+ offset_to_ptr(&fips140_rela_text.offset),
+ fips140_rela_text.count);
unapply_rodata_relocations(rodatacopy, rodatasize,
- __this_module.arch.rodata_relocations,
- __this_module.arch.num_rodata_relocations);
+ offset_to_ptr(&fips140_rela_rodata.offset),
+ fips140_rela_rodata.count);
- kfree(__this_module.arch.text_relocations);
- kfree(__this_module.arch.rodata_relocations);
-
- desc->tfm = crypto_alloc_shash("hmac(sha256)", 0, 0);
- if (IS_ERR(desc->tfm)) {
- pr_err("failed to allocate hmac tfm (%ld)\n", PTR_ERR(desc->tfm));
- kfree(textcopy);
- return false;
+ tfm = crypto_alloc_shash("hmac(sha256)", 0, 0);
+ if (IS_ERR(tfm)) {
+ pr_err("failed to allocate hmac tfm (%ld)\n", PTR_ERR(tfm));
+ tfm = NULL;
+ goto out;
}
+ desc->tfm = tfm;
pr_info("using '%s' for integrity check\n",
- crypto_shash_driver_name(desc->tfm));
+ crypto_shash_driver_name(tfm));
- err = crypto_shash_setkey(desc->tfm, fips140_integ_hmac_key,
+ err = crypto_shash_setkey(tfm, fips140_integ_hmac_key,
strlen(fips140_integ_hmac_key)) ?:
crypto_shash_init(desc) ?:
crypto_shash_update(desc, textcopy, textsize) ?:
crypto_shash_finup(desc, rodatacopy, rodatasize, digest);
- crypto_free_shash(desc->tfm);
- kfree(textcopy);
+ /* Zeroizing this is important; see the comment below. */
+ shash_desc_zero(desc);
if (err) {
pr_err("failed to calculate hmac shash (%d)\n", err);
- return false;
+ goto out;
}
if (memcmp(digest, fips140_integ_hmac_digest, sizeof(digest))) {
@@ -326,171 +428,20 @@ static bool __init check_fips140_module_hmac(void)
pr_err("calculated digest: %*phN\n", (int)sizeof(digest),
digest);
-
- return false;
+ goto out;
}
-
- return true;
-}
-
-static bool __init update_live_fips140_algos(void)
-{
- struct crypto_alg *alg, *new_alg, *tmp;
-
+ ok = true;
+out:
/*
- * Find all algorithms that we could not unregister the last time
- * around, due to the fact that they were already in use.
+ * FIPS 140-3 requires that all "temporary value(s) generated during the
+ * integrity test" be zeroized (ref: FIPS 140-3 IG 9.7.B). There is no
+ * technical reason to do this given that these values are public
+ * information, but this is the requirement so we follow it.
*/
- down_write(&crypto_alg_sem);
- list_for_each_entry_safe(alg, tmp, &unchecked_fips140_algos, cra_list) {
-
- /*
- * Take this algo off the list before releasing the lock. This
- * ensures that a concurrent invocation of
- * crypto_unregister_alg() observes a consistent state, i.e.,
- * the algo is still on the list, and crypto_unregister_alg()
- * will release it, or it is not, and crypto_unregister_alg()
- * will issue a warning but ignore this condition otherwise.
- */
- list_del_init(&alg->cra_list);
- up_write(&crypto_alg_sem);
-
- /*
- * Grab the algo that will replace the live one.
- * Note that this will instantiate template based instances as
- * well, as long as their driver name uses the conventional
- * pattern of "template(algo)". In this case, we are relying on
- * the fact that the templates carried by this module will
- * supersede the builtin ones, due to the fact that they were
- * registered later, and therefore appear first in the linked
- * list. For example, "hmac(sha1-ce)" constructed using the
- * builtin hmac template and the builtin SHA1 driver will be
- * superseded by the integrity checked versions of HMAC and
- * SHA1-ce carried in this module.
- *
- * Note that this takes a reference to the new algorithm which
- * will never get released. This is intentional: once we copy
- * the function pointers from the new algo into the old one, we
- * cannot drop the new algo unless we are sure that the old one
- * has been released, and this is someting we don't keep track
- * of at the moment.
- */
- new_alg = crypto_alg_mod_lookup(alg->cra_driver_name,
- alg->cra_flags & CRYPTO_ALG_TYPE_MASK,
- CRYPTO_ALG_TYPE_MASK | CRYPTO_NOLOAD);
-
- if (IS_ERR(new_alg)) {
- pr_crit("Failed to allocate '%s' for updating live algo (%ld)\n",
- alg->cra_driver_name, PTR_ERR(new_alg));
- return false;
- }
-
- /*
- * The FIPS module's algorithms are expected to be built from
- * the same source code as the in-kernel ones so that they are
- * fully compatible. In general, there's no way to verify full
- * compatibility at runtime, but we can at least verify that
- * the algorithm properties match.
- */
- if (alg->cra_ctxsize != new_alg->cra_ctxsize ||
- alg->cra_alignmask != new_alg->cra_alignmask) {
- pr_crit("Failed to update live algo '%s' due to mismatch:\n"
- "cra_ctxsize : %u vs %u\n"
- "cra_alignmask : 0x%x vs 0x%x\n",
- alg->cra_driver_name,
- alg->cra_ctxsize, new_alg->cra_ctxsize,
- alg->cra_alignmask, new_alg->cra_alignmask);
- return false;
- }
-
- /*
- * Update the name and priority so the algorithm stands out as
- * one that was updated in order to comply with FIPS140, and
- * that it is not the preferred version for further use.
- */
- strlcat(alg->cra_name, "+orig", CRYPTO_MAX_ALG_NAME);
- alg->cra_priority = 0;
-
- switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) {
- struct aead_alg *old_aead, *new_aead;
- struct skcipher_alg *old_skcipher, *new_skcipher;
- struct shash_alg *old_shash, *new_shash;
- struct rng_alg *old_rng, *new_rng;
-
- case CRYPTO_ALG_TYPE_CIPHER:
- alg->cra_u.cipher = new_alg->cra_u.cipher;
- break;
-
- case CRYPTO_ALG_TYPE_AEAD:
- old_aead = container_of(alg, struct aead_alg, base);
- new_aead = container_of(new_alg, struct aead_alg, base);
-
- old_aead->setkey = new_aead->setkey;
- old_aead->setauthsize = new_aead->setauthsize;
- old_aead->encrypt = new_aead->encrypt;
- old_aead->decrypt = new_aead->decrypt;
- old_aead->init = new_aead->init;
- old_aead->exit = new_aead->exit;
- break;
-
- case CRYPTO_ALG_TYPE_SKCIPHER:
- old_skcipher = container_of(alg, struct skcipher_alg, base);
- new_skcipher = container_of(new_alg, struct skcipher_alg, base);
-
- old_skcipher->setkey = new_skcipher->setkey;
- old_skcipher->encrypt = new_skcipher->encrypt;
- old_skcipher->decrypt = new_skcipher->decrypt;
- old_skcipher->init = new_skcipher->init;
- old_skcipher->exit = new_skcipher->exit;
- break;
-
- case CRYPTO_ALG_TYPE_SHASH:
- old_shash = container_of(alg, struct shash_alg, base);
- new_shash = container_of(new_alg, struct shash_alg, base);
-
- old_shash->init = new_shash->init;
- old_shash->update = new_shash->update;
- old_shash->final = new_shash->final;
- old_shash->finup = new_shash->finup;
- old_shash->digest = new_shash->digest;
- old_shash->export = new_shash->export;
- old_shash->import = new_shash->import;
- old_shash->setkey = new_shash->setkey;
- old_shash->init_tfm = new_shash->init_tfm;
- old_shash->exit_tfm = new_shash->exit_tfm;
- break;
-
- case CRYPTO_ALG_TYPE_RNG:
- old_rng = container_of(alg, struct rng_alg, base);
- new_rng = container_of(new_alg, struct rng_alg, base);
-
- old_rng->generate = new_rng->generate;
- old_rng->seed = new_rng->seed;
- old_rng->set_ent = new_rng->set_ent;
- break;
- default:
- /*
- * This should never happen: every item on the
- * fips140_algorithms list should match one of the
- * cases above, so if we end up here, something is
- * definitely wrong.
- */
- pr_crit("Unexpected type %u for algo %s, giving up ...\n",
- alg->cra_flags & CRYPTO_ALG_TYPE_MASK,
- alg->cra_driver_name);
- return false;
- }
-
- /*
- * Move the algorithm back to the algorithm list, so it is
- * visible in /proc/crypto et al.
- */
- down_write(&crypto_alg_sem);
- list_add_tail(&alg->cra_list, &crypto_alg_list);
- }
- up_write(&crypto_alg_sem);
-
- return true;
+ crypto_free_shash(tfm);
+ memzero_explicit(digest, sizeof(digest));
+ kfree_sensitive(textcopy);
+ return ok;
}
static void fips140_sha256(void *p, const u8 *data, unsigned int len, u8 *out,
@@ -548,7 +499,8 @@ fips140_init(void)
{
const u32 *initcall;
- pr_info("loading module\n");
+ pr_info("loading " FIPS140_MODULE_NAME " " FIPS140_MODULE_VERSION "\n");
+ fips140_init_thread = current;
unregister_existing_fips140_algos();
@@ -570,19 +522,6 @@ fips140_init(void)
}
}
- if (!update_live_fips140_algos())
- goto panic;
-
- if (!update_fips140_library_routines())
- goto panic;
-
- /*
- * Wait until all tasks have at least been scheduled once and preempted
- * voluntarily. This ensures that none of the superseded algorithms that
- * were already in use will still be live.
- */
- synchronize_rcu_tasks();
-
if (!fips140_run_selftests())
goto panic;
@@ -601,6 +540,11 @@ fips140_init(void)
}
pr_info("integrity check passed\n");
+ complete_all(&fips140_tests_done);
+
+ if (!update_fips140_library_routines())
+ goto panic;
+
pr_info("module successfully loaded\n");
return 0;
diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h
index b30a2e2928a6..ff99d5b2ab4a 100644
--- a/crypto/fips140-module.h
+++ b/crypto/fips140-module.h
@@ -6,15 +6,30 @@
#ifndef _CRYPTO_FIPS140_MODULE_H
#define _CRYPTO_FIPS140_MODULE_H
+#include
#include
#undef pr_fmt
#define pr_fmt(fmt) "fips140: " fmt
+/*
+ * This is the name and version number of the module that are shown on the FIPS
+ * certificate. These don't necessarily have any relation to the filename of
+ * the .ko file, or to the git branch or commit ID.
+ */
+#define FIPS140_MODULE_NAME "Android Kernel Cryptographic Module"
+#define FIPS140_MODULE_VERSION "v1.0"
+
#ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION
extern char *fips140_broken_alg;
#endif
+extern struct completion fips140_tests_done;
+extern struct task_struct *fips140_init_thread;
+
bool __init __must_check fips140_run_selftests(void);
+bool fips140_is_approved_service(const char *name);
+const char *fips140_module_version(void);
+
#endif /* _CRYPTO_FIPS140_MODULE_H */
diff --git a/crypto/fips140-refs.S b/crypto/fips140-refs.S
new file mode 100644
index 000000000000..fcbd52776323
--- /dev/null
+++ b/crypto/fips140-refs.S
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright 2021 Google LLC
+ * Author: Ard Biesheuvel
+ *
+ * This file contains the variable definitions that will be used by the FIPS140
+ * s/w module to access the RELA sections in the ELF image. These are used to
+ * apply the relocations applied by the module loader in reverse, so that we
+ * can reconstruct the image that was used to derive the HMAC used by the
+ * integrity check.
+ *
+ * The first .long of each entry will be populated by the module loader based
+ * on the actual placement of the respective RELA section in memory. The second
+ * .long carries the RELA entry count, and is populated by the host tool that
+ * also generates the HMAC of the contents of .text and .rodata.
+ */
+
+#include
+#include
+
+ .section ".init.rodata", "a"
+
+ .align 2
+ .globl fips140_rela_text
+fips140_rela_text:
+ .weak __sec_rela_text
+ .long __sec_rela_text - .
+ .long 0
+
+ .globl fips140_rela_rodata
+fips140_rela_rodata:
+ .weak __sec_rela_rodata
+ .long __sec_rela_rodata - .
+ .long 0
diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c
index 3ebf5a914cf0..0ab388a9f213 100644
--- a/crypto/fips140-selftests.c
+++ b/crypto/fips140-selftests.c
@@ -14,10 +14,6 @@
* is somewhat helpful. Basically, all implementations of all FIPS approved
* algorithms (including modes of operation) must be tested. However:
*
- * - If an implementation won't be used, it doesn't have to be tested. So
- * when multiple implementations of the same algorithm are registered with
- * the crypto API, we only have to test the default (highest-priority) one.
- *
* - There are provisions for skipping tests that are already sufficiently
* covered by other tests. E.g., HMAC-SHA256 may cover SHA-256.
*
@@ -28,12 +24,16 @@
*
* - Only one key size per algorithm needs to be tested.
*
+ * There is some ambiguity about whether all implementations of each algorithm
+ * must be tested, or whether it is sufficient to test just the highest priority
+ * implementation. To be safe we test all implementations, except ones that can
+ * be excluded by one of the rules above.
+ *
* See fips140_selftests[] for the list of tests we've selected. Currently, all
- * our test vectors except the DRBG ones were generated by the script
- * tools/crypto/gen_fips140_testvecs.py, using the known-good implementations in
- * the Python packages hashlib, pycryptodome, and cryptography. The DRBG test
- * vectors were manually extracted from
- * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip.
+ * our test vectors except the AES-CBC-CTS and DRBG ones were generated by the
+ * script tools/crypto/gen_fips140_testvecs.py, using the known-good
+ * implementations in the Python packages hashlib, pycryptodome, and
+ * cryptography.
*
* Note that we don't reuse the upstream crypto API's self-tests
* (crypto/testmgr.{c,h}), for several reasons:
@@ -54,22 +54,12 @@
#include
#include
#include
-#include
#include
#include
#include
#include "fips140-module.h"
-/* Test vector for a block cipher algorithm */
-struct blockcipher_testvec {
- const u8 *key;
- size_t key_size;
- const u8 *plaintext;
- const u8 *ciphertext;
- size_t block_size;
-};
-
/* Test vector for an AEAD algorithm */
struct aead_testvec {
const u8 *key;
@@ -121,15 +111,27 @@ struct drbg_testvec {
size_t out_size;
};
-/*
- * A struct which specifies an algorithm name (using crypto API syntax), a test
- * function for that algorithm, and a test vector used by that test function.
- */
struct fips_test {
+ /* The name of the algorithm, in crypto API syntax */
const char *alg;
- int __must_check (*func)(const struct fips_test *test);
+
+ /*
+ * The optional list of implementations to test. @func will be called
+ * once per implementation, or once with @alg if this list is empty.
+ * The implementation names must be given in crypto API syntax, or in
+ * the case of a library implementation should have "-lib" appended.
+ */
+ const char *impls[8];
+
+ /*
+ * The test function. It should execute a known-answer test on an
+ * algorithm implementation, using the below test vector.
+ */
+ int __must_check (*func)(const struct fips_test *test,
+ const char *impl);
+
+ /* The test vector, with a format specific to the type of algorithm */
union {
- struct blockcipher_testvec blockcipher;
struct aead_testvec aead;
struct skcipher_testvec skcipher;
struct hash_testvec hash;
@@ -141,17 +143,16 @@ struct fips_test {
#define MAX_IV_SIZE 16
static int __init __must_check
-fips_check_result(const struct fips_test *test, u8 *result,
- const u8 *expected_result, size_t result_size,
- const char *operation)
+fips_check_result(u8 *result, const u8 *expected_result, size_t result_size,
+ const char *impl, const char *operation)
{
#ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION
/* Inject a failure (via corrupting the result) if requested. */
- if (fips140_broken_alg && strcmp(test->alg, fips140_broken_alg) == 0)
+ if (fips140_broken_alg && strcmp(impl, fips140_broken_alg) == 0)
result[0] ^= 0xff;
#endif
if (memcmp(result, expected_result, result_size) != 0) {
- pr_err("wrong result from %s %s\n", test->alg, operation);
+ pr_err("wrong result from %s %s\n", impl, operation);
return -EBADMSG;
}
return 0;
@@ -176,96 +177,56 @@ fips_validate_alg(const struct crypto_alg *alg)
return 0;
}
-/* Test a block cipher using the crypto_cipher API. */
static int __init __must_check
-fips_test_blockcipher(const struct fips_test *test)
+fips_handle_alloc_tfm_error(const char *impl, int err)
{
- const struct blockcipher_testvec *vec = &test->blockcipher;
- struct crypto_cipher *tfm;
- u8 block[MAX_CIPHER_BLOCKSIZE];
- int err;
-
- if (WARN_ON(vec->block_size > MAX_CIPHER_BLOCKSIZE))
- return -EINVAL;
-
- tfm = crypto_alloc_cipher(test->alg, 0, 0);
- if (IS_ERR(tfm)) {
- err = PTR_ERR(tfm);
- pr_err("failed to allocate %s tfm: %d\n", test->alg, err);
- return err;
+ if (err == -ENOENT) {
+ /*
+ * The requested implementation of the algorithm wasn't found.
+ * This is expected if the CPU lacks a feature the
+ * implementation needs, such as the ARMv8 Crypto Extensions.
+ *
+ * When this happens, the implementation isn't available for
+ * use, so we can't test it, nor do we need to. So we just skip
+ * the test.
+ */
+ pr_info("%s is unavailable (no CPU support?), skipping testing it\n",
+ impl);
+ return 0;
}
- err = fips_validate_alg(tfm->base.__crt_alg);
- if (err)
- goto out;
- if (crypto_cipher_blocksize(tfm) != vec->block_size) {
- pr_err("%s has wrong block size\n", test->alg);
- err = -EINVAL;
- goto out;
- }
-
- err = crypto_cipher_setkey(tfm, vec->key, vec->key_size);
- if (err) {
- pr_err("failed to set %s key: %d\n", test->alg, err);
- goto out;
- }
-
- /* Encrypt the plaintext, then verify the resulting ciphertext. */
- memcpy(block, vec->plaintext, vec->block_size);
- crypto_cipher_encrypt_one(tfm, block, block);
- err = fips_check_result(test, block, vec->ciphertext, vec->block_size,
- "encryption");
- if (err)
- goto out;
-
- /* Decrypt the ciphertext, then verify the resulting plaintext. */
- crypto_cipher_decrypt_one(tfm, block, block);
- err = fips_check_result(test, block, vec->plaintext, vec->block_size,
- "decryption");
-out:
- crypto_free_cipher(tfm);
+ pr_err("failed to allocate %s tfm: %d\n", impl, err);
return err;
}
-/*
- * Test for plain AES (no mode of operation). We test this separately from the
- * AES modes because the implementation of AES which is used by the "aes"
- * crypto_cipher isn't necessarily the same as that used by the AES modes such
- * as "ecb(aes)". Similarly, the aes_{encrypt,decrypt}() library functions may
- * use a different implementation as well, so we test them separately too.
- */
static int __init __must_check
-fips_test_aes(const struct fips_test *test)
+fips_test_aes_library(const struct fips_test *test, const char *impl)
{
- const struct blockcipher_testvec *vec = &test->blockcipher;
+ const struct skcipher_testvec *vec = &test->skcipher;
struct crypto_aes_ctx ctx;
u8 block[AES_BLOCK_SIZE];
int err;
- if (WARN_ON(vec->block_size != AES_BLOCK_SIZE))
+ if (WARN_ON(vec->message_size != AES_BLOCK_SIZE))
return -EINVAL;
- err = fips_test_blockcipher(test);
- if (err)
- return err;
-
err = aes_expandkey(&ctx, vec->key, vec->key_size);
if (err) {
pr_err("aes_expandkey() failed: %d\n", err);
return err;
}
aes_encrypt(&ctx, block, vec->plaintext);
- err = fips_check_result(test, block, vec->ciphertext, AES_BLOCK_SIZE,
- "encryption (library API)");
+ err = fips_check_result(block, vec->ciphertext, AES_BLOCK_SIZE,
+ impl, "encryption");
if (err)
return err;
aes_decrypt(&ctx, block, block);
- return fips_check_result(test, block, vec->plaintext, AES_BLOCK_SIZE,
- "decryption (library API)");
+ return fips_check_result(block, vec->plaintext, AES_BLOCK_SIZE,
+ impl, "decryption");
}
/* Test a length-preserving symmetric cipher using the crypto_skcipher API. */
static int __init __must_check
-fips_test_skcipher(const struct fips_test *test)
+fips_test_skcipher(const struct fips_test *test, const char *impl)
{
const struct skcipher_testvec *vec = &test->skcipher;
struct crypto_skcipher *tfm;
@@ -277,18 +238,17 @@ fips_test_skcipher(const struct fips_test *test)
if (WARN_ON(vec->iv_size > MAX_IV_SIZE))
return -EINVAL;
+ if (WARN_ON(vec->message_size <= 0))
+ return -EINVAL;
- tfm = crypto_alloc_skcipher(test->alg, 0, 0);
- if (IS_ERR(tfm)) {
- err = PTR_ERR(tfm);
- pr_err("failed to allocate %s tfm: %d\n", test->alg, err);
- return err;
- }
+ tfm = crypto_alloc_skcipher(impl, 0, 0);
+ if (IS_ERR(tfm))
+ return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm));
err = fips_validate_alg(&crypto_skcipher_alg(tfm)->base);
if (err)
goto out;
if (crypto_skcipher_ivsize(tfm) != vec->iv_size) {
- pr_err("%s has wrong IV size\n", test->alg);
+ pr_err("%s has wrong IV size\n", impl);
err = -EINVAL;
goto out;
}
@@ -307,7 +267,7 @@ fips_test_skcipher(const struct fips_test *test)
err = crypto_skcipher_setkey(tfm, vec->key, vec->key_size);
if (err) {
- pr_err("failed to set %s key: %d\n", test->alg, err);
+ pr_err("failed to set %s key: %d\n", impl, err);
goto out;
}
@@ -315,11 +275,11 @@ fips_test_skcipher(const struct fips_test *test)
memcpy(iv, vec->iv, vec->iv_size);
err = crypto_skcipher_encrypt(req);
if (err) {
- pr_err("%s encryption failed: %d\n", test->alg, err);
+ pr_err("%s encryption failed: %d\n", impl, err);
goto out;
}
- err = fips_check_result(test, message, vec->ciphertext,
- vec->message_size, "encryption");
+ err = fips_check_result(message, vec->ciphertext, vec->message_size,
+ impl, "encryption");
if (err)
goto out;
@@ -327,11 +287,11 @@ fips_test_skcipher(const struct fips_test *test)
memcpy(iv, vec->iv, vec->iv_size);
err = crypto_skcipher_decrypt(req);
if (err) {
- pr_err("%s decryption failed: %d\n", test->alg, err);
+ pr_err("%s decryption failed: %d\n", impl, err);
goto out;
}
- err = fips_check_result(test, message, vec->plaintext,
- vec->message_size, "decryption");
+ err = fips_check_result(message, vec->plaintext, vec->message_size,
+ impl, "decryption");
out:
kfree(message);
skcipher_request_free(req);
@@ -341,7 +301,7 @@ out:
/* Test an AEAD using the crypto_aead API. */
static int __init __must_check
-fips_test_aead(const struct fips_test *test)
+fips_test_aead(const struct fips_test *test, const char *impl)
{
const struct aead_testvec *vec = &test->aead;
const int tag_size = vec->ciphertext_size - vec->plaintext_size;
@@ -359,17 +319,14 @@ fips_test_aead(const struct fips_test *test)
if (WARN_ON(vec->ciphertext_size <= vec->plaintext_size))
return -EINVAL;
- tfm = crypto_alloc_aead(test->alg, 0, 0);
- if (IS_ERR(tfm)) {
- err = PTR_ERR(tfm);
- pr_err("failed to allocate %s tfm: %d\n", test->alg, err);
- return err;
- }
+ tfm = crypto_alloc_aead(impl, 0, 0);
+ if (IS_ERR(tfm))
+ return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm));
err = fips_validate_alg(&crypto_aead_alg(tfm)->base);
if (err)
goto out;
if (crypto_aead_ivsize(tfm) != vec->iv_size) {
- pr_err("%s has wrong IV size\n", test->alg);
+ pr_err("%s has wrong IV size\n", impl);
err = -EINVAL;
goto out;
}
@@ -393,14 +350,14 @@ fips_test_aead(const struct fips_test *test)
err = crypto_aead_setkey(tfm, vec->key, vec->key_size);
if (err) {
- pr_err("failed to set %s key: %d\n", test->alg, err);
+ pr_err("failed to set %s key: %d\n", impl, err);
goto out;
}
err = crypto_aead_setauthsize(tfm, tag_size);
if (err) {
pr_err("failed to set %s authentication tag size: %d\n",
- test->alg, err);
+ impl, err);
goto out;
}
@@ -412,11 +369,11 @@ fips_test_aead(const struct fips_test *test)
aead_request_set_crypt(req, sg, sg, vec->plaintext_size, iv);
err = crypto_aead_encrypt(req);
if (err) {
- pr_err("%s encryption failed: %d\n", test->alg, err);
+ pr_err("%s encryption failed: %d\n", impl, err);
goto out;
}
- err = fips_check_result(test, message, vec->ciphertext,
- vec->ciphertext_size, "encryption");
+ err = fips_check_result(message, vec->ciphertext, vec->ciphertext_size,
+ impl, "encryption");
if (err)
goto out;
@@ -428,11 +385,11 @@ fips_test_aead(const struct fips_test *test)
aead_request_set_crypt(req, sg, sg, vec->ciphertext_size, iv);
err = crypto_aead_decrypt(req);
if (err) {
- pr_err("%s decryption failed: %d\n", test->alg, err);
+ pr_err("%s decryption failed: %d\n", impl, err);
goto out;
}
- err = fips_check_result(test, message, vec->plaintext,
- vec->plaintext_size, "decryption");
+ err = fips_check_result(message, vec->plaintext, vec->plaintext_size,
+ impl, "decryption");
out:
kfree(message);
kfree(assoc);
@@ -449,7 +406,7 @@ out:
* be no hash algorithms that can be accessed only through crypto_ahash.
*/
static int __init __must_check
-fips_test_hash(const struct fips_test *test)
+fips_test_hash(const struct fips_test *test, const char *impl)
{
const struct hash_testvec *vec = &test->hash;
struct crypto_shash *tfm;
@@ -459,17 +416,14 @@ fips_test_hash(const struct fips_test *test)
if (WARN_ON(vec->digest_size > HASH_MAX_DIGESTSIZE))
return -EINVAL;
- tfm = crypto_alloc_shash(test->alg, 0, 0);
- if (IS_ERR(tfm)) {
- err = PTR_ERR(tfm);
- pr_err("failed to allocate %s tfm: %d\n", test->alg, err);
- return err;
- }
+ tfm = crypto_alloc_shash(impl, 0, 0);
+ if (IS_ERR(tfm))
+ return fips_handle_alloc_tfm_error(impl, PTR_ERR(tfm));
err = fips_validate_alg(&crypto_shash_alg(tfm)->base);
if (err)
goto out;
if (crypto_shash_digestsize(tfm) != vec->digest_size) {
- pr_err("%s has wrong digest size\n", test->alg);
+ pr_err("%s has wrong digest size\n", impl);
err = -EINVAL;
goto out;
}
@@ -477,7 +431,7 @@ fips_test_hash(const struct fips_test *test)
if (vec->key) {
err = crypto_shash_setkey(tfm, vec->key, vec->key_size);
if (err) {
- pr_err("failed to set %s key: %d\n", test->alg, err);
+ pr_err("failed to set %s key: %d\n", impl, err);
goto out;
}
}
@@ -485,22 +439,18 @@ fips_test_hash(const struct fips_test *test)
err = crypto_shash_tfm_digest(tfm, vec->message, vec->message_size,
digest);
if (err) {
- pr_err("%s digest computation failed: %d\n", test->alg, err);
+ pr_err("%s digest computation failed: %d\n", impl, err);
goto out;
}
- err = fips_check_result(test, digest, vec->digest, vec->digest_size,
- "digest");
+ err = fips_check_result(digest, vec->digest, vec->digest_size,
+ impl, "digest");
out:
crypto_free_shash(tfm);
return err;
}
-/*
- * Test the sha256() library function, as it may not be covered by the "sha256"
- * crypto_shash, and thus may not be covered by the "hmac(sha256)" test we do.
- */
static int __init __must_check
-fips_test_sha256_library(const struct fips_test *test)
+fips_test_sha256_library(const struct fips_test *test, const char *impl)
{
const struct hash_testvec *vec = &test->hash;
u8 digest[SHA256_DIGEST_SIZE];
@@ -509,13 +459,13 @@ fips_test_sha256_library(const struct fips_test *test)
return -EINVAL;
sha256(vec->message, vec->message_size, digest);
- return fips_check_result(test, digest, vec->digest, vec->digest_size,
- "digest (library API)");
+ return fips_check_result(digest, vec->digest, vec->digest_size,
+ impl, "digest");
}
/* Test a DRBG using the crypto_rng API. */
static int __init __must_check
-fips_test_drbg(const struct fips_test *test)
+fips_test_drbg(const struct fips_test *test, const char *impl)
{
const struct drbg_testvec *vec = &test->drbg;
struct crypto_rng *rng;
@@ -524,12 +474,9 @@ fips_test_drbg(const struct fips_test *test)
struct drbg_string addtl, pers, testentropy;
int err;
- rng = crypto_alloc_rng(test->alg, 0, 0);
- if (IS_ERR(rng)) {
- err = PTR_ERR(rng);
- pr_err("failed to allocate %s tfm: %d\n", test->alg, err);
- return PTR_ERR(rng);
- }
+ rng = crypto_alloc_rng(impl, 0, 0);
+ if (IS_ERR(rng))
+ return fips_handle_alloc_tfm_error(impl, PTR_ERR(rng));
err = fips_validate_alg(&crypto_rng_alg(rng)->base);
if (err)
goto out;
@@ -549,7 +496,7 @@ fips_test_drbg(const struct fips_test *test)
drbg_string_fill(&pers, vec->pers, vec->pers_size);
err = crypto_drbg_reset_test(rng, &pers, &test_data);
if (err) {
- pr_err("failed to reset %s\n", test->alg);
+ pr_err("failed to reset %s\n", impl);
goto out;
}
@@ -570,7 +517,7 @@ fips_test_drbg(const struct fips_test *test)
}
if (err) {
pr_err("failed to get bytes from %s (try 1): %d\n",
- test->alg, err);
+ impl, err);
goto out;
}
@@ -590,13 +537,13 @@ fips_test_drbg(const struct fips_test *test)
}
if (err) {
pr_err("failed to get bytes from %s (try 2): %d\n",
- test->alg, err);
+ impl, err);
goto out;
}
/* Check that the DRBG generated the expected output. */
- err = fips_check_result(test, output, vec->output, vec->out_size,
- "get_bytes");
+ err = fips_check_result(output, vec->output, vec->out_size,
+ impl, "get_bytes");
out:
kfree(output);
crypto_free_rng(rng);
@@ -606,33 +553,144 @@ out:
/* Include the test vectors generated by the Python script. */
#include "fips140-generated-testvecs.h"
-/* List of all self-tests. Keep this in sync with fips140_algorithms[]. */
+/*
+ * List of all self-tests. Keep this in sync with fips140_algorithms[].
+ *
+ * When possible, we have followed the FIPS 140-2 Implementation Guidance (IG)
+ * document when creating this list of tests. The result is intended to be a
+ * list of tests that is near-minimal (and thus minimizes runtime overhead)
+ * while complying with all requirements. For additional details, see the
+ * comment at the beginning of this file.
+ */
static const struct fips_test fips140_selftests[] __initconst = {
/*
- * Tests for AES and AES modes.
+ * Test for the AES library API.
*
- * The full list of AES algorithms we potentially need to test are AES
- * by itself, AES-CBC, AES-CTR, AES-ECB, AES-GCM, and AES-XTS. We can
- * follow the FIPS 140-2 Implementation Guidance (IG) document to try to
- * reduce this list, but we run into the issue that the architecture-
- * specific implementations of these algorithms in Linux often don't
- * share the "same" underlying AES implementation. E.g., the ARMv8 CE
- * optimized implementations issue ARMv8 CE instructions directly rather
- * than going through a separate AES implementation. In this case,
- * separate tests are needed according to section 9.2 of the IG.
+ * Since the AES library API may use its own AES implementation and the
+ * module provides no support for composing it with a mode of operation
+ * (it's just plain AES), we must test it directly.
+ *
+ * In contrast, we don't need to directly test the "aes" ciphers that
+ * are accessible through the crypto_cipher API (e.g. "aes-ce"), as they
+ * are covered indirectly by AES-CMAC and AES-ECB tests.
*/
{
.alg = "aes",
- .func = fips_test_aes,
- .blockcipher = {
+ .impls = {"aes-lib"},
+ .func = fips_test_aes_library,
+ .skcipher = {
.key = fips_aes_key,
.key_size = sizeof(fips_aes_key),
.plaintext = fips_message,
.ciphertext = fips_aes_ecb_ciphertext,
- .block_size = 16,
+ .message_size = 16,
}
- }, {
+ },
+ /*
+ * Tests for AES-CMAC, a.k.a. "cmac(aes)" in crypto API syntax.
+ *
+ * The IG requires that each underlying AES implementation be tested in
+ * an authenticated mode, if implemented. Of such modes, this module
+ * implements AES-GCM and AES-CMAC. However, AES-GCM doesn't "count"
+ * because this module's implementations of AES-GCM won't actually be
+ * FIPS-approved, due to a quirk in the FIPS requirements.
+ *
+ * Therefore, for us this requirement applies to AES-CMAC, so we must
+ * test the "cmac" template composed with each "aes" implementation.
+ *
+ * Separately from the above, we also must test all standalone
+ * implementations of "cmac(aes)" such as "cmac-aes-ce", as they don't
+ * reuse another full AES implementation and thus can't be covered by
+ * another test.
+ */
+ {
+ .alg = "cmac(aes)",
+ .impls = {
+ /* "cmac" template with all "aes" implementations */
+ "cmac(aes-generic)",
+ "cmac(aes-arm64)",
+ "cmac(aes-ce)",
+ /* All standalone implementations of "cmac(aes)" */
+ "cmac-aes-neon",
+ "cmac-aes-ce",
+ },
+ .func = fips_test_hash,
+ .hash = {
+ .key = fips_aes_key,
+ .key_size = sizeof(fips_aes_key),
+ .message = fips_message,
+ .message_size = sizeof(fips_message),
+ .digest = fips_aes_cmac_digest,
+ .digest_size = sizeof(fips_aes_cmac_digest),
+ }
+ },
+ /*
+ * Tests for AES-ECB, a.k.a. "ecb(aes)" in crypto API syntax.
+ *
+ * The IG requires that each underlying AES implementation be tested in
+ * a mode that exercises the encryption direction of AES and in a mode
+ * that exercises the decryption direction of AES. CMAC only covers the
+ * encryption direction, so we choose ECB to test decryption. Thus, we
+ * test the "ecb" template composed with each "aes" implementation.
+ *
+ * Separately from the above, we also must test all standalone
+ * implementations of "ecb(aes)" such as "ecb-aes-ce", as they don't
+ * reuse another full AES implementation and thus can't be covered by
+ * another test.
+ */
+ {
+ .alg = "ecb(aes)",
+ .impls = {
+ /* "ecb" template with all "aes" implementations */
+ "ecb(aes-generic)",
+ "ecb(aes-arm64)",
+ "ecb(aes-ce)",
+ /* All standalone implementations of "ecb(aes)" */
+ "ecb-aes-neon",
+ "ecb-aes-neonbs",
+ "ecb-aes-ce",
+ },
+ .func = fips_test_skcipher,
+ .skcipher = {
+ .key = fips_aes_key,
+ .key_size = sizeof(fips_aes_key),
+ .plaintext = fips_message,
+ .ciphertext = fips_aes_ecb_ciphertext,
+ .message_size = sizeof(fips_message)
+ }
+ },
+ /*
+ * Tests for AES-CBC, AES-CBC-CTS, AES-CTR, AES-XTS, and AES-GCM.
+ *
+ * According to the IG, an AES mode of operation doesn't need to have
+ * its own test, provided that (a) both the encryption and decryption
+ * directions of the underlying AES implementation are already tested
+ * via other mode(s), and (b) in the case of an authenticated mode, at
+ * least one other authenticated mode is already tested. The tests of
+ * the "cmac" and "ecb" templates fulfill these conditions; therefore,
+ * we don't need to test any other AES mode templates.
+ *
+ * This does *not* apply to standalone implementations of these modes
+ * such as "cbc-aes-ce", as such implementations don't reuse another
+ * full AES implementation and thus can't be covered by another test.
+ * We must test all such standalone implementations.
+ *
+ * The AES-GCM test isn't actually required, as it's expected that this
+ * module's AES-GCM implementation won't actually be able to be
+ * FIPS-approved. This is unfortunate; it's caused by the FIPS
+ * requirements for GCM being incompatible with GCM implementations that
+ * don't generate their own IVs. We choose to still include the AES-GCM
+ * test to keep it on par with the other FIPS-approved algorithms, in
+ * case it turns out that AES-GCM can be approved after all.
+ */
+ {
.alg = "cbc(aes)",
+ .impls = {
+ /* All standalone implementations of "cbc(aes)" */
+ "cbc-aes-neon",
+ "cbc-aes-neonbs",
+ "cbc-aes-ce",
+ },
.func = fips_test_skcipher,
.skcipher = {
.key = fips_aes_key,
@@ -643,8 +701,40 @@ static const struct fips_test fips140_selftests[] __initconst = {
.ciphertext = fips_aes_cbc_ciphertext,
.message_size = sizeof(fips_message),
}
+ }, {
+ .alg = "cts(cbc(aes))",
+ .impls = {
+ /* All standalone implementations of "cts(cbc(aes))" */
+ "cts-cbc-aes-neon",
+ "cts-cbc-aes-ce",
+ },
+ .func = fips_test_skcipher,
+ /* Test vector taken from RFC 3962 */
+ .skcipher = {
+ .key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
+ "\x74\x65\x72\x69\x79\x61\x6b\x69",
+ .key_size = 16,
+ .iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00",
+ .iv_size = 16,
+ .plaintext = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
+ "\x6c\x69\x6b\x65\x20\x74\x68\x65"
+ "\x20\x47\x65\x6e\x65\x72\x61\x6c"
+ "\x20\x47\x61\x75\x27\x73\x20",
+ .ciphertext = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
+ "\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
+ "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
+ "\xc0\x7b\x25\xe2\x5e\xcf\xe5",
+ .message_size = 31,
+ }
}, {
.alg = "ctr(aes)",
+ .impls = {
+ /* All standalone implementations of "ctr(aes)" */
+ "ctr-aes-neon",
+ "ctr-aes-neonbs",
+ "ctr-aes-ce",
+ },
.func = fips_test_skcipher,
.skcipher = {
.key = fips_aes_key,
@@ -655,34 +745,14 @@ static const struct fips_test fips140_selftests[] __initconst = {
.ciphertext = fips_aes_ctr_ciphertext,
.message_size = sizeof(fips_message),
}
- }, {
- .alg = "ecb(aes)",
- .func = fips_test_skcipher,
- .skcipher = {
- .key = fips_aes_key,
- .key_size = sizeof(fips_aes_key),
- .plaintext = fips_message,
- .ciphertext = fips_aes_ecb_ciphertext,
- .message_size = sizeof(fips_message)
- }
- }, {
- .alg = "gcm(aes)",
- .func = fips_test_aead,
- .aead = {
- .key = fips_aes_key,
- .key_size = sizeof(fips_aes_key),
- .iv = fips_aes_iv,
- /* The GCM implementation assumes an IV size of 12. */
- .iv_size = 12,
- .assoc = fips_aes_gcm_assoc,
- .assoc_size = sizeof(fips_aes_gcm_assoc),
- .plaintext = fips_message,
- .plaintext_size = sizeof(fips_message),
- .ciphertext = fips_aes_gcm_ciphertext,
- .ciphertext_size = sizeof(fips_aes_gcm_ciphertext),
- }
}, {
.alg = "xts(aes)",
+ .impls = {
+ /* All standalone implementations of "xts(aes)" */
+ "xts-aes-neon",
+ "xts-aes-neonbs",
+ "xts-aes-ce",
+ },
.func = fips_test_skcipher,
.skcipher = {
.key = fips_aes_xts_key,
@@ -693,27 +763,36 @@ static const struct fips_test fips140_selftests[] __initconst = {
.ciphertext = fips_aes_xts_ciphertext,
.message_size = sizeof(fips_message),
}
- /*
- * Tests for SHA-1, SHA-256, HMAC-SHA256, and SHA-512.
- *
- * The selection of these specific tests follows the guidance from
- * section 9 of the FIPS 140-2 Implementation Guidance (IG) document to
- * achieve a minimal list of tests, rather than testing all of
- * SHA-{1,224,256,384,512} and HMAC-SHA{1,224,256,384,512}. As per the
- * IG, testing SHA-224 is only required if SHA-256 isn't implemented,
- * and testing SHA-384 is only required if SHA-512 isn't implemented.
- * Also, HMAC only has to be tested with one underlying SHA, and the
- * HMAC test also fulfills the test for its underlying SHA. That would
- * result in a test list of e.g. SHA-1, HMAC-SHA256, and SHA-512.
- *
- * However we also need to take into account cases where implementations
- * aren't shared in the "natural" way assumed by the IG. Currently the
- * only known exception w.r.t. SHA-* and HMAC-* is the sha256() library
- * function which may not be covered by the test of the "hmac(sha256)"
- * crypto_shash. So, we test sha256() separately.
- */
}, {
+ .alg = "gcm(aes)",
+ .impls = {
+ /* All standalone implementations of "gcm(aes)" */
+ "gcm-aes-ce",
+ },
+ .func = fips_test_aead,
+ .aead = {
+ .key = fips_aes_key,
+ .key_size = sizeof(fips_aes_key),
+ .iv = fips_aes_iv,
+ /* The GCM implementations assume an IV size of 12. */
+ .iv_size = 12,
+ .assoc = fips_aes_gcm_assoc,
+ .assoc_size = sizeof(fips_aes_gcm_assoc),
+ .plaintext = fips_message,
+ .plaintext_size = sizeof(fips_message),
+ .ciphertext = fips_aes_gcm_ciphertext,
+ .ciphertext_size = sizeof(fips_aes_gcm_ciphertext),
+ }
+ },
+
+ /* Tests for SHA-1 */
+ {
.alg = "sha1",
+ .impls = {
+ /* All implementations of "sha1" */
+ "sha1-generic",
+ "sha1-ce"
+ },
.func = fips_test_hash,
.hash = {
.message = fips_message,
@@ -721,8 +800,35 @@ static const struct fips_test fips140_selftests[] __initconst = {
.digest = fips_sha1_digest,
.digest_size = sizeof(fips_sha1_digest)
}
- }, {
+ },
+ /*
+ * Tests for all SHA-256 implementations other than the sha256() library
+ * function. As per the IG, these tests also fulfill the tests for the
+ * corresponding SHA-224 implementations.
+ */
+ {
.alg = "sha256",
+ .impls = {
+ /* All implementations of "sha256" */
+ "sha256-generic",
+ "sha256-arm64",
+ "sha256-ce",
+ },
+ .func = fips_test_hash,
+ .hash = {
+ .message = fips_message,
+ .message_size = sizeof(fips_message),
+ .digest = fips_sha256_digest,
+ .digest_size = sizeof(fips_sha256_digest)
+ }
+ },
+ /*
+ * Test for the sha256() library function. This must be tested
+ * separately because it may use its own SHA-256 implementation.
+ */
+ {
+ .alg = "sha256",
+ .impls = {"sha256-lib"},
.func = fips_test_sha256_library,
.hash = {
.message = fips_message,
@@ -730,7 +836,36 @@ static const struct fips_test fips140_selftests[] __initconst = {
.digest = fips_sha256_digest,
.digest_size = sizeof(fips_sha256_digest)
}
- }, {
+ },
+ /*
+ * Tests for all SHA-512 implementations. As per the IG, these tests
+ * also fulfill the tests for the corresponding SHA-384 implementations.
+ */
+ {
+ .alg = "sha512",
+ .impls = {
+ /* All implementations of "sha512" */
+ "sha512-generic",
+ "sha512-arm64",
+ "sha512-ce",
+ },
+ .func = fips_test_hash,
+ .hash = {
+ .message = fips_message,
+ .message_size = sizeof(fips_message),
+ .digest = fips_sha512_digest,
+ .digest_size = sizeof(fips_sha512_digest)
+ }
+ },
+ /*
+ * Test for HMAC. As per the IG, only one HMAC test is required,
+ * provided that the same HMAC code is shared by all HMAC-SHA*. This is
+ * true in our case. We choose HMAC-SHA256 for the test.
+ *
+ * Note that as per the IG, this can fulfill the test for the underlying
+ * SHA. However, we don't currently rely on this.
+ */
+ {
.alg = "hmac(sha256)",
.func = fips_test_hash,
.hash = {
@@ -741,61 +876,36 @@ static const struct fips_test fips140_selftests[] __initconst = {
.digest = fips_hmac_sha256_digest,
.digest_size = sizeof(fips_hmac_sha256_digest)
}
- }, {
- .alg = "sha512",
- .func = fips_test_hash,
- .hash = {
- .message = fips_message,
- .message_size = sizeof(fips_message),
- .digest = fips_sha512_digest,
- .digest_size = sizeof(fips_sha512_digest)
- }
+ },
/*
- * Tests for DRBG algorithms.
+ * Known-answer tests for the SP800-90A DRBG algorithms.
*
- * Only the default variant (the one that users get when they request
- * "stdrng") is required to be tested, as we don't consider the other
- * variants to be used / usable in the FIPS security policy. This is
- * similar to how e.g. we don't test both "xts(aes-generic)" and
- * "xts-aes-ce" but rather just "xts(aes)".
+ * These test vectors were manually extracted from
+ * https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/drbg/drbgtestvectors.zip.
*
- * Currently the default one is "drbg_nopr_hmac_sha256"; however, just
- * in case we also test the prediction-resistant enabled variant too.
+ * The selection of these tests follows the FIPS 140-2 IG as well as
+ * Section 11 of SP800-90A:
+ *
+ * - We must test all DRBG types (HMAC, Hash, and CTR) that the module
+ * implements. However, currently the module only implements
+ * HMAC_DRBG (since CONFIG_CRYPTO_DRBG_CTR and CONFIG_CRYPTO_DRBG_HASH
+ * aren't enabled). Therefore, we only need to test HMAC_DRBG.
+ *
+ * - We only need to test one HMAC variant.
+ *
+ * - We must test all DRBG operations: Instantiate(), Reseed(), and
+ * Generate(). However, a single test sequence with a single output
+ * comparison may cover all three operations, and this is what we do.
+ * Note that Reseed() happens implicitly via the use of the additional
+ * input and also via the use of prediction resistance when enabled.
+ *
+ * - The personalization string, additional input, and prediction
+ * resistance support must be tested. Therefore we have chosen test
+ * vectors that have a nonempty personalization string and nonempty
+ * additional input, and we test the prediction-resistant variant.
+ * Testing the non-prediction-resistant variant is not required.
*/
- }, {
- .alg = "drbg_nopr_hmac_sha256",
- .func = fips_test_drbg,
- .drbg = {
- .entropy =
- "\xf9\x7a\x3c\xfd\x91\xfa\xa0\x46\xb9\xe6\x1b\x94"
- "\x93\xd4\x36\xc4\x93\x1f\x60\x4b\x22\xf1\x08\x15"
- "\x21\xb3\x41\x91\x51\xe8\xff\x06\x11\xf3\xa7\xd4"
- "\x35\x95\x35\x7d\x58\x12\x0b\xd1\xe2\xdd\x8a\xed",
- .entropy_size = 48,
- .output =
- "\xc6\x87\x1c\xff\x08\x24\xfe\x55\xea\x76\x89\xa5"
- "\x22\x29\x88\x67\x30\x45\x0e\x5d\x36\x2d\xa5\xbf"
- "\x59\x0d\xcf\x9a\xcd\x67\xfe\xd4\xcb\x32\x10\x7d"
- "\xf5\xd0\x39\x69\xa6\x6b\x1f\x64\x94\xfd\xf5\xd6"
- "\x3d\x5b\x4d\x0d\x34\xea\x73\x99\xa0\x7d\x01\x16"
- "\x12\x6d\x0d\x51\x8c\x7c\x55\xba\x46\xe1\x2f\x62"
- "\xef\xc8\xfe\x28\xa5\x1c\x9d\x42\x8e\x6d\x37\x1d"
- "\x73\x97\xab\x31\x9f\xc7\x3d\xed\x47\x22\xe5\xb4"
- "\xf3\x00\x04\x03\x2a\x61\x28\xdf\x5e\x74\x97\xec"
- "\xf8\x2c\xa7\xb0\xa5\x0e\x86\x7e\xf6\x72\x8a\x4f"
- "\x50\x9a\x8c\x85\x90\x87\x03\x9c",
- .out_size = 128,
- .add_a =
- "\x51\x72\x89\xaf\xe4\x44\xa0\xfe\x5e\xd1\xa4\x1d"
- "\xbb\xb5\xeb\x17\x15\x00\x79\xbd\xd3\x1e\x29\xcf"
- "\x2f\xf3\x00\x34\xd8\x26\x8e\x3b",
- .add_b =
- "\x88\x02\x8d\x29\xef\x80\xb4\xe6\xf0\xfe\x12\xf9"
- "\x1d\x74\x49\xfe\x75\x06\x26\x82\xe8\x9c\x57\x14"
- "\x40\xc0\xc9\xb5\x2c\x42\xa6\xe0",
- .add_size = 32,
- }
- }, {
+ {
.alg = "drbg_pr_hmac_sha256",
.func = fips_test_drbg,
.drbg = {
@@ -845,19 +955,44 @@ static const struct fips_test fips140_selftests[] __initconst = {
}
};
+static int __init __must_check
+fips_run_test(const struct fips_test *test)
+{
+ int i;
+ int err;
+
+ /*
+ * If no implementations were specified, then just test the default one.
+ * Otherwise, test the specified list of implementations.
+ */
+
+ if (test->impls[0] == NULL) {
+ err = test->func(test, test->alg);
+ if (err)
+ pr_emerg("self-tests failed for algorithm %s: %d\n",
+ test->alg, err);
+ return err;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(test->impls) && test->impls[i] != NULL;
+ i++) {
+ err = test->func(test, test->impls[i]);
+ if (err) {
+ pr_emerg("self-tests failed for algorithm %s, implementation %s: %d\n",
+ test->alg, test->impls[i], err);
+ return err;
+ }
+ }
+ return 0;
+}
+
bool __init fips140_run_selftests(void)
{
int i;
pr_info("running self-tests\n");
for (i = 0; i < ARRAY_SIZE(fips140_selftests); i++) {
- const struct fips_test *test = &fips140_selftests[i];
- int err;
-
- err = test->func(test);
- if (err) {
- pr_emerg("self-tests failed for algorithm %s: %d\n",
- test->alg, err);
+ if (fips_run_test(&fips140_selftests[i]) != 0) {
/* The caller is responsible for calling panic(). */
return false;
}
diff --git a/crypto/fips140_gen_hmac.c b/crypto/fips140_gen_hmac.c
index eebdc729ca99..69f754d38a1d 100644
--- a/crypto/fips140_gen_hmac.c
+++ b/crypto/fips140_gen_hmac.c
@@ -28,7 +28,7 @@
static Elf64_Ehdr *ehdr;
static Elf64_Shdr *shdr;
static int num_shdr;
-static const char *strtab;
+static const char *strtab, *shstrtab;
static Elf64_Sym *syms;
static int num_syms;
@@ -42,17 +42,78 @@ static Elf64_Shdr *find_symtab_section(void)
return NULL;
}
-static void *get_sym_addr(const char *sym_name)
+static int get_section_idx(const char *name)
+{
+ int i;
+
+ for (i = 0; i < num_shdr; i++)
+ if (!strcmp(shstrtab + shdr[i].sh_name, name))
+ return i;
+ return -1;
+}
+
+static int get_sym_idx(const char *sym_name)
{
int i;
for (i = 0; i < num_syms; i++)
if (!strcmp(strtab + syms[i].st_name, sym_name))
- return (void *)ehdr + shdr[syms[i].st_shndx].sh_offset +
- syms[i].st_value;
+ return i;
+ return -1;
+}
+
+static void *get_sym_addr(const char *sym_name)
+{
+ int i = get_sym_idx(sym_name);
+
+ if (i >= 0)
+ return (void *)ehdr + shdr[syms[i].st_shndx].sh_offset +
+ syms[i].st_value;
return NULL;
}
+static int update_rela_ref(const char *name)
+{
+ /*
+ * We need to do a couple of things to ensure that the copied RELA data
+ * is accessible to the module itself at module init time:
+ * - the associated entry in the symbol table needs to refer to the
+ * correct section index, and have SECTION type and GLOBAL linkage.
+ * - the 'count' global variable in the module need to be set to the
+ * right value based on the size of the RELA section.
+ */
+ unsigned int *size_var;
+ int sec_idx, sym_idx;
+ char str[32];
+
+ sprintf(str, "fips140_rela_%s", name);
+ size_var = get_sym_addr(str);
+ if (!size_var) {
+ printf("variable '%s' not found, disregarding .%s section\n",
+ str, name);
+ return 1;
+ }
+
+ sprintf(str, "__sec_rela_%s", name);
+ sym_idx = get_sym_idx(str);
+
+ sprintf(str, ".init.rela.%s", name);
+ sec_idx = get_section_idx(str);
+
+ if (sec_idx < 0 || sym_idx < 0) {
+ fprintf(stderr, "failed to locate metadata for .%s section in binary\n",
+ name);
+ return 0;
+ }
+
+ syms[sym_idx].st_shndx = sec_idx;
+ syms[sym_idx].st_info = (STB_GLOBAL << 4) | STT_SECTION;
+
+ size_var[1] = shdr[sec_idx].sh_size / sizeof(Elf64_Rela);
+
+ return 1;
+}
+
static void hmac_section(HMAC_CTX *hmac, const char *start, const char *end)
{
void *start_addr = get_sym_addr(start);
@@ -103,6 +164,10 @@ int main(int argc, char **argv)
num_syms = symtab_shdr->sh_size / sizeof(Elf64_Sym);
strtab = (void *)ehdr + shdr[symtab_shdr->sh_link].sh_offset;
+ shstrtab = (void *)ehdr + shdr[ehdr->e_shstrndx].sh_offset;
+
+ if (!update_rela_ref("text") || !update_rela_ref("rodata"))
+ exit(EXIT_FAILURE);
hmac_key = get_sym_addr("fips140_integ_hmac_key");
if (!hmac_key) {
diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c
index 423219ac6989..46f71a3def2b 100644
--- a/drivers/android/vendor_hooks.c
+++ b/drivers/android/vendor_hooks.c
@@ -17,7 +17,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -123,7 +122,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_alloc_page);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_enter);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_idle_exit);
-EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mpam_set);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_gic_resume);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool);
@@ -376,6 +374,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_usb_dev_resume);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ipv6_gen_linklocal_addr);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sound_usb_support_cpu_suspend);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snd_compr_use_pause_in_drain);
+EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snd_soc_card_get_comp_chain);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_sendmsg_locked);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_tcp_recvmsg);
diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c
index 2aa3b5eafaff..a9a9abfd4bb1 100644
--- a/drivers/dma-buf/heaps/system_heap.c
+++ b/drivers/dma-buf/heaps/system_heap.c
@@ -543,10 +543,37 @@ static struct dma_heap_ops system_uncached_heap_ops = {
.allocate = system_uncached_heap_not_initialized,
};
+static int set_heap_dev_dma(struct device *heap_dev)
+{
+ int err = 0;
+
+ if (!heap_dev)
+ return -EINVAL;
+
+ dma_coerce_mask_and_coherent(heap_dev, DMA_BIT_MASK(64));
+
+ if (!heap_dev->dma_parms) {
+ heap_dev->dma_parms = devm_kzalloc(heap_dev,
+ sizeof(*heap_dev->dma_parms),
+ GFP_KERNEL);
+ if (!heap_dev->dma_parms)
+ return -ENOMEM;
+
+ err = dma_set_max_seg_size(heap_dev, (unsigned int)DMA_BIT_MASK(64));
+ if (err) {
+ devm_kfree(heap_dev, heap_dev->dma_parms);
+ dev_err(heap_dev, "Failed to set DMA segment size, err:%d\n", err);
+ return err;
+ }
+ }
+
+ return 0;
+}
+
static int system_heap_create(void)
{
struct dma_heap_export_info exp_info;
- int i;
+ int i, err = 0;
for (i = 0; i < NUM_ORDERS; i++) {
pools[i] = dmabuf_page_pool_create(order_flags[i], orders[i]);
@@ -577,7 +604,10 @@ static int system_heap_create(void)
if (IS_ERR(sys_uncached_heap))
return PTR_ERR(sys_uncached_heap);
- dma_coerce_mask_and_coherent(dma_heap_get_dev(sys_uncached_heap), DMA_BIT_MASK(64));
+ err = set_heap_dev_dma(dma_heap_get_dev(sys_uncached_heap));
+ if (err)
+ return err;
+
mb(); /* make sure we only set allocate after dma_mask is set */
system_uncached_heap_ops.allocate = system_uncached_heap_allocate;
diff --git a/drivers/scsi/ufs/ufs_quirks.h b/drivers/scsi/ufs/ufs_quirks.h
index 07f559ac5883..35ec9ea79869 100644
--- a/drivers/scsi/ufs/ufs_quirks.h
+++ b/drivers/scsi/ufs/ufs_quirks.h
@@ -116,4 +116,10 @@ struct ufs_dev_fix {
*/
#define UFS_DEVICE_QUIRK_DELAY_AFTER_LPM (1 << 11)
+/*
+ * Some UFS devices require L2P entry should be swapped before being sent to the
+ * UFS device for HPB READ command.
+ */
+#define UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ (1 << 12)
+
#endif /* UFS_QUIRKS_H_ */
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 0d50f724fd7f..dbd888f929c4 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -202,7 +202,8 @@ ufs_get_desired_pm_lvl_for_dev_link_state(enum ufs_dev_pwr_mode dev_state,
static struct ufs_dev_fix ufs_fixups[] = {
/* UFS cards deviations table */
UFS_FIX(UFS_VENDOR_MICRON, UFS_ANY_MODEL,
- UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM),
+ UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM |
+ UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ),
UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM |
UFS_DEVICE_QUIRK_HOST_PA_TACTIVATE |
diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c
index 10d8b3dde976..3cce91d1e63f 100644
--- a/drivers/scsi/ufs/ufshpb.c
+++ b/drivers/scsi/ufs/ufshpb.c
@@ -329,15 +329,19 @@ ufshpb_get_pos_from_lpn(struct ufshpb_lu *hpb, unsigned long lpn, int *rgn_idx,
}
static void
-ufshpb_set_hpb_read_to_upiu(struct ufshpb_lu *hpb, struct ufshcd_lrb *lrbp,
- u32 lpn, __be64 ppn, u8 transfer_len, int read_id)
+ufshpb_set_hpb_read_to_upiu(struct ufs_hba *hba, struct ufshpb_lu *hpb,
+ struct ufshcd_lrb *lrbp, u32 lpn, __be64 ppn,
+ u8 transfer_len, int read_id)
{
unsigned char *cdb = lrbp->cmd->cmnd;
-
+ __be64 ppn_tmp = ppn;
cdb[0] = UFSHPB_READ;
+ if (hba->dev_quirks & UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ)
+ ppn_tmp = swab64(ppn);
+
/* ppn value is stored as big-endian in the host memory */
- memcpy(&cdb[6], &ppn, sizeof(__be64));
+ memcpy(&cdb[6], &ppn_tmp, sizeof(__be64));
cdb[14] = transfer_len;
cdb[15] = read_id;
@@ -696,7 +700,8 @@ int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
}
}
- ufshpb_set_hpb_read_to_upiu(hpb, lrbp, lpn, ppn, transfer_len, read_id);
+ ufshpb_set_hpb_read_to_upiu(hba, hpb, lrbp, lpn, ppn, transfer_len,
+ read_id);
hpb->stats.hit_cnt++;
return 0;
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index f66fefaf401a..c6b05d6142d1 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -728,6 +728,7 @@ struct dwc3_ep {
#define DWC3_EP_FORCE_RESTART_STREAM BIT(9)
#define DWC3_EP_FIRST_STREAM_PRIMED BIT(10)
#define DWC3_EP_PENDING_CLEAR_STALL BIT(11)
+#define DWC3_EP_TXFIFO_RESIZED BIT(12)
/* This last one is specific to EP0 */
#define DWC3_EP0_DIR_IN BIT(31)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 0c38791da695..224a4a34509a 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -700,6 +700,7 @@ void dwc3_gadget_clear_tx_fifos(struct dwc3 *dwc)
DWC31_GTXFIFOSIZ_TXFRAMNUM;
dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(num >> 1), size);
+ dep->flags &= ~DWC3_EP_TXFIFO_RESIZED;
}
dwc->num_ep_resized = 0;
}
@@ -745,6 +746,10 @@ static int dwc3_gadget_resize_tx_fifos(struct dwc3_ep *dep)
if (!usb_endpoint_dir_in(dep->endpoint.desc) || dep->number <= 1)
return 0;
+ /* bail if already resized */
+ if (dep->flags & DWC3_EP_TXFIFO_RESIZED)
+ return 0;
+
ram1_depth = DWC3_RAM1_DEPTH(dwc->hwparams.hwparams7);
if ((dep->endpoint.maxburst > 1 &&
@@ -805,6 +810,7 @@ static int dwc3_gadget_resize_tx_fifos(struct dwc3_ep *dep)
}
dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(dep->number >> 1), fifo_size);
+ dep->flags |= DWC3_EP_TXFIFO_RESIZED;
dwc->num_ep_resized++;
return 0;
@@ -993,7 +999,7 @@ static int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)
dep->stream_capable = false;
dep->type = 0;
- dep->flags = 0;
+ dep->flags &= DWC3_EP_TXFIFO_RESIZED;
return 0;
}
@@ -1811,7 +1817,7 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
struct dwc3 *dwc = dep->dwc;
if (!dep->endpoint.desc || !dwc->pullups_connected || !dwc->connected) {
- dev_err(dwc->dev, "%s: can't queue to disabled endpoint\n",
+ dev_dbg(dwc->dev, "%s: can't queue to disabled endpoint\n",
dep->name);
return -ESHUTDOWN;
}
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 0376e440b5b7..fd177426b46d 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -3330,7 +3330,13 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
block_t blkaddr = NULL_ADDR;
int err = 0;
- if (trace_android_fs_datawrite_start_enabled()) {
+ /*
+ * Should avoid quota operations which can make deadlock:
+ * kswapd -> f2fs_evict_inode -> dquot_drop ->
+ * f2fs_dquot_commit -> f2fs_write_begin ->
+ * d_obtain_alias -> __d_alloc -> kmem_cache_alloc(GFP_KERNEL)
+ */
+ if (trace_android_fs_datawrite_start_enabled() && !IS_NOQUOTA(inode)) {
char *path, pathbuf[MAX_TRACE_PATHBUF_LEN];
path = android_fstrace_get_pathname(pathbuf,
diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c
index 0650ee90f8b1..ea7866fbfd6e 100644
--- a/fs/incfs/vfs.c
+++ b/fs/incfs/vfs.c
@@ -458,8 +458,10 @@ static struct dentry *open_or_create_special_dir(struct dentry *backing_dir,
err = vfs_mkdir(backing_inode, index_dentry, 0777);
inode_unlock(backing_inode);
- if (err)
+ if (err) {
+ dput(index_dentry);
return ERR_PTR(err);
+ }
if (!d_really_is_positive(index_dentry) ||
unlikely(d_unhashed(index_dentry))) {
diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
index b29a4593f119..01cdd2c57b65 100644
--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -1873,7 +1873,7 @@ static int userfaultfd_continue(struct userfaultfd_ctx *ctx, unsigned long arg)
sizeof(uffdio_continue) - (sizeof(__s64))))
goto out;
- ret = validate_range(ctx->mm, &uffdio_continue.range.start,
+ ret = validate_range(ctx->mm, uffdio_continue.range.start,
uffdio_continue.range.len);
if (ret)
goto out;
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
index 2713db8395f6..8063ae23c1ff 100644
--- a/include/linux/cpuset.h
+++ b/include/linux/cpuset.h
@@ -55,6 +55,7 @@ extern int cpuset_init(void);
extern void cpuset_init_smp(void);
extern void cpuset_force_rebuild(void);
extern void cpuset_update_active_cpus(void);
+extern void cpuset_update_active_cpus_affine(int cpu);
extern void cpuset_wait_for_hotplug(void);
extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask);
extern void cpuset_cpus_allowed_fallback(struct task_struct *p);
@@ -172,6 +173,8 @@ static inline void cpuset_init_smp(void) {}
static inline void cpuset_force_rebuild(void) { }
+static inline void cpuset_update_active_cpus_affine(int cpu) {}
+
static inline void cpuset_update_active_cpus(void)
{
partition_sched_domains(1, NULL, NULL);
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 330c82c58afe..63338f68de48 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1105,12 +1105,6 @@ struct snd_soc_card {
ANDROID_KABI_RESERVE(3);
ANDROID_KABI_RESERVE(4);
};
-
-struct snd_soc_card_ext {
- struct snd_soc_card card;
- unsigned int component_chaining:1;
-};
-
#define for_each_card_prelinks(card, i, link) \
for ((i) = 0; \
((i) < (card)->num_links) && ((link) = &(card)->dai_link[i]); \
diff --git a/include/trace/hooks/mpam.h b/include/trace/hooks/mpam.h
deleted file mode 100644
index 8479fe7c2356..000000000000
--- a/include/trace/hooks/mpam.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#undef TRACE_SYSTEM
-#define TRACE_SYSTEM mpam
-#undef TRACE_INCLUDE_PATH
-#define TRACE_INCLUDE_PATH trace/hooks
-#if !defined(_TRACE_HOOK_MPAM_H) || defined(TRACE_HEADER_MULTI_READ)
-#define _TRACE_HOOK_MPAM_H
-#include
-#include
-/*
- * Following tracepoints are not exported in tracefs and provide a
- * mechanism for vendor modules to hook and extend functionality
- */
-struct task_struct;
-DECLARE_HOOK(android_vh_mpam_set,
- TP_PROTO(struct task_struct *prev, struct task_struct *next),
- TP_ARGS(prev, next));
-
-/* macro versions of hooks are no longer required */
-
-#endif /* _TRACE_HOOK_MPAM_H */
-/* This part must be outside protection */
-#include
diff --git a/include/trace/hooks/sound.h b/include/trace/hooks/sound.h
index 2bf018edf392..6eb8bc326cf8 100644
--- a/include/trace/hooks/sound.h
+++ b/include/trace/hooks/sound.h
@@ -15,6 +15,10 @@ DECLARE_HOOK(android_vh_sound_usb_support_cpu_suspend,
bool *is_support),
TP_ARGS(udev, direction, is_support));
+DECLARE_HOOK(android_vh_snd_soc_card_get_comp_chain,
+ TP_PROTO(bool *component_chaining),
+ TP_ARGS(component_chaining));
+
#endif /* _TRACE_HOOK_SOUND_H */
/* This part must be outside protection */
#include
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index c7f574a68cdb..a49b1598466d 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -3289,6 +3289,11 @@ void cpuset_update_active_cpus(void)
schedule_work(&cpuset_hotplug_work);
}
+void cpuset_update_active_cpus_affine(int cpu)
+{
+ schedule_work_on(cpu, &cpuset_hotplug_work);
+}
+
void cpuset_wait_for_hotplug(void)
{
flush_work(&cpuset_hotplug_work);
diff --git a/kernel/cpu.c b/kernel/cpu.c
index b69e0904a1fc..41c73436e745 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -1361,11 +1361,11 @@ int resume_cpus(struct cpumask *cpus)
prev_prio = pause_reduce_prio();
- /* Lazy Resume. Build domains immediately instead of scheduling
- * a workqueue. This is so that the cpu can pull load when
- * sent a load balancing kick.
+ /* Lazy Resume. Build domains through schedule a workqueue on
+ * resuming cpu. This is so that the resuming cpu can work more
+ * early, and cannot add additional load to other busy cpu.
*/
- cpuset_hotplug_workfn(NULL);
+ cpuset_update_active_cpus_affine(cpumask_first(cpus));
cpus_write_lock();
diff --git a/lib/Kconfig.ubsan b/lib/Kconfig.ubsan
index 58f8d03d037b..e5372a13511d 100644
--- a/lib/Kconfig.ubsan
+++ b/lib/Kconfig.ubsan
@@ -14,6 +14,7 @@ if UBSAN
config UBSAN_TRAP
bool "On Sanitizer warnings, abort the running kernel code"
+ depends on !COMPILE_TEST
depends on $(cc-option, -fsanitize-undefined-trap-on-error)
help
Building kernels with Sanitizer features enabled tends to grow
@@ -36,10 +37,17 @@ config UBSAN_KCOV_BROKEN
See https://bugs.llvm.org/show_bug.cgi?id=45831 for the status
in newer releases.
+config CC_HAS_UBSAN_BOUNDS
+ def_bool $(cc-option,-fsanitize=bounds)
+
+config CC_HAS_UBSAN_ARRAY_BOUNDS
+ def_bool $(cc-option,-fsanitize=array-bounds)
+
config UBSAN_BOUNDS
bool "Perform array index bounds checking"
default UBSAN
depends on !UBSAN_KCOV_BROKEN
+ depends on CC_HAS_UBSAN_ARRAY_BOUNDS || CC_HAS_UBSAN_BOUNDS
help
This option enables detection of directly indexed out of bounds
array accesses, where the array size is known at compile time.
@@ -47,36 +55,105 @@ config UBSAN_BOUNDS
to the {str,mem}*cpy() family of functions (that is addressed
by CONFIG_FORTIFY_SOURCE).
+config UBSAN_ONLY_BOUNDS
+ def_bool CC_HAS_UBSAN_BOUNDS && !CC_HAS_UBSAN_ARRAY_BOUNDS
+ depends on UBSAN_BOUNDS
+ help
+ This is a weird case: Clang's -fsanitize=bounds includes
+ -fsanitize=local-bounds, but it's trapping-only, so for
+ Clang, we must use -fsanitize=array-bounds when we want
+ traditional array bounds checking enabled. For GCC, we
+ want -fsanitize=bounds.
+
+config UBSAN_ARRAY_BOUNDS
+ def_bool CC_HAS_UBSAN_ARRAY_BOUNDS
+ depends on UBSAN_BOUNDS
+
config UBSAN_LOCAL_BOUNDS
bool "Perform array local bounds checking"
depends on UBSAN_TRAP
- depends on CC_IS_CLANG
depends on !UBSAN_KCOV_BROKEN
+ depends on $(cc-option,-fsanitize=local-bounds)
help
This option enables -fsanitize=local-bounds which traps when an
- exception/error is detected. Therefore, it should be enabled only
- if trapping is expected.
+ exception/error is detected. Therefore, it may only be enabled
+ with CONFIG_UBSAN_TRAP.
+
Enabling this option detects errors due to accesses through a
pointer that is derived from an object of a statically-known size,
where an added offset (which may not be known statically) is
out-of-bounds.
-config UBSAN_MISC
- bool "Enable all other Undefined Behavior sanity checks"
+config UBSAN_SHIFT
+ bool "Perform checking for bit-shift overflows"
default UBSAN
+ depends on $(cc-option,-fsanitize=shift)
help
- This option enables all sanity checks that don't have their
- own Kconfig options. Disable this if you only want to have
- individually selected checks.
+ This option enables -fsanitize=shift which checks for bit-shift
+ operations that overflow to the left or go switch to negative
+ for signed types.
+
+config UBSAN_DIV_ZERO
+ bool "Perform checking for integer divide-by-zero"
+ depends on $(cc-option,-fsanitize=integer-divide-by-zero)
+ help
+ This option enables -fsanitize=integer-divide-by-zero which checks
+ for integer division by zero. This is effectively redundant with the
+ kernel's existing exception handling, though it can provide greater
+ debugging information under CONFIG_UBSAN_REPORT_FULL.
+
+config UBSAN_UNREACHABLE
+ bool "Perform checking for unreachable code"
+ # objtool already handles unreachable checking and gets angry about
+ # seeing UBSan instrumentation located in unreachable places.
+ depends on !STACK_VALIDATION
+ depends on $(cc-option,-fsanitize=unreachable)
+ help
+ This option enables -fsanitize=unreachable which checks for control
+ flow reaching an expected-to-be-unreachable position.
+
+config UBSAN_OBJECT_SIZE
+ bool "Perform checking for accesses beyond the end of objects"
+ default UBSAN
+ # gcc hugely expands stack usage with -fsanitize=object-size
+ # https://lore.kernel.org/lkml/CAHk-=wjPasyJrDuwDnpHJS2TuQfExwe=px-SzLeN8GFMAQJPmQ@mail.gmail.com/
+ depends on !CC_IS_GCC
+ depends on $(cc-option,-fsanitize=object-size)
+ help
+ This option enables -fsanitize=object-size which checks for accesses
+ beyond the end of objects where the optimizer can determine both the
+ object being operated on and its size, usually seen with bad downcasts,
+ or access to struct members from NULL pointers.
+
+config UBSAN_BOOL
+ bool "Perform checking for non-boolean values used as boolean"
+ default UBSAN
+ depends on $(cc-option,-fsanitize=bool)
+ help
+ This option enables -fsanitize=bool which checks for boolean values being
+ loaded that are neither 0 nor 1.
+
+config UBSAN_ENUM
+ bool "Perform checking for out of bounds enum values"
+ default UBSAN
+ depends on $(cc-option,-fsanitize=enum)
+ help
+ This option enables -fsanitize=enum which checks for values being loaded
+ into an enum that are outside the range of given values for the given enum.
+
+config UBSAN_ALIGNMENT
+ bool "Perform checking for misaligned pointer usage"
+ default !HAVE_EFFICIENT_UNALIGNED_ACCESS
+ depends on !UBSAN_TRAP && !COMPILE_TEST
+ depends on $(cc-option,-fsanitize=alignment)
+ help
+ This option enables the check of unaligned memory accesses.
+ Enabling this option on architectures that support unaligned
+ accesses may produce a lot of false positives.
config UBSAN_SANITIZE_ALL
bool "Enable instrumentation for the entire kernel"
depends on ARCH_HAS_UBSAN_SANITIZE_ALL
-
- # We build with -Wno-maybe-uninitilzed, but we still want to
- # use -Wmaybe-uninitilized in allmodconfig builds.
- # So dependsy bellow used to disable this option in allmodconfig
- depends on !COMPILE_TEST
default y
help
This option activates instrumentation for the entire kernel.
@@ -85,15 +162,6 @@ config UBSAN_SANITIZE_ALL
Enabling this option will get kernel image size increased
significantly.
-config UBSAN_ALIGNMENT
- bool "Enable checks for pointers alignment"
- default !HAVE_EFFICIENT_UNALIGNED_ACCESS
- depends on !UBSAN_TRAP
- help
- This option enables the check of unaligned memory accesses.
- Enabling this option on architectures that support unaligned
- accesses may produce a lot of false positives.
-
config TEST_UBSAN
tristate "Module for testing for undefined behavior detection"
depends on m
diff --git a/lib/test_ubsan.c b/lib/test_ubsan.c
index 9ea10adf7a66..7e7bbd0f3fd2 100644
--- a/lib/test_ubsan.c
+++ b/lib/test_ubsan.c
@@ -5,71 +5,78 @@
typedef void(*test_ubsan_fp)(void);
-static void test_ubsan_add_overflow(void)
-{
- volatile int val = INT_MAX;
-
- val += 2;
-}
-
-static void test_ubsan_sub_overflow(void)
-{
- volatile int val = INT_MIN;
- volatile int val2 = 2;
-
- val -= val2;
-}
-
-static void test_ubsan_mul_overflow(void)
-{
- volatile int val = INT_MAX / 2;
-
- val *= 3;
-}
-
-static void test_ubsan_negate_overflow(void)
-{
- volatile int val = INT_MIN;
-
- val = -val;
-}
+#define UBSAN_TEST(config, ...) do { \
+ pr_info("%s " __VA_ARGS__ "%s(%s=%s)\n", __func__, \
+ sizeof(" " __VA_ARGS__) > 2 ? " " : "", \
+ #config, IS_ENABLED(config) ? "y" : "n"); \
+ } while (0)
static void test_ubsan_divrem_overflow(void)
{
volatile int val = 16;
volatile int val2 = 0;
+ UBSAN_TEST(CONFIG_UBSAN_DIV_ZERO);
val /= val2;
}
static void test_ubsan_shift_out_of_bounds(void)
{
- volatile int val = -1;
- int val2 = 10;
+ volatile int neg = -1, wrap = 4;
+ int val1 = 10;
+ int val2 = INT_MAX;
- val2 <<= val;
+ UBSAN_TEST(CONFIG_UBSAN_SHIFT, "negative exponent");
+ val1 <<= neg;
+
+ UBSAN_TEST(CONFIG_UBSAN_SHIFT, "left overflow");
+ val2 <<= wrap;
}
static void test_ubsan_out_of_bounds(void)
{
- volatile int i = 4, j = 5;
+ volatile int i = 4, j = 5, k = -1;
+ volatile char above[4] = { }; /* Protect surrounding memory. */
volatile int arr[4];
+ volatile char below[4] = { }; /* Protect surrounding memory. */
+ above[0] = below[0];
+
+ UBSAN_TEST(CONFIG_UBSAN_BOUNDS, "above");
arr[j] = i;
+
+ UBSAN_TEST(CONFIG_UBSAN_BOUNDS, "below");
+ arr[k] = i;
}
+enum ubsan_test_enum {
+ UBSAN_TEST_ZERO = 0,
+ UBSAN_TEST_ONE,
+ UBSAN_TEST_MAX,
+};
+
static void test_ubsan_load_invalid_value(void)
{
volatile char *dst, *src;
bool val, val2, *ptr;
- char c = 4;
+ enum ubsan_test_enum eval, eval2, *eptr;
+ unsigned char c = 0xff;
+ UBSAN_TEST(CONFIG_UBSAN_BOOL, "bool");
dst = (char *)&val;
src = &c;
*dst = *src;
ptr = &val2;
val2 = val;
+
+ UBSAN_TEST(CONFIG_UBSAN_ENUM, "enum");
+ dst = (char *)&eval;
+ src = &c;
+ *dst = *src;
+
+ eptr = &eval2;
+ eval2 = eval;
}
static void test_ubsan_null_ptr_deref(void)
@@ -77,6 +84,7 @@ static void test_ubsan_null_ptr_deref(void)
volatile int *ptr = NULL;
int val;
+ UBSAN_TEST(CONFIG_UBSAN_OBJECT_SIZE);
val = *ptr;
}
@@ -85,6 +93,7 @@ static void test_ubsan_misaligned_access(void)
volatile char arr[5] __aligned(4) = {1, 2, 3, 4, 5};
volatile int *ptr, val = 6;
+ UBSAN_TEST(CONFIG_UBSAN_ALIGNMENT);
ptr = (int *)(arr + 1);
*ptr = val;
}
@@ -95,24 +104,25 @@ static void test_ubsan_object_size_mismatch(void)
volatile int val __aligned(8) = 4;
volatile long long *ptr, val2;
+ UBSAN_TEST(CONFIG_UBSAN_OBJECT_SIZE);
ptr = (long long *)&val;
val2 = *ptr;
}
static const test_ubsan_fp test_ubsan_array[] = {
- test_ubsan_add_overflow,
- test_ubsan_sub_overflow,
- test_ubsan_mul_overflow,
- test_ubsan_negate_overflow,
- test_ubsan_divrem_overflow,
test_ubsan_shift_out_of_bounds,
test_ubsan_out_of_bounds,
test_ubsan_load_invalid_value,
- //test_ubsan_null_ptr_deref, /* exclude it because there is a crash */
test_ubsan_misaligned_access,
test_ubsan_object_size_mismatch,
};
+/* Excluded because they Oops the module. */
+static const test_ubsan_fp skip_ubsan_array[] = {
+ test_ubsan_divrem_overflow,
+ test_ubsan_null_ptr_deref,
+};
+
static int __init test_ubsan_init(void)
{
unsigned int i;
@@ -120,7 +130,6 @@ static int __init test_ubsan_init(void)
for (i = 0; i < ARRAY_SIZE(test_ubsan_array); i++)
test_ubsan_array[i]();
- (void)test_ubsan_null_ptr_deref; /* to avoid unsed-function warning */
return 0;
}
module_init(test_ubsan_init);
diff --git a/lib/ubsan.c b/lib/ubsan.c
index adf8dcf3c84e..6e36b167ce67 100644
--- a/lib/ubsan.c
+++ b/lib/ubsan.c
@@ -163,74 +163,6 @@ static void ubsan_epilogue(void)
}
}
-static void handle_overflow(struct overflow_data *data, void *lhs,
- void *rhs, char op)
-{
-
- struct type_descriptor *type = data->type;
- char lhs_val_str[VALUE_LENGTH];
- char rhs_val_str[VALUE_LENGTH];
-
- if (suppress_report(&data->location))
- return;
-
- ubsan_prologue(&data->location, type_is_signed(type) ?
- "signed-integer-overflow" :
- "unsigned-integer-overflow");
-
- val_to_string(lhs_val_str, sizeof(lhs_val_str), type, lhs);
- val_to_string(rhs_val_str, sizeof(rhs_val_str), type, rhs);
- pr_err("%s %c %s cannot be represented in type %s\n",
- lhs_val_str,
- op,
- rhs_val_str,
- type->type_name);
-
- ubsan_epilogue();
-}
-
-void __ubsan_handle_add_overflow(void *data,
- void *lhs, void *rhs)
-{
-
- handle_overflow(data, lhs, rhs, '+');
-}
-EXPORT_SYMBOL(__ubsan_handle_add_overflow);
-
-void __ubsan_handle_sub_overflow(void *data,
- void *lhs, void *rhs)
-{
- handle_overflow(data, lhs, rhs, '-');
-}
-EXPORT_SYMBOL(__ubsan_handle_sub_overflow);
-
-void __ubsan_handle_mul_overflow(void *data,
- void *lhs, void *rhs)
-{
- handle_overflow(data, lhs, rhs, '*');
-}
-EXPORT_SYMBOL(__ubsan_handle_mul_overflow);
-
-void __ubsan_handle_negate_overflow(void *_data, void *old_val)
-{
- struct overflow_data *data = _data;
- char old_val_str[VALUE_LENGTH];
-
- if (suppress_report(&data->location))
- return;
-
- ubsan_prologue(&data->location, "negation-overflow");
-
- val_to_string(old_val_str, sizeof(old_val_str), data->type, old_val);
-
- pr_err("negation of %s cannot be represented in type %s:\n",
- old_val_str, data->type->type_name);
-
- ubsan_epilogue();
-}
-EXPORT_SYMBOL(__ubsan_handle_negate_overflow);
-
-
void __ubsan_handle_divrem_overflow(void *_data, void *lhs, void *rhs)
{
struct overflow_data *data = _data;
diff --git a/mm/memory.c b/mm/memory.c
index 44c6a8ee197b..5db2a3ed395b 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -3159,7 +3159,7 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf)
*/
if (!pte_map_lock(vmf)) {
ret = VM_FAULT_RETRY;
- goto out_free_new;
+ goto out_invalidate_end;
}
if (likely(pte_same(*vmf->pte, vmf->orig_pte))) {
if (old_page) {
@@ -3247,6 +3247,8 @@ static vm_fault_t wp_page_copy(struct vm_fault *vmf)
put_page(old_page);
}
return page_copied ? VM_FAULT_WRITE : 0;
+out_invalidate_end:
+ mmu_notifier_invalidate_range_only_end(&range);
out_free_new:
put_page(new_page);
out:
diff --git a/mm/mremap.c b/mm/mremap.c
index 12ca03d66311..c859b117f8e5 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -336,8 +336,9 @@ enum pgt_entry {
* valid. Else returns a smaller extent bounded by the end of the source and
* destination pgt_entry.
*/
-static unsigned long get_extent(enum pgt_entry entry, unsigned long old_addr,
- unsigned long old_end, unsigned long new_addr)
+static __always_inline unsigned long get_extent(enum pgt_entry entry,
+ unsigned long old_addr, unsigned long old_end,
+ unsigned long new_addr)
{
unsigned long next, extent, mask, size;
diff --git a/scripts/Makefile.ubsan b/scripts/Makefile.ubsan
index 9716dab06bc7..9e2092fd5206 100644
--- a/scripts/Makefile.ubsan
+++ b/scripts/Makefile.ubsan
@@ -1,37 +1,16 @@
# SPDX-License-Identifier: GPL-2.0
-export CFLAGS_UBSAN :=
+# Enable available and selected UBSAN features.
+ubsan-cflags-$(CONFIG_UBSAN_ALIGNMENT) += -fsanitize=alignment
+ubsan-cflags-$(CONFIG_UBSAN_ONLY_BOUNDS) += -fsanitize=bounds
+ubsan-cflags-$(CONFIG_UBSAN_ARRAY_BOUNDS) += -fsanitize=array-bounds
+ubsan-cflags-$(CONFIG_UBSAN_LOCAL_BOUNDS) += -fsanitize=local-bounds
+ubsan-cflags-$(CONFIG_UBSAN_SHIFT) += -fsanitize=shift
+ubsan-cflags-$(CONFIG_UBSAN_DIV_ZERO) += -fsanitize=integer-divide-by-zero
+ubsan-cflags-$(CONFIG_UBSAN_UNREACHABLE) += -fsanitize=unreachable
+ubsan-cflags-$(CONFIG_UBSAN_OBJECT_SIZE) += -fsanitize=object-size
+ubsan-cflags-$(CONFIG_UBSAN_BOOL) += -fsanitize=bool
+ubsan-cflags-$(CONFIG_UBSAN_ENUM) += -fsanitize=enum
+ubsan-cflags-$(CONFIG_UBSAN_TRAP) += -fsanitize-undefined-trap-on-error
-ifdef CONFIG_UBSAN_ALIGNMENT
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=alignment)
-endif
-
-ifdef CONFIG_UBSAN_BOUNDS
- ifdef CONFIG_CC_IS_CLANG
- CFLAGS_UBSAN += -fsanitize=array-bounds
- else
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=bounds)
- endif
-endif
-
-ifdef CONFIG_UBSAN_LOCAL_BOUNDS
- CFLAGS_UBSAN += -fsanitize=local-bounds
-endif
-
-ifdef CONFIG_UBSAN_MISC
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=shift)
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=integer-divide-by-zero)
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=unreachable)
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=signed-integer-overflow)
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=object-size)
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=bool)
- CFLAGS_UBSAN += $(call cc-option, -fsanitize=enum)
-endif
-
-ifdef CONFIG_UBSAN_TRAP
- CFLAGS_UBSAN += $(call cc-option, -fsanitize-undefined-trap-on-error)
-endif
-
- # -fsanitize=* options makes GCC less smart than usual and
- # increase number of 'maybe-uninitialized false-positives
- CFLAGS_UBSAN += $(call cc-option, -Wno-maybe-uninitialized)
+export CFLAGS_UBSAN := $(ubsan-cflags-y)
diff --git a/scripts/module.lds.S b/scripts/module.lds.S
index 1713fc5383bb..8b9dcec11d1e 100644
--- a/scripts/module.lds.S
+++ b/scripts/module.lds.S
@@ -56,14 +56,16 @@ SECTIONS {
*(.rodata.._end)
}
-#ifdef CONFIG_CFI_CLANG
- /*
- * With CFI_CLANG, ensure __cfi_check is at the beginning of the
- * .text section, and that the section is aligned to page size.
- */
.text : ALIGN(PAGE_SIZE) {
*(.text.._start)
+#ifdef CONFIG_CFI_CLANG
+ /*
+ * With CFI_CLANG, ensure __cfi_check is at the beginning of
+ * the .text section, and that the section is aligned to page
+ * size.
+ */
*(.text.__cfi_check)
+#endif
*(.text .text.[0-9a-zA-Z_]*)
__cfi_jt_start = .;
*(.text..L.cfi.jumptable .text..L.cfi.jumptable.*)
@@ -71,7 +73,6 @@ SECTIONS {
*(.text.._end)
}
#endif
-#endif
}
/* bring in arch-specific sections */
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 59113d831c39..678547b939e5 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2175,17 +2175,9 @@ EXPORT_SYMBOL_GPL(snd_soc_add_dai_controls);
*/
int snd_soc_register_card(struct snd_soc_card *card)
{
- struct snd_soc_card_ext *card_ext;
-
if (!card->name || !card->dev)
return -EINVAL;
- card_ext = devm_kzalloc(card->dev,
- sizeof(struct snd_soc_card_ext), GFP_KERNEL);
-
- memcpy(&card_ext->card, card, sizeof(struct snd_soc_card));
- card = &card_ext->card;
-
dev_set_drvdata(card->dev, card);
INIT_LIST_HEAD(&card->widgets);
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 406273166d19..f7aff87849fc 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
#define DPCM_MAX_BE_USERS 8
@@ -1274,8 +1275,8 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
int stream, struct snd_soc_dapm_widget_list **list)
{
struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(fe, 0);
- struct snd_soc_card_ext *card_ext;
int paths;
+ bool chaining = false;
if (fe->num_cpus > 1) {
dev_err(fe->dev,
@@ -1283,12 +1284,11 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
return -EINVAL;
}
- card_ext = container_of(fe->card, struct snd_soc_card_ext, card);
+ trace_android_vh_snd_soc_card_get_comp_chain(&chaining);
/* get number of valid DAI paths and their widgets */
paths = snd_soc_dapm_dai_get_connected_widgets(cpu_dai, stream, list,
- card_ext->component_chaining ?
- NULL : dpcm_end_walk_at_be);
+ chaining ? NULL : dpcm_end_walk_at_be);
dev_dbg(fe->dev, "ASoC: found %d audio %s paths\n", paths,
stream ? "capture" : "playback");
diff --git a/tools/crypto/gen_fips140_testvecs.py b/tools/crypto/gen_fips140_testvecs.py
index 25164d83389c..825c4872235a 100755
--- a/tools/crypto/gen_fips140_testvecs.py
+++ b/tools/crypto/gen_fips140_testvecs.py
@@ -28,7 +28,7 @@ scriptname = os.path.basename(__file__)
message = bytes('This is a 32-byte test message.\0', 'ascii')
aes_key = bytes('128-bit AES key\0', 'ascii')
aes_xts_key = bytes('This is an AES-128-XTS key.\0\0\0\0\0', 'ascii')
-aes_iv = bytes('ABCDEFGHIJKL\0\0\0\0', 'ascii')
+aes_iv = bytes('ABCDEFGHIJKLMNOP', 'ascii')
assoc = bytes('associated data string', 'ascii')
hmac_key = bytes('128-bit HMAC key', 'ascii')
@@ -82,7 +82,7 @@ def generate_aes_testvecs():
print_value('aes_ecb_ciphertext', ecb.encrypt(message))
ctr = Cryptodome.Cipher.AES.new(aes_key, Cryptodome.Cipher.AES.MODE_CTR,
- nonce=aes_iv[:12])
+ nonce=bytes(), initial_value=aes_iv)
print_value('aes_ctr_ciphertext', ctr.encrypt(message))
print_value('aes_gcm_assoc', assoc)
@@ -101,6 +101,10 @@ def generate_aes_testvecs():
ciphertext = xts.update(message) + xts.finalize()
print_value('aes_xts_ciphertext', ciphertext)
+ cmac = Cryptodome.Hash.CMAC.new(aes_key, ciphermod=Cryptodome.Cipher.AES)
+ cmac.update(message)
+ print_value('aes_cmac_digest', cmac.digest())
+
def generate_sha_testvecs():
print_value('hmac_key', hmac_key)
for alg in ['sha1', 'sha256', 'hmac_sha256', 'sha512']: