diff --git a/android/GKI_VERSION b/android/GKI_VERSION
index 6d6a6e46336e..36b4664d338a 100644
--- a/android/GKI_VERSION
+++ b/android/GKI_VERSION
@@ -1 +1 @@
-LTS_5.4.233_4716ccc31d55
+LTS_5.4.242_e699d543bbc9
diff --git a/android/abi_gki_aarch64_d72fdcc7094f.xml b/android/abi_gki_aarch64_e699d543bbc9.xml
similarity index 97%
rename from android/abi_gki_aarch64_d72fdcc7094f.xml
rename to android/abi_gki_aarch64_e699d543bbc9.xml
index 03e83981d842..46d059cb5e6a 100644
--- a/android/abi_gki_aarch64_d72fdcc7094f.xml
+++ b/android/abi_gki_aarch64_e699d543bbc9.xml
@@ -2217,6 +2217,7 @@
+
@@ -2919,6 +2920,7 @@
+
@@ -10475,140 +10477,140 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -11795,9 +11797,9 @@
-
+
-
+
@@ -11820,116 +11822,116 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -13283,7 +13285,7 @@
-
+
@@ -13294,13 +13296,19 @@
-
+
-
+
-
+
+
+
+
+
+
+
@@ -13371,56 +13379,56 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -14635,66 +14643,66 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -15562,7 +15570,7 @@
-
+
@@ -16290,9 +16298,9 @@
-
+
-
+
@@ -16310,7 +16318,7 @@
-
+
@@ -16566,6 +16574,7 @@
+
@@ -17099,7 +17108,7 @@
-
+
@@ -17446,6 +17455,7 @@
+
@@ -18211,377 +18221,377 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
@@ -20288,15 +20298,11 @@
-
-
-
-
-
+
@@ -20325,7 +20331,7 @@
-
+
@@ -20958,7 +20964,7 @@
-
+
@@ -21020,10 +21026,10 @@
-
-
-
-
+
+
+
+
@@ -21541,13 +21547,13 @@
-
-
+
+
-
-
-
+
+
+
@@ -21568,25 +21574,25 @@
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -22842,63 +22848,63 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -23076,26 +23082,26 @@
-
+
-
+
-
+
-
+
@@ -23123,7 +23129,7 @@
-
+
@@ -23633,10 +23639,10 @@
-
-
-
-
+
+
+
+
@@ -24886,42 +24892,42 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -27857,11 +27863,11 @@
-
+
-
+
@@ -27956,7 +27962,7 @@
-
+
@@ -27964,15 +27970,15 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
@@ -27980,17 +27986,17 @@
-
+
-
-
-
+
+
+
-
+
@@ -28365,156 +28371,156 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
@@ -30538,37 +30544,37 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
@@ -31548,6 +31554,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -35921,12 +35938,12 @@
-
-
+
+
-
-
+
+
@@ -35952,8 +35969,8 @@
-
-
+
+
@@ -40398,21 +40415,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -41815,8 +41832,8 @@
-
-
+
+
@@ -42602,14 +42619,14 @@
-
-
+
+
-
-
-
-
+
+
+
+
@@ -43736,6 +43753,1524 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -44646,583 +46181,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -45348,36 +46306,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -45618,26 +46550,26 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -45910,72 +46842,72 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
@@ -45988,73 +46920,73 @@
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
@@ -47424,7 +48356,7 @@
-
+
@@ -47500,21 +48432,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -48427,7 +49359,7 @@
-
+
@@ -48452,7 +49384,7 @@
-
+
@@ -48471,7 +49403,7 @@
-
+
@@ -49191,7 +50123,7 @@
-
+
@@ -55457,7 +56389,7 @@
-
+
@@ -58434,9 +59366,9 @@
-
+
-
+
@@ -58447,24 +59379,24 @@
-
+
-
+
-
+
-
+
-
+
@@ -58473,11 +59405,11 @@
-
+
-
+
@@ -58566,411 +59498,411 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -58992,7 +59924,7 @@
-
+
@@ -59001,7 +59933,7 @@
-
+
@@ -59101,29 +60033,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -59283,16 +60215,99 @@
-
-
+
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -59316,97 +60331,97 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -59494,12 +60509,12 @@
-
+
-
+
-
+
@@ -59507,7 +60522,10 @@
-
+
+
+
+
@@ -59569,9 +60587,13 @@
+
+
+
+
@@ -59830,30 +60852,41 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -59899,228 +60932,228 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -60134,32 +61167,32 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -60176,18 +61209,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -60315,6 +61348,9 @@
+
+
+
@@ -60429,6 +61465,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -60450,6 +61540,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -60622,26 +61750,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -60824,6 +61952,14 @@
+
+
+
+
+
+
+
+
@@ -60867,10 +62003,15 @@
+
+
+
+
+
@@ -61865,18 +63006,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -62141,6 +63282,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -62290,15 +63523,15 @@
-
+
-
+
-
+
-
+
@@ -62714,11 +63947,15 @@
+
+
+
+
@@ -63046,17 +64283,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -63294,9 +64520,9 @@
-
+
-
+
@@ -63324,9 +64550,9 @@
-
+
-
+
@@ -63558,6 +64784,9 @@
+
+
+
@@ -63604,6 +64833,7 @@
+
@@ -63663,12 +64893,10 @@
-
-
-
+
@@ -63865,6 +65093,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64300,12 +65580,12 @@
-
+
-
+
-
+
@@ -64409,6 +65689,7 @@
+
@@ -64459,6 +65740,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64505,7 +65806,89 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64556,24 +65939,24 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -64639,6 +66022,7 @@
+
@@ -64902,10 +66286,260 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64913,7 +66547,14 @@
+
+
+
+
+
+
+
@@ -64933,6 +66574,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65051,22 +66772,181 @@
-
+
+
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65075,6 +66955,14 @@
+
+
+
+
+
+
+
+
@@ -65092,7 +66980,18 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -65129,6 +67028,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -65167,10 +67077,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65215,15 +67213,90 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65235,11 +67308,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -65256,6 +67352,10 @@
+
+
+
+
@@ -65371,6 +67471,7 @@
+
@@ -65570,7 +67671,6 @@
-
@@ -65728,53 +67828,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -65808,303 +67865,13 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
@@ -66248,7 +68015,7 @@
-
+
@@ -66338,21 +68105,21 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -66849,7 +68616,7 @@
-
+
@@ -66858,7 +68625,7 @@
-
+
@@ -67423,18 +69190,18 @@
-
+
-
+
-
+
@@ -68040,7 +69807,12 @@
-
+
+
+
+
+
+
@@ -68214,68 +69986,68 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -68286,7 +70058,7 @@
-
+
@@ -68314,7 +70086,7 @@
-
+
@@ -68326,52 +70098,47 @@
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -68379,7 +70146,7 @@
-
+
@@ -68395,11 +70162,11 @@
-
+
-
+
@@ -68415,19 +70182,19 @@
-
+
-
+
-
+
@@ -68436,25 +70203,25 @@
-
+
-
+
-
+
-
+
-
+
@@ -68517,7 +70284,7 @@
-
+
@@ -68701,21 +70468,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -68737,108 +70504,108 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -69361,7 +71128,7 @@
-
+
@@ -69554,18 +71321,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -70121,86 +71888,86 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -70208,20 +71975,20 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -70327,69 +72094,69 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -70666,20 +72433,20 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -71246,140 +73013,140 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
@@ -71413,17 +73180,17 @@
-
+
-
+
-
+
@@ -71445,38 +73212,38 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -71488,11 +73255,11 @@
-
+
-
+
@@ -71501,11 +73268,11 @@
-
+
-
+
@@ -71574,13 +73341,13 @@
-
+
-
+
@@ -71592,11 +73359,11 @@
-
+
-
+
@@ -71657,12 +73424,12 @@
-
+
-
+
@@ -71790,32 +73557,32 @@
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
@@ -72127,7 +73894,7 @@
-
+
@@ -72211,7 +73978,7 @@
-
+
@@ -72232,7 +73999,7 @@
-
+
@@ -72242,7 +74009,7 @@
-
+
@@ -72357,8 +74124,8 @@
-
-
+
+
@@ -73807,17 +75574,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -73964,7 +75720,7 @@
-
+
@@ -74294,7 +76050,7 @@
-
+
@@ -74311,24 +76067,24 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
@@ -74340,7 +76096,7 @@
-
+
@@ -74354,104 +76110,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
@@ -74467,154 +76141,70 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -74623,88 +76213,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -75611,9 +77119,9 @@
-
-
-
+
+
+
@@ -75624,83 +77132,83 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
@@ -75708,16 +77216,16 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -76725,23 +78233,23 @@
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
@@ -78175,12 +79683,12 @@
-
-
+
+
-
-
+
+
@@ -78494,12 +80002,12 @@
-
-
+
+
-
-
+
+
@@ -78522,12 +80030,12 @@
-
-
+
+
-
-
+
+
@@ -81222,16 +82730,16 @@
-
+
-
+
-
+
@@ -81239,7 +82747,7 @@
-
+
@@ -81248,7 +82756,7 @@
-
+
@@ -81256,7 +82764,7 @@
-
+
@@ -81283,12 +82791,12 @@
-
+
-
+
@@ -81298,7 +82806,7 @@
-
+
@@ -84767,11 +86275,11 @@
-
+
-
+
@@ -85518,66 +87026,66 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -89318,7 +90826,7 @@
-
+
@@ -89616,6 +91124,10 @@
+
+
+
+
@@ -89734,7 +91246,7 @@
-
+
@@ -90142,17 +91654,17 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -90693,7 +92205,7 @@
-
+
@@ -90770,7 +92282,7 @@
-
+
@@ -91145,7 +92657,7 @@
-
+
@@ -92706,7 +94218,7 @@
-
+
@@ -92721,7 +94233,7 @@
-
+
@@ -92978,7 +94490,7 @@
-
+
@@ -92992,11 +94504,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -93149,7 +94661,7 @@
-
+
@@ -93257,11 +94769,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -93612,7 +95124,7 @@
-
+
@@ -94365,7 +95877,7 @@
-
+
@@ -94378,7 +95890,7 @@
-
+
@@ -94544,7 +96056,7 @@
-
+
@@ -94575,7 +96087,7 @@
-
+
@@ -96035,7 +97547,7 @@
-
+
@@ -100021,123 +101533,123 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -102535,21 +104047,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -106862,7 +108374,7 @@
-
+
@@ -106873,13 +108385,19 @@
-
+
-
+
-
+
+
+
+
+
+
+
@@ -106907,62 +108425,62 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -107118,178 +108636,178 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -110372,7 +111890,7 @@
-
+
@@ -110437,7 +111955,7 @@
-
+
@@ -110449,6 +111967,11 @@
+
+
+
+
+
@@ -112391,7 +113914,7 @@
-
+
@@ -112399,28 +113922,28 @@
-
+
-
+
-
+
-
+
-
+
@@ -112433,7 +113956,7 @@
-
+
@@ -112484,7 +114007,7 @@
-
+
@@ -112511,13 +114034,13 @@
-
+
-
+
@@ -112566,11 +114089,11 @@
-
+
-
+
@@ -112655,7 +114178,7 @@
-
+
@@ -112689,7 +114212,7 @@
-
+
@@ -112756,9 +114279,92 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -112930,20 +114536,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -113073,8 +114666,232 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -113906,457 +115723,457 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -114431,228 +116248,228 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -115327,7 +117144,7 @@
-
+
@@ -115436,23 +117253,23 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -115462,29 +117279,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -116326,17 +118143,17 @@
-
+
-
+
-
+
-
+
-
+
@@ -116370,12 +118187,12 @@
-
+
-
+
-
+
@@ -117259,30 +119076,30 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -117293,69 +119110,69 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -117372,9 +119189,9 @@
-
-
-
+
+
+
@@ -117837,57 +119654,57 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -118095,29 +119912,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -118126,51 +119943,51 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -118284,20 +120101,20 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -118647,37 +120464,37 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -121246,7 +123063,7 @@
-
+
@@ -121333,7 +123150,7 @@
-
+
@@ -121428,7 +123245,7 @@
-
+
@@ -121443,7 +123260,7 @@
-
+
@@ -121679,18 +123496,17 @@
-
-
-
+
+
-
-
-
+
+
+
@@ -122055,9 +123871,9 @@
-
+
-
+
@@ -123837,18 +125653,18 @@
-
+
-
+
-
+
-
+
-
+
@@ -125476,12 +127292,12 @@
-
+
-
+
@@ -125641,11 +127457,11 @@
-
-
+
+
-
+
@@ -125686,101 +127502,101 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -126247,12 +128063,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -126378,26 +128194,26 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
@@ -126410,7 +128226,7 @@
-
+
@@ -126418,12 +128234,12 @@
-
-
+
+
-
+
@@ -126445,13 +128261,13 @@
-
+
-
+
@@ -126467,19 +128283,19 @@
-
+
-
+
-
+
@@ -126807,7 +128623,7 @@
-
+
@@ -128637,15 +130453,15 @@
-
-
-
-
+
+
+
+
-
-
-
+
+
+
@@ -129084,7 +130900,7 @@
-
+
@@ -129095,7 +130911,7 @@
-
+
@@ -129252,7 +131068,7 @@
-
+
@@ -129273,7 +131089,7 @@
-
+
@@ -129915,31 +131731,31 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
@@ -130176,12 +131992,12 @@
-
-
+
+
-
-
+
+
@@ -130190,7 +132006,7 @@
-
+
@@ -130328,13 +132144,13 @@
-
+
-
+
@@ -130348,7 +132164,7 @@
-
+
@@ -130685,7 +132501,7 @@
-
+
@@ -130764,7 +132580,7 @@
-
+
@@ -131163,28 +132979,28 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -131561,13 +133377,13 @@
-
+
-
-
-
+
+
+
@@ -131578,21 +133394,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -131626,12 +133442,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -131654,28 +133470,28 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
@@ -131875,7 +133691,7 @@
-
+
@@ -131883,7 +133699,7 @@
-
+
@@ -131905,9 +133721,9 @@
-
+
-
+
@@ -131925,7 +133741,7 @@
-
+
@@ -132057,7 +133873,7 @@
-
+
@@ -132349,166 +134165,433 @@
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
+
-
+
-
-
-
-
+
-
+
-
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -132574,89 +134657,96 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -132664,6 +134754,10 @@
+
+
+
+
@@ -133397,36 +135491,36 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -133442,89 +135536,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -133705,149 +135716,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -134225,10 +136093,8 @@
-
-
@@ -134237,7 +136103,7 @@
-
+
@@ -134321,42 +136187,42 @@
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -134404,21 +136270,21 @@
-
+
-
+
-
+
-
+
@@ -134567,27 +136433,27 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
@@ -134733,7 +136599,6 @@
-
@@ -134746,9 +136611,6 @@
-
-
-
@@ -134783,13 +136645,6 @@
-
-
-
-
-
-
-
@@ -135403,195 +137258,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -138632,10 +140298,6 @@
-
-
-
-
@@ -138660,7 +140322,6 @@
-
@@ -138748,13 +140409,7 @@
-
-
-
-
-
-
@@ -138822,13 +140477,6 @@
-
-
-
-
-
-
-
@@ -139406,10 +141054,6 @@
-
-
-
-
@@ -140723,25 +142367,25 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -140782,9 +142426,9 @@
-
-
-
+
+
+
@@ -141233,7 +142877,7 @@
-
+
@@ -141333,7 +142977,7 @@
-
+
@@ -141427,7 +143071,7 @@
-
+
@@ -141480,7 +143124,7 @@
-
+
@@ -141506,7 +143150,7 @@
-
+
@@ -141523,7 +143167,7 @@
-
+
@@ -141531,7 +143175,7 @@
-
+
@@ -141539,7 +143183,7 @@
-
+
@@ -141547,7 +143191,7 @@
-
+
@@ -141570,7 +143214,7 @@
-
+
@@ -142899,47 +144543,47 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -143187,151 +144831,151 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -143345,7 +144989,7 @@
-
+
@@ -143420,21 +145064,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -144153,36 +145797,36 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -144192,128 +145836,128 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -144508,21 +146152,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -145848,41 +147492,41 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -146164,7 +147808,7 @@
-
+
@@ -146189,19 +147833,19 @@
-
+
-
+
-
+
@@ -146860,11 +148504,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
index 6156171849f1..4d538ad06cdc 100644
--- a/android/abi_gki_aarch64_qcom
+++ b/android/abi_gki_aarch64_qcom
@@ -2561,6 +2561,7 @@
ufshcd_remove
ufshcd_uic_hibern8_enter
ufshcd_uic_hibern8_exit
+ uhid_hid_driver
__uio_register_device
uhid_hid_driver
uio_unregister_device
diff --git a/arch/arm/configs/vendor/sdxlemur.config b/arch/arm/configs/vendor/sdxlemur.config
index 6f909a87bf87..eb3bd9d5e827 100644
--- a/arch/arm/configs/vendor/sdxlemur.config
+++ b/arch/arm/configs/vendor/sdxlemur.config
@@ -364,6 +364,7 @@ CONFIG_AQFWD_IOSS=m
CONFIG_R8125=y
CONFIG_R8125_IOSS=m
CONFIG_R8168=y
+CONFIG_R8168_IOSS=m
CONFIG_QCOM_SHOW_RESUME_IRQ=y
CONFIG_HARDENED_USERCOPY=y
# CONFIG_HARDENED_USERCOPY_FALLBACK is not set
@@ -505,3 +506,7 @@ CONFIG_DM_VERITY=y
# CONFIG_DEVMEM is not set
CONFIG_DAX=y
CONFIG_LSM_MMAP_MIN_ADDR=32768
+CONFIG_ANDROID_BINDER_IPC=y
+CONFIG_ANDROID_BINDERFS=y
+CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
+# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
diff --git a/drivers/bus/mhi/core/mhi_internal.h b/drivers/bus/mhi/core/mhi_internal.h
index c02eee9886c7..ea2f5bfda1b5 100644
--- a/drivers/bus/mhi/core/mhi_internal.h
+++ b/drivers/bus/mhi/core/mhi_internal.h
@@ -809,6 +809,12 @@ static inline void mhi_trigger_resume(struct mhi_controller *mhi_cntrl)
pm_wakeup_hard_event(&mhi_cntrl->mhi_dev->dev);
}
+static inline bool is_valid_ring_ptr(struct mhi_ring *ring, dma_addr_t addr)
+{
+ return ((addr >= ring->iommu_base &&
+ addr < ring->iommu_base + ring->len) && (addr % 16 == 0));
+}
+
/* queue transfer buffer */
int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,
void *buf, void *cb, size_t buf_len, enum MHI_FLAGS flags);
diff --git a/drivers/bus/mhi/core/mhi_main.c b/drivers/bus/mhi/core/mhi_main.c
index 0ddbbeec7b8d..532bbd6151a4 100644
--- a/drivers/bus/mhi/core/mhi_main.c
+++ b/drivers/bus/mhi/core/mhi_main.c
@@ -1403,6 +1403,12 @@ int mhi_process_tsync_ev_ring(struct mhi_controller *mhi_cntrl,
int ret = 0;
spin_lock_bh(&mhi_event->lock);
+ if (!is_valid_ring_ptr(ev_ring, er_ctxt->rp)) {
+ MHI_ERR("Event ring rp points outside of the event ring or unalign rp %llx\n",
+ er_ctxt->rp);
+ spin_unlock_bh(&mhi_event->lock);
+ return 0;
+ }
dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
if (ev_ring->rp == dev_rp) {
spin_unlock_bh(&mhi_event->lock);
@@ -1496,8 +1502,14 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl,
int ret = 0;
spin_lock_bh(&mhi_event->lock);
- dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
+ if (!is_valid_ring_ptr(ev_ring, er_ctxt->rp)) {
+ MHI_ERR("Event ring rp points outside of the event ring or unalign rp %llx\n",
+ er_ctxt->rp);
+ spin_unlock_bh(&mhi_event->lock);
+ return 0;
+ }
+ dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
if (ev_ring->rp == dev_rp) {
spin_unlock_bh(&mhi_event->lock);
goto exit_bw_scale_process;
diff --git a/drivers/clk/qcom/gcc-qcs404.c b/drivers/clk/qcom/gcc-qcs404.c
index a01790307c07..cea028d39793 100644
--- a/drivers/clk/qcom/gcc-qcs404.c
+++ b/drivers/clk/qcom/gcc-qcs404.c
@@ -117,7 +117,8 @@ static const struct parent_map gcc_parent_map_5[] = {
static const char * const gcc_parent_names_5[] = {
"bi_tcxo",
- "dsi0pllbyte",
+ "dsi0pll_byteclk_src",
+ "gpll0_out_aux",
"core_bi_pll_test_se",
};
@@ -129,7 +130,8 @@ static const struct parent_map gcc_parent_map_6[] = {
static const char * const gcc_parent_names_6[] = {
"bi_tcxo",
- "dsi0pllbyte",
+ "dsi0_phy_pll_out_byteclk",
+ "gpll0_out_aux",
"core_bi_pll_test_se",
};
@@ -209,7 +211,8 @@ static const struct parent_map gcc_parent_map_12[] = {
static const char * const gcc_parent_names_12[] = {
"bi_tcxo",
- "dsi0pll",
+ "dsi0pll_pclk_src",
+ "gpll0_out_aux",
"core_bi_pll_test_se",
};
@@ -243,14 +246,39 @@ static const char * const gcc_parent_names_14[] = {
static const struct parent_map gcc_parent_map_15[] = {
{ P_BI_TCXO, 0 },
+ { P_GPLL0_OUT_AUX, 2 },
{ P_CORE_BI_PLL_TEST_SE, 7 },
};
static const char * const gcc_parent_names_15[] = {
"bi_tcxo",
+ "gpll0_out_aux",
"core_bi_pll_test_se",
};
+static const struct parent_map gcc_parent_map_16[] = {
+ { P_XO, 0 },
+ { P_GPLL0_OUT_MAIN, 1 },
+ { P_CORE_BI_PLL_TEST_SE, 7 },
+};
+
+static const char * const gcc_parent_names_16[] = {
+ "cxo",
+ "gpll0_out_main",
+ "core_bi_pll_test_se",
+};
+
+static struct clk_fixed_factor cxo = {
+ .mult = 1,
+ .div = 1,
+ .hw.init = &(struct clk_init_data){
+ .name = "cxo",
+ .parent_names = (const char *[]){ "xo-board" },
+ .num_parents = 1,
+ .ops = &clk_fixed_factor_ops,
+ },
+};
+
static struct clk_alpha_pll gpll0_sleep_clk_src = {
.offset = 0x21000,
.regs = clk_alpha_pll_regs[CLK_ALPHA_PLL_TYPE_DEFAULT],
diff --git a/drivers/mtd/devices/msm_qpic_nand.c b/drivers/mtd/devices/msm_qpic_nand.c
index fda89bf0cba8..41fadf756ac3 100644
--- a/drivers/mtd/devices/msm_qpic_nand.c
+++ b/drivers/mtd/devices/msm_qpic_nand.c
@@ -4371,6 +4371,15 @@ static int msm_nand_bam_panic_notifier(struct notifier_block *this,
struct msm_nand_chip *chip = &info->nand_chip;
int err;
+ /* We shouldn't request for a new resource during panic
+ * as the cores and irq's were already in disabled state.
+ * So, check device runtime status before request for a
+ * resource (clock and bus).
+ */
+
+ if (pm_runtime_suspended(chip->dev))
+ return NOTIFY_DONE;
+
err = msm_nand_get_device(chip->dev);
if (err)
goto out;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 1dae459c7ba9..e3ce85f8d9f0 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2415,6 +2415,20 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
quirk_nvidia_ck804_pcie_aer_ext_cap);
+/*
+ * Quirk to limit QCOM RC MPS to 128 in case of Realtek 8168
+ * attaches.
+ */
+static void quirk_realtek_rc_mpss_limit(struct pci_dev *pdev)
+{
+ struct pci_dev *root_port = pcie_find_root_port(pdev);
+
+ if (root_port->vendor == PCI_VENDOR_ID_QCOM)
+ pcie_set_mps(root_port, 128);
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REALTEK, 0x8168,
+ quirk_realtek_rc_mpss_limit);
+
static void quirk_via_cx700_pci_parking_caching(struct pci_dev *dev)
{
/*
diff --git a/drivers/soc/qcom/boot_stats.c b/drivers/soc/qcom/boot_stats.c
index b94493faa7af..af4315625102 100644
--- a/drivers/soc/qcom/boot_stats.c
+++ b/drivers/soc/qcom/boot_stats.c
@@ -150,6 +150,13 @@ void place_marker(const char *name)
}
EXPORT_SYMBOL(place_marker);
+void update_marker(const char *name)
+{
+ destroy_marker(name);
+ place_marker(name);
+}
+EXPORT_SYMBOL(update_marker);
+
void destroy_marker(const char *name)
{
_destroy_boot_marker((char *) name);
@@ -217,7 +224,7 @@ static ssize_t bootkpi_writer(struct kobject *obj, struct kobj_attribute *attr,
return rc;
buf[rc] = '\0';
- place_marker(buf);
+ update_marker(buf);
return rc;
}
diff --git a/drivers/soc/qcom/memshare/msm_memshare.c b/drivers/soc/qcom/memshare/msm_memshare.c
index 6d1badcf1afd..43ca69072932 100644
--- a/drivers/soc/qcom/memshare/msm_memshare.c
+++ b/drivers/soc/qcom/memshare/msm_memshare.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include
@@ -104,7 +104,7 @@ static int check_client(int client_id, int proc, int request)
int i = 0, rc;
int found = DHMS_MEM_CLIENT_INVALID;
- for (i = 0; i < MAX_CLIENTS; i++) {
+ for (i = 0; i < num_clients; i++) {
if (memblock[i].client_id == client_id &&
memblock[i].peripheral == proc) {
found = i;
@@ -484,7 +484,7 @@ static void handle_alloc_generic_req(struct qmi_handle *handle,
return;
}
- for (i = 0; i < MAX_CLIENTS; i++) {
+ for (i = 0; i < num_clients; i++) {
if (memsh_child[i]->client_id == alloc_req->client_id) {
client_node = memsh_child[i];
dev_info(memsh_drv->dev,
@@ -577,7 +577,7 @@ static void handle_free_generic_req(struct qmi_handle *handle,
flag = 1;
}
- for (i = 0; i < MAX_CLIENTS; i++) {
+ for (i = 0; i < num_clients; i++) {
if (memsh_child[i]->client_id == free_req->client_id) {
client_node = memsh_child[i];
dev_info(memsh_drv->dev,
diff --git a/drivers/soc/qcom/msm_minidump.c b/drivers/soc/qcom/msm_minidump.c
index ac4c3b08e5b5..4b4b81647688 100644
--- a/drivers/soc/qcom/msm_minidump.c
+++ b/drivers/soc/qcom/msm_minidump.c
@@ -561,7 +561,7 @@ static int __init msm_minidump_init(void)
}
/*Check global minidump support initialization */
- if (!md_global_toc->md_toc_init) {
+ if (size < sizeof(*md_global_toc) || !md_global_toc->md_toc_init) {
pr_err("System Minidump TOC not initialized\n");
return -ENODEV;
}
diff --git a/drivers/soc/qcom/msm_subsystem_restart.c b/drivers/soc/qcom/msm_subsystem_restart.c
index 69ab25363295..707a882b9cf6 100644
--- a/drivers/soc/qcom/msm_subsystem_restart.c
+++ b/drivers/soc/qcom/msm_subsystem_restart.c
@@ -652,6 +652,11 @@ static int subsystem_shutdown(struct subsys_device *dev, void *data)
dev->crash_count++;
subsys_set_state(dev, SUBSYS_OFFLINE);
+#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
+ if (!strcmp(dev->desc->name, "modem"))
+ update_marker("M - Modem Stop");
+#endif
+
return 0;
}
diff --git a/drivers/soc/qcom/peripheral-loader.c b/drivers/soc/qcom/peripheral-loader.c
index 55b2e0bad42e..b7f17cc80d22 100644
--- a/drivers/soc/qcom/peripheral-loader.c
+++ b/drivers/soc/qcom/peripheral-loader.c
@@ -472,7 +472,10 @@ int pil_do_ramdump(struct pil_desc *desc,
if (ret)
pil_err(desc, "%s: Ramdump collection failed for subsys %s rc:%d\n",
__func__, desc->name, ret);
-
+#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
+ if (!strcmp(desc->name, "modem"))
+ update_marker("M - Modem Dump completed");
+#endif
if (desc->subsys_vmid > 0)
ret = pil_assign_mem_to_subsys(desc, priv->region_start,
(priv->region_end - priv->region_start));
@@ -870,7 +873,7 @@ static int pil_init_mmap(struct pil_desc *desc, const struct pil_mdt *mdt)
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
if (!strcmp(desc->name, "modem"))
- place_marker("M - Modem Image Start Loading");
+ update_marker("M - Modem Image Start Loading");
#endif
pil_info(desc, "loading from %pa to %pa\n", &priv->region_start,
@@ -1336,7 +1339,7 @@ int pil_boot(struct pil_desc *desc)
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
if (!strcmp(desc->name, "modem"))
- place_marker("M - Modem out of reset");
+ update_marker("M - Modem out of reset");
#endif
pil_info(desc, "Brought out of reset\n");
diff --git a/drivers/soc/qcom/slate_events_bridge.c b/drivers/soc/qcom/slate_events_bridge.c
index ebddd7c04b80..261be187ff50 100644
--- a/drivers/soc/qcom/slate_events_bridge.c
+++ b/drivers/soc/qcom/slate_events_bridge.c
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include
@@ -439,6 +440,10 @@ void seb_rx_msg(void *data, int len)
dev->seb_resp_cmplt = true;
wake_up(&dev->link_state_wait);
if (dev->wait_for_resp) {
+ if (len > SEB_GLINK_INTENT_SIZE) {
+ pr_err("Invalid seb rx buffer length\n");
+ return;
+ }
memcpy(dev->rx_buf, data, len);
} else {
/* Handle the event received from Slate */
diff --git a/drivers/soc/qcom/socinfo.c b/drivers/soc/qcom/socinfo.c
index 89b16a71793f..562f35ce68a4 100644
--- a/drivers/soc/qcom/socinfo.c
+++ b/drivers/soc/qcom/socinfo.c
@@ -680,6 +680,8 @@ static const struct soc_id soc_id[] = {
{ 450, "SHIMA" },
{ 454, "HOLI" },
{ 507, "BLAIR" },
+ { 565, "BLAIRP" },
+ { 628, "BLAIRP-XR" },
{ 486, "MONACO" },
{ 458, "SDXLEMUR" },
{ 483, "SDXLEMUR-SD"},
diff --git a/drivers/soc/qcom/subsys-pil-tz.c b/drivers/soc/qcom/subsys-pil-tz.c
index 61762f4f68d7..ddd30f512b0d 100644
--- a/drivers/soc/qcom/subsys-pil-tz.c
+++ b/drivers/soc/qcom/subsys-pil-tz.c
@@ -871,6 +871,10 @@ static int subsys_ramdump(int enable, const struct subsys_desc *subsys)
if (!enable)
return 0;
+#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
+ if (!strcmp(subsys->name, "modem"))
+ update_marker("M - Modem Dump start");
+#endif
return pil_do_ramdump(&d->desc, d->ramdump_dev, d->minidump_dev);
}
@@ -915,6 +919,10 @@ static irqreturn_t subsys_err_fatal_intr_handler (int irq, void *drv_data)
d->subsys_desc.name);
return IRQ_HANDLED;
}
+#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
+ if (!strcmp(d->subsys_desc.name, "modem"))
+ update_marker("M - Modem crash");
+#endif
subsys_set_crash_status(d->subsys, CRASH_STATUS_ERR_FATAL);
log_failure_reason(d);
subsystem_restart_dev(d->subsys);
diff --git a/drivers/usb/gadget/function/f_cdev.c b/drivers/usb/gadget/function/f_cdev.c
index 481783ea6968..f1044c29027a 100644
--- a/drivers/usb/gadget/function/f_cdev.c
+++ b/drivers/usb/gadget/function/f_cdev.c
@@ -1679,6 +1679,7 @@ static void usb_cser_notify_modem(void *fport, int ctrl_bits)
spin_lock_irqsave(&port->port_lock, flags);
port->cbits_to_modem = temp;
port->cbits_updated = true;
+ spin_unlock_irqrestore(&port->port_lock, flags);
/* if DTR is high, update latest modem info to laptop */
if (port->cbits_to_modem & TIOCM_DTR) {
@@ -1691,7 +1692,6 @@ static void usb_cser_notify_modem(void *fport, int ctrl_bits)
cser->send_modem_ctrl_bits(cser, cbits_to_laptop);
}
- spin_unlock_irqrestore(&port->port_lock, flags);
wake_up(&port->read_wq);
}
diff --git a/drivers/virt/haven/hh_rm_core.c b/drivers/virt/haven/hh_rm_core.c
index cb45cd65aad4..a473513ae678 100644
--- a/drivers/virt/haven/hh_rm_core.c
+++ b/drivers/virt/haven/hh_rm_core.c
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
*
*/
@@ -114,8 +115,8 @@ hh_rm_init_connection_buff(struct hh_rm_connection *connection,
if (!payload_size)
return 0;
- max_buf_size = (HH_MSGQ_MAX_MSG_SIZE_BYTES - hdr_size) *
- (hdr->fragments + 1);
+ max_buf_size = payload_size +
+ (hdr->fragments * HH_RM_MAX_MSG_SIZE_BYTES);
if (payload_size > max_buf_size) {
pr_err("%s: Payload size exceeds max buff size\n", __func__);
diff --git a/include/soc/qcom/boot_stats.h b/include/soc/qcom/boot_stats.h
index 4d34eace03d4..ba8b8e7de981 100644
--- a/include/soc/qcom/boot_stats.h
+++ b/include/soc/qcom/boot_stats.h
@@ -6,6 +6,7 @@
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
void place_marker(const char *name);
+void update_marker(const char *name);
void destroy_marker(const char *name);
unsigned long long msm_timer_get_sclk_ticks(void);
static inline int boot_marker_enabled(void) { return 1; }
@@ -13,6 +14,7 @@ static inline int boot_marker_enabled(void) { return 1; }
static inline int init_bootkpi(void) { return 0; }
static inline void exit_bootkpi(void) { };
static inline void place_marker(char *name) { };
+static inline void update_marker(char *name) { };
static inline void destroy_marker(const char *name) { };
static inline int boot_marker_enabled(void) { return 0; }
static inline unsigned long long msm_timer_get_sclk_ticks(void) { return -EINVAL; }
diff --git a/mm/mmap.c b/mm/mmap.c
index 56ba432e7f1f..23698963a8ab 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -3254,10 +3254,9 @@ void exit_mmap(struct mm_struct *mm)
(void)__oom_reap_task_mm(mm);
set_bit(MMF_OOM_SKIP, &mm->flags);
- down_write(&mm->mmap_sem);
- up_write(&mm->mmap_sem);
}
+ down_write(&mm->mmap_sem);
if (mm->locked_vm) {
vma = mm->mmap;
while (vma) {
@@ -3270,8 +3269,11 @@ void exit_mmap(struct mm_struct *mm)
arch_exit_mmap(mm);
vma = mm->mmap;
- if (!vma) /* Can happen if dup_mmap() received an OOM */
+ if (!vma) {
+ /* Can happen if dup_mmap() received an OOM */
+ up_write(&mm->mmap_sem);;
return;
+ }
lru_add_drain();
flush_cache_mm(mm);
@@ -3282,16 +3284,14 @@ void exit_mmap(struct mm_struct *mm)
free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING);
tlb_finish_mmu(&tlb, 0, -1);
- /*
- * Walk the list again, actually closing and freeing it,
- * with preemption enabled, without holding any MM locks.
- */
+ /* Walk the list again, actually closing and freeing it. */
while (vma) {
if (vma->vm_flags & VM_ACCOUNT)
nr_accounted += vma_pages(vma);
vma = remove_vma(vma);
cond_resched();
}
+ up_write(&mm->mmap_sem);
vm_unacct_memory(nr_accounted);
}