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']: