diff --git a/Documentation/arm64/silicon-errata.rst b/Documentation/arm64/silicon-errata.rst index f45c285eda28..08b6b402042a 100644 --- a/Documentation/arm64/silicon-errata.rst +++ b/Documentation/arm64/silicon-errata.rst @@ -113,6 +113,9 @@ stable kernels. | ARM | MMU-500 | #841119,826419 | N/A | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ +| ARM | GIC-700 | #2941627 | ARM64_ERRATUM_2941627 | ++----------------+-----------------+-----------------+-----------------------------+ ++----------------+-----------------+-----------------+-----------------------------+ | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 | +----------------+-----------------+-----------------+-----------------------------+ | Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 | diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index af1caade63e1..9d5dc942ce59 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -190,6 +190,7 @@ + @@ -270,6 +271,7 @@ + @@ -415,9 +417,11 @@ + + @@ -485,6 +489,7 @@ + @@ -593,6 +598,7 @@ + @@ -664,11 +670,13 @@ + + @@ -710,6 +718,7 @@ + @@ -1091,6 +1100,7 @@ + @@ -3294,6 +3304,7 @@ + @@ -3550,6 +3561,7 @@ + @@ -3686,6 +3698,7 @@ + @@ -3801,6 +3814,7 @@ + @@ -3998,6 +4012,7 @@ + @@ -5641,6 +5656,7 @@ + @@ -6487,9 +6503,11 @@ + + @@ -6557,6 +6575,7 @@ + @@ -6665,6 +6684,7 @@ + @@ -6736,11 +6756,13 @@ + + @@ -6782,6 +6804,7 @@ + @@ -6963,6 +6986,7 @@ + @@ -6992,6 +7016,7 @@ + @@ -7046,12 +7071,12 @@ - + - + - + @@ -7308,14 +7333,6 @@ - - - - - - - - @@ -7559,15 +7576,15 @@ - + - + - + - + @@ -7941,71 +7958,71 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8528,12 +8545,12 @@ - + - + - + @@ -8758,6 +8775,14 @@ + + + + + + + + @@ -8789,12 +8814,12 @@ - + - + - + @@ -9485,12 +9510,12 @@ - + - + - + @@ -9995,7 +10020,7 @@ - + @@ -10004,7 +10029,7 @@ - + @@ -10839,13 +10864,13 @@ - + - + - + @@ -12335,18 +12360,18 @@ - + - + - + - + - + @@ -12780,21 +12805,21 @@ - + - + - + - + - + - + @@ -12887,15 +12912,15 @@ - + - + - + - + @@ -13768,12 +13793,12 @@ - + - + - + @@ -14744,12 +14769,12 @@ - + - + - + @@ -15294,45 +15319,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -16563,12 +16588,12 @@ - + - + - + @@ -17376,69 +17401,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -17462,18 +17487,18 @@ - + - + - + - + - + @@ -18801,7 +18826,7 @@ - + @@ -19180,12 +19205,12 @@ - + - + - + @@ -22129,12 +22154,12 @@ - + - + - + @@ -22395,18 +22420,18 @@ - + - + - + - + - + @@ -23816,12 +23841,12 @@ - + - + - + @@ -24546,9 +24571,6 @@ - - - @@ -24972,27 +24994,27 @@ - + - + - + - + - + - + - + - + @@ -25304,7 +25326,7 @@ - + @@ -25421,27 +25443,27 @@ - + - + - + - + - + - + - + - + @@ -26838,12 +26860,12 @@ - + - + - + @@ -26865,15 +26887,15 @@ - + - + - + - + @@ -27219,18 +27241,18 @@ - + - + - + - + - + @@ -27435,12 +27457,12 @@ - + - + - + @@ -28226,6 +28248,7 @@ + @@ -28803,198 +28826,198 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -31153,12 +31176,12 @@ - + - + - + @@ -31666,12 +31689,12 @@ - + - + - + @@ -32063,7 +32086,7 @@ - + @@ -32216,36 +32239,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -34693,18 +34716,18 @@ - + - + - + - + - + @@ -36094,153 +36117,153 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -37209,12 +37232,12 @@ - + - + - + @@ -37436,12 +37459,12 @@ - + - + - + @@ -38733,18 +38756,18 @@ - + - + - + - + - + @@ -39657,60 +39680,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -42293,435 +42316,435 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -43202,7 +43225,7 @@ - + @@ -43953,7 +43976,7 @@ - + @@ -44656,23 +44679,7 @@ - - - - - - - - - - - - - - - - - + @@ -44734,7 +44741,7 @@ - + @@ -45375,15 +45382,15 @@ - + - + - + - + @@ -45422,9 +45429,6 @@ - - - @@ -49012,7 +49016,6 @@ - @@ -49915,33 +49918,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -52005,12 +52008,12 @@ - + - + - + @@ -52385,162 +52388,162 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -53970,13 +53973,6 @@ - - - - - - - @@ -54261,12 +54257,12 @@ - + - + - + @@ -54709,24 +54705,24 @@ - + - + - + - + - + - + - + @@ -56402,21 +56398,21 @@ - + - + - + - + - + - + @@ -56908,12 +56904,12 @@ - + - + - + @@ -57292,39 +57288,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -57581,75 +57577,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -59166,15 +59162,15 @@ - + - + - + - + @@ -61774,7 +61770,7 @@ - + @@ -63224,21 +63220,21 @@ - + - + - + - + - + - + @@ -63890,12 +63886,12 @@ - + - + - + @@ -65126,7 +65122,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -66575,33 +66590,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -66623,13 +66638,6 @@ - - - - - - - @@ -70679,7 +70687,7 @@ - + @@ -70767,7 +70775,7 @@ - + @@ -70799,12 +70807,12 @@ - + - + - + @@ -71629,17 +71637,7 @@ - - - - - - - - - - - + @@ -72514,45 +72512,45 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -73494,12 +73492,12 @@ - + - + - + @@ -75220,12 +75218,12 @@ - + - + - + @@ -76591,18 +76589,18 @@ - + - + - + - + - + @@ -78349,18 +78347,18 @@ - + - + - + - + - + @@ -78739,234 +78737,234 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -80452,108 +80450,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -80600,12 +80598,12 @@ - + - + - + @@ -81205,21 +81203,21 @@ - + - + - + - + - + - + @@ -81242,7 +81240,7 @@ - + @@ -81732,12 +81730,12 @@ - + - + - + @@ -82604,15 +82602,15 @@ - + - + - + - + @@ -83846,15 +83844,15 @@ - + - + - + - + @@ -84066,240 +84064,240 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -84811,18 +84809,18 @@ - + - + - + - + - + @@ -87549,12 +87547,12 @@ - + - + - + @@ -88419,9 +88417,9 @@ - + - + @@ -91431,7 +91429,6 @@ - @@ -92313,15 +92310,15 @@ - + - + - + - + @@ -92765,12 +92762,12 @@ - + - + - + @@ -93717,15 +93714,15 @@ - + - + - + - + @@ -94433,18 +94430,18 @@ - + - + - + - + - + @@ -96303,12 +96300,12 @@ - + - + - + @@ -96753,17 +96750,7 @@ - - - - - - - - - - - + @@ -97925,6 +97912,7 @@ + @@ -98073,9 +98061,9 @@ - + - + @@ -98340,18 +98328,18 @@ - + - + - + - + - + @@ -99137,15 +99125,15 @@ - + - + - + - + @@ -100099,15 +100087,15 @@ - + - + - + - + @@ -101178,12 +101166,12 @@ - + - + - + @@ -101592,18 +101580,18 @@ - + - + - + - + - + @@ -103199,12 +103187,6 @@ - - - - - - @@ -105776,18 +105758,18 @@ - + - + - + - + - + @@ -106032,12 +106014,12 @@ - + - + - + @@ -106611,7 +106593,29 @@ - + + + + + + + + + + + + + + + + + + + + + + + @@ -108747,12 +108751,12 @@ - + - + - + @@ -108797,30 +108801,30 @@ - + - + - + - + - + - + - + - + - + @@ -109537,6 +109541,13 @@ + + + + + + + @@ -110488,36 +110499,36 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -110756,12 +110767,12 @@ - + - + - + @@ -111422,7 +111433,6 @@ - @@ -112626,15 +112636,15 @@ - + - + - + - + @@ -112784,9 +112794,9 @@ - + - + @@ -113910,78 +113920,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -114000,7 +114010,7 @@ - + @@ -114809,18 +114819,18 @@ - + - + - + - + - + @@ -114929,33 +114939,33 @@ - + - + - + - + - + - + - + - + - + - + @@ -115648,15 +115658,15 @@ - + - + - + - + @@ -116496,9 +116506,9 @@ - + - + @@ -116878,16 +116888,16 @@ - - - - - + + + + + - - - + + + @@ -116895,14 +116905,14 @@ - - - + + + - - - + + + @@ -117543,9 +117553,9 @@ - - - + + + @@ -117611,8 +117621,14 @@ - - + + + + + + + + @@ -117647,21 +117663,21 @@ - - + + - - + + - - - + + + @@ -117670,8 +117686,8 @@ - - + + @@ -117681,11 +117697,11 @@ - - - - - + + + + + @@ -117713,13 +117729,13 @@ - - - - - - - + + + + + + + @@ -117732,12 +117748,12 @@ - - + + - - + + @@ -117775,9 +117791,9 @@ - - - + + + @@ -117872,8 +117888,8 @@ - - + + @@ -118021,9 +118037,9 @@ - - - + + + @@ -118067,6 +118083,12 @@ + + + + + + @@ -118086,8 +118108,8 @@ - - + + @@ -118106,10 +118128,10 @@ - - - - + + + + @@ -118144,9 +118166,9 @@ - - - + + + @@ -118255,10 +118277,10 @@ - - - - + + + + @@ -118972,12 +118994,18 @@ - + - + + + + + + + @@ -118992,6 +119020,12 @@ + + + + + + @@ -119016,22 +119050,22 @@ - - - - - - - + + + + + + + - - - - - - - + + + + + + + @@ -119048,10 +119082,10 @@ - - - - + + + + @@ -119358,9 +119392,9 @@ - - - + + + @@ -119443,6 +119477,12 @@ + + + + + + @@ -119591,10 +119631,10 @@ - - - - + + + + @@ -119769,10 +119809,10 @@ - - - - + + + + @@ -119878,30 +119918,30 @@ - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + @@ -120068,10 +120108,10 @@ - - - - + + + + @@ -120132,6 +120172,12 @@ + + + + + + @@ -120195,9 +120241,9 @@ - - - + + + @@ -120453,9 +120499,9 @@ - - - + + + @@ -120544,10 +120590,16 @@ - - - - + + + + + + + + + + @@ -120580,6 +120632,11 @@ + + + + + @@ -120603,9 +120660,9 @@ - - - + + + @@ -120781,10 +120838,10 @@ - - - - + + + + @@ -120849,6 +120906,11 @@ + + + + + @@ -121286,7 +121348,7 @@ - + @@ -121396,17 +121458,19 @@ - + + + - - + + - + @@ -121452,7 +121516,7 @@ - + @@ -121466,6 +121530,7 @@ + @@ -121488,7 +121553,7 @@ - + @@ -121516,7 +121581,7 @@ - + @@ -121533,10 +121598,10 @@ - - - - + + + + @@ -121564,7 +121629,7 @@ - + @@ -121574,6 +121639,7 @@ + @@ -121585,7 +121651,7 @@ - + @@ -121630,7 +121696,7 @@ - + @@ -121644,17 +121710,19 @@ - + + + - + @@ -121681,7 +121749,7 @@ - + @@ -121691,6 +121759,7 @@ + @@ -121763,10 +121832,10 @@ - - - - + + + + @@ -121796,16 +121865,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -121834,12 +121903,12 @@ - - - - - - + + + + + + @@ -121978,11 +122047,11 @@ - - - - - + + + + + @@ -122063,10 +122132,10 @@ - - - - + + + + @@ -122209,12 +122278,12 @@ - - - - - - + + + + + + @@ -122253,11 +122322,11 @@ - - - - - + + + + + @@ -122303,9 +122372,9 @@ - - - + + + @@ -122336,31 +122405,31 @@ - - + + - - - - + + + + - - - + + + - - - + + + - - + + - + @@ -122414,13 +122483,13 @@ - - - - - - - + + + + + + + @@ -122434,12 +122503,12 @@ - - - - - - + + + + + + @@ -122691,17 +122760,17 @@ - - + + - - + + - - - + + + @@ -122748,13 +122817,13 @@ - - + + - - - + + + @@ -122762,9 +122831,9 @@ - - - + + + @@ -123406,6 +123475,11 @@ + + + + + @@ -123511,130 +123585,130 @@ - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - - - - - + + + + + + - - - - - - + + + + + + + - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + @@ -123686,17 +123760,17 @@ - - - + + + - - + + - - + + @@ -123763,9 +123837,9 @@ - - - + + + @@ -124578,8 +124652,8 @@ - - + + @@ -124614,9 +124688,9 @@ - - - + + + @@ -124954,9 +125028,9 @@ - - - + + + @@ -125092,14 +125166,14 @@ - - + + - - - - + + + + @@ -125136,8 +125210,8 @@ - - + + @@ -125145,13 +125219,13 @@ - - + + - - - + + + @@ -125190,12 +125264,12 @@ - - - - - - + + + + + + @@ -125204,20 +125278,20 @@ - - - + + + - - - + + + - - - - + + + + @@ -125250,9 +125324,9 @@ - - - + + + @@ -125286,13 +125360,13 @@ - - + + - - - + + + @@ -125385,14 +125459,14 @@ - - - - + + + + - - + + @@ -125411,9 +125485,9 @@ - - - + + + @@ -125447,13 +125521,13 @@ - - + + - - - + + + @@ -125859,16 +125933,16 @@ - - - - + + + + - - - - + + + + @@ -125903,9 +125977,9 @@ - - - + + + @@ -125937,9 +126011,9 @@ - - - + + + @@ -126283,19 +126357,19 @@ - - + + - - - - + + + + - - - + + + @@ -126442,8 +126516,8 @@ - - + + @@ -126556,19 +126630,19 @@ - - - + + + - - - + + + - - - + + + @@ -126618,8 +126692,8 @@ - - + + @@ -127285,15 +127359,15 @@ - - - + + + - - - - + + + + @@ -128172,8 +128246,8 @@ - - + + @@ -128188,7 +128262,7 @@ - + @@ -128413,8 +128487,8 @@ - - + + @@ -128794,24 +128868,24 @@ - - - + + + - - - + + + - - - + + + - - - + + + @@ -128819,9 +128893,9 @@ - - - + + + @@ -130026,8 +130100,8 @@ - - + + @@ -130071,27 +130145,27 @@ - - + + - + - - + + - - + + - - + + @@ -130986,16 +131060,16 @@ - - - - + + + + - - - - + + + + @@ -131628,10 +131702,10 @@ - - - - + + + + @@ -131684,8 +131758,8 @@ - - + + @@ -132007,8 +132081,8 @@ - - + + @@ -132449,14 +132523,14 @@ - - - + + + - - - + + + @@ -132501,8 +132575,8 @@ - - + + @@ -132527,9 +132601,9 @@ - - - + + + @@ -132572,15 +132646,15 @@ - + - - + + - - + + @@ -132664,8 +132738,8 @@ - - + + @@ -134051,8 +134125,8 @@ - - + + @@ -134662,12 +134736,12 @@ - - - - - - + + + + + + @@ -135013,6 +135087,10 @@ + + + + @@ -135176,7 +135254,7 @@ - + @@ -135531,119 +135609,119 @@ - - - + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - + - + - - - - - + + + + - - - - + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -135816,9 +135894,9 @@ - - - + + + @@ -136074,18 +136152,18 @@ - - - + + + - - - + + + - - + + @@ -136094,10 +136172,10 @@ - - - - + + + + @@ -136307,10 +136385,17 @@ - - + + + + + + + + + @@ -136319,7 +136404,7 @@ - + @@ -136339,7 +136424,7 @@ - + @@ -136964,6 +137049,11 @@ + + + + + @@ -137015,8 +137105,8 @@ - - + + @@ -137115,16 +137205,16 @@ - - + + - - + + - - + + @@ -137135,11 +137225,11 @@ - - - - - + + + + + @@ -137147,9 +137237,9 @@ - - - + + + @@ -137157,27 +137247,27 @@ - - + + - - - + + + - - - + + + - - + + - - + + @@ -137186,16 +137276,16 @@ - - - + + + - - - - - + + + + + @@ -137203,9 +137293,9 @@ - - - + + + @@ -137213,55 +137303,55 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + @@ -137269,43 +137359,43 @@ - - - - + + + + - - + + - - - + + + - - + + - - - - + + + + - - - + + + - - - + + + @@ -137317,79 +137407,79 @@ - - + + - - + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - - - - + + + + + @@ -137410,12 +137500,12 @@ - - + + - - + + @@ -137425,21 +137515,21 @@ - - + + - - + + - - - + + + @@ -137448,26 +137538,26 @@ - - - + + + - - - - + + + + - - - + + + - - - - + + + + @@ -137558,6 +137648,9 @@ + + + @@ -137725,9 +137818,9 @@ - - - + + + @@ -137792,19 +137885,19 @@ - - - - + + + + - - - + + + @@ -138549,10 +138642,11 @@ - - + + + @@ -138579,6 +138673,13 @@ + + + + + + + @@ -138593,9 +138694,9 @@ - - - + + + @@ -138744,10 +138845,10 @@ - - - - + + + + @@ -139339,8 +139440,8 @@ - - + + @@ -139371,8 +139472,8 @@ - - + + @@ -140490,95 +140591,95 @@ - - - - + + + + - - - + + + - - + + - - - + + + - - - - - + + + + + - - + + - - - - + + + + - + - - - - + + + + - - + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + @@ -140854,8 +140955,8 @@ - - + + @@ -141079,7 +141180,7 @@ - + @@ -141096,7 +141197,7 @@ - + @@ -141115,8 +141216,8 @@ - - + + @@ -141128,7 +141229,7 @@ - + @@ -141152,20 +141253,20 @@ - - + + - - + + - - + + - - + + @@ -141226,34 +141327,34 @@ - - - + + + - - - + + + - - - - + + + + - - + + - - - - + + + + @@ -141321,12 +141422,12 @@ - - + + - - + + @@ -141373,17 +141474,17 @@ - - - + + + - - + + - - + + @@ -141407,8 +141508,8 @@ - - + + @@ -141417,18 +141518,18 @@ - - - - - + + + + + - - - - - + + + + + @@ -141446,18 +141547,18 @@ - - - + + + - - - - - - - + + + + + + + @@ -141477,65 +141578,65 @@ - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - - + + + + + + + + @@ -141544,29 +141645,29 @@ - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + @@ -141574,34 +141675,34 @@ - - + + - - - + + + - - + + - - + + - - - + + + @@ -141609,60 +141710,60 @@ - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - - - + + + + - - - + + + @@ -141704,24 +141805,24 @@ - - - - + + + + - - + + - - - + + + - - - + + + @@ -141734,10 +141835,10 @@ - - - - + + + + @@ -141746,24 +141847,24 @@ - - - + + + - - - + + + - - - - + + + + @@ -141771,34 +141872,34 @@ - - - - + + + + - - - - + + + + - - - + + + - - + + - - + + - - - + + + @@ -142095,6 +142196,7 @@ + @@ -142327,7 +142429,7 @@ - + @@ -142530,11 +142632,11 @@ - - - - - + + + + + @@ -142601,38 +142703,38 @@ - - + + - - + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + @@ -142703,8 +142805,8 @@ - - + + @@ -142723,23 +142825,23 @@ - - + + - - - - - + + + + + - - + + - - + + @@ -142826,8 +142928,8 @@ - - + + @@ -143309,49 +143411,49 @@ - - + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - + + - - + + - - - + + + @@ -143362,12 +143464,12 @@ - - + + - - + + @@ -143378,9 +143480,9 @@ - - - + + + @@ -143704,8 +143806,8 @@ - - + + @@ -143761,7 +143863,7 @@ - + @@ -143779,7 +143881,7 @@ - + @@ -143846,8 +143948,8 @@ - - + + @@ -143866,9 +143968,9 @@ - - - + + + @@ -143923,9 +144025,9 @@ - - - + + + @@ -143939,10 +144041,10 @@ - - - - + + + + @@ -144015,9 +144117,9 @@ - - - + + + @@ -144058,7 +144160,7 @@ - + @@ -144934,9 +145036,9 @@ - - - + + + @@ -145225,7 +145327,7 @@ - + @@ -145498,17 +145600,17 @@ - - + + - - - + + + - - + + @@ -145827,7 +145929,7 @@ - + @@ -145859,18 +145961,18 @@ - - - + + + - - - + + + @@ -145879,8 +145981,8 @@ - - + + @@ -145903,26 +146005,26 @@ - - - + + + - - + + - + - + - + @@ -146162,34 +146264,34 @@ - - + + - - - + + + - - - + + + - - - - - - - - - + + + + + + + + + - - - + + + @@ -146245,21 +146347,21 @@ - - + + - - + + - - + + - - - + + + @@ -146267,36 +146369,36 @@ - - - + + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - + + @@ -146407,12 +146509,12 @@ - - + + - - + + @@ -146673,9 +146775,9 @@ - - - + + + @@ -146943,22 +147045,22 @@ - - + + - - - - + + + + - - + + @@ -146968,114 +147070,119 @@ - - + + - - + + - - + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - - - + + + + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - - - - + + + - - + + + + + + + - - + + + + + + @@ -147677,21 +147784,21 @@ - - + + - - + + - - - + + + @@ -147738,12 +147845,12 @@ - - + + - - + + @@ -147813,17 +147920,17 @@ - - - - - + + + + + - - - - + + + + @@ -148075,20 +148182,20 @@ - - - + + + - - - - - + + + + + @@ -148179,8 +148286,8 @@ - - + + @@ -148202,8 +148309,8 @@ - - + + @@ -148314,9 +148421,9 @@ - - - + + + @@ -148398,8 +148505,8 @@ - - + + @@ -148414,8 +148521,8 @@ - - + + @@ -150153,7 +150260,7 @@ - + @@ -150244,7 +150351,7 @@ - + @@ -150391,27 +150498,27 @@ - - - + + + - - - + + + - - - + + + - - + + @@ -150529,15 +150636,15 @@ - - - - + + + + - - - + + + @@ -150561,19 +150668,19 @@ - - - + + + - - - - + + + + @@ -150586,13 +150693,13 @@ - - - + + + - - + + @@ -150606,13 +150713,13 @@ - - + + - - - + + + @@ -150627,22 +150734,22 @@ - - - - - - + + + + + + - - - + + + - - - + + + @@ -150654,8 +150761,8 @@ - - + + @@ -150663,8 +150770,8 @@ - - + + @@ -150672,9 +150779,9 @@ - - - + + + @@ -150682,13 +150789,13 @@ - - - + + + - - + + diff --git a/android/abi_gki_aarch64_moto b/android/abi_gki_aarch64_moto new file mode 100644 index 000000000000..71a0d1b1e3d7 --- /dev/null +++ b/android/abi_gki_aarch64_moto @@ -0,0 +1,6 @@ +[abi_symbol_list] + swp_swap_info + __traceiter_android_vh_skip_swapcache + __traceiter_android_vh_tune_mmap_readaround + __tracepoint_android_vh_skip_swapcache + __tracepoint_android_vh_tune_mmap_readaround diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 51738dc7cd4d..aef23e847499 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -1357,6 +1357,7 @@ irq_work_queue irq_work_queue_on irq_work_sync + is_ashmem_file is_dma_buf_file isolate_and_split_free_page isolate_anon_lru_page @@ -1549,6 +1550,7 @@ __memcat_p memcg_kmem_enabled_key mem_cgroup_from_id + mem_cgroup_update_lru_size memchr memchr_inv memcmp @@ -1616,6 +1618,7 @@ mmc_send_tuning mmput mod_delayed_work_on + __mod_lruvec_state mod_node_page_state mod_timer mod_timer_pending @@ -1815,6 +1818,7 @@ __page_mapcount page_mapping __page_pinner_migration_failed + page_referenced page_symlink page_to_lruvec panic @@ -2253,6 +2257,7 @@ rndis_set_param_vendor rndis_signal_connect rndis_uninit + root_mem_cgroup root_task_group round_jiffies round_jiffies_relative @@ -2879,6 +2884,7 @@ __traceiter_android_vh_process_killed __traceiter_android_vh_record_mutex_lock_starttime __traceiter_android_vh_record_pcpu_rwsem_starttime + __traceiter_android_vh_percpu_rwsem_wq_add __traceiter_android_vh_record_rtmutex_lock_starttime __traceiter_android_vh_record_rwsem_lock_starttime __traceiter_android_vh_remove_vmalloc_stack @@ -3146,6 +3152,7 @@ __tracepoint_android_vh_process_killed __tracepoint_android_vh_record_mutex_lock_starttime __tracepoint_android_vh_record_pcpu_rwsem_starttime + __tracepoint_android_vh_percpu_rwsem_wq_add __tracepoint_android_vh_record_rtmutex_lock_starttime __tracepoint_android_vh_record_rwsem_lock_starttime __tracepoint_android_vh_remove_vmalloc_stack diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index b269c937101c..9079fc8ae46d 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1659,6 +1659,7 @@ overflowuid page_endio page_mapping + page_owner_inited __page_pinner_migration_failed __pagevec_release panic @@ -2187,6 +2188,7 @@ set_normalized_timespec64 set_page_dirty_lock __SetPageMovable + __set_page_owner set_task_cpu set_user_nice sg_alloc_table @@ -3041,6 +3043,7 @@ wait_for_completion_interruptible_timeout wait_for_completion_killable wait_for_completion_timeout + wait_for_device_probe wait_on_page_bit __wait_rcu_gp wait_woken diff --git a/android/abi_gki_aarch64_transsion b/android/abi_gki_aarch64_transsion index 26f1a25320be..558f6f7dcac7 100644 --- a/android/abi_gki_aarch64_transsion +++ b/android/abi_gki_aarch64_transsion @@ -9,12 +9,16 @@ swap_alloc_cluster swapcache_free_entries swap_type_to_swap_info + blkcg_schedule_throttle __traceiter_android_rvh_alloc_si __traceiter_android_rvh_alloc_swap_slot_cache __traceiter_android_rvh_drain_slots_cache_cpu __traceiter_android_rvh_free_swap_slot __traceiter_android_rvh_get_swap_page __traceiter_android_rvh_handle_pte_fault_end + __traceiter_android_vh_add_to_avail_list + __traceiter_android_vh_del_from_avail_list + __traceiter_android_vh___cgroup_throttle_swaprate __traceiter_android_vh_account_swap_pages __traceiter_android_vh_alloc_si __traceiter_android_vh_alloc_swap_slot_cache @@ -28,6 +32,7 @@ __traceiter_android_vh_get_swap_page __traceiter_android_vh_handle_pte_fault_end __traceiter_android_vh_inactive_is_low + __traceiter_android_vh_swap_avail_heads_init __traceiter_android_vh_init_swap_info_struct __traceiter_android_vh_migrate_page_states __traceiter_android_vh_page_isolated_for_reclaim @@ -46,6 +51,9 @@ __tracepoint_android_rvh_free_swap_slot __tracepoint_android_rvh_get_swap_page __tracepoint_android_rvh_handle_pte_fault_end + __tracepoint_android_vh_add_to_avail_list + __tracepoint_android_vh_del_from_avail_list + __tracepoint_android_vh___cgroup_throttle_swaprate __tracepoint_android_vh_account_swap_pages __tracepoint_android_vh_alloc_si __tracepoint_android_vh_alloc_swap_slot_cache @@ -59,6 +67,7 @@ __tracepoint_android_vh_get_swap_page __tracepoint_android_vh_handle_pte_fault_end __tracepoint_android_vh_inactive_is_low + __tracepoint_android_vh_swap_avail_heads_init __tracepoint_android_vh_init_swap_info_struct __tracepoint_android_vh_migrate_page_states __tracepoint_android_vh_page_isolated_for_reclaim diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi index 67c83533d643..b3b2d86330fe 100644 --- a/android/abi_gki_aarch64_xiaomi +++ b/android/abi_gki_aarch64_xiaomi @@ -62,6 +62,14 @@ ufshcd_update_evt_hist utf16s_to_utf8s wait_for_completion_io_timeout + nr_free_buffer_pages + mmc_set_blocklen + +#required by mq-deadline module + blk_mq_debugfs_rq_show + seq_list_start + seq_list_next + __blk_mq_debugfs_rq_show #required by cs35l41 module regcache_drop_region diff --git a/android/abi_gki_aarch64_zebra b/android/abi_gki_aarch64_zebra new file mode 100644 index 000000000000..59367a252ab5 --- /dev/null +++ b/android/abi_gki_aarch64_zebra @@ -0,0 +1,4 @@ +[abi_symbol_list] + __traceiter_android_vh_wakeup_bypass + __tracepoint_android_vh_wakeup_bypass + tty_termios_hw_change diff --git a/arch/arm/include/asm/arch_gicv3.h b/arch/arm/include/asm/arch_gicv3.h index 413abfb42989..59ec3a6845f7 100644 --- a/arch/arm/include/asm/arch_gicv3.h +++ b/arch/arm/include/asm/arch_gicv3.h @@ -48,6 +48,7 @@ static inline u32 read_ ## a64(void) \ return read_sysreg(a32); \ } \ +CPUIF_MAP(ICC_EOIR1, ICC_EOIR1_EL1) CPUIF_MAP(ICC_PMR, ICC_PMR_EL1) CPUIF_MAP(ICC_AP0R0, ICC_AP0R0_EL1) CPUIF_MAP(ICC_AP0R1, ICC_AP0R1_EL1) diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts index 1e889ca932e4..75731fe9fd7a 100644 --- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts @@ -85,6 +85,14 @@ }; }; + reserved-memory { + /* Cont splash region set up by the bootloader */ + cont_splash_mem: framebuffer@9d400000 { + reg = <0x0 0x9d400000 0x0 0x2400000>; + no-map; + }; + }; + lt9611_1v8: lt9611-vdd18-regulator { compatible = "regulator-fixed"; regulator-name = "LT9611_1V8"; diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index d7054c186845..10cc2e6fd6c6 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -1794,6 +1794,7 @@ void blkcg_schedule_throttle(struct request_queue *q, bool use_memdelay) current->use_memdelay = use_memdelay; set_notify_resume(current); } +EXPORT_SYMBOL_GPL(blkcg_schedule_throttle); /** * blkcg_add_delay - add delay to this blkg diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64 index b0971e2a0c4f..ba3c113c45cf 100644 --- a/build.config.gki.aarch64 +++ b/build.config.gki.aarch64 @@ -22,6 +22,7 @@ android/abi_gki_aarch64_hikey960 android/abi_gki_aarch64_honor android/abi_gki_aarch64_imx android/abi_gki_aarch64_lenovo +android/abi_gki_aarch64_moto android/abi_gki_aarch64_mtk android/abi_gki_aarch64_nothing android/abi_gki_aarch64_oplus @@ -31,6 +32,7 @@ android/abi_gki_aarch64_unisoc android/abi_gki_aarch64_virtual_device android/abi_gki_aarch64_vivo android/abi_gki_aarch64_xiaomi +android/abi_gki_aarch64_zebra android/abi_gki_aarch64_asus android/abi_gki_aarch64_transsion android/abi_gki_aarch64_tuxera diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 815c5efb5c22..7b945c3cce28 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -106,6 +106,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_wakeup_ilocked); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_send_sig_info); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_process_killed); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_killed_process); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_percpu_rwsem_wq_add); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_finished); @@ -468,12 +469,16 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_free_swap_slot); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_swap_slot); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_get_swap_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_swap_page); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_add_to_avail_list); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_del_from_avail_list); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh___cgroup_throttle_swaprate); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_or_pageout); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_isolated_for_reclaim); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_inactive_is_low); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snapshot_refaults); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_account_swap_pages); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_unuse_swap_page); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_swap_avail_heads_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_swap_info_struct); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_swapinfo); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_alloc_si); @@ -492,6 +497,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dma_buf_stats_teardown); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_or_pageout_abort); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_compact_finished); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wakeup_bypass); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_skip_swapcache); /* * For type visibility */ diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c index 12bbb5169440..146c8934dcf7 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c @@ -960,25 +960,21 @@ static bool etm4_init_iomem_access(struct etmv4_drvdata *drvdata, struct csdev_access *csa) { u32 devarch = readl_relaxed(drvdata->base + TRCDEVARCH); - u32 idr1 = readl_relaxed(drvdata->base + TRCIDR1); /* * All ETMs must implement TRCDEVARCH to indicate that - * the component is an ETMv4. To support any broken - * implementations we fall back to TRCIDR1 check, which - * is not really reliable. + * the component is an ETMv4. Even though TRCIDR1 also + * contains the information, it is part of the "Trace" + * register and must be accessed with the OSLK cleared, + * with MMIO. But we cannot touch the OSLK until we are + * sure this is an ETM. So rely only on the TRCDEVARCH. */ - if ((devarch & ETM_DEVARCH_ID_MASK) == ETM_DEVARCH_ETMv4x_ARCH) { - drvdata->arch = etm_devarch_to_arch(devarch); - } else { - pr_warn("CPU%d: ETM4x incompatible TRCDEVARCH: %x, falling back to TRCIDR1\n", - smp_processor_id(), devarch); - - if (ETM_TRCIDR1_ARCH_MAJOR(idr1) != ETM_TRCIDR1_ARCH_ETMv4) - return false; - drvdata->arch = etm_trcidr_to_arch(idr1); + if ((devarch & ETM_DEVARCH_ID_MASK) != ETM_DEVARCH_ETMv4x_ARCH) { + pr_warn_once("TRCDEVARCH doesn't match ETMv4 architecture\n"); + return false; } + drvdata->arch = etm_devarch_to_arch(devarch); *csa = CSDEV_ACCESS_IOMEM(drvdata->base); return true; } diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h index 3c4d69b096ca..1ac4a0632a4b 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x.h +++ b/drivers/hwtracing/coresight/coresight-etm4x.h @@ -668,14 +668,12 @@ * TRCDEVARCH - CoreSight architected register * - Bits[15:12] - Major version * - Bits[19:16] - Minor version - * TRCIDR1 - ETM architected register - * - Bits[11:8] - Major version - * - Bits[7:4] - Minor version - * We must rely on TRCDEVARCH for the version information, - * however we don't want to break the support for potential - * old implementations which might not implement it. Thus - * we fall back to TRCIDR1 if TRCDEVARCH is not implemented - * for memory mapped components. + * + * We must rely only on TRCDEVARCH for the version information. Even though, + * TRCIDR1 also provides the architecture version, it is a "Trace" register + * and as such must be accessed only with Trace power domain ON. This may + * not be available at probe time. + * * Now to make certain decisions easier based on the version * we use an internal representation of the version in the * driver, as follows : @@ -701,12 +699,6 @@ static inline u8 etm_devarch_to_arch(u32 devarch) ETM_DEVARCH_REVISION(devarch)); } -static inline u8 etm_trcidr_to_arch(u32 trcidr1) -{ - return ETM_ARCH_VERSION(ETM_TRCIDR1_ARCH_MAJOR(trcidr1), - ETM_TRCIDR1_ARCH_MINOR(trcidr1)); -} - enum etm_impdef_type { ETM4_IMPDEF_HISI_CORE_COMMIT, ETM4_IMPDEF_FEATURE_MAX, diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index e14a57e5e4a8..192a9b1be185 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -51,6 +51,8 @@ struct redist_region { bool single_redist; }; +static DEFINE_STATIC_KEY_FALSE(gic_arm64_2941627_erratum); + static struct gic_chip_data gic_data __read_mostly; static DEFINE_STATIC_KEY_TRUE(supports_deactivate_key); @@ -542,9 +544,39 @@ static void gic_irq_nmi_teardown(struct irq_data *d) gic_irq_set_prio(d, GICD_INT_DEF_PRI); } +static bool gic_arm64_erratum_2941627_needed(struct irq_data *d) +{ + enum gic_intid_range range; + + if (!static_branch_unlikely(&gic_arm64_2941627_erratum)) + return false; + + range = get_intid_range(d); + + /* + * The workaround is needed if the IRQ is an SPI and + * the target cpu is different from the one we are + * executing on. + */ + return (range == SPI_RANGE || range == ESPI_RANGE) && + !cpumask_test_cpu(raw_smp_processor_id(), + irq_data_get_effective_affinity_mask(d)); +} + static void gic_eoi_irq(struct irq_data *d) { - gic_write_eoir(gic_irq(d)); + write_gicreg(gic_irq(d), ICC_EOIR1_EL1); + isb(); + + if (gic_arm64_erratum_2941627_needed(d)) { + /* + * Make sure the GIC stream deactivate packet + * issued by ICC_EOIR1_EL1 has completed before + * deactivating through GICD_IACTIVER. + */ + dsb(sy); + gic_poke_irq(d, GICD_ICACTIVER); + } } static void gic_eoimode1_eoi_irq(struct irq_data *d) @@ -555,7 +587,11 @@ static void gic_eoimode1_eoi_irq(struct irq_data *d) */ if (gic_irq(d) >= 8192 || irqd_is_forwarded_to_vcpu(d)) return; - gic_write_dir(gic_irq(d)); + + if (!gic_arm64_erratum_2941627_needed(d)) + gic_write_dir(gic_irq(d)); + else + gic_poke_irq(d, GICD_ICACTIVER); } static int gic_set_type(struct irq_data *d, unsigned int type) @@ -1642,6 +1678,12 @@ static bool gic_enable_quirk_hip06_07(void *data) return false; } +static bool gic_enable_quirk_arm64_2941627(void *data) +{ + static_branch_enable(&gic_arm64_2941627_erratum); + return true; +} + static const struct gic_quirk gic_quirks[] = { { .desc = "GICv3: Qualcomm MSM8996 broken firmware", @@ -1678,6 +1720,25 @@ static const struct gic_quirk gic_quirks[] = { .mask = 0xe8f00fff, .init = gic_enable_quirk_cavium_38539, }, + { + /* + * GIC-700: 2941627 workaround - IP variant [0,1] + * + */ + .desc = "GICv3: ARM64 erratum 2941627", + .iidr = 0x0400043b, + .mask = 0xff0e0fff, + .init = gic_enable_quirk_arm64_2941627, + }, + { + /* + * GIC-700: 2941627 workaround - IP variant [2] + */ + .desc = "GICv3: ARM64 erratum 2941627", + .iidr = 0x0402043b, + .mask = 0xff0f0fff, + .init = gic_enable_quirk_arm64_2941627, + }, { } }; diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index 3693ad9f4521..94c963462d74 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -2179,8 +2179,10 @@ static void gsm_cleanup_mux(struct gsm_mux *gsm, bool disc) /* Free up any link layer users and finally the control channel */ for (i = NUM_DLCI - 1; i >= 0; i--) - if (gsm->dlci[i]) + if (gsm->dlci[i]) { gsm_dlci_release(gsm->dlci[i]); + gsm->dlci[i] = NULL; + } mutex_unlock(&gsm->mutex); /* Now wipe the queues */ tty_ldisc_flush(gsm->tty); diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 7df7aabe7fe8..ec5fa4660b0f 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1741,6 +1741,11 @@ static int dwc3_remove(struct platform_device *pdev) pm_runtime_allow(&pdev->dev); pm_runtime_disable(&pdev->dev); pm_runtime_put_noidle(&pdev->dev); + /* + * HACK: Clear the driver data, which is currently accessed by parent + * glue drivers, before allowing the parent to suspend. + */ + platform_set_drvdata(pdev, NULL); pm_runtime_set_suspended(&pdev->dev); dwc3_free_event_buffers(dwc); diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index eb0d6b4c2f71..5388c6e6ba83 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2512,29 +2512,17 @@ static int __dwc3_gadget_start(struct dwc3 *dwc); static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc) { unsigned long flags; + int ret; spin_lock_irqsave(&dwc->lock, flags); dwc->connected = false; /* - * Per databook, when we want to stop the gadget, if a control transfer - * is still in process, complete it and get the core into setup phase. + * Attempt to end pending SETUP status phase, and not wait for the + * function to do so. */ - if (dwc->ep0state != EP0_SETUP_PHASE) { - int ret; - - if (dwc->delayed_status) - dwc3_ep0_send_delayed_status(dwc); - - reinit_completion(&dwc->ep0_in_setup); - - spin_unlock_irqrestore(&dwc->lock, flags); - ret = wait_for_completion_timeout(&dwc->ep0_in_setup, - msecs_to_jiffies(DWC3_PULL_UP_TIMEOUT)); - spin_lock_irqsave(&dwc->lock, flags); - if (ret == 0) - dev_warn(dwc->dev, "timed out waiting for SETUP phase\n"); - } + if (dwc->delayed_status) + dwc3_ep0_send_delayed_status(dwc); /* * In the Synopsys DesignWare Cores USB3 Databook Rev. 3.30a @@ -2544,9 +2532,35 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc) * bit. */ dwc3_stop_active_transfers(dwc); - __dwc3_gadget_stop(dwc); spin_unlock_irqrestore(&dwc->lock, flags); + /* + * Per databook, when we want to stop the gadget, if a control transfer + * is still in process, complete it and get the core into setup phase. + * In case the host is unresponsive to a SETUP transaction, forcefully + * stall the transfer, and move back to the SETUP phase, so that any + * pending endxfers can be executed. + */ + if (dwc->ep0state != EP0_SETUP_PHASE) { + reinit_completion(&dwc->ep0_in_setup); + + ret = wait_for_completion_timeout(&dwc->ep0_in_setup, + msecs_to_jiffies(DWC3_PULL_UP_TIMEOUT)); + if (ret == 0) { + unsigned int dir; + + dev_warn(dwc->dev, "wait for SETUP phase timed out\n"); + spin_lock_irqsave(&dwc->lock, flags); + dir = !!dwc->ep0_expect_in; + if (dwc->ep0state == EP0_DATA_PHASE) + dwc3_ep0_end_control_data(dwc, dwc->eps[dir]); + else + dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]); + dwc3_ep0_stall_and_restart(dwc); + spin_unlock_irqrestore(&dwc->lock, flags); + } + } + /* * Note: if the GEVNTCOUNT indicates events in the event buffer, the * driver needs to acknowledge them before the controller can halt. @@ -2554,7 +2568,19 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc) * remaining event generated by the controller while polling for * DSTS.DEVCTLHLT. */ - return dwc3_gadget_run_stop(dwc, false, false); + ret = dwc3_gadget_run_stop(dwc, false, false); + + /* + * Stop the gadget after controller is halted, so that if needed, the + * events to update EP0 state can still occur while the run/stop + * routine polls for the halted state. DEVTEN is cleared as part of + * gadget stop. + */ + spin_lock_irqsave(&dwc->lock, flags); + __dwc3_gadget_stop(dwc); + spin_unlock_irqrestore(&dwc->lock, flags); + + return ret; } static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index b4efe3e6d88b..1df649cc611b 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -277,6 +277,26 @@ static void inc_enq(struct xhci_hcd *xhci, struct xhci_ring *ring, trace_xhci_inc_enq(ring); } +static int xhci_num_trbs_to(struct xhci_segment *start_seg, union xhci_trb *start, + struct xhci_segment *end_seg, union xhci_trb *end, + unsigned int num_segs) +{ + union xhci_trb *last_on_seg; + int num = 0; + int i = 0; + + do { + if (start_seg == end_seg && end >= start) + return num + (end - start); + last_on_seg = &start_seg->trbs[TRBS_PER_SEGMENT - 1]; + num += last_on_seg - start; + start_seg = start_seg->next; + start = start_seg->trbs; + } while (i++ <= num_segs); + + return -EINVAL; +} + /* * Check to see if there's room to enqueue num_trbs on the ring and make sure * enqueue pointer will not advance into dequeue segment. See rules above. @@ -2209,6 +2229,7 @@ static int finish_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, u32 trb_comp_code) { struct xhci_ep_ctx *ep_ctx; + int trbs_freed; ep_ctx = xhci_get_ep_ctx(xhci, ep->vdev->out_ctx, ep->ep_index); @@ -2280,9 +2301,15 @@ static int finish_td(struct xhci_hcd *xhci, struct xhci_virt_ep *ep, } /* Update ring dequeue pointer */ + trbs_freed = xhci_num_trbs_to(ep_ring->deq_seg, ep_ring->dequeue, + td->last_trb_seg, td->last_trb, + ep_ring->num_segs); + if (trbs_freed < 0) + xhci_dbg(xhci, "Failed to count freed trbs at TD finish\n"); + else + ep_ring->num_trbs_free += trbs_freed; ep_ring->dequeue = td->last_trb; ep_ring->deq_seg = td->last_trb_seg; - ep_ring->num_trbs_free += td->num_trbs - 1; inc_deq(xhci, ep_ring); return xhci_td_cleanup(xhci, td, ep_ring, td->status); diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index 025ca1e18fa2..3714cb40f532 100644 --- a/drivers/usb/typec/tcpm/tcpm.c +++ b/drivers/usb/typec/tcpm/tcpm.c @@ -1444,10 +1444,18 @@ static int tcpm_ams_start(struct tcpm_port *port, enum tcpm_ams ams) static void tcpm_queue_vdm(struct tcpm_port *port, const u32 header, const u32 *data, int cnt) { + u32 vdo_hdr = port->vdo_data[0]; + WARN_ON(!mutex_is_locked(&port->lock)); - /* Make sure we are not still processing a previous VDM packet */ - WARN_ON(port->vdm_state > VDM_STATE_DONE); + /* If is sending discover_identity, handle received message first */ + if (PD_VDO_SVDM(vdo_hdr) && PD_VDO_CMD(vdo_hdr) == CMD_DISCOVER_IDENT) { + port->send_discover = true; + mod_send_discover_delayed_work(port, SEND_DISCOVER_RETRY_MS); + } else { + /* Make sure we are not still processing a previous VDM packet */ + WARN_ON(port->vdm_state > VDM_STATE_DONE); + } port->vdo_count = cnt + 1; port->vdo_data[0] = header; @@ -1965,11 +1973,13 @@ static void vdm_run_state_machine(struct tcpm_port *port) switch (PD_VDO_CMD(vdo_hdr)) { case CMD_DISCOVER_IDENT: res = tcpm_ams_start(port, DISCOVER_IDENTITY); - if (res == 0) + if (res == 0) { port->send_discover = false; - else if (res == -EAGAIN) + } else if (res == -EAGAIN) { + port->vdo_data[0] = 0; mod_send_discover_delayed_work(port, SEND_DISCOVER_RETRY_MS); + } break; case CMD_DISCOVER_SVID: res = tcpm_ams_start(port, DISCOVER_SVIDS); @@ -2052,6 +2062,7 @@ static void vdm_run_state_machine(struct tcpm_port *port) unsigned long timeout; port->vdm_retries = 0; + port->vdo_data[0] = 0; port->vdm_state = VDM_STATE_BUSY; timeout = vdm_ready_timeout(vdo_hdr); mod_vdm_delayed_work(port, timeout); diff --git a/fs/drop_caches.c b/fs/drop_caches.c index f00fcc4a4f72..345f8644dc57 100644 --- a/fs/drop_caches.c +++ b/fs/drop_caches.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "internal.h" /* A global variable is a bit ugly, but it keeps the code simple */ @@ -58,6 +59,7 @@ int drop_caches_sysctl_handler(struct ctl_table *table, int write, static int stfu; if (sysctl_drop_caches & 1) { + lru_add_drain_all(); iterate_supers(drop_pagecache_sb, NULL); count_vm_event(DROP_PAGECACHE); } diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c index 33eb6dea04f0..dadddb3b94b8 100644 --- a/fs/f2fs/extent_cache.c +++ b/fs/f2fs/extent_cache.c @@ -41,41 +41,14 @@ static void __set_extent_info(struct extent_info *ei, } } -static bool __may_read_extent_tree(struct inode *inode) -{ - struct f2fs_sb_info *sbi = F2FS_I_SB(inode); - - if (!test_opt(sbi, READ_EXTENT_CACHE)) - return false; - if (is_inode_flag_set(inode, FI_NO_EXTENT)) - return false; - if (is_inode_flag_set(inode, FI_COMPRESSED_FILE) && - !f2fs_sb_has_readonly(sbi)) - return false; - return S_ISREG(inode->i_mode); -} - -static bool __may_age_extent_tree(struct inode *inode) -{ - struct f2fs_sb_info *sbi = F2FS_I_SB(inode); - - if (!test_opt(sbi, AGE_EXTENT_CACHE)) - return false; - /* don't cache block age info for cold file */ - if (is_inode_flag_set(inode, FI_COMPRESSED_FILE)) - return false; - if (file_is_cold(inode)) - return false; - - return S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode); -} - static bool __init_may_extent_tree(struct inode *inode, enum extent_type type) { if (type == EX_READ) - return __may_read_extent_tree(inode); - else if (type == EX_BLOCK_AGE) - return __may_age_extent_tree(inode); + return test_opt(F2FS_I_SB(inode), READ_EXTENT_CACHE) && + S_ISREG(inode->i_mode); + if (type == EX_BLOCK_AGE) + return test_opt(F2FS_I_SB(inode), AGE_EXTENT_CACHE) && + (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)); return false; } @@ -88,7 +61,22 @@ static bool __may_extent_tree(struct inode *inode, enum extent_type type) if (list_empty(&F2FS_I_SB(inode)->s_list)) return false; - return __init_may_extent_tree(inode, type); + if (!__init_may_extent_tree(inode, type)) + return false; + + if (type == EX_READ) { + if (is_inode_flag_set(inode, FI_NO_EXTENT)) + return false; + if (is_inode_flag_set(inode, FI_COMPRESSED_FILE) && + !f2fs_sb_has_readonly(F2FS_I_SB(inode))) + return false; + } else if (type == EX_BLOCK_AGE) { + if (is_inode_flag_set(inode, FI_COMPRESSED_FILE)) + return false; + if (file_is_cold(inode)) + return false; + } + return true; } static void __try_update_largest_extent(struct extent_tree *et, diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index fe564b6e0a37..c6215b35a462 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -608,7 +608,7 @@ void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count) fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) + ofs; f2fs_update_read_extent_cache_range(dn, fofs, 0, len); - f2fs_update_age_extent_cache_range(dn, fofs, nr_free); + f2fs_update_age_extent_cache_range(dn, fofs, len); dec_valid_block_count(sbi, dn->inode, nr_free); } dn->ofs_in_node = ofs; @@ -1432,6 +1432,7 @@ static int f2fs_do_zero_range(struct dnode_of_data *dn, pgoff_t start, } f2fs_update_read_extent_cache_range(dn, start, 0, index - start); + f2fs_update_age_extent_cache_range(dn, start, index - start); return ret; } diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index 5bf4f1cccd71..a88c8e737ef7 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -401,11 +401,6 @@ static int do_read_inode(struct inode *inode) fi->i_inline_xattr_size = 0; } - if (!sanity_check_inode(inode, node_page)) { - f2fs_put_page(node_page, 1); - return -EFSCORRUPTED; - } - /* check data exist */ if (f2fs_has_inline_data(inode) && !f2fs_exist_data(inode)) __recover_inline_status(inode, node_page); @@ -472,6 +467,11 @@ static int do_read_inode(struct inode *inode) f2fs_init_read_extent_tree(inode, node_page); f2fs_init_age_extent_tree(inode); + if (!sanity_check_inode(inode, node_page)) { + f2fs_put_page(node_page, 1); + return -EFSCORRUPTED; + } + f2fs_put_page(node_page, 1); stat_inc_inline_xattr(inode); diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index f4c582f396f2..33b5e07c4997 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1927,9 +1927,17 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root) return 0; } -static void default_options(struct f2fs_sb_info *sbi) +static void default_options(struct f2fs_sb_info *sbi, bool remount) { /* init some FS parameters */ + if (!remount) { + set_opt(sbi, READ_EXTENT_CACHE); + clear_opt(sbi, DISABLE_CHECKPOINT); + + if (f2fs_hw_support_discard(sbi) || f2fs_hw_should_discard(sbi)) + set_opt(sbi, DISCARD); + } + if (f2fs_sb_has_readonly(sbi)) F2FS_OPTION(sbi).active_logs = NR_CURSEG_RO_TYPE; else @@ -1953,14 +1961,11 @@ static void default_options(struct f2fs_sb_info *sbi) set_opt(sbi, INLINE_XATTR); set_opt(sbi, INLINE_DATA); set_opt(sbi, INLINE_DENTRY); - set_opt(sbi, READ_EXTENT_CACHE); set_opt(sbi, NOHEAP); - clear_opt(sbi, DISABLE_CHECKPOINT); set_opt(sbi, MERGE_CHECKPOINT); F2FS_OPTION(sbi).unusable_cap = 0; sbi->sb->s_flags |= SB_LAZYTIME; set_opt(sbi, FLUSH_MERGE); - set_opt(sbi, DISCARD); if (f2fs_sb_has_blkzoned(sbi)) F2FS_OPTION(sbi).fs_mode = FS_MODE_LFS; else @@ -2124,7 +2129,7 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data) clear_sbi_flag(sbi, SBI_NEED_SB_WRITE); } - default_options(sbi); + default_options(sbi, true); /* parse mount options */ err = parse_options(sb, data, true); @@ -3891,7 +3896,7 @@ try_onemore: sbi->s_chksum_seed = f2fs_chksum(sbi, ~0, raw_super->uuid, sizeof(raw_super->uuid)); - default_options(sbi); + default_options(sbi, false); /* parse mount options */ options = kstrdup((const char *)data, GFP_KERNEL); if (data && !options) { diff --git a/include/trace/hooks/dtask.h b/include/trace/hooks/dtask.h index 081a60af0e26..d8fa440ea6e9 100644 --- a/include/trace/hooks/dtask.h +++ b/include/trace/hooks/dtask.h @@ -99,6 +99,12 @@ DECLARE_HOOK(android_vh_record_pcpu_rwsem_starttime, TP_PROTO(struct task_struct *tsk, unsigned long settime_jiffies), TP_ARGS(tsk, settime_jiffies)); +struct percpu_rw_semaphore; +DECLARE_HOOK(android_vh_percpu_rwsem_wq_add, + TP_PROTO(struct percpu_rw_semaphore *sem, bool reader), + TP_ARGS(sem, reader)); + + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_DTASK_H */ diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 480880a49d32..4628e4aa1cc6 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -287,6 +287,15 @@ DECLARE_HOOK(android_vh_get_swap_page, TP_PROTO(struct page *page, swp_entry_t *entry, struct swap_slots_cache *cache, bool *found), TP_ARGS(page, entry, cache, found)); +DECLARE_HOOK(android_vh_add_to_avail_list, + TP_PROTO(struct swap_info_struct *p, bool *skip), + TP_ARGS(p, skip)); +DECLARE_HOOK(android_vh_del_from_avail_list, + TP_PROTO(struct swap_info_struct *p, bool *skip), + TP_ARGS(p, skip)); +DECLARE_HOOK(android_vh___cgroup_throttle_swaprate, + TP_PROTO(int nid, bool *skip), + TP_ARGS(nid, skip)); DECLARE_HOOK(android_vh_madvise_cold_or_pageout, TP_PROTO(struct vm_area_struct *vma, bool *allow_shared), TP_ARGS(vma, allow_shared)); @@ -299,6 +308,9 @@ DECLARE_HOOK(android_vh_account_swap_pages, DECLARE_HOOK(android_vh_unuse_swap_page, TP_PROTO(struct swap_info_struct *si, struct page *page), TP_ARGS(si, page)); +DECLARE_HOOK(android_vh_swap_avail_heads_init, + TP_PROTO(struct plist_head *swap_avail_heads), + TP_ARGS(swap_avail_heads)); DECLARE_HOOK(android_vh_init_swap_info_struct, TP_PROTO(struct swap_info_struct *p, struct plist_head *swap_avail_heads), TP_ARGS(p, swap_avail_heads)); @@ -344,6 +356,9 @@ DECLARE_HOOK(android_vh_compact_finished, DECLARE_HOOK(android_vh_madvise_cold_or_pageout_abort, TP_PROTO(struct vm_area_struct *vma, bool *abort_madvise), TP_ARGS(vma, abort_madvise)); +DECLARE_HOOK(android_vh_skip_swapcache, + TP_PROTO(swp_entry_t entry, bool *skip), + TP_ARGS(entry, skip)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_MM_H */ diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c index be121ed70d7c..943f6c3a7c67 100644 --- a/kernel/locking/mutex.c +++ b/kernel/locking/mutex.c @@ -761,8 +761,10 @@ static noinline void __sched __mutex_unlock_slowpath(struct mutex *lock, unsigne void __sched mutex_unlock(struct mutex *lock) { #ifndef CONFIG_DEBUG_LOCK_ALLOC - if (__mutex_unlock_fast(lock)) + if (__mutex_unlock_fast(lock)) { + trace_android_vh_record_mutex_lock_starttime(current, 0); return; + } #endif __mutex_unlock_slowpath(lock, _RET_IP_); trace_android_vh_record_mutex_lock_starttime(current, 0); diff --git a/kernel/locking/percpu-rwsem.c b/kernel/locking/percpu-rwsem.c index 915c045a15f3..b00db54994d8 100644 --- a/kernel/locking/percpu-rwsem.c +++ b/kernel/locking/percpu-rwsem.c @@ -166,6 +166,7 @@ static void percpu_rwsem_wait(struct percpu_rw_semaphore *sem, bool reader) if (wait) { wq_entry.flags |= WQ_FLAG_EXCLUSIVE | reader * WQ_FLAG_CUSTOM; __add_wait_queue_entry_tail(&sem->waiters, &wq_entry); + trace_android_vh_percpu_rwsem_wq_add(sem, reader); } spin_unlock_irq(&sem->waiters.lock); diff --git a/mm/kfence/Makefile b/mm/kfence/Makefile index 6872cd5e5390..cb2bcf773083 100644 --- a/mm/kfence/Makefile +++ b/mm/kfence/Makefile @@ -2,5 +2,5 @@ obj-$(CONFIG_KFENCE) := core.o report.o -CFLAGS_kfence_test.o := -g -fno-omit-frame-pointer -fno-optimize-sibling-calls +CFLAGS_kfence_test.o := -fno-omit-frame-pointer -fno-optimize-sibling-calls obj-$(CONFIG_KFENCE_KUNIT_TEST) += kfence_test.o diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 88b188c20763..b6f6bfc0a700 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -73,6 +73,7 @@ struct cgroup_subsys memory_cgrp_subsys __read_mostly; EXPORT_SYMBOL(memory_cgrp_subsys); struct mem_cgroup *root_mem_cgroup __read_mostly; +EXPORT_SYMBOL_GPL(root_mem_cgroup); /* Active memory cgroup to use from an interrupt context */ DEFINE_PER_CPU(struct mem_cgroup *, int_active_memcg); @@ -858,6 +859,7 @@ void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, if (!mem_cgroup_disabled()) __mod_memcg_lruvec_state(lruvec, idx, val); } +EXPORT_SYMBOL_GPL(__mod_lruvec_state); void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, int val) { @@ -1442,6 +1444,7 @@ void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru, if (nr_pages > 0) *lru_size += nr_pages; } +EXPORT_SYMBOL_GPL(mem_cgroup_update_lru_size); /** * mem_cgroup_margin - calculate chargeable space of a memory cgroup diff --git a/mm/memory.c b/mm/memory.c index df62ea2ef8f2..857cfc90893f 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3663,8 +3663,10 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) if (!page) { struct swap_info_struct *si = swp_swap_info(entry); + bool skip_swapcache = false; - if (data_race(si->flags & SWP_SYNCHRONOUS_IO) && + trace_android_vh_skip_swapcache(entry, &skip_swapcache); + if ((data_race(si->flags & SWP_SYNCHRONOUS_IO) || skip_swapcache) && __swap_count(entry) == 1) { /* skip swapcache */ gfp_t flags = GFP_HIGHUSER_MOVABLE; diff --git a/mm/page_owner.c b/mm/page_owner.c index 8dd3f27db21a..b3e5f98f299b 100644 --- a/mm/page_owner.c +++ b/mm/page_owner.c @@ -33,6 +33,7 @@ struct page_owner { bool page_owner_enabled; DEFINE_STATIC_KEY_FALSE(page_owner_inited); +EXPORT_SYMBOL_GPL(page_owner_inited); static depot_stack_handle_t dummy_handle; static depot_stack_handle_t failure_handle; @@ -222,6 +223,7 @@ noinline void __set_page_owner(struct page *page, unsigned int order, __set_page_owner_handle(page, page_ext, handle, order, gfp_mask); page_ext_put(page_ext); } +EXPORT_SYMBOL_GPL(__set_page_owner); void __set_page_owner_migrate_reason(struct page *page, int reason) { diff --git a/mm/rmap.c b/mm/rmap.c index 422b3d0deb8f..5338a8b1d846 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -915,6 +915,7 @@ int page_referenced(struct page *page, return rwc.contended ? -1 : pra.referenced; } +EXPORT_SYMBOL_GPL(page_referenced); static bool page_mkclean_one(struct page *page, struct vm_area_struct *vma, unsigned long address, void *arg) diff --git a/mm/swapfile.c b/mm/swapfile.c index a31d90fdb19f..cc1ce66cb492 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -675,6 +675,12 @@ static void __del_from_avail_list(struct swap_info_struct *p) static void del_from_avail_list(struct swap_info_struct *p) { + bool skip = false; + + trace_android_vh_del_from_avail_list(p, &skip); + if (skip) + return; + spin_lock(&swap_avail_lock); __del_from_avail_list(p); spin_unlock(&swap_avail_lock); @@ -700,6 +706,11 @@ static void swap_range_alloc(struct swap_info_struct *si, unsigned long offset, static void add_to_avail_list(struct swap_info_struct *p) { int nid; + bool skip = false; + + trace_android_vh_add_to_avail_list(p, &skip); + if (skip) + return; spin_lock(&swap_avail_lock); for_each_node(nid) { @@ -3394,6 +3405,8 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) if (swap_flags & SWAP_FLAG_PREFER) prio = (swap_flags & SWAP_FLAG_PRIO_MASK) >> SWAP_FLAG_PRIO_SHIFT; + + trace_android_vh_swap_avail_heads_init(swap_avail_heads); enable_swap_info(p, prio, swap_map, cluster_info, frontswap_map); trace_android_vh_init_swap_info_struct(p, swap_avail_heads); @@ -3848,6 +3861,7 @@ void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask) { struct swap_info_struct *si, *next; int nid = page_to_nid(page); + bool skip = false; if (!(gfp_mask & __GFP_IO)) return; @@ -3862,6 +3876,10 @@ void __cgroup_throttle_swaprate(struct page *page, gfp_t gfp_mask) if (current->throttle_queue) return; + trace_android_vh___cgroup_throttle_swaprate(nid, &skip); + if (skip) + return; + spin_lock(&swap_avail_lock); plist_for_each_entry_safe(si, next, &swap_avail_heads[nid], avail_lists[nid]) { diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c index f087baa95b07..26ab27981ad4 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c @@ -583,9 +583,9 @@ __build_packet_message(struct nfnl_log_net *log, goto nla_put_failure; } - if (hooknum <= NF_INET_FORWARD && skb->tstamp) { + if (hooknum <= NF_INET_FORWARD) { struct nfulnl_msg_packet_timestamp ts; - struct timespec64 kts = ktime_to_timespec64(skb->tstamp); + struct timespec64 kts = ktime_to_timespec64(skb->tstamp ?: ktime_get_real()); ts.sec = cpu_to_be64(kts.tv_sec); ts.usec = cpu_to_be64(kts.tv_nsec / NSEC_PER_USEC); diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index adcf87d417ae..e03ed7d507b7 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c @@ -1020,6 +1020,10 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid, if (parent == NULL) return -ENOENT; } + if (!(parent->cl_flags & HFSC_FSC) && parent != &q->root) { + NL_SET_ERR_MSG(extack, "Invalid parent - parent class must have FSC"); + return -EINVAL; + } if (classid == 0 || TC_H_MAJ(classid ^ sch->handle) != 0) return -EINVAL;