diff --git a/android/GKI_VERSION b/android/GKI_VERSION index 5881df6e8950..3052aba50b10 100644 --- a/android/GKI_VERSION +++ b/android/GKI_VERSION @@ -1 +1 @@ -LTS_5.4.259_70db018a109 +LTS_5.4.268_66f4b04cb072 diff --git a/android/abi_gki_aarch64_81334f26ac70.xml b/android/abi_gki_aarch64_a34cc1dcf78d.xml similarity index 98% rename from android/abi_gki_aarch64_81334f26ac70.xml rename to android/abi_gki_aarch64_a34cc1dcf78d.xml index 8645ac3c5e69..090ce3566439 100644 --- a/android/abi_gki_aarch64_81334f26ac70.xml +++ b/android/abi_gki_aarch64_a34cc1dcf78d.xml @@ -6727,9 +6727,9 @@ - + - + @@ -9501,84 +9501,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10947,12 +10947,12 @@ - + - + - + @@ -12416,176 +12416,179 @@ + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15124,39 +15127,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -15180,210 +15183,210 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15860,114 +15863,114 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16201,15 +16204,15 @@ - + - + - + - + @@ -16801,69 +16804,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -17366,81 +17369,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -17568,108 +17571,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20230,7 +20233,7 @@ - + @@ -24737,7 +24740,7 @@ - + @@ -24745,7 +24748,7 @@ - + @@ -27508,10 +27511,10 @@ - - - - + + + + @@ -27537,39 +27540,39 @@ - - - - - - - + + + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + @@ -28460,71 +28463,71 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - - + + + - + @@ -28999,7 +29002,7 @@ - + @@ -29469,12 +29472,12 @@ - - + + - - + + @@ -31500,7 +31503,7 @@ - + @@ -35500,7 +35503,7 @@ - + @@ -35952,7 +35955,7 @@ - + @@ -35960,7 +35963,7 @@ - + @@ -35968,7 +35971,7 @@ - + @@ -36066,7 +36069,7 @@ - + @@ -42798,7 +42801,7 @@ - + @@ -46992,7 +46995,7 @@ - + @@ -47221,7 +47224,7 @@ - + @@ -47295,7 +47298,7 @@ - + @@ -58502,10 +58505,10 @@ - - - - + + + + @@ -60216,7 +60219,23 @@ - + + + + + + + + + + + + + + + + + @@ -60225,7 +60244,74 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60441,6 +60527,9 @@ + + + @@ -60502,9 +60591,13 @@ + + + + @@ -60789,6 +60882,17 @@ + + + + + + + + + + + @@ -61248,6 +61352,9 @@ + + + @@ -61362,6 +61469,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61383,6 +61544,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61757,6 +61956,14 @@ + + + + + + + + @@ -61800,10 +62007,15 @@ + + + + + @@ -63074,6 +63286,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -63647,11 +63951,15 @@ + + + + @@ -63979,17 +64287,6 @@ - - - - - - - - - - - @@ -64404,15 +64701,15 @@ - + - + - + - + @@ -64491,6 +64788,9 @@ + + + @@ -64537,6 +64837,7 @@ + @@ -64596,12 +64897,10 @@ - - - + @@ -64798,6 +65097,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65108,60 +65459,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -65342,6 +65693,7 @@ + @@ -65392,6 +65744,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -65438,7 +65810,89 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65572,6 +66026,7 @@ + @@ -65835,10 +66290,260 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65846,7 +66551,14 @@ + + + + + + + @@ -65866,6 +66578,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65984,23 +66776,182 @@ - + + - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + @@ -66008,6 +66959,14 @@ + + + + + + + + @@ -66025,7 +66984,18 @@ + + + + + + + + + + + @@ -66062,6 +67032,17 @@ + + + + + + + + + + + @@ -66100,10 +67081,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + @@ -66148,15 +67217,90 @@ - + - + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -66168,11 +67312,34 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -66189,6 +67356,10 @@ + + + + @@ -66304,6 +67475,7 @@ + @@ -66381,105 +67553,105 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -66503,19 +67675,18 @@ - - + - + - + - + - + @@ -66585,129 +67756,86 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - @@ -66721,316 +67849,26 @@ - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -68367,10 +69205,16 @@ + + + + + + @@ -68978,7 +69822,7 @@ - + @@ -69304,7 +70148,7 @@ - + @@ -72836,34 +73680,34 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + @@ -73182,7 +74026,7 @@ - + @@ -74488,7 +75332,7 @@ - + @@ -79969,6 +80813,14 @@ + + + + + + + + @@ -79983,6 +80835,14 @@ + + + + + + + + @@ -80235,14 +81095,6 @@ - - - - - - - - @@ -80277,14 +81129,6 @@ - - - - - - - - @@ -81975,8 +82819,8 @@ - - + + @@ -83800,7 +84644,7 @@ - + @@ -90621,7 +91465,6 @@ - @@ -91263,9 +92106,9 @@ - - - + + + @@ -91273,65 +92116,65 @@ - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - + + @@ -93041,7 +93884,7 @@ - + @@ -93832,11 +94675,6 @@ - - - - - @@ -94166,7 +95004,7 @@ - + @@ -94471,15 +95309,15 @@ - + - + - + - + @@ -94605,7 +95443,7 @@ - + @@ -97305,176 +98143,179 @@ + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -98377,81 +99218,81 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -98556,18 +99397,18 @@ - + - + - + - + - + @@ -98590,380 +99431,380 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -106918,92 +107759,92 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108422,15 +109263,15 @@ - + - + - + - + @@ -108625,125 +109466,125 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -109502,39 +110343,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -109957,66 +110798,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110124,20 +110965,20 @@ - + - + - + - + - + - + @@ -113029,9 +113870,7 @@ - - @@ -113294,32 +114133,32 @@ - + - + - + - + - + - + - + - + @@ -113334,7 +114173,7 @@ - + @@ -113452,9 +114291,92 @@ - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -113626,20 +114548,7 @@ - - - - - - - - - - - - - - + @@ -113769,8 +114678,232 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -113960,21 +115093,21 @@ - + - + - + - + - + - + @@ -120303,7 +121436,7 @@ - + @@ -120311,7 +121444,7 @@ - + @@ -120319,7 +121452,7 @@ - + @@ -122292,7 +123425,7 @@ - + @@ -122837,71 +123970,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -126721,47 +127854,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -127500,7 +128592,7 @@ - + @@ -128151,24 +129243,24 @@ - - + + - - + + - - + + - - + + - - + + @@ -130597,7 +131689,7 @@ - + @@ -130877,12 +131969,12 @@ - - + + - - + + @@ -130903,7 +131995,7 @@ - + @@ -131055,7 +132147,7 @@ - + @@ -131248,9 +132340,9 @@ - + - + @@ -131437,14 +132529,14 @@ - + - + @@ -131477,7 +132569,7 @@ - + @@ -131670,7 +132762,7 @@ - + @@ -132271,7 +133363,7 @@ - + @@ -132337,7 +133429,7 @@ - + @@ -132500,7 +133592,7 @@ - + @@ -132521,19 +133613,19 @@ - + - + - + - + @@ -133050,9 +134142,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -133129,7 +134486,7 @@ - + @@ -133175,28 +134532,30 @@ - - - - - - - - - - - + + + + + + + + + + + + + + - @@ -133358,6 +134717,13 @@ + + + + + + + @@ -133365,6 +134731,10 @@ + + + + @@ -134143,89 +135513,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -134406,149 +135693,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -134827,7 +135971,7 @@ - + @@ -134836,56 +135980,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -134926,10 +136070,8 @@ - - @@ -135030,34 +136172,34 @@ - + - + - + - + - + - + @@ -135105,21 +136247,21 @@ - + - + - + - + @@ -135206,7 +136348,7 @@ - + @@ -135214,7 +136356,7 @@ - + @@ -135408,33 +136550,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -135447,9 +136563,6 @@ - - - @@ -135484,13 +136597,6 @@ - - - - - - - @@ -136104,195 +137210,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -139333,10 +140250,6 @@ - - - - @@ -139361,7 +140274,6 @@ - @@ -139449,13 +140361,7 @@ - - - - - - @@ -139508,28 +140414,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -140107,10 +140991,6 @@ - - - - @@ -141322,21 +142202,6 @@ - - - - - - - - - - - - - - - @@ -141540,223 +142405,236 @@ - - - - - - - + - + - + - + - + - + + + + + + + + + + + + + + + - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -141767,18 +142645,18 @@ - + - + - + - + - + @@ -141889,7 +142767,7 @@ - + @@ -142872,14 +143750,14 @@ - - + + - - - - + + + + @@ -143618,7 +144496,7 @@ - + diff --git a/arch/arm/configs/vendor/sdxlemur.config b/arch/arm/configs/vendor/sdxlemur.config index a816f4605758..59549a3b7aae 100644 --- a/arch/arm/configs/vendor/sdxlemur.config +++ b/arch/arm/configs/vendor/sdxlemur.config @@ -513,3 +513,4 @@ CONFIG_ANDROID_BINDERFS=y CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" # CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set CONFIG_IPC_LOG_MINIDUMP_BUFFERS=16 +# CONFIG_QCOM_MINIDUMP_ENCRYPT is not set diff --git a/arch/arm64/configs/vendor/autogvm_GKI.config b/arch/arm64/configs/vendor/autogvm_GKI.config index 92f8a3709d5a..a716ab4c5de6 100644 --- a/arch/arm64/configs/vendor/autogvm_GKI.config +++ b/arch/arm64/configs/vendor/autogvm_GKI.config @@ -3,9 +3,6 @@ CONFIG_COMMON_CLK_QCOM=m CONFIG_REGULATOR_FIXED_VOLTAGE=m CONFIG_REGULATOR_PROXY_CONSUMER=m CONFIG_REGULATOR_STUB=m -CONFIG_TRIM_UNUSED_KSYMS=y -CONFIG_UNUSED_KSYMS_WHITELIST="android/abi_gki_aarch64_qcom android/abi_gki_aarch64_qcom_internal" -CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y CONFIG_PINCTRL_SM8150=m CONFIG_PINCTRL_SDMSHRIKE=m CONFIG_PINCTRL_SM6150=m diff --git a/arch/arm64/configs/vendor/bengal_GKI.config b/arch/arm64/configs/vendor/bengal_GKI.config index 63ae85ce8a27..16b3f591f3f0 100644 --- a/arch/arm64/configs/vendor/bengal_GKI.config +++ b/arch/arm64/configs/vendor/bengal_GKI.config @@ -1,9 +1,6 @@ CONFIG_ARCH_QCOM=y CONFIG_ARCH_SCUBA=y CONFIG_ARCH_BENGAL=y -CONFIG_TRIM_UNUSED_KSYMS=y -CONFIG_UNUSED_KSYMS_WHITELIST="android/abi_gki_aarch64_qcom android/abi_gki_aarch64_qcom_internal" -CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y CONFIG_PINCTRL_SCUBA=m CONFIG_QCOM_RPMH=m CONFIG_QCOM_COMMAND_DB=m diff --git a/arch/arm64/configs/vendor/gen3auto_GKI.config b/arch/arm64/configs/vendor/gen3auto_GKI.config index 999dd7f0d345..b3bcb58db3c2 100644 --- a/arch/arm64/configs/vendor/gen3auto_GKI.config +++ b/arch/arm64/configs/vendor/gen3auto_GKI.config @@ -9,9 +9,6 @@ CONFIG_REGULATOR_PROXY_CONSUMER=m CONFIG_REGULATOR_REFGEN=m CONFIG_REGULATOR_RPMH=m CONFIG_REGULATOR_STUB=m -CONFIG_TRIM_UNUSED_KSYMS=y -CONFIG_UNUSED_KSYMS_WHITELIST="android/abi_gki_aarch64_qcom android/abi_gki_aarch64_qcom_internal" -CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y CONFIG_PINCTRL_SM8150=m CONFIG_PINCTRL_SDMSHRIKE=m CONFIG_PINCTRL_SLPI=m @@ -140,3 +137,4 @@ CONFIG_CNSS_GENL=m CONFIG_QRTR_MHI=m CONFIG_UIO_MSM_SHAREDMEM=m CONFIG_INCREMENTAL_FS=m +# CONFIG_TRIM_UNUSED_KSYMS is not set diff --git a/arch/arm64/configs/vendor/holi_GKI.config b/arch/arm64/configs/vendor/holi_GKI.config index 031730e79137..b3dac1f70c31 100644 --- a/arch/arm64/configs/vendor/holi_GKI.config +++ b/arch/arm64/configs/vendor/holi_GKI.config @@ -1,8 +1,5 @@ CONFIG_ARCH_QCOM=y CONFIG_ARCH_HOLI=y -CONFIG_TRIM_UNUSED_KSYMS=y -CONFIG_UNUSED_KSYMS_WHITELIST="android/abi_gki_aarch64_qcom android/abi_gki_aarch64_qcom_internal" -CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y CONFIG_QCOM_RPMH=m CONFIG_QCOM_RPMHPD=m CONFIG_QCOM_COMMAND_DB=m @@ -234,3 +231,4 @@ CONFIG_SM_DISPCC_BLAIR=m CONFIG_SM_DEBUGCC_BLAIR=m CONFIG_QCOM_CX_IPEAK=m CONFIG_LEDS_AW2016=m +# CONFIG_TRIM_UNUSED_KSYMS is not set diff --git a/arch/arm64/configs/vendor/lahaina_GKI.config b/arch/arm64/configs/vendor/lahaina_GKI.config index 1d1ab64c11df..70314edcbd6d 100644 --- a/arch/arm64/configs/vendor/lahaina_GKI.config +++ b/arch/arm64/configs/vendor/lahaina_GKI.config @@ -1,9 +1,6 @@ CONFIG_ARCH_QCOM=y CONFIG_ARCH_LAHAINA=y CONFIG_ARCH_SHIMA=y -CONFIG_TRIM_UNUSED_KSYMS=y -CONFIG_UNUSED_KSYMS_WHITELIST="android/abi_gki_aarch64_qcom android/abi_gki_aarch64_qcom_internal" -CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y CONFIG_QCOM_RPMH=m CONFIG_QCOM_RPMHPD=m CONFIG_QCOM_COMMAND_DB=m @@ -252,3 +249,4 @@ CONFIG_REGULATOR_QPNP_LCDB=m CONFIG_LEDS_QPNP_VIBRATOR_LDO=m CONFIG_BACKLIGHT_QCOM_SPMI_WLED=m # CONFIG_CFG80211_CRDA_SUPPORT is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set diff --git a/arch/arm64/configs/vendor/sdmsteppeauto_GKI.config b/arch/arm64/configs/vendor/sdmsteppeauto_GKI.config index 1f02ec38f3e7..d758880b0c83 100644 --- a/arch/arm64/configs/vendor/sdmsteppeauto_GKI.config +++ b/arch/arm64/configs/vendor/sdmsteppeauto_GKI.config @@ -8,9 +8,6 @@ CONFIG_REGULATOR_PROXY_CONSUMER=m CONFIG_REGULATOR_REFGEN=m CONFIG_REGULATOR_RPMH=m CONFIG_REGULATOR_STUB=m -CONFIG_TRIM_UNUSED_KSYMS=y -CONFIG_UNUSED_KSYMS_WHITELIST="android/abi_gki_aarch64_qcom android/abi_gki_aarch64_qcom_internal" -CONFIG_UNUSED_KSYMS_WHITELIST_ONLY=y CONFIG_PINCTRL_SM6150=m CONFIG_PINCTRL_SDMSHRIKE=m CONFIG_HEADER_TEST=y diff --git a/drivers/media/platform/msm/cvp/msm_cvp_buf.c b/drivers/media/platform/msm/cvp/msm_cvp_buf.c index 9b9dbd456c42..995c111edb7d 100644 --- a/drivers/media/platform/msm/cvp/msm_cvp_buf.c +++ b/drivers/media/platform/msm/cvp/msm_cvp_buf.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #include "msm_cvp_common.h" @@ -643,9 +644,10 @@ int msm_cvp_mark_user_persist(struct msm_cvp_inst *inst, list_for_each_entry_safe(pbuf, dummy, &inst->persistbufs.list, list) { if (pbuf->ownership == CLIENT) { - if (pbuf->fd == buf->fd && - pbuf->size == buf->size) + if (pbuf->fd == buf->fd && pbuf->size == buf->size) { buf->fd = pbuf->smem->device_addr; + pbuf->ktid = ktid; + } rc = 1; break; } @@ -657,7 +659,6 @@ int msm_cvp_mark_user_persist(struct msm_cvp_inst *inst, rc = -EFAULT; break; } - pbuf->ktid = ktid; rc = 0; } return rc; diff --git a/drivers/media/platform/msm/npu/npu_common.h b/drivers/media/platform/msm/npu/npu_common.h index 18d896c98e96..1f18e052cc62 100644 --- a/drivers/media/platform/msm/npu/npu_common.h +++ b/drivers/media/platform/msm/npu/npu_common.h @@ -94,12 +94,6 @@ struct npu_debugfs_ctx { struct dentry *root; uint32_t reg_off; uint32_t reg_cnt; - uint8_t *log_buf; - struct mutex log_lock; - uint32_t log_num_bytes_buffered; - uint32_t log_read_index; - uint32_t log_write_index; - uint32_t log_buf_size; }; struct npu_debugfs_reg_ctx { diff --git a/drivers/media/platform/msm/npu/npu_debugfs.c b/drivers/media/platform/msm/npu/npu_debugfs.c index 18c8df0a4bb0..c813f3657b03 100644 --- a/drivers/media/platform/msm/npu/npu_debugfs.c +++ b/drivers/media/platform/msm/npu/npu_debugfs.c @@ -27,8 +27,6 @@ */ static int npu_debug_open(struct inode *inode, struct file *file); static int npu_debug_release(struct inode *inode, struct file *file); -static ssize_t npu_debug_log_read(struct file *file, - char __user *user_buf, size_t count, loff_t *ppos); static ssize_t npu_debug_ctrl_write(struct file *file, const char __user *user_buf, size_t count, loff_t *ppos); @@ -38,13 +36,6 @@ static ssize_t npu_debug_ctrl_write(struct file *file, */ static struct npu_device *g_npu_dev; -static const struct file_operations npu_log_fops = { - .open = npu_debug_open, - .release = npu_debug_release, - .read = npu_debug_log_read, - .write = NULL, -}; - static const struct file_operations npu_ctrl_fops = { .open = npu_debug_open, .release = npu_debug_release, @@ -69,47 +60,6 @@ static int npu_debug_release(struct inode *inode, struct file *file) return 0; } -/* ------------------------------------------------------------------------- - * Function Implementations - DebugFS Log - * ------------------------------------------------------------------------- - */ -static ssize_t npu_debug_log_read(struct file *file, - char __user *user_buf, size_t count, loff_t *ppos) -{ - size_t len = 0; - struct npu_device *npu_dev = file->private_data; - struct npu_debugfs_ctx *debugfs; - - pr_debug("npu_dev %pK %pK\n", npu_dev, g_npu_dev); - npu_dev = g_npu_dev; - debugfs = &npu_dev->debugfs_ctx; - - /* mutex log lock */ - mutex_lock(&debugfs->log_lock); - - if (debugfs->log_num_bytes_buffered != 0) { - len = min(debugfs->log_num_bytes_buffered, - debugfs->log_buf_size - debugfs->log_read_index); - len = min(count, len); - if (copy_to_user(user_buf, (debugfs->log_buf + - debugfs->log_read_index), len)) { - pr_err("%s failed to copy to user\n", __func__); - mutex_unlock(&debugfs->log_lock); - return -EFAULT; - } - debugfs->log_read_index += len; - if (debugfs->log_read_index == debugfs->log_buf_size) - debugfs->log_read_index = 0; - - debugfs->log_num_bytes_buffered -= len; - *ppos += len; - } - - /* mutex log unlock */ - mutex_unlock(&debugfs->log_lock); - - return len; -} /* ------------------------------------------------------------------------- * Function Implementations - DebugFS Control @@ -193,12 +143,6 @@ int npu_debugfs_init(struct npu_device *npu_dev) return -ENODEV; } - if (!debugfs_create_file("log", 0644, debugfs->root, - npu_dev, &npu_log_fops)) { - pr_err("debugfs_create_file log fail\n"); - goto err; - } - if (!debugfs_create_file("ctrl", 0644, debugfs->root, npu_dev, &npu_ctrl_fops)) { pr_err("debugfs_create_file ctrl fail\n"); @@ -235,14 +179,6 @@ int npu_debugfs_init(struct npu_device *npu_dev) goto err; } - debugfs->log_num_bytes_buffered = 0; - debugfs->log_read_index = 0; - debugfs->log_write_index = 0; - debugfs->log_buf_size = NPU_LOG_BUF_SIZE; - debugfs->log_buf = kzalloc(debugfs->log_buf_size, GFP_KERNEL); - if (!debugfs->log_buf) - goto err; - mutex_init(&debugfs->log_lock); return 0; @@ -255,12 +191,6 @@ void npu_debugfs_deinit(struct npu_device *npu_dev) { struct npu_debugfs_ctx *debugfs = &npu_dev->debugfs_ctx; - debugfs->log_num_bytes_buffered = 0; - debugfs->log_read_index = 0; - debugfs->log_write_index = 0; - debugfs->log_buf_size = 0; - kfree(debugfs->log_buf); - if (!IS_ERR_OR_NULL(debugfs->root)) { debugfs_remove_recursive(debugfs->root); debugfs->root = NULL; diff --git a/drivers/media/platform/msm/npu/npu_host_ipc.c b/drivers/media/platform/msm/npu/npu_host_ipc.c index 940a35d9ada8..2dc80c2c2784 100644 --- a/drivers/media/platform/msm/npu/npu_host_ipc.c +++ b/drivers/media/platform/msm/npu/npu_host_ipc.c @@ -33,15 +33,16 @@ struct npu_queue_tuple { uint32_t size; uint32_t hdr; + uint32_t start_offset; }; -static const struct npu_queue_tuple npu_q_setup[6] = { - { 1024, IPC_QUEUE_CMD_HIGH_PRIORITY | TX_HDR_TYPE | RX_HDR_TYPE }, - { 4096, IPC_QUEUE_APPS_EXEC | TX_HDR_TYPE | RX_HDR_TYPE }, - { 4096, IPC_QUEUE_DSP_EXEC | TX_HDR_TYPE | RX_HDR_TYPE }, - { 4096, IPC_QUEUE_APPS_RSP | TX_HDR_TYPE | RX_HDR_TYPE }, - { 4096, IPC_QUEUE_DSP_RSP | TX_HDR_TYPE | RX_HDR_TYPE }, - { 1024, IPC_QUEUE_LOG | TX_HDR_TYPE | RX_HDR_TYPE }, +static struct npu_queue_tuple npu_q_setup[6] = { + { 1024, IPC_QUEUE_CMD_HIGH_PRIORITY | TX_HDR_TYPE | RX_HDR_TYPE, 0}, + { 4096, IPC_QUEUE_APPS_EXEC | TX_HDR_TYPE | RX_HDR_TYPE, 0}, + { 4096, IPC_QUEUE_DSP_EXEC | TX_HDR_TYPE | RX_HDR_TYPE, 0}, + { 4096, IPC_QUEUE_APPS_RSP | TX_HDR_TYPE | RX_HDR_TYPE, 0}, + { 4096, IPC_QUEUE_DSP_RSP | TX_HDR_TYPE | RX_HDR_TYPE, 0}, + { 1024, IPC_QUEUE_LOG | TX_HDR_TYPE | RX_HDR_TYPE, 0}, }; /* ------------------------------------------------------------------------- @@ -111,6 +112,7 @@ static int npu_host_ipc_init_hfi(struct npu_device *npu_dev) /* queue is active */ q_hdr->qhdr_status = 0x01; q_hdr->qhdr_start_offset = cur_start_offset; + npu_q_setup[q_idx].start_offset = cur_start_offset; q_size = npu_q_setup[q_idx].size; q_hdr->qhdr_type = npu_q_setup[q_idx].hdr; /* in bytes */ @@ -212,6 +214,18 @@ static int ipc_queue_read(struct npu_device *npu_dev, /* Read the queue */ MEMR(npu_dev, (void *)((size_t)offset), (uint8_t *)&queue, HFI_QUEUE_HEADER_SIZE); + + if (queue.qhdr_type != npu_q_setup[target_que].hdr || + queue.qhdr_q_size != npu_q_setup[target_que].size || + queue.qhdr_read_idx >= queue.qhdr_q_size || + queue.qhdr_write_idx >= queue.qhdr_q_size || + queue.qhdr_start_offset != + npu_q_setup[target_que].start_offset) { + pr_err("Invalid Queue header\n"); + status = -EIO; + goto exit; + } + /* check if queue is empty */ if (queue.qhdr_read_idx == queue.qhdr_write_idx) { /* @@ -235,8 +249,10 @@ static int ipc_queue_read(struct npu_device *npu_dev, target_que, packet_size); - if (packet_size == 0) { - status = -EPERM; + if ((packet_size == 0) || + (packet_size > NPU_IPC_BUF_LENGTH)) { + pr_err("Invalid packet size %d\n", packet_size); + status = -EINVAL; goto exit; } new_read_idx = queue.qhdr_read_idx + packet_size; @@ -306,6 +322,18 @@ static int ipc_queue_write(struct npu_device *npu_dev, MEMR(npu_dev, (void *)((size_t)offset), (uint8_t *)&queue, HFI_QUEUE_HEADER_SIZE); + + if (queue.qhdr_type != npu_q_setup[target_que].hdr || + queue.qhdr_q_size != npu_q_setup[target_que].size || + queue.qhdr_read_idx >= queue.qhdr_q_size || + queue.qhdr_write_idx >= queue.qhdr_q_size || + queue.qhdr_start_offset != + npu_q_setup[target_que].start_offset) { + pr_err("Invalid Queue header\n"); + status = -EIO; + goto exit; + } + packet_size = (*(uint32_t *)packet); if (packet_size == 0) { /* assign failed status and return */ diff --git a/drivers/media/platform/msm/npu/npu_hw_access.c b/drivers/media/platform/msm/npu/npu_hw_access.c index 3b7a420a1d11..113407d34a21 100644 --- a/drivers/media/platform/msm/npu/npu_hw_access.c +++ b/drivers/media/platform/msm/npu/npu_hw_access.c @@ -442,49 +442,3 @@ void subsystem_put_local(void *sub_system_handle) return subsystem_put(sub_system_handle); } -/* ------------------------------------------------------------------------- - * Functions - Log - * ------------------------------------------------------------------------- - */ -void npu_process_log_message(struct npu_device *npu_dev, uint32_t *message, - uint32_t size) -{ - struct npu_debugfs_ctx *debugfs = &npu_dev->debugfs_ctx; - - /* mutex log lock */ - mutex_lock(&debugfs->log_lock); - - if ((debugfs->log_num_bytes_buffered + size) > - debugfs->log_buf_size) { - /* No more space, invalidate it all and start over */ - debugfs->log_read_index = 0; - debugfs->log_write_index = size; - debugfs->log_num_bytes_buffered = size; - memcpy(debugfs->log_buf, message, size); - } else { - if ((debugfs->log_write_index + size) > - debugfs->log_buf_size) { - /* Wrap around case */ - uint8_t *src_addr = (uint8_t *)message; - uint8_t *dst_addr = NULL; - uint32_t remaining_to_end = debugfs->log_buf_size - - debugfs->log_write_index + 1; - dst_addr = debugfs->log_buf + debugfs->log_write_index; - memcpy(dst_addr, src_addr, remaining_to_end); - src_addr = &(src_addr[remaining_to_end]); - dst_addr = debugfs->log_buf; - memcpy(dst_addr, src_addr, size-remaining_to_end); - debugfs->log_write_index = size-remaining_to_end; - } else { - memcpy((debugfs->log_buf + debugfs->log_write_index), - message, size); - debugfs->log_write_index += size; - if (debugfs->log_write_index == debugfs->log_buf_size) - debugfs->log_write_index = 0; - } - debugfs->log_num_bytes_buffered += size; - } - - /* mutex log unlock */ - mutex_unlock(&debugfs->log_lock); -} diff --git a/drivers/media/platform/msm/npu/npu_hw_access.h b/drivers/media/platform/msm/npu/npu_hw_access.h index 311f4fb84870..06ed0e6d132d 100644 --- a/drivers/media/platform/msm/npu/npu_hw_access.h +++ b/drivers/media/platform/msm/npu/npu_hw_access.h @@ -83,7 +83,4 @@ void npu_disable_sys_cache(struct npu_device *npu_dev); void *subsystem_get_local(char *sub_system); void subsystem_put_local(void *sub_system_handle); -void npu_process_log_message(struct npu_device *npu_dev, uint32_t *msg, - uint32_t size); - #endif /* _NPU_HW_ACCESS_H*/ diff --git a/drivers/media/platform/msm/npu/npu_mgr.c b/drivers/media/platform/msm/npu/npu_mgr.c index f36aff27ccc5..6b017934f985 100644 --- a/drivers/media/platform/msm/npu/npu_mgr.c +++ b/drivers/media/platform/msm/npu/npu_mgr.c @@ -20,11 +20,6 @@ * Defines * ------------------------------------------------------------------------- */ -#define LOG_MSG_HEADER_SIZE 20 -#define LOG_MSG_START_MSG_INDEX 5 -#define LOG_MSG_TOTAL_SIZE_INDEX 0 -#define LOG_MSG_MSG_ID_INDEX 1 - #define NPU_FW_TIMEOUT_POLL_INTERVAL_MS 10 #define NPU_FW_TIMEOUT_MS 1000 @@ -48,9 +43,7 @@ static void free_network(struct npu_host_ctx *ctx, struct npu_client *client, static int network_get(struct npu_network *network); static int network_put(struct npu_network *network); static void app_msg_proc(struct npu_host_ctx *host_ctx, uint32_t *msg); -static void log_msg_proc(struct npu_device *npu_dev, uint32_t *msg); static void host_session_msg_hdlr(struct npu_device *npu_dev); -static void host_session_log_hdlr(struct npu_device *npu_dev); static int host_error_hdlr(struct npu_device *npu_dev, bool force); static int npu_send_network_cmd(struct npu_device *npu_dev, struct npu_network *network, void *cmd_ptr); @@ -391,7 +384,6 @@ static void host_irq_wq(struct work_struct *work) if (host_error_hdlr(npu_dev, false)) return; - host_session_log_hdlr(npu_dev); host_session_msg_hdlr(npu_dev); } @@ -768,6 +760,12 @@ static void app_msg_proc(struct npu_host_ctx *host_ctx, uint32_t *msg) } pr_debug("network id : %llu\n", network->id); + if (exe_rsp_pkt->header.size < sizeof(*exe_rsp_pkt)) { + pr_err("invalid packet header size, header.size: %d\n", + exe_rsp_pkt->header.size); + network_put(network); + break; + } stats_size = exe_rsp_pkt->header.size - sizeof(*exe_rsp_pkt); pr_debug("stats_size %d:%d\n", exe_rsp_pkt->header.size, stats_size); @@ -986,52 +984,6 @@ skip_read_msg: kfree(msg); } -static void log_msg_proc(struct npu_device *npu_dev, uint32_t *msg) -{ - uint32_t msg_id; - uint32_t *log_msg; - uint32_t size; - - msg_id = msg[LOG_MSG_MSG_ID_INDEX]; - size = msg[LOG_MSG_TOTAL_SIZE_INDEX] - LOG_MSG_HEADER_SIZE; - - switch (msg_id) { - case NPU_IPC_MSG_EVENT_NOTIFY: - /* Process the message */ - log_msg = &(msg[LOG_MSG_START_MSG_INDEX]); - npu_process_log_message(npu_dev, log_msg, size); - break; - default: - pr_err("unsupported log response received %d\n", msg_id); - break; - } -} - -static void host_session_log_hdlr(struct npu_device *npu_dev) -{ - uint32_t *msg; - struct npu_host_ctx *host_ctx = &npu_dev->host_ctx; - - msg = kzalloc(sizeof(uint32_t) * NPU_IPC_BUF_LENGTH, GFP_KERNEL); - - if (!msg) - return; - - mutex_lock(&host_ctx->lock); - if (host_ctx->fw_state == FW_DISABLED) { - pr_warn("handle npu session msg when FW is disabled\n"); - goto skip_read_msg; - } - - while (npu_host_ipc_read_msg(npu_dev, IPC_QUEUE_LOG, msg) == 0) { - pr_debug("received from log queue\n"); - log_msg_proc(npu_dev, msg); - } - -skip_read_msg: - mutex_unlock(&host_ctx->lock); - kfree(msg); -} /* ------------------------------------------------------------------------- * Function Definitions - Functionality diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 11b00688aaa6..89b9a32b6201 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c @@ -2259,6 +2259,7 @@ static int mmc_cache_card_ext_csd(struct mmc_host *host) return 0; } +#if defined(CONFIG_SDC_QTI) static int mmc_test_awake_ext_csd(struct mmc_host *host) { int err; @@ -2273,7 +2274,6 @@ static int mmc_test_awake_ext_csd(struct mmc_host *host) } /* only compare read/write fields that the sw changes */ -#if defined(CONFIG_SDC_QTI) pr_debug("%s: %s: type(cached:current) cmdq(%d:%d) cache_ctrl(%d:%d) bus_width (%d:%d) timing(%d:%d)\n", mmc_hostname(host), __func__, card->ext_csd.raw_ext_csd_cmdq, @@ -2292,12 +2292,12 @@ static int mmc_test_awake_ext_csd(struct mmc_host *host) ext_csd[EXT_CSD_BUS_WIDTH]) && (card->ext_csd.raw_ext_csd_hs_timing == ext_csd[EXT_CSD_HS_TIMING])); -#endif kfree(ext_csd); return err; } +#endif static int _mmc_suspend(struct mmc_host *host, bool is_suspend) { @@ -2305,11 +2305,13 @@ static int _mmc_suspend(struct mmc_host *host, bool is_suspend) unsigned int notify_type = is_suspend ? EXT_CSD_POWER_OFF_SHORT : EXT_CSD_POWER_OFF_LONG; #if defined(CONFIG_SDC_QTI) - err = mmc_suspend_clk_scaling(host); - if (err) { - pr_err("%s: %s: fail to suspend clock scaling (%d)\n", - mmc_hostname(host), __func__, err); - return err; + if (!host->partial_init_broken) { + err = mmc_suspend_clk_scaling(host); + if (err) { + pr_err("%s: %s: fail to suspend clock scaling (%d)\n", + mmc_hostname(host), __func__, err); + return err; + } } #endif mmc_log_string(host, "Enter\n"); @@ -2328,8 +2330,9 @@ static int _mmc_suspend(struct mmc_host *host, bool is_suspend) if (mmc_can_sleep(host->card)) { #if defined(CONFIG_SDC_QTI) memcpy(&host->cached_ios, &host->ios, sizeof(host->cached_ios)); + if (!host->partial_init_broken) #endif - mmc_cache_card_ext_csd(host); + mmc_cache_card_ext_csd(host); } if (mmc_can_sleep(host->card)) err = mmc_sleepawake(host, true); @@ -2351,24 +2354,21 @@ out: return err; } +#if defined(CONFIG_SDC_QTI) static int mmc_partial_init(struct mmc_host *host) { int err = 0; struct mmc_card *card = host->card; -#if defined(CONFIG_SDC_QTI) mmc_set_bus_width(host, host->cached_ios.bus_width); mmc_set_timing(host, host->cached_ios.timing); if (host->cached_ios.enhanced_strobe) { -#endif host->ios.enhanced_strobe = true; if (host->ops->hs400_enhanced_strobe) host->ops->hs400_enhanced_strobe(host, &host->ios); -#if defined(CONFIG_SDC_QTI) } mmc_set_clock(host, host->cached_ios.clock); mmc_set_bus_mode(host, host->cached_ios.bus_mode); -#endif if (!mmc_card_hs400es(card) && (mmc_card_hs200(card) || mmc_card_hs400(card))) { @@ -2396,6 +2396,7 @@ static int mmc_partial_init(struct mmc_host *host) out: return err; } +#endif /* * Suspend callback @@ -2440,14 +2441,23 @@ static int _mmc_resume(struct mmc_host *host) if (mmc_can_sleep(host->card)) { err = mmc_sleepawake(host, false); - if (!err) - err = mmc_partial_init(host); + +#if defined(CONFIG_SDC_QTI) + if (!err) { + if (host->partial_init_broken) + err = mmc_init_card(host, host->card->ocr, host->card); + else + err = mmc_partial_init(host); + } else pr_err("%s: %s: awake failed (%d), fallback to full init\n", mmc_hostname(host), __func__, err); +#endif } +#if defined(CONFIG_SDC_QTI) if (err) +#endif err = mmc_init_card(host, host->card->ocr, host->card); mmc_card_clr_suspended(host->card); @@ -2458,10 +2468,12 @@ out: mmc_release_host(host); #if defined(CONFIG_SDC_QTI) - err = mmc_resume_clk_scaling(host); - if (err) - pr_err("%s: %s: fail to resume clock scaling (%d)\n", - mmc_hostname(host), __func__, err); + if (!host->partial_init_broken) { + err = mmc_resume_clk_scaling(host); + if (err) + pr_err("%s: %s: fail to resume clock scaling (%d)\n", + mmc_hostname(host), __func__, err); + } out: #endif mmc_log_string(host, "Exit err %d\n", err); diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 91cc197d5e20..302a77938787 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -3,6 +3,7 @@ * drivers/mmc/host/sdhci-msm.c - Qualcomm SDHCI Platform driver * * Copyright (c) 2013-2014,2020. The Linux Foundation. All rights reserved. + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -1869,6 +1870,12 @@ static bool sdhci_msm_populate_pdata(struct device *dev, if (sdhci_msm_dt_parse_hsr_info(dev, msm_host)) goto out; +#if defined(CONFIG_SDC_QTI) + msm_host->mmc->partial_init_broken = + of_property_read_bool(dev->of_node, + "qcom,partial_init_broken"); +#endif + if (!sdhci_msm_dt_get_array(dev, "qcom,ice-clk-rates", &ice_clk_table, &ice_clk_table_len, 0)) { if (ice_clk_table && ice_clk_table_len) { @@ -4268,6 +4275,11 @@ static void sdhci_msm_set_caps(struct sdhci_msm_host *msm_host) { msm_host->mmc->caps |= MMC_CAP_AGGRESSIVE_PM; msm_host->mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_NEED_RSP_BUSY; + +#if defined(CONFIG_SDC_QTI) + if (!msm_host->mmc->partial_init_broken) + msm_host->mmc->caps2 |= MMC_CAP2_CLK_SCALE; +#endif } static int sdhci_msm_probe(struct platform_device *pdev) @@ -4546,8 +4558,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) #if defined(CONFIG_SDC_QTI) host->timeout_clk_div = 4; - msm_host->mmc->caps2 |= MMC_CAP2_CLK_SCALE; #endif + sdhci_msm_setup_pm(pdev, msm_host); host->mmc_host_ops.execute_tuning = sdhci_msm_execute_tuning; diff --git a/drivers/slimbus/qcom-ngd-ctrl.c b/drivers/slimbus/qcom-ngd-ctrl.c index 09ecd1fb24ae..2244923532f2 100644 --- a/drivers/slimbus/qcom-ngd-ctrl.c +++ b/drivers/slimbus/qcom-ngd-ctrl.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 // Copyright (c) 2011-2017, The Linux Foundation. All rights reserved. // Copyright (c) 2018, Linaro Limited +// Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. #include #include @@ -156,6 +157,8 @@ struct qcom_slim_ngd_ctrl { struct completion reconf; struct work_struct m_work; struct workqueue_struct *mwq; + struct completion xfer_done; + struct completion sync_done; spinlock_t tx_buf_lock; enum qcom_slim_ngd_state state; dma_addr_t rx_phys_base; @@ -768,7 +771,6 @@ static int qcom_slim_ngd_xfer_msg(struct slim_controller *sctrl, { struct qcom_slim_ngd_ctrl *ctrl = dev_get_drvdata(sctrl->dev); DECLARE_COMPLETION_ONSTACK(tx_sent); - DECLARE_COMPLETION_ONSTACK(done); int ret, timeout, i; u8 wbuf[SLIM_MSGQ_BUF_LEN]; u8 rbuf[SLIM_MSGQ_BUF_LEN]; @@ -777,6 +779,8 @@ static int qcom_slim_ngd_xfer_msg(struct slim_controller *sctrl, u8 la = txn->la; bool usr_msg = false; + reinit_completion(&ctrl->xfer_done); + if (txn->mt == SLIM_MSG_MT_CORE && (txn->mc >= SLIM_MSG_MC_BEGIN_RECONFIGURATION && txn->mc <= SLIM_MSG_MC_RECONFIGURE_NOW)) @@ -824,7 +828,7 @@ static int qcom_slim_ngd_xfer_msg(struct slim_controller *sctrl, if (txn->mc != SLIM_USR_MC_DISCONNECT_PORT) wbuf[i++] = txn->msg->wbuf[1]; - txn->comp = &done; + txn->comp = &ctrl->xfer_done; ret = slim_alloc_txn_tid(sctrl, txn); if (ret) { dev_err(ctrl->dev, "Unable to allocate TID\n"); @@ -876,7 +880,7 @@ static int qcom_slim_ngd_xfer_msg(struct slim_controller *sctrl, } if (usr_msg) { - timeout = wait_for_completion_timeout(&done, HZ); + timeout = wait_for_completion_timeout(&ctrl->xfer_done, HZ); if (!timeout) { dev_err(sctrl->dev, "TX timed out:MC:0x%x,mt:0x%x", txn->mc, txn->mt); @@ -890,18 +894,21 @@ static int qcom_slim_ngd_xfer_msg(struct slim_controller *sctrl, static int qcom_slim_ngd_xfer_msg_sync(struct slim_controller *ctrl, struct slim_msg_txn *txn) { - DECLARE_COMPLETION_ONSTACK(done); + struct qcom_slim_ngd_ctrl *dev = + container_of(ctrl, struct qcom_slim_ngd_ctrl, ctrl); int ret, timeout; + reinit_completion(&dev->sync_done); + pm_runtime_get_sync(ctrl->dev); - txn->comp = &done; + txn->comp = &dev->sync_done; ret = qcom_slim_ngd_xfer_msg(ctrl, txn); if (ret) return ret; - timeout = wait_for_completion_timeout(&done, HZ); + timeout = wait_for_completion_timeout(&dev->sync_done, HZ); if (!timeout) { dev_err(ctrl->dev, "TX timed out:MC:0x%x,mt:0x%x", txn->mc, txn->mt); @@ -1460,6 +1467,9 @@ static int qcom_slim_ngd_ctrl_probe(struct platform_device *pdev) init_completion(&ctrl->reconf); init_completion(&ctrl->qmi.qmi_comp); + init_completion(&ctrl->xfer_done); + init_completion(&ctrl->sync_done); + platform_driver_register(&qcom_slim_ngd_driver); return of_qcom_slim_ngd_register(dev, ctrl); } diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig index 145b60079b23..33674ebaf5da 100644 --- a/drivers/soc/qcom/Kconfig +++ b/drivers/soc/qcom/Kconfig @@ -645,6 +645,16 @@ config MINIDUMP_MAX_ENTRIES This defines maximum number of entries to be allocated for application subsytem in Minidump table. +config QCOM_MINIDUMP_ENCRYPT + bool "QCOM Minidump Encryption Required" + depends on QCOM_MINIDUMP + default y + help + This adds a support to decide whether the regions in minidump + table should be encrypted or not. By default, encryption is done + by the boot firmware and the decision for encryption is taken by + the subsystems. + config QCOM_MICRODUMP tristate "Qualcomm Technologies, Inc. Microdump Support" depends on MSM_SUBSYSTEM_RESTART diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c deleted file mode 100644 index c84fd76ee91c..000000000000 --- a/drivers/soc/qcom/llcc-qcom.c +++ /dev/null @@ -1,532 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define ACTIVATE BIT(0) -#define DEACTIVATE BIT(1) -#define ACT_CTRL_OPCODE_ACTIVATE BIT(0) -#define ACT_CTRL_OPCODE_DEACTIVATE BIT(1) -#define ACT_CTRL_ACT_TRIG BIT(0) -#define ACT_CTRL_OPCODE_SHIFT 0x01 -#define ATTR1_PROBE_TARGET_WAYS_SHIFT 0x02 -#define ATTR1_FIXED_SIZE_SHIFT 0x03 -#define ATTR1_PRIORITY_SHIFT 0x04 -#define ATTR1_MAX_CAP_SHIFT 0x10 -#define ATTR0_RES_WAYS_MASK GENMASK(11, 0) -#define ATTR0_BONUS_WAYS_MASK GENMASK(27, 16) -#define ATTR0_BONUS_WAYS_SHIFT 0x10 -#define LLCC_STATUS_READ_DELAY 100 - -#define CACHE_LINE_SIZE_SHIFT 6 - -#define LLCC_COMMON_STATUS0 0x0003000c -#define LLCC_LB_CNT_MASK GENMASK(31, 28) -#define LLCC_LB_CNT_SHIFT 28 - -#define MAX_CAP_TO_BYTES(n) (n * SZ_1K) -#define LLCC_TRP_ACT_CTRLn(n) (n * SZ_4K) -#define LLCC_TRP_STATUSn(n) (4 + n * SZ_4K) -#define LLCC_TRP_ATTR0_CFGn(n) (0x21000 + SZ_8 * n) -#define LLCC_TRP_ATTR1_CFGn(n) (0x21004 + SZ_8 * n) - -#define LLCC_TRP_C_AS_NC 0x22890 -#define LLCC_TRP_NC_AS_C 0x22894 -#define LLCC_FEAC_C_AS_NC 0x35030 -#define LLCC_FEAC_NC_AS_C 0x35034 -#define LLCC_TRP_WRSC_EN 0x21F20 -#define LLCC_WRSC_SCID_EN(n) BIT(n) - -#define LLCC_TRP_PCB_ACT 0x21F04 -#define LLCC_TRP_SCID_DIS_CAP_ALLOC 0x21F00 - -#define BANK_OFFSET_STRIDE 0x80000 - -static struct llcc_slice_config sdm845_data[] = { - { LLCC_CPUSS, 1, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 1 }, - { LLCC_VIDSC0, 2, 512, 2, 1, 0x0, 0x0f0, 0, 0, 1, 1, 0 }, - { LLCC_VIDSC1, 3, 512, 2, 1, 0x0, 0x0f0, 0, 0, 1, 1, 0 }, - { LLCC_ROTATOR, 4, 563, 2, 1, 0x0, 0x00e, 2, 0, 1, 1, 0 }, - { LLCC_VOICE, 5, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_AUDIO, 6, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_MDMHPGRW, 7, 1024, 2, 0, 0xfc, 0xf00, 0, 0, 1, 1, 0 }, - { LLCC_MDM, 8, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_CMPT, 10, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_GPUHTW, 11, 512, 1, 1, 0xc, 0x0, 0, 0, 1, 1, 0 }, - { LLCC_GPU, 12, 2304, 1, 0, 0xff0, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_MMUHWT, 13, 256, 2, 0, 0x0, 0x1, 0, 0, 1, 0, 1 }, - { LLCC_CMPTDMA, 15, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_DISP, 16, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_VIDFW, 17, 2816, 1, 0, 0xffc, 0x2, 0, 0, 1, 1, 0 }, - { LLCC_MDMHPFX, 20, 1024, 2, 1, 0x0, 0xf00, 0, 0, 1, 1, 0 }, - { LLCC_MDMPNG, 21, 1024, 0, 1, 0x1e, 0x0, 0, 0, 1, 1, 0 }, - { LLCC_AUDHW, 22, 1024, 1, 1, 0xffc, 0x2, 0, 0, 1, 1, 0 }, -}; - -static struct llcc_drv_data *drv_data = (void *) -EPROBE_DEFER; - -static struct regmap_config llcc_regmap_config = { - .reg_bits = 32, - .reg_stride = 4, - .val_bits = 32, - .fast_io = true, -}; - -/** - * llcc_slice_getd - get llcc slice descriptor - * @uid: usecase_id for the client - * - * A pointer to llcc slice descriptor will be returned on success and - * and error pointer is returned on failure - */ -struct llcc_slice_desc *llcc_slice_getd(u32 uid) -{ - const struct llcc_slice_config *cfg; - struct llcc_slice_desc *desc; - u32 sz, count; - - if (IS_ERR(drv_data)) - return ERR_CAST(drv_data); - - cfg = drv_data->cfg; - sz = drv_data->cfg_size; - - for (count = 0; cfg && count < sz; count++, cfg++) - if (cfg->usecase_id == uid) - break; - - if (count == sz || !cfg) - return ERR_PTR(-ENODEV); - - desc = kzalloc(sizeof(*desc), GFP_KERNEL); - if (!desc) - return ERR_PTR(-ENOMEM); - - desc->slice_id = cfg->slice_id; - desc->slice_size = cfg->max_cap; - - return desc; -} -EXPORT_SYMBOL_GPL(llcc_slice_getd); - -/** - * llcc_slice_putd - llcc slice descritpor - * @desc: Pointer to llcc slice descriptor - */ -void llcc_slice_putd(struct llcc_slice_desc *desc) -{ - if (!IS_ERR_OR_NULL(desc)) - kfree(desc); -} -EXPORT_SYMBOL_GPL(llcc_slice_putd); - -static int llcc_update_act_ctrl(u32 sid, - u32 act_ctrl_reg_val, u32 status) -{ - u32 act_ctrl_reg; - u32 status_reg; - u32 slice_status; - int ret; - - if (IS_ERR(drv_data)) - return PTR_ERR(drv_data); - - act_ctrl_reg = LLCC_TRP_ACT_CTRLn(sid); - status_reg = LLCC_TRP_STATUSn(sid); - - /* Set the ACTIVE trigger */ - act_ctrl_reg_val |= ACT_CTRL_ACT_TRIG; - ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, - act_ctrl_reg_val); - if (ret) - return ret; - - /* Clear the ACTIVE trigger */ - act_ctrl_reg_val &= ~ACT_CTRL_ACT_TRIG; - ret = regmap_write(drv_data->bcast_regmap, act_ctrl_reg, - act_ctrl_reg_val); - if (ret) - return ret; - - ret = regmap_read_poll_timeout(drv_data->bcast_regmap, status_reg, - slice_status, !(slice_status & status), - 0, LLCC_STATUS_READ_DELAY); - return ret; -} - -/** - * llcc_slice_activate - Activate the llcc slice - * @desc: Pointer to llcc slice descriptor - * - * A value of zero will be returned on success and a negative errno will - * be returned in error cases - */ -int llcc_slice_activate(struct llcc_slice_desc *desc) -{ - int ret; - u32 act_ctrl_val; - - if (IS_ERR(drv_data)) - return PTR_ERR(drv_data); - - if (IS_ERR_OR_NULL(desc)) - return -EINVAL; - - mutex_lock(&drv_data->lock); - if (test_bit(desc->slice_id, drv_data->bitmap)) { - mutex_unlock(&drv_data->lock); - return 0; - } - - act_ctrl_val = ACT_CTRL_OPCODE_ACTIVATE << ACT_CTRL_OPCODE_SHIFT; - - ret = llcc_update_act_ctrl(desc->slice_id, act_ctrl_val, - DEACTIVATE); - if (ret) { - mutex_unlock(&drv_data->lock); - return ret; - } - - __set_bit(desc->slice_id, drv_data->bitmap); - mutex_unlock(&drv_data->lock); - - return ret; -} -EXPORT_SYMBOL_GPL(llcc_slice_activate); - -/** - * llcc_slice_deactivate - Deactivate the llcc slice - * @desc: Pointer to llcc slice descriptor - * - * A value of zero will be returned on success and a negative errno will - * be returned in error cases - */ -int llcc_slice_deactivate(struct llcc_slice_desc *desc) -{ - u32 act_ctrl_val; - int ret; - - if (IS_ERR(drv_data)) - return PTR_ERR(drv_data); - - if (IS_ERR_OR_NULL(desc)) - return -EINVAL; - - mutex_lock(&drv_data->lock); - if (!test_bit(desc->slice_id, drv_data->bitmap)) { - mutex_unlock(&drv_data->lock); - return 0; - } - act_ctrl_val = ACT_CTRL_OPCODE_DEACTIVATE << ACT_CTRL_OPCODE_SHIFT; - - ret = llcc_update_act_ctrl(desc->slice_id, act_ctrl_val, - ACTIVATE); - if (ret) { - mutex_unlock(&drv_data->lock); - return ret; - } - - __clear_bit(desc->slice_id, drv_data->bitmap); - mutex_unlock(&drv_data->lock); - - return ret; -} -EXPORT_SYMBOL_GPL(llcc_slice_deactivate); - -/** - * llcc_get_slice_id - return the slice id - * @desc: Pointer to llcc slice descriptor - */ -int llcc_get_slice_id(struct llcc_slice_desc *desc) -{ - if (IS_ERR_OR_NULL(desc)) - return -EINVAL; - - return desc->slice_id; -} -EXPORT_SYMBOL_GPL(llcc_get_slice_id); - -/** - * llcc_get_slice_size - return the slice id - * @desc: Pointer to llcc slice descriptor - */ -size_t llcc_get_slice_size(struct llcc_slice_desc *desc) -{ - if (IS_ERR_OR_NULL(desc)) - return 0; - - return desc->slice_size; -} -EXPORT_SYMBOL_GPL(llcc_get_slice_size); - -static int qcom_llcc_cfg_program(struct platform_device *pdev) -{ - int i; - u32 attr1_cfg; - u32 attr0_cfg; - u32 attr1_val; - u32 attr0_val; - u32 max_cap_cacheline; - u32 sz; - u32 pcb = 0; - u32 cad = 0; - u32 wren = 0; - int ret = 0; - const struct llcc_slice_config *llcc_table; - struct llcc_slice_desc desc; - bool cap_based_alloc_and_pwr_collapse = - drv_data->cap_based_alloc_and_pwr_collapse; - int v2_ver = of_device_is_compatible(pdev->dev.of_node, - "qcom,llcc-v2"); - - sz = drv_data->cfg_size; - llcc_table = drv_data->cfg; - - for (i = 0; i < sz; i++) { - attr1_cfg = LLCC_TRP_ATTR1_CFGn(llcc_table[i].slice_id); - attr0_cfg = LLCC_TRP_ATTR0_CFGn(llcc_table[i].slice_id); - - attr1_val = llcc_table[i].cache_mode; - attr1_val |= llcc_table[i].probe_target_ways << - ATTR1_PROBE_TARGET_WAYS_SHIFT; - attr1_val |= llcc_table[i].fixed_size << - ATTR1_FIXED_SIZE_SHIFT; - attr1_val |= llcc_table[i].priority << - ATTR1_PRIORITY_SHIFT; - - max_cap_cacheline = MAX_CAP_TO_BYTES(llcc_table[i].max_cap); - - /* LLCC instances can vary for each target. - * The SW writes to broadcast register which gets propagated - * to each llcc instace (llcc0,.. llccN). - * Since the size of the memory is divided equally amongst the - * llcc instances, we need to configure the max cap accordingly. - */ - max_cap_cacheline = max_cap_cacheline / drv_data->num_banks; - max_cap_cacheline >>= CACHE_LINE_SIZE_SHIFT; - attr1_val |= max_cap_cacheline << ATTR1_MAX_CAP_SHIFT; - - attr0_val = llcc_table[i].res_ways & ATTR0_RES_WAYS_MASK; - attr0_val |= llcc_table[i].bonus_ways << ATTR0_BONUS_WAYS_SHIFT; - - ret = regmap_write(drv_data->bcast_regmap, attr1_cfg, - attr1_val); - if (ret) - return ret; - ret = regmap_write(drv_data->bcast_regmap, attr0_cfg, - attr0_val); - if (ret) - return ret; - - if (v2_ver) { - wren |= llcc_table[i].write_scid_en << - llcc_table[i].slice_id; - ret = regmap_write(drv_data->bcast_regmap, - LLCC_TRP_WRSC_EN, wren); - if (ret) - return ret; - } - - if (cap_based_alloc_and_pwr_collapse) { - cad |= llcc_table[i].dis_cap_alloc << - llcc_table[i].slice_id; - ret = regmap_write(drv_data->bcast_regmap, - LLCC_TRP_SCID_DIS_CAP_ALLOC, cad); - if (ret) - return ret; - - pcb |= llcc_table[i].retain_on_pc << - llcc_table[i].slice_id; - ret = regmap_write(drv_data->bcast_regmap, - LLCC_TRP_PCB_ACT, pcb); - if (ret) - return ret; - } - - if (llcc_table[i].activate_on_init) { - desc.slice_id = llcc_table[i].slice_id; - ret = llcc_slice_activate(&desc); - } - } - return ret; -} - -static int qcom_llcc_remove(struct platform_device *pdev) -{ - /* Set the global pointer to a error code to avoid referencing it */ - drv_data = ERR_PTR(-ENODEV); - return 0; -} - -static struct regmap *qcom_llcc_init_mmio(struct platform_device *pdev, - const char *name) -{ - struct resource *res; - void __iomem *base; - - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name); - if (!res) - return ERR_PTR(-ENODEV); - - base = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(base)) - return ERR_CAST(base); - - llcc_regmap_config.name = name; - return devm_regmap_init_mmio(&pdev->dev, base, &llcc_regmap_config); -} - -static int qcom_llcc_probe(struct platform_device *pdev, - const struct llcc_slice_config *llcc_cfg, u32 sz) -{ - u32 num_banks; - struct device *dev = &pdev->dev; - int ret, i; - struct platform_device *llcc_edac, *llcc_perfmon; - struct device_node *tcm_memory_node; - - if (!IS_ERR(drv_data)) - return -EBUSY; - - drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL); - if (!drv_data) { - ret = -ENOMEM; - goto err; - } - - drv_data->regmap = qcom_llcc_init_mmio(pdev, "llcc_base"); - if (IS_ERR(drv_data->regmap)) { - ret = PTR_ERR(drv_data->regmap); - goto err; - } - - drv_data->bcast_regmap = - qcom_llcc_init_mmio(pdev, "llcc_broadcast_base"); - - if (PTR_ERR(drv_data->bcast_regmap) == -ENODEV) - drv_data->bcast_regmap = drv_data->regmap; - else if (IS_ERR(drv_data->bcast_regmap)) { - ret = PTR_ERR(drv_data->bcast_regmap); - goto err; - } - - ret = regmap_read(drv_data->regmap, LLCC_COMMON_STATUS0, - &num_banks); - if (ret) - goto err; - - num_banks &= LLCC_LB_CNT_MASK; - num_banks >>= LLCC_LB_CNT_SHIFT; - drv_data->num_banks = num_banks; - - for (i = 0; i < sz; i++) - if (llcc_cfg[i].slice_id > drv_data->max_slices) - drv_data->max_slices = llcc_cfg[i].slice_id; - - drv_data->offsets = devm_kcalloc(dev, num_banks, sizeof(u32), - GFP_KERNEL); - if (!drv_data->offsets) { - ret = -ENOMEM; - goto err; - } - - drv_data->cap_based_alloc_and_pwr_collapse = - of_property_read_bool(pdev->dev.of_node, - "cap-based-alloc-and-pwr-collapse"); - - for (i = 0; i < num_banks; i++) - drv_data->offsets[i] = i * BANK_OFFSET_STRIDE; - - drv_data->bitmap = devm_kcalloc(dev, - BITS_TO_LONGS(drv_data->max_slices), sizeof(unsigned long), - GFP_KERNEL); - if (!drv_data->bitmap) { - ret = -ENOMEM; - goto err; - } - - drv_data->cfg = llcc_cfg; - drv_data->cfg_size = sz; - mutex_init(&drv_data->lock); - platform_set_drvdata(pdev, drv_data); - - ret = qcom_llcc_cfg_program(pdev); - if (ret) { - pr_err("llcc configuration failed!!\n"); - goto err; - } - - drv_data->ecc_irq = platform_get_irq(pdev, 0); - llcc_edac = platform_device_register_data(&pdev->dev, - "qcom_llcc_edac", -1, drv_data, - sizeof(*drv_data)); - if (IS_ERR(llcc_edac)) - dev_err(dev, "Failed to register llcc edac driver\n"); - - llcc_perfmon = platform_device_register_data(&pdev->dev, - "qcom_llcc_perfmon", -1, - drv_data, sizeof(*drv_data)); - if (IS_ERR(llcc_perfmon)) - dev_err(dev, "Failed to register llcc perfmon device\n"); - - tcm_memory_node = of_parse_phandle(dev->of_node, "memory-region", 0); - if (tcm_memory_node) { - ret = qcom_llcc_tcm_probe(pdev, llcc_cfg, sz, tcm_memory_node); - if (ret) { - dev_err(dev, "Failed to probe TCM manager\n"); - goto err_dereg; - } - } - - return 0; - -err_dereg: - platform_device_unregister(llcc_edac); - platform_device_unregister(llcc_perfmon); -err: - drv_data = ERR_PTR(-ENODEV); - return ret; -} - -static int sdm845_qcom_llcc_remove(struct platform_device *pdev) -{ - return qcom_llcc_remove(pdev); -} - -static int sdm845_qcom_llcc_probe(struct platform_device *pdev) -{ - return qcom_llcc_probe(pdev, sdm845_data, ARRAY_SIZE(sdm845_data)); -} - -static const struct of_device_id sdm845_qcom_llcc_of_match[] = { - { .compatible = "qcom,sdm845-llcc", }, - { } -}; - -static struct platform_driver sdm845_qcom_llcc_driver = { - .driver = { - .name = "sdm845-llcc", - .of_match_table = sdm845_qcom_llcc_of_match, - }, - .probe = sdm845_qcom_llcc_probe, - .remove = sdm845_qcom_llcc_remove, -}; -module_platform_driver(sdm845_qcom_llcc_driver); - -MODULE_DESCRIPTION("QCOM sdm845 LLCC driver"); -MODULE_LICENSE("GPL v2"); diff --git a/drivers/soc/qcom/llcc-slice.c b/drivers/soc/qcom/llcc-slice.c index bf5ec56a6395..38acab027dbb 100644 --- a/drivers/soc/qcom/llcc-slice.c +++ b/drivers/soc/qcom/llcc-slice.c @@ -379,6 +379,9 @@ int qcom_llcc_probe(struct platform_device *pdev, struct platform_device *llcc_edac, *llcc_perfmon; struct device_node *tcm_memory_node; + if (!IS_ERR(drv_data)) + return -EBUSY; + drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL); if (!drv_data) { ret = -ENOMEM; diff --git a/drivers/soc/qcom/msm_minidump.c b/drivers/soc/qcom/msm_minidump.c index 192be4dba907..8c46240649c1 100644 --- a/drivers/soc/qcom/msm_minidump.c +++ b/drivers/soc/qcom/msm_minidump.c @@ -570,8 +570,13 @@ static int __init msm_minidump_init(void) minidump_table.revision = md_global_toc->md_revision; md_ss_toc = &md_global_toc->md_ss_toc[MD_SS_HLOS_ID]; - md_ss_toc->encryption_status = MD_SS_ENCR_NONE; - md_ss_toc->encryption_required = MD_SS_ENCR_REQ; + if (IS_ENABLED(CONFIG_QCOM_MINIDUMP_ENCRYPT)) { + md_ss_toc->encryption_status = MD_SS_ENCR_NONE; + md_ss_toc->encryption_required = MD_SS_ENCR_REQ; + } else { + md_ss_toc->encryption_status = MD_SS_ENCR_DONE; + md_ss_toc->encryption_required = MD_SS_ENCR_NOTREQ; + } minidump_table.md_ss_toc = md_ss_toc; minidump_table.md_regions = kzalloc((MAX_NUM_ENTRIES * diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index c9b323d1af2d..b4d845f25214 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1780,9 +1780,6 @@ static int dwc3_probe(struct platform_device *pdev) pm_runtime_allow(dev); dwc3_debugfs_init(dwc); - - dma_set_max_seg_size(dev, UINT_MAX); - return 0; err3: diff --git a/include/linux/ipa_wdi3.h b/include/linux/ipa_wdi3.h index 8fbd994cb26a..ffd7298e1d08 100644 --- a/include/linux/ipa_wdi3.h +++ b/include/linux/ipa_wdi3.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018 - 2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2022 - 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022 - 2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef _IPA_WDI3_H_ @@ -73,7 +73,7 @@ typedef void (*ipa_wdi_mesh_ast_notifier_cb)(void *priv, unsigned long data); * @wdi_notify: bw notification cb * inst_id: Instance ID * @ast_update: AST update needed or not. - * @is_hsp: need to identify if attach is hsp/pine. + * @rx_tlv_format: need to identify rx tlv format hsp(1)/pine(0). */ struct ipa_wdi_init_in_params { enum ipa_wdi_version wdi_version; @@ -85,6 +85,7 @@ struct ipa_wdi_init_in_params { int inst_id; bool ast_update; bool is_hsp; + u8 rx_tlv_format; }; /** diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 38cfd8faa2d2..af6bc6f7bfd4 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h @@ -597,6 +597,7 @@ struct mmc_host { bool hsq_enabled; #if defined(CONFIG_SDC_QTI) bool need_hw_reset; + bool partial_init_broken; #endif #if defined(CONFIG_SDC_QTI) diff --git a/include/uapi/linux/msm_ipa.h b/include/uapi/linux/msm_ipa.h index dcd4980ea987..0abf3da4beac 100644 --- a/include/uapi/linux/msm_ipa.h +++ b/include/uapi/linux/msm_ipa.h @@ -152,6 +152,8 @@ #define IPA_IOCTL_SET_EXT_ROUTER_MODE 95 #define IPA_IOCTL_ADD_DEL_DSCP_PCP_MAPPING 96 #define IPA_IOCTL_SEND_VLAN_MUXID_MAPPING 97 +#define IPA_IOCTL_SEND_TUNNEL_TEMPLATE_INFO 98 +#define IPA_IOCTL_QUERY_TUNNEL_FEATURE 99 /** * max size of the header to be inserted */ @@ -1776,6 +1778,104 @@ struct ipa_ioc_mux_mapping_table { struct singletag_mux_map_entry map_entries[MAX_VLAN_CONFIGURE]; }; +/* Feature Type Supported Design*/ +/* Cache all Design Support with Regular HPS for both EoGRE and MPLSoGRE tunnel */ +#define DEFAULT_FEATURE 0x00 +/* EoGRE to support Single Tag packet with new HPS */ +#define SINGLE_TAG_FEATURE 0x01 +/* MPLSoGRE to support Double Tag packet with new HPS */ +#define DOUBLE_TAG_FEATURE 0x02 +/* EoGRE to support UnTag packet with new HPS */ +#define UNTAG_FEATURE 0x03 + +/* l2 header is adjusted for every hwp_pkt_next_action */ +/* uc evaluate l2 header length and send packet to exception */ +#define SW_PATH_ADJ_L2_EXCEPTION 0x00 +/* uc evaluate l2 header length and send packet to 2nd pass */ +#define HW_PATH_ADJ_L2_RESUME_2ND_PASS 0x01 +/* uc evaluate l2 header length, update the metadata and send packet to 2nd pass */ +#define HW_PATH_ADJ_L2_METADATA_UPDATE_RESUME_2ND_PASS 0x02 +/* uc evaluate l2 header length, add outer header and send packet to 2nd pass */ +#define HW_PATH_ADJ_L2_ADD_TUNNEL_RESUME_2ND_PASS 0x03 +/* uc evaluate l2 header, update metadata, add outer header and send packet to 2nd pass */ +#define HW_PATH_ADJ_L2_ADD_TUNNEL_WITH_METADATA_UPDATE_RESUME_2ND_PASS 0x04 + +/* untagged packet configuration */ +struct untag_pkt_config_t { + /* packet action that should follow untag packet */ + uint32_t action_configured; + /* pdn from which untag packet should transfer */ + uint8_t mux_id; + /* flag if 1=>pkt_with_option_hdr 0=>pkt_without_option_hdr */ + uint8_t is_v6_options_hdr_present; + uint16_t pad0; /*for alignment*/ + /* lower 32 bit of tunnel header address */ + uint32_t *tunnel_template_addr; + uint32_t pad1; /*for alignment*/ +} __packed; + + +/* vlanid - action - tunnel_id - mux_id */ +struct singletag_mux_mapping_table_t { + /* multi tunnel purpose */ + uint16_t vlan_id_start; + uint16_t vlan_id_end; + uint32_t action_configured; + /* pdn from which untag packet should transfer */ + uint8_t mux_id; + /* flag if 1=>pkt_with_option_hdr 0=>pkt_without_option_hdr */ + uint8_t is_v6_options_hdr_present; + uint16_t pad0; /*for alignment*/ + uint32_t *tunnel_template_addr; +} __packed; + +struct doubletag_mux_mapping_table_t { + /* multi tunnel purpose */ + uint16_t stag_id_start; + uint16_t stag_id_end; + uint16_t ctag_id_start; + uint16_t ctag_id_end; + uint32_t action_configured; + /* pdn from which untag packet should transfer */ + uint8_t mux_id; + /* flag if 1=>pkt_with_option_hdr 0=>pkt_without_option_hdr */ + uint8_t is_v6_options_hdr_present; + uint16_t pad0; /*for alignment*/ + uint32_t *tunnel_template_addr; + uint32_t pad1; /*for alignment*/ +} __packed; + +/* max template side pass to uc */ +#define MAX_TEMPLATE_SIZE 64 +/* max number of tunnel to support ie: per PDN two tunnel (2*8)*/ +#define MAX_TUNNEL_SUPPORT 16 + +/* configuration table */ +struct tunnel_protocols_config_table_t { + struct untag_pkt_config_t untagged_mapping_table; + uint8_t num_of_single_tag_configs; + uint8_t pad0; /*for alignment*/ + uint16_t pad1; /*for alignment*/ + uint32_t pad2; /*for alignment*/ + /* table for single tag pkt */ + struct singletag_mux_mapping_table_t singletag_mux_mapping_table[MAX_TUNNEL_SUPPORT]; + uint8_t num_of_double_tag_configs; + uint8_t pad3; /*for alignment*/ + uint16_t pad4; /*for alignment*/ + uint32_t pad5; /*for alignment*/ + /* table for double tag pkt */ + struct doubletag_mux_mapping_table_t doubletag_mux_mapping_table[MAX_TUNNEL_SUPPORT]; +}; + +/* ioctl tunnel configuration table */ + +struct ipa_ioc_tunnel_template_info { + uint8_t template_header[MAX_TEMPLATE_SIZE]; + uint32_t template_len; + uint32_t template_type; + /*tunnel configuration table*/ + struct tunnel_protocols_config_table_t tunnel_config; +}; /** * struct ipa_exception @@ -4103,6 +4203,14 @@ struct ipa_ioc_dscp_pcp_map_info { IPA_IOCTL_SEND_VLAN_MUXID_MAPPING, \ struct ipa_ioc_mux_mapping_table) +#define IPA_IOC_SEND_TUNNEL_TEMPLATE_INFO _IOW(IPA_IOC_MAGIC, \ + IPA_IOCTL_SEND_TUNNEL_TEMPLATE_INFO, \ + struct ipa_ioc_tunnel_template_info) + + +#define IPA_IOC_QUERY_TUNNEL_FEATURE _IOW(IPA_IOC_MAGIC, \ + IPA_IOCTL_QUERY_TUNNEL_FEATURE, \ + uint8_t) /* * unique magic number of the Tethering bridge ioctls diff --git a/kernel/events/core.c b/kernel/events/core.c index f2b3d5e47678..81f8f3547126 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -2041,11 +2041,11 @@ static void perf_group_detach(struct perf_event *event) if (event->group_leader != event) { list_del_init(&event->sibling_list); event->group_leader->nr_siblings--; - event->group_leader->group_generation++; #ifdef CONFIG_PERF_KERNEL_SHARE if (event->shared) event->group_leader = event; #endif + event->group_leader->group_generation++; goto out; } diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 1393d4c2472b..9b53ae8e488c 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1030,7 +1030,7 @@ static bool hwpoison_user_mappings(struct page *p, unsigned long pfn, if (kill) collect_procs(hpage, &tokill, flags & MF_ACTION_REQUIRED); - unmap_success = try_to_unmap(p, ttu, NULL); + unmap_success = try_to_unmap(hpage, ttu, NULL); if (!unmap_success) pr_err("Memory failure: %#lx: failed to unmap page (mapcount=%d)\n", pfn, page_mapcount(p));