Date: Tue, 9 Jul 2024 06:13:08 +0800 From: kernel test robot To: Suren Baghdasaryan Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org, Andrew Morton , Linux Memory Management List , Kent Overstreet , Kees Cook Subject: WARNING: modpost: vmlinux: section mismatch in reference: alloc_tag_save+0x24 (section: .text.unlikely) -> initcall_level_names (section: .init.data) Message-ID: <202407090645.ruIapj8y-lkp@intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271264 org.kvack.linux-mm:202983 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-kbuild-all,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 256abd8e550ce977b728be79a74e1729438b4948 commit: b951aaff503502a7fe066eeed2744ba8a6413c89 mm: enable page allocation tagging date: 2 months ago config: xtensa-randconfig-r132-20240707 (https://download.01.org/0day-ci/archive/20240709/202407090645.ruIapj8y-lkp@intel.com/config) compiler: xtensa-linux-gcc (GCC) 13.2.0 reproduce: (https://download.01.org/0day-ci/archive/20240709/202407090645.ruIapj8y-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-kbuild-all/202407090645.ruIapj8y-lkp@intel.com/ All warnings (new ones prefixed by >>, old ones prefixed by <<): WARNING: modpost: missing MODULE_DESCRIPTION() in vmlinux.o >> WARNING: modpost: vmlinux: section mismatch in reference: alloc_tag_save+0x24 (section: .text.unlikely) -> initcall_level_names (section: .init.data) WARNING: modpost: vmlinux: section mismatch in reference: bitmap_copy_clear_tail+0x5c (section: .text.unlikely) -> __setup_str_initcall_blacklist (section: .init.rodata) -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . From: Thorsten Blum To: akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, Thorsten Blum Subject: [PATCH] lib/bch.c: Use swap() to improve code Date: Tue, 9 Jul 2024 00:40:24 +0200 Message-ID: <20240708224023.9312-2-thorsten.blum@toblux.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271281 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Use the swap() macro to simplify the functions solve_linear_system() and gf_poly_gcd() and improve their readability. Remove the local variable tmp. Fixes the following three Coccinelle/coccicheck warnings reported by swap.cocci: WARNING opportunity for swap() WARNING opportunity for swap() WARNING opportunity for swap() Compile-tested only. Signed-off-by: Thorsten Blum --- lib/bch.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/lib/bch.c b/lib/bch.c index 5f71fd76eca8..1c0cb07cdfeb 100644 --- a/lib/bch.c +++ b/lib/bch.c @@ -479,11 +479,8 @@ static int solve_linear_system(struct bch_control *bch, unsigned int *rows, /* find suitable row for elimination */ for (r = p; r < m; r++) { if (rows[r] & mask) { - if (r != p) { - tmp = rows[r]; - rows[r] = rows[p]; - rows[p] = tmp; - } + if (r != p) + swap(rows[r], rows[p]); rem = r+1; break; } @@ -799,21 +796,14 @@ static void gf_poly_div(struct bch_control *bch, struct gf_poly *a, static struct gf_poly *gf_poly_gcd(struct bch_control *bch, struct gf_poly *a, struct gf_poly *b) { - struct gf_poly *tmp; - dbg("gcd(%s,%s)=", gf_poly_str(a), gf_poly_str(b)); - if (a->deg < b->deg) { - tmp = b; - b = a; - a = tmp; - } + if (a->deg < b->deg) + swap(a, b); while (b->deg > 0) { gf_poly_mod(bch, a, b, NULL); - tmp = b; - b = a; - a = tmp; + swap(a, b); } dbg("%s\n", gf_poly_str(a)); -- 2.45.2 . Content-Type: multipart/mixed; boundary="------------zvEHuaPS38NLDGr1NkzGpYeN" Message-ID: <7007e67e-0af4-4b01-a708-ba108208b217@linuxfoundation.org> Date: Mon, 8 Jul 2024 16:42:13 -0600 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Language: en-US To: Linus Torvalds Cc: Shuah Khan , shuah , linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard , "Jason A. Donenfeld" From: Shuah Khan Subject: [GIT PULL] Kselftest fixes for Linux 6.10 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271283 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kselftest Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This is a multi-part message in MIME format. --------------zvEHuaPS38NLDGr1NkzGpYeN Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Linus, Please pull this kselftest fixes update for Linux 6.10. This kselftest fixes update for Linux 6.10 consists of fixes to clang build failures to timerns, vDSO tests and fixes to vDSO makefile. Note: makefile fixes are included to avoid conflicts during 6.11 merge window. diff is attached. thanks, -- Shuah ---------------------------------------------------------------- The following changes since commit 48236960c06d32370bfa6f2cc408e786873262c8: selftests/resctrl: Fix non-contiguous CBM for AMD (2024-06-26 13:22:34 -0600) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest tags/linux_kselftest-fixes-6.10 for you to fetch changes up to 66cde337fa1b7c6cf31f856fa015bd91a4d383e7: selftests/vDSO: remove duplicate compiler invocations from Makefile (2024-07-05 14:12:34 -0600) ---------------------------------------------------------------- linux_kselftest-fixes-6.10 This kselftest fixes update for Linux 6.10 consists of fixes to clang build failures to timerns, vDSO tests and fixes to vDSO makefile. ---------------------------------------------------------------- John Hubbard (4): selftest/timerns: fix clang build failures for abs() calls selftests/vDSO: fix clang build errors and warnings selftests/vDSO: remove partially duplicated "all:" target in Makefile selftests/vDSO: remove duplicate compiler invocations from Makefile tools/testing/selftests/timens/exec.c | 6 ++--- tools/testing/selftests/timens/timer.c | 2 +- tools/testing/selftests/timens/timerfd.c | 2 +- tools/testing/selftests/timens/vfork_exec.c | 4 +-- tools/testing/selftests/vDSO/Makefile | 29 +++++++++------------- tools/testing/selftests/vDSO/parse_vdso.c | 16 ++++++++---- .../selftests/vDSO/vdso_standalone_test_x86.c | 18 ++++++++++++-- 7 files changed, 46 insertions(+), 31 deletions(-) ---------------------------------------------------------------- --------------zvEHuaPS38NLDGr1NkzGpYeN Content-Type: text/x-patch; charset=UTF-8; name="linux_kselftest-fixes-6.10.diff" Content-Disposition: attachment; filename="linux_kselftest-fixes-6.10.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy9leGVjLmMgYi90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvZXhlYy5jCmluZGV4IGU0MGRjNWJlMmY2 Ni4uZDEyZmY5NTVkZTBkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90 aW1lbnMvZXhlYy5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy9leGVj LmMKQEAgLTMwLDcgKzMwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAJCQlfZ2V0dGltZShDTE9DS19NT05P VE9OSUMsICZ0c3QsIGkpOwotCQkJaWYgKGFicyh0c3QudHZfc2VjIC0gbm93LnR2X3NlYykg PiA1KQorCQkJaWYgKGxhYnModHN0LnR2X3NlYyAtIG5vdy50dl9zZWMpID4gNSkKIAkJCQly ZXR1cm4gcHJfZmFpbCgiJWxkICVsZFxuIiwgbm93LnR2X3NlYywgdHN0LnR2X3NlYyk7CiAJ CX0KIAkJcmV0dXJuIDA7CkBAIC01MCw3ICs1MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAKIAlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAJCV9nZXR0aW1l KENMT0NLX01PTk9UT05JQywgJnRzdCwgaSk7Ci0JCWlmIChhYnModHN0LnR2X3NlYyAtIG5v dy50dl9zZWMpID4gNSkKKwkJaWYgKGxhYnModHN0LnR2X3NlYyAtIG5vdy50dl9zZWMpID4g NSkKIAkJCXJldHVybiBwcl9mYWlsKCIlbGQgJWxkXG4iLAogCQkJCQlub3cudHZfc2VjLCB0 c3QudHZfc2VjKTsKIAl9CkBAIC03MCw3ICs3MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCS8qIENoZWNrIHRoYXQgYSBjaGlsZCBwcm9jZXNzIGlzIGluIHRo ZSBuZXcgdGltZW5zLiAqLwogCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAJCQlfZ2V0 dGltZShDTE9DS19NT05PVE9OSUMsICZ0c3QsIGkpOwotCQkJaWYgKGFicyh0c3QudHZfc2Vj IC0gbm93LnR2X3NlYyAtIE9GRlNFVCkgPiA1KQorCQkJaWYgKGxhYnModHN0LnR2X3NlYyAt IG5vdy50dl9zZWMgLSBPRkZTRVQpID4gNSkKIAkJCQlyZXR1cm4gcHJfZmFpbCgiJWxkICVs ZFxuIiwKIAkJCQkJCW5vdy50dl9zZWMgKyBPRkZTRVQsIHRzdC50dl9zZWMpOwogCQl9CmRp ZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGltZXIuYyBiL3Rv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jCmluZGV4IDVlN2YwMDUxYmQ3 Yi4uNWI5MzlmNTlkZmE0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90 aW1lbnMvdGltZXIuYworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGlt ZXIuYwpAQCAtNTYsNyArNTYsNyBAQCBpbnQgcnVuX3Rlc3QoaW50IGNsb2NraWQsIHN0cnVj dCB0aW1lc3BlYyBub3cpCiAJCQlyZXR1cm4gcHJfcGVycm9yKCJ0aW1lcmZkX2dldHRpbWUi KTsKIAogCQllbGFwc2VkID0gbmV3X3ZhbHVlLml0X3ZhbHVlLnR2X3NlYzsKLQkJaWYgKGFi cyhlbGFwc2VkIC0gMzYwMCkgPiA2MCkgeworCQlpZiAobGxhYnMoZWxhcHNlZCAtIDM2MDAp ID4gNjApIHsKIAkJCWtzZnRfdGVzdF9yZXN1bHRfZmFpbCgiY2xvY2tpZDogJWQgZWxhcHNl ZDogJWxsZFxuIiwKIAkJCQkJICAgICAgY2xvY2tpZCwgZWxhcHNlZCk7CiAJCQlyZXR1cm4g MTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lcmZk LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGltZXJmZC5jCmluZGV4IDll ZGQ0M2Q2YjJjMS4uYTQxOTZiYmQ2ZTMzIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy90aW1lbnMvdGltZXJmZC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3RpbWVucy90aW1lcmZkLmMKQEAgLTYxLDcgKzYxLDcgQEAgaW50IHJ1bl90ZXN0KGludCBj bG9ja2lkLCBzdHJ1Y3QgdGltZXNwZWMgbm93KQogCQkJcmV0dXJuIHByX3BlcnJvcigidGlt ZXJmZF9nZXR0aW1lKCVkKSIsIGNsb2NraWQpOwogCiAJCWVsYXBzZWQgPSBuZXdfdmFsdWUu aXRfdmFsdWUudHZfc2VjOwotCQlpZiAoYWJzKGVsYXBzZWQgLSAzNjAwKSA+IDYwKSB7CisJ CWlmIChsbGFicyhlbGFwc2VkIC0gMzYwMCkgPiA2MCkgewogCQkJa3NmdF90ZXN0X3Jlc3Vs dF9mYWlsKCJjbG9ja2lkOiAlZCBlbGFwc2VkOiAlbGxkXG4iLAogCQkJCQkgICAgICBjbG9j a2lkLCBlbGFwc2VkKTsKIAkJCXJldHVybiAxOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvdGltZW5zL3Zmb3JrX2V4ZWMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3RpbWVucy92Zm9ya19leGVjLmMKaW5kZXggYmViNzYxNDk0MWZiLi41Yjg5MDdiZjQ1 MWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy92Zm9ya19l eGVjLmMKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3Zmb3JrX2V4ZWMu YwpAQCAtMzIsNyArMzIsNyBAQCBzdGF0aWMgdm9pZCAqdGNoZWNrKHZvaWQgKl9hcmdzKQog CiAJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgewogCQlfZ2V0dGltZShDTE9DS19NT05PVE9O SUMsICZ0c3QsIGkpOwotCQlpZiAoYWJzKHRzdC50dl9zZWMgLSBub3ctPnR2X3NlYykgPiA1 KSB7CisJCWlmIChsYWJzKHRzdC50dl9zZWMgLSBub3ctPnR2X3NlYykgPiA1KSB7CiAJCQlw cl9mYWlsKCIlczogaW4tdGhyZWFkOiB1bmV4cGVjdGVkIHZhbHVlOiAlbGQgKCVsZClcbiIs CiAJCQkJYXJncy0+dHN0X25hbWUsIHRzdC50dl9zZWMsIG5vdy0+dHZfc2VjKTsKIAkJCXJl dHVybiAodm9pZCAqKTFVTDsKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGludCBjaGVjayhj aGFyICp0c3RfbmFtZSwgc3RydWN0IHRpbWVzcGVjICpub3cpCiAKIAlmb3IgKGkgPSAwOyBp IDwgMjsgaSsrKSB7CiAJCV9nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzdCwgaSk7Ci0J CWlmIChhYnModHN0LnR2X3NlYyAtIG5vdy0+dHZfc2VjKSA+IDUpCisJCWlmIChsYWJzKHRz dC50dl9zZWMgLSBub3ctPnR2X3NlYykgPiA1KQogCQkJcmV0dXJuIHByX2ZhaWwoIiVzOiB1 bmV4cGVjdGVkIHZhbHVlOiAlbGQgKCVsZClcbiIsCiAJCQkJCXRzdF9uYW1lLCB0c3QudHZf c2VjLCBub3ctPnR2X3NlYyk7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvdkRTTy9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vTWFr ZWZpbGUKaW5kZXggZDUzYTRkODAwOGY5Li45OGQ4YmEyYWZhMDAgMTAwNjQ0Ci0tLSBhL3Rv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdGlu Zy9zZWxmdGVzdHMvdkRTTy9NYWtlZmlsZQpAQCAtMSwzNSArMSwzMCBAQAogIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAotaW5jbHVkZSAuLi9saWIubWsKLQogdW5hbWVf TSA6PSAkKHNoZWxsIHVuYW1lIC1tIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90KQogQVJDSCA/ PSAkKHNoZWxsIGVjaG8gJCh1bmFtZV9NKSB8IHNlZCAtZSBzL2kuODYveDg2LyAtZSBzL3g4 Nl82NC94ODYvKQogCi1URVNUX0dFTl9QUk9HUyA6PSAkKE9VVFBVVCkvdmRzb190ZXN0X2dl dHRpbWVvZmRheSAkKE9VVFBVVCkvdmRzb190ZXN0X2dldGNwdQotVEVTVF9HRU5fUFJPR1Mg Kz0gJChPVVRQVVQpL3Zkc29fdGVzdF9hYmkKLVRFU1RfR0VOX1BST0dTICs9ICQoT1VUUFVU KS92ZHNvX3Rlc3RfY2xvY2tfZ2V0cmVzCitURVNUX0dFTl9QUk9HUyA6PSB2ZHNvX3Rlc3Rf Z2V0dGltZW9mZGF5CitURVNUX0dFTl9QUk9HUyArPSB2ZHNvX3Rlc3RfZ2V0Y3B1CitURVNU X0dFTl9QUk9HUyArPSB2ZHNvX3Rlc3RfYWJpCitURVNUX0dFTl9QUk9HUyArPSB2ZHNvX3Rl c3RfY2xvY2tfZ2V0cmVzCiBpZmVxICgkKEFSQ0gpLCQoZmlsdGVyICQoQVJDSCkseDg2IHg4 Nl82NCkpCi1URVNUX0dFTl9QUk9HUyArPSAkKE9VVFBVVCkvdmRzb19zdGFuZGFsb25lX3Rl c3RfeDg2CitURVNUX0dFTl9QUk9HUyArPSB2ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYKIGVu ZGlmCi1URVNUX0dFTl9QUk9HUyArPSAkKE9VVFBVVCkvdmRzb190ZXN0X2NvcnJlY3RuZXNz CitURVNUX0dFTl9QUk9HUyArPSB2ZHNvX3Rlc3RfY29ycmVjdG5lc3MKIAogQ0ZMQUdTIDo9 IC1zdGQ9Z251OTkKLUNGTEFHU192ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYgOj0gLW5vc3Rk bGliIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZuby1zdGFjay1wcm90ZWN0 b3IKLUxERkxBR1NfdmRzb190ZXN0X2NvcnJlY3RuZXNzIDo9IC1sZGwKKwogaWZlcSAoJChD T05GSUdfWDg2XzMyKSx5KQogTERMSUJTICs9IC1sZ2NjX3MKIGVuZGlmCiAKLWFsbDogJChU RVNUX0dFTl9QUk9HUykKK2luY2x1ZGUgLi4vbGliLm1rCiAkKE9VVFBVVCkvdmRzb190ZXN0 X2dldHRpbWVvZmRheTogcGFyc2VfdmRzby5jIHZkc29fdGVzdF9nZXR0aW1lb2ZkYXkuYwog JChPVVRQVVQpL3Zkc29fdGVzdF9nZXRjcHU6IHBhcnNlX3Zkc28uYyB2ZHNvX3Rlc3RfZ2V0 Y3B1LmMKICQoT1VUUFVUKS92ZHNvX3Rlc3RfYWJpOiBwYXJzZV92ZHNvLmMgdmRzb190ZXN0 X2FiaS5jCiAkKE9VVFBVVCkvdmRzb190ZXN0X2Nsb2NrX2dldHJlczogdmRzb190ZXN0X2Ns b2NrX2dldHJlcy5jCisKICQoT1VUUFVUKS92ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODY6IHZk c29fc3RhbmRhbG9uZV90ZXN0X3g4Ni5jIHBhcnNlX3Zkc28uYwotCSQoQ0MpICQoQ0ZMQUdT KSAkKENGTEFHU192ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYpIFwKLQkJdmRzb19zdGFuZGFs b25lX3Rlc3RfeDg2LmMgcGFyc2VfdmRzby5jIFwKLQkJLW8gJEAKKyQoT1VUUFVUKS92ZHNv X3N0YW5kYWxvbmVfdGVzdF94ODY6IENGTEFHUyArPS1ub3N0ZGxpYiAtZm5vLWFzeW5jaHJv bm91cy11bndpbmQtdGFibGVzIC1mbm8tc3RhY2stcHJvdGVjdG9yCisKICQoT1VUUFVUKS92 ZHNvX3Rlc3RfY29ycmVjdG5lc3M6IHZkc29fdGVzdF9jb3JyZWN0bmVzcy5jCi0JJChDQykg JChDRkxBR1MpIFwKLQkJdmRzb190ZXN0X2NvcnJlY3RuZXNzLmMgXAotCQktbyAkQCBcCi0J CSQoTERGTEFHU192ZHNvX3Rlc3RfY29ycmVjdG5lc3MpCiskKE9VVFBVVCkvdmRzb190ZXN0 X2NvcnJlY3RuZXNzOiBMREZMQUdTICs9IC1sZGwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3ZEU08vcGFyc2VfdmRzby5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvdkRTTy9wYXJzZV92ZHNvLmMKaW5kZXggNDEzZjc1NjIwYTM1Li40YWU0MTczNzJlOWUg MTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vcGFyc2VfdmRzby5j CisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZEU08vcGFyc2VfdmRzby5jCkBAIC01 NSwxNCArNTUsMjAgQEAgc3RhdGljIHN0cnVjdCB2ZHNvX2luZm8KIAlFTEYoVmVyZGVmKSAq dmVyZGVmOwogfSB2ZHNvX2luZm87CiAKLS8qIFN0cmFpZ2h0IGZyb20gdGhlIEVMRiBzcGVj aWZpY2F0aW9uLiAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgZWxmX2hhc2goY29uc3QgdW5z aWduZWQgY2hhciAqbmFtZSkKKy8qCisgKiBTdHJhaWdodCBmcm9tIHRoZSBFTEYgc3BlY2lm aWNhdGlvbi4uLmFuZCB0aGVuIHR3ZWFrZWQgc2xpZ2h0bHksIGluIG9yZGVyIHRvCisgKiBh dm9pZCBhIGZldyBjbGFuZyB3YXJuaW5ncy4KKyAqLworc3RhdGljIHVuc2lnbmVkIGxvbmcg ZWxmX2hhc2goY29uc3QgY2hhciAqbmFtZSkKIHsKIAl1bnNpZ25lZCBsb25nIGggPSAwLCBn OwotCXdoaWxlICgqbmFtZSkKKwljb25zdCB1bnNpZ25lZCBjaGFyICp1Y2hfbmFtZSA9IChj b25zdCB1bnNpZ25lZCBjaGFyICopbmFtZTsKKworCXdoaWxlICgqdWNoX25hbWUpCiAJewot CQloID0gKGggPDwgNCkgKyAqbmFtZSsrOwotCQlpZiAoZyA9IGggJiAweGYwMDAwMDAwKQor CQloID0gKGggPDwgNCkgKyAqdWNoX25hbWUrKzsKKwkJZyA9IGggJiAweGYwMDAwMDAwOwor CQlpZiAoZykKIAkJCWggXj0gZyA+PiAyNDsKIAkJaCAmPSB+ZzsKIAl9CmRpZmYgLS1naXQg YS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPL3Zkc29fc3RhbmRhbG9uZV90ZXN0X3g4 Ni5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdkRTTy92ZHNvX3N0YW5kYWxvbmVfdGVz dF94ODYuYwppbmRleCA4YTQ0ZmY5NzNlZTEuLjI3ZjZmZGYxMTk2OSAxMDA2NDQKLS0tIGEv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdkRTTy92ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYu YworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPL3Zkc29fc3RhbmRhbG9uZV90 ZXN0X3g4Ni5jCkBAIC0xOCw3ICsxOCw3IEBACiAKICNpbmNsdWRlICJwYXJzZV92ZHNvLmgi CiAKLS8qIFdlIG5lZWQgYSBsaWJjIGZ1bmN0aW9ucy4uLiAqLworLyogV2UgbmVlZCBzb21l IGxpYmMgZnVuY3Rpb25zLi4uICovCiBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKmEsIGNvbnN0 IGNoYXIgKmIpCiB7CiAJLyogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBidWdneTogaXQgbmV2 ZXIgcmV0dXJucyAtMS4gKi8KQEAgLTM0LDYgKzM0LDIwIEBAIGludCBzdHJjbXAoY29uc3Qg Y2hhciAqYSwgY29uc3QgY2hhciAqYikKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIFRoZSBj bGFuZyBidWlsZCBuZWVkcyB0aGlzLCBhbHRob3VnaCBnY2MgZG9lcyBub3QuCisgKiBTdG9s ZW4gZnJvbSBsaWIvc3RyaW5nLmMuCisgKi8KK3ZvaWQgKm1lbWNweSh2b2lkICpkZXN0LCBj b25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCkKK3sKKwljaGFyICp0bXAgPSBkZXN0Owor CWNvbnN0IGNoYXIgKnMgPSBzcmM7CisKKwl3aGlsZSAoY291bnQtLSkKKwkJKnRtcCsrID0g KnMrKzsKKwlyZXR1cm4gZGVzdDsKK30KKwogLyogLi4uYW5kIHR3byBzeXNjYWxscy4gIFRo aXMgaXMgeDg2LXNwZWNpZmljLiAqLwogc3RhdGljIGlubGluZSBsb25nIHg4Nl9zeXNjYWxs Myhsb25nIG5yLCBsb25nIGEwLCBsb25nIGExLCBsb25nIGEyKQogewpAQCAtNzAsNyArODQs NyBAQCB2b2lkIHRvX2Jhc2UxMChjaGFyICpsYXN0ZGlnLCB0aW1lX3QgbikKIAl9CiB9CiAK LV9fYXR0cmlidXRlX18oKGV4dGVybmFsbHlfdmlzaWJsZSkpIHZvaWQgY19tYWluKHZvaWQg KipzdGFjaykKK3ZvaWQgY19tYWluKHZvaWQgKipzdGFjaykKIHsKIAkvKiBQYXJzZSB0aGUg c3RhY2sgKi8KIAlsb25nIGFyZ2MgPSAobG9uZykqc3RhY2s7Cg== --------------zvEHuaPS38NLDGr1NkzGpYeN-- . Date: Tue, 9 Jul 2024 08:52:38 +1000 From: Stephen Rothwell To: Dmitry Baryshkov Cc: Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: error when fetching the drm-msm-lumag tree Message-ID: <20240709085238.1fbc301d@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/bRZO1NnApjCsw8iiRTSbWDY"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271289 org.kernel.vger.linux-next:62099 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/bRZO1NnApjCsw8iiRTSbWDY Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Fetching the drm-msm-lumag tree (https://gitlab.freedesktop.org/lumag/msm.git#msm-next-lumag) produces this error: fatal: couldn't find remote ref refs/heads/msm-next-lumag --=20 Cheers, Stephen Rothwell --Sig_/bRZO1NnApjCsw8iiRTSbWDY Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMbbYACgkQAVBC80lX 0GzVegf9HK+iyY6v6N+dJfnbLoQfwGIHZ4rndR52qNaF9KwHOWyI8KzsoUZ9FoCl zXJ0k0gPN3x+Ohn1HIFzgmUg4ABO9e+eAt89c9wJ4Q/SkXIOfRBnhVKgmmslOknW LEr8ITX4gIjxfsAA2VN9StC2h6V1DEXJwLyEdM+rsQ/5vz1Lhv5JFq/kAK9/IYZY tJmYIrO5dCWbuAt0Sh17k9BnZp31ehrLc3YeHsTcmLlXE128M3kG+yANywNOFRyz GrR+NxF1mvPHY/+euSML6WOxwLPBacnyN/8cBNF1EuLzXdGsbaiXrZzVZ0R7ophN yHuvkgaALGa742Wf7eSPKXvC0uQCPw== =NrLd -----END PGP SIGNATURE----- --Sig_/bRZO1NnApjCsw8iiRTSbWDY-- . From: Oreoluwa Babatunde To: , , , CC: , , , , , , , , , Oreoluwa Babatunde Subject: [PATCH 0/4] Revert use of Unflatten_devicetree APIs from reserved_mem Date: Mon, 8 Jul 2024 16:06:09 -0700 Message-ID: <20240708230613.448846-1-quic_obabatun@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271299 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail With recent changes made to initialize the cma regions before the page tables are setup, commit f2a524d9ef5b ("of: reserved_mem: Restructure code to call reserved mem init functions earlier"), an issue was introduced where the initialization of the cma regions fail and are initialized as "non-reusable" regions instead of "reusable". [1], [2] This issue occurs because the device_node of the regions are not yet created by the time the cma regions are being initialized. The cma regions need to be initialized before the page tables are setup for them to be configured correctly as was realized in [3]. Hence, since the unflatten_devicetree APIs are not available until after the page tables have been setup, revert back to using the fdt APIs. This makes it possible to store a reference to each cma node in the reserved_mem array by the time it is needed in the init function. [1] https://lore.kernel.org/all/DU0PR04MB9299C3EC247E1FE2C373440F80DE2@DU0PR04MB9299.eurprd04.prod.outlook.com/ [2] https://lore.kernel.org/all/986361f4-f000-4129-8214-39f2fb4a90da@gmail.com/ [3] https://lore.kernel.org/all/20240610213403.GA1697364@thelio-3990X/ Oreoluwa Babatunde (4): Revert "of: reserved_mem: Restructure code to call reserved mem init functions earlier" Revert "of: reserved_mem: Rename fdt_* functions to refelct the change from using fdt APIs" Revert "of: reserved_mem: Use unflatten_devicetree APIs to scan reserved memory nodes" of: reserved_mem: Restructure code to call rmem init functions earlier drivers/of/fdt.c | 2 +- drivers/of/of_private.h | 2 +- drivers/of/of_reserved_mem.c | 103 +++++++++++++++++--------------- include/linux/of_reserved_mem.h | 2 +- kernel/dma/coherent.c | 10 ++-- kernel/dma/contiguous.c | 8 +-- kernel/dma/swiotlb.c | 10 ++-- 7 files changed, 72 insertions(+), 65 deletions(-) -- 2.34.1 . From: Andrii Nakryiko To: linux-trace-kernel@vger.kernel.org, peterz@infradead.org, rostedt@goodmis.org, mhiramat@kernel.org Cc: x86@kernel.org, mingo@redhat.com, tglx@linutronix.de, jpoimboe@redhat.com, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, rihams@fb.com, linux-perf-users@vger.kernel.org, Andrii Nakryiko Subject: [PATCH v4] perf,x86: avoid missing caller address in stack traces captured in uprobe Date: Mon, 8 Jul 2024 16:11:27 -0700 Message-ID: <20240708231127.1055083-1-andrii@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271306 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-perf-users,org.kernel.vger.linux-trace-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail When tracing user functions with uprobe functionality, it's common to install the probe (e.g., a BPF program) at the first instruction of the function. This is often going to be `push %rbp` instruction in function preamble, which means that within that function frame pointer hasn't been established yet. This leads to consistently missing an actual caller of the traced function, because perf_callchain_user() only records current IP (capturing traced function) and then following frame pointer chain (which would be caller's frame, containing the address of caller's caller). So when we have target_1 -> target_2 -> target_3 call chain and we are tracing an entry to target_3, captured stack trace will report target_1 -> target_3 call chain, which is wrong and confusing. This patch proposes a x86-64-specific heuristic to detect `push %rbp` (`push %ebp` on 32-bit architecture) instruction being traced. Given entire kernel implementation of user space stack trace capturing works under assumption that user space code was compiled with frame pointer register (%rbp/%ebp) preservation, it seems pretty reasonable to use this instruction as a strong indicator that this is the entry to the function. In that case, return address is still pointed to by %rsp/%esp, so we fetch it and add to stack trace before proceeding to unwind the rest using frame pointer-based logic. We also check for `endbr64` (for 64-bit modes) as another common pattern for function entry, as suggested by Josh Poimboeuf. Even if we get this wrong sometimes for uprobes attached not at the function entry, it's OK because stack trace will still be overall meaningful, just with one extra bogus entry. If we don't detect this, we end up with guaranteed to be missing caller function entry in the stack trace, which is worse overall. Signed-off-by: Andrii Nakryiko --- v3->v4: - use get_user() instead of __get_user(), given untrusted input (Josh); - reduced #ifdef-ery (Josh); v2->v3: - added endr64 detection and extracted heuristics into a function (Josh); v1->v2: - use native unsigned long for ret_addr (Peter); - add same logic for compat logic in perf_callchain_user32 (Peter). arch/x86/events/core.c | 62 +++++++++++++++++++++++++++++++++++++++++ include/linux/uprobes.h | 2 ++ kernel/events/uprobes.c | 2 ++ 3 files changed, 66 insertions(+) diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index 5b0dd07b1ef1..c09603d769a2 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -41,6 +41,7 @@ #include #include #include +#include #include "perf_event.h" @@ -2813,6 +2814,46 @@ static unsigned long get_segment_base(unsigned int segment) return get_desc_base(desc); } +#ifdef CONFIG_UPROBES +/* + * Heuristic-based check if uprobe is installed at the function entry. + * + * Under assumption of user code being compiled with frame pointers, + * `push %rbp/%ebp` is a good indicator that we indeed are. + * + * Similarly, `endbr64` (assuming 64-bit mode) is also a common pattern. + * If we get this wrong, captured stack trace might have one extra bogus + * entry, but the rest of stack trace will still be meaningful. + */ +static bool is_uprobe_at_func_entry(struct pt_regs *regs) +{ + struct arch_uprobe *auprobe; + + if (!current->utask) + return false; + + auprobe = current->utask->auprobe; + if (!auprobe) + return false; + + /* push %rbp/%ebp */ + if (auprobe->insn[0] == 0x55) + return true; + + /* endbr64 (64-bit only) */ + if (user_64bit_mode(regs) && *(u32 *)auprobe->insn == 0xfa1e0ff3) + return true; + + return false; +} + +#else +static bool is_uprobe_at_func_entry(struct pt_regs *regs) +{ + return false; +} +#endif /* CONFIG_UPROBES */ + #ifdef CONFIG_IA32_EMULATION #include @@ -2824,6 +2865,7 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent unsigned long ss_base, cs_base; struct stack_frame_ia32 frame; const struct stack_frame_ia32 __user *fp; + u32 ret_addr; if (user_64bit_mode(regs)) return 0; @@ -2833,6 +2875,12 @@ perf_callchain_user32(struct pt_regs *regs, struct perf_callchain_entry_ctx *ent fp = compat_ptr(ss_base + regs->bp); pagefault_disable(); + + /* see perf_callchain_user() below for why we do this */ + if (is_uprobe_at_func_entry(regs) && + !get_user(ret_addr, (const u32 __user *)regs->sp)) + perf_callchain_store(entry, ret_addr); + while (entry->nr < entry->max_stack) { if (!valid_user_frame(fp, sizeof(frame))) break; @@ -2861,6 +2909,7 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs { struct stack_frame frame; const struct stack_frame __user *fp; + unsigned long ret_addr; if (perf_guest_state()) { /* TODO: We don't support guest os callchain now */ @@ -2884,6 +2933,19 @@ perf_callchain_user(struct perf_callchain_entry_ctx *entry, struct pt_regs *regs return; pagefault_disable(); + + /* + * If we are called from uprobe handler, and we are indeed at the very + * entry to user function (which is normally a `push %rbp` instruction, + * under assumption of application being compiled with frame pointers), + * we should read return address from *regs->sp before proceeding + * to follow frame pointers, otherwise we'll skip immediate caller + * as %rbp is not yet setup. + */ + if (is_uprobe_at_func_entry(regs) && + !get_user(ret_addr, (const unsigned long __user *)regs->sp)) + perf_callchain_store(entry, ret_addr); + while (entry->nr < entry->max_stack) { if (!valid_user_frame(fp, sizeof(frame))) break; diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index b503fafb7fb3..a270a5892ab4 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h @@ -76,6 +76,8 @@ struct uprobe_task { struct uprobe *active_uprobe; unsigned long xol_vaddr; + struct arch_uprobe *auprobe; + struct return_instance *return_instances; unsigned int depth; }; diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index 99be2adedbc0..6e22e4d80f1e 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -2082,6 +2082,7 @@ static void handler_chain(struct uprobe *uprobe, struct pt_regs *regs) bool need_prep = false; /* prepare return uprobe, when needed */ down_read(&uprobe->register_rwsem); + current->utask->auprobe = &uprobe->arch; for (uc = uprobe->consumers; uc; uc = uc->next) { int rc = 0; @@ -2096,6 +2097,7 @@ static void handler_chain(struct uprobe *uprobe, struct pt_regs *regs) remove &= rc; } + current->utask->auprobe = NULL; if (need_prep && !remove) prepare_uretprobe(uprobe, regs); /* put bp at return */ -- 2.43.0 . From: Casey Chen To: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Cc: yzhong@purestorage.com, Casey Chen Subject: [PATCH 0/1] perf tool: fix handling NULL al->maps returned from thread__find_map Date: Mon, 8 Jul 2024 17:23:00 -0600 Message-ID: <20240708232302.15267-1-cachen@purestorage.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271311 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail We found a segfault when run perf report on raw perf_data from perf record. Basically with 0dd5041c9a0e ("perf addr_location: Add init/exit/copy functions"), thread__find_map() would return with al->maps being NULL when cpumode is 3 (macro PERF_RECORD_MISC_HYPERVISOR). Later dereferencing maps->machine would crash. The fix adds check to callers of thread__find_map() and thread__find_symbol(), please see 0001-perf-tool-fix-handling-NULL-al-maps-returned-from-th.patch, which is made and tested on afcd48134c58 ("Merge tag 'mm-hotfixes-stable-2024-06-26-17-28' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm") Debug diffs made on 0dd5041c9a0e is attached as 0002-debug-patch-for-perf-report-segfault.patch Steps to reproduce and what are observed: 1. Run 'gdb ./perf' 2. Initial gdb output. cpumode is 3 and address of node->ms is 0x55555684aee8. (gdb) run report --stdio -v -i ~/perf_data ... add_callchain_ip: i'm here! al.map (nil) al.sym (nil) ip >= PERF_CONTEXT_MAX: 0 cpumode 3 ip 0x8348fb8948535441 callchain_cursor_append addr of node->ms 0x55555684aee8 ms 0x7fffffff9e70 has no maps map (nil) symbol (nil) Failed to open /tmp/perf-31239.map, continuing without symbols callchain_cursor_commit: cursor 0x7ffff7a17b98 curr 0x55555684aee0 ms 0x55555684aee8 callchain_cursor_commit: cursor 0x7ffff7a17b98 curr 0x55555684aee0 ms 0x55555684aee8 callchain_cursor_commit: cursor 0x7ffff7a17b98 curr 0x55555684aee0 ms 0x55555684aee8 Program received signal SIGSEGV, Segmentation fault. fill_callchain_info (al=0x7fffffffa120, node=0x55555684aee0, hide_unresolved=false) at util/callchain.c:1119 1119 struct machine *machine = maps__machine(node->ms.maps); 3. Backtrace from gdb (gdb) bt #0 fill_callchain_info (al=0x7fffffffa120, node=0x55555684aee0, hide_unresolved=false) at util/callchain.c:1119 #1 0x00005555556bdbc6 in hist_entry_iter__add (iter=iter@entry=0x7fffffffa160, al=al@entry=0x7fffffffa120, max_stack_depth=, arg=arg@entry=0x7fffffffb570) at util/hist.c:1245 #2 0x00005555555cd098 in process_sample_event (tool=0x7fffffffb570, event=0x7fffeb58be78, sample=0x7fffffffa210, evsel=, machine=0x55555585b8e0) at builtin-report.c:332 #3 0x00005555556958e3 in perf_session__deliver_event (session=0x55555585b730, event=0x7fffeb58be78, tool=0x7fffffffb570, file_offset=12656248, file_path=0x55555585ade0 "/root/perf_data/1/ct1/perf_data") at util/session.c:1645 #4 0x000055555569a5c1 in do_flush (show_progress=false, oe=0x555555862268) at util/ordered-events.c:245 #5 __ordered_events__flush (oe=0x555555862268, how=OE_FLUSH__ROUND, timestamp=) at util/ordered-events.c:324 #6 0x0000555555695cf5 in perf_session__process_user_event (session=0x55555585b730, event=0x7fffec19f7f8, file_offset=25319416, file_path=) at util/session.c:1698 #7 0x00005555556962a8 in reader__read_event (rd=rd@entry=0x7fffffffaef0, session=session@entry=0x55555585b730, prog=prog@entry=0x7fffffffaec0) at util/session.c:2371 #8 0x0000555555697e41 in reader__process_events (prog=0x7fffffffaec0, session=0x55555585b730, rd=0x7fffffffaef0) at util/session.c:2420 #9 __perf_session__process_events (session=0x55555585b730) at util/session.c:2467 #10 perf_session__process_events (session=session@entry=0x55555585b730) at util/session.c:2633 #11 0x00005555555cffcd in __cmd_report (rep=0x7fffffffb570) at builtin-report.c:991 #12 cmd_report (argc=, argv=) at builtin-report.c:1711 #13 0x0000555555631250 in run_builtin (p=p@entry=0x555555840d40 , argc=argc@entry=5, argv=argv@entry=0x7fffffffddd0) at perf.c:323 #14 0x00005555555b6179 in handle_internal_command (argv=0x7fffffffddd0, argc=5) at perf.c:377 #15 run_argv (argv=, argcp=) at perf.c:421 #16 main (argc=5, argv=0x7fffffffddd0) at perf.c:537 4. The line of code at fault. We can see that deferencing maps->machine caused segfault. (gdb) disas Dump of assembler code for function fill_callchain_info: 0x0000555555684100 <+0>: endbr64 0x0000555555684104 <+4>: push %rbp 0x0000555555684105 <+5>: mov %rsp,%rbp 0x0000555555684108 <+8>: push %r14 0x000055555568410a <+10>: push %r13 0x000055555568410c <+12>: mov %rsi,%r13 0x000055555568410f <+15>: push %r12 0x0000555555684111 <+17>: mov %rdi,%r12 0x0000555555684114 <+20>: push %rbx 0x0000555555684115 <+21>: mov %edx,%ebx 0x0000555555684117 <+23>: sub $0x10,%rsp 0x000055555568411b <+27>: mov %fs:0x28,%rax 0x0000555555684124 <+36>: mov %rax,-0x28(%rbp) 0x0000555555684128 <+40>: mov 0x8(%rsi),%rax => 0x000055555568412c <+44>: mov 0x40(%rax),%r14 ... (gdb) list *0x000055555568412c 0x55555568412c is in fill_callchain_info (util/maps.h:81). 76 return &RC_CHK_ACCESS(maps)->entries; 77 } 78 79 static inline struct machine *maps__machine(struct maps *maps) 80 { 81 return RC_CHK_ACCESS(maps)->machine; 82 } 83 84 static inline struct rw_semaphore *maps__lock(struct maps *maps) 85 { (gdb) p/x &(((struct maps *)0)->machine) $1 = 0x40 5. Data structure in trouble. struct maps from node->ms are empty. The address of node->ms is 0x55555684aee8. (gdb) p/x *node $2 = {ip = 0x8348fb8948535441, ms = {maps = 0x0, map = 0x0, sym = 0x0}, srcline = 0x0, valid = 0x0, branch = 0x0, branch_flags = {{value = 0x0, {mispred = 0x0, predicted = 0x0, in_tx = 0x0, abort = 0x0, cycles = 0x0, type = 0x0, spec = 0x0, new_type = 0x0, priv = 0x0, reserved = 0x0}}}, branch_from = 0x0, nr_loop_iter = 0x0, iter_cycles = 0x0, next = 0x555556813730} (gdb) p/x &(node->ms) $3 = 0x55555684aee8 *** BLURB HERE *** Casey Chen (1): perf tool: fix handling NULL al->maps returned from thread__find_map tools/perf/arch/powerpc/util/skip-callchain-idx.c | 10 ++++++---- tools/perf/util/machine.c | 5 +++++ tools/perf/util/unwind-libdw.c | 6 ++++-- 3 files changed, 15 insertions(+), 6 deletions(-) -- 2.45.2 . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Mon, 08 Jul 2024 16:27:20 -0700 Message-ID: <00000000000031fb62061cc4c118@google.com> Subject: [syzbot] [bluetooth?] BUG: workqueue leaked atomic, lock or RCU: kworker/u9:NUM[NUM] From: syzbot To: johan.hedberg@gmail.com, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, luiz.dentz@gmail.com, marcel@holtmann.org, syzkaller-bugs@googlegroups.com Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271314 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bluetooth Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, syzbot found the following issue on: HEAD commit: c6653f49e4fd Merge tag 'powerpc-6.10-4' of git://git.kerne.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=170a1059980000 kernel config: https://syzkaller.appspot.com/x/.config?x=1ace69f521989b1f dashboard link: https://syzkaller.appspot.com/bug?extid=733a96463546d3026b60 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 Unfortunately, I don't have any reproducer for this issue yet. Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/a56f9eb616fa/disk-c6653f49.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/2f09515c2f1b/vmlinux-c6653f49.xz kernel image: https://storage.googleapis.com/syzbot-assets/fdc471b5cbac/bzImage-c6653f49.xz IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+733a96463546d3026b60@syzkaller.appspotmail.com BUG: workqueue leaked atomic, lock or RCU: kworker/u9:0[53] preempt=0x00000000 lock=0->1 RCU=0->0 workfn=hci_rx_work 1 lock held by kworker/u9:0/53: #0: ffff88802f56d518 (&chan->lock/1){+.+.}-{3:3}, at: l2cap_chan_lock include/net/bluetooth/l2cap.h:827 [inline] #0: ffff88802f56d518 (&chan->lock/1){+.+.}-{3:3}, at: l2cap_conless_channel net/bluetooth/l2cap_core.c:6764 [inline] #0: ffff88802f56d518 (&chan->lock/1){+.+.}-{3:3}, at: l2cap_recv_frame+0x7ca/0x10830 net/bluetooth/l2cap_core.c:6830 CPU: 1 PID: 53 Comm: kworker/u9:0 Not tainted 6.10.0-rc6-syzkaller-00223-gc6653f49e4fd #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 Workqueue: hci1 hci_rx_work Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 process_one_work kernel/workqueue.c:3269 [inline] process_scheduled_works+0x1121/0x1830 kernel/workqueue.c:3329 worker_thread+0x86d/0xd50 kernel/workqueue.c:3409 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup . Date: Tue, 9 Jul 2024 10:01:54 +1000 From: Stephen Rothwell To: Huacai Chen , Arnd Bergmann Cc: Huacai Chen , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: manual merge of the loongarch tree with the asm-generic tree Message-ID: <20240709100154.0b4b1372@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/tyAqR0/17fp8Oix9WjZuroh"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271324 org.kernel.vger.linux-next:62101 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/tyAqR0/17fp8Oix9WjZuroh Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the loongarch tree got a conflict in: arch/loongarch/include/uapi/asm/unistd.h between commits: 13aa27ce8de0 ("clone3: drop __ARCH_WANT_SYS_CLONE3 macro") 1d7b98ec5d78 ("loongarch: convert to generic syscall table") from the asm-generic tree and commit: a5d43e6d87c0 ("LoongArch: Define __ARCH_WANT_NEW_STAT in unistd.h") from the loongarch tree. I fixed it up (I think - see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc arch/loongarch/include/uapi/asm/unistd.h index 1f01980f9c94,b344b1f91715..000000000000 --- a/arch/loongarch/include/uapi/asm/unistd.h +++ b/arch/loongarch/include/uapi/asm/unistd.h @@@ -1,3 -1,6 +1,4 @@@ /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ + #define __ARCH_WANT_NEW_STAT -#define __ARCH_WANT_SYS_CLONE -#define __ARCH_WANT_SYS_CLONE3 =20 -#include +#include --Sig_/tyAqR0/17fp8Oix9WjZuroh Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMffIACgkQAVBC80lX 0Gw58wf/ej1lSWnuM4/KpOYRyf7AFxFIGuHEe3PWI66JhSRbE4GQXRwD2ob5i5gx QilnVWse31u809LAQLnnjCTMwuws65cHsOLGP/NRbO9yNIMTUMV+7xV41Uhspf7g zYCI/pxPkvP3v+SMqUGCST/oPHgTCNdsATn9VxjPQQEM7gqCnilsNY3sG79oCkgZ MyXo2aWTglCQr65gOIPzWhue8DthOGT389Kz/rDoANBG4X6MOcFGkG/8tzib/M7U cQ48LBYdgmfQycwV5qWc/H1p9B0Xwnbo4uHAApLQgdXVGxnpa954X6SmcG/ybATs URUTtryewsP0NgceZFCSFuG3IiLnVg== =OLR0 -----END PGP SIGNATURE----- --Sig_/tyAqR0/17fp8Oix9WjZuroh-- . From: "Masami Hiramatsu (Google)" To: LKML , Linux trace kernel Cc: Masami Hiramatsu , Steven Rostedt , Andrii Nakryiko , Francis Laniel , Nikolay Kuratov , bpf@vger.kernel.org Subject: [PATCH for-next v4] tracing/kprobes: Add symbol counting check when module loads Date: Tue, 9 Jul 2024 09:04:36 +0900 Message-Id: <172048347679.185217.9457864992619792356.stgit@devnote2> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271326 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-trace-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Masami Hiramatsu (Google) Currently, kprobe event checks whether the target symbol name is unique or not, so that it does not put a probe on an unexpected place. But this skips the check if the target is on a module because the module may not be loaded. To fix this issue, this patch checks the number of probe target symbols in a target module when the module is loaded. If the probe is not on the unique name symbols in the module, it will be rejected at that point. Note that the symbol which has a unique name in the target module, it will be accepted even if there are same-name symbols in the kernel or other modules, Signed-off-by: Masami Hiramatsu (Google) --- Changes in v4: - Hide find_module() in try_module_get_by_name(). - Add bpf ML. Changes in v3: - Update the patch description. - Update for latest probe/for-next Updated from last October post, which was dropped by test failure: https://lore.kernel.org/linux-trace-kernel/169854904604.132316.12500381416261460174.stgit@devnote2/ Changes in v2: - Fix to skip checking uniqueness if the target module is not loaded. - Fix register_module_trace_kprobe() to pass correct symbol name. - Fix to call __register_trace_kprobe() from module callback. --- kernel/trace/trace_kprobe.c | 138 +++++++++++++++++++++++++++++-------------- 1 file changed, 94 insertions(+), 44 deletions(-) diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index 7fd0f8576e4c..61a6da808203 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c @@ -678,6 +678,21 @@ static int register_trace_kprobe(struct trace_kprobe *tk) } #ifdef CONFIG_MODULES +static int validate_module_probe_symbol(const char *modname, const char *symbol); + +static int register_module_trace_kprobe(struct module *mod, struct trace_kprobe *tk) +{ + const char *p; + int ret = 0; + + p = strchr(trace_kprobe_symbol(tk), ':'); + if (p) + ret = validate_module_probe_symbol(module_name(mod), p + 1); + if (!ret) + ret = __register_trace_kprobe(tk); + return ret; +} + /* Module notifier call back, checking event on the module */ static int trace_kprobe_module_callback(struct notifier_block *nb, unsigned long val, void *data) @@ -696,7 +711,7 @@ static int trace_kprobe_module_callback(struct notifier_block *nb, if (trace_kprobe_within_module(tk, mod)) { /* Don't need to check busy - this should have gone. */ __unregister_trace_kprobe(tk); - ret = __register_trace_kprobe(tk); + ret = register_module_trace_kprobe(mod, tk); if (ret) pr_warn("Failed to re-register probe %s on %s: %d\n", trace_probe_name(&tk->tp), @@ -747,17 +762,81 @@ static int count_mod_symbols(void *data, const char *name, unsigned long unused) return 0; } -static unsigned int number_of_same_symbols(char *func_name) +static unsigned int number_of_same_symbols(const char *mod, const char *func_name) { struct sym_count_ctx ctx = { .count = 0, .name = func_name }; - kallsyms_on_each_match_symbol(count_symbols, func_name, &ctx.count); + if (!mod) + kallsyms_on_each_match_symbol(count_symbols, func_name, &ctx.count); - module_kallsyms_on_each_symbol(NULL, count_mod_symbols, &ctx); + module_kallsyms_on_each_symbol(mod, count_mod_symbols, &ctx); return ctx.count; } +static int validate_module_probe_symbol(const char *modname, const char *symbol) +{ + unsigned int count = number_of_same_symbols(modname, symbol); + + if (count > 1) { + /* + * Users should use ADDR to remove the ambiguity of + * using KSYM only. + */ + return -EADDRNOTAVAIL; + } else if (count == 0) { + /* + * We can return ENOENT earlier than when register the + * kprobe. + */ + return -ENOENT; + } + return 0; +} + +#ifdef CONFIG_MODULES +/* Return NULL if the module is not loaded or under unloading. */ +static struct module *try_module_get_by_name(const char *name) +{ + struct module *mod; + + rcu_read_lock_sched(); + mod = find_module(name); + if (mod && !try_module_get(mod)) + mod = NULL; + rcu_read_unlock_sched(); + + return mod; +} +#else +#define try_module_get_by_name(name) (NULL) +#endif + +static int validate_probe_symbol(char *symbol) +{ + struct module *mod = NULL; + char *modname = NULL, *p; + int ret = 0; + + p = strchr(symbol, ':'); + if (p) { + modname = symbol; + symbol = p + 1; + *p = '\0'; + mod = try_module_get_by_name(modname); + if (!mod) + goto out; + } + + ret = validate_module_probe_symbol(modname, symbol); +out: + if (p) + *p = ':'; + if (mod) + module_put(mod); + return ret; +} + static int trace_kprobe_entry_handler(struct kretprobe_instance *ri, struct pt_regs *regs); @@ -881,6 +960,14 @@ static int __trace_kprobe_create(int argc, const char *argv[]) trace_probe_log_err(0, BAD_PROBE_ADDR); goto parse_error; } + ret = validate_probe_symbol(symbol); + if (ret) { + if (ret == -EADDRNOTAVAIL) + trace_probe_log_err(0, NON_UNIQ_SYMBOL); + else + trace_probe_log_err(0, BAD_PROBE_ADDR); + goto parse_error; + } if (is_return) ctx.flags |= TPARG_FL_RETURN; ret = kprobe_on_func_entry(NULL, symbol, offset); @@ -893,31 +980,6 @@ static int __trace_kprobe_create(int argc, const char *argv[]) } } - if (symbol && !strchr(symbol, ':')) { - unsigned int count; - - count = number_of_same_symbols(symbol); - if (count > 1) { - /* - * Users should use ADDR to remove the ambiguity of - * using KSYM only. - */ - trace_probe_log_err(0, NON_UNIQ_SYMBOL); - ret = -EADDRNOTAVAIL; - - goto error; - } else if (count == 0) { - /* - * We can return ENOENT earlier than when register the - * kprobe. - */ - trace_probe_log_err(0, BAD_PROBE_ADDR); - ret = -ENOENT; - - goto error; - } - } - trace_probe_log_set_index(0); if (event) { ret = traceprobe_parse_event_name(&event, &group, gbuf, @@ -1835,21 +1897,9 @@ create_local_trace_kprobe(char *func, void *addr, unsigned long offs, char *event; if (func) { - unsigned int count; - - count = number_of_same_symbols(func); - if (count > 1) - /* - * Users should use addr to remove the ambiguity of - * using func only. - */ - return ERR_PTR(-EADDRNOTAVAIL); - else if (count == 0) - /* - * We can return ENOENT earlier than when register the - * kprobe. - */ - return ERR_PTR(-ENOENT); + ret = validate_probe_symbol(func); + if (ret) + return ERR_PTR(ret); } /* . Date: Tue, 9 Jul 2024 10:05:36 +1000 From: Stephen Rothwell To: Huacai Chen , Arnaldo Carvalho de Melo , Namhyung Kim Cc: Bibo Mao , Huacai Chen , Ian Rogers , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: manual merge of the loongarch tree with the perf tree Message-ID: <20240709100536.238f4d12@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/a+ilXKgZ+tAeMFl71gmgY2f"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271328 org.kernel.vger.linux-next:62102 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/a+ilXKgZ+tAeMFl71gmgY2f Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the loongarch tree got a conflict in: tools/perf/arch/loongarch/util/Build between commit: e467705a9fb3 ("perf util: Make util its own library") from the perf tree and commit: c4d8557f0f71 ("perf kvm: Add kvm-stat for loongarch64") from the loongarch tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc tools/perf/arch/loongarch/util/Build index 2386ebbf6dd4,b12d374d7096..000000000000 --- a/tools/perf/arch/loongarch/util/Build +++ b/tools/perf/arch/loongarch/util/Build @@@ -1,5 -1,7 +1,7 @@@ -perf-y +=3D header.o -perf-y +=3D perf_regs.o ++perf-util-y +=3D header.o +perf-util-y +=3D perf_regs.o =20 -perf-$(CONFIG_DWARF) +=3D dwarf-regs.o -perf-$(CONFIG_LOCAL_LIBUNWIND) +=3D unwind-libunwind.o -perf-$(CONFIG_LIBDW_DWARF_UNWIND) +=3D unwind-libdw.o -perf-$(CONFIG_LIBTRACEEVENT) +=3D kvm-stat.o +perf-util-$(CONFIG_DWARF) +=3D dwarf-regs.o +perf-util-$(CONFIG_LOCAL_LIBUNWIND) +=3D unwind-libunwind.o +perf-util-$(CONFIG_LIBDW_DWARF_UNWIND) +=3D unwind-libdw.o ++perf-util-$(CONFIG_LIBTRACEEVENT) +=3D kvm-stat.o --Sig_/a+ilXKgZ+tAeMFl71gmgY2f Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMftAACgkQAVBC80lX 0Gyt4Af/QD5jip7UipOwbE7fgRxYLvbsl4IQo/G6xhc3VL7bdeePojG4AAnQ/2LR bPEEAgmCYnSdQodGJtN/rOO4Thxxnus9Ur+u78nbztIom1Tg7fRiaAgd7HwPdWW8 wJvQxy1O5rcwkPTTsK/OxW7vYcnZ9JhDyJdldRZ40MS1BRp2kB6fdMC8AxCTaRVj evDZ7GOc4TwWcO/KMnkYD6wtG+8L/+UDU8C2z8iWnnnD8gVQ4FdTojqpOVBc5NQB 0JzdHoDMQo0qx5PWOWd8/3jFDQ3lNI88ramJi1TB8Y9lpOoteSPZYu6A9UAxkTia iM3vkSWqVwIulZXbf6WG+pI92XmyqQ== =X7Jo -----END PGP SIGNATURE----- --Sig_/a+ilXKgZ+tAeMFl71gmgY2f-- . Date: Tue, 9 Jul 2024 10:13:49 +1000 From: Stephen Rothwell To: Alexandre Torgue , Olof Johansson , Arnd Bergmann Cc: ARM , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: duplicate patches in the stm32 tree Message-ID: <20240709101349.02040caa@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/5=S9=Ywkr+c1nEVexhs0zK_"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271339 org.kernel.vger.linux-next:62103 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/5=S9=Ywkr+c1nEVexhs0zK_ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, The following commits are also in the arm-soc tree as different commits (but the same patches): 1245911be805 ("ARM: multi_v7_defconfig: Add MCP23S08 pinctrl support") 2599b1f071f4 ("ARM: dts: stm32: Document output pins for PWMs on stm32mp1= 35f-dk") 32bc9d195039 ("ARM: dts: stm32: Add ethernet support for DH STM32MP13xx D= HCOR DHSBC board") 3389697affa5 ("arm64: dts: st: add HPDMA nodes on stm32mp251") 55dc557485c7 ("arm64: dts: st: add ethernet1 and ethernet2 support on stm= 32mp25") 5d6c1cef82a0 ("arm64: dts: st: describe power supplies for stm32mp257f-ev= 1 board") 9bcaeb10520a ("ARM: dts: stm32: add ethernet1 for STM32MP135F-DK board") a11b40677a34 ("regulator: Add STM32MP25 regulator bindings") a29ad03d8393 ("arm64: dts: st: add scmi regulators on stm32mp25") a43179fe3f09 ("arm64: dts: st: add eth2 pinctrl entries in stm32mp25-pinc= trl.dtsi") a4a0254811cc ("ARM: dts: stm32: omit unused pinctrl groups from stm32mp13= dtb files") a80ce2d743fb ("ARM: dts: stm32: add ethernet1 and ethernet2 support on st= m32mp13") ba3e48a76df3 ("ARM: dts: stm32: OP-TEE async notif interrupt for ST STM32= MP15x boards") c62c13b4efe4 ("ARM: dts: stm32: add ethernet1/2 RMII pins for STM32MP13F-= DK board") d41b45f29bc3 ("ARM: dts: stm32: order stm32mp13-pinctrl nodes") de2997982cf9 ("arm64: dts: st: enable Ethernet2 on stm32mp257f-ev1 board") --=20 Cheers, Stephen Rothwell --Sig_/5=S9=Ywkr+c1nEVexhs0zK_ Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMgL0ACgkQAVBC80lX 0GylIggAiKlBZwD5EOyhWhidAbirpGT7nGVIDwk1ruUtICoUcPX/Yyg7t9E9nb2R Dqbs8MY3KMrCtwczbuFKl6xZoqeuFxjou28cuGuDUuCGG0fwdtvDoLnNqlqE9dIo AmQuvIXMEPNHmDGS+RVaZVmP5j2lZWULNc6PZEuDOZQTk7KWaMygqR3sznT3izit 85+CF6AzEMIKtr/WzGCADK0sIiJt764PVnKdMYPblypbEZMbdIGCCWisvOyPC//x nZNLCk5qpLmO29LZlCu22Swbx3nHSjbtmbJBHoL5IPra6NVQZPRF4MvhtfxHCFs1 WCBsVzhhJVN3ff2oTsvkGJgybYFr2A== =1vuG -----END PGP SIGNATURE----- --Sig_/5=S9=Ywkr+c1nEVexhs0zK_-- . From: "Alexander F. Lent" Date: Mon, 08 Jul 2024 20:25:26 -0400 Subject: [PATCH v2] accel/ivpu: Add missing MODULE_FIRMWARE metadata X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240708-fix-ivpu-firmware-metadata-v2-1-78b953172026@xanderlent.com> To: "Alexander F. Lent" , Jacek Lawrynowicz , Stanislaw Gruszka , Oded Gabbay , Jeffrey Hugo , Daniel Vetter , Andrzej Kacprowski , Krystian Pradzynski Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271344 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Modules that load firmware from various paths at runtime must declare those paths at compile time, via the MODULE_FIRMWARE macro, so that the firmware paths are included in the module's metadata. The accel/ivpu driver loads firmware but lacks this metadata, preventing dracut from correctly locating firmware files. Fix it. Fixes: 9ab43e95f922 ("accel/ivpu: Switch to generation based FW names") Fixes: 02d5b0aacd05 ("accel/ivpu: Implement firmware parsing and booting") Signed-off-by: Alexander F. Lent --- Hi Jacek, Thank you for the review. I've updated the patch based on your recommendations. Please let me know what you think. --- Changes in v2: - Only annotate the module with the production firmware paths, per review. - Drop macros for de-duping firmware fileames, just use string literals, per review. - Link to v1: https://lore.kernel.org/r/20240705-fix-ivpu-firmware-metadata-v1-1-704b73852d92@xanderlent.com --- drivers/accel/ivpu/ivpu_fw.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c index 1457300828bf..38125cdc8510 100644 --- a/drivers/accel/ivpu/ivpu_fw.c +++ b/drivers/accel/ivpu/ivpu_fw.c @@ -58,6 +58,12 @@ static struct { { IVPU_HW_40XX, "intel/vpu/vpu_40xx_v0.0.bin" }, }; +/* Add module metadata for the production firmware paths. + * This needs to be kept in sync with fw_names above. + */ +MODULE_FIRMWARE("intel/vpu/vpu_37xx_v0.0.bin"); +MODULE_FIRMWARE("intel/vpu/vpu_37xx_v0.0.bin"); + static int ivpu_fw_request(struct ivpu_device *vdev) { int ret = -ENOENT; --- base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826 change-id: 20240704-fix-ivpu-firmware-metadata-3d02bd60768d Best regards, -- Alexander F. Lent . From: D Scott Phillips To: Greg Kroah-Hartman , Andy Shevchenko , AKASHI Takahiro , Alison Schofield , Dan Williams , Baoquan He , Catalin Marinas , Will Deacon , linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, Andrew Morton , "Kirill A. Shutemov" , patches@amperecomputing.com Subject: [PATCH v2] resource: limit request_free_mem_region based on arch_get_mappable_range Date: Mon, 8 Jul 2024 17:27:57 -0700 Message-ID: <20240709002757.2431399-1-scott@os.amperecomputing.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271345 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail On arm64 prior to commit 32697ff38287 ("arm64: vmemmap: Avoid base2 order of struct page size to dimension region"), the amdgpu driver could trip over the warning of: `WARN_ON((start < VMEMMAP_START) || (end > VMEMMAP_END));` in vmemmap_populate()[1]. After that commit, it becomes a translation fault and panic[2]. The cause is that the amdgpu driver allocates some unused space from iomem_resource and claims it as MEMORY_DEVICE_PRIVATE and devm_memremap_pages() it. An address above those backed by the arm64 vmemmap is picked. Limit request_free_mem_region() so that only addresses within the arch_get_mappable_range() can be chosen as device private addresses. [1]: Call trace: vmemmap_populate+0x30/0x48 __populate_section_memmap+0x40/0x90 sparse_add_section+0xfc/0x3e8 __add_pages+0xb4/0x168 pagemap_range+0x300/0x410 memremap_pages+0x184/0x2d8 devm_memremap_pages+0x30/0x90 kgd2kfd_init_zone_device+0xe0/0x1f0 [amdgpu] amdgpu_device_ip_init+0x674/0x888 [amdgpu] amdgpu_device_init+0x7bc/0xed8 [amdgpu] amdgpu_driver_load_kms+0x28/0x1c0 [amdgpu] amdgpu_pci_probe+0x194/0x580 [amdgpu] local_pci_probe+0x48/0xb8 work_for_cpu_fn+0x24/0x40 process_one_work+0x170/0x3e0 worker_thread+0x2ac/0x3e0 kthread+0xf4/0x108 ret_from_fork+0x10/0x20 [2]: Unable to handle kernel paging request at virtual address 000001ffa6000034 Mem abort info: ESR = 0x0000000096000044 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x00000044, ISS2 = 0x00000000 CM = 0, WnR = 1, TnD = 0, TagAccess = 0 GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 user pgtable: 4k pages, 48-bit VAs, pgdp=000008000287c000 [000001ffa6000034] pgd=0000000000000000, p4d=0000000000000000 Call trace: __init_zone_device_page.constprop.0+0x2c/0xa8 memmap_init_zone_device+0xf0/0x210 pagemap_range+0x1e0/0x410 memremap_pages+0x18c/0x2e0 devm_memremap_pages+0x30/0x90 kgd2kfd_init_zone_device+0xf0/0x200 [amdgpu] amdgpu_device_ip_init+0x674/0x888 [amdgpu] amdgpu_device_init+0x7a4/0xea0 [amdgpu] amdgpu_driver_load_kms+0x28/0x1c0 [amdgpu] amdgpu_pci_probe+0x1a0/0x560 [amdgpu] local_pci_probe+0x48/0xb8 work_for_cpu_fn+0x24/0x40 process_one_work+0x170/0x3e0 worker_thread+0x2ac/0x3e0 kthread+0xf4/0x108 ret_from_fork+0x10/0x20 Signed-off-by: D Scott Phillips --- Link to v1: https://lore.kernel.org/all/20240703210707.1986816-1-scott@os.amperecomputing.com/ Changes since v1: - Change from fiddling the architecture's MAX_PHYSMEM_BITS to checking arch_get_mappable_range(). kernel/resource.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/resource.c b/kernel/resource.c index fcbca39dbc450..6f256aa0191b4 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -1832,25 +1832,28 @@ static resource_size_t gfr_start(struct resource *base, resource_size_t size, if (flags & GFR_DESCENDING) { resource_size_t end; - end = min_t(resource_size_t, base->end, + end = min3(base->end, arch_get_mappable_range().end, (1ULL << MAX_PHYSMEM_BITS) - 1); return end - size + 1; } - return ALIGN(base->start, align); + return ALIGN(max_t(resource_size_t, base->start, + arch_get_mappable_range().start), align); } static bool gfr_continue(struct resource *base, resource_size_t addr, resource_size_t size, unsigned long flags) { + if (flags & GFR_DESCENDING) - return addr > size && addr >= base->start; + return addr > size && addr >= base->start && + addr >= arch_get_mappable_range().start; /* * In the ascend case be careful that the last increment by * @size did not wrap 0. */ return addr > addr - size && - addr <= min_t(resource_size_t, base->end, + addr <= min3(base->end, arch_get_mappable_range().end, (1ULL << MAX_PHYSMEM_BITS) - 1); } -- 2.45.2 . Sender: Tejun Heo From: Tejun Heo To: ast@kernel.org, andrii@kernel.org Cc: linux-kernel@vger.kernel.org, bpf@vger.kernel.org, void@manifault.com, kernel-team@meta.com Subject: [PATCHSET v5 sched_ext/for-6.11] sched_ext: Implement DSQ iterator Date: Mon, 8 Jul 2024 14:40:21 -1000 Message-ID: <20240709004041.1111039-1-tj@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271347 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail DSQs are very opaque in the consumption path. The BPF scheduler has no way of knowing which tasks are being considered and which is picked. This patchset adds BPF DSQ iterator to allow BPF schedulers more flexibility in how DSQs are used. See the 0002 patch for more details. Changes from v4 (https://lore.kernel.org/all/Zn9oEjsm_1aWb35J@slm.duckdns.org/): - Comment added to clarify use of naked list_empty(&dsq->list) test. - scx_qmap changes separated into its own patch (0003). There are no functional changes since v4. I'll apply these patches to sched_ext/for-6.11 with the outstanding acks. This patchset contains the following three patches: 0001-sched_ext-Take-out-priq-and-flags-from-scx_dsq_node.patch 0002-sched_ext-Implement-DSQ-iterator.patch 0003-sched_ext-scx_qmap-Add-an-example-usage-of-DSQ-itera.patch and is also availalbe in the following git branch: git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-dsq-iter-v5 diffstat follows. Thanks. include/linux/sched/ext.h | 13 +- init/init_task.c | 2 kernel/sched/ext.c | 244 ++++++++++++++++++++++++++++++++++++++++++++++------- tools/sched_ext/include/scx/common.bpf.h | 3 tools/sched_ext/scx_qmap.bpf.c | 25 +++++ tools/sched_ext/scx_qmap.c | 8 + 6 files changed, 259 insertions(+), 36 deletions(-) -- tejun . Date: Tue, 9 Jul 2024 10:57:09 +1000 From: Stephen Rothwell To: Arnd Bergmann , Christian Brauner Cc: Christian =?UTF-8?B?R8O2dHRzY2hl?= , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: manual merge of the vfs-brauner tree with the asm-generic tree Message-ID: <20240709105709.18ce785d@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/u_6tWU9N=/p6=6h78vKxFym"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271358 org.kernel.vger.linux-next:62104 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/u_6tWU9N=/p6=6h78vKxFym Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the fs-next tree got conflicts in: arch/arm64/include/asm/unistd.h arch/arm64/include/asm/unistd32.h between commit: ea0130bf3c45 ("arm64: convert unistd_32.h to syscall.tbl format") from the asm-generic tree and commit: e6873349f700 ("fs/xattr: add *at family syscalls") from the vfs-brauner tree. I fixed it up (I used the former versions) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell --Sig_/u_6tWU9N=/p6=6h78vKxFym Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMiuUACgkQAVBC80lX 0Gxazgf9GtsVw4zw0bMnVtzUPbNw8+v1fDLVlAShS/iQvKXh7iueCGjfEtK41zwB loeSGQxU/k03Un0vgdy6Bb2dht247UEo5DZuH+Ao7tAQQDr19teUM1jo2nUENTs1 IU4Adh4oJA6rg7aRsZtz0RUGXsOPRaIrEFjfj/oSDi+5tK+Dv+6Mi9p3s5xsv93T dp25Pu6HiW2rF6kB+mPGxOR9caOAC0Gpqm4lD/KKPFiVaaEbQZWbFqT3wruUY0z2 pfj5D+n0QW73eOqDRlsKlQ3sfXTEEXr/SaExu2u3tBZ4b8v8LyOLNL6Eus1SxmgY jkP4C2dnPcTGwpQuKSlnBY0aWIxFkA== =wYly -----END PGP SIGNATURE----- --Sig_/u_6tWU9N=/p6=6h78vKxFym-- . Date: Tue, 9 Jul 2024 08:57:59 +0800 (CST) Message-ID: <20240709085759651a9uzGqelMTphJR2RrB4lI@zte.com.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: , , , , , , , , , , , , , , , , Subject: =?UTF-8?B?W1BBVENIIGxpbnV4LW5leHQgdjNdIHNjaGVkL2NvcmU6IEFkZCBXQVJOX09OX09OQ0UoKSB0byBjaGVjayBvdmVyZmxvdyBmb3IgbWlncmF0ZV9kaXNhYmxl?= Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271360 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Peilin He Background ========== When repeated migrate_disable() calls are made with missing the corresponding migrate_enable() calls, there is a risk of 'migration_disabled' going upper overflow because 'migration_disabled' is a type of unsigned short whose max value is 65535. In PREEMPT_RT kernel, if 'migration_disabled' goes upper overflow, it may make the migrate_disable() ineffective within local_lock_irqsave(). This is because, during the scheduling procedure, the value of 'migration_disabled' will be checked, which can trigger CPU migration. Consequently, the count of 'rcu_read_lock_nesting' may leak due to local_lock_irqsave() and local_unlock_irqrestore() occurring on different CPUs. Usecase ======== For example, When I developed a driver, I encountered a warning like "WARNING: CPU: 4 PID: 260 at kernel/rcu/tree_plugin.h:315 rcu_note_context_switch+0xa8/0x4e8" warning. It took me half a month to locate this issue. Ultimately, I discovered that the lack of upper overflow detection mechanism in migrate_disable() was the root cause, leading to a significant amount of time spent on problem localization. If the upper overflow detection mechanism was added to migrate_disable(), the root cause could be very quickly and easily identified. Effect ====== Using WARN_ON_ONCE() to check if 'migration_disabled' is upper overflow can help developers identify the issue quickly. Signed-off-by: Peilin He Signed-off-by: xu xin Reviewed-by: Yunkai Zhang Reviewed-by: Qiang Tu Reviewed-by: Kun Jiang Reviewed-by: Fan Yu Cc: Yang Yang Cc: Liu Chun Suggested-by: Peter Zijlstra --- v2->v3: Some fixes according to: https://lore.kernel.org/all/20240704134716.GU11386@noisy.programming.kicks-ass.net/ 1.Convert p->migration_disabled to a signed type and check earlier. 2.Add overflow check for p->migration_disabled in migrate.enable(). 3.Check for overflow on debug builds. v1->v2: Some fixes according to: https://lore.kernel.org/all/20240702124334.762dbd5a@rorschach.local.home/ 1.Merge if conditions into WARN(). 2.Remove the newline character '\n'. Right, we don't need the redundant \n. kernel/sched/core.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 8cc4975d6b2b..1992f2848732 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2259,6 +2259,12 @@ void migrate_disable(void) struct task_struct *p = current; if (p->migration_disabled) { +#ifdef CONFIG_DEBUG_PREEMPT + /* + *Warn about overflow half-way through the range. + */ + WARN_ON_ONCE((s16)p->migration_disabled < 0); +#endif p->migration_disabled++; return; } @@ -2277,14 +2283,20 @@ void migrate_enable(void) .flags = SCA_MIGRATE_ENABLE, }; +#ifdef CONFIG_DEBUG_PREEMPT + /* + * Check both overflow from migrate_disable() and superfluous + * migrate_enable(). + */ + if (WARN_ON_ONCE((s16)p->migration_disabled <= 0)) + return; +#endif + if (p->migration_disabled > 1) { p->migration_disabled--; return; } - if (WARN_ON_ONCE(!p->migration_disabled)) - return; - /* * Ensure stop_task runs either before or after this, and that * __set_cpus_allowed_ptr(SCA_MIGRATE_ENABLE) doesn't schedule(). -- 2.17.1 . From: David Lechner To: Mark Brown , Oleksij Rempel , Marc Kleine-Budde Cc: David Lechner , Jonathan Cameron , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 0/3] spi: fix spi-mux/spi_optimize_message() compatibility Date: Mon, 8 Jul 2024 20:05:27 -0500 Message-ID: <20240708-spi-mux-fix-v1-0-6c8845193128@baylibre.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271363 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-spi Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Since the spi-mux controller driver is doing unusual things with SPI messages, it needs special handling with regard to spi_optimize_message and friends. The main fix along with a detailed explanation is in the second patch. The first patch is another unrelated general fix that I noticed while working on this. And the third patch is not exactly related, but I needed it for the particular peripheral driver I was using for testing the main fix. I tested this for both cases when spi_optimize_message() is called to pre-optimize a message and when it is not. --- David Lechner (3): spi: don't unoptimize message in spi_async() spi: add defer_optimize_message controller flag spi: mux: set ctlr->bits_per_word_mask drivers/spi/spi-mux.c | 2 ++ drivers/spi/spi.c | 20 +++++++++++++++++--- include/linux/spi/spi.h | 4 ++++ 3 files changed, 23 insertions(+), 3 deletions(-) --- base-commit: f42920e81a8f5f9fdf4a46b233ae14c22996e52b change-id: 20240708-spi-mux-fix-6e2da5b5673d Best regards, -- David Lechner . From: Youling Tang To: Kent Overstreet Cc: linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org, Youling Tang , Youling Tang Subject: [PATCH 1/2] bcachefs: Add support for FS_IOC_GETFSUUID Date: Tue, 9 Jul 2024 09:11:33 +0800 Message-Id: <20240709011134.79954-1-youling.tang@linux.dev> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271370 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bcachefs Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Kent Overstreet Use super_set_uuid() to set `sb->s_uuid_len` to avoid returning `-ENOTTY` with sb->s_uuid_len being 0. Original patch link: [1]: https://lore.kernel.org/all/20240207025624.1019754-2-kent.overstreet@linux.dev/ Signed-off-by: Kent Overstreet Signed-off-by: Youling Tang --- fs/bcachefs/fs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c index 3ea8dbc4d8e4..011ee5075a52 100644 --- a/fs/bcachefs/fs.c +++ b/fs/bcachefs/fs.c @@ -1977,7 +1977,7 @@ static int bch2_fs_get_tree(struct fs_context *fc) sb->s_time_gran = c->sb.nsec_per_time_unit; sb->s_time_min = div_s64(S64_MIN, c->sb.time_units_per_sec) + 1; sb->s_time_max = div_s64(S64_MAX, c->sb.time_units_per_sec); - sb->s_uuid = c->sb.user_uuid; + super_set_uuid(sb, c->sb.user_uuid.b, sizeof(c->sb.user_uuid)); sb->s_shrink->seeks = 0; c->vfs_sb = sb; strscpy(sb->s_id, c->name, sizeof(sb->s_id)); -- 2.34.1 . From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: chrisl@kernel.org, david@redhat.com, hanchuanhua@oppo.com, kasong@tencent.com, linux-kernel@vger.kernel.org, ryan.roberts@arm.com, v-songbaohua@oppo.com, ying.huang@intel.com Subject: [PATCH v2] mm: Extend 'usage' parameter so that cluster_swap_free_nr() can be reused Date: Tue, 9 Jul 2024 13:21:22 +1200 Message-Id: <20240709012122.16994-1-21cnbao@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271373 org.kvack.linux-mm:203000 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Barry Song Extend a usage parameter so that cluster_swap_free_nr() can be reused by both swapcache_clear() and swap_free(). __swap_entry_free() is quite similar but more tricky as it requires the return value of __swap_entry_free_locked() which cluster_swap_free_nr() doesn't support. Cc: "Huang, Ying" Cc: Chris Li Cc: Ryan Roberts Cc: Kairui Song Cc: David Hildenbrand Cc: Chuanhua Han Signed-off-by: Barry Song --- mm/swapfile.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/mm/swapfile.c b/mm/swapfile.c index f7224bc1320c..c097c513db02 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1352,7 +1352,8 @@ static void swap_entry_free(struct swap_info_struct *p, swp_entry_t entry) } static void cluster_swap_free_nr(struct swap_info_struct *sis, - unsigned long offset, int nr_pages) + unsigned long offset, int nr_pages, + unsigned char usage) { struct swap_cluster_info *ci; DECLARE_BITMAP(to_free, BITS_PER_LONG) = { 0 }; @@ -1362,7 +1363,7 @@ static void cluster_swap_free_nr(struct swap_info_struct *sis, while (nr_pages) { nr = min(BITS_PER_LONG, nr_pages); for (i = 0; i < nr; i++) { - if (!__swap_entry_free_locked(sis, offset + i, 1)) + if (!__swap_entry_free_locked(sis, offset + i, usage)) bitmap_set(to_free, i, 1); } if (!bitmap_empty(to_free, BITS_PER_LONG)) { @@ -1396,7 +1397,7 @@ void swap_free_nr(swp_entry_t entry, int nr_pages) while (nr_pages) { nr = min_t(int, nr_pages, SWAPFILE_CLUSTER - offset % SWAPFILE_CLUSTER); - cluster_swap_free_nr(sis, offset, nr); + cluster_swap_free_nr(sis, offset, nr, 1); offset += nr; nr_pages -= nr; } @@ -3492,15 +3493,9 @@ int swapcache_prepare(swp_entry_t entry) void swapcache_clear(struct swap_info_struct *si, swp_entry_t entry) { - struct swap_cluster_info *ci; unsigned long offset = swp_offset(entry); - unsigned char usage; - ci = lock_cluster_or_swap_info(si, offset); - usage = __swap_entry_free_locked(si, offset, SWAP_HAS_CACHE); - unlock_cluster_or_swap_info(si, ci); - if (!usage) - free_swap_slot(entry); + cluster_swap_free_nr(si, offset, 1, SWAP_HAS_CACHE); } struct swap_info_struct *swp_swap_info(swp_entry_t entry) -- 2.34.1 . From: George Liu To: linux-aspeed@lists.ozlabs.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, George Liu Subject: [PATCH v3] dt-bindings: vendor-prefixes: Add prefix for ieisystem Date: Tue, 9 Jul 2024 09:22:43 +0800 Message-Id: <20240709012243.44810-1-liuxiwei@ieisystem.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271374 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add a vendor prefix entry for ieisystem Signed-off-by: George Liu --- v2 -> v3 - match Signed-off-by email --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 573578db9509..0ffa8d06aea9 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -609,6 +609,8 @@ patternProperties: description: IC Plus Corp. "^idt,.*": description: Integrated Device Technologies, Inc. + "^ieit,.*": + description: IEIT SYSTEMS Co.,Ltd. "^ifi,.*": description: Ingenieurburo Fur Ic-Technologie (I/F/I) "^ilitek,.*": -- 2.34.1 . From: Chen Ni To: gupt21@gmail.com, jikos@kernel.org, bentiss@kernel.org Cc: linux-i2c@vger.kernel.org, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, Chen Ni Subject: [PATCH v2] HID: mcp2221: Remove unnecessary semicolon Date: Tue, 9 Jul 2024 09:22:23 +0800 Message-Id: <20240709012223.17393-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271375 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c,org.kernel.vger.linux-input Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Remove unnecessary semicolon at the end of the switch statement. This is detected by coccinelle. Signed-off-by: Chen Ni --- Changelog: v1 -> v2: 1. Update commit message. 2. Remove Fixes tag. --- drivers/hid/hid-mcp2221.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/hid/hid-mcp2221.c b/drivers/hid/hid-mcp2221.c index da5ea5a23b08..0f93c22a479f 100644 --- a/drivers/hid/hid-mcp2221.c +++ b/drivers/hid/hid-mcp2221.c @@ -1048,7 +1048,7 @@ static int mcp_iio_channels(struct mcp2221 *mcp) break; default: continue; - }; + } chan->type = IIO_VOLTAGE; chan->indexed = 1; -- 2.25.1 . Date: Tue, 9 Jul 2024 11:25:44 +1000 From: Stephen Rothwell To: Jiri Kosina , Benjamin Tissoires , Andrew Morton Cc: Benjamin Tissoires , Linux Kernel Mailing List , Linux Next Mailing List , Suren Baghdasaryan Subject: linux-next: manual merge of the hid tree with the mm tree Message-ID: <20240709112544.190ffda4@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/NAVrAfdl4p6hXZzxs31WWAi"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271377 org.kernel.vger.linux-next:62105 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/NAVrAfdl4p6hXZzxs31WWAi Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the hid tree got a conflict in: include/linux/hid_bpf.h between commit: bad8443fbbca ("mm: add comments for allocation helpers explaining why the= y are macros") from the mm-unstable branch of the mm tree and commit: 6cd735f0e57a ("HID: bpf: protect HID-BPF prog_list access by a SRCU") from the hid tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc include/linux/hid_bpf.h index 99a3edb6cf07,9ca96fc90449..000000000000 --- a/include/linux/hid_bpf.h +++ b/include/linux/hid_bpf.h @@@ -151,12 -227,7 +227,12 @@@ static inline int dispatch_hid_bpf_outp static inline int hid_bpf_connect_device(struct hid_device *hdev) { retur= n 0; } static inline void hid_bpf_disconnect_device(struct hid_device *hdev) {} static inline void hid_bpf_destroy_device(struct hid_device *hid) {} - static inline void hid_bpf_device_init(struct hid_device *hid) {} + static inline int hid_bpf_device_init(struct hid_device *hid) { return 0;= } +/* + * This specialized allocator has to be a macro for its allocations to be + * accounted separately (to have a separate alloc_tag). The typecast is + * intentional to enforce typesafety. + */ #define call_hid_bpf_rdesc_fixup(_hdev, _rdesc, _size) \ ((u8 *)kmemdup(_rdesc, *(_size), GFP_KERNEL)) =20 --Sig_/NAVrAfdl4p6hXZzxs31WWAi Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMkZgACgkQAVBC80lX 0GwhXAf/R4CzLIOh2qhlhRwz/o6XJpfm54jmwD1728EsE7aJO6F90p4or3F5Nxw9 3GfOJJACY7iffkQJqB7/u0BI5qGl5ZaaO1TzJgrX3Wbz/4snzfCoR7WXxcx0QXwp 1q7TeQn1hIRi9SaRycqOqeXN1dJX9VI2J4OMg+UpTWdTvm1iQA08DOwIs+KE9hEB 9W+SjbfybpPvfwHiDzN+K0x7jkxJDUfdoTYgVeQ92kPIrSaq05BeHhRnizQ4SdTE +Wv27yTRxy3nSYKfEejr+N4AbYfWL/0ydEoxYi1VJRY2yxWzI5/lX15h1E5HaWaU 2IROVCneh6teWhlch8YzCEBIV6giOQ== =Zrzc -----END PGP SIGNATURE----- --Sig_/NAVrAfdl4p6hXZzxs31WWAi-- . X-Iguazu-Qid: 2yAaT64FYgJTTafAum X-Iguazu-QSIG: v=2; s=0; t=1720484069; q=2yAaT64FYgJTTafAum; m=jQG016lu/7vjGIW8QL8mHidGAmurOhAtj8fW3xeXfy4= X-SA-MID: 26358967 From: Yuji Ishikawa To: Hans Verkuil , Laurent Pinchart , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown , Sakari Ailus , Nobuhiro Iwamatsu , Yuji Ishikawa Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v11 0/6] Add Toshiba Visconti Video Input Interface driver Date: Tue, 9 Jul 2024 09:08:42 +0900 X-TSB-HOP2: ON Message-Id: <20240709000848.1108788-1-yuji2.ishikawa@toshiba.co.jp> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271387 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-media Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series is the Video Input Interface driver for Toshiba's ARM SoC, Visconti. This provides DT binding documentation, device driver, documentation and MAINTAINER files. A visconti VIIF driver instance exposes 1 media control device file, 3 video device files for capture and 2 video device files for controlling image signal processor. Detailed HW/SW are described in documentation directory. The VIIF hardware has CSI2 receiver, image signal processor and DMAC inside. The subdevice for image signal processor provides vendor specific V4L2 controls. The device driver depends on two other drivers under development; clock framework driver and IOMMU driver. Corresponding features will be added later. Best regards, Yuji Changelog v2: - Resend v1 because a patch exceeds size limit. Changelog v3: - Add documentation to describe SW and HW - Adapted to media control framework - Introduced ISP subdevice, capture device - Remove private IOCTLs and add vendor specific V4L2 controls - Change function name avoiding camelcase and uppercase letters Changelog v4: - Split patches because a patch exceeds size limit - fix dt-bindings document - stop specifying ID numbers for driver instance explicitly at device tree - use pm_runtime to trigger initialization of HW along with open/close of device files. - add a entry for a header file at MAINTAINERS file Changelog v5: - Fix coding style problem in viif.c (patch 2/6) Changelog v6: - add register definition of BUS-IF and MPU in dt-bindings - add CSI2RX subdevice (separeted from ISP subdevice) - change directory layout (moved to media/platform/toshiba/visconti) - change source file layout (removed hwd_xxxx.c) - pointer to userland memory is removed from uAPI parameters - change register access (from struct style to macro style) - remove unused macros Changelog v7: - remove redundant "bindings" from header and description text - fix multiline text of "description" - change "compatible" to "visconti5-viif" - explicitly define allowed properties for port::endpoint - remove unused variables - update kerneldoc comments - update references to headers Changelog v8: - rename bindings description file - remove/simplify items in bindings - update operations around v4l2_async_notifier - use v4l2_async_connection instead of v4l2_async_subdev - use dev_err_probe() - better error handling at probe - remove redundant mutex - add V4L2_CTRL_TYPE_VISCONTI_ISP constant Changelog v9: - dictionary ordering of dt-bindings properties - applied sparce checker - call div64_u64 for 64bit division - rebase to media_staging tree - fix warning for cast between ptr and dma_addr_t Changelog v10: - add an independent entry in MAINTAINERS - add paddings to uAPI structs - use parameter buffer to control ISP (instead of vendor specific controls) Changelog v11: - stop merging sensor's controls and capture device's - fix strange indents at initializations - remove feature VB2_USERPTR from viif_params and viif_stats - fix usage in the document Yuji Ishikawa (6): dt-bindings: media: platform: visconti: Add Toshiba Visconti Video Input Interface media: videodev2.h: add visconti viif meta buffer format media: platform: visconti: Add Toshiba Visconti Video Input Interface driver media: platform: visconti: add streaming interface for ISP parameters and status documentation: media: add documentation for Toshiba Visconti Video Input Interface driver MAINTAINERS: Add entries for Toshiba Visconti Video Input Interface .../admin-guide/media/v4l-drivers.rst | 1 + .../admin-guide/media/visconti-viif.dot | 18 + .../admin-guide/media/visconti-viif.rst | 255 +++ .../media/toshiba,visconti5-viif.yaml | 105 + .../userspace-api/media/v4l/meta-formats.rst | 1 + .../media/v4l/metafmt-visconti-viif.rst | 48 + MAINTAINERS | 11 + drivers/media/platform/Kconfig | 1 + drivers/media/platform/Makefile | 1 + drivers/media/platform/toshiba/Kconfig | 6 + drivers/media/platform/toshiba/Makefile | 2 + .../media/platform/toshiba/visconti/Kconfig | 19 + .../media/platform/toshiba/visconti/Makefile | 8 + .../media/platform/toshiba/visconti/viif.c | 651 ++++++ .../media/platform/toshiba/visconti/viif.h | 393 ++++ .../platform/toshiba/visconti/viif_capture.c | 1431 ++++++++++++ .../platform/toshiba/visconti/viif_capture.h | 21 + .../platform/toshiba/visconti/viif_common.c | 239 ++ .../platform/toshiba/visconti/viif_common.h | 42 + .../platform/toshiba/visconti/viif_csi2rx.c | 657 ++++++ .../platform/toshiba/visconti/viif_csi2rx.h | 24 + .../toshiba/visconti/viif_csi2rx_regs.h | 102 + .../platform/toshiba/visconti/viif_isp.c | 1190 ++++++++++ .../platform/toshiba/visconti/viif_isp.h | 24 + .../platform/toshiba/visconti/viif_params.c | 2020 +++++++++++++++++ .../platform/toshiba/visconti/viif_params.h | 19 + .../platform/toshiba/visconti/viif_regs.h | 721 ++++++ .../platform/toshiba/visconti/viif_stats.c | 336 +++ .../platform/toshiba/visconti/viif_stats.h | 14 + include/uapi/linux/videodev2.h | 4 + include/uapi/linux/visconti_viif.h | 1921 ++++++++++++++++ 31 files changed, 10285 insertions(+) create mode 100644 Documentation/admin-guide/media/visconti-viif.dot create mode 100644 Documentation/admin-guide/media/visconti-viif.rst create mode 100644 Documentation/devicetree/bindings/media/toshiba,visconti5-viif.yaml create mode 100644 Documentation/userspace-api/media/v4l/metafmt-visconti-viif.rst create mode 100644 drivers/media/platform/toshiba/Kconfig create mode 100644 drivers/media/platform/toshiba/Makefile create mode 100644 drivers/media/platform/toshiba/visconti/Kconfig create mode 100644 drivers/media/platform/toshiba/visconti/Makefile create mode 100644 drivers/media/platform/toshiba/visconti/viif.c create mode 100644 drivers/media/platform/toshiba/visconti/viif.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_capture.c create mode 100644 drivers/media/platform/toshiba/visconti/viif_capture.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_common.c create mode 100644 drivers/media/platform/toshiba/visconti/viif_common.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_csi2rx.c create mode 100644 drivers/media/platform/toshiba/visconti/viif_csi2rx.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_csi2rx_regs.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_isp.c create mode 100644 drivers/media/platform/toshiba/visconti/viif_isp.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_params.c create mode 100644 drivers/media/platform/toshiba/visconti/viif_params.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_regs.h create mode 100644 drivers/media/platform/toshiba/visconti/viif_stats.c create mode 100644 drivers/media/platform/toshiba/visconti/viif_stats.h create mode 100644 include/uapi/linux/visconti_viif.h -- 2.25.1 . From: Slark Xiao To: manivannan.sadhasivam@linaro.org Cc: mhi@lists.linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Slark Xiao Subject: [PATCH] bus: mhi: host: Add firehose support for Foxconn SDX24/SDX55/SDX65 Date: Tue, 9 Jul 2024 09:58:18 +0800 Message-Id: <20240709015818.110384-1-slark_xiao@163.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271394 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.mhi,org.kernel.vger.linux-arm-msm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Since we implement the FIREHOSE channel support in foxconn mhi channels, that means each product which use this channel config would support FIREHOSE. But according to the trigger_edl feature, we need to enable it by adding '.edl_trigger = true' in device info struct. Also, we update all edl image path from 'qcom' to 'fox' in case of conflicting with other vendors. Signed-off-by: Slark Xiao --- drivers/bus/mhi/host/pci_generic.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c index 14a11880bcea..440609b81e57 100644 --- a/drivers/bus/mhi/host/pci_generic.c +++ b/drivers/bus/mhi/host/pci_generic.c @@ -433,8 +433,8 @@ static const struct mhi_controller_config modem_foxconn_sdx72_config = { static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = { .name = "foxconn-sdx55", - .fw = "qcom/sdx55m/sbl1.mbn", - .edl = "qcom/sdx55m/edl.mbn", + .edl = "fox/sdx55m/prog_firehose_sdx55.mbn", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, @@ -444,8 +444,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = { static const struct mhi_pci_dev_info mhi_foxconn_t99w175_info = { .name = "foxconn-t99w175", - .fw = "qcom/sdx55m/sbl1.mbn", - .edl = "qcom/sdx55m/edl.mbn", + .edl = "fox/sdx55m/prog_firehose_sdx55.mbn", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, @@ -455,8 +455,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_t99w175_info = { static const struct mhi_pci_dev_info mhi_foxconn_dw5930e_info = { .name = "foxconn-dw5930e", - .fw = "qcom/sdx55m/sbl1.mbn", - .edl = "qcom/sdx55m/edl.mbn", + .edl = "fox/sdx55m/prog_firehose_sdx55.mbn", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, @@ -466,6 +466,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_dw5930e_info = { static const struct mhi_pci_dev_info mhi_foxconn_t99w368_info = { .name = "foxconn-t99w368", + .edl = "fox/sdx65m/prog_firehose_lite.elf", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, @@ -475,6 +477,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_t99w368_info = { static const struct mhi_pci_dev_info mhi_foxconn_t99w373_info = { .name = "foxconn-t99w373", + .edl = "fox/sdx65m/prog_firehose_lite.elf", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, @@ -484,6 +488,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_t99w373_info = { static const struct mhi_pci_dev_info mhi_foxconn_t99w510_info = { .name = "foxconn-t99w510", + .edl = "fox/sdx24m/prog_firehose_sdx24.mbn", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, @@ -493,6 +499,8 @@ static const struct mhi_pci_dev_info mhi_foxconn_t99w510_info = { static const struct mhi_pci_dev_info mhi_foxconn_dw5932e_info = { .name = "foxconn-dw5932e", + .edl = "fox/sdx65m/prog_firehose_lite.elf", + .edl_trigger = true, .config = &modem_foxconn_sdx55_config, .bar_num = MHI_PCI_DEFAULT_BAR_NUM, .dma_data_width = 32, -- 2.25.1 . From: Hilda Wu To: CC: , , , , , , , , Subject: [PATCH v2] Bluetooth: btrtl: Fixup SCO header Date: Tue, 9 Jul 2024 10:03:26 +0800 Message-ID: <20240709020326.4131686-1-hildawu@realtek.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271400 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bluetooth Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In some platform found unknown connection handle case when HFP. The unknown connection handle may affect SCO audio sound quality. The unknown connection handle case found in some Realtek chip. This issue only occurs in (e)SCO, does not affect ACLs. So validate SCO header, fixup the invalid connection handle and length for avoiding influence SCO audio. The following btmon excerpts are part of SCO packets in HCI log, The following are the case to be fixup. > SCO Data RX: Handle 11 flags 0x00 dlen 72 #23327 [hci0] 132.343418 8c a3 55 4f 8a d5 56 e9 35 56 37 8d 55 87 53 55 ..UO..V.5V7.U.SU 59 66 d5 57 1d b5 54 00 01 08 ad 00 00 e0 10 00 Yf.W..T......... 00 00 85 c6 d5 60 e9 b5 52 94 6d 54 e4 9b 55 b1 .....`..R.mT..U. b6 d5 62 91 b5 57 84 6d 56 e4 5b 55 75 c6 d5 51 ..b..W.mV.[Uu..Q 2d b5 53 9a 6d 54 a5 1b -.S.mT.. < SCO Data TX: Handle 11 flags 0x00 dlen 72 #23328 [hci0] 132.343600 01 c8 ad 00 00 aa db ba aa a9 72 b4 d9 5d af 14 ..........r..].. 53 0c 75 b0 a6 f3 8a 51 b3 54 17 b1 a6 d5 62 c5 S.u....Q.T....b. d5 6b 35 29 8d c5 1c 56 4c 24 96 9b 8d b5 d7 1a .k5)...VL$...... b2 8d bc da 3b 8c 46 ae 1d 4d a4 04 01 f8 ad 00 ....;.F..M...... 00 3d ec bb a9 98 8b 28 .=.....( > SCO Data RX: Handle 11 flags 0x00 dlen 72 #23329 [hci0] 132.353419 55 55 c6 d5 62 29 b5 57 b2 6d 54 00 01 38 ad 00 UU..b).W.mT..8.. 00 e0 10 00 00 00 0b 00 d5 62 55 c6 57 b2 29 b5 .........bU.W.). 00 01 6d 54 00 00 38 ad 00 00 e0 10 00 00 00 92 ..mT..8......... 36 d5 5a ed b5 58 6c 6d 55 b3 1b 55 6b 26 d5 52 6.Z..XlmU..Uk&.R d1 b5 54 23 6d 56 82 db ..T#mV.. < SCO Data TX: Handle 11 flags 0x00 dlen 72 #23330 [hci0] 132.353581 6d 5b be db 89 34 66 e9 fa 99 a6 6e e5 6d 9f 1a m[...4f....n.m.. 1c 57 d2 66 92 63 98 99 a9 3b 8a 6c 3e 5b 5a 34 .W.f.c...;.l>[Z4 a4 96 e2 21 21 8c f8 88 0f 3d e0 52 48 85 18 00 ...!!....=.RH... 01 08 ad 00 00 0c eb ba a9 a8 28 ca 9a d0 3c 33 ..........(...<3 45 4a f9 90 fb ca 4b 39 EJ....K9 > SCO Data RX: Handle 2901 flags 0x0a dlen 54 #23331 [hci0] 132.373416 d5 48 a9 b5 56 aa 6d 56 d2 db 55 75 36 d5 56 2d .H..V.mV..Uu6.V- b5 57 5b 6d 54 00 0b 00 48 01 c8 ad 00 00 e0 10 .W[mT...H....... 00 00 00 5e c6 d5 56 e1 b5 56 43 6d 55 ca db 55 ...^..V..VCmU..U 7d c6 d5 5b 31 b5 This is HCI SCO data RX packets. The packet 23327 was a normal HCI SCO data RX packet. The packet 23329 was the abnormal HCI SCO data RX packet. The packet 23331 was the invalid connection handle with wrong payload size affected by the packet 23329 HCI SCO Data RX packet. It’s the packet that needs to be processed. Signed-off-by: Alex Lu Signed-off-by: Hilda Wu --- Change in v2: - Adjust implementation - Modify the commit log and title to make it more relevant to this commit (Thanks to the reviewer for suggestion, which reminded us of a new method) --- --- drivers/bluetooth/btrtl.c | 5 +++++ drivers/bluetooth/btrtl.h | 1 + drivers/bluetooth/btusb.c | 25 +++++++++++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c index f2f37143c454..d5d802837ec6 100644 --- a/drivers/bluetooth/btrtl.c +++ b/drivers/bluetooth/btrtl.c @@ -1300,6 +1300,11 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev) btrtl_dev->project_id == CHIP_ID_8852C) set_bit(HCI_QUIRK_USE_MSFT_EXT_ADDRESS_FILTER, &hdev->quirks); + if (btrtl_dev->project_id == CHIP_ID_8822C || + btrtl_dev->project_id == CHIP_ID_8852A || + btrtl_dev->project_id == CHIP_ID_8852B) + btrealtek_set_flag(hdev, REALTEK_SCO_HDR_FIXUP); + hci_set_aosp_capable(hdev); break; default: diff --git a/drivers/bluetooth/btrtl.h b/drivers/bluetooth/btrtl.h index a2d9d34f9fb0..d10ce768fef1 100644 --- a/drivers/bluetooth/btrtl.h +++ b/drivers/bluetooth/btrtl.h @@ -105,6 +105,7 @@ struct rtl_vendor_cmd { enum { REALTEK_ALT6_CONTINUOUS_TX_CHIP, + REALTEK_SCO_HDR_FIXUP, __REALTEK_NUM_FLAGS, }; diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 2d5c971a59ad..617da3c2cb87 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -1244,14 +1244,26 @@ static int btusb_recv_bulk(struct btusb_data *data, void *buffer, int count) return err; } -static bool btusb_validate_sco_handle(struct hci_dev *hdev, +static bool btusb_validate_sco_hdr(struct hci_dev *hdev, struct hci_sco_hdr *hdr) { __u16 handle; - if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) - // Can't validate, userspace controls everything. + struct btusb_data *data = hci_get_drvdata(hdev); + /* According to core spec Vol 4, Part B, 2.1.1 Controller descriptors, + * there are payload sizes recommened below. + */ + u8 lens[7] = { 0, 24, 48, 72, 96, 144, 60 }; + + if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) { + handle = hci_handle(__le16_to_cpu(hdr->handle)); + /* check if the packet payload size and handle are valid */ + if (btrealtek_test_flag(data->hdev, REALTEK_SCO_HDR_FIXUP) && + data->isoc_altsetting <= 6 && + (lens[data->isoc_altsetting] != hdr->dlen || handle > 12)) + return false; return true; + } /* * USB isochronous transfers are not designed to be reliable and may @@ -1266,6 +1278,11 @@ static bool btusb_validate_sco_handle(struct hci_dev *hdev, switch (hci_conn_lookup_type(hdev, handle)) { case SCO_LINK: case ESCO_LINK: + /* check if the packet payload size is valid */ + if (btrealtek_test_flag(data->hdev, REALTEK_SCO_HDR_FIXUP) && + data->isoc_altsetting <= 6 && + lens[data->isoc_altsetting] != hdr->dlen) + return false; return true; default: return false; @@ -1309,7 +1326,7 @@ static int btusb_recv_isoc(struct btusb_data *data, void *buffer, int count) hci_skb_expect(skb) = hdr->dlen; if (skb_tailroom(skb) < hci_skb_expect(skb) || - !btusb_validate_sco_handle(data->hdev, hdr)) { + !btusb_validate_sco_hdr(data->hdev, hdr)) { kfree_skb(skb); skb = NULL; -- 2.34.1 . From: Hao Ge To: peterhuewe@gmx.de, jarkko@kernel.org, jgg@ziepe.ca Cc: linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org, hao.ge@linux.dev, Hao Ge Subject: [PATCH] tpm: Move dereference after NULL check in tpm_buf_check_hmac_response Date: Tue, 9 Jul 2024 10:33:37 +0800 Message-Id: <20240709023337.102509-1-hao.ge@linux.dev> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271411 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-integrity Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Hao Ge We shouldn't dereference "auth" until after we have checked that it is non-NULL. Fixes: 7ca110f2679b ("tpm: Address !chip->auth in tpm_buf_append_hmac_session*()") Signed-off-by: Hao Ge --- drivers/char/tpm/tpm2-sessions.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/char/tpm/tpm2-sessions.c b/drivers/char/tpm/tpm2-sessions.c index 2281d55df545..d3521aadd43e 100644 --- a/drivers/char/tpm/tpm2-sessions.c +++ b/drivers/char/tpm/tpm2-sessions.c @@ -746,15 +746,16 @@ int tpm_buf_check_hmac_response(struct tpm_chip *chip, struct tpm_buf *buf, struct tpm2_auth *auth = chip->auth; off_t offset_s, offset_p; u8 rphash[SHA256_DIGEST_SIZE]; - u32 attrs; + u32 attrs, cc; struct sha256_state sctx; u16 tag = be16_to_cpu(head->tag); - u32 cc = be32_to_cpu(auth->ordinal); int parm_len, len, i, handles; if (!auth) return rc; + cc = be32_to_cpu(auth->ordinal); + if (auth->session >= TPM_HEADER_SIZE) { WARN(1, "tpm session not filled correctly\n"); goto out; -- 2.25.1 . From: Wei Yang To: rppt@kernel.org, akpm@linux-foundation.org, brauner@kernel.org, oleg@redhat.com, tandersen@netflix.com, mjguzik@gmail.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Wei Yang , David Hildenbrand Subject: [PATCH v5 1/3] mm/memblock: introduce a new helper memblock_estimated_nr_free_pages() Date: Tue, 9 Jul 2024 02:36:07 +0000 Message-Id: <20240709023609.21332-1-richard.weiyang@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271412 org.kvack.linux-mm:203006 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail During bootup, system may need the number of free pages in the whole system to do some calculation before all pages are freed to buddy system. Usually this number is get from totalram_pages(). Since we plan to move the free pages accounting in __free_pages_core(), this value may not represent total free pages at the early stage, especially when CONFIG_DEFERRED_STRUCT_PAGE_INIT is enabled. Instead of using raw memblock api, let's introduce a new helper for user to get the estimated number of free pages from memblock point of view. Signed-off-by: Wei Yang CC: David Hildenbrand Reviewed-by: David Hildenbrand --- v5: cleanup the stale name v4: adjust comment per david's suggestion --- include/linux/memblock.h | 1 + mm/memblock.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 40c62aca36ec..aba7ed9f2531 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -486,6 +486,7 @@ static inline __init_memblock bool memblock_bottom_up(void) phys_addr_t memblock_phys_mem_size(void); phys_addr_t memblock_reserved_size(void); +unsigned long memblock_estimated_nr_free_pages(void); phys_addr_t memblock_start_of_DRAM(void); phys_addr_t memblock_end_of_DRAM(void); void memblock_enforce_memory_limit(phys_addr_t memory_limit); diff --git a/mm/memblock.c b/mm/memblock.c index e81fb68f7f88..ae8e58fc4e7f 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -1729,6 +1729,23 @@ phys_addr_t __init_memblock memblock_reserved_size(void) return memblock.reserved.total_size; } +/** + * memblock_estimated_nr_free_pages - return estimated number of free pages + * from memblock point of view + * + * During bootup, subsystems might need a rough estimate of the number of free + * pages in the whole system, before precise numbers are available from the + * buddy. Especially with CONFIG_DEFERRED_STRUCT_PAGE_INIT, the numbers + * obtained from the buddy might be very imprecise during bootup. + * + * Return: + * An estimated number of free pages from memblock point of view. + */ +unsigned long __init memblock_estimated_nr_free_pages(void) +{ + return PHYS_PFN(memblock_phys_mem_size() - memblock_reserved_size()); +} + /* lowest address */ phys_addr_t __init_memblock memblock_start_of_DRAM(void) { -- 2.34.1 . Return-Path: From: Yixun Lan Subject: [PATCH v4 00/10] riscv: add initial support for SpacemiT K1 Date: Tue, 09 Jul 2024 03:18:43 +0000 Message-Id: <20240709-k1-01-basic-dt-v4-0-ae5bb5e56aaf@gentoo.org> MIME-Version: 1.0 To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Albert Ou , Daniel Lezcano , Thomas Gleixner , Samuel Holland , Anup Patel , Greg Kroah-Hartman , Jiri Slaby , Lubomir Rintel X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Yixun Lan , linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, Jesse Taube , Yangyu Chen , Conor Dooley , Inochi Amaoto , Meng Zhang , Jisheng Zhang , Matthias Brugger , Meng Zhang , linux-riscv@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79505 org.kernel.vger.linux-kernel:1271420 Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail SpacemiT K1 is an ideal chip for some new extension such as RISC-V Vector 1.0 and Zicond evaluation now. Add initial support for it to allow more people to participate in building drivers to mainline for it. This kernel has been tested upon Banana Pi BPI-F3 board on vendor U-Boot bootflow generated by Armbian SDK[1] and patched OpenSBI[2] to enable Zicboz, which does not in the vendor dts on its U-Boot. Then successfully booted to busybox on initrd with this log[3]. As previous discussion in patch v1[4], maintainer expect more basic drivers ready before really merging it, which would be fine. For other follow-up patches, that are clk, pinctrl/gpio, reset.. My current goal would target at a headless system including SD card, emmc, and ethernet. In this series, the uart node has no 'fifo-size', 'tx-threshold' property populated, will add them once this patch is resolved, see thread [5] P.S: talked to Yangyu, I will help and take care of this patch series, thanks --- Changes in v4: - add i/d-cache, l2-cache info - squash uart1 dts node - update tags - Link to v3: https://lore.kernel.org/r/20240703-k1-01-basic-dt-v3-0-12f73b47461e@gentoo.org Changes in v3: - fix dt_binding_check error - fix plic compatible - fix uart node name - add uart1 dts node - collect tags - Link to v2: https://lore.kernel.org/r/20240627-k1-01-basic-dt-v2-0-cc06c7555f07@gentoo.org Changes in v2: - fix timebase-frequency according to current setting - add other uart dt nodes, fix input frequency - introduce new uart compatible for K1 SoC - add 'k1' prefix to bananapi-f3.dts - fix k1-clint compatible - fix some typos - Link to v1: https://lore.kernel.org/r/tencent_BC64B7B1876F5D10479BD19112F73F262505@qq.com Link: https://github.com/BPI-SINOVOIP/armbian-build/tree/v24.04.30 [1] Link: https://gist.github.com/cyyself/a07096e6e99c949ed13f8fa16d884402 [2] Link: https://gist.github.com/cyyself/a2201c01f5c8955a119641f97b7d0280 [3] Link: https://lore.kernel.org/r/20240618-hardwood-footrest-ab5ec5bce3cf@wendy [4] Link:https://lore.kernel.org/linux-riscv/20240706082928.2238-1-jszhang@kernel.org/ [5] To: Rob Herring To: Krzysztof Kozlowski To: Conor Dooley To: Conor Dooley To: Paul Walmsley To: Palmer Dabbelt To: Albert Ou To: Daniel Lezcano To: Thomas Gleixner To: Samuel Holland To: Anup Patel To: Greg Kroah-Hartman To: Jiri Slaby To: Lubomir Rintel Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-riscv@lists.infradead.org Cc: linux-serial@vger.kernel.org Cc: Jesse Taube Cc: Jisheng Zhang Cc: Inochi Amaoto Cc: Icenowy Zheng Cc: Meng Zhang Cc: Meng Zhang Signed-off-by: Yangyu Chen Signed-off-by: Yixun Lan --- Yangyu Chen (9): dt-bindings: vendor-prefixes: add spacemit dt-bindings: riscv: Add SpacemiT X60 compatibles dt-bindings: riscv: add SpacemiT K1 bindings dt-bindings: timer: Add SpacemiT K1 CLINT dt-bindings: interrupt-controller: Add SpacemiT K1 PLIC riscv: add SpacemiT SoC family Kconfig support riscv: dts: add initial SpacemiT K1 SoC device tree riscv: dts: spacemit: add Banana Pi BPI-F3 board device tree riscv: defconfig: enable SpacemiT SoC Yixun Lan (1): dt-bindings: serial: 8250: Add SpacemiT K1 uart compatible .../interrupt-controller/sifive,plic-1.0.0.yaml | 1 + Documentation/devicetree/bindings/riscv/cpus.yaml | 1 + .../devicetree/bindings/riscv/spacemit.yaml | 28 ++ Documentation/devicetree/bindings/serial/8250.yaml | 4 +- .../devicetree/bindings/timer/sifive,clint.yaml | 1 + .../devicetree/bindings/vendor-prefixes.yaml | 2 + arch/riscv/Kconfig.socs | 5 + arch/riscv/boot/dts/Makefile | 1 + arch/riscv/boot/dts/spacemit/Makefile | 2 + arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 19 + arch/riscv/boot/dts/spacemit/k1.dtsi | 459 +++++++++++++++++++++ arch/riscv/configs/defconfig | 1 + 12 files changed, 523 insertions(+), 1 deletion(-) --- base-commit: 256abd8e550ce977b728be79a74e1729438b4948 change-id: 20240626-k1-01-basic-dt-1aa31eeebcd2 Best regards, -- Yixun Lan _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv . From: Shivani Gupta To: laurent.pinchart@ideasonboard.com, mchehab@kernel.org Cc: Shivani Gupta , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, mathias.nyman@intel.com, gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, skhan@linuxfoundation.org, javier.carrasco.cruz@gmail.com Subject: [PATCH] usb: xhci: Fix compiler warning in xhci.c Date: Tue, 9 Jul 2024 03:06:04 +0000 Message-Id: <20240709030604.1347546-1-shivani07g@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271432 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-media,org.kernel.vger.linux-usb Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Fixes the following compiler warnings by changing the comment syntax from "/**" to "/*" in the specified comments: drivers/usb/host/xhci.c:1369: warning: Function parameter or struct member 'desc' not described in 'xhci_get_endpoint_index' Signed-off-by: Shivani Gupta --- drivers/usb/host/xhci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 37eb37b0affa..67168661aa52 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1355,7 +1355,7 @@ static void xhci_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) usb_hcd_unmap_urb_for_dma(hcd, urb); } -/** +/* * xhci_get_endpoint_index - Used for passing endpoint bitmasks between the core and * HCDs. Find the index for an endpoint given its descriptor. Use the return * value to right shift 1 for the bitmask. -- 2.34.1 . Sender: Leesoo Ahn From: Leesoo Ahn To: lsahn@ooseel.net Cc: Leesoo Ahn , John Johansen , Paul Moore , James Morris , "Serge E. Hallyn" , apparmor@lists.ubuntu.com, linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] apparmor: domain: clean up duplicated parts of handle_onexec() Date: Tue, 9 Jul 2024 12:07:51 +0900 Message-Id: <20240709030751.3825748-1-lsahn@wewakecorp.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271434 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-security-module Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Regression test of AppArmor finished without any failures. PASSED: aa_exec access attach_disconnected at_secure introspect capabilities changeprofile onexec changehat changehat_fork changehat_misc chdir clone coredump deleted e2e environ exec exec_qual fchdir fd_inheritance fork i18n link link_subset mkdir mmap mount mult_mount named_pipe namespaces net_raw open openat pipe pivot_root posix_ipc ptrace pwrite query_label regex rename readdir rw socketpair swap sd_flags setattr symlink syscall sysv_ipc tcp unix_fd_server unix_socket_pathname unix_socket_abstract unix_socket_unnamed unix_socket_autobind unlink userns xattrs xattrs_profile longpath nfs exec_stack aa_policy_cache nnp stackonexec stackprofile FAILED: make: Leaving directory '/apparmor/tests/regression/apparmor' Signed-off-by: Leesoo Ahn --- security/apparmor/domain.c | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/security/apparmor/domain.c b/security/apparmor/domain.c index 571158ec6188..b73e01b512c2 100644 --- a/security/apparmor/domain.c +++ b/security/apparmor/domain.c @@ -822,33 +822,18 @@ static struct aa_label *handle_onexec(const struct cred *subj_cred, AA_BUG(!bprm); AA_BUG(!buffer); - if (!stack) { - error = fn_for_each_in_ns(label, profile, - profile_onexec(subj_cred, profile, onexec, stack, - bprm, buffer, cond, unsafe)); - if (error) - return ERR_PTR(error); - new = fn_label_build_in_ns(label, profile, GFP_KERNEL, - aa_get_newest_label(onexec), - profile_transition(subj_cred, profile, bprm, - buffer, - cond, unsafe)); - - } else { - /* TODO: determine how much we want to loosen this */ - error = fn_for_each_in_ns(label, profile, - profile_onexec(subj_cred, profile, onexec, stack, bprm, - buffer, cond, unsafe)); - if (error) - return ERR_PTR(error); - new = fn_label_build_in_ns(label, profile, GFP_KERNEL, - aa_label_merge(&profile->label, onexec, - GFP_KERNEL), - profile_transition(subj_cred, profile, bprm, - buffer, - cond, unsafe)); - } + /* TODO: determine how much we want to loosen this */ + error = fn_for_each_in_ns(label, profile, + profile_onexec(subj_cred, profile, onexec, stack, + bprm, buffer, cond, unsafe)); + if (error) + return ERR_PTR(error); + new = fn_label_build_in_ns(label, profile, GFP_KERNEL, + stack ? aa_label_merge(&profile->label, onexec, GFP_KERNEL) + : aa_get_newest_label(onexec), + profile_transition(subj_cred, profile, bprm, + buffer, cond, unsafe)); if (new) return new; -- 2.34.1 . From: Chen Ni To: cezary.rojewski@intel.com, pierre-louis.bossart@linux.intel.com, liam.r.girdwood@linux.intel.com, peter.ujfalusi@linux.intel.com, yung-chuan.liao@linux.intel.com, ranjani.sridharan@linux.intel.com, kai.vehmanen@linux.intel.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, ckeepax@opensource.cirrus.com Cc: alsa-devel@alsa-project.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Chen Ni Subject: [PATCH] ASoC: Intel: sof_sdw: Convert comma to semicolon Date: Tue, 9 Jul 2024 11:09:21 +0800 Message-Id: <20240709030921.585740-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271435 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- sound/soc/intel/boards/sof_sdw.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c index e94849b84a6b..e5feaef669d1 100644 --- a/sound/soc/intel/boards/sof_sdw.c +++ b/sound/soc/intel/boards/sof_sdw.c @@ -2136,9 +2136,9 @@ static int mc_probe(struct platform_device *pdev) card = &ctx->card; card->dev = &pdev->dev; - card->name = "soundwire", - card->owner = THIS_MODULE, - card->late_probe = sof_sdw_card_late_probe, + card->name = "soundwire"; + card->owner = THIS_MODULE; + card->late_probe = sof_sdw_card_late_probe; snd_soc_card_set_drvdata(card, ctx); -- 2.25.1 . From: Chen Ni To: lee@kernel.org, linux-kernel@vger.kernel.org Cc: Chen Ni Subject: [PATCH] mfd: 88pm860x-core: Convert comma to semicolon Date: Tue, 9 Jul 2024 11:18:24 +0800 Message-Id: <20240709031824.585922-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271441 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- drivers/mfd/88pm860x-core.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/mfd/88pm860x-core.c b/drivers/mfd/88pm860x-core.c index 7f003f71e1af..8e68b64bd7f8 100644 --- a/drivers/mfd/88pm860x-core.c +++ b/drivers/mfd/88pm860x-core.c @@ -916,7 +916,7 @@ static void device_power_init(struct pm860x_chip *chip, power_devs[0].platform_data = pdata->power; power_devs[0].pdata_size = sizeof(struct pm860x_power_pdata); power_devs[0].num_resources = ARRAY_SIZE(battery_resources); - power_devs[0].resources = &battery_resources[0], + power_devs[0].resources = &battery_resources[0]; ret = mfd_add_devices(chip->dev, 0, &power_devs[0], 1, &battery_resources[0], chip->irq_base, NULL); if (ret < 0) @@ -925,7 +925,7 @@ static void device_power_init(struct pm860x_chip *chip, power_devs[1].platform_data = pdata->power; power_devs[1].pdata_size = sizeof(struct pm860x_power_pdata); power_devs[1].num_resources = ARRAY_SIZE(charger_resources); - power_devs[1].resources = &charger_resources[0], + power_devs[1].resources = &charger_resources[0]; ret = mfd_add_devices(chip->dev, 0, &power_devs[1], 1, &charger_resources[0], chip->irq_base, NULL); if (ret < 0) @@ -942,7 +942,7 @@ static void device_power_init(struct pm860x_chip *chip, pdata->chg_desc->charger_regulators = &chg_desc_regulator_data[0]; pdata->chg_desc->num_charger_regulators = - ARRAY_SIZE(chg_desc_regulator_data), + ARRAY_SIZE(chg_desc_regulator_data); power_devs[3].platform_data = pdata->chg_desc; power_devs[3].pdata_size = sizeof(*pdata->chg_desc); ret = mfd_add_devices(chip->dev, 0, &power_devs[3], 1, @@ -958,7 +958,7 @@ static void device_onkey_init(struct pm860x_chip *chip, int ret; onkey_devs[0].num_resources = ARRAY_SIZE(onkey_resources); - onkey_devs[0].resources = &onkey_resources[0], + onkey_devs[0].resources = &onkey_resources[0]; ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0], ARRAY_SIZE(onkey_devs), &onkey_resources[0], chip->irq_base, NULL); @@ -972,7 +972,7 @@ static void device_codec_init(struct pm860x_chip *chip, int ret; codec_devs[0].num_resources = ARRAY_SIZE(codec_resources); - codec_devs[0].resources = &codec_resources[0], + codec_devs[0].resources = &codec_resources[0]; ret = mfd_add_devices(chip->dev, 0, &codec_devs[0], ARRAY_SIZE(codec_devs), &codec_resources[0], 0, NULL); -- 2.25.1 . From: Chen Ni To: hverkuil-cisco@xs4all.nl, benjamin.gaignard@collabora.com, mchehab@kernel.org, kees@kernel.org Cc: linux-kernel@vger.kernel.org, Chen Ni Subject: [PATCH] media: v4l2-pci-skeleton: Convert comma to semicolon Date: Tue, 9 Jul 2024 11:26:33 +0800 Message-Id: <20240709032633.586042-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271444 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- samples/v4l/v4l2-pci-skeleton.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/v4l/v4l2-pci-skeleton.c b/samples/v4l/v4l2-pci-skeleton.c index 4fc2063b9f59..a131c27d5509 100644 --- a/samples/v4l/v4l2-pci-skeleton.c +++ b/samples/v4l/v4l2-pci-skeleton.c @@ -852,8 +852,8 @@ static int skeleton_probe(struct pci_dev *pdev, const struct pci_device_id *ent) * function. The release callback must be non-NULL. */ vdev->release = video_device_release_empty; - vdev->fops = &skel_fops, - vdev->ioctl_ops = &skel_ioctl_ops, + vdev->fops = &skel_fops; + vdev->ioctl_ops = &skel_ioctl_ops; vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING; /* -- 2.25.1 . Date: Tue, 9 Jul 2024 13:34:20 +1000 From: Stephen Rothwell To: Sebastian Reichel , Lee Jones Cc: Hans de Goede , Linux Kernel Mailing List , Linux Next Mailing List , Thomas =?UTF-8?B?V2Vpw59zY2h1aA==?= Subject: linux-next: manual merge of the battery tree with the leds-lj tree Message-ID: <20240709133420.55645c59@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/_v8u5kc2hc6W_g+2qeKHAQL"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271446 org.kernel.vger.linux-next:62107 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/_v8u5kc2hc6W_g+2qeKHAQL Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the battery tree got a conflict in: include/linux/leds.h between commit: 6b0d3355e5a5 ("leds: class: Add flag to avoid automatic renaming of LED d= evices") from the leds-lj tree and commit: 5607ca92e627 ("leds: core: Add led_mc_set_brightness() function") from the battery tree. I assume that the bit number valuse don;t actually matter, right? I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc include/linux/leds.h index 99f87587a132,517b6198df07..000000000000 --- a/include/linux/leds.h +++ b/include/linux/leds.h @@@ -107,7 -107,7 +107,8 @@@ struct led_classdev=20 #define LED_BRIGHT_HW_CHANGED BIT(21) #define LED_RETAIN_AT_SHUTDOWN BIT(22) #define LED_INIT_DEFAULT_TRIGGER BIT(23) -#define LED_MULTI_COLOR BIT(24) +#define LED_REJECT_NAME_CONFLICT BIT(24) ++#define LED_MULTI_COLOR BIT(25) =20 /* set_brightness_work / blink_timer flags, atomic, private. */ unsigned long work_flags; --Sig_/_v8u5kc2hc6W_g+2qeKHAQL Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMr7wACgkQAVBC80lX 0Gy0lwf+IWhCwyn95vuG7hTe6ViduwPCf0YLwW676tQaOuabhrUMHYQSyOccJoiu C+ktCzeO5xUZ/ZZX3RGnFhuulaicq/dVhFnisdqeQMTGQlspapaoIWmTeF1m2j3z AlhE99r6vOF66Zvp1mfjCBOTkeDwH1jL4mhW6newj7rU2bC30OPtNaoyxMhv0FEb E9rye/tJpzlb9zWRoAXnwsf2Lr7xKz9Z1tztBXKLHW79fsgX4YIvGIrJ1iCOFx0E KrMA8NFGDkm9l49xFOILdrk2TscO5nDSRqr+GiBQEOEngqllNktHfAF4RTLof3E8 q606QJVtf3gEyYFrG2U8Z4GuttDmdQ== =jaF+ -----END PGP SIGNATURE----- --Sig_/_v8u5kc2hc6W_g+2qeKHAQL-- . From: Chen Ni To: akpm@linux-foundation.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org Cc: linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Chen Ni Subject: [PATCH] test_bpf: Convert comma to semicolon Date: Tue, 9 Jul 2024 11:43:23 +0800 Message-Id: <20240709034323.586185-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271448 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- lib/test_bpf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/test_bpf.c b/lib/test_bpf.c index b7acc29bcc3b..ca4b0eea81a2 100644 --- a/lib/test_bpf.c +++ b/lib/test_bpf.c @@ -1740,7 +1740,7 @@ static int __bpf_emit_cmpxchg32(struct bpf_test *self, void *arg, /* Result unsuccessful */ insns[i++] = BPF_STX_MEM(BPF_W, R10, R1, -4); insns[i++] = BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R2, -4); - insns[i++] = BPF_ZEXT_REG(R0), /* Zext always inserted by verifier */ + insns[i++] = BPF_ZEXT_REG(R0); /* Zext always inserted by verifier */ insns[i++] = BPF_LDX_MEM(BPF_W, R3, R10, -4); insns[i++] = BPF_JMP32_REG(BPF_JEQ, R1, R3, 2); @@ -1754,7 +1754,7 @@ static int __bpf_emit_cmpxchg32(struct bpf_test *self, void *arg, /* Result successful */ i += __bpf_ld_imm64(&insns[i], R0, dst); insns[i++] = BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R2, -4); - insns[i++] = BPF_ZEXT_REG(R0), /* Zext always inserted by verifier */ + insns[i++] = BPF_ZEXT_REG(R0); /* Zext always inserted by verifier */ insns[i++] = BPF_LDX_MEM(BPF_W, R3, R10, -4); insns[i++] = BPF_JMP32_REG(BPF_JEQ, R2, R3, 2); -- 2.25.1 . Date: Tue, 9 Jul 2024 13:55:23 +1000 From: Stephen Rothwell To: Theodore Ts'o , "Jason A. Donenfeld" Cc: Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: Signed-off-by missing for commit in the random tree Message-ID: <20240709135523.29112dba@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/NgulIbg9v7KAUMEI9qBs7nr"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271452 org.kernel.vger.linux-next:62108 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/NgulIbg9v7KAUMEI9qBs7nr Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Commits 868680ffba11 ("selftests/vDSO: remove duplicate compiler invocations from= Makefile") 7bb79ef48b9d ("selftests/vDSO: remove partially duplicated "all:" target = in Makefile") 14cd1a877fc6 ("selftests/vDSO: fix clang build errors and warnings") are missing a Signed-off-by from their committer. --=20 Cheers, Stephen Rothwell --Sig_/NgulIbg9v7KAUMEI9qBs7nr Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMtKsACgkQAVBC80lX 0GwLUwf7BQYUsuAtXbnXjy3p97mMwcREp31LB57m0oqar7mClszXFCFuuLARRngf iqj+TD7DflD42VrVlL0NstTFYtsen+QbOfKlNlbX/kC2fpfCryKF40EaTAlWWThC rnuDA58Bkfm3LtIXIBPOT1xnCgm36OE8Z0ESLqVa09zbvoa9988CtUUi9h3EdM64 6HtNSD5m2CMmBBAgZnshBxm9Vb4lAlgS+7w6nLRsSlXEMHpPB72HM5ZdsuVfb/dt CtR528vPu2UIJmb8rA6ke8L5NejRiT4l5lFg9MG9cD0cXA3RD0kXJYtUHlG38ilI l8wPcO8TtNDfYWW7ux5WsScF5uGBXg== =c1MV -----END PGP SIGNATURE----- --Sig_/NgulIbg9v7KAUMEI9qBs7nr-- . From: Zhiguo Jiang To: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , David Hildenbrand , Matthew Wilcox Cc: opensource.kernel@vivo.com, Zhiguo Jiang Subject: [PATCH v6] mm: shrink skip folio mapped by an exiting process Date: Tue, 9 Jul 2024 12:10:50 +0800 Message-ID: <20240709041050.619-1-justinjiang@vivo.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271459 org.kvack.linux-mm:203013 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The releasing process of the non-shared anonymous folio mapped solely by an exiting process may go through two flows: 1) the anonymous folio is firstly is swaped-out into swapspace and transformed into a swp_entry in shrink_folio_list; 2) then the swp_entry is released in the process exiting flow. This will result in the high cpu load of releasing a non-shared anonymous folio mapped solely by an exiting process. When the low system memory and the exiting process exist at the same time, it will be likely to happen, because the non-shared anonymous folio mapped solely by an exiting process may be reclaimed by shrink_folio_list. This patch is that shrink skips the non-shared anonymous folio solely mapped by an exting process and this folio is only released directly in the process exiting flow, which will save swap-out time and alleviate the load of the process exiting. Signed-off-by: Zhiguo Jiang --- Change log: v5->v6: 1.Move folio_likely_mapped_shared() under the PTL. 2.Add check_stable_address_space() to replace MMF_OOM_SKIP. 3.Remove folio_test_anon(folio). v4->v5: 1.Further modify to skip non-shared anonymous folio only. 2.Update comments for pra->referenced = -1. v3->v4: 1.Modify to skip only the non-shared anonymous folio mapped solely by an exiting process. v2->v3: Nothing. v1->v2: 1.The VM_EXITING added in v1 patch is removed, because it will fail to compile in 32-bit system. Comments from participants and my responses: [v5->v6]: 1.David Hildenbrand I'm currently working on moving all folio_likely_mapped_shared() under the PTL, where we are then sure that the folio is actually mapped by this process (e.g., no concurrent unmapping poisslbe). Can we do the same here directly? --> You are right. we might use page_vma_mapped_walk_done() to bail out. (Barry Song) 2.Barry Song By the way, I am not convinced that using test_bit(MMF_OOM_SKIP, &vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap() automatically has MMF_OOM_SKIP. What is the purpose of this check? Is there a better way to determine if a process is an OOM target? What about check_stable_address_space() ? --> Sorry, I overlook the situation with if (is_global_init(p)), MMF_OOM_SKIP is indeed not suitable. It seems feasible for check_stable_address_space() replacing MMF_OOM_SKIP. check_stable_address_space() can indicate oom kill, and !atomic_read(&vma->vm_mm->mm_users) can indicate the normal process exiting. I also think we actually can remove "folio_test_anon(folio)". --> Yes, update in patch v6. [v4->v5]: 1.Barry Song I don't think this is correct. folio_likely_mapped_shared() is almost "correct" but not always. Please explain why you set pra->referenced = -1. Please address all comments before you send a new version. --> Update in patch v5. 2.Matthew Wilcox How is the file folio similar? File folios are never written to swap, and they'll be written back from the page cache whenever the filesystem decides it's a good time to do so. --> What do you mean is that the file folio will not have any relevant identifier left in memory after it is reclamed in the shrink flow, and it will not be released again during an exiting process? If that's the case, I think we only need the anon folio is skipped here. [v3->v4]: 1.Barry Song This is clearly version 3, as you previously sent version 2, correct? --> Yes. Could you please describe the specific impact on users, including user experience and power consumption? How serious is this problem? --> At present, I do not have a suitable method to accurately measure the optimization benefit datas of this modifications, but I believe it theoretically has some benefits. Launching large memory app (for example, starting the camera) in multiple backend scenes may result in the high cpu load of the exiting processes. Applications? --> Yes, when system is low memory, it more likely to occur. I'm not completely convinced this patch is correct, but it appears to be heading in the right direction. Therefore, I expect to see new versions rather than it being dead. You changed the file mode to 755, which is incorrect. --> Solved. Why use -1? Is this meant to simulate lock contention to keep the folio without activating it? Please do have some comments to explain why. I'm not convinced this change is appropriate for shared folios. It seems more suitable for exclusive folios used solely by the exiting process. --> The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase the folios will be freed soon in the exiting process flow. Yes, the shared folios can not be simply skipped. I have made relevant modifications in patch v4 and please help to further review. https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/ 2.David Hildenbrand but what if it is shared among multiple processes and only one of them is exiting? --> Modify to skip only the non-shared anonymous folio mapped solely by an exiting process in next version v4. [v2->v3:] Nothing. [v1->v2]: 1.Matthew Wilcox What testing have you done of this patch? How often does it happen? Are there particular workloads that benefit from this? (I'm not sure what "mutil backed-applications" are?) And I do mean specifically of this patch, because to my eyes it shouldn't even compile. Except on 32-bit where it'll say "warning: integer constant out of range". --> Yes, I have tested. When the low system memory and the exiting process exist at the same time, it will happen. This modification can alleviate the load of the exiting process. "mutil backed-applications" means that there are a large number of the backend applications in the system. The VM_EXITING added in v1 patch is removed, because it will fail to compile in 32-bit system. mm/rmap.c | 14 ++++++++++++++ mm/vmscan.c | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/mm/rmap.c b/mm/rmap.c index 88156deb46a6..55fd54c33582 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -877,6 +877,20 @@ static bool folio_referenced_one(struct folio *folio, continue; } + /* + * Skip the non-shared anonymous folio mapped solely by + * the single exiting process, and release it directly + * in the process exiting. + */ + if ((!atomic_read(&vma->vm_mm->mm_users) || + check_stable_address_space(vma->vm_mm)) && + folio_test_swapbacked(folio) && + !folio_likely_mapped_shared(folio)) { + pra->referenced = -1; + page_vma_mapped_walk_done(&pvmw); + return false; + } + if (pvmw.pte) { if (lru_gen_enabled() && pte_young(ptep_get(pvmw.pte))) { diff --git a/mm/vmscan.c b/mm/vmscan.c index 80f9a486cf27..f31068f799fe 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio, if (vm_flags & VM_LOCKED) return FOLIOREF_ACTIVATE; - /* rmap lock contention: rotate */ + /* + * There are two cases to consider. + * 1) Rmap lock contention: rotate. + * 2) Skip the non-shared anonymous folio mapped solely by + * the single exiting process. + */ if (referenced_ptes == -1) return FOLIOREF_KEEP; -- 2.39.0 . From: Sungjong Seo To: hirofumi@mail.parknet.co.jp, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, Sungjong Seo Subject: [PATCH] fat: print s_dev via fat_msg Date: Tue, 9 Jul 2024 13:17:34 +0900 Message-Id: <20240709041734.3719513-1-sj1557.seo@samsung.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" X-ArchiveUser: EV References: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271461 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail To clarify MAJOR/MINOR number of a mounted device, fat_msg prints prefix that includes them. Signed-off-by: Sungjong Seo --- fs/fat/fat.h | 2 +- fs/fat/misc.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/fat/fat.h b/fs/fat/fat.h index 66cf4778cf3b..538bcb3e28e1 100644 --- a/fs/fat/fat.h +++ b/fs/fat/fat.h @@ -435,7 +435,7 @@ void __fat_fs_error(struct super_block *sb, int report, const char *fmt, ...); #define fat_fs_error_ratelimit(sb, fmt, args...) \ __fat_fs_error(sb, __ratelimit(&MSDOS_SB(sb)->ratelimit), fmt , ## args) -#define FAT_PRINTK_PREFIX "%sFAT-fs (%s): " +#define FAT_PRINTK_PREFIX "%sFAT-fs (%s[%d:%d]): " #define fat_msg(sb, level, fmt, args...) \ do { \ printk_index_subsys_emit(FAT_PRINTK_PREFIX, level, fmt, ##args);\ diff --git a/fs/fat/misc.c b/fs/fat/misc.c index c7a2d27120ba..6672cefc5484 100644 --- a/fs/fat/misc.c +++ b/fs/fat/misc.c @@ -9,6 +9,7 @@ #include "fat.h" #include +#include /* * fat_fs_error reports a file system problem that might indicate fa data @@ -59,7 +60,8 @@ void _fat_msg(struct super_block *sb, const char *level, const char *fmt, ...) va_start(args, fmt); vaf.fmt = fmt; vaf.va = &args; - _printk(FAT_PRINTK_PREFIX "%pV\n", level, sb->s_id, &vaf); + _printk(FAT_PRINTK_PREFIX "%pV\n", level, sb->s_id, + MAJOR(sb->s_dev), MINOR(sb->s_dev), &vaf); va_end(args); } -- 2.25.1 . From: Zhiguo Jiang To: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , David Hildenbrand , Matthew Wilcox Cc: opensource.kernel@vivo.com, Zhiguo Jiang Subject: [PATCH v6] mm: shrink skip folio mapped by an exiting process Date: Tue, 9 Jul 2024 12:21:22 +0800 Message-ID: <20240709042122.631-1-justinjiang@vivo.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271463 org.kvack.linux-mm:203014 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The releasing process of the non-shared anonymous folio mapped solely by an exiting process may go through two flows: 1) the anonymous folio is firstly is swaped-out into swapspace and transformed into a swp_entry in shrink_folio_list; 2) then the swp_entry is released in the process exiting flow. This will result in the high cpu load of releasing a non-shared anonymous folio mapped solely by an exiting process. When the low system memory and the exiting process exist at the same time, it will be likely to happen, because the non-shared anonymous folio mapped solely by an exiting process may be reclaimed by shrink_folio_list. This patch is that shrink skips the non-shared anonymous folio solely mapped by an exting process and this folio is only released directly in the process exiting flow, which will save swap-out time and alleviate the load of the process exiting. Signed-off-by: Zhiguo Jiang --- Change log: v5->v6: 1.Move folio_likely_mapped_shared() under the PTL. 2.Add check_stable_address_space() to replace MMF_OOM_SKIP. 3.Remove folio_test_anon(folio). v4->v5: 1.Further modify to skip non-shared anonymous folio only. 2.Update comments for pra->referenced = -1. v3->v4: 1.Modify to skip only the non-shared anonymous folio mapped solely by an exiting process. v2->v3: Nothing. v1->v2: 1.The VM_EXITING added in v1 patch is removed, because it will fail to compile in 32-bit system. Comments from participants and my responses: [v5->v6]: 1.David Hildenbrand I'm currently working on moving all folio_likely_mapped_shared() under the PTL, where we are then sure that the folio is actually mapped by this process (e.g., no concurrent unmapping poisslbe). Can we do the same here directly? --> You are right. we might use page_vma_mapped_walk_done() to bail out. (Barry Song) 2.Barry Song By the way, I am not convinced that using test_bit(MMF_OOM_SKIP, &vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap() automatically has MMF_OOM_SKIP. What is the purpose of this check? Is there a better way to determine if a process is an OOM target? What about check_stable_address_space() ? --> Sorry, I overlook the situation with if (is_global_init(p)), MMF_OOM_SKIP is indeed not suitable. It seems feasible for check_stable_address_space() replacing MMF_OOM_SKIP. check_stable_address_space() can indicate oom kill, and !atomic_read(&vma->vm_mm->mm_users) can indicate the normal process exiting. I also think we actually can remove "folio_test_anon(folio)". --> Yes, update in patch v6. [v4->v5]: 1.Barry Song I don't think this is correct. folio_likely_mapped_shared() is almost "correct" but not always. Please explain why you set pra->referenced = -1. Please address all comments before you send a new version. --> Update in patch v5. 2.Matthew Wilcox How is the file folio similar? File folios are never written to swap, and they'll be written back from the page cache whenever the filesystem decides it's a good time to do so. --> What do you mean is that the file folio will not have any relevant identifier left in memory after it is reclamed in the shrink flow, and it will not be released again during an exiting process? If that's the case, I think we only need the anon folio is skipped here. [v3->v4]: 1.Barry Song This is clearly version 3, as you previously sent version 2, correct? --> Yes. Could you please describe the specific impact on users, including user experience and power consumption? How serious is this problem? --> At present, I do not have a suitable method to accurately measure the optimization benefit datas of this modifications, but I believe it theoretically has some benefits. Launching large memory app (for example, starting the camera) in multiple backend scenes may result in the high cpu load of the exiting processes. Applications? --> Yes, when system is low memory, it more likely to occur. I'm not completely convinced this patch is correct, but it appears to be heading in the right direction. Therefore, I expect to see new versions rather than it being dead. You changed the file mode to 755, which is incorrect. --> Solved. Why use -1? Is this meant to simulate lock contention to keep the folio without activating it? Please do have some comments to explain why. I'm not convinced this change is appropriate for shared folios. It seems more suitable for exclusive folios used solely by the exiting process. --> The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase the folios will be freed soon in the exiting process flow. Yes, the shared folios can not be simply skipped. I have made relevant modifications in patch v4 and please help to further review. https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/ 2.David Hildenbrand but what if it is shared among multiple processes and only one of them is exiting? --> Modify to skip only the non-shared anonymous folio mapped solely by an exiting process in next version v4. [v2->v3:] Nothing. [v1->v2]: 1.Matthew Wilcox What testing have you done of this patch? How often does it happen? Are there particular workloads that benefit from this? (I'm not sure what "mutil backed-applications" are?) And I do mean specifically of this patch, because to my eyes it shouldn't even compile. Except on 32-bit where it'll say "warning: integer constant out of range". --> Yes, I have tested. When the low system memory and the exiting process exist at the same time, it will happen. This modification can alleviate the load of the exiting process. "mutil backed-applications" means that there are a large number of the backend applications in the system. The VM_EXITING added in v1 patch is removed, because it will fail to compile in 32-bit system. mm/rmap.c | 14 ++++++++++++++ mm/vmscan.c | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/mm/rmap.c b/mm/rmap.c index 88156deb46a6..d8ecb918e59e 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -877,6 +877,20 @@ static bool folio_referenced_one(struct folio *folio, continue; } + /* + * Skip the non-shared swapbacked folio mapped solely by + * the exiting or OOM-reaped process. This avoids redundant + * swap-out followed by an immediate unmap. + */ + if ((!atomic_read(&vma->vm_mm->mm_users) || + check_stable_address_space(vma->vm_mm)) && + folio_test_swapbacked(folio) && + !folio_likely_mapped_shared(folio)) { + pra->referenced = -1; + page_vma_mapped_walk_done(&pvmw); + return false; + } + if (pvmw.pte) { if (lru_gen_enabled() && pte_young(ptep_get(pvmw.pte))) { diff --git a/mm/vmscan.c b/mm/vmscan.c index 80f9a486cf27..1d5f78a3dbeb 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio, if (vm_flags & VM_LOCKED) return FOLIOREF_ACTIVATE; - /* rmap lock contention: rotate */ + /* + * There are two cases to consider. + * 1) Rmap lock contention: rotate. + * 2) Skip the non-shared swapbacked folio mapped solely by + * the exiting or OOM-reaped process. + */ if (referenced_ptes == -1) return FOLIOREF_KEEP; -- 2.39.0 . Date: Tue, 9 Jul 2024 14:27:38 +1000 From: Stephen Rothwell To: Rob Herring , Masahiro Yamada Cc: Dmitry Baryshkov , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: manual merge of the devicetree tree with the kbuild tree Message-ID: <20240709142738.167999ba@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/B7geL4Vw7Eo/RMNFQ6Ha8m/"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271465 org.kernel.vger.linux-next:62109 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/B7geL4Vw7Eo/RMNFQ6Ha8m/ Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the devicetree tree got a conflict in: scripts/Makefile.lib between commit: ab6aaea6835b ("kbuild: avoid build error when single DTB is turned into c= omposite DTB") from the kbuild tree and commit: dd402cbd0afa ("kbuild: verify dtoverlay files against schema") from the devicetree tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc scripts/Makefile.lib index 636119dc4403,29da0dc9776d..000000000000 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@@ -407,12 -407,15 +407,19 @@@ cmd_dtc =3D $(HOSTCC) -E $(dtc_cpp_flags -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) =20 +# NOTE: +# Do not replace $(filter %.dtb %.dtbo, $^) with $(real-prereqs). When a = single +# DTB is turned into a multi-blob DTB, $^ will contain header file depend= encies +# recorded in the .*.cmd file. + DT_CHECK_CMD =3D $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BIN= DING_DIR) -p $(DT_TMP_SCHEMA) +=20 + ifneq ($(CHECK_DTBS),) + quiet_cmd_fdtoverlay =3D DTOVLCH $@ - cmd_fdtoverlay =3D $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(rea= l-prereqs) ; $(DT_CHECK_CMD) $@ || true ++ cmd_fdtoverlay =3D $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(fil= ter %.dtb %.dtbo, $^) ; $(DT_CHECK_CMD) $@ || true + else quiet_cmd_fdtoverlay =3D DTOVL $@ - cmd_fdtoverlay =3D $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(rea= l-prereqs) + cmd_fdtoverlay =3D $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(fil= ter %.dtb %.dtbo, $^) + endif =20 $(multi-dtb-y): FORCE $(call if_changed,fdtoverlay) --Sig_/B7geL4Vw7Eo/RMNFQ6Ha8m/ Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMvDoACgkQAVBC80lX 0GzLOwf6Azn898I9IYbx0cOxjh16AlgcpVB6sPvgFqO8txlQbKE8PQ+gZtfRgVB6 ET5ReR1GDHbBNzeHsMgmMzF+ZB1rXcS0WQDYyX485Qkc64LiimwQmVP/zRn7HaTP JrdpTSJFr6W1XVMKabvRem9Qp3e3n21w5ykC7FlYCaw7P6YBFsWKM0rE8u/f5WAy ngAAzx6/6oSxLb5uUK/3a4vIbp6IzWRkfebCqFnltb72dhoYrzfItpX78h6lEQz+ 2g5S/ts/DRRWW/W2/D9eaY9mHBh66zNaVUwg1y+T+lynAHJIJZaWhkhcN0mSrYUz lxY9Nau7EzUFW+nvDv+/mxuE6weLFA== =9CNJ -----END PGP SIGNATURE----- --Sig_/B7geL4Vw7Eo/RMNFQ6Ha8m/-- . From: Shenghao Ding To: CC: , , , , <13916275206@139.com>, , , , , , , , , , , , , , , , , , , , , , , , , Shenghao Ding Subject: [PATCH v1] ASoc: TAS2781: rename the tas2781_reset as tasdevice_reset Date: Tue, 9 Jul 2024 12:33:40 +0800 Message-ID: <20240709043342.946-1-shenghao-ding@ti.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271468 Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Rename the tas2781_reset as tasdevice_reset in case of misunderstanding. RESET register for both tas2563 and tas2781 is same and the use of reset pin is also same. Signed-off-by: Shenghao Ding --- v1: - Rename tas2781_reset as tasdevice_reset - Changed the copyright year to 2024 in tas2781.h. - Rename TAS2781_REG_SWRESET_XXX as TASDEVICE_REG_SWRESET_XXX - Add tasdevice_reset into tasdevice_i2c_probe. --- include/sound/tas2781.h | 8 ++++---- sound/pci/hda/tas2781_hda_i2c.c | 4 ++-- sound/soc/codecs/tas2781-comlib.c | 8 ++++---- sound/soc/codecs/tas2781-i2c.c | 2 ++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/include/sound/tas2781.h b/include/sound/tas2781.h index cd8ce522b78e..a43ad6dcb7c7 100644 --- a/include/sound/tas2781.h +++ b/include/sound/tas2781.h @@ -2,7 +2,7 @@ // // ALSA SoC Texas Instruments TAS2563/TAS2781 Audio Smart Amplifier // -// Copyright (C) 2022 - 2023 Texas Instruments Incorporated +// Copyright (C) 2022 - 2024 Texas Instruments Incorporated // https://www.ti.com // // The TAS2563/TAS2781 driver implements a flexible and configurable @@ -43,8 +43,8 @@ (page * 128)) + reg) /*Software Reset */ -#define TAS2781_REG_SWRESET TASDEVICE_REG(0x0, 0X0, 0x01) -#define TAS2781_REG_SWRESET_RESET BIT(0) +#define TASDEVICE_REG_SWRESET TASDEVICE_REG(0x0, 0X0, 0x01) +#define TASDEVICE_REG_SWRESET_RESET BIT(0) /*I2C Checksum */ #define TASDEVICE_I2CChecksum TASDEVICE_REG(0x0, 0x0, 0x7E) @@ -140,7 +140,7 @@ struct tasdevice_priv { void (*apply_calibration)(struct tasdevice_priv *tas_priv); }; -void tas2781_reset(struct tasdevice_priv *tas_dev); +void tasdevice_reset(struct tasdevice_priv *tas_dev); int tascodec_init(struct tasdevice_priv *tas_priv, void *codec, struct module *module, void (*cont)(const struct firmware *fw, void *context)); diff --git a/sound/pci/hda/tas2781_hda_i2c.c b/sound/pci/hda/tas2781_hda_i2c.c index 75f7674c66ee..10420360b214 100644 --- a/sound/pci/hda/tas2781_hda_i2c.c +++ b/sound/pci/hda/tas2781_hda_i2c.c @@ -834,7 +834,7 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt) pm_runtime_set_active(tas_hda->dev); pm_runtime_enable(tas_hda->dev); - tas2781_reset(tas_hda->priv); + tasdevice_reset(tas_hda->priv); ret = component_add(tas_hda->dev, &tas2781_hda_comp_ops); if (ret) { @@ -929,7 +929,7 @@ static int tas2781_system_resume(struct device *dev) tas_hda->priv->tasdevice[i].cur_prog = -1; tas_hda->priv->tasdevice[i].cur_conf = -1; } - tas2781_reset(tas_hda->priv); + tasdevice_reset(tas_hda->priv); tasdevice_prmg_load(tas_hda->priv, tas_hda->priv->cur_prog); /* If calibrated data occurs error, dsp will still work with default diff --git a/sound/soc/codecs/tas2781-comlib.c b/sound/soc/codecs/tas2781-comlib.c index 6db1a260da82..1fbf4560f5cc 100644 --- a/sound/soc/codecs/tas2781-comlib.c +++ b/sound/soc/codecs/tas2781-comlib.c @@ -243,7 +243,7 @@ struct tasdevice_priv *tasdevice_kzalloc(struct i2c_client *i2c) } EXPORT_SYMBOL_GPL(tasdevice_kzalloc); -void tas2781_reset(struct tasdevice_priv *tas_dev) +void tasdevice_reset(struct tasdevice_priv *tas_dev) { int ret, i; @@ -254,8 +254,8 @@ void tas2781_reset(struct tasdevice_priv *tas_dev) } else { for (i = 0; i < tas_dev->ndev; i++) { ret = tasdevice_dev_write(tas_dev, i, - TAS2781_REG_SWRESET, - TAS2781_REG_SWRESET_RESET); + TASDEVICE_REG_SWRESET, + TASDEVICE_REG_SWRESET_RESET); if (ret < 0) dev_err(tas_dev->dev, "dev %d swreset fail, %d\n", @@ -264,7 +264,7 @@ void tas2781_reset(struct tasdevice_priv *tas_dev) } usleep_range(1000, 1050); } -EXPORT_SYMBOL_GPL(tas2781_reset); +EXPORT_SYMBOL_GPL(tasdevice_reset); int tascodec_init(struct tasdevice_priv *tas_priv, void *codec, struct module *module, diff --git a/sound/soc/codecs/tas2781-i2c.c b/sound/soc/codecs/tas2781-i2c.c index b412f8f2e5d5..d5d95ae57c73 100644 --- a/sound/soc/codecs/tas2781-i2c.c +++ b/sound/soc/codecs/tas2781-i2c.c @@ -742,6 +742,8 @@ static int tasdevice_i2c_probe(struct i2c_client *i2c) if (ret) goto err; + tasdevice_reset(tas_priv); + ret = devm_snd_soc_register_component(tas_priv->dev, &soc_codec_driver_tasdevice, tasdevice_dai_driver, ARRAY_SIZE(tasdevice_dai_driver)); -- 2.34.1 . Date: Tue, 9 Jul 2024 13:11:12 +0800 From: kernel test robot To: Yu Zhao CC: , , Linux Memory Management List , Andrew Morton , Muchun Song , David Hildenbrand , "Frank van der Linden" , Matthew Wilcox , Peter Xu , Yang Shi , , , , , Subject: [linux-next:master] [mm/hugetlb_vmemmap] 875fa64577: vm-scalability.throughput -34.3% regression Message-ID: <202407091001.1250ad4a-oliver.sang@intel.com> Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Content-Transfer-Encoding: 8bit X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271485 org.kvack.linux-mm:203019 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, kernel test robot noticed a -34.3% regression of vm-scalability.throughput on: commit: 875fa64577da9bc8e9963ee14fef8433f20653e7 ("mm/hugetlb_vmemmap: fix race with speculative PFN walkers") https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master [still regression on linux-next/master 0b58e108042b0ed28a71cd7edf5175999955b233] testcase: vm-scalability test machine: 128 threads 2 sockets Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz (Ice Lake) with 256G memory parameters: runtime: 300s size: 512G test: anon-cow-rand-hugetlb cpufreq_governor: performance If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-lkp/202407091001.1250ad4a-oliver.sang@intel.com Details are as below: --------------------------------------------------------------------------------------------------> The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240709/202407091001.1250ad4a-oliver.sang@intel.com ========================================================================================= compiler/cpufreq_governor/kconfig/rootfs/runtime/size/tbox_group/test/testcase: gcc-13/performance/x86_64-rhel-8.3/debian-12-x86_64-20240206.cgz/300s/512G/lkp-icl-2sp2/anon-cow-rand-hugetlb/vm-scalability commit: 73236245e0 ("cachestat: do not flush stats in recency check") 875fa64577 ("mm/hugetlb_vmemmap: fix race with speculative PFN walkers") 73236245e0b47ea3 875fa64577da9bc8e9963ee14fe ---------------- --------------------------- %stddev %change %stddev \ | \ 4.447e+09 ± 13% +342.0% 1.966e+10 ± 7% cpuidle..time 753730 ± 2% +1105.0% 9082792 ± 6% cpuidle..usage 582089 ± 6% +20.7% 702337 ± 8% numa-numastat.node0.local_node 658053 ± 5% +18.3% 778277 ± 3% numa-numastat.node0.numa_hit 255.89 ± 2% +32.4% 338.76 ± 3% uptime.boot 10264 ± 7% +147.3% 25384 ± 5% uptime.idle 2.00 ± 76% +72475.0% 1451 ±125% perf-c2c.DRAM.local 38.50 ± 13% +20427.7% 7903 ± 92% perf-c2c.DRAM.remote 23.33 ± 17% +1567.9% 389.17 ± 61% perf-c2c.HITM.local 11.33 ± 35% +1902.9% 227.00 ± 84% perf-c2c.HITM.remote 17.44 ± 10% +208.4% 53.80 ± 2% vmstat.cpu.id 71.79 ± 2% -37.5% 44.87 ± 3% vmstat.cpu.us 107.92 ± 2% -43.9% 60.57 ± 3% vmstat.procs.r 2724 ± 4% +151.1% 6842 ± 3% vmstat.system.cs 134997 ± 4% -23.8% 102899 ± 7% vmstat.system.in 16.63 ± 11% +36.8 53.43 ± 2% mpstat.cpu.all.idle% 0.34 ± 3% -0.1 0.21 ± 2% mpstat.cpu.all.irq% 0.03 ± 6% +0.0 0.04 ± 9% mpstat.cpu.all.soft% 10.61 ± 3% -9.5 1.15 ± 38% mpstat.cpu.all.sys% 72.40 ± 2% -27.2 45.16 ± 3% mpstat.cpu.all.usr% 6.83 ± 34% +195.1% 20.17 ± 3% mpstat.max_utilization.seconds 102366 ± 29% +115.2% 220258 ± 7% meminfo.AnonHugePages 70562810 +14.4% 80723780 meminfo.CommitLimit 43743 ± 2% -22.7% 33821 ± 2% meminfo.HugePages_Surp 43743 ± 2% -22.7% 33821 ± 2% meminfo.HugePages_Total 89587444 ± 2% -22.7% 69265470 ± 2% meminfo.Hugetlb 66355 ± 18% -40.8% 39283 ± 15% meminfo.Mapped 1.341e+08 +15.3% 1.545e+08 meminfo.MemAvailable 1.351e+08 +15.1% 1.555e+08 meminfo.MemFree 95643557 ± 2% -21.4% 75182673 ± 2% meminfo.Memused 49588 ± 2% -31.7% 33871 ± 3% vm-scalability.median 8.02 ± 9% -2.6 5.40 ± 12% vm-scalability.median_stddev% 6842353 -34.3% 4498326 ± 2% vm-scalability.throughput 205.20 ± 2% +40.7% 288.76 ± 4% vm-scalability.time.elapsed_time 205.20 ± 2% +40.7% 288.76 ± 4% vm-scalability.time.elapsed_time.max 149773 ± 2% -47.3% 78866 ± 3% vm-scalability.time.involuntary_context_switches 10634 ± 2% -43.5% 6008 ± 3% vm-scalability.time.percent_of_cpu_this_job_got 2772 ± 5% -84.9% 419.47 ± 42% vm-scalability.time.system_time 19039 -11.2% 16908 vm-scalability.time.user_time 14514 ± 2% +4380.2% 650265 vm-scalability.time.voluntary_context_switches 617106 ± 42% -67.8% 198580 ±130% numa-vmstat.node0.nr_file_pages 8937 ± 42% -65.6% 3075 ±110% numa-vmstat.node0.nr_mapped 18779 ± 30% -35.4% 12124 ± 40% numa-vmstat.node0.nr_slab_reclaimable 603050 ± 43% -70.7% 176415 ±148% numa-vmstat.node0.nr_unevictable 603050 ± 43% -70.7% 176415 ±148% numa-vmstat.node0.nr_zone_unevictable 657413 ± 5% +18.2% 776975 ± 3% numa-vmstat.node0.numa_hit 581443 ± 6% +20.6% 701035 ± 8% numa-vmstat.node0.numa_local 214166 ±122% +192.8% 627105 ± 40% numa-vmstat.node1.nr_file_pages 11263349 ± 5% +35.8% 15297395 ± 7% numa-vmstat.node1.nr_free_pages 9478 ± 59% +72.7% 16368 ± 29% numa-vmstat.node1.nr_slab_reclaimable 163852 ±161% +260.4% 590489 ± 44% numa-vmstat.node1.nr_unevictable 163852 ±161% +260.4% 590489 ± 44% numa-vmstat.node1.nr_zone_unevictable 49.90 ± 29% +115.4% 107.47 ± 7% proc-vmstat.nr_anon_transparent_hugepages 3345235 +15.3% 3857626 proc-vmstat.nr_dirty_background_threshold 6698650 +15.3% 7724685 proc-vmstat.nr_dirty_threshold 33770919 +15.2% 38900683 proc-vmstat.nr_free_pages 196929 -2.3% 192368 proc-vmstat.nr_inactive_anon 16843 ± 18% -40.4% 10031 ± 14% proc-vmstat.nr_mapped 2693 -7.6% 2487 proc-vmstat.nr_page_table_pages 196929 -2.3% 192368 proc-vmstat.nr_zone_inactive_anon 1404664 +9.0% 1530693 ± 3% proc-vmstat.numa_hit 1271130 +9.3% 1389279 ± 3% proc-vmstat.numa_local 69467 ± 7% -34.8% 45284 ± 22% proc-vmstat.pgactivate 1263160 +12.8% 1425219 ± 3% proc-vmstat.pgfault 37012 +16.6% 43157 ± 4% proc-vmstat.pgreuse 2468473 ± 42% -67.8% 794312 ±130% numa-meminfo.node0.FilePages 75120 ± 30% -35.4% 48496 ± 40% numa-meminfo.node0.KReclaimable 35040 ± 42% -66.3% 11825 ±112% numa-meminfo.node0.Mapped 75120 ± 30% -35.4% 48496 ± 40% numa-meminfo.node0.SReclaimable 227978 ± 10% -17.0% 189123 ± 10% numa-meminfo.node0.Slab 2412201 ± 43% -70.7% 705661 ±148% numa-meminfo.node0.Unevictable 856474 ±123% +192.9% 2508266 ± 40% numa-meminfo.node1.FilePages 25221 ± 4% -34.1% 16618 ± 13% numa-meminfo.node1.HugePages_Surp 25221 ± 4% -34.1% 16618 ± 13% numa-meminfo.node1.HugePages_Total 37917 ± 59% +72.7% 65467 ± 30% numa-meminfo.node1.KReclaimable 45044169 ± 5% +35.8% 61184692 ± 7% numa-meminfo.node1.MemFree 53983914 ± 4% -29.9% 37843391 ± 12% numa-meminfo.node1.MemUsed 37917 ± 59% +72.7% 65467 ± 30% numa-meminfo.node1.SReclaimable 153538 ± 16% +26.2% 193736 ± 10% numa-meminfo.node1.Slab 655409 ±161% +260.4% 2361959 ± 44% numa-meminfo.node1.Unevictable 1482 ± 9% -17.5% 1223 ± 9% sched_debug.cfs_rq:/.runnable_avg.max 661.67 ± 14% -93.0% 46.09 ± 15% sched_debug.cfs_rq:/.util_est.avg 1286 ± 12% -61.4% 496.42 ± 37% sched_debug.cfs_rq:/.util_est.max 123.89 ± 48% -57.2% 53.08 ± 29% sched_debug.cfs_rq:/.util_est.stddev 125242 ± 11% +35.5% 169710 ± 10% sched_debug.cpu.clock.avg 125264 ± 11% +35.5% 169723 ± 10% sched_debug.cpu.clock.max 125213 ± 11% +35.5% 169693 ± 10% sched_debug.cpu.clock.min 124816 ± 11% +35.6% 169267 ± 10% sched_debug.cpu.clock_task.avg 125011 ± 11% +35.6% 169465 ± 10% sched_debug.cpu.clock_task.max 115620 ± 12% +37.8% 159344 ± 10% sched_debug.cpu.clock_task.min 2909 ± 14% +172.9% 7941 ± 10% sched_debug.cpu.nr_switches.avg 715.68 ± 18% +470.7% 4084 ± 23% sched_debug.cpu.nr_switches.min 125215 ± 11% +35.5% 169695 ± 10% sched_debug.cpu_clk 123982 ± 11% +35.9% 168463 ± 10% sched_debug.ktime 126127 ± 11% +35.3% 170626 ± 10% sched_debug.sched_clk 15.81 ± 2% +357.5% 72.34 ± 5% perf-stat.i.MPKI 1.46e+10 ± 2% -32.9% 9.801e+09 ± 4% perf-stat.i.branch-instructions 0.10 ± 3% +0.5 0.65 ± 5% perf-stat.i.branch-miss-rate% 10768595 -27.8% 7778807 ± 3% perf-stat.i.branch-misses 96.93 -19.0 77.95 perf-stat.i.cache-miss-rate% 8.054e+08 ± 2% -33.0% 5.398e+08 ± 4% perf-stat.i.cache-misses 8.26e+08 ± 2% -29.1% 5.855e+08 ± 4% perf-stat.i.cache-references 2668 ± 4% +159.7% 6928 ± 3% perf-stat.i.context-switches 5.07 +42.6% 7.24 ± 12% perf-stat.i.cpi 2.809e+11 ± 2% -44.1% 1.571e+11 ± 3% perf-stat.i.cpu-cycles 213.40 ± 2% +41.5% 301.92 ± 5% perf-stat.i.cpu-migrations 360.56 -9.5% 326.39 ± 5% perf-stat.i.cycles-between-cache-misses 6.256e+10 ± 2% -32.6% 4.218e+10 ± 4% perf-stat.i.instructions 0.24 +39.6% 0.33 ± 3% perf-stat.i.ipc 5779 ± 2% -18.1% 4735 ± 2% perf-stat.i.minor-faults 5780 ± 2% -18.1% 4737 ± 2% perf-stat.i.page-faults 12.99 -1.8% 12.75 perf-stat.overall.MPKI 97.43 -5.1 92.33 perf-stat.overall.cache-miss-rate% 4.52 -17.5% 3.72 perf-stat.overall.cpi 347.63 -16.0% 291.93 perf-stat.overall.cycles-between-cache-misses 0.22 +21.3% 0.27 perf-stat.overall.ipc 10915 -3.4% 10545 perf-stat.overall.path-length 1.433e+10 ± 2% -31.5% 9.821e+09 ± 4% perf-stat.ps.branch-instructions 10358936 ± 2% -25.2% 7745475 ± 4% perf-stat.ps.branch-misses 7.973e+08 ± 2% -32.4% 5.389e+08 ± 4% perf-stat.ps.cache-misses 8.183e+08 ± 2% -28.7% 5.838e+08 ± 4% perf-stat.ps.cache-references 2648 ± 4% +157.5% 6819 ± 3% perf-stat.ps.context-switches 2.771e+11 ± 2% -43.3% 1.572e+11 ± 3% perf-stat.ps.cpu-cycles 211.28 ± 2% +41.6% 299.23 ± 5% perf-stat.ps.cpu-migrations 6.139e+10 ± 2% -31.2% 4.226e+10 ± 4% perf-stat.ps.instructions 5815 ± 2% -19.4% 4686 ± 2% perf-stat.ps.minor-faults 5816 ± 2% -19.4% 4687 ± 2% perf-stat.ps.page-faults 1.265e+13 -3.4% 1.222e+13 perf-stat.total.instructions 60.25 ± 15% -13.0 47.20 ± 55% perf-profile.calltrace.cycles-pp.do_rw_once 47.47 ± 14% -8.3 39.13 ± 57% perf-profile.calltrace.cycles-pp.lrand48_r@plt 2.17 ±130% -1.5 0.65 ±159% perf-profile.calltrace.cycles-pp.__mutex_lock.hugetlb_fault.handle_mm_fault.do_user_addr_fault.exc_page_fault 1.57 ±127% -1.0 0.59 ±160% perf-profile.calltrace.cycles-pp.mutex_spin_on_owner.__mutex_lock.hugetlb_fault.handle_mm_fault.do_user_addr_fault 0.56 ±146% -0.6 0.00 perf-profile.calltrace.cycles-pp.osq_lock.__mutex_lock.hugetlb_fault.handle_mm_fault.do_user_addr_fault 1.30 ± 48% -0.4 0.88 ± 71% perf-profile.calltrace.cycles-pp.lrand48_r 2.11 ± 14% -0.1 1.99 ± 49% perf-profile.calltrace.cycles-pp.nrand48_r 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.ast_mode_config_helper_atomic_commit_tail.commit_tail.drm_atomic_helper_commit.drm_atomic_commit.drm_atomic_helper_dirtyfb 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.ast_primary_plane_helper_atomic_update.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail.commit_tail 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.commit_tail.drm_atomic_helper_commit.drm_atomic_commit.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail.commit_tail.drm_atomic_helper_commit 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail.commit_tail.drm_atomic_helper_commit.drm_atomic_commit 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.drm_fb_memcpy.ast_primary_plane_helper_atomic_update.drm_atomic_helper_commit_planes.drm_atomic_helper_commit_tail_rpm.ast_mode_config_helper_atomic_commit_tail 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp._raw_spin_lock_irq.alloc_hugetlb_folio.hugetlb_wp.hugetlb_fault.handle_mm_fault 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.drm_atomic_commit.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work.process_one_work 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.drm_atomic_helper_commit.drm_atomic_commit.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.drm_atomic_helper_dirtyfb.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work.process_one_work.worker_thread 0.00 +0.1 0.08 ±223% perf-profile.calltrace.cycles-pp.native_queued_spin_lock_slowpath._raw_spin_lock_irq.alloc_hugetlb_folio.hugetlb_wp.hugetlb_fault 0.00 +0.1 0.09 ±223% perf-profile.calltrace.cycles-pp.drm_fb_helper_damage_work.process_one_work.worker_thread.kthread.ret_from_fork 0.00 +0.1 0.09 ±223% perf-profile.calltrace.cycles-pp.drm_fbdev_generic_helper_fb_dirty.drm_fb_helper_damage_work.process_one_work.worker_thread.kthread 0.00 +0.1 0.09 ±223% perf-profile.calltrace.cycles-pp.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.copy_mc_enhanced_fast_string 0.00 +0.1 0.09 ±223% perf-profile.calltrace.cycles-pp.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.copy_mc_enhanced_fast_string.copy_subpage 0.00 +0.1 0.09 ±223% perf-profile.calltrace.cycles-pp.process_one_work.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 0.00 +0.1 0.09 ±223% perf-profile.calltrace.cycles-pp.worker_thread.kthread.ret_from_fork.ret_from_fork_asm 0.00 +0.1 0.10 ±223% perf-profile.calltrace.cycles-pp.clockevents_program_event.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 0.00 +0.1 0.10 ±223% perf-profile.calltrace.cycles-pp.kthread.ret_from_fork.ret_from_fork_asm 0.00 +0.1 0.10 ±223% perf-profile.calltrace.cycles-pp.ret_from_fork.ret_from_fork_asm 0.00 +0.1 0.10 ±223% perf-profile.calltrace.cycles-pp.ret_from_fork_asm 0.00 +0.1 0.10 ±223% perf-profile.calltrace.cycles-pp.prep_new_hugetlb_folio.alloc_surplus_hugetlb_folio.alloc_hugetlb_folio.hugetlb_wp.hugetlb_fault 0.00 +0.1 0.10 ±223% perf-profile.calltrace.cycles-pp.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.copy_mc_enhanced_fast_string.copy_subpage.copy_user_large_folio 0.00 +0.1 0.11 ±223% perf-profile.calltrace.cycles-pp.update_process_times.tick_nohz_handler.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt 0.00 +0.2 0.17 ±223% perf-profile.calltrace.cycles-pp.asm_sysvec_apic_timer_interrupt.copy_mc_enhanced_fast_string.copy_subpage.copy_user_large_folio.hugetlb_wp 0.00 +0.2 0.23 ±145% perf-profile.calltrace.cycles-pp.tick_nohz_handler.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt 0.00 +0.2 0.24 ±144% perf-profile.calltrace.cycles-pp.prep_compound_page.get_page_from_freelist.__alloc_pages_noprof.__folio_alloc_noprof.alloc_buddy_hugetlb_folio 0.00 +0.2 0.25 ±144% perf-profile.calltrace.cycles-pp.__hrtimer_run_queues.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt 0.00 +0.3 0.25 ±142% perf-profile.calltrace.cycles-pp.irq_exit_rcu.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.acpi_safe_halt.acpi_idle_enter 0.00 +0.3 0.26 ±144% perf-profile.calltrace.cycles-pp.get_page_from_freelist.__alloc_pages_noprof.__folio_alloc_noprof.alloc_buddy_hugetlb_folio.__alloc_fresh_hugetlb_folio 0.00 +0.3 0.26 ±144% perf-profile.calltrace.cycles-pp.__alloc_pages_noprof.__folio_alloc_noprof.alloc_buddy_hugetlb_folio.__alloc_fresh_hugetlb_folio.alloc_surplus_hugetlb_folio 0.00 +0.3 0.28 ±144% perf-profile.calltrace.cycles-pp.__folio_alloc_noprof.alloc_buddy_hugetlb_folio.__alloc_fresh_hugetlb_folio.alloc_surplus_hugetlb_folio.alloc_hugetlb_folio 0.00 +0.3 0.28 ±144% perf-profile.calltrace.cycles-pp.alloc_buddy_hugetlb_folio.__alloc_fresh_hugetlb_folio.alloc_surplus_hugetlb_folio.alloc_hugetlb_folio.hugetlb_wp 0.00 +0.3 0.28 ±144% perf-profile.calltrace.cycles-pp.__alloc_fresh_hugetlb_folio.alloc_surplus_hugetlb_folio.alloc_hugetlb_folio.hugetlb_wp.hugetlb_fault 0.00 +0.5 0.46 ±144% perf-profile.calltrace.cycles-pp.hrtimer_interrupt.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.acpi_safe_halt 0.00 +0.5 0.48 ±144% perf-profile.calltrace.cycles-pp.__sysvec_apic_timer_interrupt.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.acpi_safe_halt.acpi_idle_enter 0.00 +0.6 0.57 ±144% perf-profile.calltrace.cycles-pp.alloc_surplus_hugetlb_folio.alloc_hugetlb_folio.hugetlb_wp.hugetlb_fault.handle_mm_fault 0.00 +0.7 0.72 ±144% perf-profile.calltrace.cycles-pp.alloc_hugetlb_folio.hugetlb_wp.hugetlb_fault.handle_mm_fault.do_user_addr_fault 0.00 +0.9 0.90 ±143% perf-profile.calltrace.cycles-pp.sysvec_apic_timer_interrupt.asm_sysvec_apic_timer_interrupt.acpi_safe_halt.acpi_idle_enter.cpuidle_enter_state 0.00 +1.1 1.14 ±142% perf-profile.calltrace.cycles-pp.acpi_safe_halt.acpi_idle_enter.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call 0.00 +2.1 2.06 ±143% perf-profile.calltrace.cycles-pp.acpi_idle_enter.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle 0.00 +2.1 2.09 ±143% perf-profile.calltrace.cycles-pp.cpuidle_enter_state.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry 0.00 +2.1 2.10 ±143% perf-profile.calltrace.cycles-pp.cpuidle_enter.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary 0.00 +2.2 2.23 ±143% perf-profile.calltrace.cycles-pp.cpuidle_idle_call.do_idle.cpu_startup_entry.start_secondary.common_startup_64 0.00 +2.3 2.30 ±143% perf-profile.calltrace.cycles-pp.do_idle.cpu_startup_entry.start_secondary.common_startup_64 0.00 +2.3 2.30 ±143% perf-profile.calltrace.cycles-pp.cpu_startup_entry.start_secondary.common_startup_64 0.00 +2.3 2.30 ±143% perf-profile.calltrace.cycles-pp.start_secondary.common_startup_64 0.00 +2.4 2.35 ±142% perf-profile.calltrace.cycles-pp.common_startup_64 0.00 +2.7 2.71 ±143% perf-profile.calltrace.cycles-pp.asm_sysvec_apic_timer_interrupt.acpi_safe_halt.acpi_idle_enter.cpuidle_enter_state.cpuidle_enter 12.15 ±106% +14.7 26.84 ±129% perf-profile.calltrace.cycles-pp.do_access 10.20 ±128% +14.7 24.91 ±142% perf-profile.calltrace.cycles-pp.hugetlb_fault.handle_mm_fault.do_user_addr_fault.exc_page_fault.asm_exc_page_fault 10.20 ±128% +14.7 24.93 ±141% perf-profile.calltrace.cycles-pp.handle_mm_fault.do_user_addr_fault.exc_page_fault.asm_exc_page_fault.do_access 10.22 ±128% +14.7 24.95 ±142% perf-profile.calltrace.cycles-pp.exc_page_fault.asm_exc_page_fault.do_access 10.21 ±128% +14.7 24.95 ±142% perf-profile.calltrace.cycles-pp.do_user_addr_fault.exc_page_fault.asm_exc_page_fault.do_access 10.23 ±128% +14.8 25.05 ±141% perf-profile.calltrace.cycles-pp.asm_exc_page_fault.do_access 7.77 ±127% +15.5 23.22 ±141% perf-profile.calltrace.cycles-pp.copy_mc_enhanced_fast_string.copy_subpage.copy_user_large_folio.hugetlb_wp.hugetlb_fault 7.83 ±127% +15.5 23.34 ±141% perf-profile.calltrace.cycles-pp.copy_subpage.copy_user_large_folio.hugetlb_wp.hugetlb_fault.handle_mm_fault 7.84 ±127% +15.6 23.40 ±141% perf-profile.calltrace.cycles-pp.copy_user_large_folio.hugetlb_wp.hugetlb_fault.handle_mm_fault.do_user_addr_fault 8.00 ±127% +16.2 24.20 ±141% perf-profile.calltrace.cycles-pp.hugetlb_wp.hugetlb_fault.handle_mm_fault.do_user_addr_fault.exc_page_fault 84.24 ± 14% -17.2 67.02 ± 55% perf-profile.children.cycles-pp.do_rw_once 24.51 ± 14% -4.4 20.11 ± 57% perf-profile.children.cycles-pp.lrand48_r@plt 2.17 ±130% -1.5 0.65 ±159% perf-profile.children.cycles-pp.__mutex_lock 1.57 ±127% -1.0 0.59 ±160% perf-profile.children.cycles-pp.mutex_spin_on_owner 0.59 ±136% -0.6 0.04 ±152% perf-profile.children.cycles-pp.osq_lock 1.01 ± 19% -0.2 0.77 ± 47% perf-profile.children.cycles-pp.lrand48_r 2.81 ± 14% -0.1 2.71 ± 45% perf-profile.children.cycles-pp.nrand48_r 0.10 ± 57% -0.1 0.03 ±100% perf-profile.children.cycles-pp.main 0.10 ± 57% -0.1 0.03 ±100% perf-profile.children.cycles-pp.run_builtin 0.08 ± 92% -0.1 0.02 ±141% perf-profile.children.cycles-pp.__cmd_record 0.08 ± 92% -0.1 0.02 ±141% perf-profile.children.cycles-pp.cmd_record 0.06 ±112% -0.1 0.00 perf-profile.children.cycles-pp.perf_mmap__push 0.06 ±112% -0.1 0.00 perf-profile.children.cycles-pp.record__mmap_read_evlist 0.05 ±113% -0.1 0.00 perf-profile.children.cycles-pp.record__pushfn 0.05 ±111% -0.0 0.00 perf-profile.children.cycles-pp.writen 0.05 ±110% -0.0 0.00 perf-profile.children.cycles-pp.shmem_file_write_iter 0.04 ±110% -0.0 0.00 perf-profile.children.cycles-pp.generic_perform_write 0.01 ±223% -0.0 0.00 perf-profile.children.cycles-pp.copy_page_from_iter_atomic 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.__rmqueue_pcplist 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.io_serial_out 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.prepare_task_switch 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.seq_read_iter 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.update_curr 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.cpuidle_governor_latency_req 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.irqentry_enter 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.delay_tsc 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.nohz_balancer_kick 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.copy_mc_to_kernel 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.ksys_read 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.vfs_read 0.06 ± 17% +0.0 0.08 ± 36% perf-profile.children.cycles-pp.task_tick_fair 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.__sysvec_irq_work 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp._printk 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.asm_sysvec_irq_work 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.irq_work_run 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.irq_work_single 0.00 +0.0 0.01 ±223% perf-profile.children.cycles-pp.sysvec_irq_work 0.00 +0.0 0.02 ±223% perf-profile.children.cycles-pp.irq_work_run_list 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.__handle_mm_fault 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.__update_load_avg_cfs_rq 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.dequeue_entity 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.native_apic_msr_eoi 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.sched_ttwu_pending 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.schedule_preempt_disabled 0.00 +0.0 0.02 ±144% perf-profile.children.cycles-pp.rcu_all_qs 0.00 +0.0 0.02 ±144% perf-profile.children.cycles-pp.rcu_pending 0.00 +0.0 0.02 ±144% perf-profile.children.cycles-pp.read 0.00 +0.0 0.02 ±141% perf-profile.children.cycles-pp.update_irq_load_avg 0.00 +0.0 0.02 ±141% perf-profile.children.cycles-pp.update_rq_clock 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.___perf_sw_event 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.__flush_smp_call_function_queue 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.__sysvec_call_function_single 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.dequeue_task_fair 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.enqueue_entity 0.00 +0.0 0.02 ±146% perf-profile.children.cycles-pp.rcu_report_qs_rdp 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.read_tsc 0.00 +0.0 0.02 ±142% perf-profile.children.cycles-pp.rmqueue 0.00 +0.0 0.02 ±141% perf-profile.children.cycles-pp.wait_for_xmitr 0.00 +0.0 0.02 ±141% perf-profile.children.cycles-pp.idle_cpu 0.00 +0.0 0.03 ±141% perf-profile.children.cycles-pp.enqueue_task_fair 0.00 +0.0 0.03 ±143% perf-profile.children.cycles-pp.lapic_next_deadline 0.00 +0.0 0.03 ±143% perf-profile.children.cycles-pp.note_gp_changes 0.00 +0.0 0.03 ±147% perf-profile.children.cycles-pp.rcu_sched_clock_irq 0.00 +0.0 0.03 ±144% perf-profile.children.cycles-pp.sched_clock 0.00 +0.0 0.03 ±141% perf-profile.children.cycles-pp.activate_task 0.00 +0.0 0.03 ±142% perf-profile.children.cycles-pp.native_sched_clock 0.00 +0.0 0.03 ±142% perf-profile.children.cycles-pp.irqtime_account_irq 0.00 +0.0 0.03 ±142% perf-profile.children.cycles-pp.ktime_get_update_offsets_now 0.00 +0.0 0.03 ±142% perf-profile.children.cycles-pp.sched_clock_cpu 0.00 +0.0 0.03 ±142% perf-profile.children.cycles-pp.update_rq_clock_task 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp.complete 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp.tick_nohz_next_event 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp.tick_nohz_irq_exit 0.00 +0.0 0.04 ±142% perf-profile.children.cycles-pp.ttwu_do_activate 0.00 +0.0 0.04 ±144% perf-profile.children.cycles-pp.arch_scale_freq_tick 0.00 +0.0 0.04 ±142% perf-profile.children.cycles-pp.schedule_idle 0.06 ± 9% +0.0 0.10 ± 79% perf-profile.children.cycles-pp.tmigr_requires_handle_remote 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp.rcu_do_batch 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp.tick_nohz_get_sleep_length 0.04 ± 45% +0.0 0.09 ± 78% perf-profile.children.cycles-pp.get_jiffies_update 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp._raw_spin_lock_irqsave 0.00 +0.0 0.04 ±141% perf-profile.children.cycles-pp._raw_spin_lock 0.00 +0.0 0.04 ±152% perf-profile.children.cycles-pp.sched_balance_newidle 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.native_irq_return_iret 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.try_to_wake_up 0.04 ±101% +0.0 0.09 ± 78% perf-profile.children.cycles-pp.free_unref_page 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.clear_page_erms 0.00 +0.0 0.05 ±151% perf-profile.children.cycles-pp.pick_next_task_fair 0.06 ± 77% +0.0 0.10 ± 76% perf-profile.children.cycles-pp.exit_mm 0.00 +0.0 0.05 ±145% perf-profile.children.cycles-pp.__cond_resched 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.__get_user_pages 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.__mm_populate 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.clear_huge_page 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.hugetlb_no_page 0.00 +0.0 0.05 ±141% perf-profile.children.cycles-pp.populate_vma_page_range 0.00 +0.1 0.05 ±141% perf-profile.children.cycles-pp.__mmap 0.06 ± 77% +0.1 0.11 ± 76% perf-profile.children.cycles-pp.__mmput 0.06 ± 77% +0.1 0.11 ± 76% perf-profile.children.cycles-pp.__x64_sys_exit_group 0.06 ± 77% +0.1 0.11 ± 76% perf-profile.children.cycles-pp.do_group_exit 0.06 ± 77% +0.1 0.11 ± 76% perf-profile.children.cycles-pp.exit_mmap 0.00 +0.1 0.05 ±142% perf-profile.children.cycles-pp.rest_init 0.00 +0.1 0.05 ±142% perf-profile.children.cycles-pp.start_kernel 0.00 +0.1 0.05 ±142% perf-profile.children.cycles-pp.x86_64_start_kernel 0.00 +0.1 0.05 ±142% perf-profile.children.cycles-pp.x86_64_start_reservations 0.04 ±102% +0.1 0.10 ± 77% perf-profile.children.cycles-pp.tlb_finish_mmu 0.06 ± 77% +0.1 0.11 ± 75% perf-profile.children.cycles-pp.do_exit 0.00 +0.1 0.05 ±143% perf-profile.children.cycles-pp.update_load_avg 0.04 ±102% +0.1 0.10 ± 77% perf-profile.children.cycles-pp.__tlb_batch_free_encoded_pages 0.04 ±102% +0.1 0.10 ± 77% perf-profile.children.cycles-pp.folios_put_refs 0.04 ±102% +0.1 0.10 ± 77% perf-profile.children.cycles-pp.free_pages_and_swap_cache 0.01 ±223% +0.1 0.06 ±149% perf-profile.children.cycles-pp.task_work_run 0.01 ±223% +0.1 0.06 ±148% perf-profile.children.cycles-pp.task_mm_cid_work 0.00 +0.1 0.06 ±141% perf-profile.children.cycles-pp.ksys_mmap_pgoff 0.00 +0.1 0.06 ±141% perf-profile.children.cycles-pp.__update_blocked_fair 0.00 +0.1 0.06 ±146% perf-profile.children.cycles-pp.update_sg_lb_stats 0.02 ±144% +0.1 0.09 ±145% perf-profile.children.cycles-pp.irqentry_exit_to_user_mode 0.00 +0.1 0.07 ±118% perf-profile.children.cycles-pp.vm_mmap_pgoff 0.16 ± 35% +0.1 0.23 ± 79% perf-profile.children.cycles-pp.ksys_write 0.16 ± 34% +0.1 0.23 ± 79% perf-profile.children.cycles-pp.vfs_write 0.16 ± 35% +0.1 0.23 ± 80% perf-profile.children.cycles-pp.write 0.00 +0.1 0.08 ±145% perf-profile.children.cycles-pp.sched_balance_find_src_group 0.00 +0.1 0.08 ±145% perf-profile.children.cycles-pp.update_sd_lb_stats 0.00 +0.1 0.08 ±148% perf-profile.children.cycles-pp.schedule_timeout 0.00 +0.1 0.09 ±146% perf-profile.children.cycles-pp.__wait_for_common 0.00 +0.1 0.09 ±132% perf-profile.children.cycles-pp._nohz_idle_balance 0.00 +0.1 0.09 ±145% perf-profile.children.cycles-pp.tick_irq_enter 0.00 +0.1 0.09 ±145% perf-profile.children.cycles-pp.wait_for_completion_state 0.00 +0.1 0.09 ±146% perf-profile.children.cycles-pp.__wait_rcu_gp 0.00 +0.1 0.09 ±142% perf-profile.children.cycles-pp.sched_balance_update_blocked_averages 0.00 +0.1 0.09 ±141% perf-profile.children.cycles-pp.rcu_core 0.00 +0.1 0.10 ±145% perf-profile.children.cycles-pp.irq_enter_rcu 0.00 +0.1 0.10 ±143% perf-profile.children.cycles-pp.menu_select 0.00 +0.1 0.10 ±145% perf-profile.children.cycles-pp.hugetlb_vmemmap_optimize_folio 0.13 ± 15% +0.1 0.23 ± 68% perf-profile.children.cycles-pp.sched_tick 0.00 +0.1 0.10 ±141% perf-profile.children.cycles-pp.sched_balance_domains 0.00 +0.1 0.10 ±134% perf-profile.children.cycles-pp.sysvec_call_function_single 0.00 +0.1 0.11 ±146% perf-profile.children.cycles-pp.schedule 0.00 +0.1 0.11 ±143% perf-profile.children.cycles-pp.sched_balance_rq 0.05 ± 76% +0.1 0.18 ± 76% perf-profile.children.cycles-pp.io_serial_in 0.12 ±125% +0.1 0.24 ±144% perf-profile.children.cycles-pp.prep_compound_page 0.08 ± 57% +0.1 0.21 ± 83% perf-profile.children.cycles-pp.devkmsg_emit 0.08 ± 57% +0.1 0.21 ± 83% perf-profile.children.cycles-pp.devkmsg_write 0.07 ± 57% +0.1 0.20 ± 70% perf-profile.children.cycles-pp.wait_for_lsr 0.09 ± 37% +0.1 0.22 ± 72% perf-profile.children.cycles-pp.serial8250_console_write 0.00 +0.1 0.14 ±117% perf-profile.children.cycles-pp.asm_sysvec_call_function_single 0.13 ±124% +0.1 0.27 ±144% perf-profile.children.cycles-pp.__alloc_pages_noprof 0.13 ±124% +0.1 0.26 ±144% perf-profile.children.cycles-pp.get_page_from_freelist 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.console_flush_all 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.console_unlock 0.10 ± 38% +0.1 0.24 ± 72% perf-profile.children.cycles-pp.vprintk_emit 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.ast_mode_config_helper_atomic_commit_tail 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.ast_primary_plane_helper_atomic_update 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.commit_tail 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.drm_atomic_helper_commit_planes 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.drm_atomic_helper_commit_tail_rpm 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.drm_fb_memcpy 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.children.cycles-pp.memcpy_toio 0.13 ±125% +0.1 0.28 ±144% perf-profile.children.cycles-pp.__alloc_fresh_hugetlb_folio 0.13 ±124% +0.1 0.28 ±144% perf-profile.children.cycles-pp.__folio_alloc_noprof 0.10 ± 38% +0.1 0.24 ± 74% perf-profile.children.cycles-pp.drm_atomic_commit 0.10 ± 38% +0.1 0.24 ± 74% perf-profile.children.cycles-pp.drm_atomic_helper_commit 0.10 ± 38% +0.1 0.24 ± 74% perf-profile.children.cycles-pp.drm_atomic_helper_dirtyfb 0.00 +0.1 0.15 ±144% perf-profile.children.cycles-pp.__schedule 0.13 ±124% +0.1 0.28 ±144% perf-profile.children.cycles-pp.alloc_buddy_hugetlb_folio 0.10 ± 36% +0.2 0.25 ± 73% perf-profile.children.cycles-pp.drm_fb_helper_damage_work 0.10 ± 36% +0.2 0.25 ± 73% perf-profile.children.cycles-pp.drm_fbdev_generic_helper_fb_dirty 0.11 ± 36% +0.2 0.26 ± 73% perf-profile.children.cycles-pp.process_one_work 0.11 ± 36% +0.2 0.27 ± 72% perf-profile.children.cycles-pp.worker_thread 0.09 ± 12% +0.2 0.25 ± 89% perf-profile.children.cycles-pp.clockevents_program_event 0.12 ± 35% +0.2 0.29 ± 70% perf-profile.children.cycles-pp.kthread 0.12 ± 35% +0.2 0.29 ± 70% perf-profile.children.cycles-pp.ret_from_fork 0.12 ± 35% +0.2 0.29 ± 70% perf-profile.children.cycles-pp.ret_from_fork_asm 0.00 +0.2 0.18 ±143% perf-profile.children.cycles-pp.prep_new_hugetlb_folio 0.00 +0.2 0.18 ±145% perf-profile.children.cycles-pp.synchronize_rcu_normal 0.24 ± 10% +0.2 0.45 ± 69% perf-profile.children.cycles-pp.update_process_times 0.29 ± 33% +0.2 0.53 ± 55% perf-profile.children.cycles-pp.do_syscall_64 0.29 ± 33% +0.2 0.53 ± 55% perf-profile.children.cycles-pp.entry_SYSCALL_64_after_hwframe 0.08 ± 14% +0.3 0.34 ±106% perf-profile.children.cycles-pp.ktime_get 0.27 ± 9% +0.3 0.54 ± 71% perf-profile.children.cycles-pp.tick_nohz_handler 0.28 ± 9% +0.3 0.56 ± 72% perf-profile.children.cycles-pp.__hrtimer_run_queues 0.00 +0.3 0.34 ±144% perf-profile.children.cycles-pp._raw_spin_lock_irq 0.00 +0.3 0.34 ±144% perf-profile.children.cycles-pp.native_queued_spin_lock_slowpath 0.03 ±100% +0.4 0.39 ±119% perf-profile.children.cycles-pp.irq_exit_rcu 0.13 ±125% +0.4 0.58 ±140% perf-profile.children.cycles-pp.alloc_surplus_hugetlb_folio 0.39 ± 7% +0.5 0.87 ± 79% perf-profile.children.cycles-pp.hrtimer_interrupt 0.40 ± 7% +0.5 0.90 ± 79% perf-profile.children.cycles-pp.__sysvec_apic_timer_interrupt 0.14 ±126% +0.6 0.73 ±141% perf-profile.children.cycles-pp.alloc_hugetlb_folio 0.43 ± 7% +0.9 1.38 ± 96% perf-profile.children.cycles-pp.sysvec_apic_timer_interrupt 0.59 ± 15% +1.9 2.48 ±108% perf-profile.children.cycles-pp.asm_sysvec_apic_timer_interrupt 0.02 ±141% +2.2 2.20 ±134% perf-profile.children.cycles-pp.acpi_safe_halt 0.02 ±141% +2.2 2.20 ±134% perf-profile.children.cycles-pp.acpi_idle_enter 0.02 ±141% +2.2 2.24 ±134% perf-profile.children.cycles-pp.cpuidle_enter_state 0.02 ±141% +2.2 2.24 ±134% perf-profile.children.cycles-pp.cpuidle_enter 0.02 ±142% +2.4 2.38 ±134% perf-profile.children.cycles-pp.cpuidle_idle_call 0.02 ±141% +2.4 2.39 ±134% perf-profile.children.cycles-pp.start_secondary 0.03 ±102% +2.4 2.46 ±133% perf-profile.children.cycles-pp.do_idle 0.03 ±102% +2.4 2.46 ±133% perf-profile.children.cycles-pp.common_startup_64 0.03 ±102% +2.4 2.46 ±133% perf-profile.children.cycles-pp.cpu_startup_entry 12.44 ±103% +14.7 27.14 ±127% perf-profile.children.cycles-pp.do_access 10.22 ±128% +14.8 25.04 ±141% perf-profile.children.cycles-pp.do_user_addr_fault 10.22 ±128% +14.8 25.04 ±141% perf-profile.children.cycles-pp.exc_page_fault 10.20 ±128% +14.8 25.04 ±141% perf-profile.children.cycles-pp.hugetlb_fault 10.22 ±128% +14.9 25.08 ±141% perf-profile.children.cycles-pp.handle_mm_fault 10.24 ±128% +14.9 25.15 ±141% perf-profile.children.cycles-pp.asm_exc_page_fault 7.82 ±127% +15.6 23.38 ±141% perf-profile.children.cycles-pp.copy_mc_enhanced_fast_string 7.83 ±127% +15.6 23.42 ±141% perf-profile.children.cycles-pp.copy_subpage 7.84 ±127% +15.6 23.48 ±141% perf-profile.children.cycles-pp.copy_user_large_folio 8.00 ±127% +16.3 24.27 ±141% perf-profile.children.cycles-pp.hugetlb_wp 83.41 ± 14% -17.2 66.25 ± 55% perf-profile.self.cycles-pp.do_rw_once 1.56 ±127% -1.0 0.59 ±160% perf-profile.self.cycles-pp.mutex_spin_on_owner 0.59 ±136% -0.6 0.04 ±152% perf-profile.self.cycles-pp.osq_lock 0.72 ± 25% -0.2 0.49 ± 53% perf-profile.self.cycles-pp.lrand48_r@plt 1.92 ± 14% -0.2 1.72 ± 47% perf-profile.self.cycles-pp.do_access 2.53 ± 14% -0.1 2.44 ± 45% perf-profile.self.cycles-pp.nrand48_r 0.30 ± 15% -0.0 0.28 ± 50% perf-profile.self.cycles-pp.lrand48_r 0.01 ±223% -0.0 0.00 perf-profile.self.cycles-pp.copy_page_from_iter_atomic 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.io_serial_out 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.nohz_balancer_kick 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.asm_sysvec_apic_timer_interrupt 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.note_gp_changes 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.rcu_all_qs 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.rcu_pending 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.delay_tsc 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.__update_load_avg_cfs_rq 0.00 +0.0 0.01 ±223% perf-profile.self.cycles-pp.update_rq_clock_task 0.00 +0.0 0.02 ±141% perf-profile.self.cycles-pp.___perf_sw_event 0.00 +0.0 0.02 ±141% perf-profile.self.cycles-pp.irqtime_account_irq 0.00 +0.0 0.02 ±142% perf-profile.self.cycles-pp.__schedule 0.00 +0.0 0.02 ±142% perf-profile.self.cycles-pp._raw_spin_lock_irq 0.00 +0.0 0.02 ±142% perf-profile.self.cycles-pp.native_apic_msr_eoi 0.00 +0.0 0.02 ±142% perf-profile.self.cycles-pp.update_irq_load_avg 0.00 +0.0 0.02 ±141% perf-profile.self.cycles-pp.copy_user_large_folio 0.00 +0.0 0.02 ±146% perf-profile.self.cycles-pp.idle_cpu 0.00 +0.0 0.02 ±142% perf-profile.self.cycles-pp.read_tsc 0.00 +0.0 0.02 ±143% perf-profile.self.cycles-pp.hugetlb_wp 0.00 +0.0 0.02 ±141% perf-profile.self.cycles-pp.tick_nohz_next_event 0.00 +0.0 0.02 ±141% perf-profile.self.cycles-pp._raw_spin_lock_irqsave 0.00 +0.0 0.03 ±143% perf-profile.self.cycles-pp.lapic_next_deadline 0.00 +0.0 0.03 ±150% perf-profile.self.cycles-pp.__cond_resched 0.00 +0.0 0.03 ±141% perf-profile.self.cycles-pp.native_sched_clock 0.00 +0.0 0.03 ±141% perf-profile.self.cycles-pp.sched_balance_domains 0.00 +0.0 0.03 ±144% perf-profile.self.cycles-pp.ktime_get_update_offsets_now 0.00 +0.0 0.03 ±144% perf-profile.self.cycles-pp.tick_nohz_handler 0.00 +0.0 0.03 ±146% perf-profile.self.cycles-pp.update_load_avg 0.00 +0.0 0.04 ±143% perf-profile.self.cycles-pp.copy_subpage 0.00 +0.0 0.04 ±141% perf-profile.self.cycles-pp.__update_blocked_fair 0.00 +0.0 0.04 ±147% perf-profile.self.cycles-pp.menu_select 0.00 +0.0 0.04 ±144% perf-profile.self.cycles-pp.arch_scale_freq_tick 0.00 +0.0 0.04 ±141% perf-profile.self.cycles-pp._raw_spin_lock 0.04 ±101% +0.0 0.08 ± 77% perf-profile.self.cycles-pp.free_unref_page 0.04 ± 45% +0.0 0.09 ± 78% perf-profile.self.cycles-pp.get_jiffies_update 0.00 +0.0 0.04 ±141% perf-profile.self.cycles-pp.clear_page_erms 0.00 +0.0 0.05 ±141% perf-profile.self.cycles-pp.native_irq_return_iret 0.00 +0.0 0.05 ±148% perf-profile.self.cycles-pp.update_sg_lb_stats 0.01 ±223% +0.1 0.06 ±149% perf-profile.self.cycles-pp.task_mm_cid_work 0.05 ± 76% +0.1 0.17 ± 75% perf-profile.self.cycles-pp.io_serial_in 0.11 ±124% +0.1 0.24 ±144% perf-profile.self.cycles-pp.prep_compound_page 0.10 ± 38% +0.1 0.24 ± 73% perf-profile.self.cycles-pp.memcpy_toio 0.08 ± 14% +0.2 0.32 ±105% perf-profile.self.cycles-pp.ktime_get 0.00 +0.3 0.34 ±144% perf-profile.self.cycles-pp.native_queued_spin_lock_slowpath 0.00 +1.1 1.07 ±138% perf-profile.self.cycles-pp.acpi_safe_halt 7.77 ±127% +15.5 23.22 ±141% perf-profile.self.cycles-pp.copy_mc_enhanced_fast_string Disclaimer: Results have been estimated based on internal Intel analysis and are provided for informational purposes only. Any difference in system hardware or software design or configuration may affect actual performance. -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . Date: Mon, 8 Jul 2024 22:24:06 -0700 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709052408.4032665-1-yutingtseng@google.com> Subject: [PATCH v8 0/2] binder: frozen notification From: Yu-Ting Tseng To: cmllamas@google.com, tkjos@google.com, gregkh@linuxfoundation.org Cc: arve@android.com, maco@android.com, joel@joelfernandes.org, brauner@kernel.org, surenb@google.com, aliceryhl@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, Yu-Ting Tseng Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271496 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Separated the binder_features change into its own patch. Yu-Ting Tseng (2): binder: frozen notification binder: frozen notification binder_features flag drivers/android/binder.c | 284 +++++++++++++++++- drivers/android/binder_internal.h | 21 +- drivers/android/binderfs.c | 8 + include/uapi/linux/android/binder.h | 36 +++ .../filesystems/binderfs/binderfs_test.c | 1 + 5 files changed, 346 insertions(+), 4 deletions(-) base-commit: 14d7c92f8df9c0964ae6f8b813c1b3ac38120825 -- 2.45.2.803.g4e1b14247a-goog . Date: Tue, 9 Jul 2024 15:37:47 +1000 From: Stephen Rothwell To: Greg KH Cc: Greg Kroah-Hartman , Linux Kernel Mailing List , Linux Next Mailing List , Rasmus Villemoes , Stefan Eichenberger Subject: linux-next: manual merge of the tty tree with the tty.current tree Message-ID: <20240709153747.07d7272c@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/20wsyuH.4Ohkr5IbyyKsu/p"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271505 org.kernel.vger.linux-next:62110 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/20wsyuH.4Ohkr5IbyyKsu/p Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the tty tree got a conflict in: drivers/tty/serial/imx.c between commit: 9706fc87b4cf ("serial: imx: only set receiver level if it is zero") from the tty.current tree and commit: 3093f180bc6e ("serial: imx: stop casting struct uart_port to struct imx_p= ort") from the tty tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc drivers/tty/serial/imx.c index ff32cd2d2863,d96f0524f7fb..000000000000 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@@ -1549,10 -1553,9 +1554,10 @@@ static int imx_uart_startup(struct uart =20 static void imx_uart_shutdown(struct uart_port *port) { - struct imx_port *sport =3D (struct imx_port *)port; + struct imx_port *sport =3D to_imx_port(port); unsigned long flags; u32 ucr1, ucr2, ucr4, uts; + int loops; =20 if (sport->dma_is_enabled) { dmaengine_terminate_sync(sport->dma_chan_tx); @@@ -1984,8 -1937,8 +1989,8 @@@ static void imx_uart_poll_put_char(stru static int imx_uart_rs485_config(struct uart_port *port, struct ktermios = *termios, struct serial_rs485 *rs485conf) { - struct imx_port *sport =3D (struct imx_port *)port; + struct imx_port *sport =3D to_imx_port(port); - u32 ucr2; + u32 ucr2, ufcr; =20 if (rs485conf->flags & SER_RS485_ENABLED) { /* Enable receiver if low-active RTS signal is requested */ --Sig_/20wsyuH.4Ohkr5IbyyKsu/p Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaMzKsACgkQAVBC80lX 0GwBaAf+IQdnt5lHrEVR733zi2DEUfysmf9dniwZEnSKMMXn21Pi/l/RACvNcKoq BU1au5gAw+QxyvggvqAjxGSjF+ASNNsYeUWmGyxy4yUN0RfTlzfbl3SUYQZswvyn BFmn15gdHDVUh5d7mYPOss3HekEhwYmC6KqDhLECj2BVDCVQk3WxeXGC8906bL9V E84grww3k0K8T+32EW3yxyNvDfFDoe0dqIi6DI8A79aCs7X53SsmkQ961eedT59y NvED0bUgIpRlcOSPgRJdQUwHIeOvcoPfB+oW1Y6vO6Dn3NvZrqBy8N3z3mworD42 f0B2+LP3QYgCFsoZr3TfBejhm4MMtQ== =yz1h -----END PGP SIGNATURE----- --Sig_/20wsyuH.4Ohkr5IbyyKsu/p-- . From: "lixianming.19951001" To: mst@redhat.com, jasowang@redhat.com, pbonzini@redhat.com Cc: virtualization@lists.linux.dev, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, lixianming Subject: [PATCH] virtio_blk: stop all virtqueues when 'virtblk_probe' fails Date: Tue, 9 Jul 2024 15:50:53 +0800 Message-Id: <20240709075053.811-1-lixianming.19951001@bytedance.com> X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-block:93949 org.kernel.vger.linux-kernel:1271517 Newsgroups: org.kernel.vger.linux-block,dev.linux.lists.virtualization,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: lixianming We have already enabled the queue in 'init_vq', so we should stop all the virtqueues, just as we do in 'virtblk_remove', when 'virtblk_probe' fails Signed-off-by: lixianming --- drivers/block/virtio_blk.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 2351f411fa46..fb702be291c2 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c @@ -1559,6 +1559,8 @@ static int virtblk_probe(struct virtio_device *vdev) out_free_tags: blk_mq_free_tag_set(&vblk->tag_set); out_free_vq: + virtio_reset_device(vdev); + vblk->vdev = NULL; vdev->config->del_vqs(vdev); kfree(vblk->vqs); out_free_vblk: -- 2.20.1 . Date: Mon, 8 Jul 2024 23:08:27 -0700 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709060831.495366-1-jstultz@google.com> Subject: [RESEND][PATCH v2] locking/rwsem: Add __always_inline annotation to __down_write_common() and inlined callers From: John Stultz To: LKML Cc: John Stultz , Tim Murray , Nick Desaulniers , Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long , Boqun Feng , kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271524 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Apparently despite it being marked inline, the compiler may not inline __down_write_common() which makes it difficult to identify the cause of lock contention, as the wchan of the blocked function will always be listed as __down_write_common(). So add __always_inline annotation to the common function (as well as the inlined helper callers) to force it to be inlined so a more useful blocking function will be listed (via wchan). This mirrors commit 92cc5d00a431 ("locking/rwsem: Add __always_inline annotation to __down_read_common() and inlined callers") which did the same for __down_read_common. I sort of worry that I'm playing wack-a-mole here, and talking with compiler people, they tell me inline means nothing, which makes me want to cry a little. So I'm wondering if we need to replace all the inlines with __always_inline, or remove them because either we mean something by it, or not. Cc: Tim Murray Cc: Nick Desaulniers Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Will Deacon Cc: Waiman Long Cc: Boqun Feng Cc: kernel-team@android.com Fixes: c995e638ccbb ("locking/rwsem: Fold __down_{read,write}*()") Reported-by: Tim Murray Acked-by: Waiman Long Signed-off-by: John Stultz --- v2: * Add ack tags & minor tweaks to commit message --- kernel/locking/rwsem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c index c6d17aee4209..33cac79e3994 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -1297,7 +1297,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem) /* * lock for writing */ -static inline int __down_write_common(struct rw_semaphore *sem, int state) +static __always_inline int __down_write_common(struct rw_semaphore *sem, int state) { int ret = 0; @@ -1310,12 +1310,12 @@ static inline int __down_write_common(struct rw_semaphore *sem, int state) return ret; } -static inline void __down_write(struct rw_semaphore *sem) +static __always_inline void __down_write(struct rw_semaphore *sem) { __down_write_common(sem, TASK_UNINTERRUPTIBLE); } -static inline int __down_write_killable(struct rw_semaphore *sem) +static __always_inline int __down_write_killable(struct rw_semaphore *sem) { return __down_write_common(sem, TASK_KILLABLE); } -- 2.45.2.803.g4e1b14247a-goog . From: Tiezhu Yang To: Huacai Chen Cc: loongarch@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH] LoongArch: Check TIF_LOAD_WATCH to enable user space watchpoint Date: Tue, 9 Jul 2024 14:17:31 +0800 Message-ID: <20240709061731.11025-1-yangtiezhu@loongson.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271531 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.loongarch Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Currently, there are some places to set CSR_PRMD_PWE, the first one is in hw_breakpoint_thread_switch() to enable user space singlestep via checking TIF_SINGLESTEP, the second one is in hw_breakpoint_control() to enable user space watchpoint. For the latter case, it should also check TIF_LOAD_WATCH to make the logic correct and clear. Fixes: c8e57ab0995c ("LoongArch: Trigger user-space watchpoints correctly") Signed-off-by: Tiezhu Yang --- arch/loongarch/kernel/hw_breakpoint.c | 2 +- arch/loongarch/kernel/ptrace.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/loongarch/kernel/hw_breakpoint.c b/arch/loongarch/kernel/hw_breakpoint.c index 621ad7634df7..a6e4b605bfa8 100644 --- a/arch/loongarch/kernel/hw_breakpoint.c +++ b/arch/loongarch/kernel/hw_breakpoint.c @@ -221,7 +221,7 @@ static int hw_breakpoint_control(struct perf_event *bp, } enable = csr_read64(LOONGARCH_CSR_CRMD); csr_write64(CSR_CRMD_WE | enable, LOONGARCH_CSR_CRMD); - if (bp->hw.target) + if (bp->hw.target && test_tsk_thread_flag(bp->hw.target, TIF_LOAD_WATCH)) regs->csr_prmd |= CSR_PRMD_PWE; break; case HW_BREAKPOINT_UNINSTALL: diff --git a/arch/loongarch/kernel/ptrace.c b/arch/loongarch/kernel/ptrace.c index 200109de1971..19dc6eff45cc 100644 --- a/arch/loongarch/kernel/ptrace.c +++ b/arch/loongarch/kernel/ptrace.c @@ -589,6 +589,7 @@ static int ptrace_hbp_set_ctrl(unsigned int note_type, struct perf_event *bp; struct perf_event_attr attr; struct arch_hw_breakpoint_ctrl ctrl; + struct thread_info *ti = task_thread_info(tsk); bp = ptrace_hbp_get_initialised_bp(note_type, tsk, idx); if (IS_ERR(bp)) @@ -613,8 +614,10 @@ static int ptrace_hbp_set_ctrl(unsigned int note_type, if (err) return err; attr.disabled = 0; + set_ti_thread_flag(ti, TIF_LOAD_WATCH); } else { attr.disabled = 1; + clear_ti_thread_flag(ti, TIF_LOAD_WATCH); } return modify_user_hw_breakpoint(bp, &attr); -- 2.42.0 . Date: Tue, 9 Jul 2024 08:30:18 +0200 From: Stanislav Jakubek To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Orson Zhai , Baolin Wang , Baolin Wang , Chunyan Zhang Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] dt-bindings: mmc: sdhci-sprd: convert to YAML Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271540 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-mmc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Covert the Spreadtrum SDHCI controller bindings to DT schema. Rename the file to match compatible. Drop assigned-* properties as these should not be needed. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Stanislav Jakubek --- Node name adjustments in DTS are being handled as part of: https://lore.kernel.org/lkml/cover.1720112081.git.stano.jakubek@gmail.com/ Changes in V2: - drop assigned-* properties, these shouldn't be needed (Krzysztof) - reflect this change in the commit description .../devicetree/bindings/mmc/sdhci-sprd.txt | 67 ----------- .../bindings/mmc/sprd,sdhci-r11.yaml | 112 ++++++++++++++++++ 2 files changed, 112 insertions(+), 67 deletions(-) delete mode 100644 Documentation/devicetree/bindings/mmc/sdhci-sprd.txt create mode 100644 Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml diff --git a/Documentation/devicetree/bindings/mmc/sdhci-sprd.txt b/Documentation/devicetree/bindings/mmc/sdhci-sprd.txt deleted file mode 100644 index eb7eb1b529f0..000000000000 --- a/Documentation/devicetree/bindings/mmc/sdhci-sprd.txt +++ /dev/null @@ -1,67 +0,0 @@ -* Spreadtrum SDHCI controller (sdhci-sprd) - -The Secure Digital (SD) Host controller on Spreadtrum SoCs provides an interface -for MMC, SD and SDIO types of cards. - -This file documents differences between the core properties in mmc.txt -and the properties used by the sdhci-sprd driver. - -Required properties: -- compatible: Should contain "sprd,sdhci-r11". -- reg: physical base address of the controller and length. -- interrupts: Interrupts used by the SDHCI controller. -- clocks: Should contain phandle for the clock feeding the SDHCI controller -- clock-names: Should contain the following: - "sdio" - SDIO source clock (required) - "enable" - gate clock which used for enabling/disabling the device (required) - "2x_enable" - gate clock controlling the device for some special platforms (optional) - -Optional properties: -- assigned-clocks: the same with "sdio" clock -- assigned-clock-parents: the default parent of "sdio" clock -- pinctrl-names: should be "default", "state_uhs" -- pinctrl-0: should contain default/high speed pin control -- pinctrl-1: should contain uhs mode pin control - -PHY DLL delays are used to delay the data valid window, and align the window -to sampling clock. PHY DLL delays can be configured by following properties, -and each property contains 4 cells which are used to configure the clock data -write line delay value, clock read command line delay value, clock read data -positive edge delay value and clock read data negative edge delay value. -Each cell's delay value unit is cycle of the PHY clock. - -- sprd,phy-delay-legacy: Delay value for legacy timing. -- sprd,phy-delay-sd-highspeed: Delay value for SD high-speed timing. -- sprd,phy-delay-sd-uhs-sdr50: Delay value for SD UHS SDR50 timing. -- sprd,phy-delay-sd-uhs-sdr104: Delay value for SD UHS SDR50 timing. -- sprd,phy-delay-mmc-highspeed: Delay value for MMC high-speed timing. -- sprd,phy-delay-mmc-ddr52: Delay value for MMC DDR52 timing. -- sprd,phy-delay-mmc-hs200: Delay value for MMC HS200 timing. -- sprd,phy-delay-mmc-hs400: Delay value for MMC HS400 timing. -- sprd,phy-delay-mmc-hs400es: Delay value for MMC HS400 enhanced strobe timing. - -Examples: - -sdio0: sdio@20600000 { - compatible = "sprd,sdhci-r11"; - reg = <0 0x20600000 0 0x1000>; - interrupts = ; - - clock-names = "sdio", "enable"; - clocks = <&ap_clk CLK_EMMC_2X>, - <&apahb_gate CLK_EMMC_EB>; - assigned-clocks = <&ap_clk CLK_EMMC_2X>; - assigned-clock-parents = <&rpll CLK_RPLL_390M>; - - pinctrl-names = "default", "state_uhs"; - pinctrl-0 = <&sd0_pins_default>; - pinctrl-1 = <&sd0_pins_uhs>; - - sprd,phy-delay-sd-uhs-sdr104 = <0x3f 0x7f 0x2e 0x2e>; - bus-width = <8>; - non-removable; - no-sdio; - no-sd; - cap-mmc-hw-reset; - status = "okay"; -}; diff --git a/Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml b/Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml new file mode 100644 index 000000000000..b08081bc018b --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/sprd,sdhci-r11.yaml @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mmc/sprd,sdhci-r11.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Spreadtrum SDHCI controller + +maintainers: + - Orson Zhai + - Baolin Wang + - Chunyan Zhang + +properties: + compatible: + const: sprd,sdhci-r11 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + minItems: 2 + items: + - description: SDIO source clock + - description: gate clock for enabling/disabling the device + - description: gate clock controlling the device for some special platforms (optional) + + clock-names: + minItems: 2 + items: + - const: sdio + - const: enable + - const: 2x_enable + + pinctrl-0: + description: default/high speed pin control + maxItems: 1 + + pinctrl-1: + description: UHS mode pin control + maxItems: 1 + + pinctrl-names: + minItems: 1 + items: + - const: default + - const: state_uhs + +patternProperties: + "^sprd,phy-delay-(legacy|mmc-(ddr52|highspeed|hs[24]00|hs400es)|sd-(highspeed|uhs-sdr(50|104)))$": + $ref: /schemas/types.yaml#/definitions/uint32-array + items: + - description: clock data write line delay value + - description: clock read command line delay value + - description: clock read data positive edge delay value + - description: clock read data negative edge delay value + description: + PHY DLL delays are used to delay the data valid window, and align + the window to the sampling clock. Each cell's delay value unit is + cycle of the PHY clock. + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + +allOf: + - $ref: sdhci-common.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + #include + + mmc@50430000 { + compatible = "sprd,sdhci-r11"; + reg = <0x50430000 0x1000>; + interrupts = ; + + clocks = <&aon_prediv CLK_EMMC_2X>, + <&apahb_gate CLK_EMMC_EB>, + <&aon_gate CLK_EMMC_2X_EN>; + clock-names = "sdio", "enable", "2x_enable"; + + pinctrl-0 = <&sd0_pins_default>; + pinctrl-1 = <&sd0_pins_uhs>; + pinctrl-names = "default", "state_uhs"; + + bus-width = <8>; + cap-mmc-hw-reset; + mmc-hs400-enhanced-strobe; + mmc-hs400-1_8v; + mmc-hs200-1_8v; + mmc-ddr-1_8v; + non-removable; + no-sdio; + no-sd; + + sprd,phy-delay-mmc-ddr52 = <0x3f 0x75 0x14 0x14>; + sprd,phy-delay-mmc-hs200 = <0x0 0x8c 0x8c 0x8c>; + sprd,phy-delay-mmc-hs400 = <0x44 0x7f 0x2e 0x2e>; + sprd,phy-delay-mmc-hs400es = <0x3f 0x3f 0x2e 0x2e>; + }; +... -- 2.34.1 . From: Maxime Chevallier To: davem@davemloft.net Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, Andrew Lunn , Jakub Kicinski , Eric Dumazet , Paolo Abeni , Russell King , linux-arm-kernel@lists.infradead.org, Christophe Leroy , Herve Codina , Florian Fainelli , Heiner Kallweit , Vladimir Oltean , =?UTF-8?q?K=C3=B6ry=20Maincent?= , Jesse Brandeburg , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Piergiorgio Beruto , Oleksij Rempel , =?UTF-8?q?Nicol=C3=B2=20Veronese?= , Simon Horman , mwojtas@chromium.org, Nathan Chancellor , Antoine Tenart , Marc Kleine-Budde , Dan Carpenter , Romain Gantois Subject: [PATCH net-next v17 00/14] Introduce PHY listing and link_topology tracking Date: Tue, 9 Jul 2024 08:30:23 +0200 Message-ID: <20240709063039.2909536-1-maxime.chevallier@bootlin.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271541 org.kernel.vger.netdev:355885 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello everyone, This is V17 of the phy_link_topology series, aiming at improving support for multiple PHYs being attached to the same MAC. V17 is mostly a rebase of V16 on net-next, as the addition of new features in the PSE-PD command raised a conflict on the ethtool netlink spec, and patch 10 was updated : ("net: ethtool: pse-pd: Target the command to the requested PHY") The new code was updated to make use of the new helpers to retrieve the PHY from the ethnl request, and an error message was also updated to better reflect the fact that we don't only rely on the attached PHY for configuration. As a remainder, here's what the PHY listings would look like : - eth0 has a 88x3310 acting as media converter, and an SFP module with an embedded 88e1111 PHY - eth2 has a 88e1510 PHY # ethtool --show-phys * PHY for eth0: PHY index: 1 Driver name: mv88x3310 PHY device name: f212a600.mdio-mii:00 Downstream SFP bus name: sfp-eth0 Upstream type: MAC PHY for eth0: PHY index: 2 Driver name: Marvell 88E1111 PHY device name: i2c:sfp-eth0:16 Upstream type: PHY Upstream PHY index: 1 Upstream SFP name: sfp-eth0 PHY for eth2: PHY index: 1 Driver name: Marvell 88E1510 PHY device name: f212a200.mdio-mii:00 Upstream type: MAC Ethtool patches : https://github.com/minimaxwell/ethtool/tree/mc/topo-v16 Link to V16: https://lore.kernel.org/netdev/20240705132706.13588-1-maxime.chevallier@bootlin.com/ Link to V15: https://lore.kernel.org/netdev/20240703140806.271938-1-maxime.chevallier@bootlin.com/ Link to V14: https://lore.kernel.org/netdev/20240701131801.1227740-1-maxime.chevallier@bootlin.com/ Link to V13: https://lore.kernel.org/netdev/20240607071836.911403-1-maxime.chevallier@bootlin.com/ Link to v12: https://lore.kernel.org/netdev/20240605124920.720690-1-maxime.chevallier@bootlin.com/ Link to v11: https://lore.kernel.org/netdev/20240404093004.2552221-1-maxime.chevallier@bootlin.com/ Link to V10: https://lore.kernel.org/netdev/20240304151011.1610175-1-maxime.chevallier@bootlin.com/ Link to V9: https://lore.kernel.org/netdev/20240228114728.51861-1-maxime.chevallier@bootlin.com/ Link to V8: https://lore.kernel.org/netdev/20240220184217.3689988-1-maxime.chevallier@bootlin.com/ Link to V7: https://lore.kernel.org/netdev/20240213150431.1796171-1-maxime.chevallier@bootlin.com/ Link to V6: https://lore.kernel.org/netdev/20240126183851.2081418-1-maxime.chevallier@bootlin.com/ Link to V5: https://lore.kernel.org/netdev/20231221180047.1924733-1-maxime.chevallier@bootlin.com/ Link to V4: https://lore.kernel.org/netdev/20231215171237.1152563-1-maxime.chevallier@bootlin.com/ Link to V3: https://lore.kernel.org/netdev/20231201163704.1306431-1-maxime.chevallier@bootlin.com/ Link to V2: https://lore.kernel.org/netdev/20231117162323.626979-1-maxime.chevallier@bootlin.com/ Link to V1: https://lore.kernel.org/netdev/20230907092407.647139-1-maxime.chevallier@bootlin.com/ More discussions on specific issues that happened in 6.9-rc: https://lore.kernel.org/netdev/20240412104615.3779632-1-maxime.chevallier@bootlin.com/ https://lore.kernel.org/netdev/20240429131008.439231-1-maxime.chevallier@bootlin.com/ https://lore.kernel.org/netdev/20240507102822.2023826-1-maxime.chevallier@bootlin.com/ Maxime Chevallier (14): net: phy: Introduce ethernet link topology representation net: sfp: pass the phy_device when disconnecting an sfp module's PHY net: phy: add helpers to handle sfp phy connect/disconnect net: sfp: Add helper to return the SFP bus name net: ethtool: Allow passing a phy index for some commands netlink: specs: add phy-index as a header parameter net: ethtool: Introduce a command to list PHYs on an interface netlink: specs: add ethnl PHY_GET command set net: ethtool: plca: Target the command to the requested PHY net: ethtool: pse-pd: Target the command to the requested PHY net: ethtool: cable-test: Target the command to the requested PHY net: ethtool: strset: Remove unnecessary check on genl_info net: ethtool: strset: Allow querying phy stats by index Documentation: networking: document phy_link_topology Documentation/netlink/specs/ethtool.yaml | 58 ++++ Documentation/networking/ethtool-netlink.rst | 51 +++ Documentation/networking/index.rst | 1 + .../networking/phy-link-topology.rst | 121 +++++++ MAINTAINERS | 1 + drivers/net/phy/Makefile | 2 +- drivers/net/phy/marvell-88x2222.c | 2 + drivers/net/phy/marvell.c | 2 + drivers/net/phy/marvell10g.c | 2 + drivers/net/phy/phy_device.c | 48 +++ drivers/net/phy/phy_link_topology.c | 105 ++++++ drivers/net/phy/phylink.c | 3 +- drivers/net/phy/qcom/at803x.c | 2 + drivers/net/phy/qcom/qca807x.c | 2 + drivers/net/phy/sfp-bus.c | 26 +- include/linux/netdevice.h | 4 +- include/linux/phy.h | 6 + include/linux/phy_link_topology.h | 82 +++++ include/linux/sfp.h | 8 +- include/uapi/linux/ethtool.h | 16 + include/uapi/linux/ethtool_netlink.h | 20 ++ net/core/dev.c | 15 + net/ethtool/Makefile | 3 +- net/ethtool/cabletest.c | 35 +- net/ethtool/netlink.c | 66 +++- net/ethtool/netlink.h | 33 ++ net/ethtool/phy.c | 308 ++++++++++++++++++ net/ethtool/plca.c | 30 +- net/ethtool/pse-pd.c | 31 +- net/ethtool/strset.c | 27 +- 30 files changed, 1057 insertions(+), 53 deletions(-) create mode 100644 Documentation/networking/phy-link-topology.rst create mode 100644 drivers/net/phy/phy_link_topology.c create mode 100644 include/linux/phy_link_topology.h create mode 100644 net/ethtool/phy.c -- 2.45.1 . From: Johannes Thumshirn Subject: [PATCH 0/2] btrfs: more RAID stripe tree updates Date: Tue, 09 Jul 2024 08:32:11 +0200 Message-Id: <20240709-b4-rst-updates-v1-0-200800dfe0fd@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Chris Mason , Josef Bacik , David Sterba Cc: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qu Wenru , Filipe Manana , Johannes Thumshirn Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271556 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-btrfs Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Two further RST updates targeted for 6.11 (hopefully). The first one is a reworked version of the scrub vs dev-replace deadlock fix. It does have reviews from Josef and Qu but I'd love to head Filipe's take on it. The second one updates a stripe extent in case a write to a already present logical address happens. --- Johannes Thumshirn (2): btrfs: don't hold dev_replace rwsem over whole of btrfs_map_block btrfs: replace stripe extents fs/btrfs/raid-stripe-tree.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ fs/btrfs/volumes.c | 28 +++++++++++++++---------- 2 files changed, 68 insertions(+), 11 deletions(-) --- base-commit: 584df860cac6e35e364ada101ccd13495b954644 change-id: 20240709-b4-rst-updates-bb9c0e49cd5b Best regards, -- Johannes Thumshirn . Date: Tue, 9 Jul 2024 16:33:05 +1000 From: Stephen Rothwell To: Joerg Roedel , Bjorn Helgaas , Lorenzo Pieralisi , Krzysztof =?UTF-8?B?V2lsY3p5?= =?UTF-8?B?xYRza2k=?= Cc: Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: duplicate patch in the iommu tree Message-ID: <20240709163305.188b1182@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/b3VQaRT5EBDDwIjA+IZt6xB"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271560 org.kernel.vger.linux-next:62113 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/b3VQaRT5EBDDwIjA+IZt6xB Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, The following commit is also in the pci tree as a different commit (but the same patch): 40929e8e5449 ("dt-bindings: PCI: generic: Add ats-supported property") This is commit 631b2e7318d4 ("dt-bindings: PCI: generic: Add ats-supported property") in the pci tree. --=20 Cheers, Stephen Rothwell --Sig_/b3VQaRT5EBDDwIjA+IZt6xB Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM2aEACgkQAVBC80lX 0GyGSAf+Kb1z8rJJsmT9B3/6CyrDBJEr9XNP5Xrz7DYxYV1ApGejCpBouFVMOL1d QR5YnmNYMWIhINmmKgGpWwx3sWLXB00GvmpyXpMw5vZpM7mBsUkRf27ySbYZlWx0 R0IwdT3a2FdmtUQ1ZgLCCM8sgBPfhWVdZyJvgMMrtJueIwwAh4TeKkoHnzCGo+lM HsCm5pfqj4Djhb+SmHqHhGlT2c+e09RD2wFat71QPMDx6k8MxFa/v5L5TyOPXoMr TyWY1NQBzz6txX8mGfdYK0splWEmZu+yFeBn6V/a8jmKDgOGFC7BMGD2qjlxje4A VGVAd1Rs6BbOsQuR3u3GYm5v9yCBRg== =RGWI -----END PGP SIGNATURE----- --Sig_/b3VQaRT5EBDDwIjA+IZt6xB-- . From: Varadarajan Narayanan To: , , , , , , , , CC: Varadarajan Narayanan Subject: [PATCH v1] pci: qcom: Fix 'opp' variable usage Date: Tue, 9 Jul 2024 12:06:20 +0530 Message-ID: <20240709063620.4125951-1-quic_varada@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271561 org.kernel.vger.linux-pci:145049 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-pci Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail qcom_pcie_icc_opp_update() calls 'dev_pm_opp_put(opp)' regardless of the success of dev_pm_opp_find_freq_exact(). If dev_pm_opp_find_freq_exact() had failed and 'opp' had some error value, the subsequent dev_pm_opp_put(opp) results in a crash. Hence call dev_pm_opp_put(opp) only if 'opp' has a valid value. Fixes: 78b5f6f8855e ("PCI: qcom: Add OPP support to scale performance") Signed-off-by: Varadarajan Narayanan --- drivers/pci/controller/dwc/pcie-qcom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index 26405fcfa499..2a80d4499c25 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -1443,8 +1443,8 @@ static void qcom_pcie_icc_opp_update(struct qcom_pcie *pcie) if (ret) dev_err(pci->dev, "Failed to set OPP for freq (%lu): %d\n", freq_kbps * width, ret); + dev_pm_opp_put(opp); } - dev_pm_opp_put(opp); } } -- 2.34.1 . Date: Tue, 9 Jul 2024 16:37:15 +1000 From: Stephen Rothwell To: Greg KH , Mauro Carvalho Chehab Cc: David Plowman , Hans Verkuil , Jacopo Mondi , Naushir Patuck , Nick Hollinghurst , Sakari Ailus , Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: build failure after merge of the driver-core tree Message-ID: <20240709163715.3bcd6ab3@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/LLRyCjwUfGVoOapVNN1ZBj8"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271564 org.kernel.vger.linux-next:62114 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/LLRyCjwUfGVoOapVNN1ZBj8 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, After merging the driver-core tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/media/platform/raspberrypi/pisp_be/pisp_be.c:1786:27: error: initia= lization of 'void (*)(struct platform_device *)' from incompatible pointer = type 'int (*)(struct platform_device *)' [-Werror=3Dincompatible-pointer-ty= pes] 1786 | .remove =3D pispbe_remove, | ^~~~~~~~~~~~~ drivers/media/platform/raspberrypi/pisp_be/pisp_be.c:1786:27: note: (near i= nitialization for 'pispbe_pdrv..remove') cc1: all warnings being treated as errors Caused by commit 0edb555a65d1 ("platform: Make platform_driver::remove() return void") interacting withc commit 12187bd5d4f8 ("media: raspberrypi: Add support for PiSP BE") from the vl4-dvb-next tree. I have applied the following fix up patch. From: Stephen Rothwell Date: Tue, 9 Jul 2024 16:03:05 +1000 Subject: [PATCH] fix up for "platform: Make platform_driver::remove() retur= n void" interacting with commit 12187bd5d4f8 ("media: raspberrypi: Add support for PiSP BE") from the v4l-dvb-next tree. Signed-off-by: Stephen Rothwell --- drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers= /media/platform/raspberrypi/pisp_be/pisp_be.c index e74df5b116dc..7596ae1f7de6 100644 --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c @@ -1756,7 +1756,7 @@ static int pispbe_probe(struct platform_device *pdev) return ret; } =20 -static int pispbe_remove(struct platform_device *pdev) +static void pispbe_remove(struct platform_device *pdev) { struct pispbe_dev *pispbe =3D platform_get_drvdata(pdev); =20 @@ -1765,8 +1765,6 @@ static int pispbe_remove(struct platform_device *pdev) pispbe_runtime_suspend(pispbe->dev); pm_runtime_dont_use_autosuspend(pispbe->dev); pm_runtime_disable(pispbe->dev); - - return 0; } =20 static const struct dev_pm_ops pispbe_pm_ops =3D { --=20 2.43.0 --=20 Cheers, Stephen Rothwell --Sig_/LLRyCjwUfGVoOapVNN1ZBj8 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM2psACgkQAVBC80lX 0Gyf8wf/baWep99MNzEME4/nIVkQHEFidvtVri78Hc3DIvOaf67CD2/HrRVB8KMh A5KqtbfeIiN2PCcLTCFE0ROb9Dg7ZWVz1glwLfJ5DTj/tMHytu52nvCqiQMjCgva HxW4d+Svgk7RrGQlF+qLjmKs3KXAhSS1kjcc97dNH4+8x2ZJl+F+E6r1prPEJ1mI HlSZcXYC50ipu8Mk1uKj/DrQxZYAGchUTYoKj9zwvZGJgpVdhe+qh6zNH8M0dJX1 W/NMXHfGA+RiOGVJ0W5GqPZDOU+lBmJquNEXOwQ9Vt+GQEppLy5SHa22PHAB5rBt y2zi5Yn6+27Ytlr2onRQNSvolmrBEQ== =saEg -----END PGP SIGNATURE----- --Sig_/LLRyCjwUfGVoOapVNN1ZBj8-- . From: Varadarajan Narayanan To: , , , , , , , , , , , , CC: Varadarajan Narayanan Subject: [PATCH v1 0/3] Add interconnect driver for IPQ5332 SoC Date: Tue, 9 Jul 2024 12:09:45 +0530 Message-ID: <20240709063949.4127310-1-quic_varada@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271566 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Enable icc-clk based interconnect driver for IPQ5332. This is similar to IPQ9574's icc-clk based driver. dt_bindings_check and dtbs_check passed. Ensured that icc_sync_state is called and relevant clocks are disabled. Dependency: [1] https://lore.kernel.org/linux-arm-msm/20240430064214.2030013-1-quic_varada@quicinc.com/ Varadarajan Narayanan (3): dt-bindings: interconnect: Add Qualcomm IPQ5332 support clk: qcom: ipq5332: Use icc-clk for enabling NoC related clocks arm64: dts: qcom: ipq5332: Add icc provider ability to gcc .../bindings/clock/qcom,ipq5332-gcc.yaml | 2 + arch/arm64/boot/dts/qcom/ipq5332.dtsi | 2 + drivers/clk/qcom/gcc-ipq5332.c | 36 +++++++++++++-- .../dt-bindings/interconnect/qcom,ipq5332.h | 46 +++++++++++++++++++ 4 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 include/dt-bindings/interconnect/qcom,ipq5332.h -- 2.34.1 . Date: Tue, 9 Jul 2024 14:43:29 +0800 From: kernel test robot To: Borislav Petkov CC: , , , , Nikunj A Dadhania , Ashish Kalra , Subject: [tip:x86/sev] [x86/sev] 06685975c2: BUG:kernel_failed_in_early-boot_stage,last_printk:Booting_the_kernel(entry_offset:#) Message-ID: <202407091342.46d7dbb-oliver.sang@intel.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271571 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, kernel test robot noticed "BUG:kernel_failed_in_early-boot_stage,last_print= k:Booting_the_kernel(entry_offset:#)" on: commit: 06685975c2090e180851a0ff175c140188b6b54a ("x86/sev: Move SEV compil= ation units") https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git x86/sev [test failed on linux-next/master 0b58e108042b0ed28a71cd7edf5175999955b233] in testcase: boot compiler: gcc-13 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) we don't have idea how this commit could cause early boot issue, so we rebu= ild kernel for both this commit and its parent with the config in [1], then rer= un the tests, the issue is still persistent while keeping clean on parent. 3991b04d4870fd33 06685975c2090e180851a0ff175 ---------------- --------------------------- fail:runs %reproduction fail:runs | | | :200 25% 50:50 dmesg.BUG:kernel_failed_in_ea= rly-boot_stage,last_printk:Booting_the_kernel(entry_offset:#) since the config in [1] is a random config, we also try another x86_64 conf= ig which we use for various functional tests, still can reproduce the issue. we also try two i386 configs, but not reproduce the issue. FYI If you fix the issue in a separate patch/commit (i.e. not just a new versio= n of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-lkp/202407091342.46d7dbb-oliver.sang@i= ntel.com Decompressing Linux... No EFI environment detected. Parsing ELF... done. Booting the kernel (entry_offset: 0x0000000000000ffa). convert early boot stage from reboot-without-warning to failed BUG: kernel failed in early-boot stage, last printk: Booting the kernel (en= try_offset: 0x0000000000000ffa). Linux version 6.10.0-rc2-00015-g06685975c209 #1 Command line: ip=3D::::vm-meta-70::dhcp root=3D/dev/ram0 RESULT_ROOT=3D/res= ult/boot/1/vm-snb/debian-12-x86_64-20240206.cgz/x86_64-randconfig-r016-2023= 0701/gcc-13/06685975c2090e180851a0ff175c140188b6b54a/21 BOOT_IMAGE=3D/pkg/l= inux/x86_64-randconfig-r016-20230701/gcc-13/06685975c2090e180851a0ff175c140= 188b6b54a/vmlinuz-6.10.0-rc2-00015-g06685975c209 branch=3Dtip/x86/sev job= =3D/lkp/jobs/scheduled/vm-meta-70/boot-1-debian-12-x86_64-20240206.cgz-x86_= 64-randconfig-r016-20230701-06685975c209-20240708-45480-br2l55-20.yaml user= =3Dlkp ARCH=3Dx86_64 kconfig=3Dx86_64-randconfig-r016-20230701 commit=3D066= 85975c2090e180851a0ff175c140188b6b54a nmi_watchdog=3D0 intremap=3Dposted_ms= i vmalloc=3D256M initramfs_async=3D0 page_owner=3Don carrier_timeout=3D60 m= ax_uptime=3D600 LKP_SERVER=3Dinternal-lkp-server selinux=3D0 debug apic=3Dd= ebug sysrq_always_enabled rcupdate.rcu_cpu_stall_timeout=3D100 net.ifnames= =3D0 printk.devkmsg=3Don panic=3D-1 softlockup_panic=3D1 nmi_watchdog=3Dpan= ic oops=3Dpanic load_ramdisk=3D2 prompt_ramdisk=3D0 drbd.minor_count=3D8 sy= stemd.log_level=3Derr ignore_loglevel console=3Dtty0 earlyprintk=3DttyS0,11= 5200 console=3DttyS0,115200 vga=3Dnormal rw rcuperf.shutdown=3D0 rcuscale.s= hutdown=3D0 refscale.shutdown=3D0 watchdog_thresh=3D240 audit=3D0 kunit.ena= ble=3D0 ia32_emulation=3Don riscv_isa_fallback=3D1 Kboot worker: lkp-worker32 Elapsed time: 60 [1] The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240709/202407091342.46d7dbb-olive= r.sang@intel.com --=20 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . From: Chen Ni To: xiubli@redhat.com, idryomov@gmail.com Cc: ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Chen Ni Subject: [PATCH] ceph: convert comma to semicolon Date: Tue, 9 Jul 2024 14:44:00 +0800 Message-Id: <20240709064400.869619-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271572 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.ceph-devel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- fs/ceph/dir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index 5aadc56e0cc0..18c72b305858 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -1589,7 +1589,7 @@ void __ceph_dentry_dir_lease_touch(struct ceph_dentry_info *di) } spin_lock(&mdsc->dentry_list_lock); - __dentry_dir_lease_touch(mdsc, di), + __dentry_dir_lease_touch(mdsc, di); spin_unlock(&mdsc->dentry_list_lock); } -- 2.25.1 . Date: Tue, 9 Jul 2024 16:46:18 +1000 From: Stephen Rothwell To: Rob Herring , Olof Johansson , Arnd Bergmann , Palmer Dabbelt , Paul Walmsley Cc: ARM , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: duplicate patches in the devicetree tree Message-ID: <20240709164618.69cfcfad@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/2DRl4Cklscdcw/Xkyc9LcFw"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271573 org.kernel.vger.linux-next:62115 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/2DRl4Cklscdcw/Xkyc9LcFw Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, The following commits are also in the arm-soc and risc-v trees as different commits (but the same patches): 0620bce64afa ("dt-bindings: riscv: cpus: add ref to interrupt-controller") 877097a2fab0 ("dt-bindings: interrupt-controller: convert marvell,mpic bi= nding to YAML") c7ce06684bf5 ("dt-bindings: interrupt-controller: riscv,cpu-intc: convert= to dtschema") --=20 Cheers, Stephen Rothwell --Sig_/2DRl4Cklscdcw/Xkyc9LcFw Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM3LoACgkQAVBC80lX 0GwKNwf8C0TTNGeCtICkaEL7I5AWdR7ssQTG9fP8m1pLeOiumk0wskNlJW/ROFzb /SiWmmkLWyyibTgIhWBnSFm8LXb4HeudQ+aWUiLOxF3kqDnTs+TQudNDX7u26lQ5 kIeya6dht59jXAzYaHhaNALEB96sAQ3E4/nsLGwJOBMBst3bEi9WdSZ69KdopdlH QpZ0ZK1PCUiWzhHoBaL+uZE2qFAQjZ1HPz8T1S228U62aOJyKJkwU96BWQ7ydUnx zpo94wBP4KcvSFPs7Eq6KwbqCXtjveCn4r2eHP4PCxWHTULhINgYsSwXDYDiT2HS y9KXROo0MWiicnBgSUhicPzjNyWUaw== =0ofK -----END PGP SIGNATURE----- --Sig_/2DRl4Cklscdcw/Xkyc9LcFw-- . From: Philipp Hortmann To: Greg Kroah-Hartman , , CC: Philipp Hortmann Subject: [PATCH] staging: rtl8723bs: Remove constant result function CheckNegative() Date: Tue, 9 Jul 2024 08:26:34 +0200 Message-ID: <20240709062634.9454-1-philipp.hortmann@emerson.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271575 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-staging Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Remove function CheckNegative() that returns always true to shorten code. Signed-off-by: Philipp Hortmann --- Tested with rtl8723bs in ODYS Trendbook Next 14 --- .../staging/rtl8723bs/hal/HalHWImg8723B_BB.c | 17 ++--------------- .../staging/rtl8723bs/hal/HalHWImg8723B_MAC.c | 12 +----------- .../staging/rtl8723bs/hal/HalHWImg8723B_RF.c | 12 +----------- 3 files changed, 4 insertions(+), 37 deletions(-) diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c index dd0f74b0cf0d..4da2487f6750 100644 --- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c +++ b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_BB.c @@ -70,13 +70,6 @@ static bool CheckPositive( return false; } -static bool CheckNegative( - struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2 -) -{ - return true; -} - /****************************************************************************** * AGC_TAB.TXT ******************************************************************************/ @@ -244,10 +237,7 @@ void ODM_ReadAndConfig_MP_8723B_AGC_TAB(struct dm_odm_t *pDM_Odm) READ_NEXT_PAIR(v1, v2, i); } else { READ_NEXT_PAIR(v1, v2, i); - if (!CheckNegative(pDM_Odm, v1, v2)) - bMatched = false; - else - bMatched = true; + bMatched = true; READ_NEXT_PAIR(v1, v2, i); } @@ -506,10 +496,7 @@ void ODM_ReadAndConfig_MP_8723B_PHY_REG(struct dm_odm_t *pDM_Odm) READ_NEXT_PAIR(v1, v2, i); } else { READ_NEXT_PAIR(v1, v2, i); - if (!CheckNegative(pDM_Odm, v1, v2)) - bMatched = false; - else - bMatched = true; + bMatched = true; READ_NEXT_PAIR(v1, v2, i); } diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c index 47e66f4ad9d1..1f0cc8d58df3 100644 --- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c +++ b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_MAC.c @@ -68,13 +68,6 @@ static bool CheckPositive( return false; } -static bool CheckNegative( - struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2 -) -{ - return true; -} - /****************************************************************************** * MAC_REG.TXT ******************************************************************************/ @@ -214,10 +207,7 @@ void ODM_ReadAndConfig_MP_8723B_MAC_REG(struct dm_odm_t *pDM_Odm) READ_NEXT_PAIR(v1, v2, i); } else { READ_NEXT_PAIR(v1, v2, i); - if (!CheckNegative(pDM_Odm, v1, v2)) - bMatched = false; - else - bMatched = true; + bMatched = true; READ_NEXT_PAIR(v1, v2, i); } diff --git a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c index efc68c17b126..155ec311a52e 100644 --- a/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c +++ b/drivers/staging/rtl8723bs/hal/HalHWImg8723B_RF.c @@ -78,13 +78,6 @@ static bool CheckPositive( return false; } -static bool CheckNegative( - struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2 -) -{ - return true; -} - /****************************************************************************** * RadioA.TXT ******************************************************************************/ @@ -245,10 +238,7 @@ void ODM_ReadAndConfig_MP_8723B_RadioA(struct dm_odm_t *pDM_Odm) READ_NEXT_PAIR(v1, v2, i); } else { READ_NEXT_PAIR(v1, v2, i); - if (!CheckNegative(pDM_Odm, v1, v2)) - bMatched = false; - else - bMatched = true; + bMatched = true; READ_NEXT_PAIR(v1, v2, i); } -- 2.45.2 . From: Naina Mehta To: , , , , , , CC: , , , , Subject: [PATCH v4 0/5] Add MPSS remoteproc support for SDX75 Date: Tue, 9 Jul 2024 12:19:19 +0530 Message-ID: <20240709064924.325478-1-quic_nainmeht@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271576 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-remoteproc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add modem support to SDX75 using the PAS remoteproc driver. Also, add qlink_logging memory region and split MPSS DSM region into 2 separate regions. These patches were co-authored by Rohit Agarwal while at Qualcomm. Changes in v4: - Updated commit message for reserved memory updation for mpss to add the motivation behind the change. - Link to v3: https://lore.kernel.org/all/20240618131342.103995-1-quic_nainmeht@quicinc.com/ Changes in v3: - Updated commit message for reserved memory updation for mpss. - Link to v2: https://lore.kernel.org/all/20240617093428.3616194-1-quic_nainmeht@quicinc.com/ Changes in v2: - Added missing binding for SDX75 to allOf constraints. - Updated reserved memory node names to remove underscores. - Link to v1: https://lore.kernel.org/all/20240606143858.4026-1-quic_nainmeht@quicinc.com/ Naina Mehta (5): dt-bindings: remoteproc: qcom,sm8550-pas: document the SDX75 PAS remoteproc: qcom: pas: Add SDX75 remoteproc support arm64: dts: qcom: sdx75: update reserved memory regions for mpss arm64: dts: qcom: sdx75: Add remoteproc node arm64: dts: qcom: sdx75-idp: enable MPSS remoteproc node .../bindings/remoteproc/qcom,sm8550-pas.yaml | 3 + arch/arm64/boot/dts/qcom/sdx75-idp.dts | 6 ++ arch/arm64/boot/dts/qcom/sdx75.dtsi | 65 +++++++++++++++++-- drivers/remoteproc/qcom_q6v5_pas.c | 1 + 4 files changed, 71 insertions(+), 4 deletions(-) -- 2.34.1 . From: Chen Ni To: me@bobcopeland.com Cc: linux-karma-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Chen Ni Subject: [PATCH] fs: omfs: Convert comma to semicolon Date: Tue, 9 Jul 2024 14:51:51 +0800 Message-Id: <20240709065151.869737-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271586 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- fs/omfs/file.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/omfs/file.c b/fs/omfs/file.c index 6b580b9da8e3..94cb3b454c6f 100644 --- a/fs/omfs/file.c +++ b/fs/omfs/file.c @@ -22,8 +22,8 @@ void omfs_make_empty_table(struct buffer_head *bh, int offset) struct omfs_extent *oe = (struct omfs_extent *) &bh->b_data[offset]; oe->e_next = ~cpu_to_be64(0ULL); - oe->e_extent_count = cpu_to_be32(1), - oe->e_fill = cpu_to_be32(0x22), + oe->e_extent_count = cpu_to_be32(1); + oe->e_fill = cpu_to_be32(0x22); oe->e_entry[0].e_cluster = ~cpu_to_be64(0ULL); oe->e_entry[0].e_blocks = ~cpu_to_be64(0ULL); } -- 2.25.1 . Date: Tue, 9 Jul 2024 16:57:08 +1000 From: Stephen Rothwell To: "Martin K. Petersen" Cc: Linux Kernel Mailing List , Linux Next Mailing List , Nathan Chancellor , Tomas Henzl Subject: linux-next: manual merge of the scsi-mkp tree with Linus' tree Message-ID: <20240709165708.3f8e3498@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/T511yx9uxaRgdDo9lMOp/sB"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271588 org.kernel.vger.linux-next:62117 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/T511yx9uxaRgdDo9lMOp/sB Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the scsi-mkp tree got a conflict in: drivers/scsi/mpi3mr/mpi3mr_transport.c between commit: 9f365cb8bbd0 ("scsi: mpi3mr: Use proper format specifier in mpi3mr_sas_po= rt_add()") from Linus' tree and commit: de24085328c0 ("scsi: mpi3mr: Correct a test in mpi3mr_sas_port_add()") from the scsi-mkp tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc drivers/scsi/mpi3mr/mpi3mr_transport.c index 82aa4e418c5a,27865ee896d7..000000000000 --- a/drivers/scsi/mpi3mr/mpi3mr_transport.c +++ b/drivers/scsi/mpi3mr/mpi3mr_transport.c @@@ -1363,8 -1377,8 +1377,8 @@@ static struct mpi3mr_sas_port *mpi3mr_s (mr_sas_node->phy[i].hba_port !=3D hba_port)) continue; =20 - if (i > sizeof(mr_sas_port->phy_mask) * 8) { + if (i >=3D sizeof(mr_sas_port->phy_mask) * 8) { - ioc_warn(mrioc, "skipping port %u, max allowed value is %lu\n", + ioc_warn(mrioc, "skipping port %u, max allowed value is %zu\n", i, sizeof(mr_sas_port->phy_mask) * 8); goto out_fail; } --Sig_/T511yx9uxaRgdDo9lMOp/sB Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM30QACgkQAVBC80lX 0GwVmQgAk9XUPMw49w+zT9uAmQ4spf44yUxg5HEswz1XMAx+mTzzMyU7wAZhm+v2 meWwhq8erwgXVEgNDbnzBeOGzlsOtRljpPyNk1P3qhcBD7gsVh/TUkYdEhjzHr07 UKCxmeSd9u0rU4yfkOU4Ju5tBkcOPwY5C7acYEgnx3bFq9alrKsH67kitYXLgCwP A/GgMf2MYrU+qDJJmlhMKXahbDZM8Oj8MvrMSEd1CLwZ7mawZDotSxDx0IH9UvTS BHhKZeLM21uiNhRY6sErAGOd0Gnw3lUJvTDKI1de1xzvVnRJg60MxRuCrKtxA6eP wX4fvBk0eyCxnh+w5JestFo570oeiQ== =xk5+ -----END PGP SIGNATURE----- --Sig_/T511yx9uxaRgdDo9lMOp/sB-- . Date: Tue, 9 Jul 2024 00:00:45 -0700 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709070047.4055369-2-yutingtseng@google.com> Subject: [PATCH v9 0/2] binder: frozen notification From: Yu-Ting Tseng To: cmllamas@google.com, tkjos@google.com, gregkh@linuxfoundation.org Cc: arve@android.com, maco@android.com, joel@joelfernandes.org, brauner@kernel.org, surenb@google.com, aliceryhl@google.com, kernel-team@android.com, linux-kernel@vger.kernel.org, Yu-Ting Tseng Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271593 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This patchset adds a binder feature that allows userspace to subscribe to frozen state changes. See patch 1/2 for more details on why this is needed. Patch 1/2 contains the core implementation. Patch 2/2 contains a binderfs change so userspace can query whether this feature is supported. Yu-Ting Tseng (2): binder: frozen notification binder: frozen notification binder_features flag drivers/android/binder.c | 284 +++++++++++++++++- drivers/android/binder_internal.h | 21 +- drivers/android/binderfs.c | 8 + include/uapi/linux/android/binder.h | 36 +++ .../filesystems/binderfs/binderfs_test.c | 1 + 5 files changed, 346 insertions(+), 4 deletions(-) base-commit: 14d7c92f8df9c0964ae6f8b813c1b3ac38120825 -- 2.45.2.803.g4e1b14247a-goog . From: Zqiang To: paulmck@kernel.org, frederic@kernel.org, neeraj.upadhyay@kernel.org, joel@joelfernandes.org, urezki@gmail.com, boqun.feng@gmail.com Cc: qiang.zhang1211@gmail.com, rcu@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] rcu-tasks: Fix access non-existent percpu rtpcp variable in rcu_tasks_need_gpcb() Date: Tue, 9 Jul 2024 15:03:17 +0800 Message-Id: <20240709070317.24876-1-qiang.zhang1211@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271597 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.rcu Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail For kernels built with CONFIG_FORCE_NR_CPUS=y, the nr_cpu_ids is defined as NR_CPUS instead of the number of possible cpus, this will cause the following system panic: [ 0.015349][ T0] smpboot: Allowing 4 CPUs, 0 hotplug CPUs ... [ 0.021342][ T0] setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:512 nr_node_ids:1 ... [ 3.681252][ T15] BUG: unable to handle page fault for address: ffffffff9911c8c8 [ 3.689415][ T45] ehci-pci 0000:00:1a.0: debug port 2 [ 3.697008][ T15] #PF: supervisor read access in kernel mode [ 3.697009][ T15] #PF: error_code(0x0000) - not-present page [ 3.706233][ T45] ehci-pci 0000:00:1a.0: irq 16, io mem 0xf7e3c000 [ 3.708152][ T15] PGD 40fa24067 P4D 40fa24067 PUD 40fa25063 PMD 410bff063 [ 3.720380][ T45] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 3.720430][ T15] PTE 800ffffbefee3062 [ 3.720431][ T15] Oops: 0000 [#1] PREEMPT SMP PTI [ 3.727873][ T45] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06 [ 3.734009][ T15] CPU: 0 PID: 15 Comm: rcu_tasks_trace Tainted: G W 6.6.21 #1 5dc7acf91a5e8e9ac9dcfc35bee0245691283ea6 [ 3.734011][ T15] Hardware name: Dell Inc. OptiPlex 9020/005T15, BIOS A14 09/14/2015 [ 3.734012][ T15] RIP: 0010:rcu_tasks_need_gpcb+0x25d/0x2c0 [ 3.737962][ T45] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 3.742877][ T15] RSP: 0018:ffffa371c00a3e60 EFLAGS: 00010082 [ 3.751891][ T45] usb usb2: Product: EHCI Host Controller [ 3.764495][ T15] [ 3.764496][ T15] RAX: ffffffff98929ca0 RBX: ffffffff98b3b328 RCX: 0000000000021880 [ 3.764497][ T15] RDX: ffffffff9911c880 RSI: 0000000000000000 RDI: 0000000000000000 [ 3.772461][ T45] usb usb2: Manufacturer: Linux 6.6.21 ehci_hcd [ 3.778248][ T15] RBP: 0000000000000202 R08: 0000000000000000 R09: 0000000000000000 [ 3.778249][ T15] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000003 [ 3.778249][ T15] R13: 0000000000000000 R14: 0000000000000001 R15: ffffffff98b3b320 [ 3.786216][ T45] usb usb2: SerialNumber: 0000:00:1a.0 [ 3.805811][ T15] FS: 0000000000000000(0000) GS:ffff8c781ea00000(0000) knlGS:0000000000000000 [ 3.805813][ T15] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 3.811993][ T45] hub 2-0:1.0: USB hub found [ 3.817383][ T15] CR2: ffffffff9911c8c8 CR3: 000000040fa20005 CR4: 00000000001706f0 [ 3.817385][ T15] Call Trace: [ 3.817386][ T15] [ 3.817388][ T15] ? __die+0x23/0x80 [ 3.819643][ T45] hub 2-0:1.0: 2 ports detected [ 3.827481][ T15] ? page_fault_oops+0xa4/0x180 [ 3.827485][ T15] ? exc_page_fault+0x152/0x180 [ 3.922376][ T15] ? asm_exc_page_fault+0x26/0x40 [ 3.927289][ T15] ? rcu_tasks_need_gpcb+0x25d/0x2c0 [ 3.932459][ T15] ? __pfx_rcu_tasks_kthread+0x40/0x40 [ 3.937806][ T15] rcu_tasks_one_gp+0x69/0x180 [ 3.942451][ T15] rcu_tasks_kthread+0x94/0xc0 [ 3.947096][ T15] kthread+0xe8/0x140 [ 3.950956][ T15] ? __pfx_kthread+0x40/0x40 [ 3.955425][ T15] ret_from_fork+0x34/0x80 [ 3.959721][ T15] ? __pfx_kthread+0x40/0x40 [ 3.964192][ T15] ret_from_fork_asm+0x1b/0x80 [ 3.968841][ T15] Consider that there may be holes in the CPU numbers, this commit use the maxcpu variable to store the CPU numbers after traversing possible cpu, and generate the rcu_task_cpu_ids variable and assign it to (maxcpu +1) instead of nr_cpu_ids. Closes: https://lore.kernel.org/linux-input/CALMA0xaTSMN+p4xUXkzrtR5r6k7hgoswcaXx7baR_z9r5jjskw@mail.gmail.com/T/#u Reported-by: Zhixu Liu Signed-off-by: Zqiang --- kernel/rcu/tasks.h | 80 +++++++++++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 29 deletions(-) diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index 2b1d6abf3ba3..12d63ce84cc9 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -49,6 +49,7 @@ struct rcu_tasks_percpu { struct list_head rtp_blkd_tasks; struct list_head rtp_exit_list; int cpu; + int index; struct rcu_tasks *rtpp; }; @@ -110,6 +111,7 @@ struct rcu_tasks { call_rcu_func_t call_func; unsigned int wait_state; struct rcu_tasks_percpu __percpu *rtpcpu; + struct rcu_tasks_percpu **rtpcp_array; int percpu_enqueue_shift; int percpu_enqueue_lim; int percpu_dequeue_lim; @@ -182,6 +184,8 @@ module_param(rcu_task_collapse_lim, int, 0444); static int rcu_task_lazy_lim __read_mostly = 32; module_param(rcu_task_lazy_lim, int, 0444); +static int rcu_task_cpu_ids; + /* RCU tasks grace-period state for debugging. */ #define RTGS_INIT 0 #define RTGS_WAIT_WAIT_CBS 1 @@ -245,6 +249,8 @@ static void cblist_init_generic(struct rcu_tasks *rtp) int cpu; int lim; int shift; + int maxcpu; + int index = 0; if (rcu_task_enqueue_lim < 0) { rcu_task_enqueue_lim = 1; @@ -254,14 +260,9 @@ static void cblist_init_generic(struct rcu_tasks *rtp) } lim = rcu_task_enqueue_lim; - if (lim > nr_cpu_ids) - lim = nr_cpu_ids; - shift = ilog2(nr_cpu_ids / lim); - if (((nr_cpu_ids - 1) >> shift) >= lim) - shift++; - WRITE_ONCE(rtp->percpu_enqueue_shift, shift); - WRITE_ONCE(rtp->percpu_dequeue_lim, lim); - smp_store_release(&rtp->percpu_enqueue_lim, lim); + rtp->rtpcp_array = kcalloc(num_possible_cpus(), sizeof(struct rcu_tasks_percpu *), GFP_KERNEL); + BUG_ON(!rtp->rtpcp_array); + for_each_possible_cpu(cpu) { struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu); @@ -273,14 +274,29 @@ static void cblist_init_generic(struct rcu_tasks *rtp) INIT_WORK(&rtpcp->rtp_work, rcu_tasks_invoke_cbs_wq); rtpcp->cpu = cpu; rtpcp->rtpp = rtp; + rtpcp->index = index; + rtp->rtpcp_array[index] = rtpcp; + index++; if (!rtpcp->rtp_blkd_tasks.next) INIT_LIST_HEAD(&rtpcp->rtp_blkd_tasks); if (!rtpcp->rtp_exit_list.next) INIT_LIST_HEAD(&rtpcp->rtp_exit_list); + maxcpu = cpu; } - pr_info("%s: Setting shift to %d and lim to %d rcu_task_cb_adjust=%d.\n", rtp->name, - data_race(rtp->percpu_enqueue_shift), data_race(rtp->percpu_enqueue_lim), rcu_task_cb_adjust); + rcu_task_cpu_ids = maxcpu + 1; + if (lim > rcu_task_cpu_ids) + lim = rcu_task_cpu_ids; + shift = ilog2(rcu_task_cpu_ids / lim); + if (((rcu_task_cpu_ids - 1) >> shift) >= lim) + shift++; + WRITE_ONCE(rtp->percpu_enqueue_shift, shift); + WRITE_ONCE(rtp->percpu_dequeue_lim, lim); + smp_store_release(&rtp->percpu_enqueue_lim, lim); + + pr_info("%s: Setting shift to %d and lim to %d rcu_task_cb_adjust=%d rcu_task_cpu_ids=%d.\n", + rtp->name, data_race(rtp->percpu_enqueue_shift), data_race(rtp->percpu_enqueue_lim), + rcu_task_cb_adjust, rcu_task_cpu_ids); } // Compute wakeup time for lazy callback timer. @@ -348,7 +364,7 @@ static void call_rcu_tasks_generic(struct rcu_head *rhp, rcu_callback_t func, rtpcp->rtp_n_lock_retries = 0; } if (rcu_task_cb_adjust && ++rtpcp->rtp_n_lock_retries > rcu_task_contend_lim && - READ_ONCE(rtp->percpu_enqueue_lim) != nr_cpu_ids) + READ_ONCE(rtp->percpu_enqueue_lim) != rcu_task_cpu_ids) needadjust = true; // Defer adjustment to avoid deadlock. } // Queuing callbacks before initialization not yet supported. @@ -368,10 +384,10 @@ static void call_rcu_tasks_generic(struct rcu_head *rhp, rcu_callback_t func, raw_spin_unlock_irqrestore_rcu_node(rtpcp, flags); if (unlikely(needadjust)) { raw_spin_lock_irqsave(&rtp->cbs_gbl_lock, flags); - if (rtp->percpu_enqueue_lim != nr_cpu_ids) { + if (rtp->percpu_enqueue_lim != rcu_task_cpu_ids) { WRITE_ONCE(rtp->percpu_enqueue_shift, 0); - WRITE_ONCE(rtp->percpu_dequeue_lim, nr_cpu_ids); - smp_store_release(&rtp->percpu_enqueue_lim, nr_cpu_ids); + WRITE_ONCE(rtp->percpu_dequeue_lim, rcu_task_cpu_ids); + smp_store_release(&rtp->percpu_enqueue_lim, rcu_task_cpu_ids); pr_info("Switching %s to per-CPU callback queuing.\n", rtp->name); } raw_spin_unlock_irqrestore(&rtp->cbs_gbl_lock, flags); @@ -444,6 +460,8 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp) dequeue_limit = smp_load_acquire(&rtp->percpu_dequeue_lim); for (cpu = 0; cpu < dequeue_limit; cpu++) { + if (!cpu_possible(cpu)) + continue; struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu); /* Advance and accelerate any new callbacks. */ @@ -481,7 +499,7 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp) if (rcu_task_cb_adjust && ncbs <= rcu_task_collapse_lim) { raw_spin_lock_irqsave(&rtp->cbs_gbl_lock, flags); if (rtp->percpu_enqueue_lim > 1) { - WRITE_ONCE(rtp->percpu_enqueue_shift, order_base_2(nr_cpu_ids)); + WRITE_ONCE(rtp->percpu_enqueue_shift, order_base_2(rcu_task_cpu_ids)); smp_store_release(&rtp->percpu_enqueue_lim, 1); rtp->percpu_dequeue_gpseq = get_state_synchronize_rcu(); gpdone = false; @@ -496,7 +514,9 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp) pr_info("Completing switch %s to CPU-0 callback queuing.\n", rtp->name); } if (rtp->percpu_dequeue_lim == 1) { - for (cpu = rtp->percpu_dequeue_lim; cpu < nr_cpu_ids; cpu++) { + for (cpu = rtp->percpu_dequeue_lim; cpu < rcu_task_cpu_ids; cpu++) { + if (!cpu_possible(cpu)) + continue; struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu); WARN_ON_ONCE(rcu_segcblist_n_cbs(&rtpcp->cblist)); @@ -511,30 +531,32 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp) // Advance callbacks and invoke any that are ready. static void rcu_tasks_invoke_cbs(struct rcu_tasks *rtp, struct rcu_tasks_percpu *rtpcp) { - int cpu; - int cpunext; int cpuwq; unsigned long flags; int len; + int index; struct rcu_head *rhp; struct rcu_cblist rcl = RCU_CBLIST_INITIALIZER(rcl); struct rcu_tasks_percpu *rtpcp_next; - cpu = rtpcp->cpu; - cpunext = cpu * 2 + 1; - if (cpunext < smp_load_acquire(&rtp->percpu_dequeue_lim)) { - rtpcp_next = per_cpu_ptr(rtp->rtpcpu, cpunext); - cpuwq = rcu_cpu_beenfullyonline(cpunext) ? cpunext : WORK_CPU_UNBOUND; - queue_work_on(cpuwq, system_wq, &rtpcp_next->rtp_work); - cpunext++; - if (cpunext < smp_load_acquire(&rtp->percpu_dequeue_lim)) { - rtpcp_next = per_cpu_ptr(rtp->rtpcpu, cpunext); - cpuwq = rcu_cpu_beenfullyonline(cpunext) ? cpunext : WORK_CPU_UNBOUND; + index = rtpcp->index * 2 + 1; + if (index < num_possible_cpus()) { + rtpcp_next = rtp->rtpcp_array[index]; + if (rtpcp_next->cpu < smp_load_acquire(&rtp->percpu_dequeue_lim)) { + cpuwq = rcu_cpu_beenfullyonline(rtpcp_next->cpu) ? rtpcp_next->cpu : WORK_CPU_UNBOUND; queue_work_on(cpuwq, system_wq, &rtpcp_next->rtp_work); + index++; + if (index < num_possible_cpus()) { + rtpcp_next = rtp->rtpcp_array[index]; + if (rtpcp_next->cpu < smp_load_acquire(&rtp->percpu_dequeue_lim)) { + cpuwq = rcu_cpu_beenfullyonline(rtpcp_next->cpu) ? rtpcp_next->cpu : WORK_CPU_UNBOUND; + queue_work_on(cpuwq, system_wq, &rtpcp_next->rtp_work); + } + } } } - if (rcu_segcblist_empty(&rtpcp->cblist) || !cpu_possible(cpu)) + if (rcu_segcblist_empty(&rtpcp->cblist)) return; raw_spin_lock_irqsave_rcu_node(rtpcp, flags); rcu_segcblist_advance(&rtpcp->cblist, rcu_seq_current(&rtp->tasks_gp_seq)); -- 2.17.1 . Date: Tue, 9 Jul 2024 15:22:29 +0800 From: kernel test robot To: Vincent Guittot CC: , , , Ingo Molnar , Lukasz Luba , "Qais Yousef" , , , , Subject: [linus:master] [sched/pelt] 97450eb909: INFO:task_blocked_for_more_than#seconds Message-ID: <202407091527.bb0be229-lkp@intel.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271611 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,org.kernel.vger.linux-doc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, kernel test robot noticed "INFO:task_blocked_for_more_than#seconds" on: commit: 97450eb909658573dcacc1063b06d3d08642c0c1 ("sched/pelt: Remove shift of thermal clock") https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master [test failed on linus/master 22f902dfc51eb3602ff9b505ac3980f6ff77b1df] [test failed on linux-next/master 0b58e108042b0ed28a71cd7edf5175999955b233] in testcase: rcutorture version: with following parameters: runtime: 300s test: cpuhotplug torture_type: tasks compiler: gcc-13 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) we noticed the issue is random, 86 times out of 500 runs as below, while keeping clean on parent. d4dbc991714eefcb 97450eb909658573dcacc1063b0 ---------------- --------------------------- fail:runs %reproduction fail:runs | | | :500 17% 86:500 dmesg.INFO:task_blocked_for_more_than#seconds If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-lkp/202407091527.bb0be229-lkp@intel.com [ 996.963402][ T17] INFO: task swapper:1 blocked for more than 491 seconds. [ 996.973637][ T17] Tainted: G W 6.9.0-rc1-00051-g97450eb90965 #1 [ 996.983009][ T17] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 996.992369][ T17] task:swapper state:D stack:5680 pid:1 tgid:1 ppid:0 flags:0x00004000 [ 997.003585][ T17] Call Trace: [ 997.022071][ T17] __schedule (kernel/sched/core.c:5412 kernel/sched/core.c:6746) [ 997.032795][ T17] ? schedule (kernel/sched/core.c:6804 kernel/sched/core.c:6837) [ 997.051350][ T17] schedule (arch/x86/include/asm/preempt.h:84 (discriminator 13) kernel/sched/core.c:6824 (discriminator 13) kernel/sched/core.c:6838 (discriminator 13)) [ 997.061394][ T17] async_synchronize_cookie_domain (kernel/async.c:317 (discriminator 9) kernel/async.c:310 (discriminator 9)) [ 997.071656][ T17] ? add_wait_queue (kernel/sched/wait.c:383) [ 997.084201][ T17] wait_for_initramfs (init/initramfs.c:757) [ 997.093158][ T17] ? do_header (init/initramfs.c:761) [ 997.104204][ T17] populate_rootfs (init/initramfs.c:768) [ 997.113736][ T17] do_one_initcall (init/main.c:1238) [ 997.122668][ T17] ? parameq (kernel/params.c:90 (discriminator 1) kernel/params.c:99 (discriminator 1)) [ 997.133272][ T17] ? rdinit_setup (init/main.c:1286) [ 997.142176][ T17] ? parse_args (kernel/params.c:142 (discriminator 1) kernel/params.c:186 (discriminator 1)) [ 997.172210][ T17] ? do_initcalls (init/main.c:1298 init/main.c:1316) [ 997.183570][ T17] do_initcalls (init/main.c:1299 (discriminator 1) init/main.c:1316 (discriminator 1)) [ 997.194241][ T17] ? rest_init (init/main.c:1429) [ 997.204290][ T17] kernel_init_freeable (init/main.c:1552) [ 997.214432][ T17] kernel_init (init/main.c:1439) [ 997.223979][ T17] ret_from_fork (arch/x86/kernel/process.c:153) [ 997.232870][ T17] ? rest_init (init/main.c:1429) [ 997.244227][ T17] ret_from_fork_asm (arch/x86/entry/entry_32.S:737) [ 997.254412][ T17] entry_INT80_32 (arch/x86/entry/entry_32.S:944) [ 997.831274][ T17] [ 997.831274][ T17] Showing all locks held in the system: [ 997.840770][ T17] 4 locks held by kworker/u4:1/16: [ 997.844292][ T17] 1 lock held by khungtaskd/17: [ 997.853205][ T17] #0: c26e50c8 (rcu_read_lock){....}-{1:2}, at: debug_show_all_locks (kernel/locking/lockdep.c:6612) [ 997.880625][ T17] [ 997.883881][ T17] ============================================= [ 997.883881][ T17] BUG: kernel hang in boot stage The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240709/202407091527.bb0be229-lkp@intel.com -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . From: Johan Hovold To: Kalle Valo , Jeff Johnson Cc: Bhagavathi Perumal S , Vasanthakumar Thiagarajan , Karthikeyan Periyasamy , Wen Gong , ath12k@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH] wifi: ath12k: fix soft lockup on suspend Date: Tue, 9 Jul 2024 09:31:32 +0200 Message-ID: <20240709073132.9168-1-johan+linaro@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271614 org.kernel.vger.linux-wireless:85812 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.ath12k,org.kernel.vger.linux-wireless,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The ext interrupts are enabled when the firmware has been started, but this may never happen, for example, if the board configuration file is missing. When the system is later suspended, the driver unconditionally tries to disable interrupts, which results in an irq disable imbalance and causes the driver to spin indefinitely in napi_synchronize(). Make sure that the interrupts have been enabled before attempting to disable them. Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices") Cc: stable@vger.kernel.org # 6.3 Signed-off-by: Johan Hovold --- drivers/net/wireless/ath/ath12k/pci.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath12k/pci.c b/drivers/net/wireless/ath/ath12k/pci.c index 16af046c33d9..55fde0d33183 100644 --- a/drivers/net/wireless/ath/ath12k/pci.c +++ b/drivers/net/wireless/ath/ath12k/pci.c @@ -472,7 +472,8 @@ static void __ath12k_pci_ext_irq_disable(struct ath12k_base *ab) { int i; - clear_bit(ATH12K_FLAG_EXT_IRQ_ENABLED, &ab->dev_flags); + if (!test_and_clear_bit(ATH12K_FLAG_EXT_IRQ_ENABLED, &ab->dev_flags)) + return; for (i = 0; i < ATH12K_EXT_IRQ_GRP_NUM_MAX; i++) { struct ath12k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i]; -- 2.44.1 . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Tue, 09 Jul 2024 00:34:22 -0700 Message-ID: <000000000000fa6583061ccb8e3d@google.com> Subject: [syzbot] [bluetooth?] WARNING in __hci_cmd_sync_sk From: syzbot To: johan.hedberg@gmail.com, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, luiz.dentz@gmail.com, marcel@holtmann.org, syzkaller-bugs@googlegroups.com Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271618 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bluetooth Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, syzbot found the following issue on: HEAD commit: 256abd8e550c Linux 6.10-rc7 git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=14e81031980000 kernel config: https://syzkaller.appspot.com/x/.config?x=42a432cfd0e579e0 dashboard link: https://syzkaller.appspot.com/bug?extid=f52b6db1fe57bfb08d49 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 Unfortunately, I don't have any reproducer for this issue yet. Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/4b52809e32ca/disk-256abd8e.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/6c71e8f0eab4/vmlinux-256abd8e.xz kernel image: https://storage.googleapis.com/syzbot-assets/fdcc77cd0018/bzImage-256abd8e.xz IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+f52b6db1fe57bfb08d49@syzkaller.appspotmail.com ------------[ cut here ]------------ WARNING: CPU: 0 PID: 16659 at kernel/workqueue.c:2282 __queue_work+0xc5e/0xee0 kernel/workqueue.c:2281 Modules linked in: CPU: 0 PID: 16659 Comm: syz-executor Not tainted 6.10.0-rc7-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 RIP: 0010:__queue_work+0xc5e/0xee0 kernel/workqueue.c:2281 Code: ff e8 76 83 36 00 90 0f 0b 90 e9 20 fd ff ff e8 68 83 36 00 eb 13 e8 61 83 36 00 eb 0c e8 5a 83 36 00 eb 05 e8 53 83 36 00 90 <0f> 0b 90 48 83 c4 58 5b 41 5c 41 5d 41 5e 41 5f 5d c3 cc cc cc cc RSP: 0018:ffffc9000ecef810 EFLAGS: 00010093 RAX: ffffffff815fa35f RBX: ffff888061d45a00 RCX: ffff888061d45a00 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: 0000000000000000 R08: ffffffff815f9833 R09: 0000000000000000 R10: ffffc9000ecef8e0 R11: fffff52001d9df1d R12: ffff8880648631c0 R13: dffffc0000000000 R14: ffff888064863000 R15: 0000000000000008 FS: 000055555f45a500(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f755bb04030 CR3: 0000000052a18000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: queue_work_on+0x1c2/0x380 kernel/workqueue.c:2411 queue_work include/linux/workqueue.h:621 [inline] hci_cmd_sync_run net/bluetooth/hci_sync.c:145 [inline] __hci_cmd_sync_sk+0x7b1/0x1130 net/bluetooth/hci_sync.c:167 __hci_cmd_sync_status_sk net/bluetooth/hci_sync.c:252 [inline] __hci_cmd_sync_status+0x37/0x130 net/bluetooth/hci_sync.c:278 hci_dev_cmd+0x51c/0xa50 net/bluetooth/hci_core.c:747 sock_do_ioctl+0x158/0x460 net/socket.c:1222 sock_ioctl+0x629/0x8e0 net/socket.c:1341 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl+0xfc/0x170 fs/ioctl.c:893 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f3a54b757db Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 1c 48 8b 44 24 18 64 48 2b 04 25 28 00 00 RSP: 002b:00007ffee9a9ba60 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f3a54b757db RDX: 00007ffee9a9bad8 RSI: 00000000400448dd RDI: 0000000000000003 RBP: 000055555f45a4a8 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 0000000000000001 R14: 0000000000000005 R15: 0000000000000009 --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup . From: Chen Ni To: chandan.babu@oracle.com, djwong@kernel.org Cc: linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Chen Ni Subject: [PATCH] xfs: convert comma to semicolon Date: Tue, 9 Jul 2024 15:36:32 +0800 Message-Id: <20240709073632.1152995-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271620 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-xfs Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Replace a comma between expression statements by a semicolon. Signed-off-by: Chen Ni --- fs/xfs/xfs_attr_list.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/xfs/xfs_attr_list.c b/fs/xfs/xfs_attr_list.c index 5c947e5ce8b8..7db386304875 100644 --- a/fs/xfs/xfs_attr_list.c +++ b/fs/xfs/xfs_attr_list.c @@ -139,7 +139,7 @@ xfs_attr_shortform_list( sbp->name = sfe->nameval; sbp->namelen = sfe->namelen; /* These are bytes, and both on-disk, don't endian-flip */ - sbp->value = &sfe->nameval[sfe->namelen], + sbp->value = &sfe->nameval[sfe->namelen]; sbp->valuelen = sfe->valuelen; sbp->flags = sfe->flags; sbp->hash = xfs_attr_hashval(dp->i_mount, sfe->flags, -- 2.25.1 . Date: Tue, 9 Jul 2024 15:40:04 +0800 From: kernel test robot To: Armin Wolf CC: , , , Hans de Goede , kemal , , Subject: [linus:master] [platform/x86] e527a61272: UBSAN:array-index-out-of-bounds_in_drivers/firmware/dmi_scan.c Message-ID: <202407091536.8b116b3d-lkp@intel.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271623 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-lkp,org.kernel.vger.platform-driver-x86 Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, kernel test robot noticed "UBSAN:array-index-out-of-bounds_in_drivers/firmware/dmi_scan.c" on: commit: e527a6127223b644e0a27b44f4b16e16eb6c7f0a ("platform/x86: toshiba_acpi: Fix quickstart quirk handling") https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master [test failed on linus/master 1dd28064d4164a4dc9096fd1a7990d2de15f2bb6] [test failed on linux-next/master 0b58e108042b0ed28a71cd7edf5175999955b233] in testcase: rcutorture version: with following parameters: runtime: 300s test: default torture_type: tasks compiler: gcc-13 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) +----------------------------------------------------------------+------------+------------+ | | 7add1ee346 | e527a61272 | +----------------------------------------------------------------+------------+------------+ | UBSAN:array-index-out-of-bounds_in_drivers/firmware/dmi_scan.c | 0 | 12 | +----------------------------------------------------------------+------------+------------+ If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-lkp/202407091536.8b116b3d-lkp@intel.com [ 29.706379][ T1] ------------[ cut here ]------------ [ 29.707252][ T1] UBSAN: array-index-out-of-bounds in drivers/firmware/dmi_scan.c:859:23 [ 29.708541][ T1] index 116 is out of range for type 'char *[23]' [ 29.709456][ T1] CPU: 0 PID: 1 Comm: swapper Not tainted 6.10.0-rc1-00022-ge527a6127223 #1 ab67a70a695d4c6254fd8ecc241ff23c9c365cc4 [ 29.711170][ T1] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 29.711230][ T1] Call Trace: [ 29.711230][ T1] [ 29.711230][ T1] dump_stack_lvl (lib/dump_stack.c:117 (discriminator 1)) [ 29.711230][ T1] dump_stack (lib/dump_stack.c:124) [ 29.711230][ T1] ubsan_epilogue (lib/ubsan.c:232) [ 29.711230][ T1] __ubsan_handle_out_of_bounds (lib/ubsan.c:429) [ 29.711230][ T1] dmi_matches (drivers/firmware/dmi_scan.c:859) [ 29.711230][ T1] dmi_first_match (drivers/firmware/dmi_scan.c:936 (discriminator 1)) [ 29.711230][ T1] toshiba_acpi_init (drivers/platform/x86/toshiba_acpi.c:3615 drivers/platform/x86/toshiba_acpi.c:3629) [ 29.711230][ T1] ? toshiba_wmi_init (drivers/platform/x86/toshiba_acpi.c:3626) [ 29.711230][ T1] do_one_initcall (init/main.c:1267) [ 29.711230][ T1] ? trace_event_raw_event_initcall_level (init/main.c:1258) [ 29.711230][ T1] ? do_initcalls (include/linux/slab.h:664 include/linux/slab.h:778 init/main.c:1338) [ 29.711230][ T1] do_initcalls (init/main.c:1328 (discriminator 1) init/main.c:1345 (discriminator 1)) [ 29.711230][ T1] kernel_init_freeable (init/main.c:1580) [ 29.711230][ T1] ? rest_init (init/main.c:1459) [ 29.711230][ T1] kernel_init (init/main.c:1469) [ 29.711230][ T1] ? __switch_to (arch/x86/kernel/process_64.c:713) [ 29.711230][ T1] ret_from_fork (arch/x86/kernel/process.c:153) [ 29.711230][ T1] ? rest_init (init/main.c:1459) [ 29.711230][ T1] ret_from_fork_asm (arch/x86/entry/entry_64.S:257) [ 29.711230][ T1] [ 29.726986][ T1] ---[ end trace ]--- The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20240709/202407091536.8b116b3d-lkp@intel.com -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . Date: Tue, 9 Jul 2024 17:40:53 +1000 From: Stephen Rothwell To: Theodore Ts'o , "Jason A. Donenfeld" , Andrew Morton Cc: Barry Song , Barry Song , Lance Yang , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: manual merge of the random tree with the mm-stable tree Message-ID: <20240709174053.051a46a4@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Nss_ongiZk.IhXDCBHpNi9z"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271625 org.kernel.vger.linux-next:62120 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/Nss_ongiZk.IhXDCBHpNi9z Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the random tree got a conflict in: mm/rmap.c between commits: 26d21b18d971 ("mm/rmap: remove duplicated exit code in pagewalk loop") 15bde4abab73 ("mm: extend rmap flags arguments for folio_add_new_anon_rma= p") from the mm-stable tree and commit: 94beef29e110 ("mm: add MAP_DROPPABLE for designating always lazily freeab= le mappings") from the random tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc mm/rmap.c index 8616308610b9,1f9b5a9cb121..000000000000 --- a/mm/rmap.c +++ b/mm/rmap.c @@@ -1394,27 -1384,26 +1394,30 @@@ void folio_add_anon_rmap_pmd(struct fol * * Like folio_add_anon_rmap_*() but must only be called on *new* folios. * This means the inc-and-test can be bypassed. - * The folio does not have to be locked. + * The folio doesn't necessarily need to be locked while it's exclusive + * unless two threads map it concurrently. However, the folio must be + * locked if it's shared. * - * If the folio is pmd-mappable, it is accounted as a THP. As the folio - * is new, it's assumed to be mapped exclusively by a single process. + * If the folio is pmd-mappable, it is accounted as a THP. */ void folio_add_new_anon_rmap(struct folio *folio, struct vm_area_struct *= vma, - unsigned long address) + unsigned long address, rmap_t flags) { - int nr =3D folio_nr_pages(folio); + const int nr =3D folio_nr_pages(folio); + const bool exclusive =3D flags & RMAP_EXCLUSIVE; + int nr_pmdmapped =3D 0; =20 VM_WARN_ON_FOLIO(folio_test_hugetlb(folio), folio); + VM_WARN_ON_FOLIO(!exclusive && !folio_test_locked(folio), folio); VM_BUG_ON_VMA(address < vma->vm_start || address + (nr << PAGE_SHIFT) > vma->vm_end, vma); -=20 - if (!folio_test_swapbacked(folio)) + /* + * VM_DROPPABLE mappings don't swap; instead they're just dropped when + * under memory pressure. + */ - if (!(vma->vm_flags & VM_DROPPABLE)) ++ if (!folio_test_swapbacked(folio) && !(vma->vm_flags & VM_DROPPABLE)) __folio_set_swapbacked(folio); - __folio_set_anon(folio, vma, address, true); + __folio_set_anon(folio, vma, address, exclusive); =20 if (likely(!folio_test_large(folio))) { /* increment count (starts at -1) */ @@@ -1858,8 -1862,15 +1867,13 @@@ static bool try_to_unmap_one(struct fol * discarded. Remap the page to page table. */ set_pte_at(mm, address, pvmw.pte, pteval); - folio_set_swapbacked(folio); + /* + * Unlike MADV_FREE mappings, VM_DROPPABLE ones + * never get swap backed on failure to drop. + */ + if (!(vma->vm_flags & VM_DROPPABLE)) + folio_set_swapbacked(folio); - ret =3D false; - page_vma_mapped_walk_done(&pvmw); - break; + goto walk_abort; } =20 if (swap_duplicate(entry) < 0) { --Sig_/Nss_ongiZk.IhXDCBHpNi9z Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM6YYACgkQAVBC80lX 0GybgAf9ECAKGIckkbB4BocYWJ2LMVtImP9MpX5fijc2X7IUsowkamBueLMpgVIa o06Z6BEgfLrs5IDk/2KJLh2blwxaub/cQJbIylL4BiyGTKQM6+TwvuBDDbNESaQX rH9C5CrGBjNDFCL+R0qOS0NyK98Q9gOLb7MpsdnI3KjKYPczM4TVwQgKcpn8UFBG 6szVfoxMtWWspV6rvMDRKCrqoKn8SFY+1n2yB0grzs9ZYnY4jooO49xqyiwbaqlh xqN+gDGASx7jZ35vH5qFfMvHiUNZxr5fPKsR06nPHk7H4xpOtrAMIRvTAxH8/eIl B+IPAD1AUGOo/PXILnAJDPjyZZ5igw== =xolW -----END PGP SIGNATURE----- --Sig_/Nss_ongiZk.IhXDCBHpNi9z-- . Date: Tue, 9 Jul 2024 17:43:40 +1000 From: Stephen Rothwell To: Theodore Ts'o , "Jason A. Donenfeld" , Andrew Morton Cc: Donet Tom , Linux Kernel Mailing List , Linux Next Mailing List , "Ritesh Harjani (IBM)" Subject: linux-next: manual merge of the random tree with the mm-stable tree Message-ID: <20240709174340.5c03c2b9@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/MmvR/cmc7U=7=PRedTMJjZb"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271629 org.kernel.vger.linux-next:62121 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/MmvR/cmc7U=7=PRedTMJjZb Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the random tree got a conflict in: tools/testing/selftests/mm/Makefile between commit: 3a103b5315b7 ("selftest: mm: Test if hugepage does not get leaked during = __bio_release_pages()") from the mm-stable tree and commit: 94beef29e110 ("mm: add MAP_DROPPABLE for designating always lazily freeab= le mappings") from the random tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc tools/testing/selftests/mm/Makefile index e1aa09ddaa3d,e3e5740e13e1..000000000000 --- a/tools/testing/selftests/mm/Makefile +++ b/tools/testing/selftests/mm/Makefile @@@ -75,7 -73,7 +75,8 @@@ TEST_GEN_FILES +=3D ksm_functional_test TEST_GEN_FILES +=3D mdwe_test TEST_GEN_FILES +=3D hugetlb_fault_after_madv TEST_GEN_FILES +=3D hugetlb_madv_vs_map +TEST_GEN_FILES +=3D hugetlb_dio + TEST_GEN_FILES +=3D droppable =20 ifneq ($(ARCH),arm64) TEST_GEN_FILES +=3D soft-dirty --Sig_/MmvR/cmc7U=7=PRedTMJjZb Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM6iwACgkQAVBC80lX 0GzQ0Qf8D5iZvMUXOim4h+wk5dm9lHbdnosCIMex9sPYFogb+B8L5JFi8rNQ3R+N RJrVWK8G/gcEh3dtx7/VV1FpURnjs0AKDvJbYHVTSRbrfbKhAcoeZEvzf3eXNv6i 9Gf/hrOznL+Fs0ZIkt1UwgIgCHHctZNura+Tt80LlSa3fRe1ybGeQ5eMP68AsMnV siS9me/dpizAbMnJluRxwWLbhT86tXBehR6UNI2F+5x4Q/AUSclEuh/aSQGtDSzp 19v7cJXh50Ggx8ANyDtdJWlxktpQ7B4wrZOoMT3Sya8+9yhSOcvdxGCiuhiKBQ6W 1mR1+GF/nNUtOxwe72xMb5OFvNWC9w== =Ea6t -----END PGP SIGNATURE----- --Sig_/MmvR/cmc7U=7=PRedTMJjZb-- . From: Wei Fang To: mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org, conor+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, abelvesa@kernel.org, peng.fan@nxp.com Cc: linux-clk@vger.kernel.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 0/3] add NETCMIX block control support on i.MX95 Date: Tue, 9 Jul 2024 15:36:01 +0800 Message-Id: <20240709073603.1967609-1-wei.fang@nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271639 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The NETCMIX block control consists of registers for configuration of peripherals in the NETC domain, such as MQS, SAI and NETC. So add the NETCMIX block control support on i.MX95 platform. Wei Fang (3): dt-bindings: clock: add i.MX95 NETCMIX block control clk: imx95: enable the clock of NETCMIX block control arm64: dts: imx95: Add NETCMIX block control support .../devicetree/bindings/clock/nxp,imx95-blk-ctl.yaml | 1 + arch/arm64/boot/dts/freescale/imx95.dtsi | 12 ++++++++++++ drivers/clk/imx/clk-imx95-blk-ctl.c | 1 + 3 files changed, 14 insertions(+) -- 2.34.1 . Message-ID: <8cd0ec0c4c7c1bc0119e61fbef0bee9d5e24022d.camel@linux.ibm.com> Subject: [sched_ext/for-6.11]: Issue with BPF Scheduler during CPU Hotplug From: Aboorva Devarajan To: tj@kernel.org, void@manifault.com Cc: aboorvad@linux.ibm.com, linux-kernel@vger.kernel.org Date: Tue, 09 Jul 2024 13:21:38 +0530 Content-Type: text/plain; charset="UTF-8" X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271645 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail I'm currently experimenting with sched_ext schedulers and have encountered an issue with CPU hotplug when running scx_simple scheduler, this issue is intermittent and doesn't happen frequently. However, it appears to be a common problem when performing CPU hotplug with any external scheduler. --------------------------------------------------------------- Here is the system info: Kernel Version: Latest sched-ext (for-next) tree with patches to support struct_ops on ppc64le. root@ltc # lscpu Architecture: ppc64le Byte Order: Little Endian CPU(s): 128 On-line CPU(s) list: 0-127 Thread(s) per core: 4 Core(s) per socket: 16 Socket(s): 2 NUMA node(s): 8 Model: 2.3 (pvr 004e 1203) Model name: POWER9, altivec supported Frequency boost: enabled CPU max MHz: 3800.0000 CPU min MHz: 2300.0000 L1d cache: 1 MiB L1i cache: 1 MiB L2 cache: 8 MiB L3 cache: 160 MiB NUMA node0 CPU(s): 0-63 NUMA node8 CPU(s): 64-127 --------------------------------------------------------------- Steps to reproduce the issue: - Run the scx_simple scheduler. - Randomly offline and online CPUs from 1 to 127. During the CPU hotplug, the custom scheduler successfully unregisters and registers itself without issues. However, it occasionally encounters a crash and the system becomes unresponsive. --------------------------------------------------------------- Here is the crash log: [64650.796448] INFO: task rcu_tasks_trace:14 blocked for more than 120 seconds. [64650.796557] Not tainted 6.10.0-rc2+ #4 [64650.796630] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [64650.796688] task:rcu_tasks_trace state:D stack:0 pid:14 tgid:14 ppid:2 flags:0x00000000 [64650.796748] Sched_ext: simple (prepping) [64650.796771] Call Trace: [64650.796841] [c000000ddf0c3700] [c0000000016f0c06] scx_dump_state.trunc_marker+0x2078/0x5d2a (unreliable) [64650.796950] [c000000ddf0c38b0] [c00000000001dd68] __switch_to+0x238/0x310 [64650.797041] [c000000ddf0c3910] [c0000000013e6170] __schedule+0xa10/0xf80 [64650.797126] [c000000ddf0c3a10] [c0000000013e6764] schedule+0x84/0x128 [64650.797208] [c000000ddf0c3a40] [c00000000023f4dc] percpu_rwsem_wait+0x13c/0x1a0 [64650.797299] [c000000ddf0c3ac0] [c0000000013ee7ec] __percpu_down_read+0xac/0x21c [64650.797371] [c000000ddf0c3b40] [c0000000001739b8] cpus_read_lock+0x158/0x180 [64650.797468] [c000000ddf0c3b80] [c000000000285a94] check_all_holdout_tasks_trace+0x84/0x450 [64650.797564] [c000000ddf0c3cc0] [c000000000284c68] rcu_tasks_wait_gp+0x318/0x430 [64650.797657] [c000000ddf0c3dd0] [c000000000284394] rcu_tasks_one_gp+0x4f4/0x5e0 [64650.797747] [c000000ddf0c3f00] [c0000000002850ac] rcu_tasks_kthread+0x12c/0x150 [64650.797838] [c000000ddf0c3f80] [c0000000001be158] kthread+0x1c8/0x1e0 [64650.797867] [c000000ddf0c3fe0] [c00000000000d030] start_kernel_thread+0x14/0x18 [64650.799240] INFO: task kworker/0:3:1216 blocked for more than 120 seconds. [64650.799324] Not tainted 6.10.0-rc2+ #4 [64650.799419] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [64650.799487] task:kworker/0:3 state:D stack:0 pid:1216 tgid:1216 ppid:2 flags:0x00000000 [64650.799575] Workqueue: events vmstat_shepherd [64650.799666] Sched_ext: simple (prepping) [64650.799696] Call Trace: [64650.799830] [c000000ec40af8e0] [c0000000016f0c06] scx_dump_state.trunc_marker+0x2078/0x5d2a (unreliable) [64650.800001] [c000000ec40afa90] [c00000000001dd68] __switch_to+0x238/0x310 [64650.800139] [c000000ec40afaf0] [c0000000013e6170] __schedule+0xa10/0xf80 [64650.800234] [c000000ec40afbf0] [c0000000013e6764] schedule+0x84/0x128 [64650.800336] [c000000ec40afc20] [c00000000023f4dc] percpu_rwsem_wait+0x13c/0x1a0 [64650.800443] [c000000ec40afca0] [c0000000013ee7ec] __percpu_down_read+0xac/0x21c [64650.800550] [c000000ec40afd20] [c0000000001739b8] cpus_read_lock+0x158/0x180 [64650.800694] [c000000ec40afd60] [c00000000051bb88] vmstat_shepherd+0x48/0x1b0 [64650.800798] [c000000ec40afdd0] [c0000000001b0208] process_one_work+0x2c8/0x6d0 [64650.800884] [c000000ec40afed0] [c0000000001b3c88] worker_thread+0x3d8/0x560 [64650.800948] [c000000ec40aff80] [c0000000001be158] kthread+0x1c8/0x1e0 [64650.801051] [c000000ec40affe0] [c00000000000d030] start_kernel_thread+0x14/0x18 [64650.801563] INFO: task scx_simple:11214 blocked for more than 120 seconds. [64650.801668] Not tainted 6.10.0-rc2+ #4 [64650.801734] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [64650.801834] task:scx_simple state:D stack:0 pid:11214 tgid:11214 ppid:11013 flags:0x00040080 [64650.801949] Sched_ext: simple (prepping) [64650.801978] Call Trace: [64650.802062] [c000000e9bdf35b0] [c0000000016f0c06] scx_dump_state.trunc_marker+0x2078/0x5d2a (unreliable) [64650.802231] [c000000e9bdf3760] [c00000000001dd68] __switch_to+0x238/0x310 [64650.802437] [c000000e9bdf37c0] [c0000000013e6170] __schedule+0xa10/0xf80 [64650.802599] [c000000e9bdf38c0] [c0000000013e6764] schedule+0x84/0x128 [64650.802700] [c000000e9bdf38f0] [c00000000023f4dc] percpu_rwsem_wait+0x13c/0x1a0 [64650.802807] [c000000e9bdf3970] [c0000000013ee7ec] __percpu_down_read+0xac/0x21c [64650.802926] [c000000e9bdf39f0] [c0000000001739b8] cpus_read_lock+0x158/0x180 [64650.803065] [c000000e9bdf3a30] [c00000000021fd88] bpf_scx_reg+0x5d8/0xb80 [64650.803161] [c000000e9bdf3c10] [c00000000049e308] bpf_struct_ops_link_create+0x158/0x200 [64650.803259] [c000000e9bdf3c80] [c000000000407628] link_create+0x78/0x3b0 [64650.803319] [c000000e9bdf3cd0] [c0000000004026fc] __sys_bpf+0x39c/0x560 [64650.803389] [c000000e9bdf3dc0] [c000000000400b00] sys_bpf+0x50/0x80 [64650.803449] [c000000e9bdf3e00] [c00000000003218c] system_call_exception+0x10c/0x2b0 [64650.803559] [c000000e9bdf3e50] [c00000000000c7d4] system_call_common+0xf4/0x258 [64650.803679] --- interrupt: c00 at 0x737414d42474 [64650.803783] NIP: 0000737414d42474 LR: 000004382701451c CTR: 0000000000000000 [64650.803848] REGS: c000000e9bdf3e80 TRAP: 0c00 Not tainted (6.10.0-rc2+) [64650.803953] MSR: 900000000000d033 CR: 28048824 XER: 00000000 [64650.804202] IRQMASK: 0 [64650.804202] GPR00: 0000000000000169 00007fffc9ebc2b0 0000737414e37100 000000000000001c [64650.804202] GPR04: 00007fffc9ebc430 0000000000000040 0000000000000001 0000043827017f00 [64650.804202] GPR08: 000000000000001c 0000000000000000 0000000000000000 0000000000000000 [64650.804202] GPR12: 0000000000000000 000073741514b9c0 00000438656ced30 000004382705bd48 [64650.804202] GPR16: 000004382705bcb0 000004382705bf00 ffffffffffffffff 00000438270a0430 [64650.804202] GPR20: 0000737414e318c8 00007fffc9ebc600 00007fffc9ebc580 00000000ffffffff [64650.804202] GPR24: 0000000000000001 00000438270a0438 00007fffc9ebcae8 000004382705bea8 [64650.804202] GPR28: 000004382705bff0 000004382705bd00 0000000000000001 00007fffc9ebc2b0 [64650.804953] NIP [0000737414d42474] 0x737414d42474 [64650.805045] LR [000004382701451c] 0x4382701451c [64650.805118] --- interrupt: c00 [64650.805275] INFO: task hotplug.sh:11440 blocked for more than 120 seconds. [64650.805369] Not tainted 6.10.0-rc2+ #4 [64650.805451] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [64650.805532] task:hotplug.sh state:D stack:0 pid:11440 tgid:11440 ppid:10770 flags:0x00040080 [64650.805629] Sched_ext: simple (prepping) [64650.805653] Call Trace: [64650.805756] [c00020006ef233e0] [c0000000016f0c06] scx_dump_state.trunc_marker+0x2078/0x5d2a (unreliable) [64650.805860] [c00020006ef23590] [c00000000001dd68] __switch_to+0x238/0x310 [64650.805980] [c00020006ef235f0] [c0000000013e6170] __schedule+0xa10/0xf80 [64650.806088] [c00020006ef236f0] [c0000000013e6764] schedule+0x84/0x128 [64650.806182] [c00020006ef23720] [c0000000013f2a48] schedule_timeout+0x48/0x128 [64650.806374] [c00020006ef23800] [c0000000013e703c] wait_for_common+0x118/0x1f4 [64650.806519] [c00020006ef23880] [c00000000017889c] cpuhp_kick_ap+0x13c/0x2a0 [64650.806618] [c00020006ef238e0] [c000000000177a18] cpuhp_invoke_callback+0x278/0xac0 [64650.806691] [c00020006ef239f0] [c000000000175978] _cpu_up+0x238/0x420 [64650.806782] [c00020006ef23ab0] [c000000000174d18] cpu_up+0x168/0x1b0 [64650.806842] [c00020006ef23b40] [c000000000cf382c] cpu_subsys_online+0x6c/0x1b0 [64650.806925] [c00020006ef23b90] [c000000000ce5b20] online_store+0xe0/0x1a0 [64650.807008] [c00020006ef23bf0] [c000000000ce554c] dev_attr_store+0x6c/0xb0 [64650.807072] [c00020006ef23c40] [c000000000765798] sysfs_kf_write+0xd8/0x110 [64650.807138] [c00020006ef23c90] [c0000000007624f4] kernfs_fop_write_iter+0x1b4/0x260 [64650.807208] [c00020006ef23cf0] [c000000000643fb8] vfs_write+0x288/0x370 [64650.807285] [c00020006ef23da0] [c0000000006442dc] ksys_write+0x9c/0x120 [64650.807332] [c00020006ef23e00] [c00000000003218c] system_call_exception+0x10c/0x2b0 [64650.807409] [c00020006ef23e50] [c00000000000c7d4] system_call_common+0xf4/0x258 [64650.807459] --- interrupt: c00 at 0x7f4acef33614 [64650.807483] NIP: 00007f4acef33614 LR: 00007f4acee9f374 CTR: 0000000000000000 [64650.807549] REGS: c00020006ef23e80 TRAP: 0c00 Not tainted (6.10.0-rc2+) [64650.807625] MSR: 900000000000d033 CR: 28422488 XER: 00000000 [64650.807800] IRQMASK: 0 [64650.807800] GPR00: 0000000000000004 00007ffff045b7f0 00007f4acf037100 0000000000000001 [64650.807800] GPR04: 0000077e966d2f10 0000000000000002 0000000000000010 0000000000000020 [64650.807800] GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 [64650.807800] GPR12: 0000000000000000 00007f4acf21b330 0000077e966d6130 0000077e79ceb738 [64650.807800] GPR16: 0000077e79c00ac0 0000000000000000 0000000020000000 0000077e966d2d70 [64650.807800] GPR20: 0000000000000000 0000000000000001 0000077e79c93c80 00007ffff045b9e4 [64650.807800] GPR24: 00007ffff045b9e0 0000077e79ceb0d0 00007f4acf02c0d8 00007f4acf02ca08 [64650.807800] GPR28: 0000000000000002 00007f4acf0317e8 0000077e966d2f10 0000000000000002 [64650.808157] NIP [00007f4acef33614] 0x7f4acef33614 [64650.808215] LR [00007f4acee9f374] 0x7f4acee9f374 [64650.808272] --- interrupt: c00 [64650.808330] --------------------------------------------------------------- More info provided by lockdep: [64650.808330] Showing all locks held in the system: [64650.808391] 1 lock held by kthreadd/2: [64650.808431] #0: c0000000029259c8 (scx_fork_rwsem){++++}-{0:0}, at: sched_fork+0x80/0x240 [64650.808578] 2 locks held by rcu_tasks_trace/14: [64650.808647] #0: c000000002a0c550 (rcu_tasks_trace.tasks_gp_mutex){+.+.}-{4:4}, at: rcu_tasks_one_gp+0x494/0x5e0 [64650.808764] #1: c000000002913278 (cpu_hotplug_lock){++++}-{0:0}, at: check_all_holdout_tasks_trace+0x84/0x450 [64650.808868] 3 locks held by cpuhp/8/64: [64650.808935] #0: c000000002913278 (cpu_hotplug_lock){++++}-{0:0}, at: lockdep_acquire_cpus_lock+0x24/0x80 [64650.809004] #1: c0000000029133a8 (cpuhp_state-up){+.+.}-{0:0}, at: cpuhp_lock_acquire+0xc/0x80 [64650.809135] #2: c00000000291e448 (wq_pool_mutex){+.+.}-{4:4}, at: workqueue_online_cpu+0x84/0x6c0 [64650.809351] 1 lock held by khungtaskd/843: [64650.809399] #0: c000000002a0c110 (rcu_read_lock){....}-{1:3}, at: rcu_lock_acquire+0x8/0x60 [64650.809522] 3 locks held by kworker/0:3/1216: [64650.809581] #0: c000000004809958 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work+0x218/0x6d0 [64650.809697] #1: c000000ec40afe40 ((shepherd).work){+.+.}-{0:0}, at: process_one_work+0x244/0x6d0 [64650.809835] #2: c000000002913278 (cpu_hotplug_lock){++++}-{0:0}, at: vmstat_shepherd+0x48/0x1b0 [64650.809965] 1 lock held by systemd-journal/1389: [64650.809983] #0: c0000000029259c8 (scx_fork_rwsem){++++}-{0:0}, at: sched_fork+0x80/0x240 [64650.810122] 1 lock held by in:imklog/2498: [64650.810194] #0: c000000e135cb6d8 (&f->f_pos_lock){+.+.}-{4:4}, at: __fdget_pos+0xd0/0x130 [64650.810333] 5 locks held by rs:main Q:Reg/2499: [64650.810515] 4 locks held by scx_simple/11214: [64650.810606] #0: c000000002a609b0 (update_mutex){+.+.}-{4:4}, at: bpf_struct_ops_link_create+0x134/0x200 [64650.810781] #1: c000000002927170 (scx_ops_enable_mutex){+.+.}-{4:4}, at: bpf_scx_reg+0x80/0xb80 [64650.810886] #2: c0000000029259c8 (scx_fork_rwsem){++++}-{0:0}, at: bpf_scx_reg+0x5d0/0xb80 [64650.811023] #3: c000000002913278 (cpu_hotplug_lock){++++}-{0:0}, at: bpf_scx_reg+0x5d8/0xb80 [64650.811174] 7 locks held by hotplug.sh/11440: [64650.811240] #0: c000000e9bfe6450 (sb_writers#6){.+.+}-{0:0}, at: vfs_write+0xcc/0x370 [64650.811362] #1: c000000e11b31e90 (&of->mutex){+.+.}-{4:4}, at: kernfs_fop_write_iter+0x10c/0x260 [64650.811514] #2: c000000df2892620 (kn->active#73){.+.+}-{0:0}, at: kernfs_fop_write_iter+0x118/0x260 [64650.811675] #3: c000000002aebc08 (device_hotplug_lock){+.+.}-{4:4}, at: online_store+0x6c/0x1a0 [64650.811814] #4: c000007ff4ce0128 (&dev->mutex){....}-{4:4}, at: online_store+0x94/0x1a0 [64650.811929] #5: c000000002913168 (cpu_add_remove_lock){+.+.}-{4:4}, at: cpu_up+0xa4/0x1b0 [64650.812061] #6: c000000002913278 (cpu_hotplug_lock){++++}-{0:0}, at: _cpu_up+0x78/0x420 [64650.812224] [64650.812274] ============================================= [64650.812274] --------------------------------------------------------------- This issue occurs when the CPU comes back online and the BPF scheduler attempts to re-register. I'll keep looking into it and share any additional information I find. Thanks, Aboorva . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Shanavas.K.S" Date: Tue, 9 Jul 2024 13:21:44 +0530 Message-ID: Subject: intel CPU vulnerability NO_SSB whitelist for AIRMONT To: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271646 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi All, This is in reference to https://github.com/torvalds/linux/blame/master/arch/x86/kernel/cpu/common.c#L1169. The whitelist for INTEL_ATOM_AIRMONT has NO_SSB enabled which means cache speculation vulnerability(spectre 4,CVE-2018-3639) is not applicable to this processor. But NO_SSB is not set for INTEL_ATOM_AIRMONT_NP and INTEL_ATOM_AIRMONT_MID. Are these settings missing for AIRMONT_NP and AIRMONT_MID or is there a real difference between cache speculation between these processors? regards Shanavas . Date: Tue, 9 Jul 2024 17:52:55 +1000 From: Stephen Rothwell To: Miguel Ojeda , Jens Axboe Cc: Alice Ryhl , Andreas Hindborg , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: manual merge of the rust tree with the block tree Message-ID: <20240709175255.71439654@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/SQaM2+PQVQpHyl/GZVumm26"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271648 org.kernel.vger.linux-next:62122 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/SQaM2+PQVQpHyl/GZVumm26 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the rust tree got a conflict in: rust/bindings/bindings_helper.h between commit: 5b026e341207 ("rust: block: fix generated bindings after refactoring of f= eatures") from the block tree and commit: ab44079e2869 ("rust: alloc: add __GFP_HIGHMEM flag") from the rust tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell diff --cc rust/bindings/bindings_helper.h index 53c996e4bedf,f2bafb10f181..000000000000 --- a/rust/bindings/bindings_helper.h +++ b/rust/bindings/bindings_helper.h @@@ -30,4 -26,4 +30,5 @@@ const gfp_t RUST_CONST_HELPER_GFP_KERNE const gfp_t RUST_CONST_HELPER_GFP_KERNEL_ACCOUNT =3D GFP_KERNEL_ACCOUNT; const gfp_t RUST_CONST_HELPER_GFP_NOWAIT =3D GFP_NOWAIT; const gfp_t RUST_CONST_HELPER___GFP_ZERO =3D __GFP_ZERO; + const gfp_t RUST_CONST_HELPER___GFP_HIGHMEM =3D ___GFP_HIGHMEM; +const blk_features_t RUST_CONST_HELPER_BLK_FEAT_ROTATIONAL =3D BLK_FEAT_R= OTATIONAL; --Sig_/SQaM2+PQVQpHyl/GZVumm26 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM7FcACgkQAVBC80lX 0GxcWwf/TXx1Qn6sERh8dtnIHcUrY59B3lh6/VsRoba/j4nWIjjF4BJQbyIIWkfz RyC5pj382gQrw3elMEZcWZHCUsFWlJ0CtWXFrQPJm9Yg5S6LFDvW37K6DulV6O0H mf5KRUP+W9zQB04wzb5/Ku7Qv5RqmcLFYPt8npQiZl2q3ofkRBvs6JG1tyoX+YoA xq+JbM8BjmMUmHcQg/dNJIR3SgktYLKA6+4qDXwjOnrTXwLT585PBY2p5MpgVbsv xuQPwaVujxBSeKnB60h2K1sAE71zt62mLqxK+NN9d+fgf6E1HmeFbUA7QxFqKP0i qPMBhP/ngTGfcm55HID06VuRPU17DA== =H4xZ -----END PGP SIGNATURE----- --Sig_/SQaM2+PQVQpHyl/GZVumm26-- . Date: Tue, 9 Jul 2024 17:58:03 +1000 From: Stephen Rothwell To: Kees Cook Cc: Arnd Bergmann , Linux Kernel Mailing List , Linux Next Mailing List , liujinlong , liujinlong Subject: linux-next: manual merge of the kspp tree with Linus' tree Message-ID: <20240709175803.36f8bca6@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/qcOr_DR=iMkXoT2OuDs2tZ3"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271655 org.kernel.vger.linux-next:62124 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/qcOr_DR=iMkXoT2OuDs2tZ3 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Today's linux-next merge of the kspp tree got a conflict in: kernel/kallsyms.c between commit: 7e1f4eb9a60d ("kallsyms: rework symbol lookup return codes") from Linus' tree and commit: 21b4564fedad ("sprint_symbol: Replace strcpy with memmove to handle poten= tial overlap") from the kspp tree. I fixed it up (the former removed the code modified by the latter, so I did that) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. --=20 Cheers, Stephen Rothwell --Sig_/qcOr_DR=iMkXoT2OuDs2tZ3 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM7YsACgkQAVBC80lX 0GwIvAf/eSokduLCFkiUm0VI3VjxQ5l6EOv5sWiuWd6e+ogG7Bx+H5IR4eW/ILuL lC6jIREbFxZvTSpX26NWoT9wz3XwWp5e0os4aWaHAfJIVFFtn3WV3qhyi1SldVtD WTDckClVNPaXO4mp8qqQb1r3JncXgKD7DdOWzhcOWJ8Y1FKJ3ejoqDPZalP1KEg6 Qv8UryngT/Rgz3U+qvO6mUTmhbK4L0SXBR86pfXxJmX2GHP6uDMPBL2+uJS0jeZE pP798gknfYXGAT6vC5oGBuHrvIwpE1mStrPcEFAOhkUs19VZNZ3k7WlCgfeStyIs CISiihqs4gGmzdbxGo0Umvf3Rpk5rQ== =tKSh -----END PGP SIGNATURE----- --Sig_/qcOr_DR=iMkXoT2OuDs2tZ3-- . From: Dapeng Mi To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Jim Mattson , Mingwei Zhang , Xiong Zhang , Zhenyu Wang , Like Xu , Jinrong Liang , Yongwei Ma , Dapeng Mi , Dapeng Mi , Gleb Natapov Subject: [PATCH] KVM: x86/pmu: Return KVM_MSR_RET_INVALID for invalid PMU MSR access Date: Tue, 9 Jul 2024 14:55:00 +0000 Message-Id: <20240709145500.45547-1-dapeng1.mi@linux.intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271656 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kvm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Return KVM_MSR_RET_INVALID instead of 0 to inject #GP to guest for all invalid PMU MSRs access Currently KVM silently drops the access and doesn't inject #GP for some invalid PMU MSRs like MSR_P6_PERFCTR0/MSR_P6_PERFCTR1, MSR_P6_EVNTSEL0/MSR_P6_EVNTSEL1, but KVM still injects #GP for all other invalid PMU MSRs. This leads to guest see different behavior on invalid PMU access and may confuse guest. This behavior is introduced by the 'commit 5753785fa977 ("KVM: do not #GP on perf MSR writes when vPMU is disabled")' in 2012. This commit seems to want to keep back compatible with weird behavior of some guests in vPMU disabled case, but strongly suspect if it's still available nowadays. Since Perfmon v6 starts, the GP counters could become discontinuous on HW, It's possible that HW doesn't support GP counters 0 and 1. Considering this situation KVM should inject #GP for all invalid PMU MSRs access. Cc: Gleb Natapov Signed-off-by: Dapeng Mi --- arch/x86/kvm/x86.c | 18 ------------------ .../selftests/kvm/x86_64/pmu_counters_test.c | 7 +------ 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 994743266480..d92321d37892 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -4051,16 +4051,6 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) case MSR_IA32_MC0_CTL2 ... MSR_IA32_MCx_CTL2(KVM_MAX_MCE_BANKS) - 1: return set_msr_mce(vcpu, msr_info); - case MSR_K7_PERFCTR0 ... MSR_K7_PERFCTR3: - case MSR_P6_PERFCTR0 ... MSR_P6_PERFCTR1: - case MSR_K7_EVNTSEL0 ... MSR_K7_EVNTSEL3: - case MSR_P6_EVNTSEL0 ... MSR_P6_EVNTSEL1: - if (kvm_pmu_is_valid_msr(vcpu, msr)) - return kvm_pmu_set_msr(vcpu, msr_info); - - if (data) - kvm_pr_unimpl_wrmsr(vcpu, msr, data); - break; case MSR_K7_CLK_CTL: /* * Ignore all writes to this no longer documented MSR. @@ -4239,14 +4229,6 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) case MSR_DRAM_ENERGY_STATUS: /* DRAM controller */ msr_info->data = 0; break; - case MSR_K7_EVNTSEL0 ... MSR_K7_EVNTSEL3: - case MSR_K7_PERFCTR0 ... MSR_K7_PERFCTR3: - case MSR_P6_PERFCTR0 ... MSR_P6_PERFCTR1: - case MSR_P6_EVNTSEL0 ... MSR_P6_EVNTSEL1: - if (kvm_pmu_is_valid_msr(vcpu, msr_info->index)) - return kvm_pmu_get_msr(vcpu, msr_info); - msr_info->data = 0; - break; case MSR_IA32_UCODE_REV: msr_info->data = vcpu->arch.microcode_version; break; diff --git a/tools/testing/selftests/kvm/x86_64/pmu_counters_test.c b/tools/testing/selftests/kvm/x86_64/pmu_counters_test.c index 698cb36989db..62ed765d2aa7 100644 --- a/tools/testing/selftests/kvm/x86_64/pmu_counters_test.c +++ b/tools/testing/selftests/kvm/x86_64/pmu_counters_test.c @@ -376,13 +376,8 @@ static void guest_rd_wr_counters(uint32_t base_msr, uint8_t nr_possible_counters */ const bool expect_success = i < nr_counters || (or_mask & BIT(i)); - /* - * KVM drops writes to MSR_P6_PERFCTR[0|1] if the counters are - * unsupported, i.e. doesn't #GP and reads back '0'. - */ const uint64_t expected_val = expect_success ? test_val : 0; - const bool expect_gp = !expect_success && msr != MSR_P6_PERFCTR0 && - msr != MSR_P6_PERFCTR1; + const bool expect_gp = !expect_success; uint32_t rdpmc_idx; uint8_t vector; uint64_t val; base-commit: 771df9ffadb8204e61d3e98f36c5067102aab78f -- 2.40.1 . From: Nazar Bilinskyi To: tiwai@suse.com Cc: alsa-devel@alsa-project.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Nazar Bilinskyi Subject: [PATCH] ALSA: hda/realtek: Enable Mute LED on HP 250 G7 Date: Tue, 9 Jul 2024 11:05:46 +0300 Message-ID: <20240709080546.18344-1-nbilinskyi@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271663 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail HP 250 G7 has a mute LED that can be made to work using quirk ALC269_FIXUP_HP_LINE1_MIC1_LED. Enable already existing quirk. Signed-off-by: Nazar Bilinskyi --- sound/pci/hda/patch_realtek.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 811e82474..57eb67f05 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -10053,6 +10053,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x103c, 0x83b9, "HP Spectre x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x841c, "HP Pavilion 15-CK0xx", ALC269_FIXUP_HP_MUTE_LED_MIC3), SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3), + SND_PCI_QUIRK(0x103c, 0x84a6, "HP 250 G7 Notebook PC", ALC269_FIXUP_HP_LINE1_MIC1_LED), SND_PCI_QUIRK(0x103c, 0x84ae, "HP 15-db0403ng", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2), SND_PCI_QUIRK(0x103c, 0x84da, "HP OMEN dc0019-ur", ALC295_FIXUP_HP_OMEN), SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3), -- 2.45.2 . Date: Tue, 9 Jul 2024 18:08:29 +1000 From: Stephen Rothwell To: Theodore Ts'o , "Jason A. Donenfeld" , Shuah Khan Cc: John Hubbard , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: duplicate patches in the random tree Message-ID: <20240709180829.65e8967d@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/0GB.kt9fq8KwD/z07AtL0gY"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271664 org.kernel.vger.linux-next:62125 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/0GB.kt9fq8KwD/z07AtL0gY Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, The following commits are also in the kselftest-fixes tree as different commits (but the same patches): 868680ffba11 ("selftests/vDSO: remove duplicate compiler invocations from= Makefile") 7bb79ef48b9d ("selftests/vDSO: remove partially duplicated "all:" target = in Makefile") 14cd1a877fc6 ("selftests/vDSO: fix clang build errors and warnings") These are already causing an unnecessary conflict :-( Maybe you could just merge the kselftest-fixes tree (git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git#fi= xes), but first make sure that it won't be rebased. --=20 Cheers, Stephen Rothwell --Sig_/0GB.kt9fq8KwD/z07AtL0gY Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM7/0ACgkQAVBC80lX 0Gw8hAf/UQnJJh+08sSLt89DvlFahc3R/Bj9A21CjSdQNk2lz9JDcpz9NBsYmkif qPiMQA396LxTqa3A/f7S3LV3OtoOCS7keei4rxkaDMHBdu+X1TPNLMpALZYVxnHr DOQ55cQMyLNsHqtc4MQl4Kco3TbAKvPx+6K/ahF83pA62f4e9mjxV/bNwNlZPTvU CPM0crEthjdpDQe2yjArub0Pexab1vxPWOXL0maClOn6EimbKlnotrSf6UC4g62F 9mqA4kf00IlgSOfytAPOATHFd8w9UZd1VbuOwQUcKJT+hUkJAsPCss18/QIjc7wR t/WiOR6iaJr56/fYHkBX0msJQqPbVA== =O8I8 -----END PGP SIGNATURE----- --Sig_/0GB.kt9fq8KwD/z07AtL0gY-- . Date: Tue, 9 Jul 2024 10:21:53 +0200 From: Daniel Wagner To: LKML , linux-rt-users@vger.kernel.org, stable-rt@vger.kernel.org, Steven Rostedt , Thomas Gleixner , Sebastian Andrzej Siewior , Tom Zanussi , Clark Williams Subject: [ANNOUNCE] 4.19.316-rt136 Message-ID: <172051324712.24919.12388891662776955702@beryllium.lan> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271674 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-rt-users,org.kernel.vger.stable-rt Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello RT-list! I'm pleased to announce the 4.19.316-rt136 stable release. This is just an update to the v4.19.316 stable release. No RT specific changes. You can get this release via the git tree at: git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git branch: v4.19-rt Head SHA1: 346ca37165de5ea5ce47dfa9a27d4bf22c77fcd5 Or to build 4.19.316-rt136 directly, the following patches should be applied: https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.19.tar.xz https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.19.316.xz https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patch-4.19.316-rt136.patch.xz Signing key fingerprint: 5BF6 7BC5 0826 72CA BB45 ACAE 587C 5ECA 5D0A 306C All keys used for the above files and repositories can be found on the following git repository: git://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git Enjoy! Daniel Changes from v4.19.315-rt135: --- Daniel Wagner (1): Linux 4.19.316-rt136 --- localversion-rt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- diff --git a/localversion-rt b/localversion-rt index e3026053f01e..f824f53c19ea 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt135 +-rt136 . From: Frank Wunderlich To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Cc: Frank Wunderlich , Daniel Golle , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: [PATCH v1] arm64: dts: mediatek: mt7988: add labels for different nodes Date: Tue, 9 Jul 2024 10:16:13 +0200 Message-ID: <20240709081614.19993-1-linux@fw-web.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mail-ID: 86a6b8d6-7d26-42ab-aaf3-d045996a5733 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271675 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Frank Wunderlich Current devicetree-nodes missing a label which allows to add aproperties or phandles to them, so add them. Signed-off-by: Frank Wunderlich Fixes: 660c230bf302 ("arm64: dts: mediatek: mt7988: add I2C controllers") Fixes: 09ff2216a035 ("arm64: dts: mediatek: mt7988: add PWM controller") Fixes: 09346afaba0a ("arm64: dts: mediatek: mt7988: add XHCI controllers") Fixes: b616b403cbff ("arm64: dts: mediatek: mt7988: add clock controllers") Fixes: 6c1d134a103f ("arm64: dts: mediatek: Add initial MT7988A and BPI-R4") --- arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi index aa728331e876..9ced005b1595 100644 --- a/arch/arm64/boot/dts/mediatek/mt7988a.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt7988a.dtsi @@ -14,28 +14,28 @@ cpus { #address-cells = <1>; #size-cells = <0>; - cpu@0 { + cpu0: cpu@0 { compatible = "arm,cortex-a73"; reg = <0x0>; device_type = "cpu"; enable-method = "psci"; }; - cpu@1 { + cpu1: cpu@1 { compatible = "arm,cortex-a73"; reg = <0x1>; device_type = "cpu"; enable-method = "psci"; }; - cpu@2 { + cpu2: cpu@2 { compatible = "arm,cortex-a73"; reg = <0x2>; device_type = "cpu"; enable-method = "psci"; }; - cpu@3 { + cpu3: cpu@3 { compatible = "arm,cortex-a73"; reg = <0x3>; device_type = "cpu"; @@ -43,7 +43,7 @@ cpu@3 { }; }; - oscillator-40m { + system_clk: oscillator-40m { compatible = "fixed-clock"; clock-frequency = <40000000>; #clock-cells = <0>; @@ -86,7 +86,7 @@ infracfg: clock-controller@10001000 { #clock-cells = <1>; }; - clock-controller@1001b000 { + topckgen: clock-controller@1001b000 { compatible = "mediatek,mt7988-topckgen", "syscon"; reg = <0 0x1001b000 0 0x1000>; #clock-cells = <1>; @@ -99,13 +99,13 @@ watchdog: watchdog@1001c000 { #reset-cells = <1>; }; - clock-controller@1001e000 { + apmixedsys: clock-controller@1001e000 { compatible = "mediatek,mt7988-apmixedsys"; reg = <0 0x1001e000 0 0x1000>; #clock-cells = <1>; }; - pwm@10048000 { + pwm: pwm@10048000 { compatible = "mediatek,mt7988-pwm"; reg = <0 0x10048000 0 0x1000>; clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>, @@ -124,7 +124,7 @@ pwm@10048000 { status = "disabled"; }; - i2c@11003000 { + i2c0: i2c@11003000 { compatible = "mediatek,mt7981-i2c"; reg = <0 0x11003000 0 0x1000>, <0 0x10217080 0 0x80>; @@ -137,7 +137,7 @@ i2c@11003000 { status = "disabled"; }; - i2c@11004000 { + i2c1: i2c@11004000 { compatible = "mediatek,mt7981-i2c"; reg = <0 0x11004000 0 0x1000>, <0 0x10217100 0 0x80>; @@ -150,7 +150,7 @@ i2c@11004000 { status = "disabled"; }; - i2c@11005000 { + i2c2: i2c@11005000 { compatible = "mediatek,mt7981-i2c"; reg = <0 0x11005000 0 0x1000>, <0 0x10217180 0 0x80>; @@ -163,7 +163,7 @@ i2c@11005000 { status = "disabled"; }; - usb@11190000 { + ssusb0: usb@11190000 { compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci"; reg = <0 0x11190000 0 0x2e00>, <0 0x11193e00 0 0x0100>; @@ -177,7 +177,7 @@ usb@11190000 { clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck"; }; - usb@11200000 { + ssusb1: usb@11200000 { compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci"; reg = <0 0x11200000 0 0x2e00>, <0 0x11203e00 0 0x0100>; @@ -191,21 +191,21 @@ usb@11200000 { clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck"; }; - clock-controller@11f40000 { + xfi_pll: clock-controller@11f40000 { compatible = "mediatek,mt7988-xfi-pll"; reg = <0 0x11f40000 0 0x1000>; resets = <&watchdog 16>; #clock-cells = <1>; }; - clock-controller@15000000 { + ethsys: clock-controller@15000000 { compatible = "mediatek,mt7988-ethsys", "syscon"; reg = <0 0x15000000 0 0x1000>; #clock-cells = <1>; #reset-cells = <1>; }; - clock-controller@15031000 { + ethwarp: clock-controller@15031000 { compatible = "mediatek,mt7988-ethwarp"; reg = <0 0x15031000 0 0x1000>; #clock-cells = <1>; -- 2.43.0 . From: Daniel Wagner To: LKML , , , Steven Rostedt , Thomas Gleixner , Sebastian Andrzej Siewior , Tom Zanussi , Clark Williams Cc: Daniel Wagner Subject: [PATCH RT 0/1] Linux v4.19.317-rt137-rc1 Date: Tue, 9 Jul 2024 10:25:57 +0200 Message-ID: <20240709082558.11012-1-wagi@monom.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271676 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-rt-users,org.kernel.vger.stable-rt Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Dear RT Folks, This is the RT stable review cycle of patch 4.19.317-rt137-rc1. Please scream at me if I messed something up. Please test the patches too. The -rc release is also available on kernel.org https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git on the v4.19-rt-next branch. If all goes well, this patch will be converted to the next main release on 2024-07-16. Signing key fingerprint: 5BF6 7BC5 0826 72CA BB45 ACAE 587C 5ECA 5D0A 306C All keys used for the above files and repositories can be found on the following git repository: git://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git Enjoy! Daniel Changes from v4.19.316-rt136: Daniel Wagner (1): Linux 4.19.317-rt137 localversion-rt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.45.2 . Message-ID: From: Yangyu Chen To: iommu@lists.linux.dev Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Marek Szyprowski , Robin Murphy , Yangyu Chen Subject: [PATCH -fixes] dma-direct: only reference arch_dma_set_uncached symbol when usable Date: Tue, 9 Jul 2024 16:32:48 +0800 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271687 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The arch_dma_set_uncached symbol is only used when the architecture provides it. However, many architectures do not provide it, and the code currently relies on compiler optimization to cut the unnecessary code. When the compiler fails to optimize it, the code will reference the symbol and cause a link error. I found this bug when developing some new extensions for RISC-V on LLVM. This patch adds a check to avoid the reference to the symbol when it is not provided. Signed-off-by: Yangyu Chen --- kernel/dma/direct.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 4d543b1e9d57..cdf3616a6def 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -293,9 +293,14 @@ void *dma_direct_alloc(struct device *dev, size_t size, if (set_uncached) { arch_dma_prep_coherent(page, size); +#ifdef CONFIG_ARCH_HAS_DMA_SET_UNCACHED ret = arch_dma_set_uncached(ret, size); if (IS_ERR(ret)) goto out_encrypt_pages; +#else + dev_err_once(dev, "BUG: set_uncached set but arch doesn't have dma_set_uncached\n"); + goto out_encrypt_pages; +#endif } *dma_handle = phys_to_dma_direct(dev, page_to_phys(page)); -- 2.45.2 . Date: Tue, 9 Jul 2024 18:40:04 +1000 From: Stephen Rothwell To: Andrew Morton Cc: Nicolas Pitre , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: build failure after merge of the mm tree Message-ID: <20240709184004.60f94726@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/rapPalzJMwbDFUFj46ja6p1"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271697 org.kernel.vger.linux-next:62128 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/rapPalzJMwbDFUFj46ja6p1 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, After merging the mm tree, today's linux-next build (i386 defconfig) failed like this: lib/math/div64.c: In function 'mul_u64_u64_div_u64': lib/math/div64.c:211:2: error: #error "unknown endianness" 211 | #error "unknown endianness" | ^~~~~ lib/math/div64.c:219:21: error: 'union ' has no member named 'l' 219 | X.v =3D (u64)A.l * B.l; | ^ lib/math/div64.c:219:27: error: 'union ' has no member named 'l' 219 | X.v =3D (u64)A.l * B.l; | ^ lib/math/div64.c:220:21: error: 'union ' has no member named 'l' 220 | Y.v =3D (u64)A.l * B.h + X.h; | ^ lib/math/div64.c:220:27: error: 'union ' has no member named 'h' 220 | Y.v =3D (u64)A.l * B.h + X.h; | ^ lib/math/div64.c:220:33: error: 'union ' has no member named 'h' 220 | Y.v =3D (u64)A.l * B.h + X.h; | ^ lib/math/div64.c:221:21: error: 'union ' has no member named 'h' 221 | Z.v =3D (u64)A.h * B.h + Y.h; | ^ lib/math/div64.c:221:27: error: 'union ' has no member named 'h' 221 | Z.v =3D (u64)A.h * B.h + Y.h; | ^ lib/math/div64.c:221:33: error: 'union ' has no member named 'h' 221 | Z.v =3D (u64)A.h * B.h + Y.h; | ^ lib/math/div64.c:222:21: error: 'union ' has no member named 'h' 222 | Y.v =3D (u64)A.h * B.l + Y.l; | ^ lib/math/div64.c:222:27: error: 'union ' has no member named 'l' 222 | Y.v =3D (u64)A.h * B.l + Y.l; | ^ lib/math/div64.c:222:33: error: 'union ' has no member named 'l' 222 | Y.v =3D (u64)A.h * B.l + Y.l; | ^ lib/math/div64.c:223:10: error: 'union ' has no member named 'h' 223 | X.h =3D Y.l; | ^ lib/math/div64.c:223:16: error: 'union ' has no member named 'l' 223 | X.h =3D Y.l; | ^ lib/math/div64.c:224:17: error: 'union ' has no member named 'h' 224 | Z.v +=3D Y.h; | ^ Caused by commit 7a3c42cc4fc3 ("mul_u64_u64_div_u64: make it precise always") from the mm-nonmm-unstable branch of the mm tree. I have reverted that commit for today. --=20 Cheers, Stephen Rothwell --Sig_/rapPalzJMwbDFUFj46ja6p1 Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM92QACgkQAVBC80lX 0GxBVwgAgHuPqASRv0/BBKUWaI0FG76ok4ilXZt0mP7bVT0zxhq8YydZBUYfpkD/ be1bUE+pVJ5Zk2lINRyqYhF1aBHDjKVqcWEKNcQp1XI2mL6qzcmxuE3HFwiK6Efu 0yi24f4GLkKwYVwRlDkT3LKM073T4SvrhJO7UF2U/fY6fruJ0Te3KFJ+MAUq6/du vtcWDivTJ6EVxbXQL2xZId1fADBw/ThJ1qglxc5bkyAGIw8Xo6iaBZZD84ie/rc1 1fp4QMuP39TcHz3+FrDc/C12SK+A6Y//eqnAc4ZYFFMo3+O5gw5Yca7/rd1dYbdp fKbTSBrHUiBNv1Tm+b5TOnKYRIu+uw== =I2em -----END PGP SIGNATURE----- --Sig_/rapPalzJMwbDFUFj46ja6p1-- . From: hexue To: axboe@kernel.dk Cc: asml.silence@gmail.com, io-uring@vger.kernel.org, linux-kernel@vger.kernel.org, hexue Subject: [PATCH v6] io_uring: releasing CPU resources when polling Date: Tue, 9 Jul 2024 16:16:19 +0800 Message-Id: <20240709081619.3177418-1-xue01.he@samsung.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" References: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271701 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.io-uring Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail io_uring use polling mode could improve the IO performence, but it will spend 100% of CPU resources to do polling. This set a signal "IORING_SETUP_HY_POLL" to application, aim to provide a interface for user to enable a new hybrid polling at io_uring level. A new hybrid poll is implemented on the io_uring layer. Once IO issued, it will not polling immediately, but block first and re-run before IO complete, then poll to reap IO. This poll function could be a suboptimal solution when running on a single thread, it offers the performance lower than regular polling but higher than IRQ, and CPU utilization is also lower than polling. Test Result fio-3.35, Gen 4 device ------------------------------------------------------------------------------------- Performance ------------------------------------------------------------------------------------- write read randwrite randread regular poll BW=3939MiB/s BW=6596MiB/s IOPS=190K IOPS=526K IRQ BW=3927MiB/s BW=6567MiB/s IOPS=181K IOPS=216K hybrid poll BW=3933MiB/s BW=6600MiB/s IOPS=190K IOPS=390K(suboptimal) ------------------------------------------------------------------------------------- CPU Utilization ------------------------------------------------------------------ write read randwrite randread regular poll 100% 100% 100% 100% IRQ 38% 53% 100% 100% hybrid poll 76% 32% 70% 85% ------------------------------------------------------------------ -- changes since v5: - Remove cstime recorder - Use minimize sleep time in different drivers - Use the half of whole runtime to do schedule - Consider as a suboptimal solution between regular poll and IRQ changes since v4: - Rewrote the commit - Update the test results - Reorganized the code basd on 6.11 changes since v3: - Simplified the commit - Add some comments on code changes since v2: - Modified some formatting errors - Move judgement to poll path changes since v1: - Extend hybrid poll to async polled io Signed-off-by: hexue --- include/linux/io_uring_types.h | 6 +++ include/uapi/linux/io_uring.h | 1 + io_uring/io_uring.c | 3 +- io_uring/rw.c | 74 +++++++++++++++++++++++++++++++++- 4 files changed, 82 insertions(+), 2 deletions(-) diff --git a/include/linux/io_uring_types.h b/include/linux/io_uring_types.h index 91224bbcfa73..0897126fb2d7 100644 --- a/include/linux/io_uring_types.h +++ b/include/linux/io_uring_types.h @@ -428,6 +428,8 @@ struct io_ring_ctx { unsigned short n_sqe_pages; struct page **ring_pages; struct page **sqe_pages; + /* for hybrid poll*/ + u64 available_time; }; struct io_tw_state { @@ -665,6 +667,10 @@ struct io_kiocb { u64 extra1; u64 extra2; } big_cqe; + /* for hybrid iopoll */ + bool poll_state; + u64 iopoll_start; + u64 iopoll_end; }; struct io_overflow_cqe { diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h index 994bf7af0efe..ef32ec319d1f 100644 --- a/include/uapi/linux/io_uring.h +++ b/include/uapi/linux/io_uring.h @@ -199,6 +199,7 @@ enum io_uring_sqe_flags_bit { * Removes indirection through the SQ index array. */ #define IORING_SETUP_NO_SQARRAY (1U << 16) +#define IORING_SETUP_HY_POLL (1U << 17) enum io_uring_op { IORING_OP_NOP, diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 816e93e7f949..b38f8af118c5 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -299,6 +299,7 @@ static __cold struct io_ring_ctx *io_ring_ctx_alloc(struct io_uring_params *p) goto err; ctx->flags = p->flags; + ctx->available_time = LLONG_MAX; atomic_set(&ctx->cq_wait_nr, IO_CQ_WAKE_INIT); init_waitqueue_head(&ctx->sqo_sq_wait); INIT_LIST_HEAD(&ctx->sqd_list); @@ -3637,7 +3638,7 @@ static long io_uring_setup(u32 entries, struct io_uring_params __user *params) IORING_SETUP_SQE128 | IORING_SETUP_CQE32 | IORING_SETUP_SINGLE_ISSUER | IORING_SETUP_DEFER_TASKRUN | IORING_SETUP_NO_MMAP | IORING_SETUP_REGISTERED_FD_ONLY | - IORING_SETUP_NO_SQARRAY)) + IORING_SETUP_NO_SQARRAY | IORING_SETUP_HY_POLL)) return -EINVAL; return io_uring_create(entries, &p, params); diff --git a/io_uring/rw.c b/io_uring/rw.c index 1a2128459cb4..5505f4292ce5 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -772,6 +772,13 @@ static bool need_complete_io(struct io_kiocb *req) S_ISBLK(file_inode(req->file)->i_mode); } +static void init_hybrid_poll(struct io_ring_ctx *ctx, struct io_kiocb *req) +{ + /* make sure every req only block once*/ + req->poll_state = false; + req->iopoll_start = ktime_get_ns(); +} + static int io_rw_init_file(struct io_kiocb *req, fmode_t mode) { struct io_rw *rw = io_kiocb_to_cmd(req, struct io_rw); @@ -809,6 +816,8 @@ static int io_rw_init_file(struct io_kiocb *req, fmode_t mode) kiocb->ki_flags |= IOCB_HIPRI; kiocb->ki_complete = io_complete_rw_iopoll; req->iopoll_completed = 0; + if (ctx->flags & IORING_SETUP_HY_POLL) + init_hybrid_poll(ctx, req); } else { if (kiocb->ki_flags & IOCB_HIPRI) return -EINVAL; @@ -1106,6 +1115,67 @@ void io_rw_fail(struct io_kiocb *req) io_req_set_res(req, res, req->cqe.flags); } +static u64 io_delay(struct io_ring_ctx *ctx, struct io_kiocb *req) +{ + struct hrtimer_sleeper timer; + enum hrtimer_mode mode; + ktime_t kt; + u64 sleep_time; + + if (req->poll_state) + return 0; + + if (ctx->available_time == LLONG_MAX) + return 0; + + /* Using half running time to do schedul */ + sleep_time = ctx->available_time / 2; + + kt = ktime_set(0, sleep_time); + req->poll_state = true; + + mode = HRTIMER_MODE_REL; + hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode); + hrtimer_set_expires(&timer.timer, kt); + set_current_state(TASK_INTERRUPTIBLE); + hrtimer_sleeper_start_expires(&timer, mode); + + if (timer.task) + io_schedule(); + + hrtimer_cancel(&timer.timer); + __set_current_state(TASK_RUNNING); + destroy_hrtimer_on_stack(&timer.timer); + + return sleep_time; +} + +static int io_uring_hybrid_poll(struct io_kiocb *req, + struct io_comp_batch *iob, unsigned int poll_flags) +{ + struct io_rw *rw = io_kiocb_to_cmd(req, struct io_rw); + struct io_ring_ctx *ctx = req->ctx; + int ret; + u64 runtime, sleep_time; + + sleep_time = io_delay(ctx, req); + + /* it doesn't implement with io_uring passthrough now */ + ret = req->file->f_op->iopoll(&rw->kiocb, iob, poll_flags); + + req->iopoll_end = ktime_get_ns(); + runtime = req->iopoll_end - req->iopoll_start - sleep_time; + if (runtime < 0) + return 0; + + /* use minimize sleep time if there are different speed + * drivers, it could get more completions from fast one + */ + if (ctx->available_time > runtime) + ctx->available_time = runtime; + return ret; +} + int io_do_iopoll(struct io_ring_ctx *ctx, bool force_nonspin) { struct io_wq_work_node *pos, *start, *prev; @@ -1133,7 +1203,9 @@ int io_do_iopoll(struct io_ring_ctx *ctx, bool force_nonspin) if (READ_ONCE(req->iopoll_completed)) break; - if (req->opcode == IORING_OP_URING_CMD) { + if (ctx->flags & IORING_SETUP_HY_POLL) { + ret = io_uring_hybrid_poll(req, &iob, poll_flags); + } else if (req->opcode == IORING_OP_URING_CMD) { struct io_uring_cmd *ioucmd; ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); -- 2.40.1 . From: Krzysztof Kozlowski To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Krzysztof Kozlowski , Marek Vasut , Jonathan Cameron , Sebastian Reichel Subject: [PATCH] dt-bindings: non-dt-devices: document ltr,ltrf216a used via ACPI PRP0001 Date: Tue, 9 Jul 2024 10:44:01 +0200 Message-ID: <20240709084401.21108-1-krzysztof.kozlowski@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271702 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail There is a device in the wild with non-updatable firmware coming with ACPI tables with rejected "ltr,ltrf216a" compatible. Linux kernel still supports this device via ACPI PRP0001, however the compatible was never accepted to bindings. Lack of bindings causes checkpatch.pl warning about undocumented compatible. Add a schema for such ACPI PRP0001 devices purely to satisfy checkpatch.pl and document consensus: ltr,ltrf216a compatible is allowed only via ACPI PRP0001, but not bindings. Link: https://lore.kernel.org/all/20240705095047.90558-1-marex@denx.de/ Link: https://lore.kernel.org/lkml/20220731173446.7400bfa8@jic23-huawei/T/#me55be502302d70424a85368c2645c89f860b7b40 Cc: Marek Vasut Cc: Jonathan Cameron Cc: Sebastian Reichel Signed-off-by: Krzysztof Kozlowski --- .../devicetree/bindings/non-dt-devices.yaml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Documentation/devicetree/bindings/non-dt-devices.yaml diff --git a/Documentation/devicetree/bindings/non-dt-devices.yaml b/Documentation/devicetree/bindings/non-dt-devices.yaml new file mode 100644 index 000000000000..206334693c7b --- /dev/null +++ b/Documentation/devicetree/bindings/non-dt-devices.yaml @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/non-dt-devices.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Non-devicetree Devices - Exception List + +maintainers: + - Rob Herring + +description: + Some devices using ACPI with non-updatable firmware/ACPI tables use + incorrect Devicetree compatibles via ACPI PRP0001. Developers want to + support these devices, thus use such compatibles in Linux drivers, however + usage of these within Devicetree sources was rejected. + + Following list of devices is an incomplete schema with a goal to pass Linux + kernel scripts/checkpatch.pl checks about undocumented compatibles but also + reject any DTS file using such un-approved compatible. + + Usage of any of following compatibles is not allowed in Devicetree sources, + even if they come from immutable firmware. New entries can be added + only on the basis of non-updatable ACPI firmware on the device. + +properties: + compatible: + enum: + - ltr,ltrf216a + +required: + - compatible + - broken-usage-of-incorrect-compatible + +additionalProperties: false -- 2.43.0 . From: Jocelyn Falempe To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , "Bjorn Roy Baron" , Benno Lossin , Andreas Hindborg , Alice Ryhl , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, rust-for-linux@vger.kernel.org, Danilo Krummrich Cc: Jocelyn Falempe Subject: [PATCH v2 0/4] drm/panic: Add a qr_code panic screen Date: Tue, 9 Jul 2024 10:40:06 +0200 Message-ID: <20240709084458.158659-1-jfalempe@redhat.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271713 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.rust-for-linux Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series adds a new panic screen, with the kmsg data embedded in a QR-code. The main advantage of QR-code, is that you can copy/paste the debug data to a bug report. The QR-code encoder is written in rust, and is very specific to drm_panic. The reason is that it is called in a panic handler, and thus can't allocate memory, or use locking. The rust code uses a few rust core API, and provides only two C entry points. There is no particular reason to do it in rust, I just wanted to learn rust, and see if it can work in the kernel. If you want to see what it looks like, I've put a few screenshots here: https://github.com/kdj0c/panic_report/issues/1 v2: * Rewrite the rust comments with Markdown (Alice Ryhl) * Mark drm_panic_qr_generate() as unsafe (Alice Ryhl) * Use CStr directly, and remove the call to as_str_unchecked() (Alice Ryhl) * Add a check for data_len <= data_size (Greg KH) Jocelyn Falempe (4): drm/panic: Add integer scaling to blit() drm/rect: add drm_rect_overlap() drm/panic: simplify logo handling drm/panic: Add a qr_code panic screen drivers/gpu/drm/Kconfig | 29 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/drm_drv.c | 3 + drivers/gpu/drm/drm_panic.c | 338 +++++++++-- drivers/gpu/drm/drm_panic_qr.rs | 1004 +++++++++++++++++++++++++++++++ include/drm/drm_panic.h | 4 + include/drm/drm_rect.h | 15 + 7 files changed, 1355 insertions(+), 39 deletions(-) create mode 100644 drivers/gpu/drm/drm_panic_qr.rs base-commit: 5a716b06b329bd2108c95a4f04c71bbe491729f2 -- 2.45.2 . From: Xianwei Zhao via B4 Relay Subject: [PATCH 0/2] Watchdog: support for Amlogic SoC A4/A5 Date: Tue, 09 Jul 2024 16:48:24 +0800 Message-Id: <20240709-a4-a5_watchdog-v1-0-2ae852e05ec2@amlogic.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Wim Van Sebroeck , Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl Cc: linux-watchdog@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Xianwei Zhao , Huqiang Qin X-Original-From: Xianwei Zhao Reply-To: xianwei.zhao@amlogic.com Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271715 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-amlogic,org.infradead.lists.linux-arm-kernel,org.kernel.feeds.b4-sent,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-watchdog Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add watchdog for Amlogic A4/A5 SoC. A5's watchdog is the same as A4's. Signed-off-by: Xianwei Zhao --- Huqiang Qin (2): dt-bindings: watchdog: add support for Amlogic A4 SoCs arm64: dts: amlogic: add watchdog node for A4 SoCs .../devicetree/bindings/watchdog/amlogic,meson-gxbb-wdt.yaml | 1 + arch/arm64/boot/dts/amlogic/amlogic-a4-common.dtsi | 6 ++++++ 2 files changed, 7 insertions(+) --- base-commit: 338c92a5d1956f1841f84b86923087676d1d0cea change-id: 20240709-a4-a5_watchdog-3c841bbe7b16 Best regards, -- Xianwei Zhao . From: Chen Ni To: lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, amergnat@baylibre.com, kuninori.morimoto.gx@renesas.com, jernej.skrabec@gmail.com, nfraprado@collabora.com, robh@kernel.org Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Chen Ni Subject: [PATCH] ASoC: mediatek: mt8192: remove redundant null pointer check before of_node_put Date: Tue, 9 Jul 2024 16:51:31 +0800 Message-Id: <20240709085131.1436128-1-nichen@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271722 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail of_node_put() has taken the null pointer check into account. So it is safe to remove the duplicated check before of_node_put(). Signed-off-by: Chen Ni --- sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c index 8b323fb19925..db00704e206d 100644 --- a/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c +++ b/sound/soc/mediatek/mt8192/mt8192-mt6359-rt1015-rt5682.c @@ -1108,9 +1108,7 @@ static int mt8192_mt6359_legacy_probe(struct mtk_soc_card_data *soc_card_data) err_headset_codec: of_node_put(speaker_codec); err_speaker_codec: - if (hdmi_codec) - of_node_put(hdmi_codec); - + of_node_put(hdmi_codec); return ret; } -- 2.25.1 . Date: Tue, 9 Jul 2024 18:57:33 +1000 From: Stephen Rothwell To: Alasdair G Kergon , Mike Snitzer Cc: Mikulas Patocka , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: build warning after merge of the device-mapper tree Message-ID: <20240709185733.4aac356a@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/D405Mat/UdkS.xjdaUH+mwk"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271730 org.kernel.vger.linux-next:62130 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/D405Mat/UdkS.xjdaUH+mwk Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, After merging the device-mapper tree, today's linux-next build (htmldocs) produced this warning: Documentation/admin-guide/device-mapper/dm-crypt.rst:168: ERROR: Unexpected= indentation. Introduced by commit 04a1020ad350 ("dm-crypt: limit the size of encryption requests") --=20 Cheers, Stephen Rothwell --Sig_/D405Mat/UdkS.xjdaUH+mwk Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM+30ACgkQAVBC80lX 0GwXWAf9GvpDZfiGkricFbGTVWIiIf2s2644aR9UeKiAiFkC4tNtFayP66pIPqRk t6JjCvoKMJEIsW7SBeABK27cAmsz84AkfdaeVt9ODqUKuaZkShGFnI3ZN/p9wKh9 2hRcy5Xli9wCDdq3zbUiMQVTNM2/TrVJYmyZwEq61T6x7bSRYJqtKFri876Da9SR UI/L60WF/D8mw78m0HYlMMVvU6JtVh7z31onleCzVo9gh65AMakJRPXLMRRgBBTo 5Zyf4ydhn2cR0U8ppqNDl5/JU93YRviEHxFsezp36vycqJrkFA9HduVo+IZUAK/O B+ZYhWRrEU3aygd23mPGBtb5KmW0eg== =1USZ -----END PGP SIGNATURE----- --Sig_/D405Mat/UdkS.xjdaUH+mwk-- . From: Ma Ke To: patrik.r.jakobsson@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, alan@linux.intel.com, akpm@linux-foundation.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH v3] drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes Date: Tue, 9 Jul 2024 16:59:16 +0800 Message-Id: <20240709085916.3002467-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271732 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In cdv_intel_lvds_get_modes(), the return value of drm_mode_duplicate() is assigned to mode, which will lead to a NULL pointer dereference on failure of drm_mode_duplicate(). Add a check to avoid npd. Cc: stable@vger.kernel.org Fixes: 6a227d5fd6c4 ("gma500: Add support for Cedarview") Signed-off-by: Ma Ke --- Changes in v3: - added the recipient's email address, due to the prolonged absence of a response from the recipients. Changes in v2: - modified the patch according to suggestions from other patchs; - added Fixes line; - added Cc stable; - Link: https://lore.kernel.org/lkml/20240622072514.1867582-1-make24@iscas.ac.cn/T/ --- drivers/gpu/drm/gma500/cdv_intel_lvds.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c index f08a6803dc18..3adc2c9ab72d 100644 --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c @@ -311,6 +311,9 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector) if (mode_dev->panel_fixed_mode != NULL) { struct drm_display_mode *mode = drm_mode_duplicate(dev, mode_dev->panel_fixed_mode); + if (!mode) + return 0; + drm_mode_probed_add(connector, mode); return 1; } -- 2.25.1 . From: Zhiguo Niu To: , , CC: , , , , , , Subject: [PATCH V2] block: uapi: Fix compliation warning of using IOPRIO_PRIO_DATA Date: Tue, 9 Jul 2024 17:51:52 +0800 Message-ID: <1720518712-28301-1-git-send-email-zhiguo.niu@unisoc.com> X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-block:93952 org.kernel.vger.linux-kernel:1271736 Newsgroups: org.kernel.vger.linux-block,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Generally, the input of IOPRIO_PRIO_DATA has 16 bits. If use format "%d" to printk IOPRIO_PRIO_DATA, there will be the following warning or error. fs/f2fs/sysfs.c:348:31: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long unsigned int’ [-Wformat=] return sysfs_emit(buf, "%s,%d\n", ~^ %ld This is because the output of IOPRIO_PRIO_DATA is converted to "UL" from IOPRIO_PRIO_MASK, which is not reasonable. unsigned int is more suitable. Fixes: 06447ae5e33b ("ioprio: move user space relevant ioprio bits to UAPI includes") Cc: stable@vger.kernel.org Cc: Oliver Hartkopp Signed-off-by: Zhiguo Niu Reviewed-by: Bart Van Assche Link: https://lore.kernel.org/all/1717155071-20409-1-git-send-email-zhiguo.niu@unisoc.com --- v2: add Fixes tag and Cc tag --- --- include/uapi/linux/ioprio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/uapi/linux/ioprio.h b/include/uapi/linux/ioprio.h index bee2bdb0..9ead07f 100644 --- a/include/uapi/linux/ioprio.h +++ b/include/uapi/linux/ioprio.h @@ -11,7 +11,7 @@ #define IOPRIO_CLASS_SHIFT 13 #define IOPRIO_NR_CLASSES 8 #define IOPRIO_CLASS_MASK (IOPRIO_NR_CLASSES - 1) -#define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1) +#define IOPRIO_PRIO_MASK ((1U << IOPRIO_CLASS_SHIFT) - 1) #define IOPRIO_PRIO_CLASS(ioprio) \ (((ioprio) >> IOPRIO_CLASS_SHIFT) & IOPRIO_CLASS_MASK) -- 1.9.1 . From: Varadarajan Narayanan To: , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v5 0/9] Enable CPR for IPQ9574 Date: Tue, 9 Jul 2024 14:31:23 +0530 Message-ID: <20240709090132.117077-1-quic_varada@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271739 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series tries to enable CPR on IPQ9574, that implements CPRv4. Since [1] is older, faced few minor issues. Those are addressed in [2]. dt_binding_check and dtbs_check passed. Depends: [1] https://lore.kernel.org/lkml/20230217-topic-cpr3h-v14-0-9fd23241493d@linaro.org/T/ [2] https://github.com/quic-varada/cpr/tree/4de50be55a89eb29ab0d40d3fcfe9aa7a9ccf910 [3] https://lore.kernel.org/linux-arm-msm/20240703091651.2820236-10-quic_varada@quicinc.com/ v5: Drop 'dt-bindings: opp: v2-qcom-level: Update minItems for oloop-vadj & cloop-vadj', the [3] dependency listed above. It should be squashed into [1] Add acc_desc is not NULL check in one more place in cpr_probe Update one commit message and add acked-by, reviewd-by v4: s/cprh/cpr4/ Create new match data for ipq9574 that includes genpd_names Update cloop-vadj & oloop-vadj with minItems v3: Fix patch authorship for 2 patches Include CPR3 file changes done to Konrad's patches in https://github.com/quic-varada/cpr/commits/konrad/ Change url for [2] to skip the cpr3 file changes v2: Fix Signed-off-by order in 2 patches Update constraints in qcom,cpr3.yaml Add rbcpr_clk_src registration Add Reviewed-by to one of the patches Not adding Acked-by as the file has changed Praveenkumar I (2): pmdomain: qcom: rpmpd: Add IPQ9574 power domains soc: qcom: cpr3: Add IPQ9574 definitions Varadarajan Narayanan (7): soc: qcom: cpr3: Fix 'acc_desc' usage cpufreq: qcom-nvmem: Add support for IPQ9574 dt-bindings: power: rpmpd: Add IPQ9574 power domains dt-bindings: soc: qcom: cpr3: Add bindings for IPQ9574 dt-bindings: clock: Add CPR clock defines for IPQ9574 clk: qcom: gcc-ipq9574: Add CPR clock definition dts: arm64: qcom: ipq9574: Enable CPR .../devicetree/bindings/power/qcom,rpmpd.yaml | 1 + .../bindings/soc/qcom/qcom,cpr3.yaml | 35 +++ arch/arm64/boot/dts/qcom/ipq9574.dtsi | 269 ++++++++++++++++-- drivers/clk/qcom/gcc-ipq9574.c | 39 +++ drivers/cpufreq/qcom-cpufreq-nvmem.c | 7 +- drivers/pmdomain/qcom/cpr3.c | 146 +++++++++- drivers/pmdomain/qcom/rpmpd.c | 19 ++ include/dt-bindings/clock/qcom,ipq9574-gcc.h | 2 + include/dt-bindings/power/qcom-rpmpd.h | 3 + 9 files changed, 499 insertions(+), 22 deletions(-) -- 2.34.1 . Date: Tue, 9 Jul 2024 19:06:13 +1000 From: Stephen Rothwell To: Joerg Roedel Cc: Mark-PK Tsai , Will Deacon , Linux Kernel Mailing List , Linux Next Mailing List Subject: linux-next: build warning after merge of the iommu tree Message-ID: <20240709190613.3fd8b7ea@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/5auU+RIQ0GygD0jvw/HXm9p"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271757 org.kernel.vger.linux-next:62131 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/5auU+RIQ0GygD0jvw/HXm9p Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, After merging the iommu tree, today's linux-next build (htmldocs) produced this warning: Documentation/userspace-api/index.rst:42: WARNING: toctree contains referen= ce to nonexisting document 'userspace-api/iommu' Introduced by commit d926e7c04843 ("docs: iommu: Remove outdated Documentation/userspace-api/i= ommu.rst") --=20 Cheers, Stephen Rothwell --Sig_/5auU+RIQ0GygD0jvw/HXm9p Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaM/YUACgkQAVBC80lX 0GwiOwf/ayee33mJAEPEAI7xIDR9vX/J4cteqJFZWm4XgSFfYuZFc+g04Tf3eHbT QgvV5FLr1CsRNhUapgaPKOgH8gwmvvM33YXWWvXQA4lwqjdD6iM+Wbv0QUUdcoWt X6IhO6GNQZEX5nNcwr0ip8S4JJs7qxstv/a4IPNS4BpwzQk5SeldlocPZiMdou0g +TFLCDMC3g0bBFSHuwuP3wjiagMyNijIbaeQCXJPScMb4CNWxjpRj/Z3hshf9cUa wm4OM9AK7CQoYVrnWxTVjiHEvoYBT7uffpExWHYBvBlDKMtSs6hOwMKo2UzFAOCb WO0VtoM5gDveI0GPSZVsFwIyy3Hj0w== =ZQTn -----END PGP SIGNATURE----- --Sig_/5auU+RIQ0GygD0jvw/HXm9p-- . From: Ma Ke To: harry.wentland@amd.com, sunpeng.li@amd.com, Rodrigo.Siqueira@amd.com, alexander.deucher@amd.com, christian.koenig@amd.com, Xinhui.Pan@amd.com, airlied@gmail.com, daniel@ffwll.ch, daniel.vetter@ffwll.ch, alvin.lee2@amd.com, wenjing.liu@amd.com, chaitanya.dhere@amd.com, hamza.mahfooz@amd.com, sohaib.nadeem@amd.com, samson.tam@amd.com, Qingqing.Zhuo@amd.com, dillon.varone@amd.com, stylon.wang@amd.com, akpm@linux-foundation.org Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH v2] drm/amd/display: Add otg_master NULL check within init_pipe_slice_table_from_context Date: Tue, 9 Jul 2024 17:10:12 +0800 Message-Id: <20240709091012.3123409-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271763 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail To avoid reports of NULL_RETURN warning, we should add otg_master NULL check. Cc: stable@vger.kernel.org Fixes: c51d87202d1f ("drm/amd/display: do not attempt ODM power optimization if minimal transition doesn't exist") Signed-off-by: Ma Ke --- Changes in v2: - added the recipient's email address, due to the prolonged absence of a response from the recipient. - added Cc stable. --- drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c index f6fe0a64beac..8972598ca77f 100644 --- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c @@ -1177,6 +1177,9 @@ static void init_pipe_slice_table_from_context( stream = context->streams[i]; otg_master = resource_get_otg_master_for_stream( &context->res_ctx, stream); + if (!otg_master) + continue; + count = resource_get_odm_slice_count(otg_master); update_slice_table_for_stream(table, stream, count); -- 2.25.1 . From: zhangchun To: CC: , , , , , , zhangchun Subject: [PATCH] =?UTF-8?q?mm:=20Give=20kmap=5Flock=20before=20call=20flus?= =?UTF-8?q?h=5Ftlb=5Fkernel=5Frang=EF=BC=8Cavoid=20kmap=5Fhigh=20deadlock.?= Date: Tue, 9 Jul 2024 17:17:38 +0800 Message-ID: <1720516658-50434-1-git-send-email-zhang.chuna@h3c.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-DNSRBL: X-SPAM-SOURCE-CHECK: pass Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271769 org.kvack.linux-mm:203045 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Use kmap_high and kmap_XXX or kumap_xxx among differt cores at the same time may cause deadlock. The issue is like this: CPU 0: CPU 1: kmap_high(){ kmap_xxx() { ... irq_disable(); spin_lock(&kmap_lock) ... map_new_virtual ... flush_all_zero_pkmaps flush_tlb_kernel_range /* CPU0 holds the kmap_lock */ smp_call_function_many spin_lock(&kmap_lock) ... .... spin_unlock(&kmap_lock) ... CPU 0 holds the kmap_lock, waiting for CPU 1 respond to IPI. But CPU 1 has disabled irqs, waiting for kmap_lock, cannot answer the IPI. Fix this by releasing kmap_lock before call flush_tlb_kernel_range, avoid kmap_lock deadlock. Fixes: 3297e760776a ("highmem: atomic highmem kmap page pinning") Signed-off-by: zhangchun Co-developed-by: zhangzhansheng Signed-off-by: zhangzhansheng Reviewed-by: zhangzhengming --- mm/highmem.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/highmem.c b/mm/highmem.c index bd48ba4..841b370 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -220,8 +220,11 @@ static void flush_all_zero_pkmaps(void) set_page_address(page, NULL); need_flush = 1; } - if (need_flush) + if (need_flush) { + spin_unlock(&kmap_lock); flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); + spin_lock(&kmap_lock); + } } void __kmap_flush_unused(void) -- 1.8.3.1 . From: Ma Ke To: patrik.r.jakobsson@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, daniel.vetter@ffwll.ch, alan@linux.intel.com, airlied@redhat.com, akpm@linux-foundation.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH v3] drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes Date: Tue, 9 Jul 2024 17:20:11 +0800 Message-Id: <20240709092011.3204970-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271771 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In psb_intel_lvds_get_modes(), the return value of drm_mode_duplicate() is assigned to mode, which will lead to a possible NULL pointer dereference on failure of drm_mode_duplicate(). Add a check to avoid npd. Cc: stable@vger.kernel.org Fixes: 89c78134cc54 ("gma500: Add Poulsbo support") Signed-off-by: Ma Ke --- Changes in v3: - added the recipient's email address, due to the prolonged absence of a response from the recipients. Changes in v2: - modified the patch according to suggestions; - added Fixes line; - added Cc stable. --- drivers/gpu/drm/gma500/psb_intel_lvds.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c index 8486de230ec9..8d1be94a443b 100644 --- a/drivers/gpu/drm/gma500/psb_intel_lvds.c +++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c @@ -504,6 +504,9 @@ static int psb_intel_lvds_get_modes(struct drm_connector *connector) if (mode_dev->panel_fixed_mode != NULL) { struct drm_display_mode *mode = drm_mode_duplicate(dev, mode_dev->panel_fixed_mode); + if (!mode) + return 0; + drm_mode_probed_add(connector, mode); return 1; } -- 2.25.1 . From: Donet Tom To: Andrew Morton , Muchun Song , "Kirill A . Shutemov" Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ritesh Harjani , Mike Rapoport , David Hildenbrand , Matthew Wilcox , Tony Battersby , "Aneesh Kumar K . V" , Nicholas Piggin , Alexei Starovoitov , Andy Lutomirski , Donet Tom Subject: [PATCH v2] fs/hugetlbfs/inode.c: Ensure generic_hugetlb_get_unmapped_area() returns higher address than mmap_min_addr Date: Tue, 9 Jul 2024 04:21:22 -0500 Message-ID: <20240709092122.41232-1-donettom@linux.ibm.com> Content-Transfer-Encoding: 8bit X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271773 org.kvack.linux-mm:203046 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail generic_hugetlb_get_unmapped_area() was returning an address less than mmap_min_addr if the mmap argument addr, after alignment, was less than mmap_min_addr, causing mmap to fail. This is because current generic_hugetlb_get_unmapped_area() code does not take into account mmap_min_addr. This patch ensures that generic_hugetlb_get_unmapped_area() always returns an address that is greater than mmap_min_addr. Additionally, similar to generic_get_unmapped_area(), vm_end_gap() checks are included to ensure that the address is within the limit. How to reproduce ================ #include #include #include #include #define HUGEPAGE_SIZE (16 * 1024 * 1024) int main() { void *addr = mmap((void *)-1, HUGEPAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0); if (addr == MAP_FAILED) { perror("mmap"); exit(EXIT_FAILURE); } snprintf((char *)addr, HUGEPAGE_SIZE, "Hello, Huge Pages!"); printf("%s\n", (char *)addr); if (munmap(addr, HUGEPAGE_SIZE) == -1) { perror("munmap"); exit(EXIT_FAILURE); } return 0; } Result without fix ================== # cat /proc/meminfo |grep -i HugePages_Free HugePages_Free: 20 # ./test mmap: Permission denied # Result with fix =============== # cat /proc/meminfo |grep -i HugePages_Free HugePages_Free: 20 # ./test Hello, Huge Pages! # V2: Added vm_end_gap() check. V1: https://lore.kernel.org/all/20240705071150.84972-1-donettom@linux.ibm.com/ Reported-by Pavithra Prakash Signed-off-by: Donet Tom --- fs/hugetlbfs/inode.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 412f295acebe..cdd8e53ddd19 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -222,13 +222,13 @@ generic_hugetlb_get_unmapped_area(struct file *file, unsigned long addr, unsigned long flags) { struct mm_struct *mm = current->mm; - struct vm_area_struct *vma; + struct vm_area_struct *vma, *prev; struct hstate *h = hstate_file(file); const unsigned long mmap_end = arch_get_mmap_end(addr, len, flags); if (len & ~huge_page_mask(h)) return -EINVAL; - if (len > TASK_SIZE) + if (len > mmap_end - mmap_min_addr) return -ENOMEM; if (flags & MAP_FIXED) { @@ -239,9 +239,10 @@ generic_hugetlb_get_unmapped_area(struct file *file, unsigned long addr, if (addr) { addr = ALIGN(addr, huge_page_size(h)); - vma = find_vma(mm, addr); - if (mmap_end - len >= addr && - (!vma || addr + len <= vm_start_gap(vma))) + vma = find_vma_prev(mm, addr, &prev); + if (mmap_end - len >= addr && addr >= mmap_min_addr && + (!vma || addr + len <= vm_start_gap(vma)) && + (!prev || addr >= vm_end_gap(prev))) return addr; } -- 2.43.5 . From: Manikandan Muralidharan To: , , , , , , , , , , , , , CC: Subject: [PATCH v3 0/5] Convert Atmel PIO3 Pinctrl and GPIO bindings to yaml Date: Tue, 9 Jul 2024 14:53:49 +0530 Message-ID: <20240709092354.191643-1-manikandan.m@microchip.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271777 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-gpio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This patch series cleans-up the compatible property of PIO3 Pinctrl and GPIO bank nodes in DT and includes the text to yaml conversion of Atmel PIO3 Pinctrl and GPIO bindings. yaml files are validated using the following commands make dt_binding_check DT_SCHEMA_FILES= make CHECK_DTBS=y DT_SCHEMA_FILES= changelogs are available in respective patches. Manikandan Muralidharan (5): ARM: dts: microchip: change to simple-mfd from simple-bus for PIO3 pinumux controller ARM: dts: microchip: Remove additional compatible string from PIO3 pinctrl nodes ARM: dts: microchip: sam9x60: Remove additional compatible string from GPIO node dt-bindings: gpio: convert Atmel GPIO to json-schema dt-bindings: pinctrl: Convert Atmel PIO3 pinctrl to json-schema .../bindings/gpio/atmel,at91rm9200-gpio.yaml | 81 ++++++++ .../devicetree/bindings/gpio/gpio_atmel.txt | 31 --- .../bindings/pinctrl/atmel,at91-pinctrl.txt | 178 ----------------- .../pinctrl/atmel,at91rm9200-pinctrl.yaml | 184 ++++++++++++++++++ arch/arm/boot/dts/microchip/at91rm9200.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9260.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9261.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9263.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9g45.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9n12.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9rl.dtsi | 2 +- arch/arm/boot/dts/microchip/at91sam9x5.dtsi | 2 +- arch/arm/boot/dts/microchip/sam9x60.dtsi | 10 +- arch/arm/boot/dts/microchip/sama5d3.dtsi | 2 +- arch/arm/boot/dts/microchip/sama5d4.dtsi | 2 +- 15 files changed, 280 insertions(+), 224 deletions(-) create mode 100644 Documentation/devicetree/bindings/gpio/atmel,at91rm9200-gpio.yaml delete mode 100644 Documentation/devicetree/bindings/gpio/gpio_atmel.txt delete mode 100644 Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/atmel,at91rm9200-pinctrl.yaml -- 2.25.1 . Date: Tue, 9 Jul 2024 19:24:58 +1000 From: Stephen Rothwell To: Linux Next Mailing List Cc: Linux Kernel Mailing List Subject: linux-next: Tree for Jul 9 Message-ID: <20240709192458.521ae796@canb.auug.org.au> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/ZUvFGGfEGWix86qdtNCRjzh"; protocol="application/pgp-signature"; micalg=pgp-sha256 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271783 org.kernel.vger.linux-next:62133 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-next Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --Sig_/ZUvFGGfEGWix86qdtNCRjzh Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi all, Changes since 20240703: The mm-hotfixes tree lost its build failure. The mm tree gained a build failure for which I reverted a commit. The loongarch tree gained conflicts against the asm-generic and perf trees. The vfs-brauner tree gained a conflict against the asm-generic tree. The hid tree gained a conflict against the mm tree. The drm tree lost one of its build failures but I am still reverting a commit. The battery tree gained a conflict against the leds-lj tree. The devicetree tree gained a conflict against the kbuild tree. The driver-core tree gained a semantic conflict against the vl4-dvb-next tree. The tty tree gained a conflict against the tty.current tree. The scsi-mkp tree gained a conflict against Linus' tree. The vhost tree gained a conflict against the net-next tree. The random tree gained conflicts against the mm-stable tree. The rust tree gained a conflict against the block tree. The kspp tree gained a conflict against Linus' tree. Non-merge commits (relative to Linus' tree): 10864 11362 files changed, 819057 insertions(+), 207252 deletions(-) ---------------------------------------------------------------------------- I have created today's linux-next tree at git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git (patches at http://www.kernel.org/pub/linux/kernel/next/ ). If you are tracking the linux-next tree using git, you should not use "git pull" to do so as that will try to merge the new linux-next release with the old one. You should use "git fetch" and checkout or reset to the new master. You can see which trees have been included by looking in the Next/Trees file in the source. There is also the merge.log file in the Next directory. Between each merge, the tree was built with a ppc64_defconfig for powerpc, an allmodconfig for x86_64, a multi_v7_defconfig for arm and a native build of tools/perf. After the final fixups (if any), I do an x86_64 modules_install followed by builds for x86_64 allnoconfig, powerpc allnoconfig (32 and 64 bit), ppc44x_defconfig, allyesconfig and pseries_le_defconfig and i386, arm64, s390, sparc and sparc64 defconfig and htmldocs. And finally, a simple boot test of the powerpc pseries_le_defconfig kernel in qemu (with and without kvm enabled). Below is a summary of the state of the merge. I am currently merging 378 trees (counting Linus' and 106 trees of bug fix patches pending for the current merge release). Stats about the size of the tree over time can be seen at http://neuling.org/linux-next-size.html . Status of my local build tests will be at http://kisskb.ellerman.id.au/linux-next . If maintainers want to give advice about cross compilers/configs that work, we are always open to add more builds. Thanks to Randy Dunlap for doing many randconfig builds. And to Paul Gortmaker for triage and bug fixes. --=20 Cheers, Stephen Rothwell $ git checkout master $ git reset --hard stable Merging origin/master (4376e966ecb7 Merge tag 'perf-tools-fixes-for-v6.10-2= 024-07-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools) Merging fixes/fixes (2dde18cd1d8f Linux 6.5) Merging mm-hotfixes/mm-hotfixes-unstable (bd2e263b4fe4 filemap: replace pte= _offset_map() with pte_offset_map_nolock()) Applying: fixup for "mm: gup: stop abusing try_grab_folio" Merging vfs-brauner-fixes/vfs.fixes (0570730c1630 hfsplus: fix uninit-value= in copy_name) Merging fscrypt-current/for-current (4cece7649650 Linux 6.9-rc1) Merging fsverity-current/for-current (4cece7649650 Linux 6.9-rc1) Merging btrfs-fixes/next-fixes (f04a05bcdad5 Merge branch 'misc-6.10' into = next-fixes) Merging vfs-fixes/fixes (bba1f6758a9e lirc: rc_dev_get_from_fd(): fix file = leak) Merging erofs-fixes/fixes (9b32b063be10 erofs: ensure m_llen is reset to 0 = if metadata is invalid) Merging nfsd-fixes/nfsd-fixes (ac03629b1612 Revert "nfsd: fix oops when rea= ding pool_stats before server is started") Merging v9fs-fixes/fixes/next (1613e604df0c Linux 6.10-rc1) Merging overlayfs-fixes/ovl-fixes (77a28aa47687 ovl: relax WARN_ON in ovl_v= erify_area()) Merging fs-current (0b175af8aace Merge branch 'fixes' of git://git.kernel.o= rg/pub/scm/linux/kernel/git/viro/vfs.git) Merging kbuild-current/fixes (22a40d14b572 Linux 6.10-rc6) Merging arc-current/for-curr (e67572cd2204 Linux 6.9-rc6) Merging arm-current/fixes (0c66c6f4e21c ARM: 9359/1: flush: check if the fo= lio is reserved for no-mapping addresses) Merging arm64-fixes/for-next/fixes (ecc54006f158 arm64: Clear the initial I= D map correctly before remapping) Merging arm-soc-fixes/arm/fixes (f3a6a54104b8 MAINTAINERS: Move myself from= SPRD Maintainer to Reviewer) Merging davinci-current/davinci/for-current (6613476e225e Linux 6.8-rc1) Merging drivers-memory-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging sophgo-fixes/fixes (90f6cc7f8e07 riscv: dts: sophgo: disable write-= protection for milkv duo) Merging m68k-current/for-linus (ec8c8266373f m68k: defconfig: Update defcon= figs for v6.9-rc1) Merging powerpc-fixes/fixes (8b7f59de92ac selftests/powerpc: Fix build with= USERCFLAGS set) Merging s390-fixes/fixes (b3a58f3b90f5 s390/dasd: Fix invalid dereferencing= of indirect CCW data pointer) Merging net/main (83c36e7cfd74 docs: networking: devlink: capitalise length= value) Merging bpf/master (5f1d18de7918 selftests/bpf: Extend tcx tests to cover l= ate tcx_entry release) Merging ipsec/master (2d5317753e5f xfrm: Export symbol xfrm_dev_state_delet= e.) Merging netfilter/main (9f6958ba2e90 netfilter: nf_tables: unconditionally = flush pending work before notifier) Merging ipvs/main (9f6958ba2e90 netfilter: nf_tables: unconditionally flush= pending work before notifier) Merging wireless/for-next (4130c67cd123 wifi: iwlwifi: mvm: check vif for N= ULL/ERR_PTR before dereference) Merging wpan/master (b8ec0dc3845f net: mac802154: Fix racy device stats upd= ates by DEV_STATS_INC() and DEV_STATS_ADD()) Merging rdma-fixes/for-rc (f2661062f16b Linux 6.10-rc5) Merging sound-current/for-linus (6db03b1929e2 ALSA: hda/realtek: Limit mic = boost on VAIO PRO PX) Merging sound-asoc-fixes/for-linus (680e126ec040 firmware: cs_dsp: Use strn= len() on name fields in V1 wmfw files) Merging regmap-fixes/for-linus (76f19626bd35 regmap: add missing MODULE_DES= CRIPTION() macros) Merging regulator-fixes/for-linus (f2661062f16b Linux 6.10-rc5) Merging spi-fixes/for-linus (8221545c440b spi: omap2-mcspi: Revert multi mo= de support) Merging pci-current/for-linus (1613e604df0c Linux 6.10-rc1) Merging driver-core.current/driver-core-linus (6ba59ff42279 Linux 6.10-rc4) Merging tty.current/tty-linus (2ac33975abda serial: qcom-geni: do not kill = the machine on fifo underrun) Merging usb.current/usb-linus (6d3c721e686e usb: gadget: configfs: Prevent = OOB read/write in usb_string_copy()) Merging usb-serial-fixes/usb-linus (ae420771551b USB: serial: option: add R= olling RW350-GL variants) Merging phy/fixes (f2661062f16b Linux 6.10-rc5) Merging staging.current/staging-linus (22a40d14b572 Linux 6.10-rc6) Merging iio-fixes/fixes-togreg (1d7cfde11d49 staging: iio: frequency: ad983= 4: Validate frequency parameter value) Merging counter-current/counter-current (22a40d14b572 Linux 6.10-rc6) Merging char-misc.current/char-misc-linus (389637d4fb5f mei: vsc: Fix spell= ing error) Merging soundwire-fixes/fixes (f2661062f16b Linux 6.10-rc5) Merging thunderbolt-fixes/fixes (f2661062f16b Linux 6.10-rc5) Merging input-current/for-linus (7c7b1be19b22 Input: ads7846 - use spi_devi= ce_id table) Merging crypto-current/master (a5d8922ab2ae crypto: qat - fix linking error= s when PCI_IOV is disabled) Merging vfio-fixes/for-linus (d71a989cf5d9 vfio/pci: Insert full vma on mma= p'd MMIO fault) Merging kselftest-fixes/fixes (66cde337fa1b selftests/vDSO: remove duplicat= e compiler invocations from Makefile) Merging dmaengine-fixes/fixes (f2661062f16b Linux 6.10-rc5) Merging backlight-fixes/for-backlight-fixes (1613e604df0c Linux 6.10-rc1) Merging mtd-fixes/mtd/fixes (b27d8946b5ed mtd: rawnand: rockchip: ensure NV= DDR timings are rejected) Merging mfd-fixes/for-mfd-fixes (68f860426d50 mfd: axp20x: AXP717: Fix miss= ing IRQ status registers range) Merging v4l-dvb-fixes/fixes (fd404435d44b media: ivsc: Depend on IPU_BRIDGE= or not IPU_BRIDGE) Merging reset-fixes/reset/fixes (ab35896730a5 reset: hisilicon: hi6220: add= missing MODULE_DESCRIPTION() macro) Merging mips-fixes/mips-fixes (0d5679a0aae2 mips: fix compat_sys_lseek sysc= all) Merging at91-fixes/at91-fixes (1613e604df0c Linux 6.10-rc1) Merging omap-fixes/fixes (9b6a51aab5f5 ARM: dts: Fix occasional boot hang f= or am3 usb) Merging kvm-fixes/master (8ad209fc6448 Merge tag 'kvm-s390-master-6.10-1' o= f git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD) Merging kvms390-fixes/master (4c6abb7f7b34 KVM: s390: fix LPSWEY handling) Merging hwmon-fixes/hwmon (6ba59ff42279 Linux 6.10-rc4) Merging nvdimm-fixes/libnvdimm-fixes (33908660e814 ACPI: NFIT: Fix incorrec= t calculation of idt size) Merging cxl-fixes/fixes (a0f39d51dbf7 cxl: documentation: add missing files= to cxl driver-api) Merging dma-mapping-fixes/for-linus (75961ffb5cb3 swiotlb: initialise restr= icted pool list_head when SWIOTLB_DYNAMIC=3Dy) Merging drivers-x86-fixes/fixes (e527a6127223 platform/x86: toshiba_acpi: F= ix quickstart quirk handling) Merging samsung-krzk-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging pinctrl-samsung-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging devicetree-fixes/dt/linus (2cf6b7d15a28 of/irq: Disable "interrupt-= map" parsing for PASEMI Nemo) Merging dt-krzk-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging scsi-fixes/fixes (7a6bbc2829d4 scsi: sd: Do not repeat the starting= disk message) Merging drm-fixes/drm-fixes (256abd8e550c Linux 6.10-rc7) Merging drm-intel-fixes/for-linux-next-fixes (f72383371e8c drm/i915/display= : For MTL+ platforms skip mg dp programming) Merging mmc-fixes/fixes (ab069ce12596 mmc: sdhci: Do not lock spinlock arou= nd mmc_gpio_get_ro()) Merging rtc-fixes/rtc-fixes (1613e604df0c Linux 6.10-rc1) Merging gnss-fixes/gnss-linus (6ba59ff42279 Linux 6.10-rc4) Merging hyperv-fixes/hyperv-fixes (3b85a2eacd3d Documentation: hyperv: Add = overview of Confidential Computing VM support) Merging soc-fsl-fixes/fix (06c2afb862f9 Linux 6.5-rc1) Merging risc-v-fixes/fixes (c562ba719df5 riscv: kexec: Avoid deadlock in ke= xec crash path) Merging riscv-dt-fixes/riscv-dt-fixes (e21de658f8e8 MAINTAINERS: thead: upd= ate Maintainer) Merging riscv-soc-fixes/riscv-soc-fixes (1613e604df0c Linux 6.10-rc1) Merging fpga-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging spdx/spdx-linus (a3e18a540541 Merge tag 'xfs-6.10-fixes-3' of git:/= /git.kernel.org/pub/scm/fs/xfs/xfs-linux) Merging gpio-brgl-fixes/gpio/for-current (256abd8e550c Linux 6.10-rc7) Merging gpio-intel-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging pinctrl-intel-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging auxdisplay-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging kunit-fixes/kunit-fixes (1613e604df0c Linux 6.10-rc1) Merging memblock-fixes/fixes (8043832e2a12 memblock: use numa_valid_node() = helper to check for invalid node ID) Merging renesas-fixes/fixes (8c987693dc2d ARM: dts: renesas: rcar-gen2: Add= missing #interrupt-cells to DA9063 nodes) Merging perf-current/perf-tools (7b2450bb4027 perf dsos: When adding a dso = into sorted dsos maintain the sort order) Merging efi-fixes/urgent (46e27b9961d8 efi/arm64: Fix kmemleak false positi= ve in arm64_efi_rt_init()) Merging zstd-fixes/zstd-linus (77618db34645 zstd: Fix array-index-out-of-bo= unds UBSAN warning) Merging battery-fixes/fixes (d3911f1639e6 power: supply: rt5033: Bring back= i2c_set_clientdata) Merging uml-fixes/fixes (73a23d771033 um: harddog: fix modular build) Merging iommufd-fixes/for-rc (dd5a440a31fa Linux 6.9-rc7) Merging rust-fixes/rust-fixes (a126eca84435 rust: avoid unused import warni= ng in `rusttest`) Merging w1-fixes/fixes (1613e604df0c Linux 6.10-rc1) Merging pmdomain-fixes/fixes (c3f38fa61af7 Linux 6.10-rc2) Merging i2c-host-fixes/i2c/i2c-host-fixes (256abd8e550c Linux 6.10-rc7) Merging sparc-fixes/for-linus (6613476e225e Linux 6.8-rc1) Merging clk-fixes/clk-fixes (10f84de27bd0 Merge tag 'qcom-clk-fixes-for-6.1= 0' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into clk-f= ixes) Merging pwrseq-fixes/pwrseq/for-current (83a7eefedc9b Linux 6.10-rc3) Merging drm-misc-fixes/for-linux-next-fixes (91f9f4a37124 drm/bridge: adv75= 11: Fix Intermittent EDID failures) Merging mm-stable/mm-stable (44195d1eba82 docs: mm: add enable_soft_offline= sysctl) Merging mm-nonmm-stable/mm-nonmm-stable (0f3819e8c483 nilfs2: avoid undefin= ed behavior in nilfs_cnt32_ge macro) Merging mm/mm-everything (df73b40cb739 foo) CONFLICT (content): Merge conflict in mm/gup.c Merging kbuild/for-next (cd843d58ee1d kbuild: deb-pkg: use default string w= hen variable is unset or null) Merging clang-format/clang-format (5a205c6a9f79 clang-format: Update with v= 6.7-rc4's `for_each` macro list) Merging perf/perf-tools-next (608c3b1e612a perf install: Don't propagate su= bdir to Documentation submake) Merging compiler-attributes/compiler-attributes (2993eb7a8d34 Compiler Attr= ibutes: counted_by: fixup clang URL) Merging dma-mapping/for-next (82d71b53d7e7 Documentation/core-api: correct = reference to SWIOTLB_DYNAMIC) Merging asm-generic/master (f564176f4e4f riscv: convert to generic syscall = table) Merging arc/for-next (0bb80ecc33a8 Linux 6.6-rc1) Merging arm/for-next (b5e352609497 Merge branches 'clkdev', 'fixes' and 'mi= sc' into for-next) Merging arm64/for-next/core (8b288f7785c6 Merge branch 'for-next/misc' into= for-next/core) Merging arm-perf/for-next/perf (dc4c33f753ca perf: arm_pmuv3: Add support f= or Armv9.4 PMU instruction counter) Merging arm-soc/for-next (bf40ba18e3a4 soc: document merges) Merging amlogic/for-next (338c92a5d195 Merge branch 'v6.11/arm64-dt' into f= or-next) Merging asahi-soc/asahi-soc/for-next (ffc253263a13 Linux 6.6) Merging aspeed/for-next (73feb9cd46f1 ARM: dts: aspeed: System1: Updates to= BMC board) Merging at91/at91-next (1cdb1c9626a4 Merge branch 'at91-defconfig' into at9= 1-next) Merging broadcom/next (4caff16b6e00 Merge branch 'devicetree-arm64/next' in= to next) Merging davinci/davinci/for-next (6613476e225e Linux 6.8-rc1) Merging drivers-memory/for-next (815cc7715ab1 dt-bindings: memory: fsl: rep= lace maintainer) Merging imx-mxs/for-next (ffa7b132ee5f Merge branch 'imx/defconfig' into fo= r-next) Merging mediatek/for-next (1613e604df0c Linux 6.10-rc1) Merging mvebu/for-next (ffd0d7df6bdb Merge branch 'mvebu/dt64' into mvebu/f= or-next) Merging omap/for-next (5856330c3d56 Merge branch 'drivers-ti-sysc-for-v6.10= ' into for-next) Merging qcom/for-next (6fd4da15c334 Merge branches 'arm32-for-6.11', 'arm64= -defconfig-fixes-for-6.10', 'arm64-defconfig-for-6.11', 'arm64-fixes-for-6.= 10', 'arm64-for-6.11', 'clk-fixes-for-6.10', 'clk-for-6.11', 'drivers-fixes= -for-6.10' and 'drivers-for-6.11' into for-next) Merging renesas/next (5c91aa40e630 Merge branches 'renesas-arm-defconfig-fo= r-v6.11' and 'renesas-dts-for-v6.11' into renesas-next) Merging reset/reset/next (c1267e1afae6 arm64: dts: renesas: rz-smarc: Repla= ce fixed regulator for USB VBUS) Merging rockchip/for-next (d02701b77967 Merge branch 'v6.11-armsoc/dts64' i= nto for-next) Merging samsung-krzk/for-next (b305fd6840d1 Merge branch 'next/dt64' into f= or-next) Merging scmi/for-linux-next (eaaeef9e62f9 Merge tags 'scmi-updates-6.11', '= ffa-updates-6.11', 'vexpress-updates-6.11' and 'juno-updates-6.11' of ssh:/= /gitolite.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into for-l= inux-next) Merging sophgo/for-next (1613e604df0c Linux 6.10-rc1) Merging stm32/stm32-next (1eafc48af859 arm64: stm32: enable scmi regulator = for stm32) 1245911be805 ("ARM: multi_v7_defconfig: Add MCP23S08 pinctrl support") 2599b1f071f4 ("ARM: dts: stm32: Document output pins for PWMs on stm32mp1= 35f-dk") 32bc9d195039 ("ARM: dts: stm32: Add ethernet support for DH STM32MP13xx D= HCOR DHSBC board") 3389697affa5 ("arm64: dts: st: add HPDMA nodes on stm32mp251") 55dc557485c7 ("arm64: dts: st: add ethernet1 and ethernet2 support on stm= 32mp25") 5d6c1cef82a0 ("arm64: dts: st: describe power supplies for stm32mp257f-ev= 1 board") 9bcaeb10520a ("ARM: dts: stm32: add ethernet1 for STM32MP135F-DK board") a11b40677a34 ("regulator: Add STM32MP25 regulator bindings") a29ad03d8393 ("arm64: dts: st: add scmi regulators on stm32mp25") a43179fe3f09 ("arm64: dts: st: add eth2 pinctrl entries in stm32mp25-pinc= trl.dtsi") a4a0254811cc ("ARM: dts: stm32: omit unused pinctrl groups from stm32mp13= dtb files") a80ce2d743fb ("ARM: dts: stm32: add ethernet1 and ethernet2 support on st= m32mp13") ba3e48a76df3 ("ARM: dts: stm32: OP-TEE async notif interrupt for ST STM32= MP15x boards") c62c13b4efe4 ("ARM: dts: stm32: add ethernet1/2 RMII pins for STM32MP13F-= DK board") d41b45f29bc3 ("ARM: dts: stm32: order stm32mp13-pinctrl nodes") de2997982cf9 ("arm64: dts: st: enable Ethernet2 on stm32mp257f-ev1 board") Merging sunxi/sunxi/for-next (0682fbf17dd9 Merge branches 'sunxi/clk-fixes-= for-6.10', 'sunxi/drivers-for-6.11' and 'sunxi/dt-for-6.11' into sunxi/for-= next) Merging tee/next (cd88a296582c Merge branch 'optee_notif_wait_timeout_for_v= 6.11' into next) Merging tegra/for-next (5211d93c551f Merge branch for-6.11/arm64/defconfig = into for-next) Merging ti/ti-next (b6332e83c241 Merge branch 'ti-k3-dts-next' into ti-next) Merging xilinx/for-next (41aa58501753 Merge branch 'zynqmp/soc' into for-ne= xt) Merging clk/clk-next (0e3575a61335 Merge branch 'clk-mediatek' into clk-nex= t) Merging clk-imx/for-next (466da3d2d967 clk: imx: composite-7ulp: Use NULL i= nstead of 0) Merging clk-renesas/renesas-clk (c7e58843d1e4 clk: renesas: r9a08g045: Add = clock, reset and power domain support for I2C) Merging csky/linux-next (2c40c1c6adab Merge tag 'usb-6.7-rc1' of git://git.= kernel.org/pub/scm/linux/kernel/git/gregkh/usb) Merging loongarch/loongarch-next (58202cc8341a Merge branch 'loongarch-kvm'= into loongarch-next) CONFLICT (content): Merge conflict in arch/loongarch/include/uapi/asm/unist= d.h CONFLICT (content): Merge conflict in tools/perf/arch/loongarch/util/Build Merging m68k/for-next (75d3891ca19e m68k: defconfig: Update defconfigs for = v6.10-rc1) Merging m68knommu/for-next (256abd8e550c Linux 6.10-rc7) Merging microblaze/next (1613e604df0c Linux 6.10-rc1) Merging mips/mips-next (6fe920b4fc18 MAINTAINERS: Mobileye: add OLB drivers= and dt-bindings) Merging openrisc/for-next (4dc70e1aadfa openrisc: Move FPU state out of pt_= regs) Merging parisc-hd/for-next (2fd4e52e442c parisc: Use max() to calculate par= isc_tlb_flush_threshold) Merging powerpc/next (45547a0a93d8 powerpc/configs: Update defconfig with n= ow user-visible CONFIG_FSL_IFC) CONFLICT (content): Merge conflict in arch/powerpc/mm/nohash/Makefile Merging soc-fsl/next (fb9c384625dd bus: fsl-mc: fsl-mc-allocator: Drop a wr= ite-only variable) Merging risc-v/for-next (60a6707f582e Merge patch series "riscv: Memory Hot= (Un)Plug support") CONFLICT (content): Merge conflict in arch/riscv/kernel/patch.c Merging riscv-dt/riscv-dt-for-next (2904244a8c46 riscv: dts: starfive: add = PCIe dts configuration for JH7110) Merging riscv-soc/riscv-soc-for-next (c813ef3c5f6c MAINTAINERS: drop riscv = list from cache controllers) Merging s390/for-next (313a6dadfa35 Merge branch 'features' into for-next) Merging sh/for-next (1613e604df0c Linux 6.10-rc1) Merging sparc/for-next (1c9e709cde80 sparc/leon: Remove on-stack cpumask va= r) Merging uml/next (98ff534ec2cd um: vector: always reset vp->opened) Merging xtensa/xtensa-for-next (b7cf2a1d9881 xtensa: remove redundant flush= _dcache_page and ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE macros) Merging bcachefs/for-next (d6d793ae5589 bcachefs: Simplify btree key cache = fill path) CONFLICT (content): Merge conflict in fs/bcachefs/super.c [fs-next 58ec8d3c6da9] Merge branch 'for-next' of https://evilpiepirate.org= /git/bcachefs.git Merging pidfd/for-next (a901a3568fd2 Merge tag 'iomap-6.5-merge-1' of git:/= /git.kernel.org/pub/scm/fs/xfs/xfs-linux) Merging fscrypt/for-next (256abd8e550c Linux 6.10-rc7) Merging afs/afs-next (abcbd3bfbbfe afs: trace: Log afs_make_call(), includi= ng server address) Merging btrfs/for-next (871a1174fd0c Merge branch 'for-next-next-v6.10-2024= 0704' into for-next-20240704) Merging ceph/master (93a2221c9c1a doc: ceph: update userspace command to ge= t CephFS metadata) Merging cifs/for-next (256abd8e550c Linux 6.10-rc7) Merging configfs/for-next (4425c1d9b44d configfs: improve item creation per= formance) Merging dlm/next (89b01913dc73 dlm: add rcu_barrier before destroy kmem cac= he) Merging erofs/dev (2080ca1ed3e4 erofs: tidy up `struct z_erofs_bvec`) Merging exfat/dev (0daa52fbc7ac exfat: fix potential deadlock on __exfat_ge= t_dentry_set) Merging exportfs/exportfs-next (e8f897f4afef Linux 6.8) Merging ext3/for_next (85f22bb5d2c2 Merge UDF consistency fixes.) Merging ext4/dev (8262fe9a902c ext4: make ext4_da_map_blocks() buffer_head = unaware) Merging f2fs/dev (388a2a0640e1 f2fs: remove redundant sanity check in sanit= y_check_inode()) Merging fsverity/for-next (256abd8e550c Linux 6.10-rc7) Merging fuse/for-next (529395d2ae64 virtio-fs: add multi-queue support) Merging gfs2/for-next (5a1906a476bc gfs2: Revert "check for no eligible quo= ta changes") Merging jfs/jfs-next (d0fa70aca54c jfs: don't walk off the end of ealist) Merging ksmbd/ksmbd-for-next (e2e33caa5dc2 ksmbd: discard write access to t= he directory open) Merging nfs/linux-next (22a40d14b572 Linux 6.10-rc6) Merging nfs-anna/linux-next (b571cfcb9dca nfs: don't reuse partially comple= ted requests in nfs_lock_and_join_requests) Merging nfsd/nfsd-next (a3123341dc35 gss_krb5: Fix the error handling path = for crypto_sync_skcipher_setkey) Merging ntfs3/master (bde63e8eae5d fs/ntfs3: Fix formatting, change comment= s, renaming) Merging orangefs/for-next (53e4efa470d5 orangefs: fix out-of-bounds fsid ac= cess) Merging overlayfs/overlayfs-next (004b8d1491b4 ovl: fix encoding fid for lo= wer only root) Merging ubifs/next (af9a8730ddb6 jffs2: Fix potential illegal address acces= s in jffs2_free_inode) Merging v9fs/9p-next (2211561723a6 9p: Enable multipage folios) Merging v9fs-ericvh/ericvh/for-next (1613e604df0c Linux 6.10-rc1) Merging xfs/for-next (49cdc4e834e4 xfs: get rid of xfs_ag_resv_rmapbt_alloc) Merging zonefs/for-next (df2f9708ff1f zonefs: enable support for large foli= os) Merging iomap/iomap-for-next (3ac974796e5d iomap: fix short copy in iomap_w= rite_iter()) Merging djw-vfs/vfs-for-next (ce85a1e04645 xfs: stabilize fs summary counte= rs for online fsck) Merging file-locks/locks-next (e0152e7481c6 Merge tag 'riscv-for-linus-6.6-= mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux) Merging iversion/iversion-next (e0152e7481c6 Merge tag 'riscv-for-linus-6.6= -mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux) Merging vfs-brauner/vfs.all (5f30e082ab8b Merge branch 'vfs.iomap' into vfs= .all Signed-off-by: Christian Brauner ) CONFLICT (content): Merge conflict in fs/btrfs/inode.c [fs-next 2528528feafc] Merge branch 'vfs.all' of git://git.kernel.org/pub/s= cm/linux/kernel/git/vfs/vfs.git Merging vfs/for-next (a38297e3fb01 Linux 6.9) Merging fs-next (2528528feafc Merge branch 'vfs.all' of git://git.kernel.or= g/pub/scm/linux/kernel/git/vfs/vfs.git) CONFLICT (content): Merge conflict in arch/arm64/include/asm/unistd.h CONFLICT (content): Merge conflict in arch/arm64/include/asm/unistd32.h CONFLICT (content): Merge conflict in fs/nfs/internal.h Merging printk/for-next (07c2ab22a8da Merge branch 'for-6.11' into for-next) Merging pci/next (cc7fe8c237ed Merge branch 'controller/tegra194' into next) CONFLICT (content): Merge conflict in drivers/pci/pci.c Merging pstore/for-next/pstore (9b3c13c9ea4e pstore: platform: add missing = MODULE_DESCRIPTION() macro) Merging hid/for-next (3959f155ad59 Merge branch 'for-6.11/bpf' into for-nex= t) CONFLICT (content): Merge conflict in include/linux/hid_bpf.h Merging i2c/i2c/for-next (35dc6101fd9c Merge branch 'i2c/for-current' into = i2c/for-next) Merging i2c-host/i2c/i2c-host (fd6acb0d21b8 i2c: mt7621: Add Airoha EN7581 = i2c support) Merging i3c/i3c/next (145ca7b61e95 i3c: dw: Add optional apb clock) Merging dmi/dmi-for-next (4d1b28a8119c firmware: dmi: Add info message for = number of populated and total memory slots) Merging hwmon-staging/hwmon-next (4814241a5817 hwmon: (amc6821) Add support= for pwm1_mode attribute) Merging jc_docs/docs-next (60ca3e59cfc4 Merge branch 'docs-mw' into docs-ne= xt) Merging v4l-dvb/master (156922faabce media: atomisp: Switch to new Intel CP= U model defines) Merging v4l-dvb-next/master (5d5f67b3b23f media: atomisp: Fix spelling mist= akes in sh_css_sp.c) Merging pm/linux-next (bdf722ad7d75 Merge branch 'thermal-fixes' into linux= -next) Merging cpufreq-arm/cpufreq/arm/linux-next (0f5a2b9e1722 cpufreq: mediatek:= Use dev_err_probe in every error path in probe) Merging cpupower/cpupower (3a5bb5066f4c cpupower: fix lib default installat= ion path) Merging devfreq/devfreq-next (1d143dde7679 PM / devfreq: exynos: Use Use de= vm_clk_get_enabled() helpers) Merging pmdomain/next (cc647e931a24 pmdomain: amlogic: add missing MODULE_D= ESCRIPTION() macros) Merging opp/opp/linux-next (e3943f00afdb OPP: Introduce an OF helper functi= on to inform if required-opps is used) Merging thermal/thermal/linux-next (7eeb114a635a dt-bindings: thermal: conv= ert hisilicon-thermal.txt to dt-schema) Merging rdma/for-next (af48f95492dc RDMA/core: Introduce "name_assign_type"= for an IB device) Merging net-next/main (e0ee68a8bef9 selftests: net: ksft: interrupt cleanly= on KeyboardInterrupt) Merging bpf-next/for-next (90dc946059b7 selftests/bpf: DENYLIST.aarch64: Re= move fexit_sleep) CONFLICT (content): Merge conflict in arch/riscv/net/bpf_jit_comp64.c Applying: HID: bpf: Fix up build Merging ipsec-next/master (f531d13bdfe3 xfrm: support sending NAT keepalive= s in ESP in UDP states) Merging mlx5-next/mlx5-next (b339e0a39dc3 RDMA/mlx5: Add Qcounters req_tran= sport_retries_exceeded/req_rnr_retries_exceeded) Merging netfilter-next/main (ac26327635d6 Merge branch 'fixes-for-stm32-dwm= ac-driver-fails-to-probe') Merging ipvs-next/main (ac26327635d6 Merge branch 'fixes-for-stm32-dwmac-dr= iver-fails-to-probe') Merging bluetooth/master (41473738be53 Bluetooth: btintel: Add support for = Whale Peak2) CONFLICT (content): Merge conflict in net/bluetooth/hci_core.c Merging wireless-next/for-next (b3603133d3b7 wifi: mac80211_hwsim: fix warn= ing) Merging wpan-next/master (9187210eee7d Merge tag 'net-next-6.9' of git://gi= t.kernel.org/pub/scm/linux/kernel/git/netdev/net-next) Merging wpan-staging/staging (9187210eee7d Merge tag 'net-next-6.9' of git:= //git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next) Merging mtd/mtd/next (2538af030d6f mtd: cmdlinepart: Replace `dbg()` macro = with `pr_debug()`) Merging nand/nand/next (5f713030117a mtd: rawnand: lpx32xx: Fix dma_request= _chan() error checks) Merging spi-nor/spi-nor/next (d35df77707bf mtd: spi-nor: winbond: fix w25q1= 28 regression) Merging crypto/master (8323c036789b crypto: starfive - Fix nent assignment = in rsa dec) Merging drm/drm-next (62a05f4ae9c1 Merge tag 'drm-msm-next-2024-07-04' of h= ttps://gitlab.freedesktop.org/drm/msm into drm-next) CONFLICT (content): Merge conflict in drivers/gpu/drm/xe/xe_migrate.c Applying: Revert "drm/omap: Allow build with COMPILE_TEST=3Dy" Merging drm-exynos/for-linux-next (221009347844 drm/exynos/vidi: convert to= struct drm_edid) Merging drm-misc/for-linux-next (cb31c58e8c29 drm/fbdev-dma: Fix framebuffe= r mode for big endian devices) Merging amdgpu/drm-next (ee98fb71baa8 drm/amdgpu: set CP_HQD_PQ_DOORBELL_CO= NTROL.DOORBELL_MODE to 1) Merging drm-intel/for-linux-next (9fc97277eb2d drm/i915: Skip programming F= IA link enable bits for MTL+) Merging drm-tegra/for-next (2429b3c529da drm/tegra: Avoid potential 32-bit = integer overflow) Merging drm-msm/msm-next (fe34394ecdad dt-bindings: display/msm: dsi-contro= ller-main: Add SM7150) Merging drm-msm-lumag/msm-next-lumag (399af57ccca2 dt-bindings: display/msm= /gpu: fix the schema being not applied) Merging drm-xe/drm-xe-next (caaf1f44a6a2 drm/xe: Drop trace_xe_hw_fence_fre= e) Merging etnaviv/etnaviv/next (704d3d60fec4 drm/etnaviv: don't block schedul= er when GPU is still active) Merging fbdev/for-next (7ee6cfe6d9cf fbdev: omap2: Return clk_prepare_enabl= e to transfer the error) Merging regmap/for-next (3dc4236dc44d Merge remote-tracking branch 'regmap/= for-6.11' into regmap-next) Merging sound/for-next (fefbbdfb59d3 ALSA: seq: Add tempo base unit for MID= I2 Set Tempo messages) Merging ieee1394/for-next (9f349e8e532d Revert "firewire: ohci: use common = macro to interpret be32 data in le32 buffer") Merging sound-asoc/for-next (e0665761fd01 Merge remote-tracking branch 'aso= c/for-6.11' into asoc-next) Merging modules/modules-next (61842868de13 module: create weak dependecies) Merging input/next (5e91cef94426 Input: himax_hx83112b - add support for HX= 83100A) CONFLICT (content): Merge conflict in include/linux/interrupt.h Merging block/for-next (7f8851d381f7 Merge branch 'for-6.11/block' into for= -next) CONFLICT (content): Merge conflict in fs/stat.c CONFLICT (content): Merge conflict in include/linux/fs.h Merging device-mapper/for-next (b67a93868e50 dm-crypt: support for per-sect= or NVMe metadata) Merging libata/for-next (f97106b10d9a ata: ahci: Add debug print for extern= al port) Merging pcmcia/pcmcia-next (0630e3bc0e91 pcmcia: add missing MODULE_DESCRIP= TION() macros) Merging mmc/next (c17aecf85800 mmc: dw_mmc-bluefield: Add support for eMMC = HW reset) Merging mfd/for-mfd-next (75c3d85083ff dt-bindings: mfd: syscon: Add APM po= weroff mailbox) Merging backlight/for-backlight-next (b337cc3ce475 backlight: lm3509_bl: Fi= x early returns in for_each_child_of_node()) Merging battery/for-next (be6299c6e55e power: supply: sysfs: use power_supp= ly_property_is_writeable()) CONFLICT (content): Merge conflict in include/linux/leds.h Merging regulator/for-next (ef0b29e74496 regulator: dt-bindings: pca9450: M= ake interrupt optional) Merging security/next (aa99fe0d3b77 Automated merge of 'dev' into 'next') Merging apparmor/apparmor-next (3dd384108d53 apparmor: fix possible NULL po= inter dereference) Merging integrity/next-integrity (fbf06cee6087 ima: fix wrong zero-assignme= nt during securityfs dentry remove) Merging selinux/next (e123134b39dc selinux: Use 1UL for EBITMAP_BIT to matc= h maps type) Merging smack/next (e86cac0acdb1 smack: unix sockets: fix accept()ed socket= label) Merging tomoyo/master (b96342141183 rtnetlink: print rtnl_mutex holder/wait= er for debug purpose) Merging tpmdd/next (bb3bd6a6663c tpm_tis_spi: add missing attpm20p SPI devi= ce ID entry) Merging watchdog/master (22a40d14b572 Linux 6.10-rc6) Merging iommu/next (87b2e7792b68 Merge branches 'iommu/core', 'iommu/fwspec= -ops-removal', 'iommu/pci/ats', 'iommu/iommufd/attach-handles', 'iommu/iomm= ufd/paging-domain-alloc', 'iommu/allwinner/sun50i', 'iommu/amd/amd-vi', 'io= mmu/arm/smmu', 'iommu/intel/vt-d' and 'iommu/qualcomm/msm' into iommu/next) 40929e8e5449 ("dt-bindings: PCI: generic: Add ats-supported property") Merging audit/next (1613e604df0c Linux 6.10-rc1) Merging devicetree/for-next (011e6a719ead dt-bindings: soc: fsl: Add fsl,ls= 1028a-reset for reset syscon node) 0620bce64afa ("dt-bindings: riscv: cpus: add ref to interrupt-controller") 877097a2fab0 ("dt-bindings: interrupt-controller: convert marvell,mpic bi= nding to YAML") c7ce06684bf5 ("dt-bindings: interrupt-controller: riscv,cpu-intc: convert= to dtschema") CONFLICT (content): Merge conflict in scripts/Makefile.lib Merging dt-krzk/for-next (828f810f69f3 Merge branch 'next/dt64' into for-ne= xt) Merging mailbox/for-next (256abd8e550c Linux 6.10-rc7) Merging spi/for-next (ad02097d49dd Merge remote-tracking branch 'spi/for-6.= 11' into spi-next) Merging tip/master (aa9d8caba6e4 Merge timers/core into tip/master) CONFLICT (content): Merge conflict in arch/x86/include/asm/cpufeatures.h CONFLICT (content): Merge conflict in include/linux/cacheinfo.h Merging clockevents/timers/drivers/next (008addaf6139 clocksource/drivers/m= ips-gic-timer: Correct sched_clock width) Merging edac/edac-for-next (9a1c5fe0f0a8 Merge ras/edac-misc into for-next) Merging ftrace/for-next (5dfebf3c26dc Merge ring-buffer/for-next) CONFLICT (content): Merge conflict in arch/x86/entry/syscalls/syscall_64.tbl CONFLICT (content): Merge conflict in include/uapi/asm-generic/unistd.h Merging rcu/next (02219caa92b5 Merge branches 'doc.2024.06.06a', 'fixes.202= 4.07.04a', 'mb.2024.06.28a', 'nocb.2024.06.03a', 'rcu-tasks.2024.06.06a', '= rcutorture.2024.06.06a' and 'srcu.2024.06.18a' into HEAD) Merging paulmck/non-rcu/next (8122d6e11bd8 Merge branches 'cmpxchg.2024.07.= 04a', 'kcsan.2024.06.06a', 'lkmm.2024.06.06a', 'nolibc.2024.06.30a' and 'to= rture.2024.05.30b' into HEAD) Merging kvm/next (02b0d3b9d4dd Merge branch 'kvm-6.10-fixes' into HEAD) CONFLICT (content): Merge conflict in arch/x86/include/asm/sev-common.h Merging kvm-arm/next (4012664073a0 Merge branch kvm-arm64/misc into kvmarm/= next) Merging kvms390/next (7816e58967d0 kvm: s390: Reject memory region operatio= ns for ucontrol VMs) Merging kvm-ppc/topic/ppc-kvm (ca8dad041516 KVM: PPC: add missing MODULE_DE= SCRIPTION() macros) Merging kvm-riscv/riscv_kvm_next (e325618349cd RISC-V: KVM: Redirect AMO lo= ad/store access fault traps to guest) CONFLICT (content): Merge conflict in tools/perf/arch/riscv/util/Build Merging kvm-x86/next (771df9ffadb8 Merge branch 'static_calls') Merging xen-tip/linux-next (611ff1b1ae98 xen: privcmd: Fix possible access = to a freed kirqfd instance) Merging percpu/for-next (2d9ad81ef935 Merge branch 'for-6.8-fixes' into for= -next) Merging workqueues/for-next (fb7e4b92f44e Merge branch 'for-6.11' into for-= next) Merging sched-ext/for-next (6fbd643318a1 sched_ext/scx_qmap: Add an example= usage of DSQ iterator) Merging drivers-x86/for-next (4bf1ea3fc914 platform/x86: asus-wmi: support = the disable camera LED on F10 of Zenbook 2023) Merging chrome-platform/for-next (4baf1cc54433 power: supply: cros_charge-c= ontrol: Fix signedness bug in charge_behaviour_store()) CONFLICT (content): Merge conflict in MAINTAINERS Merging chrome-platform-firmware/for-firmware-next (fc2c1d716d4a firmware: = google: add missing MODULE_DESCRIPTION() macros) Merging hsi/for-next (f02cfe695047 HSI: ssi_protocol: Remove unused linux/g= pio.h) Merging leds-lj/for-leds-next (940b27161afc Revert "leds: led-core: Fix ref= count leak in of_led_get()") Merging ipmi/for-next (19a01155ddfe ipmi: Drop explicit initialization of s= truct i2c_device_id::driver_data to 0) Merging driver-core/driver-core-next (997197b58bf6 devres: Correct code sty= le for functions that return a pointer type) 573a39d05053 ("drm/mediatek: Convert to platform remove callback returnin= g void") CONFLICT (content): Merge conflict in drivers/fsi/fsi-occ.c CONFLICT (content): Merge conflict in drivers/reset/reset-meson-audio-arb.c Applying: net: ethernet: rtsn: Fix up for remove() coversion to return void Applying: drm: Fix up STM LVDS driver for void remove() conversion Applying: fix up for "platform: Make platform_driver::remove() return void" Merging usb/usb-next (179264157bba usb: dwc3: core: Check all ports when se= t phy suspend) Merging thunderbolt/next (49056c95df44 thunderbolt: debugfs: Use FIELD_GET(= )) Merging usb-serial/usb-next (df8c0b8a03e8 USB: serial: garmin_gps: use stru= ct_size() to allocate pkt) Merging tty/tty-next (17199dfccd4b Documentation: kernel-parameters: Add DE= VNAME:0.0 format for serial ports) CONFLICT (content): Merge conflict in drivers/tty/serial/imx.c Merging char-misc/char-misc-next (1ebab783647a Merge tag 'mhi-for-v6.11' of= ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mani/mhi into char-misc= -next) CONFLICT (content): Merge conflict in Documentation/devicetree/bindings/ven= dor-prefixes.yaml CONFLICT (content): Merge conflict in MAINTAINERS Merging accel/habanalabs-next (f03eee5fc922 Merge tag 'drm-xe-next-fixes-20= 24-05-02' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next) Merging coresight/next (2e5657aa5966 hwtracing: use for_each_endpoint_of_no= de()) Merging fastrpc/for-next (1613e604df0c Linux 6.10-rc1) Merging fpga/for-next (3a0fa8e97d30 fpga: altera-fpga2sdram: remove unused = struct 'prop_map') Merging icc/icc-next (226e58b20975 Merge branch 'icc-rpmh-qos' into icc-nex= t) Merging iio/togreg (1ebab783647a Merge tag 'mhi-for-v6.11' of ssh://gitolit= e.kernel.org/pub/scm/linux/kernel/git/mani/mhi into char-misc-next) Merging phy-next/next (2a011c3c12e8 phy: airoha: Add dtime and Rx AEQ IO re= gisters) CONFLICT (content): Merge conflict in include/linux/soc/samsung/exynos-regs= -pmu.h Merging soundwire/next (518aee32c551 drivers:soundwire: qcom: cleanup port = maask calculations) Merging extcon/extcon-next (e508f2606c0b extcon: Add LC824206XA microUSB sw= itch driver) Merging gnss/gnss-next (6ba59ff42279 Linux 6.10-rc4) Merging vfio/next (abe8103da3c5 vfio/pci: Fix typo in macro to declare acce= ssors) Merging w1/for-next (26bf5fc86033 w1: Drop allocation error message) Merging spmi/spmi-next (1613e604df0c Linux 6.10-rc1) Merging staging/staging-next (d3401cefd0f7 staging: nvec: Use x instead of = x !=3D NULL to improve readability.) Merging counter-next/counter-next (7b47e79eac4c Merge tag 'ib-mfd-counter-v= 5.11' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/lee/mfd into co= unter-next) Merging siox/siox/for-next (db418d5f1ca5 siox: bus-gpio: Simplify using dev= m_siox_* functions) Merging mux/for-next (44c026a73be8 Linux 6.4-rc3) Merging dmaengine/next (316d1225b112 dmaengine: fsl-dpaa2-qdma: add missing= MODULE_DESCRIPTION() macro) Merging cgroup/for-next (ecd36a3ae7ff Merge branch 'for-6.11' into for-next) Merging scsi/for-next (dbe36d249533 Merge branch 'fixes' into for-next) Merging scsi-mkp/for-next (6cd48c8f62ad Merge patch series "mpi3mr: Support= PCI Error Recovery") CONFLICT (content): Merge conflict in drivers/scsi/mpi3mr/mpi3mr_transport.c Merging vhost/linux-next (fd115d1b9140 net: virtio: unify code to init stat= s) CONFLICT (content): Merge conflict in drivers/net/virtio_net.c Merging rpmsg/for-next (d87dbfd31796 Merge branches 'hwspinlock-next', 'rpm= sg-next' and 'rproc-next' into for-next) Merging gpio/for-next (0bb80ecc33a8 Linux 6.6-rc1) Merging gpio-brgl/gpio/for-next (8060be2489f9 dt-bindings: gpio: vf610: All= ow gpio-line-names to be set) Merging gpio-intel/for-next (1613e604df0c Linux 6.10-rc1) Merging pinctrl/for-next (11eaac6e8e72 Merge tag 'renesas-pinctrl-for-v6.11= -tag3' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drive= rs into devel) Merging pinctrl-intel/for-next (1613e604df0c Linux 6.10-rc1) Merging pinctrl-renesas/renesas-pinctrl (2453e858e945 pinctrl: renesas: rzg= 2l: Support output enable on RZ/G2L) Merging pinctrl-samsung/for-next (707807f4c112 pinctrl: samsung: Use scope = based of_node_put() cleanups) Merging pwm/pwm/for-next (120a528213b6 pwm: Allow pwm state transitions fro= m an invalid state) Merging ktest/for-next (07283c1873a4 ktest: force $buildonly =3D 1 for 'mak= e_warnings_file' test type) Merging kselftest/next (483d0785e8bf selftests/timers: remove unused irqcou= nt variable) Merging kunit/test (1613e604df0c Linux 6.10-rc1) Merging kunit-next/kunit (67c9971cd6d3 kunit/usercopy: Add missing MODULE_D= ESCRIPTION()) Merging livepatching/for-next (9871e6af43db Merge branch 'for-6.11/sysfs-pa= tch-replace' into for-next) Merging rtc/rtc-next (a47d377e22c4 rtc: Drop explicit initialization of str= uct i2c_device_id::driver_data to 0) Merging nvdimm/libnvdimm-for-next (b0d478e34dbf testing: nvdimm: Add MODULE= _DESCRIPTION() macros) Merging at24/at24/for-next (3a9ba4e32230 dt-bindings: eeprom: at24: Add com= patible for ONSemi N24S64B) Merging ntb/ntb-next (9341b37ec17a ntb_perf: Fix printk format) Merging seccomp/for-next/seccomp (f0c508faea64 selftests/seccomp: check tha= t a zombie leader doesn't affect others) Merging fsi/next (c5eeb63edac9 fsi: Fix panic on scom file read) Merging slimbus/for-next (1613e604df0c Linux 6.10-rc1) Merging nvmem/for-next (1613e604df0c Linux 6.10-rc1) Merging xarray/main (2a15de80dd0f idr: fix param name in idr_alloc_cyclic()= doc) Merging hyperv/hyperv-next (f2580a907e5c x86/hyperv: Use Hyper-V entropy to= seed guest random number generator) Merging auxdisplay/for-next (2ccfe94bc3ac auxdisplay: ht16k33: Drop referen= ce after LED registration) Merging kgdb/kgdb/for-next (9bccbe7b2087 kdb: Get rid of redundant kdb_curr= _task()) Merging hmm/hmm (6613476e225e Linux 6.8-rc1) Merging cfi/cfi/next (06c2afb862f9 Linux 6.5-rc1) Merging mhi/mhi-next (65bc58c3dcad net: wwan: mhi: make default data link i= d configurable) Merging memblock/for-next (9364a7e40d54 memblock tests: fix implicit declar= ation of function 'numa_valid_node') CONFLICT (content): Merge conflict in mm/memblock.c Merging cxl/next (86588139b843 Documentation: CXL Maturity Map) Merging zstd/zstd-next (3f832dfb8a8e zstd: fix g_debuglevel export warning) Merging efi/next (ebf5a79acf9a x86/efistub: Drop redundant clearing of BSS) Merging unicode/for-next (68318904a775 unicode: add MODULE_DESCRIPTION() ma= cros) Merging slab/slab/for-next (fe4e761669ab Merge branch 'slab/for-6.11/bucket= s' into slab/for-next) Merging random/master (594a5586f022 selftests/vDSO: add tests for vgetrando= m) 14cd1a877fc6 ("selftests/vDSO: fix clang build errors and warnings") 7bb79ef48b9d ("selftests/vDSO: remove partially duplicated "all:" target = in Makefile") 868680ffba11 ("selftests/vDSO: remove duplicate compiler invocations from= Makefile") CONFLICT (content): Merge conflict in mm/rmap.c CONFLICT (content): Merge conflict in tools/testing/selftests/mm/Makefile CONFLICT (content): Merge conflict in tools/testing/selftests/vDSO/Makefile Merging landlock/next (395a02d04ed4 landlock: Use bit-fields for storing ha= ndled layer access masks) Merging rust/rust-next (fc6e66f4696b rust: add abstraction for `struct page= `) CONFLICT (content): Merge conflict in rust/bindings/bindings_helper.h Merging sysctl/sysctl-next (acc154691fc7 sysctl: Warn on an empty procname = element) Merging execve/for-next/execve (2a97388a807b ELF: fix kernel.randomize_va_s= pace double read) Merging bitmap/bitmap-for-next (e0eeb938adb0 bitops: Add a comment explaini= ng the double underscore macros) CONFLICT (content): Merge conflict in include/linux/cpumask.h Merging hte/for-next (9e4259716f60 hte: tegra-194: add missing MODULE_DESCR= IPTION() macro) Merging kspp/for-next/kspp (70570167588d Merge branch 'for-next/hardening' = into for-next/kspp) CONFLICT (content): Merge conflict in kernel/kallsyms.c Merging kspp-gustavo/for-next/kspp (6613476e225e Linux 6.8-rc1) Merging nolibc/nolibc (1613e604df0c Linux 6.10-rc1) Merging tsm/tsm-next (f4738f56d1dc virt: tdx-guest: Add Quote generation su= pport using TSM_REPORTS) Merging iommufd/for-next (53e6b65693b6 iommufd/iova_bitmap: Remove iterator= logic) Merging turbostat/next (eff04be3f4aa tools/power turbostat: Extend --add op= tion with perf counters) Merging pwrseq/pwrseq/for-next (50b040ef3732 PCI/pwrctl: only call of_platf= orm_populate() if CONFIG_OF is enabled) CONFLICT (add/add): Merge conflict in drivers/power/sequencing/core.c Merging header_cleanup/header_cleanup (5f4c01f1e3c7 spinlock: Fix failing b= uild for PREEMPT_RT) Applying: Revert "mul_u64_u64_div_u64: make it precise always" Applying: Revert "mul_u64_u64_div_u64: basic sanity test" --Sig_/ZUvFGGfEGWix86qdtNCRjzh Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmaNAeoACgkQAVBC80lX 0Gz5/AgAgleYcuY9o7Mz7lxBIba76PK4jRc+gkXVMmH35NvGqNBPgTZKT/ZxxvDX 565UNDgDIbXbU72ZOXp14HtKT8qfJzxu+Be8GG9pUUFeDcnQeTJfI2IikO08GXHl U0E7I3Uwjs3zOXWvD3VK0OnzgaTSvbc4j9/vlmI9GZwft46QqL3Vdio5+wSjBz/4 KHK8RJx79jNFCmXOW2vOzuSsqtf/uCNfDls+QPaQcEIq5FvUyxAtQqdLMfW7Vd7Y EOtQPgjZ7SxCxG4E3LrsoHN8mmlgJCvbuUMOUUjfWl4z0kPLn87AVq7xJ+2kFzgx p9WqmFNTfTUqdbcRCD9HKdaK3oRN/Q== =exiU -----END PGP SIGNATURE----- --Sig_/ZUvFGGfEGWix86qdtNCRjzh-- . Message-ID: From: Yangyu Chen To: iommu@lists.linux.dev Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Marek Szyprowski , Robin Murphy , Yangyu Chen Subject: [PATCH -fixes] dma-mapping: add default implementation to arch_dma_{set|clear}_uncached Date: Tue, 9 Jul 2024 17:25:29 +0800 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271786 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Currently, we have some code in kernel/dma/direct.c which references arch_dma_set_uncached and arch_dma_clear_uncached. However, many architectures do not provide these symbols, and the code currently relies on compiler optimization to cut the unnecessary code. When the compiler fails to optimize it, the code will reference the symbol and cause a link error. I found this bug when developing some new extensions for RISC-V on LLVM. The error message is shown below: ``` LD .tmp_vmlinux.kallsyms1 ld.lld: error: undefined symbol: arch_dma_set_uncached >>> referenced by direct.c >>> kernel/dma/direct.o:(dma_direct_alloc) in archive vmlinux.a make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1 ``` This patch adds default implementations for arch_dma_set_uncached and arch_dma_clear_uncached in include/linux/dma-map-ops.h. So that the code in kernel/dma/direct.c can always reference these symbols to avoid link errors. Signed-off-by: Yangyu Chen --- include/linux/dma-map-ops.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index 02a1c825896b..92a713557859 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -420,8 +420,22 @@ static inline void arch_dma_mark_clean(phys_addr_t paddr, size_t size) } #endif /* ARCH_HAS_DMA_MARK_CLEAN */ +#ifdef CONFIG_ARCH_HAS_DMA_SET_UNCACHED void *arch_dma_set_uncached(void *addr, size_t size); +#else +static inline void *arch_dma_set_uncached(void *addr, size_t size) +{ + return ERR_PTR(-EINVAL); +} +#endif /* CONFIG_ARCH_HAS_DMA_SET_UNCACHED */ + +#ifdef CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED void arch_dma_clear_uncached(void *addr, size_t size); +#else +static inline void arch_dma_clear_uncached(void *addr, size_t size) +{ +} +#endif /* CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED */ #ifdef CONFIG_ARCH_HAS_DMA_MAP_DIRECT bool arch_dma_map_page_direct(struct device *dev, phys_addr_t addr); -- 2.45.2 . From: Ma Ke To: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, daniel.vetter@ffwll.ch, sam@ravnborg.org, noralf@tronnes.org, akpm@linux-foundation.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH v2] drm/client: fix null pointer dereference in drm_client_modeset_probe Date: Tue, 9 Jul 2024 17:26:26 +0800 Message-Id: <20240709092626.3253492-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271787 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In drm_client_modeset_probe(), the return value of drm_mode_duplicate() is assigned to modeset->mode, which will lead to a possible NULL pointer dereference on failure of drm_mode_duplicate(). Add a check to avoid npd. Cc: stable@vger.kernel.org Fixes: cf13909aee05 ("drm/fb-helper: Move out modeset config code") Signed-off-by: Ma Ke --- Changes in v2: - added the recipient's email address, due to the prolonged absence of a response from the recipients. - added Cc stable. --- drivers/gpu/drm/drm_client_modeset.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c index 31af5cf37a09..cca37b225385 100644 --- a/drivers/gpu/drm/drm_client_modeset.c +++ b/drivers/gpu/drm/drm_client_modeset.c @@ -880,6 +880,9 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, kfree(modeset->mode); modeset->mode = drm_mode_duplicate(dev, mode); + if (!modeset->mode) + continue; + drm_connector_get(connector); modeset->connectors[modeset->num_connectors++] = connector; modeset->x = offset->x; -- 2.25.1 . From: hexue To: axboe@kernel.dk Cc: asml.silence@gmail.com, io-uring@vger.kernel.org, linux-kernel@vger.kernel.org, hexue Subject: [PATCH v6 RESEND] io_uring: releasing CPU resources when polling Date: Tue, 9 Jul 2024 17:29:44 +0800 Message-Id: <20240709092944.3208051-1-xue01.he@samsung.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="utf-8" References: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271791 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.io-uring Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail io_uring use polling mode could improve the IO performence, but it will spend 100% of CPU resources to do polling. This set a signal "IORING_SETUP_HY_POLL" to application, aim to provide a interface for user to enable a new hybrid polling at io_uring level. A new hybrid poll is implemented on the io_uring layer. Once IO issued, it will not polling immediately, but block first and re-run before IO complete, then poll to reap IO. This poll function could be a suboptimal solution when running on a single thread, it offers the performance lower than regular polling but higher than IRQ, and CPU utilization is also lower than polling. Test Result fio-3.35, Gen 4 device ------------------------------------------------------------------------------------- Performance ------------------------------------------------------------------------------------- write read randwrite randread regular poll BW=3939MiB/s BW=6596MiB/s IOPS=190K IOPS=526K IRQ BW=3927MiB/s BW=6567MiB/s IOPS=181K IOPS=216K hybrid poll BW=3933MiB/s BW=6600MiB/s IOPS=190K IOPS=390K(suboptimal) ------------------------------------------------------------------------------------- CPU Utilization ------------------------------------------------------------------------------------- write read randwrite randread regular poll 100% 100% 100% 100% IRQ 38% 53% 100% 100% hybrid poll 76% 32% 70% 85% ------------------------------------------------------------------------------------- -- changes since v5: - Remove cstime recorder - Use minimize sleep time in different drivers - Use the half of whole runtime to do schedule - Consider as a suboptimal solution between regular poll and IRQ changes since v4: - Rewrote the commit - Update the test results - Reorganized the code basd on 6.11 changes since v3: - Simplified the commit - Add some comments on code changes since v2: - Modified some formatting errors - Move judgement to poll path changes since v1: - Extend hybrid poll to async polled io Signed-off-by: hexue --- include/linux/io_uring_types.h | 6 +++ include/uapi/linux/io_uring.h | 1 + io_uring/io_uring.c | 3 +- io_uring/rw.c | 74 +++++++++++++++++++++++++++++++++- 4 files changed, 82 insertions(+), 2 deletions(-) diff --git a/include/linux/io_uring_types.h b/include/linux/io_uring_types.h index 91224bbcfa73..0897126fb2d7 100644 --- a/include/linux/io_uring_types.h +++ b/include/linux/io_uring_types.h @@ -428,6 +428,8 @@ struct io_ring_ctx { unsigned short n_sqe_pages; struct page **ring_pages; struct page **sqe_pages; + /* for hybrid poll*/ + u64 available_time; }; struct io_tw_state { @@ -665,6 +667,10 @@ struct io_kiocb { u64 extra1; u64 extra2; } big_cqe; + /* for hybrid iopoll */ + bool poll_state; + u64 iopoll_start; + u64 iopoll_end; }; struct io_overflow_cqe { diff --git a/include/uapi/linux/io_uring.h b/include/uapi/linux/io_uring.h index 994bf7af0efe..ef32ec319d1f 100644 --- a/include/uapi/linux/io_uring.h +++ b/include/uapi/linux/io_uring.h @@ -199,6 +199,7 @@ enum io_uring_sqe_flags_bit { * Removes indirection through the SQ index array. */ #define IORING_SETUP_NO_SQARRAY (1U << 16) +#define IORING_SETUP_HY_POLL (1U << 17) enum io_uring_op { IORING_OP_NOP, diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 816e93e7f949..b38f8af118c5 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -299,6 +299,7 @@ static __cold struct io_ring_ctx *io_ring_ctx_alloc(struct io_uring_params *p) goto err; ctx->flags = p->flags; + ctx->available_time = LLONG_MAX; atomic_set(&ctx->cq_wait_nr, IO_CQ_WAKE_INIT); init_waitqueue_head(&ctx->sqo_sq_wait); INIT_LIST_HEAD(&ctx->sqd_list); @@ -3637,7 +3638,7 @@ static long io_uring_setup(u32 entries, struct io_uring_params __user *params) IORING_SETUP_SQE128 | IORING_SETUP_CQE32 | IORING_SETUP_SINGLE_ISSUER | IORING_SETUP_DEFER_TASKRUN | IORING_SETUP_NO_MMAP | IORING_SETUP_REGISTERED_FD_ONLY | - IORING_SETUP_NO_SQARRAY)) + IORING_SETUP_NO_SQARRAY | IORING_SETUP_HY_POLL)) return -EINVAL; return io_uring_create(entries, &p, params); diff --git a/io_uring/rw.c b/io_uring/rw.c index 1a2128459cb4..5505f4292ce5 100644 --- a/io_uring/rw.c +++ b/io_uring/rw.c @@ -772,6 +772,13 @@ static bool need_complete_io(struct io_kiocb *req) S_ISBLK(file_inode(req->file)->i_mode); } +static void init_hybrid_poll(struct io_ring_ctx *ctx, struct io_kiocb *req) +{ + /* make sure every req only block once*/ + req->poll_state = false; + req->iopoll_start = ktime_get_ns(); +} + static int io_rw_init_file(struct io_kiocb *req, fmode_t mode) { struct io_rw *rw = io_kiocb_to_cmd(req, struct io_rw); @@ -809,6 +816,8 @@ static int io_rw_init_file(struct io_kiocb *req, fmode_t mode) kiocb->ki_flags |= IOCB_HIPRI; kiocb->ki_complete = io_complete_rw_iopoll; req->iopoll_completed = 0; + if (ctx->flags & IORING_SETUP_HY_POLL) + init_hybrid_poll(ctx, req); } else { if (kiocb->ki_flags & IOCB_HIPRI) return -EINVAL; @@ -1106,6 +1115,67 @@ void io_rw_fail(struct io_kiocb *req) io_req_set_res(req, res, req->cqe.flags); } +static u64 io_delay(struct io_ring_ctx *ctx, struct io_kiocb *req) +{ + struct hrtimer_sleeper timer; + enum hrtimer_mode mode; + ktime_t kt; + u64 sleep_time; + + if (req->poll_state) + return 0; + + if (ctx->available_time == LLONG_MAX) + return 0; + + /* Using half running time to do schedul */ + sleep_time = ctx->available_time / 2; + + kt = ktime_set(0, sleep_time); + req->poll_state = true; + + mode = HRTIMER_MODE_REL; + hrtimer_init_sleeper_on_stack(&timer, CLOCK_MONOTONIC, mode); + hrtimer_set_expires(&timer.timer, kt); + set_current_state(TASK_INTERRUPTIBLE); + hrtimer_sleeper_start_expires(&timer, mode); + + if (timer.task) + io_schedule(); + + hrtimer_cancel(&timer.timer); + __set_current_state(TASK_RUNNING); + destroy_hrtimer_on_stack(&timer.timer); + + return sleep_time; +} + +static int io_uring_hybrid_poll(struct io_kiocb *req, + struct io_comp_batch *iob, unsigned int poll_flags) +{ + struct io_rw *rw = io_kiocb_to_cmd(req, struct io_rw); + struct io_ring_ctx *ctx = req->ctx; + int ret; + u64 runtime, sleep_time; + + sleep_time = io_delay(ctx, req); + + /* it doesn't implement with io_uring passthrough now */ + ret = req->file->f_op->iopoll(&rw->kiocb, iob, poll_flags); + + req->iopoll_end = ktime_get_ns(); + runtime = req->iopoll_end - req->iopoll_start - sleep_time; + if (runtime < 0) + return 0; + + /* use minimize sleep time if there are different speed + * drivers, it could get more completions from fast one + */ + if (ctx->available_time > runtime) + ctx->available_time = runtime; + return ret; +} + int io_do_iopoll(struct io_ring_ctx *ctx, bool force_nonspin) { struct io_wq_work_node *pos, *start, *prev; @@ -1133,7 +1203,9 @@ int io_do_iopoll(struct io_ring_ctx *ctx, bool force_nonspin) if (READ_ONCE(req->iopoll_completed)) break; - if (req->opcode == IORING_OP_URING_CMD) { + if (ctx->flags & IORING_SETUP_HY_POLL) { + ret = io_uring_hybrid_poll(req, &iob, poll_flags); + } else if (req->opcode == IORING_OP_URING_CMD) { struct io_uring_cmd *ioucmd; ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd); -- 2.40.1 . From: Xianwei Zhao via B4 Relay Date: Tue, 09 Jul 2024 17:32:03 +0800 Subject: [PATCH v2] arm64: dts: amlogic: enable some device nodes for S4 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240709-s4_node-v2-1-b9a218603c31@amlogic.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Xianwei Zhao X-Original-From: Xianwei Zhao Reply-To: xianwei.zhao@amlogic.com Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271792 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-amlogic,org.infradead.lists.linux-arm-kernel,org.kernel.feeds.b4-sent,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Xianwei Zhao Enable more device nodes for AQ222 base S4, including SD, regulator and ethnernet node. Reviewed-by: Neil Armstrong Signed-off-by: Xianwei Zhao --- Add more device nodes for S4. --- Changes in v2: - Delete status of regulator-vddcpu node, use default status OK. - Link to v1: https://lore.kernel.org/r/20240705-s4_node-v1-1-646ca7ac4f09@amlogic.com --- .../boot/dts/amlogic/meson-s4-s805x2-aq222.dts | 145 +++++++++++++++++++++ arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 128 ++++++++++++++++++ 2 files changed, 273 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq222.dts b/arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq222.dts index 983caddc409c..6730c44642d2 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq222.dts +++ b/arch/arm64/boot/dts/amlogic/meson-s4-s805x2-aq222.dts @@ -34,6 +34,111 @@ secmon_reserved: secmon@5000000 { no-map; }; }; + + sdio_32k: sdio-32k { + compatible = "pwm-clock"; + #clock-cells = <0>; + clock-frequency = <32768>; + pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ + }; + + sdio_pwrseq: sdio-pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; + clocks = <&sdio_32k>; + clock-names = "ext_clock"; + }; + + main_12v: regulator-main-12v { + compatible = "regulator-fixed"; + regulator-name = "12V"; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + regulator-always-on; + }; + + vddao_3v3: regulator-vddao-3v3 { + compatible = "regulator-fixed"; + regulator-name = "VDDAO_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + vin-supply = <&main_12v>; + regulator-always-on; + }; + + vddio_ao1v8: regulator-vddio-ao1v8 { + compatible = "regulator-fixed"; + regulator-name = "VDDIO_AO1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + vin-supply = <&vddao_3v3>; + regulator-always-on; + }; + + /* SY8120B1ABC DC/DC Regulator. */ + vddcpu: regulator-vddcpu { + compatible = "pwm-regulator"; + + regulator-name = "VDDCPU"; + regulator-min-microvolt = <689000>; + regulator-max-microvolt = <1049000>; + + vin-supply = <&main_12v>; + + pwms = <&pwm_ij 1 1500 0>; + pwm-dutycycle-range = <100 0>; + + regulator-boot-on; + regulator-always-on; + /* Voltage Duty-Cycle */ + voltage-table = <1049000 0>, + <1039000 3>, + <1029000 6>, + <1019000 9>, + <1009000 12>, + <999000 14>, + <989000 17>, + <979000 20>, + <969000 23>, + <959000 26>, + <949000 29>, + <939000 31>, + <929000 34>, + <919000 37>, + <909000 40>, + <899000 43>, + <889000 45>, + <879000 48>, + <869000 51>, + <859000 54>, + <849000 56>, + <839000 59>, + <829000 62>, + <819000 65>, + <809000 68>, + <799000 70>, + <789000 73>, + <779000 76>, + <769000 79>, + <759000 81>, + <749000 84>, + <739000 87>, + <729000 89>, + <719000 92>, + <709000 95>, + <699000 98>, + <689000 100>; + }; +}; + +&pwm_ef { + status = "okay"; + pinctrl-0 = <&pwm_e_pins1>; + pinctrl-names = "default"; +}; + +&pwm_ij { + status = "okay"; }; &uart_b { @@ -46,6 +151,40 @@ &ir { pinctrl-names = "default"; }; +&sdio { + pinctrl-0 = <&sdio_pins>; + pinctrl-1 = <&sdio_clk_gate_pins>; + pinctrl-names = "default", "clk-gate"; + #address-cells = <1>; + #size-cells = <0>; + bus-width = <4>; + cap-sd-highspeed; + sd-uhs-sdr50; + sd-uhs-sdr104; + max-frequency = <200000000>; + non-removable; + disable-wp; + no-sd; + no-mmc; + vmmc-supply = <&vddao_3v3>; + vqmmc-supply = <&vddio_ao1v8>; +}; + +&sd { + status = "okay"; + pinctrl-0 = <&sdcard_pins>; + pinctrl-1 = <&sdcard_clk_gate_pins>; + pinctrl-names = "default", "clk-gate"; + bus-width = <4>; + cap-sd-highspeed; + max-frequency = <200000000>; + disable-wp; + + cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; + vmmc-supply = <&vddao_3v3>; + vqmmc-supply = <&vddao_3v3>; +}; + &nand { status = "okay"; #address-cells = <1>; @@ -90,3 +229,9 @@ &spicc0 { pinctrl-0 = <&spicc0_pins_x>; cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>; }; + +ðmac { + status = "okay"; + phy-handle = <&internal_ephy>; + phy-mode = "rmii"; +}; diff --git a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi index b686eacb9662..c11c947fa18c 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi @@ -10,6 +10,7 @@ #include #include #include +#include / { cpus { @@ -466,6 +467,93 @@ mux { }; }; + sdcard_pins: sdcard-pins { + mux { + groups = "sdcard_d0_c", + "sdcard_d1_c", + "sdcard_d2_c", + "sdcard_d3_c", + "sdcard_clk_c", + "sdcard_cmd_c"; + function = "sdcard"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + sdcard_clk_gate_pins: sdcard-clk-gate-pins { + mux { + groups = "GPIOC_4"; + function = "gpio_periphs"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + emmc_pins: emmc-pins { + mux-0 { + groups = "emmc_nand_d0", + "emmc_nand_d1", + "emmc_nand_d2", + "emmc_nand_d3", + "emmc_nand_d4", + "emmc_nand_d5", + "emmc_nand_d6", + "emmc_nand_d7", + "emmc_cmd"; + function = "emmc"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + mux-1 { + groups = "emmc_clk"; + function = "emmc"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + emmc_ds_pins: emmc-ds-pins { + mux { + groups = "emmc_nand_ds"; + function = "emmc"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + emmc_clk_gate_pins: emmc-clk-gate-pins { + mux { + groups = "GPIOB_8"; + function = "gpio_periphs"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + + sdio_pins: sdio-pins { + mux { + groups = "sdio_d0", + "sdio_d1", + "sdio_d2", + "sdio_d3", + "sdio_clk", + "sdio_cmd"; + function = "sdio"; + bias-pull-up; + drive-strength-microamp = <4000>; + }; + }; + + sdio_clk_gate_pins: sdio-clk-gate-pins { + mux { + groups = "GPIOX_4"; + function = "gpio_periphs"; + bias-pull-down; + drive-strength-microamp = <4000>; + }; + }; + spicc0_pins_x: spicc0-pins_x { mux { groups = "spi_a_mosi_x", @@ -712,5 +800,45 @@ mdio0: mdio { compatible = "snps,dwmac-mdio"; }; }; + + sdio: mmc@fe088000 { + compatible = "amlogic,meson-axg-mmc"; + reg = <0x0 0xfe088000 0x0 0x800>; + interrupts = ; + clocks = <&clkc_periphs CLKID_SDEMMC_A>, + <&xtal>, + <&clkc_pll CLKID_FCLK_DIV2>; + clock-names = "core", "clkin0", "clkin1"; + resets = <&reset RESET_SD_EMMC_A>; + cap-sdio-irq; + keep-power-in-suspend; + status = "disabled"; + }; + + sd: mmc@fe08a000 { + compatible = "amlogic,meson-axg-mmc"; + reg = <0x0 0xfe08a000 0x0 0x800>; + interrupts = ; + clocks = <&clkc_periphs CLKID_SDEMMC_B>, + <&clkc_periphs CLKID_SD_EMMC_B>, + <&clkc_pll CLKID_FCLK_DIV2>; + clock-names = "core", "clkin0", "clkin1"; + resets = <&reset RESET_SD_EMMC_B>; + status = "disabled"; + }; + + emmc: mmc@fe08c000 { + compatible = "amlogic,meson-axg-mmc"; + reg = <0x0 0xfe08c000 0x0 0x800>; + interrupts = ; + clocks = <&clkc_periphs CLKID_NAND>, + <&xtal>, + <&clkc_pll CLKID_FCLK_DIV2>; + clock-names = "core", "clkin0", "clkin1"; + resets = <&reset RESET_NAND_EMMC>; + no-sdio; + no-sd; + status = "disabled"; + }; }; }; --- base-commit: 338c92a5d1956f1841f84b86923087676d1d0cea change-id: 20240705-s4_node-8110e3286c0c Best regards, -- Xianwei Zhao . From: Gergo Koteles To: Hans de Goede , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Ike Panhc Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, Gergo Koteles Subject: [PATCH 0/4] platform/x86: ideapad-laptop: synchronize VPC commands Date: Tue, 9 Jul 2024 11:33:04 +0200 Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Mime-Autoconverted: from 8bit to 7bit by courier 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271796 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.platform-driver-x86 Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi, Sometimes the Yoga mode control switch did not work properly on my laptop, and sometimes even caused a platform profile switch. It turned out that it was caused by a race situation, the lenovo-ymc wmi notify handler was running at the same time as the ideapad-laptop acpi notify handler, and the partial results of the VPC calls in the two were mixed up. This series introduces a mutex and reorganizes the code a bit to eliminate this. Best regards, Gergo Koteles Gergo Koteles (4): platform/x86: ideapad-laptop: use cleanup.h platform/x86: ideapad-laptop: add a mutex to synchronize VPC commands platform/x86: ideapad-laptop: move ymc_trigger_ec from lenovo-ymc platform/x86: ideapad-laptop: move ACPI helpers from header to source file drivers/platform/x86/Kconfig | 1 + drivers/platform/x86/ideapad-laptop.c | 284 +++++++++++++++++++++----- drivers/platform/x86/ideapad-laptop.h | 140 +------------ drivers/platform/x86/lenovo-ymc.c | 34 +-- 4 files changed, 235 insertions(+), 224 deletions(-) -- 2.45.2 . From: Jiapeng Chong To: James.Bottomley@HansenPartnership.com Cc: martin.petersen@oracle.com, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Jiapeng Chong , stable@vger.kernel.org, Abaci Robot Subject: [PATCH -next v3] scsi: sd: Fix an incorrect type in 'sd_spinup_disk()' Date: Tue, 9 Jul 2024 17:39:48 +0800 Message-Id: <20240709093948.9617-1-jiapeng.chong@linux.alibaba.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271802 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The return value from the call to scsi_execute_cmd() is int. In the 'else if' branch of the function scsi_execute_cmd, it will return -EINVAL. But the type of "the_result" is "unsigned int", causing the error code to reverse. Modify the type of "the_result" to solve this problem. The code featuring the_result as the return value of the function scsi_execute_cmd is as follows: the_result = scsi_execute_cmd(sdkp->device, cmd, REQ_OP_DRV_IN, NULL, 0, SD_TIMEOUT, sdkp->max_retries, &exec_args); if (the_result > 0) { ... } ./drivers/scsi/sd.c:2333:6-16: WARNING: Unsigned expression compared with zero: the_result > 0. Fixes: c1acf38cd11e ("scsi: sd: Have midlayer retry sd_spinup_disk() errors") Cc: stable@vger.kernel.org Reported-by: Abaci Robot Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=9463 Signed-off-by: Jiapeng Chong --- Changes in v3: -Amend the commit message, Add "Fixes:" and "Cc: stable" tags. drivers/scsi/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 979795dad62b..ade8c6cca295 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -2396,7 +2396,7 @@ sd_spinup_disk(struct scsi_disk *sdkp) static const u8 cmd[10] = { TEST_UNIT_READY }; unsigned long spintime_expire = 0; int spintime, sense_valid = 0; - unsigned int the_result; + int the_result; struct scsi_sense_hdr sshdr; struct scsi_failure failure_defs[] = { /* Do not retry Medium Not Present */ -- 2.20.1.7.g153144c . From: Gao Xiang To: linux-erofs@lists.ozlabs.org Cc: LKML , Gao Xiang Subject: [PATCH 1/3] erofs: move each decompressor to its own source file Date: Tue, 9 Jul 2024 17:41:04 +0800 Message-ID: <20240709094106.3018109-1-hsiangkao@linux.alibaba.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271804 Newsgroups: org.kernel.vger.linux-kernel,org.ozlabs.lists.linux-erofs Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Thus *_config() function declarations can be avoided. Signed-off-by: Gao Xiang --- fs/erofs/compress.h | 20 +++++------------- fs/erofs/decompressor.c | 36 ++++++++++----------------------- fs/erofs/decompressor_deflate.c | 12 ++++++++--- fs/erofs/decompressor_lzma.c | 12 ++++++++--- fs/erofs/decompressor_zstd.c | 12 ++++++++--- fs/erofs/zdata.c | 2 +- 6 files changed, 44 insertions(+), 50 deletions(-) diff --git a/fs/erofs/compress.h b/fs/erofs/compress.h index 19d53c30c8af..c68d5739932f 100644 --- a/fs/erofs/compress.h +++ b/fs/erofs/compress.h @@ -81,21 +81,11 @@ static inline bool z_erofs_put_shortlivedpage(struct page **pagepool, return true; } +extern const struct z_erofs_decompressor z_erofs_lzma_decomp; +extern const struct z_erofs_decompressor z_erofs_deflate_decomp; +extern const struct z_erofs_decompressor z_erofs_zstd_decomp; +extern const struct z_erofs_decompressor *z_erofs_decomp[]; + int z_erofs_fixup_insize(struct z_erofs_decompress_req *rq, const char *padbuf, unsigned int padbufsize); -extern const struct z_erofs_decompressor erofs_decompressors[]; - -/* prototypes for specific algorithms */ -int z_erofs_load_lzma_config(struct super_block *sb, - struct erofs_super_block *dsb, void *data, int size); -int z_erofs_load_deflate_config(struct super_block *sb, - struct erofs_super_block *dsb, void *data, int size); -int z_erofs_load_zstd_config(struct super_block *sb, - struct erofs_super_block *dsb, void *data, int size); -int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, - struct page **pagepool); -int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, - struct page **pagepool); -int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, - struct page **pgpl); #endif diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index 9d85b6c11c6b..de50a9de4e8a 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -371,40 +371,28 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq, return 0; } -const struct z_erofs_decompressor erofs_decompressors[] = { - [Z_EROFS_COMPRESSION_SHIFTED] = { +const struct z_erofs_decompressor *z_erofs_decomp[] = { + [Z_EROFS_COMPRESSION_SHIFTED] = &(const struct z_erofs_decompressor) { .decompress = z_erofs_transform_plain, .name = "shifted" }, - [Z_EROFS_COMPRESSION_INTERLACED] = { + [Z_EROFS_COMPRESSION_INTERLACED] = &(const struct z_erofs_decompressor) { .decompress = z_erofs_transform_plain, .name = "interlaced" }, - [Z_EROFS_COMPRESSION_LZ4] = { + [Z_EROFS_COMPRESSION_LZ4] = &(const struct z_erofs_decompressor) { .config = z_erofs_load_lz4_config, .decompress = z_erofs_lz4_decompress, .name = "lz4" }, #ifdef CONFIG_EROFS_FS_ZIP_LZMA - [Z_EROFS_COMPRESSION_LZMA] = { - .config = z_erofs_load_lzma_config, - .decompress = z_erofs_lzma_decompress, - .name = "lzma" - }, + [Z_EROFS_COMPRESSION_LZMA] = &z_erofs_lzma_decomp, #endif #ifdef CONFIG_EROFS_FS_ZIP_DEFLATE - [Z_EROFS_COMPRESSION_DEFLATE] = { - .config = z_erofs_load_deflate_config, - .decompress = z_erofs_deflate_decompress, - .name = "deflate" - }, + [Z_EROFS_COMPRESSION_DEFLATE] = &z_erofs_deflate_decomp, #endif #ifdef CONFIG_EROFS_FS_ZIP_ZSTD - [Z_EROFS_COMPRESSION_ZSTD] = { - .config = z_erofs_load_zstd_config, - .decompress = z_erofs_zstd_decompress, - .name = "zstd" - }, + [Z_EROFS_COMPRESSION_ZSTD] = &z_erofs_zstd_decomp, #endif }; @@ -432,6 +420,7 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct erofs_super_block *dsb) offset = EROFS_SUPER_OFFSET + sbi->sb_size; alg = 0; for (algs = sbi->available_compr_algs; algs; algs >>= 1, ++alg) { + const struct z_erofs_decompressor *dec = z_erofs_decomp[alg]; void *data; if (!(algs & 1)) @@ -443,16 +432,13 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct erofs_super_block *dsb) break; } - if (alg >= ARRAY_SIZE(erofs_decompressors) || - !erofs_decompressors[alg].config) { + if (alg < Z_EROFS_COMPRESSION_MAX && dec && dec->config) { + ret = dec->config(sb, dsb, data, size); + } else { erofs_err(sb, "algorithm %d isn't enabled on this kernel", alg); ret = -EOPNOTSUPP; - } else { - ret = erofs_decompressors[alg].config(sb, - dsb, data, size); } - kfree(data); if (ret) break; diff --git a/fs/erofs/decompressor_deflate.c b/fs/erofs/decompressor_deflate.c index 3a3461561a3c..1c0ed77dcdb2 100644 --- a/fs/erofs/decompressor_deflate.c +++ b/fs/erofs/decompressor_deflate.c @@ -49,7 +49,7 @@ int __init z_erofs_deflate_init(void) return 0; } -int z_erofs_load_deflate_config(struct super_block *sb, +static int z_erofs_load_deflate_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { struct z_erofs_deflate_cfgs *dfl = data; @@ -97,8 +97,8 @@ int z_erofs_load_deflate_config(struct super_block *sb, return -ENOMEM; } -int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, - struct page **pgpl) +static int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, + struct page **pgpl) { const unsigned int nrpages_out = PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT; @@ -252,3 +252,9 @@ int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_deflate_wq); return err; } + +const struct z_erofs_decompressor z_erofs_deflate_decomp = { + .config = z_erofs_load_deflate_config, + .decompress = z_erofs_deflate_decompress, + .name = "deflate", +}; diff --git a/fs/erofs/decompressor_lzma.c b/fs/erofs/decompressor_lzma.c index 4b28dc130c9f..9cab3a2f7558 100644 --- a/fs/erofs/decompressor_lzma.c +++ b/fs/erofs/decompressor_lzma.c @@ -70,7 +70,7 @@ int __init z_erofs_lzma_init(void) return 0; } -int z_erofs_load_lzma_config(struct super_block *sb, +static int z_erofs_load_lzma_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { static DEFINE_MUTEX(lzma_resize_mutex); @@ -147,8 +147,8 @@ int z_erofs_load_lzma_config(struct super_block *sb, return err; } -int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, - struct page **pgpl) +static int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, + struct page **pgpl) { const unsigned int nrpages_out = PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT; @@ -293,3 +293,9 @@ int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_lzma_wq); return err; } + +const struct z_erofs_decompressor z_erofs_lzma_decomp = { + .config = z_erofs_load_lzma_config, + .decompress = z_erofs_lzma_decompress, + .name = "lzma" +}; diff --git a/fs/erofs/decompressor_zstd.c b/fs/erofs/decompressor_zstd.c index 63a23cac3af4..e8f931d41e60 100644 --- a/fs/erofs/decompressor_zstd.c +++ b/fs/erofs/decompressor_zstd.c @@ -72,7 +72,7 @@ int __init z_erofs_zstd_init(void) return 0; } -int z_erofs_load_zstd_config(struct super_block *sb, +static int z_erofs_load_zstd_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { static DEFINE_MUTEX(zstd_resize_mutex); @@ -135,8 +135,8 @@ int z_erofs_load_zstd_config(struct super_block *sb, return strm ? -ENOMEM : 0; } -int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, - struct page **pgpl) +static int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, + struct page **pgpl) { const unsigned int nrpages_out = PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT; @@ -277,3 +277,9 @@ int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_zstd_wq); return err; } + +const struct z_erofs_decompressor z_erofs_zstd_decomp = { + .config = z_erofs_load_zstd_config, + .decompress = z_erofs_zstd_decompress, + .name = "zstd", +}; diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index d6fe002a4a71..40ad9c80433e 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -1221,7 +1221,7 @@ static int z_erofs_decompress_pcluster(struct z_erofs_decompress_backend *be, struct z_erofs_pcluster *pcl = be->pcl; unsigned int pclusterpages = z_erofs_pclusterpages(pcl); const struct z_erofs_decompressor *decomp = - &erofs_decompressors[pcl->algorithmformat]; + z_erofs_decomp[pcl->algorithmformat]; int i, err2; struct page *page; bool overlapped; -- 2.43.5 . From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, akpm@linux-foundation.org, torvalds@linux-foundation.org, stable@vger.kernel.org Cc: lwn@lwn.net, jslaby@suse.cz, Greg Kroah-Hartman Subject: Linux 6.6.38 Date: Tue, 9 Jul 2024 11:48:29 +0200 Message-ID: <2024070944-broiler-unworthy-3b1d@gregkh> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271813 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail I'm announcing the release of the 6.6.38 kernel. All powerpc and arm64 users of the 6.6 kernel series must upgrade. Everyone else probably should as well to be safe. The updated 6.6.y git tree can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.y and can be browsed at the normal kernel.org git web browser: https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary thanks, greg k-h ------------ Makefile | 2 arch/arm/net/bpf_jit_32.c | 25 ++++---- arch/loongarch/net/bpf_jit.c | 22 ++----- arch/mips/net/bpf_jit_comp.c | 3 - arch/parisc/net/bpf_jit_core.c | 8 -- arch/powerpc/net/bpf_jit.h | 18 ++++-- arch/powerpc/net/bpf_jit_comp.c | 110 ++++++++++---------------------------- arch/powerpc/net/bpf_jit_comp32.c | 13 ++-- arch/powerpc/net/bpf_jit_comp64.c | 10 +-- arch/s390/net/bpf_jit_comp.c | 6 -- arch/sparc/net/bpf_jit_comp_64.c | 6 -- arch/x86/net/bpf_jit_comp32.c | 3 - include/linux/filter.h | 10 +-- kernel/bpf/core.c | 4 - kernel/bpf/verifier.c | 8 -- 15 files changed, 86 insertions(+), 162 deletions(-) Greg Kroah-Hartman (5): Revert "bpf: Take return from set_memory_rox() into account with bpf_jit_binary_lock_ro()" Revert "powerpc/bpf: use bpf_jit_binary_pack_[alloc|finalize|free]" Revert "powerpc/bpf: rename powerpc64_jit_data to powerpc_jit_data" Revert "bpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro()" Linux 6.6.38 . From: Tiezhu Yang To: Will Deacon , Mark Rutland , Russell King , Catalin Marinas , Oleg Nesterov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 0/3] hw_breakpoint: Save privilege of access control via ptrace Date: Tue, 9 Jul 2024 17:55:03 +0800 Message-ID: <20240709095506.9691-1-yangtiezhu@loongson.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271822 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-perf-users Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail v3: -- Put the new member "bp_priv" lives in a union on config3 at the end of the uapi struct perf_event_attr. -- Update the commit message to make the goal common and clear. v2: -- Put the new member "bp_priv" at the end of the uapi struct perf_event_attr and add PERF_ATTR_SIZE_VER9. -- Update the commit message to make the goal clear. Tiezhu Yang (3): perf: Add perf_event_attr::bp_priv arm: hw_breakpoint: Save privilege of access control via ptrace arm64: hw_breakpoint: Save privilege of access control via ptrace arch/arm/kernel/hw_breakpoint.c | 4 +--- arch/arm/kernel/ptrace.c | 2 ++ arch/arm64/kernel/hw_breakpoint.c | 11 ++--------- arch/arm64/kernel/ptrace.c | 2 ++ include/uapi/linux/perf_event.h | 5 ++++- kernel/events/hw_breakpoint.c | 1 + 6 files changed, 12 insertions(+), 13 deletions(-) -- 2.42.0 . From: Daniel Lublin To: Jonathan Corbet Cc: Daniel Lublin , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] Documentation: add reference from dynamic debug to loglevel kernel params Date: Tue, 9 Jul 2024 11:49:10 +0200 Message-ID: <4c1da56d2f123af8566744ab61c9d41e0b32de64.1720518466.git.daniel@lublin.se> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Bar: + X-Rspamd-Report: BAYES_HAM(-0.125073) MIME_GOOD(-0.1) MID_CONTAINS_FROM(1) FORGED_SENDER(0.3) R_MISSING_CHARSET(0.5) X-Rspamd-Score: 1.574926 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271827 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Signed-off-by: Daniel Lublin --- Documentation/admin-guide/dynamic-debug-howto.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentation/admin-guide/dynamic-debug-howto.rst index 0e9b48daf690..7e55097e559d 100644 --- a/Documentation/admin-guide/dynamic-debug-howto.rst +++ b/Documentation/admin-guide/dynamic-debug-howto.rst @@ -26,6 +26,12 @@ Dynamic debug provides: - format string - class name (as known/declared by each module) +NOTE: To actually get the debug-print output on the console, you may +need to adjust the kernel ``loglevel=``, or use ``ignore_loglevel``. +Read about these kernel parameters in +:ref:`Documentation/admin-guide/kernel-parameters.rst +`. + Viewing Dynamic Debug Behaviour =============================== -- 2.45.2 . Return-Path: From: Thomas Bonnefille Subject: [PATCH v3 0/5] Add board support for Sipeed LicheeRV Nano Date: Tue, 09 Jul 2024 12:07:15 +0200 Message-Id: <20240709-sg2002-v3-0-af779c3d139d@bootlin.com> MIME-Version: 1.0 To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Paul Walmsley , Chen Wang , Inochi Amaoto , Chao Wei Cc: Albert Ou , Palmer Dabbelt , Samuel Holland , Thomas Gleixner , Daniel Lezcano , Thomas Petazzoni , =?utf-8?q?Miqu=C3=A8l_Raynal?= , linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, Thomas Bonnefille , Conor Dooley X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79527 org.kernel.vger.linux-kernel:1271838 Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The LicheeRV Nano is a RISC-V SBC based on the Sophgo SG2002 chip. Adds minimal device tree files for this board to make it boot to a basic shell. Signed-off-by: Thomas Bonnefille --- Changes in v3: - Remove /dts-v1/ directive from sg2002.dtsi file - Add disable-wp property to sdhci node to avoid having a write protected SD card - Drop changes in cv18xx.dtsi and cv1800b.dtsi - Add fallback compatible to cv1800b in SDHCI node of sg2002.dtsi - Link to v2: https://lore.kernel.org/r/20240612-sg2002-v2-0-19a585af6846@bootlin.com Changes in v2: - Add SDHCI support - Change device tree name to match the Makefile - Add oscillator frequency - Add aliases to other UARTs - Add aliases to GPIOs - Move compatible for SDHCI from common DT to specific DT - Link to v1: https://lore.kernel.org/r/20240527-sg2002-v1-0-1b6cb38ce8f4@bootlin.com --- Thomas Bonnefille (5): dt-bindings: interrupt-controller: Add SOPHGO SG2002 plic dt-bindings: timer: Add SOPHGO SG2002 clint dt-bindings: riscv: Add Sipeed LicheeRV Nano board compatibles riscv: dts: sophgo: Add initial SG2002 SoC device tree riscv: dts: sophgo: Add LicheeRV Nano board device tree .../interrupt-controller/sifive,plic-1.0.0.yaml | 1 + .../devicetree/bindings/riscv/sophgo.yaml | 5 ++ .../devicetree/bindings/timer/sifive,clint.yaml | 1 + arch/riscv/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2002-licheerv-nano-b.dts | 54 ++++++++++++++++++++++ arch/riscv/boot/dts/sophgo/sg2002.dtsi | 32 +++++++++++++ 6 files changed, 94 insertions(+) --- base-commit: d20f6b3d747c36889b7ce75ee369182af3decb6b change-id: 20240515-sg2002-93dce1d263be Best regards, -- Thomas Bonnefille _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv . From: Mark-PK Tsai To: Jonathan Corbet , Matthias Brugger , AngeloGioacchino Del Regno , Lu Baolu , Mark-PK Tsai , "Will Deacon" CC: Vegard Nossum , Randy Dunlap , Kees Cook , Andrew Morton , Jeff Xu , Leo Yan , Daniel Stone , , , , Subject: [PATCH] docs: iommu: Drop the stale entry in documentation TOC Date: Tue, 9 Jul 2024 18:10:30 +0800 Message-ID: <20240709101055.27178-1-mark-pk.tsai@mediatek.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271855 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-doc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The Documentation/userspace-api/iommu.rst had been removed, so should TOC entry. Reported-by: Stephen Rothwell Closes: https://lore.kernel.org/lkml/20240709190613.3fd8b7ea@canb.auug.org.au/ Fixes: d926e7c04843 ("docs: iommu: Remove outdated Documentation/userspace-api/iommu.rst") on linux-next Signed-off-by: Mark-PK Tsai --- Documentation/userspace-api/index.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/Documentation/userspace-api/index.rst b/Documentation/userspace-api/index.rst index 8a251d71fa6e..274cc7546efc 100644 --- a/Documentation/userspace-api/index.rst +++ b/Documentation/userspace-api/index.rst @@ -45,7 +45,6 @@ Devices and I/O accelerators/ocxl dma-buf-alloc-exchange gpio/index - iommu iommufd media/index dcdbas -- 2.18.0 . From: Wadim Egorov To: , , , CC: , , , , , , Subject: [PATCH] arm64: dts: ti: am642-phyboard-electra: Add PRU-ICSSG nodes Date: Tue, 9 Jul 2024 12:12:05 +0200 Message-ID: <20240709101205.891587-1-w.egorov@phytec.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271857 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The phyBOARD-Electra implements two Ethernet ports utilizing PRUs. Add configuration for both mac ports & PHYs. Signed-off-by: Wadim Egorov --- .../dts/ti/k3-am642-phyboard-electra-rdk.dts | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/arch/arm64/boot/dts/ti/k3-am642-phyboard-electra-rdk.dts b/arch/arm64/boot/dts/ti/k3-am642-phyboard-electra-rdk.dts index 6df331ccb970..364a7582cf99 100644 --- a/arch/arm64/boot/dts/ti/k3-am642-phyboard-electra-rdk.dts +++ b/arch/arm64/boot/dts/ti/k3-am642-phyboard-electra-rdk.dts @@ -28,6 +28,8 @@ / { model = "PHYTEC phyBOARD-Electra-AM64x RDK"; aliases { + ethernet1 = &icssg0_emac0; + ethernet2 = &icssg0_emac1; mmc1 = &sdhci1; serial2 = &main_uart0; serial3 = &main_uart1; @@ -55,6 +57,73 @@ can_tc2: can-phy1 { standby-gpios = <&main_gpio0 35 GPIO_ACTIVE_HIGH>; }; + /* Dual Ethernet application node on PRU-ICSSG0 */ + ethernet { + compatible = "ti,am642-icssg-prueth"; + pinctrl-names = "default"; + pinctrl-0 = <&icssg0_rgmii1_pins_default &icssg0_rgmii2_pins_default>; + + sram = <&oc_sram>; + ti,prus = <&pru0_0>, <&rtu0_0>, <&tx_pru0_0>, <&pru0_1>, <&rtu0_1>, <&tx_pru0_1>; + firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf", + "ti-pruss/am65x-sr2-rtu0-prueth-fw.elf", + "ti-pruss/am65x-sr2-txpru0-prueth-fw.elf", + "ti-pruss/am65x-sr2-pru1-prueth-fw.elf", + "ti-pruss/am65x-sr2-rtu1-prueth-fw.elf", + "ti-pruss/am65x-sr2-txpru1-prueth-fw.elf"; + + ti,pruss-gp-mux-sel = <2>, /* MII mode */ + <2>, + <2>, + <2>, /* MII mode */ + <2>, + <2>; + + ti,mii-g-rt = <&icssg0_mii_g_rt>; + ti,mii-rt = <&icssg0_mii_rt>; + ti,iep = <&icssg0_iep0>, <&icssg0_iep1>; + + interrupt-parent = <&icssg0_intc>; + interrupts = <24 0 2>, <25 1 3>; + interrupt-names = "tx_ts0", "tx_ts1"; + + dmas = <&main_pktdma 0xc100 15>, /* egress slice 0 */ + <&main_pktdma 0xc101 15>, /* egress slice 0 */ + <&main_pktdma 0xc102 15>, /* egress slice 0 */ + <&main_pktdma 0xc103 15>, /* egress slice 0 */ + <&main_pktdma 0xc104 15>, /* egress slice 1 */ + <&main_pktdma 0xc105 15>, /* egress slice 1 */ + <&main_pktdma 0xc106 15>, /* egress slice 1 */ + <&main_pktdma 0xc107 15>, /* egress slice 1 */ + <&main_pktdma 0x4100 15>, /* ingress slice 0 */ + <&main_pktdma 0x4101 15>; /* ingress slice 1 */ + dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3", + "tx1-0", "tx1-1", "tx1-2", "tx1-3", + "rx0", "rx1"; + + ethernet-ports { + #address-cells = <1>; + #size-cells = <0>; + icssg0_emac0: port@0 { + reg = <0>; + phy-handle = <&icssg0_phy1>; + phy-mode = "rgmii-id"; + ti,syscon-rgmii-delay = <&main_conf 0x4100>; + /* Filled in by bootloader */ + local-mac-address = [00 00 00 00 00 00]; + }; + + icssg0_emac1: port@1 { + reg = <1>; + phy-handle = <&icssg0_phy2>; + phy-mode = "rgmii-id"; + ti,syscon-rgmii-delay = <&main_conf 0x4104>; + /* Filled in by bootloader */ + local-mac-address = [00 00 00 00 00 00]; + }; + }; + }; + keys { compatible = "gpio-keys"; autorepeat; @@ -118,6 +187,12 @@ AM64X_IOPAD(0x0090, PIN_OUTPUT, 7) /* (P17) GPMC0_BE0n_CLE.GPIO0_35 */ >; }; + clkout0_pins_default: clkout0-default-pins { + pinctrl-single,pins = < + AM64X_IOPAD(0x0274, PIN_OUTPUT, 5) /* (A19) EXT_REFCLK1.CLKOUT0 */ + >; + }; + gpio_keys_pins_default: gpio-keys-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0044, PIN_INPUT, 7) /* (T18) GPMC0_AD2.GPIO0_17 */ @@ -125,6 +200,49 @@ AM64X_IOPAD(0x0054, PIN_INPUT, 7) /* (V20) GPMC0_AD6.GPIO0_21 */ >; }; + icssg0_mdio_pins_default: icssg0-mdio-default-pins { + pinctrl-single,pins = < + AM64X_IOPAD(0x0200, PIN_INPUT, 0) /* (P2) PRG0_MDIO0_MDIO */ + AM64X_IOPAD(0x0204, PIN_OUTPUT, 0) /* (P3) PRG0_MDIO0_MDC */ + AM64X_IOPAD(0x01A8, PIN_OUTPUT, 7) /* (V1) PRG0_PRU0_GPO18.GPIO1_18 */ + AM64X_IOPAD(0x01AC, PIN_OUTPUT, 7) /* (W1) PRG0_PRU0_GPO19.GPIO1_19 */ + >; + }; + + icssg0_rgmii1_pins_default: icssg0-rgmii1-default-pins { + pinctrl-single,pins = < + AM64X_IOPAD(0x0160, PIN_INPUT, 2) /* (Y1) PRG0_PRU0_GPO0.PRG0_RGMII1_RD0 */ + AM64X_IOPAD(0x0164, PIN_INPUT, 2) /* (R4) PRG0_PRU0_GPO1.PRG0_RGMII1_RD1 */ + AM64X_IOPAD(0x0168, PIN_INPUT, 2) /* (U2) PRG0_PRU0_GPO2.PRG0_RGMII1_RD2 */ + AM64X_IOPAD(0x016c, PIN_INPUT, 2) /* (V2) PRG0_PRU0_GPO3.PRG0_RGMII1_RD3 */ + AM64X_IOPAD(0x0170, PIN_INPUT, 2) /* (AA2) PRG0_PRU0_GPO4.PRG0_RGMII1_RX_CTL */ + AM64X_IOPAD(0x0178, PIN_INPUT, 2) /* (T3) PRG0_PRU0_GPO6.PRG0_RGMII1_RXC */ + AM64X_IOPAD(0x018c, PIN_OUTPUT, 2) /* (Y3) PRG0_PRU0_GPO11.PRG0_RGMII1_TD0 */ + AM64X_IOPAD(0x0190, PIN_OUTPUT, 2) /* (AA3) PRG0_PRU0_GPO12.PRG0_RGMII1_TD1 */ + AM64X_IOPAD(0x0194, PIN_OUTPUT, 2) /* (R6) PRG0_PRU0_GPO13.PRG0_RGMII1_TD2 */ + AM64X_IOPAD(0x0198, PIN_OUTPUT, 2) /* (V4) PRG0_PRU0_GPO14.PRG0_RGMII1_TD3 */ + AM64X_IOPAD(0x019c, PIN_OUTPUT, 2) /* (T5) PRG0_PRU0_GPO15.PRG0_RGMII1_TX_CTL */ + AM64X_IOPAD(0x01a0, PIN_OUTPUT, 2) /* (U4) PRG0_PRU0_GPO16.PRG0_RGMII1_TXC */ + >; + }; + + icssg0_rgmii2_pins_default: icssg0-rgmii2-default-pins { + pinctrl-single,pins = < + AM64X_IOPAD(0x01b0, PIN_INPUT, 2) /* (Y2) PRG0_PRU1_GPO0.PRG0_RGMII2_RD0 */ + AM64X_IOPAD(0x01b4, PIN_INPUT, 2) /* (W2) PRG0_PRU1_GPO1.PRG0_RGMII2_RD1 */ + AM64X_IOPAD(0x01b8, PIN_INPUT, 2) /* (V3) PRG0_PRU1_GPO2.PRG0_RGMII2_RD2 */ + AM64X_IOPAD(0x01bc, PIN_INPUT, 2) /* (T4) PRG0_PRU1_GPO3.PRG0_RGMII2_RD3 */ + AM64X_IOPAD(0x01c0, PIN_INPUT, 2) /* (W3) PRG0_PRU1_GPO4.PRG0_RGMII2_RX_CTL */ + AM64X_IOPAD(0x01c8, PIN_INPUT, 2) /* (R5) PRG0_PRU1_GPO6.PRG0_RGMII2_RXC */ + AM64X_IOPAD(0x01dc, PIN_OUTPUT, 2) /* (W4) PRG0_PRU1_GPO11.PRG0_RGMII2_TD0 */ + AM64X_IOPAD(0x01e0, PIN_OUTPUT, 2) /* (Y4) PRG0_PRU1_GPO12.PRG0_RGMII2_TD1 */ + AM64X_IOPAD(0x01e4, PIN_OUTPUT, 2) /* (T6) PRG0_PRU1_GPO13.PRG0_RGMII2_TD2 */ + AM64X_IOPAD(0x01e8, PIN_OUTPUT, 2) /* (U6) PRG0_PRU1_GPO14.PRG0_RGMII2_TD3 */ + AM64X_IOPAD(0x01ec, PIN_OUTPUT, 2) /* (U5) PRG0_PRU1_GPO15.PRG0_RGMII2_TX_CTL */ + AM64X_IOPAD(0x01f0, PIN_OUTPUT, 2) /* (AA4) PRG0_PRU1_GPO16.PRG0_RGMII2_TXC */ + >; + }; + main_i2c1_pins_default: main-i2c1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0268, PIN_INPUT, 0) /* (C18) I2C1_SCL */ @@ -210,6 +328,34 @@ AM64X_IOPAD(0x0040, PIN_OUTPUT, 7) /* (U21) GPMC0_AD1.GPIO0_16 */ }; }; +&icssg0_mdio { + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&icssg0_mdio_pins_default &clkout0_pins_default>; + + icssg0_phy1: ethernet-phy@1 { + compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22"; + reg = <0x1>; + ti,rx-internal-delay = ; + tx-fifo-depth = ; + rx-fifo-depth = ; + reset-gpios = <&main_gpio1 18 GPIO_ACTIVE_LOW>; + reset-assert-us = <1000>; + reset-deassert-us = <1000>; + }; + + icssg0_phy2: ethernet-phy@2 { + compatible = "ethernet-phy-id2000.a231", "ethernet-phy-ieee802.3-c22"; + reg = <0x2>; + ti,rx-internal-delay = ; + tx-fifo-depth = ; + rx-fifo-depth = ; + reset-gpios = <&main_gpio1 19 GPIO_ACTIVE_LOW>; + reset-assert-us = <1000>; + reset-deassert-us = <1000>; + }; +}; + &main_i2c1 { status = "okay"; pinctrl-names = "default"; -- 2.34.1 . X-Yandex-Fwd: 1 From: Nikolay Kuratov To: linux-kernel@vger.kernel.org Cc: x86@kernel.org, Borislav Petkov , Ingo Molnar , Thomas Gleixner , Dave Hansen , "H. Peter Anvin" , Baoquan He , Ard Biesheuvel , Nikolay Kuratov Subject: [PATCH RESEND] x86/numa: Bump NR_NODE_MEMBLKS to MAX_NUMNODES * 4 Date: Tue, 9 Jul 2024 13:15:51 +0300 Message-Id: <20240709101551.1374100-1-kniv@yandex-team.ru> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271868 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail With modern AMD EPYC platform we're able to spot 3 memblocks per NUMA, so bump MAX_NUMNODES multiplier from 2 to 4. Problem becomes apparent if MAX_NUMNODES close enough to real amount of nodes and leaves us with `too many memblk ranges` NUMA init error. Bump also maximal count of immovable regions accordingly. Signed-off-by: Nikolay Kuratov --- If overhead related to doubled arrays is too undesirable maybe we should consider config option for this? It appears that NR_NODE_MEMBLKS used only on LoongArch and x86 (macro in asm-generic is orphane). --- arch/x86/boot/compressed/acpi.c | 6 +++--- arch/x86/boot/compressed/misc.h | 2 +- arch/x86/include/asm/numa.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c index f196b1d1ddf8..74575a900924 100644 --- a/arch/x86/boot/compressed/acpi.c +++ b/arch/x86/boot/compressed/acpi.c @@ -17,9 +17,9 @@ /* * Immovable memory regions representation. Max amount of memory regions is - * MAX_NUMNODES*2. + * MAX_NUMNODES*4. */ -struct mem_vector immovable_mem[MAX_NUMNODES*2]; +struct mem_vector immovable_mem[MAX_NUMNODES*4]; static acpi_physical_address __efi_get_rsdp_addr(unsigned long cfg_tbl_pa, unsigned int cfg_tbl_len) @@ -305,7 +305,7 @@ int count_immovable_mem_regions(void) num++; } - if (num >= MAX_NUMNODES*2) { + if (num >= ARRAY_SIZE(immovable_mem)) { debug_putstr("Too many immovable memory regions, aborting.\n"); return 0; } diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/misc.h index b353a7be380c..a756569852e5 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -174,7 +174,7 @@ static inline acpi_physical_address get_rsdp_addr(void) { return 0; } #endif #if defined(CONFIG_RANDOMIZE_BASE) && defined(CONFIG_MEMORY_HOTREMOVE) && defined(CONFIG_ACPI) -extern struct mem_vector immovable_mem[MAX_NUMNODES*2]; +extern struct mem_vector immovable_mem[MAX_NUMNODES*4]; int count_immovable_mem_regions(void); #else static inline int count_immovable_mem_regions(void) { return 0; } diff --git a/arch/x86/include/asm/numa.h b/arch/x86/include/asm/numa.h index ef2844d69173..057eafe6fed5 100644 --- a/arch/x86/include/asm/numa.h +++ b/arch/x86/include/asm/numa.h @@ -10,7 +10,7 @@ #ifdef CONFIG_NUMA -#define NR_NODE_MEMBLKS (MAX_NUMNODES*2) +#define NR_NODE_MEMBLKS (MAX_NUMNODES*4) extern int numa_off; -- 2.34.1 . From: Ashwin Kamat To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, davem@davemloft.net, yoshfuji@linux-ipv6.org, dsahern@kernel.org, kuba@kernel.org, netdev@vger.kernel.org, florian.fainelli@broadcom.com, ajay.kaher@broadcom.com, vasavi.sirnapalli@broadcom.com, tapas.kundu@broadcom.com, ashwin.kamat@broadcom.com Subject: [PATCH v5.15 0/2] Fix for CVE-2024-36901 Date: Tue, 9 Jul 2024 15:49:42 +0530 Message-Id: <1720520384-9690-1-git-send-email-ashwin.kamat@broadcom.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271869 org.kernel.vger.netdev:355917 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Ashwin Dayanand Kamat net/ipv6: annotate data-races around cnf.disable_ipv6 disable_ipv6 is read locklessly, add appropriate READ_ONCE() and WRITE_ONCE() annotations. net/ipv6: prevent NULL dereference in ip6_output() Fix for CVE-2024-36901 Ashwin Dayanand Kamat (2): net/ipv6: annotate data-races around cnf.disable_ipv6 net/ipv6: prevent NULL dereference in ip6_output() net/ipv6/addrconf.c | 9 +++++---- net/ipv6/ip6_input.c | 2 +- net/ipv6/ip6_output.c | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) -- 2.7.4 . From: Frank Wunderlich To: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , Wim Van Sebroeck , Guenter Roeck Cc: Frank Wunderlich , Daniel Golle , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-watchdog@vger.kernel.org Subject: [PATCH v1 0/4] add syscon requirement for mt7988 Date: Tue, 9 Jul 2024 12:13:22 +0200 Message-ID: <20240709101328.102969-1-linux@fw-web.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mail-ID: cc04bfa3-18a0-4142-97ac-21d0a30ec603 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271874 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-watchdog Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Frank Wunderlich Some nodes require the syscon fallback at least in u-boot when using OF_UPSTREAM. This is because uboot driver uses syscon_node_to_regmap in mtk_eth.c for "mediatek,toprgu", "mediatek,xfi_pll" and reset pointing to watchdog-node. Frank Wunderlich (4): dt-bindings: watchdog: mediatek,mtk-wdt: add MT7988 syscon requirement dt-bindings: clock: mediatek: add syscon requirement for mt7988 xfi-pll dt-bindings: clock: mediatek: add syscon requirement for mt7988 ethwarp arm64: dts: mediatek: mt7988: add syscon for watchdog, xfi-pll and ethwarp .../devicetree/bindings/clock/mediatek,mt7988-ethwarp.yaml | 6 ++++-- .../devicetree/bindings/clock/mediatek,mt7988-xfi-pll.yaml | 7 +++++-- .../devicetree/bindings/watchdog/mediatek,mtk-wdt.yaml | 5 ++++- arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 6 +++--- 4 files changed, 16 insertions(+), 8 deletions(-) -- 2.43.0 . From: Ashwin Kamat To: linux-kernel@vger.kernel.org Cc: gregkh@linuxfoundation.org, davem@davemloft.net, yoshfuji@linux-ipv6.org, dsahern@kernel.org, kuba@kernel.org, netdev@vger.kernel.org, florian.fainelli@broadcom.com, ajay.kaher@broadcom.com, vasavi.sirnapalli@broadcom.com, tapas.kundu@broadcom.com, ashwin.kamat@broadcom.com Subject: [PATCH v5.10 0/2] Fix for CVE-2024-36901 Date: Tue, 9 Jul 2024 15:52:48 +0530 Message-Id: <1720520570-9904-1-git-send-email-ashwin.kamat@broadcom.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271876 org.kernel.vger.netdev:355920 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Ashwin Dayanand Kamat net/ipv6: annotate data-races around cnf.disable_ipv6 disable_ipv6 is read locklessly, add appropriate READ_ONCE() and WRITE_ONCE() annotations. net/ipv6: prevent NULL dereference in ip6_output() Fix for CVE-2024-36901 Ashwin Dayanand Kamat (2): net/ipv6: annotate data-races around cnf.disable_ipv6 net/ipv6: prevent NULL dereference in ip6_output() net/ipv6/addrconf.c | 9 +++++---- net/ipv6/ip6_input.c | 2 +- net/ipv6/ip6_output.c | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) -- 2.7.4 . From: James Clark To: akpm@linux-foundation.org, robh@kernel.org, suzuki.poulose@arm.com Cc: linux-perf-users@vger.kernel.org, James Clark , Mike Leach , Krzysztof Kozlowski , Conor Dooley , Matthieu Baerts , Jakub Kicinski , "David S. Miller" , Jiri Kosina , Geliang Tang , Bjorn Andersson , Kees Cook , Matt Ranostay , Oleksij Rempel , Mao Jinlong , Hao Zhang , linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org Subject: [PATCH 0/2] MAINTAINERS: mailmap: Update James Clark's email address Date: Tue, 9 Jul 2024 11:25:09 +0100 Message-Id: <20240709102512.31212-1-james.clark@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271879 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-perf-users Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail I moved to Linaro so update my email in a few places. James Clark (2): MAINTAINERS: mailmap: Update James Clark's email address dt-bindings: arm: Update James Clark's email address .mailmap | 1 + .../devicetree/bindings/arm/arm,coresight-dummy-sink.yaml | 2 +- .../devicetree/bindings/arm/arm,coresight-dummy-source.yaml | 2 +- MAINTAINERS | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) -- 2.34.1 . From: Adam Skladowski To: Cc: phone-devel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Adam Skladowski , Georgi Djakov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , Neil Armstrong , Vladimir Lypak , Rajendra Nayak , Rohit Agarwal , Danila Tikhonov , Bjorn Andersson , Stephan Gerhold , Andrew Halaney , Dmitry Baryshkov , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Barnabas Czeman , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Abel Vesa Subject: [PATCH v3 0/9] msm8937/msm8976/qcs404 icc patches Date: Tue, 9 Jul 2024 12:22:45 +0200 Message-ID: <20240709102728.15349-1-a39.skl@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271883 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pm,org.kernel.vger.phone-devel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series introduce new ICC drivers for some legacy socs while at it also updates a bit of qcs404 driver which seems to not receive much attention lately. Please take in consideration i do not own any qcs404 board so i cannot test anything else than if it compiles. Changes since v2 ================ 1. Moved yamls from separate files into shared file. 2. Added commit to fix description of msm8953 yaml. 3. Reworded "Changes since v1" in cover. Changes since v1 ================ 1. Reworded commit messages. 2. Dropped intf clocks from MSM8976 driver and yaml. 3. Aligned yamls to qcom,msm8953.yaml format. 4. Removed redundant nodes from MSM8939 examples. 5. Added regmap include into qcs404 regmap commit. 6. Added coeffs to MSM8976 driver. 7. Added MSM8953 ab_coeff patch. Adam Skladowski (9): dt-bindings: interconnect: qcom: Add Qualcomm MSM8976 NoC interconnect: qcom: Add MSM8976 interconnect provider driver dt-bindings: interconnect: qcom: Add Qualcomm MSM8937 NoC interconnect: qcom: Add MSM8937 interconnect provider driver interconnect: qcom: qcs404: Mark AP-owned nodes as such interconnect: qcom: qcs404: Add regmaps and more bus descriptions dt-bindings: interconnect: qcom: msm8939: Fix example interconnect: qcom: msm8953: Add ab_coeff dt-bindings: interconnect: qcom: msm8953: Fix 'See also' in description .../bindings/interconnect/qcom,msm8939.yaml | 25 +- .../bindings/interconnect/qcom,msm8953.yaml | 3 +- drivers/interconnect/qcom/Kconfig | 18 + drivers/interconnect/qcom/Makefile | 4 + drivers/interconnect/qcom/msm8937.c | 1372 ++++++++++++++++ drivers/interconnect/qcom/msm8953.c | 2 + drivers/interconnect/qcom/msm8976.c | 1440 +++++++++++++++++ drivers/interconnect/qcom/qcs404.c | 127 +- .../dt-bindings/interconnect/qcom,msm8937.h | 93 ++ .../dt-bindings/interconnect/qcom,msm8976.h | 97 ++ 10 files changed, 3165 insertions(+), 16 deletions(-) create mode 100644 drivers/interconnect/qcom/msm8937.c create mode 100644 drivers/interconnect/qcom/msm8976.c create mode 100644 include/dt-bindings/interconnect/qcom,msm8937.h create mode 100644 include/dt-bindings/interconnect/qcom,msm8976.h -- 2.45.2 . From: Igor Prusov To: Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai , Igor Prusov CC: , , , , Subject: [PATCH 0/2] Add ES7243E ADC driver Date: Tue, 9 Jul 2024 13:41:15 +0300 Message-ID: <20240709104117.33431-1-ivprusov@salutedevices.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 186389 [Jul 09 2024] X-KSMG-AntiSpam-Version: 6.1.0.4 X-KSMG-AntiSpam-Envelope-From: ivprusov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 23 0.3.23 8881c50ebb08f9085352475be251cf18bb0fcfdd, {Tracking_uf_ne_domains}, {Tracking_from_domain_doesnt_match_to}, smtp.sberdevices.ru:5.0.1,7.1.1;github.com:7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;100.64.160.123:7.1.2;127.0.0.199:7.1.2;salutedevices.com:7.1.1, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean, bases: 2024/07/09 09:10:00 X-KSMG-LinksScanning: Clean, bases: 2024/07/09 09:10:00 X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/07/09 09:37:00 #25918307 X-KSMG-AntiVirus-Status: Clean, skipped Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271904 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series adds Everest Semi ES7243E ADC driver and bindings. Driver is based on David Yang's implementation [1]. [1] https://github.com/BPI-SINOVOIP/BPI-R2PRO-BSP/blob/main/kernel/sound/soc/codecs/es7243e.c Igor Prusov (2): ASoC: dt-bindings: Add bindings for Everest ES7243E ASoC: codecs: add ES7243E ADC driver .../bindings/sound/everest,es7243e.yaml | 42 ++ sound/soc/codecs/Kconfig | 3 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/es7243e.c | 676 ++++++++++++++++++ 4 files changed, 723 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/everest,es7243e.yaml create mode 100644 sound/soc/codecs/es7243e.c -- 2.34.1 . From: Konrad Dybcio Subject: [PATCH v5 0/5] Add SMEM-based speedbin matching Date: Tue, 09 Jul 2024 12:45:28 +0200 Message-Id: <20240709-topic-smem_speedbin-v5-0-e2146be0c96f@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Rob Clark , Sean Paul , Abhinav Kumar , Dmitry Baryshkov , David Airlie , Daniel Vetter , Bjorn Andersson , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Konrad Dybcio Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271907 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Newer (SM8550+) SoCs don't seem to have a nice speedbin fuse anymore, but instead rely on a set of combinations of "feature code" (FC) and "product code" (PC) identifiers to match the bins. This series adds support for that. I suppose a qcom/for-soc immutable branch would be in order if we want to land this in the upcoming cycle. FWIW I preferred the fuses myself.. Signed-off-by: Konrad Dybcio --- Changes in v5: - Rebase - Fix some unhandled cases (Elliot) - Fix unused variable warning - Touch up some comments - Link to v4: https://lore.kernel.org/r/20240625-topic-smem_speedbin-v4-0-f6f8493ab814@linaro.org Changes in v4: - Drop applied qcom patches - Make the fuse/speedbin fields u16 again (as Pcode is unused) - Add comments explaining why there's only speedbin0 for 8550 - Fix some checkpatch fluff (code style) - Rebase on next-20240625 Changes in v3: - Wrap the argument usage in new preprocessor macros in braces (Bjorn) - Make the SOCINFO_FC_INT_MAX define inclusive, adjust .h and .c (Bjorn) - Pick up rbs - Rebase on next-20240605 - Drop the already-applied ("Avoid a nullptr dereference when speedbin setting fails") Changes in v2: - Separate moving existing and adding new defines - Fix kerneldoc copypasta - Remove some wrong comments and defines - Remove assumed "max" values for PCs and external FCs - Improve some commit messages - Return -EOPNOTSUPP instead of -EINVAL when calling p/fcode getters on socinfo older than v16 - Drop pcode getters and evaluation (doesn't matter for Adreno on non-proto SoCs) - Rework the speedbin logic to be hopefully saner - Link to v1: https://lore.kernel.org/r/20240405-topic-smem_speedbin-v1-0-ce2b864251b1@linaro.org --- Konrad Dybcio (5): drm/msm/adreno: Implement SMEM-based speed bin drm/msm/adreno: Add speedbin data for SM8550 / A740 drm/msm/adreno: Define A530 speed bins explicitly drm/msm/adreno: Redo the speedbin assignment arm64: dts: qcom: sm8550: Wire up GPU speed bin & more OPPs arch/arm64/boot/dts/qcom/sm8550.dtsi | 21 +++++++- drivers/gpu/drm/msm/adreno/a5xx_catalog.c | 6 +++ drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 34 ------------ drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 8 +++ drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 54 ------------------- drivers/gpu/drm/msm/adreno/adreno_device.c | 2 + drivers/gpu/drm/msm/adreno/adreno_gpu.c | 85 +++++++++++++++++++++++++++--- drivers/gpu/drm/msm/adreno/adreno_gpu.h | 6 ++- 8 files changed, 119 insertions(+), 97 deletions(-) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240404-topic-smem_speedbin-8deecd0bef0e Best regards, -- Konrad Dybcio . From: Colin Ian King To: Sakari Ailus , Zhi Mao , Mauro Carvalho Chehab , linux-media@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][next] media: i2c: GC05A2: Fix spelling mistake "Horizental" -> "Horizontal" Date: Tue, 9 Jul 2024 11:48:07 +0100 Message-Id: <20240709104807.167992-1-colin.i.king@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271917 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-media Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail There is a spelling mistake in a string in the gc05a2_test_pattern_menu array. Fix it. Signed-off-by: Colin Ian King --- drivers/media/i2c/gc05a2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/gc05a2.c b/drivers/media/i2c/gc05a2.c index dcba29ee725c..0413c557e594 100644 --- a/drivers/media/i2c/gc05a2.c +++ b/drivers/media/i2c/gc05a2.c @@ -65,7 +65,7 @@ static const char *const gc05a2_test_pattern_menu[] = { "No Pattern", "Fade_to_gray_Color Bar", "Color Bar", - "PN9", "Horizental_gradient", "Checkboard Pattern", + "PN9", "Horizontal_gradient", "Checkboard Pattern", "Slant", "Resolution", "Solid Black", "Solid White", }; -- 2.39.2 . From: Colin Ian King To: Sakari Ailus , Zhi Mao , Mauro Carvalho Chehab , linux-media@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][next] media: i2c: GC08A3: Fix spelling mistake "STRAEMING_REG" -> "STREAMING_REG" Date: Tue, 9 Jul 2024 11:50:03 +0100 Message-Id: <20240709105003.168142-1-colin.i.king@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271920 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-media Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail There is a spelling mistake in a dev_err message. Fix it. Signed-off-by: Colin Ian King --- drivers/media/i2c/gc08a3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/gc08a3.c b/drivers/media/i2c/gc08a3.c index 7680d807e7a5..84de5cff958d 100644 --- a/drivers/media/i2c/gc08a3.c +++ b/drivers/media/i2c/gc08a3.c @@ -948,7 +948,7 @@ static int gc08a3_start_streaming(struct gc08a3 *gc08a3) ret = cci_write(gc08a3->regmap, GC08A3_STREAMING_REG, 1, NULL); if (ret < 0) { - dev_err(gc08a3->dev, "write STRAEMING_REG failed: %d\n", ret); + dev_err(gc08a3->dev, "write STREAMING_REG failed: %d\n", ret); goto err_rpm_put; } -- 2.39.2 . From: Huang-Huang Bao To: Heiko Stuebner , Linus Walleij Cc: Richard Kojedzinszky , linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Huang-Huang Bao , stable@vger.kernel.org Subject: [PATCH] pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins Date: Tue, 9 Jul 2024 18:54:28 +0800 Message-ID: <20240709105428.1176375-1-i@eh5.me> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271931 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-gpio,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The base iomux offsets for each GPIO pin line are accumulatively calculated based off iomux width flag in rockchip_pinctrl_get_soc_data. If the iomux width flag is one of IOMUX_WIDTH_4BIT, IOMUX_WIDTH_3BIT or IOMUX_WIDTH_2BIT, the base offset for next pin line would increase by 8 bytes, otherwise it would increase by 4 bytes. Despite most of GPIO2-B iomux have 2-bit data width, which can be fit into 4 bytes space with write mask, it actually take 8 bytes width for whole GPIO2-B line. Commit e8448a6c817c ("pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins") wrongly set iomux width flag to 0, causing all base iomux offset for line after GPIO2-B to be calculated wrong. Fix the iomux width flag to IOMUX_WIDTH_2BIT so the offset after GPIO2-B is correctly increased by 8, matching the actual width of GPIO2-B iomux. Fixes: e8448a6c817c ("pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins") Cc: stable@vger.kernel.org Reported-by: Richard Kojedzinszky Closes: https://lore.kernel.org/linux-rockchip/4f29b743202397d60edfb3c725537415@kojedz.in/ Tested-by: Richard Kojedzinszky Signed-off-by: Huang-Huang Bao --- I have double checked the iomux offsets in debug message match iomux register definitions in "GRF Register Description" section in RK3328 TRM[1]. [1]: https://opensource.rock-chips.com/images/9/97/Rockchip_RK3328TRM_V1.1-Part1-20170321.pdf Kernel pinctrl debug message with dyndbg="file pinctrl-rockchip.c +p": rockchip-pinctrl pinctrl: bank 0, iomux 0 has iom_offset 0x0 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 0, iomux 1 has iom_offset 0x4 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 0, iomux 2 has iom_offset 0x8 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 0, iomux 3 has iom_offset 0xc drv_offset 0x0 rockchip-pinctrl pinctrl: bank 1, iomux 0 has iom_offset 0x10 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 1, iomux 1 has iom_offset 0x14 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 1, iomux 2 has iom_offset 0x18 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 1, iomux 3 has iom_offset 0x1c drv_offset 0x0 rockchip-pinctrl pinctrl: bank 2, iomux 0 has iom_offset 0x20 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 2, iomux 1 has iom_offset 0x24 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 2, iomux 2 has iom_offset 0x2c drv_offset 0x0 rockchip-pinctrl pinctrl: bank 2, iomux 3 has iom_offset 0x34 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 3, iomux 0 has iom_offset 0x38 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 3, iomux 1 has iom_offset 0x40 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 3, iomux 2 has iom_offset 0x48 drv_offset 0x0 rockchip-pinctrl pinctrl: bank 3, iomux 3 has iom_offset 0x4c drv_offset 0x0 The "Closes" links to test report from original reporter with original issue contained, which was not delivered to any mailing list thus not available on the web. Added CC stable as the problematic e8448a6c817c fixed by this patch was recently merged to stable kernels. Sorry for the inconvenience caused, Huang-Huang drivers/pinctrl/pinctrl-rockchip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index 3f56991f5b89..f6da91941fbd 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -3813,7 +3813,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = { PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0), PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0), PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0, - 0, + IOMUX_WIDTH_2BIT, IOMUX_WIDTH_3BIT, 0), PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3", base-commit: 4376e966ecb78c520b0faf239d118ecfab42a119 -- 2.45.2 . From: Thorsten Blum To: geert@linux-m68k.org Cc: linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, Thorsten Blum Subject: [PATCH] m68k: cmpxchg: Use swap() to improve code Date: Tue, 9 Jul 2024 13:07:04 +0200 Message-ID: <20240709110703.66166-2-thorsten.blum@toblux.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271937 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-m68k Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Remove the local variable tmp and use the swap() macro instead. Signed-off-by: Thorsten Blum --- arch/m68k/include/asm/cmpxchg.h | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/arch/m68k/include/asm/cmpxchg.h b/arch/m68k/include/asm/cmpxchg.h index 4ba14f3535fc..71fbe5c5c564 100644 --- a/arch/m68k/include/asm/cmpxchg.h +++ b/arch/m68k/include/asm/cmpxchg.h @@ -3,6 +3,7 @@ #define __ARCH_M68K_CMPXCHG__ #include +#include #define __xg(type, x) ((volatile type *)(x)) @@ -11,25 +12,19 @@ extern unsigned long __invalid_xchg_size(unsigned long, volatile void *, int); #ifndef CONFIG_RMW_INSNS static inline unsigned long __arch_xchg(unsigned long x, volatile void * ptr, int size) { - unsigned long flags, tmp; + unsigned long flags; local_irq_save(flags); switch (size) { case 1: - tmp = *(u8 *)ptr; - *(u8 *)ptr = x; - x = tmp; + swap(*(u8 *)ptr, x); break; case 2: - tmp = *(u16 *)ptr; - *(u16 *)ptr = x; - x = tmp; + swap(*(u16 *)ptr, x); break; case 4: - tmp = *(u32 *)ptr; - *(u32 *)ptr = x; - x = tmp; + swap(*(u32 *)ptr, x); break; default: x = __invalid_xchg_size(x, ptr, size); -- 2.45.2 . From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, linux@roeck-us.net, shuah@kernel.org, patches@kernelci.org, lkft-triage@lists.linaro.org, pavel@denx.de, jonathanh@nvidia.com, f.fainelli@gmail.com, sudipm.mukherjee@gmail.com, srw@sladewatkins.net, rwarsow@gmx.de, conor@kernel.org, allen.lkml@gmail.com, broonie@kernel.org Subject: [PATCH 6.6 000/139] 6.6.39-rc1 review Date: Tue, 9 Jul 2024 13:08:20 +0200 Message-ID: <20240709110658.146853929@linuxfoundation.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: ignore X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.39-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-6.6.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 6.6.39-rc1 X-KernelTest-Deadline: 2024-07-11T11:07+00:00 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271942 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.patches,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This is the start of the stable review cycle for the 6.6.39 release. There are 139 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know. Responses should be made by Thu, 11 Jul 2024 11:06:25 +0000. Anything received after that time might be too late. The whole patch series can be found in one patch at: https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.39-rc1.gz or in the git tree and branch at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.6.y and the diffstat can be found below. thanks, greg k-h ------------- Pseudo-Shortlog of commits: Greg Kroah-Hartman Linux 6.6.39-rc1 Ryusuke Konishi nilfs2: fix incorrect inode allocation from reserved inodes Damien Le Moal null_blk: Do not allow runt zone with zone capacity smaller then zone size Alex Deucher drm/amdgpu: silence UBSAN warning Takashi Iwai ALSA: ump: Set default protocol when not given explicitly Witold Sadowski spi: cadence: Ensure data lines set to low during dummy-cycle period Edward Adam Davis nfc/nci: Add the inconsistency check between the input data length and count Masahiro Yamada kbuild: fix short log for AS in link-vmlinux.sh Sagi Grimberg nvmet: fix a possible leak when destroy a ctrl during qp establishment hmtheboy154 platform/x86: touchscreen_dmi: Add info for the EZpad 6s Pro hmtheboy154 platform/x86: touchscreen_dmi: Add info for GlobalSpace SolT IVW 11.6" tablet Jim Wylder regmap-i2c: Subtract reg size from max_write Kundan Kumar nvme: adjust multiples of NVME_CTRL_PAGE_SIZE in offset Matt Jan connector: Fix invalid conversion in cn_proc.h Fedor Pchelkin dma-mapping: benchmark: avoid needless copy_to_user if benchmark fails Nilay Shroff nvme-multipath: find NUMA path only for online numa-node Mike Christie vhost-scsi: Handle vhost_vq_work_queue failures for events Jian-Hong Pan ALSA: hda/realtek: Enable headset mic of JP-IK LEAP W502 with ALC897 Konstantin Komarov fs/ntfs3: Mark volume as dirty if xattr is broken Piotr Wojtaszczyk i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr Pin-yen Lin clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg Gabor Juhos clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs Luca Weiss clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents Mauro Carvalho Chehab media: dw2102: fix a potential buffer overflow GUO Zihua ima: Avoid blocking in RCU read-side critical section Dragan Simic arm64: dts: rockchip: Fix the DCDC_REG2 minimum voltage on Quartz64 Model B Ghadi Elie Rahme bnx2x: Fix multiple UBSAN array-index-out-of-bounds Yijie Yang net: stmmac: dwmac-qcom-ethqos: fix error array size Val Packett mtd: rawnand: rockchip: ensure NVDDR timings are rejected Miquel Raynal mtd: rawnand: Bypass a couple of sanity checks during NAND identification Miquel Raynal mtd: rawnand: Fix the nand_read_data_op() early check Miquel Raynal mtd: rawnand: Ensure ECC configuration is propagated to upper layers Jinglin Wen powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at address 0 Nicholas Piggin powerpc/pseries: Fix scv instruction crash with kexec Frank Oltmanns clk: sunxi-ng: common: Don't call hw_to_ccu_common on hw without common Md Sadre Alam clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag John Schoenick drm: panel-orientation-quirks: Add quirk for Valve Galileo Alex Deucher drm/amdgpu/atomfirmware: silence UBSAN warning Ma Ke drm/nouveau: fix null pointer dereference in nouveau_connector_get_modes Jan Kara Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again" Jan Kara fsnotify: Do not generate events for O_PATH file descriptors Jimmy Assarsson can: kvaser_usb: Explicitly initialize family in leafimx driver_info struct Zijun Hu Bluetooth: qca: Fix BT enable failure again for QCA6390 after warm reboot Hector Martin Bluetooth: hci_bcm4377: Fix msgid release Nathan Chancellor scsi: mpi3mr: Use proper format specifier in mpi3mr_sas_port_add() Nathan Chancellor f2fs: Add inline to f2fs_build_fault_attr() stub Naohiro Aota btrfs: fix adding block group to a reclaim list and the unused list during reclaim Jan Kara mm: avoid overflows in dirty throttling logic Jinliang Zheng mm: optimize the redundant loop of mm_update_owner_next() Ryusuke Konishi nilfs2: add missing check for inode numbers on directory entries Ryusuke Konishi nilfs2: fix inode number range checks Sasha Neftin Revert "igc: fix a log entry using uninitialized netdev" Armin Wolf platform/x86: toshiba_acpi: Fix quickstart quirk handling Huacai Chen cpu: Fix broken cmdline "nosmp" and "maxcpus=0" Dmitry Torokhov gpiolib: of: add polarity quirk for TSC2005 Aleksandr Mishin mlxsw: core_linecards: Fix double memory deallocation in case of invalid INI file Shigeru Yoshida inet_diag: Initialize pad field in struct inet_diag_req_v2 Zijian Zhang selftests: make order checking verbose in msg_zerocopy selftest Zijian Zhang selftests: fix OOM in msg_zerocopy selftest Sam Sun bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set() Florian Westphal netfilter: nf_tables: unconditionally flush pending work before notifier Song Shuai riscv: kexec: Avoid deadlock in kexec crash path Jozef Hopko wifi: wilc1000: fix ies_len type in connect path Shiji Yang gpio: mmio: do not calculate bgpio_bits via "ngpios" Dave Jiang net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() Jiawen Wu net: txgbe: initialize num_q_vectors for MSI/INTx interrupts Sagi Grimberg net: allow skb_datagram_iter to be called from any context Dmitry Torokhov gpiolib: of: fix lookup quirk for MIPS Lantiq Dima Ruinskiy e1000e: Fix S0ix residency on corporate systems Christian Borntraeger KVM: s390: fix LPSWEY handling Jakub Kicinski tcp_metrics: validate source addr length Pavel Skripkin bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MAX Iulia Tanasescu Bluetooth: ISO: Check socket flag instead of hcon Edward Adam Davis Bluetooth: Ignore too large handle values in BIG Luiz Augusto von Dentz Bluetooth: hci_event: Fix setting of unicast qos interval Jianbo Liu net/mlx5e: Add mqprio_rl cleanup and free in mlx5e_priv_cleanup() Chris Mi net/mlx5: E-switch, Create ingress ACL when needed Neal Cardwell UPSTREAM: tcp: fix DSACK undo in fast recovery to call tcp_try_to_open() Marek Vasut net: phy: phy_device: Fix PHY LED blinking code comment Dmitry Antipov mac802154: fix time calculation in ieee802154_configure_durations() Mike Christie vhost_task: Handle SIGKILL by flushing work and exiting Mike Christie vhost: Release worker mutex during flushes Mike Christie vhost: Use virtqueue mutex for swapping worker Len Brown tools/power turbostat: Remember global max_die_id Justin Stitt cdrom: rearrange last_media_change check to avoid unintentional overflow Lu Yao btrfs: scrub: initialize ret in scrub_simple_mirror() to fix compilation warning Holger Dengler s390/pkey: Wipe sensitive data on failure Sven Schnelle s390: Mark psw in __load_psw_mask() as __unitialized Wang Yong jffs2: Fix potential illegal address access in jffs2_free_inode Matthias Schiffer serial: imx: Raise TX trigger level to 8 Tomas Henzl scsi: mpi3mr: Sanitise num_phys Chao Yu f2fs: check validation of fault attrs in f2fs_build_fault_attr() Jose E. Marchesi bpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD Corinna Vinschen igc: fix a log entry using uninitialized netdev John Hubbard selftests/net: fix uninitialized variables Greg Kurz powerpc/xmon: Check cpu id in commands "c#", "dp#" and "dx#" Mickaël Salaün kunit: Handle test faults Mickaël Salaün kunit: Fix timeout message Mike Marshall orangefs: fix out-of-bounds fsid access Michael Ellerman powerpc/64: Set _IO_BASE to POISON_POINTER_DELTA not 0 for CONFIG_PCI=n Heiner Kallweit i2c: i801: Annotate apanel_addr as __ro_after_init Benjamin Gray powerpc/dexcr: Track the DEXCR per-process Ricardo Ribalda media: dvb-frontends: tda10048: Fix integer overflow Ricardo Ribalda media: s2255: Use refcount_t instead of atomic_t for num_channels Ricardo Ribalda media: dvb-frontends: tda18271c2dd: Remove casting during div Simon Horman net: dsa: mv88e6xxx: Correct check for empty list Julien Panis thermal/drivers/mediatek/lvts_thermal: Check NULL ptr on lvts_data StanleyYP Wang wifi: mt76: mt7996: add sanity checks for background radar trigger Felix Fietkau wifi: mt76: replace skb_put with skb_put_zero Niklas Neronin usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB Erick Archer Input: ff-core - prefer struct_size over open coded arithmetic Jean Delvare firmware: dmi: Stop decoding on broken entry Erick Archer sctp: prefer struct_size over open coded arithmetic Samuel Holland riscv: Apply SiFive CIP-1200 workaround to single-ASID sfence.vma Michael Bunk media: dw2102: Don't translate i2c read into write Jesse Zhang drm/amdgpu: fix the warning about the expression (int)size - len Tim Huang drm/amdgpu: fix uninitialized scalar variable warning Alex Hung drm/amd/display: Fix uninitialized variables in DM Alex Hung drm/amd/display: Skip finding free audio for unknown engine_id Alex Hung drm/amd/display: Check pipe offset before setting vblank Alex Hung drm/amd/display: Check index msg_id before read or write Ma Jun drm/amdgpu: Initialize timestamp for some legacy SOCs Jesse Zhang drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc Ma Jun drm/amdgpu: Fix uninitialized variable warnings Fei Shao media: mediatek: vcodec: Only free buffer VA that is not NULL Hailey Mothershead crypto: aead,cipher - zeroize key buffer after use Atish Patra RISC-V: KVM: Fix the initial sample period value Eduard Zingerman selftests/bpf: dummy_st_ops should reject 0 for non-nullable params Eduard Zingerman selftests/bpf: do not pass NULL for non-nullable params in dummy_st_ops Eduard Zingerman selftests/bpf: adjust dummy_st_ops_success to detect additional error Guanrui Huang irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc John Meneghini scsi: qedf: Make qedf_execute_tmf() non-preemptible Michael Guralnik IB/core: Implement a limit on UMAD receive List Ricardo Ribalda media: dvb-usb: dib0700_devices: Add missing release_firmware() Ricardo Ribalda media: dvb: as102-fe: Fix as10x_register_addr packing Mahesh Salgaonkar powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt. Erico Nunes drm/lima: fix shared irq handling on driver remove Chenghai Huang crypto: hisilicon/debugfs - Fix debugfs uninit process issue George Stark leds: an30259a: Use devm_mutex_init() for mutex initialization George Stark locking/mutex: Introduce devm_mutex_init() ------------- Diffstat: Makefile | 4 +- arch/arm64/boot/dts/rockchip/rk3566-quartz64-b.dts | 2 +- arch/powerpc/include/asm/interrupt.h | 10 ++ arch/powerpc/include/asm/io.h | 2 +- arch/powerpc/include/asm/percpu.h | 10 ++ arch/powerpc/include/asm/processor.h | 1 + arch/powerpc/kernel/head_64.S | 5 +- arch/powerpc/kernel/process.c | 10 ++ arch/powerpc/kernel/ptrace/ptrace-view.c | 7 +- arch/powerpc/kernel/setup_64.c | 2 + arch/powerpc/kexec/core_64.c | 11 ++ arch/powerpc/platforms/pseries/kexec.c | 8 -- arch/powerpc/platforms/pseries/pseries.h | 1 - arch/powerpc/platforms/pseries/setup.c | 1 - arch/powerpc/xmon/xmon.c | 6 +- arch/riscv/include/asm/errata_list.h | 12 +- arch/riscv/include/asm/tlbflush.h | 19 ++- arch/riscv/kernel/machine_kexec.c | 10 +- arch/riscv/kvm/vcpu_pmu.c | 2 +- arch/riscv/mm/tlbflush.c | 23 ---- arch/s390/include/asm/kvm_host.h | 1 + arch/s390/include/asm/processor.h | 2 +- arch/s390/kvm/kvm-s390.c | 1 + arch/s390/kvm/kvm-s390.h | 15 +++ arch/s390/kvm/priv.c | 32 +++++ crypto/aead.c | 3 +- crypto/cipher.c | 3 +- drivers/base/regmap/regmap-i2c.c | 3 +- drivers/block/null_blk/zoned.c | 11 ++ drivers/bluetooth/hci_bcm4377.c | 2 +- drivers/bluetooth/hci_qca.c | 18 ++- drivers/cdrom/cdrom.c | 2 +- drivers/clk/mediatek/clk-mt8183-mfgcfg.c | 1 + drivers/clk/mediatek/clk-mtk.c | 24 ++-- drivers/clk/mediatek/clk-mtk.h | 2 + drivers/clk/qcom/clk-alpha-pll.c | 3 + drivers/clk/qcom/gcc-ipq9574.c | 10 +- drivers/clk/qcom/gcc-sm6350.c | 10 +- drivers/clk/sunxi-ng/ccu_common.c | 18 ++- drivers/crypto/hisilicon/debugfs.c | 21 +++- drivers/firmware/dmi_scan.c | 11 ++ drivers/gpio/gpio-mmio.c | 2 - drivers/gpio/gpiolib-of.c | 22 +++- drivers/gpu/drm/amd/amdgpu/aldebaran.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 5 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 +- drivers/gpu/drm/amd/amdgpu/sienna_cichlid.c | 2 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 4 +- drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 + .../amd/display/dc/irq/dce110/irq_service_dce110.c | 8 +- .../gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c | 8 ++ drivers/gpu/drm/amd/include/atomfirmware.h | 4 +- drivers/gpu/drm/drm_panel_orientation_quirks.c | 7 ++ drivers/gpu/drm/lima/lima_gp.c | 2 + drivers/gpu/drm/lima/lima_mmu.c | 5 + drivers/gpu/drm/lima/lima_pp.c | 4 + drivers/gpu/drm/nouveau/nouveau_connector.c | 3 + drivers/i2c/busses/i2c-i801.c | 2 +- drivers/i2c/busses/i2c-pnx.c | 48 ++------ drivers/infiniband/core/user_mad.c | 21 +++- drivers/input/ff-core.c | 7 +- drivers/irqchip/irq-gic-v3-its.c | 2 - drivers/leds/leds-an30259a.c | 14 +-- drivers/media/dvb-frontends/as102_fe_types.h | 2 +- drivers/media/dvb-frontends/tda10048.c | 9 +- drivers/media/dvb-frontends/tda18271c2dd.c | 4 +- .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 22 ++-- .../mediatek/vcodec/encoder/venc/venc_h264_if.c | 5 +- drivers/media/usb/dvb-usb/dib0700_devices.c | 18 ++- drivers/media/usb/dvb-usb/dw2102.c | 120 +++++++++++-------- drivers/media/usb/s2255/s2255drv.c | 20 ++-- drivers/mtd/nand/raw/nand_base.c | 68 ++++++----- drivers/mtd/nand/raw/rockchip-nand-controller.c | 6 +- drivers/net/bonding/bond_options.c | 6 +- drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 1 + drivers/net/dsa/mv88e6xxx/chip.c | 4 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 +- drivers/net/ethernet/intel/e1000e/netdev.c | 132 ++++++++++----------- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 + .../mellanox/mlx5/core/esw/acl/ingress_ofld.c | 37 ++++-- .../net/ethernet/mellanox/mlxsw/core_linecards.c | 1 + .../ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 2 +- drivers/net/ethernet/wangxun/libwx/wx_lib.c | 1 + drivers/net/ntb_netdev.c | 2 +- .../net/wireless/mediatek/mt76/mt76_connac_mcu.c | 10 +- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 2 +- .../net/wireless/mediatek/mt76/mt7996/debugfs.c | 5 + drivers/net/wireless/mediatek/mt76/mt7996/mcu.c | 5 +- drivers/net/wireless/microchip/wilc1000/hif.c | 3 +- drivers/nfc/virtual_ncidev.c | 4 + drivers/nvme/host/multipath.c | 2 +- drivers/nvme/host/pci.c | 3 +- drivers/nvme/target/core.c | 9 ++ drivers/platform/x86/toshiba_acpi.c | 31 +++-- drivers/platform/x86/touchscreen_dmi.c | 36 ++++++ drivers/s390/crypto/pkey_api.c | 4 +- drivers/scsi/mpi3mr/mpi3mr_transport.c | 10 ++ drivers/scsi/qedf/qedf_io.c | 6 +- drivers/spi/spi-cadence-xspi.c | 20 +++- drivers/thermal/mediatek/lvts_thermal.c | 2 + drivers/tty/serial/imx.c | 2 +- drivers/usb/host/xhci-ring.c | 5 +- drivers/vhost/scsi.c | 17 ++- drivers/vhost/vhost.c | 118 ++++++++++++++---- drivers/vhost/vhost.h | 2 + fs/btrfs/block-group.c | 13 +- fs/btrfs/scrub.c | 2 +- fs/f2fs/f2fs.h | 12 +- fs/f2fs/super.c | 27 +++-- fs/f2fs/sysfs.c | 14 ++- fs/jffs2/super.c | 1 + fs/nilfs2/alloc.c | 18 ++- fs/nilfs2/alloc.h | 4 +- fs/nilfs2/dat.c | 2 +- fs/nilfs2/dir.c | 6 + fs/nilfs2/ifile.c | 7 +- fs/nilfs2/nilfs.h | 10 +- fs/nilfs2/the_nilfs.c | 6 + fs/nilfs2/the_nilfs.h | 2 +- fs/ntfs3/xattr.c | 5 +- fs/orangefs/super.c | 3 +- include/kunit/try-catch.h | 3 - include/linux/fsnotify.h | 8 +- include/linux/lsm_hook_defs.h | 2 +- include/linux/mutex.h | 27 +++++ include/linux/phy.h | 2 +- include/linux/sched/vhost_task.h | 3 +- include/linux/security.h | 5 +- include/uapi/linux/cn_proc.h | 3 +- kernel/auditfilter.c | 5 +- kernel/cpu.c | 3 + kernel/dma/map_benchmark.c | 3 + kernel/exit.c | 2 + kernel/kthread.c | 1 + kernel/locking/mutex-debug.c | 12 ++ kernel/vhost_task.c | 53 ++++++--- lib/kunit/try-catch.c | 22 ++-- mm/page-writeback.c | 32 ++++- net/bluetooth/hci_conn.c | 15 ++- net/bluetooth/hci_event.c | 26 +++- net/bluetooth/iso.c | 3 +- net/core/datagram.c | 19 ++- net/ipv4/inet_diag.c | 2 + net/ipv4/tcp_input.c | 2 +- net/ipv4/tcp_metrics.c | 1 + net/mac802154/main.c | 14 ++- net/netfilter/nf_tables_api.c | 3 +- net/sctp/socket.c | 7 +- scripts/link-vmlinux.sh | 2 +- security/apparmor/audit.c | 6 +- security/apparmor/include/audit.h | 2 +- security/integrity/ima/ima.h | 2 +- security/integrity/ima/ima_policy.c | 15 ++- security/security.c | 6 +- security/selinux/include/audit.h | 4 +- security/selinux/ss/services.c | 5 +- security/smack/smack_lsm.c | 4 +- sound/core/ump.c | 8 ++ sound/pci/hda/patch_realtek.c | 9 ++ tools/lib/bpf/bpf_core_read.h | 1 + tools/power/x86/turbostat/turbostat.c | 10 +- .../selftests/bpf/prog_tests/dummy_st_ops.c | 34 +++++- .../selftests/bpf/progs/dummy_st_ops_success.c | 15 ++- tools/testing/selftests/net/gro.c | 3 + tools/testing/selftests/net/ip_local_port_range.c | 2 +- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 2 +- tools/testing/selftests/net/msg_zerocopy.c | 14 ++- 170 files changed, 1283 insertions(+), 570 deletions(-) . From: Changhuang Liang To: Mauro Carvalho Chehab , Greg Kroah-Hartman , Sakari Ailus , Hans Verkuil , Laurent Pinchart , Jean-Michel Hautbois , Benjamin Gaignard , Tomi Valkeinen , Mingjia Zhang Cc: Jack Zhu , Keith Zhao , Changhuang Liang , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH v5 00/14] Add ISP 3A for StarFive Date: Tue, 9 Jul 2024 01:38:10 -0700 Message-Id: <20240709083824.430473-1-changhuang.liang@starfivetech.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271943 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-staging,org.kernel.vger.linux-media Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series implements the ISP 3A function to the Camera Subsystem on StarFive JH7110 SoC. The series has been tested on the VisionFive 2 board. This series is based on top of the master branch of media_stage repository, which is tested with a v4l2-compliance compiled from the git repo (git://linuxtv.org/v4l-utils.git). changes since v4: - Rebase on top of the master branch of media_stage repository. - Insert a new PATCH 13 - PATCH 1: 1. Fix spelling error: - corsstakl -> crosstalk - balck -> black - magbitude -> magnitude - FALG -> FLAG 2. Exchange of the values of JH7110_ISP_SC_FLAG_AE_AF and JH7110_ISP_SC_FLAG_AWB - PATCH 8: 1. Synchronous spelling error: FALG -> FLAG 2. Add: if (*num_planes) return sizes[0] < sizeof(struct jh7110_isp_sc_buffer) ? -EINVAL : 0; - PATCH 11: 1. Drop read hook. 2. Add: if (*num_planes) return sizes[0] < sizeof(struct jh7110_isp_params_buffer) ? -EINVAL : 0; - PATCH 12: 1. Add: ready_buf->vb.vb2_buf.timestamp = ktime_get_ns(); ready_buf->vb.sequence = output->buffers.sequence++; to fix "v4l2-compliance -s" Failed. v4: https://lore.kernel.org/all/20240402100011.13480-1-changhuang.liang@starfivetech.com/ changes since v3: - Rebased on top of the master branch of media_stage repository and patch [1][2]. - Replaced "stf_get_isp_scd_type" with "stf_isp_get_scd_type" in PATCH 8. v3: https://lore.kernel.org/all/20240205090424.40302-1-changhuang.liang@starfivetech.com/ changes since v2: - Rebased on top of the master branch of media_stage repository. - Added helper function "media_entity_remove_links" in PATCH 8 and PATCH 11 to cleanup links. v2: https://lore.kernel.org/all/20240111084120.16685-1-changhuang.liang@starfivetech.com/ changes since v1: - Rebased on top of the master branch of media_stage repository. - Documentated ISP submodule. - Added new ISP parameters format and document it. - Added a meta output video device and link to ISP subdev. - Replaced control with meta output video buffer for write ISP parameters. - Separated buffer operation which can use for capture and output device. - Droped ISP frame sync event. v1: https://lore.kernel.org/all/20231214065027.28564-1-changhuang.liang@starfivetech.com/ The following are the media graph for the device and the v4l2-compliance output. ========================================================================================== [the media graph]: digraph board { rankdir=TB n00000001 [label="{{ 0 | 1} | stf_isp\n/dev/v4l-subdev0 | { 2 | 3}}", shape=Mrecord, style=filled, fillcolor=green] n00000001:port2 -> n0000000e n00000001:port3 -> n00000012 [style=dashed] n00000006 [label="output_params\n/dev/video0", shape=box, style=filled, fillcolor=yellow] n00000006 -> n00000001:port1 [style=dashed] n0000000a [label="capture_raw\n/dev/video1", shape=box, style=filled, fillcolor=yellow] n0000000e [label="capture_yuv\n/dev/video2", shape=box, style=filled, fillcolor=yellow] n00000012 [label="capture_scd\n/dev/video3", shape=box, style=filled, fillcolor=yellow] n0000001c [label="{{ 0} | cdns_csi2rx.19800000.csi-bridge\n/dev/v4l-subdev1 | { 1 | 2 | 3 | 4}}", shape=Mrecord, style=filled, fillcolor=green] n0000001c:port1 -> n00000001:port0 [style=dashed] n0000001c:port1 -> n0000000a [style=dashed] n00000026 [label="{{} | imx219 6-0010\n/dev/v4l-subdev2 | { 0}}", shape=Mrecord, style=filled, fillcolor=green] n00000026:port0 -> n0000001c:port0 [style=bold] } [v4l2-compliance test]: # ./v4l2-compliance -s -d /dev/video0 v4l2-compliance 1.27.0-5220, 64 bits, 64-bit time_t v4l2-compliance SHA: 8387e3673837 2024-07-01 11:09:32 Compliance test for starfive-camss device /dev/video0: Driver Info: Driver name : starfive-camss Card type : Starfive Camera Subsystem Bus info : platform:19840000.isp Driver version : 6.10.0 Capabilities : 0xac200000 Metadata Output I/O MC Streaming Extended Pix Format Device Capabilities Device Caps : 0x2c200000 Metadata Output I/O MC Streaming Extended Pix Format Media Driver Info: Driver name : starfive-camss Model : Starfive Camera Subsystem Serial : Bus info : platform:19840000.isp Media version : 6.10.0 Hardware revision: 0x00000000 (0) Driver version : 6.10.0 Interface Info: ID : 0x03000008 Type : V4L Video Entity Info: ID : 0x00000006 (6) Name : output_params Function : V4L2 I/O Pad 0x01000007 : 0: Source Link 0x0200001a: to remote pad 0x1000003 of entity 'stf_isp' (Image Signal Processor): Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK test invalid ioctls: OK Allow for multiple opens: test second /dev/video0 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK (Not Supported) test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 0 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 1 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls (Output 0): test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls (Output 0): test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls (Output 0): test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls (Output 0): test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test CREATE_BUFS maximum buffers: OK test VIDIOC_REMOVE_BUFS: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Test output 0: Streaming ioctls: test read/write: OK (Not Supported) test blocking wait: OK test MMAP (no poll): OK test MMAP (select): OK test MMAP (epoll): OK test USERPTR (no poll): OK (Not Supported) test USERPTR (select): OK (Not Supported) test DMABUF: Cannot test, specify --expbuf-device Total for starfive-camss device /dev/video0: 55, Succeeded: 55, Failed: 0, Warnings: 0 # ./v4l2-compliance -s -d /dev/video3 v4l2-compliance 1.27.0-5220, 64 bits, 64-bit time_t v4l2-compliance SHA: 8387e3673837 2024-07-01 11:09:32 Compliance test for starfive-camss device /dev/video3: Driver Info: Driver name : starfive-camss Card type : Starfive Camera Subsystem Bus info : platform:19840000.isp Driver version : 6.10.0 Capabilities : 0xa4a00000 Metadata Capture I/O MC Streaming Extended Pix Format Device Capabilities Device Caps : 0x24a00000 Metadata Capture I/O MC Streaming Extended Pix Format Media Driver Info: Driver name : starfive-camss Model : Starfive Camera Subsystem Serial : Bus info : platform:19840000.isp Media version : 6.10.0 Hardware revision: 0x00000000 (0) Driver version : 6.10.0 Interface Info: ID : 0x03000014 Type : V4L Video Entity Info: ID : 0x00000012 (18) Name : capture_scd Function : V4L2 I/O Pad 0x01000013 : 0: Sink Link 0x02000018: from remote pad 0x1000005 of entity 'stf_isp' (Image Signal Processor): Data Required ioctls: test MC information (see 'Media Driver Info' above): OK test VIDIOC_QUERYCAP: OK test invalid ioctls: OK Allow for multiple opens: test second /dev/video3 open: OK test VIDIOC_QUERYCAP: OK test VIDIOC_G/S_PRIORITY: OK test for unlimited opens: OK Debug ioctls: test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported) test VIDIOC_LOG_STATUS: OK (Not Supported) Input ioctls: test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported) test VIDIOC_ENUMAUDIO: OK (Not Supported) test VIDIOC_G/S/ENUMINPUT: OK test VIDIOC_G/S_AUDIO: OK (Not Supported) Inputs: 1 Audio Inputs: 0 Tuners: 0 Output ioctls: test VIDIOC_G/S_MODULATOR: OK (Not Supported) test VIDIOC_G/S_FREQUENCY: OK (Not Supported) test VIDIOC_ENUMAUDOUT: OK (Not Supported) test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported) test VIDIOC_G/S_AUDOUT: OK (Not Supported) Outputs: 0 Audio Outputs: 0 Modulators: 0 Input/Output configuration ioctls: test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported) test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported) test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported) test VIDIOC_G/S_EDID: OK (Not Supported) Control ioctls (Input 0): test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported) test VIDIOC_QUERYCTRL: OK (Not Supported) test VIDIOC_G/S_CTRL: OK (Not Supported) test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported) test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported) test VIDIOC_G/S_JPEGCOMP: OK (Not Supported) Standard Controls: 0 Private Controls: 0 Format ioctls (Input 0): test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK test VIDIOC_G/S_PARM: OK (Not Supported) test VIDIOC_G_FBUF: OK (Not Supported) test VIDIOC_G_FMT: OK test VIDIOC_TRY_FMT: OK test VIDIOC_S_FMT: OK test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported) test Cropping: OK (Not Supported) test Composing: OK (Not Supported) test Scaling: OK (Not Supported) Codec ioctls (Input 0): test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported) test VIDIOC_G_ENC_INDEX: OK (Not Supported) test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported) Buffer ioctls (Input 0): test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK test CREATE_BUFS maximum buffers: OK test VIDIOC_REMOVE_BUFS: OK test VIDIOC_EXPBUF: OK test Requests: OK (Not Supported) Test input 0: Streaming ioctls: test read/write: OK (Not Supported) test blocking wait: OK test MMAP (no poll): OK test MMAP (select): OK test MMAP (epoll): OK test USERPTR (no poll): OK (Not Supported) test USERPTR (select): OK (Not Supported) test DMABUF: Cannot test, specify --expbuf-device Total for starfive-camss device /dev/video3: 55, Succeeded: 55, Failed: 0, Warnings: 0 Changhuang Liang (14): media: starfive: Add JH7110 ISP module definitions media: Documentation: Add description for StarFive ISP metadata formats media: videodev2.h, v4l2-ioctl: Add StarFive ISP meta buffer format staging: media: starfive: Add a params sink pad and a scd source pad for ISP staging: media: starfive: Separate buffer from ISP hardware operation staging: media: starfive: Separate buffer be a common file staging: media: starfive: Separate ISP hardware from capture device staging: media: starfive: Add for StarFive ISP 3A SC staging: media: starfive: Update ISP initialise config for 3A staging: media: starfive: Add V4L2_CAP_IO_MC capability staging: media: starfive: Add ISP params video device staging: media: starfive: Add ISP parameters hardware configure staging: media: starfive: Drop read support for video capture devices admin-guide: media: Update documents for StarFive Camera Subsystem .../admin-guide/media/starfive_camss.rst | 11 +- .../media/starfive_camss_graph.dot | 22 +- .../media/v4l/metafmt-starfive-isp.rst | 75 ++ MAINTAINERS | 2 + drivers/media/v4l2-core/v4l2-ioctl.c | 2 + drivers/staging/media/starfive/camss/Makefile | 3 + .../staging/media/starfive/camss/stf-buffer.c | 166 ++++ .../staging/media/starfive/camss/stf-buffer.h | 53 ++ .../staging/media/starfive/camss/stf-camss.c | 38 +- .../staging/media/starfive/camss/stf-camss.h | 12 + .../media/starfive/camss/stf-capture.c | 248 +----- .../media/starfive/camss/stf-capture.h | 22 - .../media/starfive/camss/stf-isp-hw-ops.c | 722 +++++++++++++++++ .../media/starfive/camss/stf-isp-params.c | 240 ++++++ .../staging/media/starfive/camss/stf-isp.c | 77 +- .../staging/media/starfive/camss/stf-isp.h | 188 +++++ .../staging/media/starfive/camss/stf-output.c | 83 ++ .../staging/media/starfive/camss/stf-output.h | 22 + .../staging/media/starfive/camss/stf-video.c | 147 +++- .../staging/media/starfive/camss/stf-video.h | 11 +- include/uapi/linux/jh7110-isp.h | 739 ++++++++++++++++++ include/uapi/linux/videodev2.h | 4 + 22 files changed, 2608 insertions(+), 279 deletions(-) create mode 100644 Documentation/userspace-api/media/v4l/metafmt-starfive-isp.rst create mode 100644 drivers/staging/media/starfive/camss/stf-buffer.c create mode 100644 drivers/staging/media/starfive/camss/stf-buffer.h create mode 100644 drivers/staging/media/starfive/camss/stf-isp-params.c create mode 100644 drivers/staging/media/starfive/camss/stf-output.c create mode 100644 drivers/staging/media/starfive/camss/stf-output.h create mode 100644 include/uapi/linux/jh7110-isp.h -- 2.25.1 . From: Konrad Dybcio Date: Tue, 09 Jul 2024 13:15:40 +0200 Subject: [PATCH] drm/msm/adreno: Assign msm_gpu->pdev earlier to avoid nullptrs X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240709-topic-adreno_crash2-v1-1-9def36c3337d@linaro.org> To: Rob Clark , Sean Paul , Abhinav Kumar , Dmitry Baryshkov , David Airlie , Daniel Vetter Cc: Marijn Suijten , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Konrad Dybcio Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271950 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-arm-msm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail There are some cases, such as the one uncovered by Commit 46d4efcccc68 ("drm/msm/a6xx: Avoid a nullptr dereference when speedbin setting fails") where msm_gpu_cleanup() : platform_set_drvdata(gpu->pdev, NULL); is called on gpu->pdev == NULL, as the GPU device has not been fully initialized yet. Turns out that there's more than just the aforementioned path that causes this to happen (e.g. the case when there's speedbin data in the catalog, but opp-supported-hw is missing in DT). Assigning msm_gpu->pdev earlier seems like the least painful solution to this, therefore do so. Signed-off-by: Konrad Dybcio --- There's no fixes tag on purpose, as there doesn't seem to be a good single commit to blame. --- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 + drivers/gpu/drm/msm/msm_gpu.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 1c6626747b98..949d65437704 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -1083,6 +1083,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, adreno_gpu->chip_id = config->chip_id; gpu->allow_relocs = config->info->family < ADRENO_6XX_GEN1; + gpu->pdev = pdev; /* Only handle the core clock when GMU is not in use (or is absent). */ if (adreno_has_gmu_wrapper(adreno_gpu) || diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index 3666b42b4ecd..a274b8466423 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c @@ -931,7 +931,6 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev, if (IS_ERR(gpu->gpu_cx)) gpu->gpu_cx = NULL; - gpu->pdev = pdev; platform_set_drvdata(pdev, &gpu->adreno_smmu); msm_devfreq_init(gpu); --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-topic-adreno_crash2-1c9fffd9bce8 Best regards, -- Konrad Dybcio . From: Hanna Czenczek To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, virtualization@lists.linux.dev Cc: Hanna Czenczek , Miklos Szeredi , German Maglione , Stefan Hajnoczi , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Jonathan Corbet , Vivek Goyal Subject: [PATCH 0/2] virtio-fs: Add 'file' mount option Date: Tue, 9 Jul 2024 13:19:16 +0200 Message-ID: <20240709111918.31233-1-hreitz@redhat.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271956 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.virtualization,org.kernel.vger.linux-doc,org.kernel.vger.linux-fsdevel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi, We want to be able to mount filesystems that just consist of one regular file via virtio-fs, i.e. no root directory, just a file as the root node. While that is possible via FUSE itself (through the 'rootmode' mount option, which is automatically set by the fusermount help program to match the mount point's inode mode), there is no virtio-fs option yet that would allow changing the rootmode from S_IFDIR to S_IFREG. To do that, this series introduces a new 'file' mount option that does precisely that. Alternatively, we could provide the same 'rootmode' option that FUSE has, but as laid out in patch 1's commit description, that option is a bit cumbersome for virtio-fs (in a way that it is not for FUSE), and its usefulness as a more general option is limited. Hanna Czenczek (2): virtio-fs: Add 'file' mount option virtio-fs: Document 'file' mount option fs/fuse/virtio_fs.c | 9 ++++++++- Documentation/filesystems/virtiofs.rst | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) -- 2.45.1 . From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, linux@roeck-us.net, shuah@kernel.org, patches@kernelci.org, lkft-triage@lists.linaro.org, pavel@denx.de, jonathanh@nvidia.com, f.fainelli@gmail.com, sudipm.mukherjee@gmail.com, srw@sladewatkins.net, rwarsow@gmx.de, conor@kernel.org, allen.lkml@gmail.com, broonie@kernel.org Subject: [PATCH 6.9 000/197] 6.9.9-rc1 review Date: Tue, 9 Jul 2024 13:07:34 +0200 Message-ID: <20240709110708.903245467@linuxfoundation.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: ignore X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.9.9-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-6.9.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 6.9.9-rc1 X-KernelTest-Deadline: 2024-07-11T11:07+00:00 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271960 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.patches,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This is the start of the stable review cycle for the 6.9.9 release. There are 197 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know. Responses should be made by Thu, 11 Jul 2024 11:06:25 +0000. Anything received after that time might be too late. The whole patch series can be found in one patch at: https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.9.9-rc1.gz or in the git tree and branch at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.9.y and the diffstat can be found below. thanks, greg k-h ------------- Pseudo-Shortlog of commits: Greg Kroah-Hartman Linux 6.9.9-rc1 Andrii Nakryiko libbpf: don't close(-1) in multi-uprobe feature detector Damien Le Moal null_blk: Do not allow runt zone with zone capacity smaller then zone size Armin Wolf hwmon: (dell-smm) Add Dell G15 5511 to fan control whitelist Alex Deucher drm/amdgpu: silence UBSAN warning Takashi Iwai ALSA: ump: Set default protocol when not given explicitly Witold Sadowski spi: cadence: Ensure data lines set to low during dummy-cycle period Edward Adam Davis nfc/nci: Add the inconsistency check between the input data length and count Masahiro Yamada kbuild: fix short log for AS in link-vmlinux.sh Sagi Grimberg nvmet: fix a possible leak when destroy a ctrl during qp establishment Hannes Reinecke block: check for max_hw_sectors underflow hmtheboy154 platform/x86: touchscreen_dmi: Add info for the EZpad 6s Pro hmtheboy154 platform/x86: touchscreen_dmi: Add info for GlobalSpace SolT IVW 11.6" tablet Jim Wylder regmap-i2c: Subtract reg size from max_write Andrii Nakryiko libbpf: detect broken PID filtering logic for multi-uprobe Kundan Kumar nvme: adjust multiples of NVME_CTRL_PAGE_SIZE in offset Christian Brauner swap: yield device immediately Matt Jan connector: Fix invalid conversion in cn_proc.h Hawking Zhang drm/amdgpu: correct hbm field in boot status Fedor Pchelkin dma-mapping: benchmark: avoid needless copy_to_user if benchmark fails Nilay Shroff nvme-multipath: find NUMA path only for online numa-node Mike Christie vhost-scsi: Handle vhost_vq_work_queue failures for events Jian-Hong Pan ALSA: hda/realtek: Enable headset mic of JP-IK LEAP W502 with ALC897 Lang Yu drm/amdkfd: Let VRAM allocations go to GTT domain on small APUs Konstantin Komarov fs/ntfs3: Mark volume as dirty if xattr is broken Piotr Wojtaszczyk i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr Pin-yen Lin clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg Gabor Juhos clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs Luca Weiss clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents Dragan Simic arm64: dts: rockchip: Fix the DCDC_REG2 minimum voltage on Quartz64 Model B Mickaël Salaün selftests/harness: Fix tests timeout and race condition Stefan Haberland s390/dasd: Fix invalid dereferencing of indirect CCW data pointer Ghadi Elie Rahme bnx2x: Fix multiple UBSAN array-index-out-of-bounds Yijie Yang net: stmmac: dwmac-qcom-ethqos: fix error array size Christian Brauner fs: don't misleadingly warn during thaw operations Val Packett mtd: rawnand: rockchip: ensure NVDDR timings are rejected Miquel Raynal mtd: rawnand: Bypass a couple of sanity checks during NAND identification Miquel Raynal mtd: rawnand: Fix the nand_read_data_op() early check Miquel Raynal mtd: rawnand: Ensure ECC configuration is propagated to upper layers Jann Horn filelock: Remove locks reliably when fcntl/close race is detected Thomas Zimmermann firmware: sysfb: Fix reference count of sysfb parent device Jinglin Wen powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at address 0 Nicholas Piggin powerpc/pseries: Fix scv instruction crash with kexec Frank Oltmanns clk: sunxi-ng: common: Don't call hw_to_ccu_common on hw without common Md Sadre Alam clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag John Schoenick drm: panel-orientation-quirks: Add quirk for Valve Galileo Alex Deucher drm/amdgpu/atomfirmware: silence UBSAN warning Ma Ke drm/nouveau: fix null pointer dereference in nouveau_connector_get_modes Thomas Hellström drm/ttm: Always take the bo delayed cleanup path for imported bos Matthew Auld drm/xe: fix error handling in xe_migrate_update_pgtables Jan Kara Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again" Jan Kara fsnotify: Do not generate events for O_PATH file descriptors Jimmy Assarsson can: kvaser_usb: Explicitly initialize family in leafimx driver_info struct Zijun Hu Bluetooth: qca: Fix BT enable failure again for QCA6390 after warm reboot Sven Peter Bluetooth: Add quirk to ignore reserved PHY bits in LE Extended Adv Report Hector Martin Bluetooth: hci_bcm4377: Fix msgid release Nathan Chancellor scsi: mpi3mr: Use proper format specifier in mpi3mr_sas_port_add() Nathan Chancellor f2fs: Add inline to f2fs_build_fault_attr() stub Boris Burkov btrfs: fix folio refcount in __alloc_dummy_extent_buffer() Naohiro Aota btrfs: fix adding block group to a reclaim list and the unused list during reclaim Naohiro Aota btrfs: zoned: fix calc_available_free_space() for zoned mode Jan Kara mm: avoid overflows in dirty throttling logic Jinliang Zheng mm: optimize the redundant loop of mm_update_owner_next() Ryusuke Konishi nilfs2: fix incorrect inode allocation from reserved inodes Ryusuke Konishi nilfs2: add missing check for inode numbers on directory entries Ryusuke Konishi nilfs2: fix inode number range checks Sasha Neftin Revert "igc: fix a log entry using uninitialized netdev" Armin Wolf platform/x86: toshiba_acpi: Fix quickstart quirk handling Dmitry Torokhov gpiolib: of: add polarity quirk for TSC2005 Pavan Chebbi bnxt_en: Fix the resource check condition for RSS contexts Aleksandr Mishin mlxsw: core_linecards: Fix double memory deallocation in case of invalid INI file Shigeru Yoshida inet_diag: Initialize pad field in struct inet_diag_req_v2 Kuniyuki Iwashima tcp: Don't flag tcp_sk(sk)->rx_opt.saw_unknown for TCP AO. Matt Roper drm/xe/mcr: Avoid clobbering DSS steering Zijian Zhang selftests: make order checking verbose in msg_zerocopy selftest Zijian Zhang selftests: fix OOM in msg_zerocopy selftest Petr Oros ice: use proper macro for testing bit Jacob Keller ice: Reject pin requests with unsupported flags Jacob Keller ice: Don't process extts if PTP is disabled Milena Olech ice: Fix improper extts handling Sam Sun bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set() Radu Rendec net: rswitch: Avoid use-after-free in rswitch_poll() Florian Westphal netfilter: nf_tables: unconditionally flush pending work before notifier Song Shuai riscv: kexec: Avoid deadlock in kexec crash path Jozef Hopko wifi: wilc1000: fix ies_len type in connect path Shiji Yang gpio: mmio: do not calculate bgpio_bits via "ngpios" Eric Farman s390/vfio_ccw: Fix target addresses of TIC CCWs Furong Xu <0x1207@gmail.com> net: stmmac: enable HW-accelerated VLAN stripping for gmac4 only Thomas Huth drm/fbdev-generic: Fix framebuffer on big endian devices Dave Jiang net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() Bartosz Golaszewski net: phy: aquantia: add missing include guards Qu Wenruo btrfs: always do the basic checks for btrfs_qgroup_inherit structure Jiawen Wu net: txgbe: free isb resources at the right time Jiawen Wu net: txgbe: add extra handle for MSI/INTx into thread irq handle Jiawen Wu net: txgbe: remove separate irq request for MSI and INTx Jiawen Wu net: txgbe: initialize num_q_vectors for MSI/INTx interrupts Sagi Grimberg net: allow skb_datagram_iter to be called from any context Dmitry Torokhov gpiolib: of: fix lookup quirk for MIPS Lantiq Dima Ruinskiy e1000e: Fix S0ix residency on corporate systems Christian Borntraeger KVM: s390: fix LPSWEY handling Jakub Kicinski tcp_metrics: validate source addr length Pavel Skripkin bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MAX Iulia Tanasescu Bluetooth: ISO: Check socket flag instead of hcon Edward Adam Davis Bluetooth: Ignore too large handle values in BIG Luiz Augusto von Dentz Bluetooth: hci_event: Fix setting of unicast qos interval Leon Romanovsky net/mlx5e: Approximate IPsec per-SA payload data bytes count Leon Romanovsky net/mlx5e: Present succeeded IPsec SA bytes and packet Jianbo Liu net/mlx5e: Add mqprio_rl cleanup and free in mlx5e_priv_cleanup() Chris Mi net/mlx5: E-switch, Create ingress ACL when needed Neal Cardwell UPSTREAM: tcp: fix DSACK undo in fast recovery to call tcp_try_to_open() Johannes Berg wifi: mac80211: fix BSS_CHANGED_UNSOL_BCAST_PROBE_RESP Marek Vasut net: phy: phy_device: Fix PHY LED blinking code comment Eric Dumazet wifi: cfg80211: restrict NL80211_ATTR_TXQ_QUANTUM values Dmitry Antipov mac802154: fix time calculation in ieee802154_configure_durations() Li Zhang virtio-pci: Check if is_avq is NULL Mike Christie vhost_task: Handle SIGKILL by flushing work and exiting Mike Christie vhost: Release worker mutex during flushes Mike Christie vhost: Use virtqueue mutex for swapping worker Patryk Wlazlyn tools/power turbostat: Avoid possible memory corruption due to sparse topology IDs Len Brown tools/power turbostat: Remember global max_die_id Justin Stitt cdrom: rearrange last_media_change check to avoid unintentional overflow Lu Yao btrfs: scrub: initialize ret in scrub_simple_mirror() to fix compilation warning Holger Dengler s390/pkey: Wipe copies of protected- and secure-keys Holger Dengler s390/pkey: Wipe copies of clear-key structures on failure Holger Dengler s390/pkey: Wipe sensitive data on failure Jules Irenge s390/pkey: Use kfree_sensitive() to fix Coccinelle warnings Sven Schnelle s390: Mark psw in __load_psw_mask() as __unitialized Wang Yong jffs2: Fix potential illegal address access in jffs2_free_inode Matthias Schiffer serial: imx: Raise TX trigger level to 8 Tomas Henzl scsi: mpi3mr: Sanitise num_phys Chao Yu f2fs: check validation of fault attrs in f2fs_build_fault_attr() Jose E. Marchesi bpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD Corinna Vinschen igc: fix a log entry using uninitialized netdev John Hubbard selftests/net: fix uninitialized variables Greg Kurz powerpc/xmon: Check cpu id in commands "c#", "dp#" and "dx#" Mickaël Salaün kunit: Handle test faults Mickaël Salaün kunit: Fix timeout message Mike Marshall orangefs: fix out-of-bounds fsid access Michael Ellerman powerpc/64: Set _IO_BASE to POISON_POINTER_DELTA not 0 for CONFIG_PCI=n Heiner Kallweit i2c: i801: Annotate apanel_addr as __ro_after_init Shailend Chand gve: Account for stopped queues when reading NIC stats Benjamin Gray powerpc/dexcr: Track the DEXCR per-process Wenkai Lin crypto: hisilicon/sec2 - fix for register offset Ricardo Ribalda media: dvb-frontends: tda10048: Fix integer overflow Ricardo Ribalda media: tc358746: Use the correct div_ function Ricardo Ribalda media: i2c: st-mipid02: Use the correct div function Ricardo Ribalda media: s2255: Use refcount_t instead of atomic_t for num_channels Ricardo Ribalda media: dvb-frontends: tda18271c2dd: Remove casting during div Simon Horman net: dsa: mv88e6xxx: Correct check for empty list Julien Panis thermal/drivers/mediatek/lvts_thermal: Check NULL ptr on lvts_data StanleyYP Wang wifi: mt76: mt7996: add sanity checks for background radar trigger Felix Fietkau wifi: mt76: replace skb_put with skb_put_zero Niklas Neronin usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB Erick Archer Input: ff-core - prefer struct_size over open coded arithmetic Kees Cook kunit/fortify: Do not spam logs with fortify WARNs Jean Delvare firmware: dmi: Stop decoding on broken entry Erick Archer sctp: prefer struct_size over open coded arithmetic Mauro Carvalho Chehab media: dw2102: fix a potential buffer overflow Samuel Holland riscv: Apply SiFive CIP-1200 workaround to single-ASID sfence.vma Michael Bunk media: dw2102: Don't translate i2c read into write Jesse Zhang drm/amdgpu: fix the warning about the expression (int)size - len Tim Huang drm/amdgpu: fix uninitialized scalar variable warning Alex Hung drm/amd/display: Fix uninitialized variables in DM Alex Hung drm/amd/display: ASSERT when failing to find index by plane/stream id Alex Hung drm/amd/display: Do not return negative stream id for array Wenjing Liu drm/amd/display: update pipe topology log to support subvp Hersen Wu drm/amd/display: Fix overlapping copy within dml_core_mode_programming Alex Hung drm/amd/display: Skip finding free audio for unknown engine_id Alex Hung drm/amd/display: Check pipe offset before setting vblank Alex Hung drm/amd/display: Check index msg_id before read or write Hersen Wu drm/amd/display: Add NULL pointer check for kzalloc Bob Zhou drm/amdgpu: fix double free err_addr pointer warnings Ma Jun drm/amdgpu: Initialize timestamp for some legacy SOCs Jesse Zhang drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc Ma Jun drm/amdgpu: Fix uninitialized variable warnings Fei Shao media: mediatek: vcodec: Only free buffer VA that is not NULL Hailey Mothershead crypto: aead,cipher - zeroize key buffer after use Atish Patra RISC-V: KVM: Fix the initial sample period value Eduard Zingerman selftests/bpf: dummy_st_ops should reject 0 for non-nullable params Eduard Zingerman bpf: check bpf_dummy_struct_ops program params for test runs Eduard Zingerman selftests/bpf: do not pass NULL for non-nullable params in dummy_st_ops Eduard Zingerman selftests/bpf: adjust dummy_st_ops_success to detect additional error Eduard Zingerman bpf: mark bpf_dummy_struct_ops.test_1 parameter as nullable Guanrui Huang irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc John Meneghini scsi: qedf: Make qedf_execute_tmf() non-preemptible Michael Guralnik IB/core: Implement a limit on UMAD receive List Rodrigo Vivi drm/xe: Add outer runtime_pm protection to xe_live_ktest@xe_dma_buf Zong-Zhe Yang wifi: rtw89: fw: scan offload prohibit all 6 GHz channel if no 6 GHz sband Breno Leitao net: dql: Avoid calling BUG() when WARN() is enough Ricardo Ribalda media: dvb-usb: dib0700_devices: Add missing release_firmware() Ricardo Ribalda media: dvb: as102-fe: Fix as10x_register_addr packing Mahesh Salgaonkar powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt. Erico Nunes drm/lima: fix shared irq handling on driver remove Chenghai Huang crypto: hisilicon/debugfs - Fix debugfs uninit process issue George Stark leds: an30259a: Use devm_mutex_init() for mutex initialization George Stark leds: mlxreg: Use devm_mutex_init() for mutex initialization George Stark locking/mutex: Introduce devm_mutex_init() Babu Moger selftests/resctrl: Fix non-contiguous CBM for AMD ------------- Diffstat: Makefile | 4 +- arch/arm64/boot/dts/rockchip/rk3566-quartz64-b.dts | 2 +- arch/powerpc/include/asm/interrupt.h | 10 ++ arch/powerpc/include/asm/io.h | 2 +- arch/powerpc/include/asm/percpu.h | 10 ++ arch/powerpc/include/asm/processor.h | 1 + arch/powerpc/kernel/head_64.S | 5 +- arch/powerpc/kernel/process.c | 10 ++ arch/powerpc/kernel/ptrace/ptrace-view.c | 7 +- arch/powerpc/kernel/setup_64.c | 2 + arch/powerpc/kexec/core_64.c | 11 ++ arch/powerpc/platforms/pseries/kexec.c | 8 -- arch/powerpc/platforms/pseries/pseries.h | 1 - arch/powerpc/platforms/pseries/setup.c | 1 - arch/powerpc/xmon/xmon.c | 6 +- arch/riscv/include/asm/errata_list.h | 12 +- arch/riscv/include/asm/tlbflush.h | 19 ++- arch/riscv/kernel/machine_kexec.c | 10 +- arch/riscv/kvm/vcpu_pmu.c | 2 +- arch/riscv/mm/tlbflush.c | 23 ---- arch/s390/include/asm/kvm_host.h | 1 + arch/s390/include/asm/processor.h | 2 +- arch/s390/kvm/kvm-s390.c | 1 + arch/s390/kvm/kvm-s390.h | 15 +++ arch/s390/kvm/priv.c | 32 +++++ block/blk-settings.c | 8 +- crypto/aead.c | 3 +- crypto/cipher.c | 3 +- drivers/base/regmap/regmap-i2c.c | 3 +- drivers/block/null_blk/zoned.c | 11 ++ drivers/bluetooth/hci_bcm4377.c | 10 +- drivers/bluetooth/hci_qca.c | 18 ++- drivers/cdrom/cdrom.c | 2 +- drivers/clk/mediatek/clk-mt8183-mfgcfg.c | 1 + drivers/clk/mediatek/clk-mtk.c | 24 ++-- drivers/clk/mediatek/clk-mtk.h | 2 + drivers/clk/qcom/clk-alpha-pll.c | 3 + drivers/clk/qcom/gcc-ipq9574.c | 10 +- drivers/clk/qcom/gcc-sm6350.c | 10 +- drivers/clk/sunxi-ng/ccu_common.c | 18 ++- drivers/crypto/hisilicon/debugfs.c | 21 +++- drivers/crypto/hisilicon/sec2/sec_main.c | 2 +- drivers/firmware/dmi_scan.c | 11 ++ drivers/firmware/sysfb.c | 12 +- drivers/gpio/gpio-mmio.c | 2 - drivers/gpio/gpiolib-of.c | 22 +++- drivers/gpu/drm/amd/amdgpu/aldebaran.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 5 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 20 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 5 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_umc.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 +- drivers/gpu/drm/amd/amdgpu/sienna_cichlid.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 6 +- drivers/gpu/drm/amd/amdkfd/kfd_svm.h | 3 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 +- .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 4 +- .../amd/display/dc/clk_mgr/dcn30/dcn30_clk_mgr.c | 8 ++ .../amd/display/dc/clk_mgr/dcn32/dcn32_clk_mgr.c | 8 ++ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 106 ++++++++++++----- .../drm/amd/display/dc/dml2/display_mode_core.c | 4 +- .../amd/display/dc/dml2/dml2_dc_resource_mgmt.c | 6 +- .../amd/display/dc/irq/dce110/irq_service_dce110.c | 8 +- .../amd/display/dc/resource/dcn30/dcn30_resource.c | 3 + .../amd/display/dc/resource/dcn31/dcn31_resource.c | 5 + .../display/dc/resource/dcn314/dcn314_resource.c | 5 + .../display/dc/resource/dcn315/dcn315_resource.c | 2 + .../display/dc/resource/dcn316/dcn316_resource.c | 2 + .../amd/display/dc/resource/dcn32/dcn32_resource.c | 5 + .../display/dc/resource/dcn321/dcn321_resource.c | 2 + .../amd/display/dc/resource/dcn35/dcn35_resource.c | 2 + .../display/dc/resource/dcn351/dcn351_resource.c | 2 + .../gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c | 8 ++ drivers/gpu/drm/amd/include/atomfirmware.h | 4 +- drivers/gpu/drm/drm_fbdev_generic.c | 3 +- drivers/gpu/drm/drm_panel_orientation_quirks.c | 7 ++ drivers/gpu/drm/lima/lima_gp.c | 2 + drivers/gpu/drm/lima/lima_mmu.c | 5 + drivers/gpu/drm/lima/lima_pp.c | 4 + drivers/gpu/drm/nouveau/nouveau_connector.c | 3 + drivers/gpu/drm/ttm/ttm_bo.c | 1 + drivers/gpu/drm/xe/tests/xe_dma_buf.c | 3 + drivers/gpu/drm/xe/xe_gt_mcr.c | 6 +- drivers/gpu/drm/xe/xe_migrate.c | 8 +- drivers/hwmon/dell-smm-hwmon.c | 8 ++ drivers/i2c/busses/i2c-i801.c | 2 +- drivers/i2c/busses/i2c-pnx.c | 48 ++------ drivers/infiniband/core/user_mad.c | 21 +++- drivers/input/ff-core.c | 7 +- drivers/irqchip/irq-gic-v3-its.c | 2 - drivers/leds/leds-an30259a.c | 14 +-- drivers/leds/leds-mlxreg.c | 14 +-- drivers/media/dvb-frontends/as102_fe_types.h | 2 +- drivers/media/dvb-frontends/tda10048.c | 9 +- drivers/media/dvb-frontends/tda18271c2dd.c | 4 +- drivers/media/i2c/st-mipid02.c | 2 +- drivers/media/i2c/tc358746.c | 3 +- .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c | 22 ++-- .../mediatek/vcodec/encoder/venc/venc_h264_if.c | 5 +- drivers/media/usb/dvb-usb/dib0700_devices.c | 18 ++- drivers/media/usb/dvb-usb/dw2102.c | 120 +++++++++++-------- drivers/media/usb/s2255/s2255drv.c | 20 ++-- drivers/mtd/nand/raw/nand_base.c | 68 ++++++----- drivers/mtd/nand/raw/rockchip-nand-controller.c | 6 +- drivers/net/bonding/bond_options.c | 6 +- drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 1 + drivers/net/dsa/mv88e6xxx/chip.c | 4 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 +- drivers/net/ethernet/google/gve/gve_ethtool.c | 41 ++++++- drivers/net/ethernet/intel/e1000e/netdev.c | 132 ++++++++++----------- drivers/net/ethernet/intel/ice/ice_hwmon.c | 2 +- drivers/net/ethernet/intel/ice/ice_ptp.c | 131 +++++++++++++++----- drivers/net/ethernet/intel/ice/ice_ptp.h | 9 ++ .../ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 46 +++++-- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 + .../mellanox/mlx5/core/esw/acl/ingress_ofld.c | 37 ++++-- .../net/ethernet/mellanox/mlxsw/core_linecards.c | 1 + drivers/net/ethernet/renesas/rswitch.c | 4 +- .../ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 2 +- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 7 +- drivers/net/ethernet/wangxun/libwx/wx_hw.c | 1 + drivers/net/ethernet/wangxun/libwx/wx_lib.c | 10 +- drivers/net/ethernet/wangxun/libwx/wx_type.h | 1 + drivers/net/ethernet/wangxun/ngbe/ngbe_main.c | 2 + drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c | 124 ++++++++----------- drivers/net/ethernet/wangxun/txgbe/txgbe_irq.h | 2 +- drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 9 +- drivers/net/ntb_netdev.c | 2 +- drivers/net/phy/aquantia/aquantia.h | 5 + .../net/wireless/mediatek/mt76/mt76_connac_mcu.c | 10 +- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 2 +- .../net/wireless/mediatek/mt76/mt7996/debugfs.c | 5 + drivers/net/wireless/mediatek/mt76/mt7996/mcu.c | 5 +- drivers/net/wireless/microchip/wilc1000/hif.c | 3 +- drivers/net/wireless/realtek/rtw89/fw.c | 4 + drivers/nfc/virtual_ncidev.c | 4 + drivers/nvme/host/multipath.c | 2 +- drivers/nvme/host/pci.c | 3 +- drivers/nvme/target/core.c | 9 ++ drivers/platform/x86/toshiba_acpi.c | 31 +++-- drivers/platform/x86/touchscreen_dmi.c | 36 ++++++ drivers/s390/block/dasd_eckd.c | 4 +- drivers/s390/block/dasd_fba.c | 2 +- drivers/s390/cio/vfio_ccw_cp.c | 9 +- drivers/s390/crypto/pkey_api.c | 109 ++++++++--------- drivers/scsi/mpi3mr/mpi3mr_transport.c | 10 ++ drivers/scsi/qedf/qedf_io.c | 6 +- drivers/spi/spi-cadence-xspi.c | 20 +++- drivers/thermal/mediatek/lvts_thermal.c | 2 + drivers/tty/serial/imx.c | 2 +- drivers/usb/host/xhci-ring.c | 5 +- drivers/vhost/scsi.c | 17 ++- drivers/vhost/vhost.c | 118 ++++++++++++++---- drivers/vhost/vhost.h | 2 + drivers/virtio/virtio_pci_common.c | 2 +- fs/btrfs/block-group.c | 13 +- fs/btrfs/extent_io.c | 2 +- fs/btrfs/qgroup.c | 10 +- fs/btrfs/scrub.c | 2 +- fs/btrfs/space-info.c | 24 +++- fs/f2fs/f2fs.h | 12 +- fs/f2fs/super.c | 27 +++-- fs/f2fs/sysfs.c | 14 ++- fs/jffs2/super.c | 1 + fs/locks.c | 9 +- fs/nilfs2/alloc.c | 19 ++- fs/nilfs2/alloc.h | 4 +- fs/nilfs2/dat.c | 2 +- fs/nilfs2/dir.c | 6 + fs/nilfs2/ifile.c | 7 +- fs/nilfs2/nilfs.h | 10 +- fs/nilfs2/the_nilfs.c | 6 + fs/nilfs2/the_nilfs.h | 2 +- fs/ntfs3/xattr.c | 5 +- fs/orangefs/super.c | 3 +- fs/super.c | 11 +- include/kunit/try-catch.h | 3 - include/linux/dynamic_queue_limits.h | 3 +- include/linux/fsnotify.h | 8 +- include/linux/mutex.h | 27 +++++ include/linux/phy.h | 2 +- include/linux/sched/vhost_task.h | 3 +- include/net/bluetooth/hci.h | 11 ++ include/net/mac80211.h | 2 +- include/uapi/linux/cn_proc.h | 3 +- kernel/dma/map_benchmark.c | 3 + kernel/exit.c | 2 + kernel/kthread.c | 1 + kernel/locking/mutex-debug.c | 12 ++ kernel/power/swap.c | 2 +- kernel/vhost_task.c | 53 ++++++--- lib/fortify_kunit.c | 9 +- lib/kunit/try-catch.c | 22 ++-- mm/page-writeback.c | 32 ++++- net/bluetooth/hci_conn.c | 15 ++- net/bluetooth/hci_event.c | 33 +++++- net/bluetooth/iso.c | 3 +- net/bpf/bpf_dummy_struct_ops.c | 55 ++++++++- net/core/datagram.c | 19 ++- net/ipv4/inet_diag.c | 2 + net/ipv4/tcp_input.c | 9 +- net/ipv4/tcp_metrics.c | 1 + net/mac802154/main.c | 14 ++- net/netfilter/nf_tables_api.c | 3 +- net/sctp/socket.c | 7 +- net/wireless/nl80211.c | 6 +- scripts/link-vmlinux.sh | 2 +- sound/core/ump.c | 8 ++ sound/pci/hda/patch_realtek.c | 9 ++ tools/lib/bpf/bpf_core_read.h | 1 + tools/lib/bpf/features.c | 32 ++++- tools/power/x86/turbostat/turbostat.c | 35 ++++-- .../selftests/bpf/prog_tests/dummy_st_ops.c | 34 +++++- .../selftests/bpf/progs/dummy_st_ops_success.c | 15 ++- tools/testing/selftests/kselftest_harness.h | 43 ++++--- tools/testing/selftests/net/gro.c | 3 + tools/testing/selftests/net/ip_local_port_range.c | 2 +- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 2 +- tools/testing/selftests/net/msg_zerocopy.c | 14 ++- tools/testing/selftests/resctrl/cat_test.c | 32 +++-- 225 files changed, 2001 insertions(+), 883 deletions(-) . Subject: [PATCH V6] cgroup/rstat: Avoid thundering herd problem by kswapd across NUMA nodes From: Jesper Dangaard Brouer To: tj@kernel.org, cgroups@vger.kernel.org, yosryahmed@google.com, shakeel.butt@linux.dev Cc: Jesper Dangaard Brouer , hannes@cmpxchg.org, lizefan.x@bytedance.com, longman@redhat.com, kernel-team@cloudflare.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Date: Tue, 09 Jul 2024 13:20:48 +0200 Message-ID: <172052399087.2357901.4955042377343593447.stgit@firesoul> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271961 org.kvack.linux-mm:203059 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.cgroups,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Avoid lock contention on the global cgroup rstat lock caused by kswapd starting on all NUMA nodes simultaneously. At Cloudflare, we observed massive issues due to kswapd and the specific mem_cgroup_flush_stats() call inlined in shrink_node, which takes the rstat lock. On our 12 NUMA node machines, each with a kswapd kthread per NUMA node, we noted severe lock contention on the rstat lock. This contention causes 12 CPUs to waste cycles spinning every time kswapd runs. Fleet-wide stats (/proc/N/schedstat) for kthreads revealed that we are burning an average of 20,000 CPU cores fleet-wide on kswapd, primarily due to spinning on the rstat lock. Help reviewers follow code: __alloc_pages_slowpath calls wake_all_kswapds causing all kswapdN threads to wake up simultaneously. The kswapd thread invokes shrink_node (via balance_pgdat) triggering the cgroup rstat flush operation as part of its work. This results in kernel self-induced rstat lock contention by waking up all kswapd threads simultaneously. Leveraging this detail: balance_pgdat() have NULL value in target_mem_cgroup, this cause mem_cgroup_flush_stats() to do flush with root_mem_cgroup. To avoid this kind of thundering herd problem, kernel previously had a "stats_flush_ongoing" concept, but this was removed as part of commit 7d7ef0a4686a ("mm: memcg: restore subtree stats flushing"). This patch reintroduce and generalized the concept to apply to all users of cgroup rstat, not just memcg. If there is an ongoing rstat flush, and current cgroup is a descendant, then it is unnecessary to do the flush. For callers to still see updated stats, wait for ongoing flusher to complete before returning, but add timeout as stats are already inaccurate given updaters keeps running. Fixes: 7d7ef0a4686a ("mm: memcg: restore subtree stats flushing"). Signed-off-by: Jesper Dangaard Brouer --- V5: https://lore.kernel.org/all/171956951930.1897969.8709279863947931285.stgit@firesoul/ V4: https://lore.kernel.org/all/171952312320.1810550.13209360603489797077.stgit@firesoul/ V3: https://lore.kernel.org/all/171943668946.1638606.1320095353103578332.stgit@firesoul/ V2: https://lore.kernel.org/all/171923011608.1500238.3591002573732683639.stgit@firesoul/ V1: https://lore.kernel.org/all/171898037079.1222367.13467317484793748519.stgit@firesoul/ RFC: https://lore.kernel.org/all/171895533185.1084853.3033751561302228252.stgit@firesoul/ include/linux/cgroup-defs.h | 2 + kernel/cgroup/rstat.c | 95 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 84 insertions(+), 13 deletions(-) diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index b36690ca0d3f..a33b37514c29 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -548,6 +548,8 @@ struct cgroup { #ifdef CONFIG_BPF_SYSCALL struct bpf_local_storage __rcu *bpf_cgrp_storage; #endif + /* completion queue for cgrp_rstat_ongoing_flusher */ + struct completion flush_done; /* All ancestors including self */ struct cgroup *ancestors[]; diff --git a/kernel/cgroup/rstat.c b/kernel/cgroup/rstat.c index fb8b49437573..d0b9b8bf275d 100644 --- a/kernel/cgroup/rstat.c +++ b/kernel/cgroup/rstat.c @@ -2,6 +2,7 @@ #include "cgroup-internal.h" #include +#include #include #include @@ -11,6 +12,7 @@ static DEFINE_SPINLOCK(cgroup_rstat_lock); static DEFINE_PER_CPU(raw_spinlock_t, cgroup_rstat_cpu_lock); +static struct cgroup *cgrp_rstat_ongoing_flusher = NULL; static void cgroup_base_stat_flush(struct cgroup *cgrp, int cpu); @@ -279,17 +281,30 @@ __bpf_hook_end(); * value -1 is used when obtaining the main lock else this is the CPU * number processed last. */ -static inline void __cgroup_rstat_lock(struct cgroup *cgrp, int cpu_in_loop) +static inline bool __cgroup_rstat_trylock(struct cgroup *cgrp, int cpu_in_loop) +{ + bool locked; + + locked = spin_trylock_irq(&cgroup_rstat_lock); + if (!locked) + trace_cgroup_rstat_lock_contended(cgrp, cpu_in_loop, !locked); + + return locked; +} + +static inline void __cgroup_rstat_lock(struct cgroup *cgrp, int cpu_in_loop, + bool check_contention) __acquires(&cgroup_rstat_lock) { - bool contended; + bool locked = false; - contended = !spin_trylock_irq(&cgroup_rstat_lock); - if (contended) { - trace_cgroup_rstat_lock_contended(cgrp, cpu_in_loop, contended); + if (check_contention) + locked = __cgroup_rstat_trylock(cgrp, cpu_in_loop); + + if (!locked) spin_lock_irq(&cgroup_rstat_lock); - } - trace_cgroup_rstat_locked(cgrp, cpu_in_loop, contended); + + trace_cgroup_rstat_locked(cgrp, cpu_in_loop, !locked); } static inline void __cgroup_rstat_unlock(struct cgroup *cgrp, int cpu_in_loop) @@ -299,6 +314,53 @@ static inline void __cgroup_rstat_unlock(struct cgroup *cgrp, int cpu_in_loop) spin_unlock_irq(&cgroup_rstat_lock); } +#define MAX_WAIT msecs_to_jiffies(100) +/* Trylock helper that also checks for on ongoing flusher */ +static bool cgroup_rstat_trylock_flusher(struct cgroup *cgrp) +{ + struct cgroup *cgrp_ongoing; + bool locked; + + /* Check if ongoing flusher is already taking care of this, if + * we are a descendant skip work, but wait for ongoing flusher + * to complete work. + */ +retry: + cgrp_ongoing = READ_ONCE(cgrp_rstat_ongoing_flusher); + if (cgrp_ongoing && cgroup_is_descendant(cgrp, cgrp_ongoing)) { + wait_for_completion_interruptible_timeout( + &cgrp_ongoing->flush_done, MAX_WAIT); + /* TODO: Add tracepoint here */ + return false; + } + + locked = __cgroup_rstat_trylock(cgrp, -1); + if (!locked) { + /* Contended: Handle loosing race for ongoing flusher */ + if (!cgrp_ongoing && READ_ONCE(cgrp_rstat_ongoing_flusher)) + goto retry; + + __cgroup_rstat_lock(cgrp, -1, false); + } + /* Obtained lock, record this cgrp as the ongoing flusher */ + cgrp_ongoing = READ_ONCE(cgrp_rstat_ongoing_flusher); + if (!cgrp_ongoing) { + reinit_completion(&cgrp->flush_done); + WRITE_ONCE(cgrp_rstat_ongoing_flusher, cgrp); + } + return true; /* locked */ +} + +static void cgroup_rstat_unlock_flusher(struct cgroup *cgrp) +{ + /* Detect if we are the ongoing flusher */ + if (cgrp == READ_ONCE(cgrp_rstat_ongoing_flusher)) { + WRITE_ONCE(cgrp_rstat_ongoing_flusher, NULL); + complete_all(&cgrp->flush_done); + } + __cgroup_rstat_unlock(cgrp, -1); +} + /* see cgroup_rstat_flush() */ static void cgroup_rstat_flush_locked(struct cgroup *cgrp) __releases(&cgroup_rstat_lock) __acquires(&cgroup_rstat_lock) @@ -328,7 +390,7 @@ static void cgroup_rstat_flush_locked(struct cgroup *cgrp) __cgroup_rstat_unlock(cgrp, cpu); if (!cond_resched()) cpu_relax(); - __cgroup_rstat_lock(cgrp, cpu); + __cgroup_rstat_lock(cgrp, cpu, true); } } } @@ -350,9 +412,11 @@ __bpf_kfunc void cgroup_rstat_flush(struct cgroup *cgrp) { might_sleep(); - __cgroup_rstat_lock(cgrp, -1); + if (!cgroup_rstat_trylock_flusher(cgrp)) + return; + cgroup_rstat_flush_locked(cgrp); - __cgroup_rstat_unlock(cgrp, -1); + cgroup_rstat_unlock_flusher(cgrp); } /** @@ -368,8 +432,11 @@ void cgroup_rstat_flush_hold(struct cgroup *cgrp) __acquires(&cgroup_rstat_lock) { might_sleep(); - __cgroup_rstat_lock(cgrp, -1); - cgroup_rstat_flush_locked(cgrp); + + if (cgroup_rstat_trylock_flusher(cgrp)) + cgroup_rstat_flush_locked(cgrp); + else + __cgroup_rstat_lock(cgrp, -1, false); } /** @@ -379,7 +446,7 @@ void cgroup_rstat_flush_hold(struct cgroup *cgrp) void cgroup_rstat_flush_release(struct cgroup *cgrp) __releases(&cgroup_rstat_lock) { - __cgroup_rstat_unlock(cgrp, -1); + cgroup_rstat_unlock_flusher(cgrp); } int cgroup_rstat_init(struct cgroup *cgrp) @@ -401,6 +468,8 @@ int cgroup_rstat_init(struct cgroup *cgrp) u64_stats_init(&rstatc->bsync); } + init_completion(&cgrp->flush_done); + return 0; } . From: Georgi Djakov To: gregkh@linuxfoundation.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, djakov@kernel.org Subject: [GIT PULL] interconnect changes for 6.11 Date: Tue, 9 Jul 2024 14:21:34 +0300 Message-Id: <20240709112134.782462-1-djakov@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271962 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello Greg, This is the pull request with interconnect changes for the v6.11-rc1 merge window. It contains some new drivers and bugfixes. As always, the summary is in the signed tag. The patches have been in linux-next for a while. There are no reported issues currently. Please pull into char-misc-next when possible. Thanks, Georgi The following changes since commit 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0: Linux 6.10-rc1 (2024-05-26 15:20:12 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc.git tags/icc-6.11-rc1 for you to fetch changes up to 226e58b20975000960cb40b7488f55f173007489: Merge branch 'icc-rpmh-qos' into icc-next (2024-07-04 22:45:20 +0300) ---------------------------------------------------------------- interconnect changes for 6.11 This pull request contains the interconnect changes for the 6.11-rc1 merge window. It contains just driver changes with the following highlights: Driver changes: - New driver for MediaTek MT8183/8195 platforms - New driver for MSM8953 platforms - New QoS support for RPMh-based platforms with SC7280 being the first one to benefit from it. - Fix incorrect master-id value in qcm2290 driver - Add missing MODULE_DESCRIPTION in a few drivers Signed-off-by: Georgi Djakov ---------------------------------------------------------------- AngeloGioacchino Del Regno (2): dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect driver Georgi Djakov (4): Merge branch 'icc-mtk' into icc-next Merge branch 'icc-fixes' into icc-next Merge branch 'icc-msm8953' into icc-next Merge branch 'icc-rpmh-qos' into icc-next Jeff Johnson (2): interconnect: imx: add missing MODULE_DESCRIPTION() macros interconnect: qcom: add missing MODULE_DESCRIPTION() macros Jiapeng Chong (1): interconnect: mediatek: remove unneeded semicolon Konrad Dybcio (1): interconnect: qcom: qcm2290: Fix mas_snoc_bimc RPM master ID Odelu Kukatla (4): dt-bindings: interconnect: add clock property to enable QOS on SC7280 interconnect: qcom: icc-rpmh: Add QoS configuration support interconnect: qcom: sc7280: enable QoS configuration interconnect: qcom: Fix DT backwards compatibility for QoS Vladimir Lypak (2): dt-bindings: interconnect: qcom: Add Qualcomm MSM8953 NoC interconnect: qcom: Add MSM8953 driver .../devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml | 51 + .../devicetree/bindings/interconnect/qcom,msm8953.yaml | 101 + .../devicetree/bindings/interconnect/qcom,sc7280-rpmh.yaml | 53 + drivers/interconnect/Kconfig | 1 + drivers/interconnect/Makefile | 1 + drivers/interconnect/imx/imx.c | 1 + drivers/interconnect/imx/imx8mm.c | 1 + drivers/interconnect/imx/imx8mn.c | 1 + drivers/interconnect/imx/imx8mp.c | 1 + drivers/interconnect/imx/imx8mq.c | 1 + drivers/interconnect/mediatek/Kconfig | 29 + drivers/interconnect/mediatek/Makefile | 5 + drivers/interconnect/mediatek/icc-emi.c | 153 + drivers/interconnect/mediatek/icc-emi.h | 40 + drivers/interconnect/mediatek/mt8183.c | 143 + drivers/interconnect/mediatek/mt8195.c | 339 ++ drivers/interconnect/qcom/Kconfig | 9 + drivers/interconnect/qcom/Makefile | 2 + drivers/interconnect/qcom/icc-common.c | 1 + drivers/interconnect/qcom/icc-rpmh.c | 94 + drivers/interconnect/qcom/icc-rpmh.h | 36 + drivers/interconnect/qcom/msm8953.c | 1321 ++++++++ drivers/interconnect/qcom/qcm2290.c | 2 +- drivers/interconnect/qcom/sc7280.c | 276 ++ include/dt-bindings/interconnect/mediatek,mt8183.h | 23 + include/dt-bindings/interconnect/mediatek,mt8195.h | 44 + include/dt-bindings/interconnect/qcom,msm8953.h | 93 + 27 files changed, 2821 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,msm8953.yaml create mode 100644 drivers/interconnect/mediatek/Kconfig create mode 100644 drivers/interconnect/mediatek/Makefile create mode 100644 drivers/interconnect/mediatek/icc-emi.c create mode 100644 drivers/interconnect/mediatek/icc-emi.h create mode 100644 drivers/interconnect/mediatek/mt8183.c create mode 100644 drivers/interconnect/mediatek/mt8195.c create mode 100644 drivers/interconnect/qcom/msm8953.c create mode 100644 include/dt-bindings/interconnect/mediatek,mt8183.h create mode 100644 include/dt-bindings/interconnect/mediatek,mt8195.h create mode 100644 include/dt-bindings/interconnect/qcom,msm8953.h . From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, linux@roeck-us.net, shuah@kernel.org, patches@kernelci.org, lkft-triage@lists.linaro.org, pavel@denx.de, jonathanh@nvidia.com, f.fainelli@gmail.com, sudipm.mukherjee@gmail.com, srw@sladewatkins.net, rwarsow@gmx.de, conor@kernel.org, allen.lkml@gmail.com, broonie@kernel.org Subject: [PATCH 6.1 000/102] 6.1.98-rc1 review Date: Tue, 9 Jul 2024 13:09:23 +0200 Message-ID: <20240709110651.353707001@linuxfoundation.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: ignore X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.98-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-6.1.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 6.1.98-rc1 X-KernelTest-Deadline: 2024-07-11T11:06+00:00 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271966 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.patches,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This is the start of the stable review cycle for the 6.1.98 release. There are 102 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know. Responses should be made by Thu, 11 Jul 2024 11:06:25 +0000. Anything received after that time might be too late. The whole patch series can be found in one patch at: https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.1.98-rc1.gz or in the git tree and branch at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-6.1.y and the diffstat can be found below. thanks, greg k-h ------------- Pseudo-Shortlog of commits: Greg Kroah-Hartman Linux 6.1.98-rc1 Ryusuke Konishi nilfs2: fix incorrect inode allocation from reserved inodes Damien Le Moal null_blk: Do not allow runt zone with zone capacity smaller then zone size Witold Sadowski spi: cadence: Ensure data lines set to low during dummy-cycle period Edward Adam Davis nfc/nci: Add the inconsistency check between the input data length and count Masahiro Yamada kbuild: fix short log for AS in link-vmlinux.sh Sagi Grimberg nvmet: fix a possible leak when destroy a ctrl during qp establishment hmtheboy154 platform/x86: touchscreen_dmi: Add info for the EZpad 6s Pro hmtheboy154 platform/x86: touchscreen_dmi: Add info for GlobalSpace SolT IVW 11.6" tablet Jim Wylder regmap-i2c: Subtract reg size from max_write Kundan Kumar nvme: adjust multiples of NVME_CTRL_PAGE_SIZE in offset Fedor Pchelkin dma-mapping: benchmark: avoid needless copy_to_user if benchmark fails Nilay Shroff nvme-multipath: find NUMA path only for online numa-node Jian-Hong Pan ALSA: hda/realtek: Enable headset mic of JP-IK LEAP W502 with ALC897 Konstantin Komarov fs/ntfs3: Mark volume as dirty if xattr is broken Piotr Wojtaszczyk i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr Pin-yen Lin clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg AngeloGioacchino Del Regno clk: mediatek: clk-mtk: Register MFG notifier in mtk_clk_simple_probe() Luca Weiss clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents Mauro Carvalho Chehab media: dw2102: fix a potential buffer overflow GUO Zihua ima: Avoid blocking in RCU read-side critical section Dragan Simic arm64: dts: rockchip: Fix the DCDC_REG2 minimum voltage on Quartz64 Model B Ghadi Elie Rahme bnx2x: Fix multiple UBSAN array-index-out-of-bounds Val Packett mtd: rawnand: rockchip: ensure NVDDR timings are rejected Miquel Raynal mtd: rawnand: Bypass a couple of sanity checks during NAND identification Miquel Raynal mtd: rawnand: Ensure ECC configuration is propagated to upper layers Nicholas Piggin powerpc/pseries: Fix scv instruction crash with kexec John Schoenick drm: panel-orientation-quirks: Add quirk for Valve Galileo Alex Deucher drm/amdgpu/atomfirmware: silence UBSAN warning Ma Ke drm/nouveau: fix null pointer dereference in nouveau_connector_get_modes Jan Kara Revert "mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again" Jan Kara fsnotify: Do not generate events for O_PATH file descriptors Jimmy Assarsson can: kvaser_usb: Explicitly initialize family in leafimx driver_info struct Zijun Hu Bluetooth: qca: Fix BT enable failure again for QCA6390 after warm reboot Nathan Chancellor scsi: mpi3mr: Use proper format specifier in mpi3mr_sas_port_add() Nathan Chancellor f2fs: Add inline to f2fs_build_fault_attr() stub Naohiro Aota btrfs: fix adding block group to a reclaim list and the unused list during reclaim Jan Kara mm: avoid overflows in dirty throttling logic Jinliang Zheng mm: optimize the redundant loop of mm_update_owner_next() Ryusuke Konishi nilfs2: add missing check for inode numbers on directory entries Ryusuke Konishi nilfs2: fix inode number range checks Sasha Neftin Revert "igc: fix a log entry using uninitialized netdev" Armin Wolf platform/x86: toshiba_acpi: Fix quickstart quirk handling Aleksandr Mishin mlxsw: core_linecards: Fix double memory deallocation in case of invalid INI file Shigeru Yoshida inet_diag: Initialize pad field in struct inet_diag_req_v2 Zijian Zhang selftests: make order checking verbose in msg_zerocopy selftest Zijian Zhang selftests: fix OOM in msg_zerocopy selftest Sam Sun bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set() Florian Westphal netfilter: nf_tables: unconditionally flush pending work before notifier Song Shuai riscv: kexec: Avoid deadlock in kexec crash path Jozef Hopko wifi: wilc1000: fix ies_len type in connect path Dave Jiang net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() Sagi Grimberg net: allow skb_datagram_iter to be called from any context Dima Ruinskiy e1000e: Fix S0ix residency on corporate systems Christian Borntraeger KVM: s390: fix LPSWEY handling Jakub Kicinski tcp_metrics: validate source addr length Jianbo Liu net/mlx5e: Add mqprio_rl cleanup and free in mlx5e_priv_cleanup() Chris Mi net/mlx5: E-switch, Create ingress ACL when needed Neal Cardwell UPSTREAM: tcp: fix DSACK undo in fast recovery to call tcp_try_to_open() Dmitry Antipov mac802154: fix time calculation in ieee802154_configure_durations() Len Brown tools/power turbostat: Remember global max_die_id Justin Stitt cdrom: rearrange last_media_change check to avoid unintentional overflow Lu Yao btrfs: scrub: initialize ret in scrub_simple_mirror() to fix compilation warning Holger Dengler s390/pkey: Wipe sensitive data on failure Sven Schnelle s390: Mark psw in __load_psw_mask() as __unitialized Wang Yong jffs2: Fix potential illegal address access in jffs2_free_inode Matthias Schiffer serial: imx: Raise TX trigger level to 8 Tomas Henzl scsi: mpi3mr: Sanitise num_phys Chao Yu f2fs: check validation of fault attrs in f2fs_build_fault_attr() Jose E. Marchesi bpf: Avoid uninitialized value in BPF_CORE_READ_BITFIELD Corinna Vinschen igc: fix a log entry using uninitialized netdev Greg Kurz powerpc/xmon: Check cpu id in commands "c#", "dp#" and "dx#" Mickaël Salaün kunit: Handle test faults Mickaël Salaün kunit: Fix timeout message Mike Marshall orangefs: fix out-of-bounds fsid access Michael Ellerman powerpc/64: Set _IO_BASE to POISON_POINTER_DELTA not 0 for CONFIG_PCI=n Heiner Kallweit i2c: i801: Annotate apanel_addr as __ro_after_init Ricardo Ribalda media: dvb-frontends: tda10048: Fix integer overflow Ricardo Ribalda media: s2255: Use refcount_t instead of atomic_t for num_channels Ricardo Ribalda media: dvb-frontends: tda18271c2dd: Remove casting during div Simon Horman net: dsa: mv88e6xxx: Correct check for empty list Felix Fietkau wifi: mt76: replace skb_put with skb_put_zero Niklas Neronin usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB Erick Archer Input: ff-core - prefer struct_size over open coded arithmetic Jean Delvare firmware: dmi: Stop decoding on broken entry Erick Archer sctp: prefer struct_size over open coded arithmetic Michael Bunk media: dw2102: Don't translate i2c read into write Tim Huang drm/amdgpu: fix uninitialized scalar variable warning Alex Hung drm/amd/display: Skip finding free audio for unknown engine_id Alex Hung drm/amd/display: Check pipe offset before setting vblank Alex Hung drm/amd/display: Check index msg_id before read or write Ma Jun drm/amdgpu: Initialize timestamp for some legacy SOCs Ma Jun drm/amdgpu: Fix uninitialized variable warnings Hailey Mothershead crypto: aead,cipher - zeroize key buffer after use Guanrui Huang irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc John Meneghini scsi: qedf: Make qedf_execute_tmf() non-preemptible Michael Guralnik IB/core: Implement a limit on UMAD receive List Ricardo Ribalda media: dvb-usb: dib0700_devices: Add missing release_firmware() Ricardo Ribalda media: dvb: as102-fe: Fix as10x_register_addr packing Mahesh Salgaonkar powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt. Erico Nunes drm/lima: fix shared irq handling on driver remove Chenghai Huang crypto: hisilicon/debugfs - Fix debugfs uninit process issue George Stark locking/mutex: Introduce devm_mutex_init() ------------- Diffstat: Makefile | 4 +- arch/arm64/boot/dts/rockchip/rk3566-quartz64-b.dts | 2 +- arch/powerpc/include/asm/interrupt.h | 10 ++ arch/powerpc/include/asm/io.h | 2 +- arch/powerpc/include/asm/percpu.h | 10 ++ arch/powerpc/kernel/setup_64.c | 2 + arch/powerpc/kexec/core_64.c | 11 ++ arch/powerpc/platforms/pseries/kexec.c | 8 -- arch/powerpc/platforms/pseries/pseries.h | 1 - arch/powerpc/platforms/pseries/setup.c | 1 - arch/powerpc/xmon/xmon.c | 6 +- arch/riscv/kernel/machine_kexec.c | 10 +- arch/s390/include/asm/kvm_host.h | 1 + arch/s390/include/asm/processor.h | 2 +- arch/s390/kvm/kvm-s390.c | 1 + arch/s390/kvm/kvm-s390.h | 15 +++ arch/s390/kvm/priv.c | 32 +++++ crypto/aead.c | 3 +- crypto/cipher.c | 3 +- drivers/base/regmap/regmap-i2c.c | 3 +- drivers/block/null_blk/zoned.c | 11 ++ drivers/bluetooth/hci_qca.c | 18 ++- drivers/cdrom/cdrom.c | 2 +- drivers/clk/mediatek/clk-mt8183-mfgcfg.c | 1 + drivers/clk/mediatek/clk-mtk.c | 32 +++-- drivers/clk/mediatek/clk-mtk.h | 5 + drivers/clk/qcom/gcc-sm6350.c | 10 +- drivers/crypto/hisilicon/debugfs.c | 21 +++- drivers/firmware/dmi_scan.c | 11 ++ drivers/gpu/drm/amd/amdgpu/aldebaran.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++ drivers/gpu/drm/amd/amdgpu/sienna_cichlid.c | 2 +- drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 3 + .../amd/display/dc/irq/dce110/irq_service_dce110.c | 8 +- .../gpu/drm/amd/display/modules/hdcp/hdcp_ddc.c | 8 ++ drivers/gpu/drm/amd/include/atomfirmware.h | 2 +- drivers/gpu/drm/drm_panel_orientation_quirks.c | 7 ++ drivers/gpu/drm/lima/lima_gp.c | 2 + drivers/gpu/drm/lima/lima_mmu.c | 5 + drivers/gpu/drm/lima/lima_pp.c | 4 + drivers/gpu/drm/nouveau/nouveau_connector.c | 3 + drivers/i2c/busses/i2c-i801.c | 2 +- drivers/i2c/busses/i2c-pnx.c | 48 ++------ drivers/infiniband/core/user_mad.c | 21 +++- drivers/input/ff-core.c | 7 +- drivers/irqchip/irq-gic-v3-its.c | 2 - drivers/media/dvb-frontends/as102_fe_types.h | 2 +- drivers/media/dvb-frontends/tda10048.c | 9 +- drivers/media/dvb-frontends/tda18271c2dd.c | 4 +- drivers/media/usb/dvb-usb/dib0700_devices.c | 18 ++- drivers/media/usb/dvb-usb/dw2102.c | 120 +++++++++++-------- drivers/media/usb/s2255/s2255drv.c | 20 ++-- drivers/mtd/nand/raw/nand_base.c | 66 +++++++---- drivers/mtd/nand/raw/rockchip-nand-controller.c | 6 +- drivers/net/bonding/bond_options.c | 6 +- drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c | 1 + drivers/net/dsa/mv88e6xxx/chip.c | 4 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 +- drivers/net/ethernet/intel/e1000e/netdev.c | 132 ++++++++++----------- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 5 + .../mellanox/mlx5/core/esw/acl/ingress_ofld.c | 37 ++++-- .../net/ethernet/mellanox/mlxsw/core_linecards.c | 1 + drivers/net/ntb_netdev.c | 2 +- .../net/wireless/mediatek/mt76/mt76_connac_mcu.c | 10 +- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 2 +- drivers/net/wireless/microchip/wilc1000/hif.c | 3 +- drivers/nfc/virtual_ncidev.c | 4 + drivers/nvme/host/multipath.c | 2 +- drivers/nvme/host/pci.c | 3 +- drivers/nvme/target/core.c | 9 ++ drivers/platform/x86/toshiba_acpi.c | 31 +++-- drivers/platform/x86/touchscreen_dmi.c | 36 ++++++ drivers/s390/crypto/pkey_api.c | 4 +- drivers/scsi/mpi3mr/mpi3mr_transport.c | 10 ++ drivers/scsi/qedf/qedf_io.c | 6 +- drivers/spi/spi-cadence-xspi.c | 20 +++- drivers/tty/serial/imx.c | 2 +- drivers/usb/host/xhci-ring.c | 5 +- fs/btrfs/block-group.c | 13 +- fs/btrfs/scrub.c | 2 +- fs/f2fs/f2fs.h | 12 +- fs/f2fs/super.c | 27 +++-- fs/f2fs/sysfs.c | 14 ++- fs/jffs2/super.c | 1 + fs/nilfs2/alloc.c | 18 ++- fs/nilfs2/alloc.h | 4 +- fs/nilfs2/dat.c | 2 +- fs/nilfs2/dir.c | 6 + fs/nilfs2/ifile.c | 7 +- fs/nilfs2/nilfs.h | 10 +- fs/nilfs2/the_nilfs.c | 6 + fs/nilfs2/the_nilfs.h | 2 +- fs/ntfs3/xattr.c | 5 +- fs/orangefs/super.c | 3 +- include/kunit/try-catch.h | 3 - include/linux/fsnotify.h | 8 +- include/linux/lsm_hook_defs.h | 2 +- include/linux/mutex.h | 27 +++++ include/linux/security.h | 5 +- kernel/auditfilter.c | 5 +- kernel/dma/map_benchmark.c | 3 + kernel/exit.c | 2 + kernel/kthread.c | 1 + kernel/locking/mutex-debug.c | 12 ++ lib/kunit/try-catch.c | 22 ++-- mm/page-writeback.c | 32 ++++- net/core/datagram.c | 19 ++- net/ipv4/inet_diag.c | 2 + net/ipv4/tcp_input.c | 2 +- net/ipv4/tcp_metrics.c | 1 + net/mac802154/main.c | 14 ++- net/netfilter/nf_tables_api.c | 3 +- net/sctp/socket.c | 7 +- scripts/link-vmlinux.sh | 2 +- security/apparmor/audit.c | 6 +- security/apparmor/include/audit.h | 2 +- security/integrity/ima/ima.h | 2 +- security/integrity/ima/ima_policy.c | 15 ++- security/security.c | 6 +- security/selinux/include/audit.h | 4 +- security/selinux/ss/services.c | 5 +- security/smack/smack_lsm.c | 4 +- sound/pci/hda/patch_realtek.c | 9 ++ tools/lib/bpf/bpf_core_read.h | 1 + tools/power/x86/turbostat/turbostat.c | 10 +- tools/testing/selftests/net/msg_zerocopy.c | 14 ++- 127 files changed, 918 insertions(+), 421 deletions(-) . From: Ma Ke To: patrik.r.jakobsson@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, daniel.vetter@ffwll.ch, alan@linux.intel.com, airlied@redhat.com, akpm@linux-foundation.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH v4] drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes Date: Tue, 9 Jul 2024 19:33:11 +0800 Message-Id: <20240709113311.37168-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271969 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In cdv_intel_lvds_get_modes(), the return value of drm_mode_duplicate() is assigned to mode, which will lead to a NULL pointer dereference on failure of drm_mode_duplicate(). Add a check to avoid npd. Cc: stable@vger.kernel.org Fixes: 6a227d5fd6c4 ("gma500: Add support for Cedarview") Signed-off-by: Ma Ke --- Changes in v4: - revised the recipient email list, apologize for the inadvertent mistake. Changes in v3: - added the recipient's email address, due to the prolonged absence of a response from the recipients. Changes in v2: - modified the patch according to suggestions from other patchs; - added Fixes line; - added Cc stable; - Link: https://lore.kernel.org/lkml/20240622072514.1867582-1-make24@iscas.ac.cn/T/ --- drivers/gpu/drm/gma500/cdv_intel_lvds.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c index f08a6803dc18..3adc2c9ab72d 100644 --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c @@ -311,6 +311,9 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector) if (mode_dev->panel_fixed_mode != NULL) { struct drm_display_mode *mode = drm_mode_duplicate(dev, mode_dev->panel_fixed_mode); + if (!mode) + return 0; + drm_mode_probed_add(connector, mode); return 1; } -- 2.25.1 . From: "Alexander F. Lent" Date: Tue, 09 Jul 2024 07:54:14 -0400 Subject: [PATCH v3] accel/ivpu: Add missing MODULE_FIRMWARE metadata X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240709-fix-ivpu-firmware-metadata-v3-1-55f70bba055b@xanderlent.com> To: "Alexander F. Lent" , Jacek Lawrynowicz , Stanislaw Gruszka , Oded Gabbay , Jeffrey Hugo , Daniel Vetter , Andrzej Kacprowski , Krystian Pradzynski Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271994 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Modules that load firmware from various paths at runtime must declare those paths at compile time, via the MODULE_FIRMWARE macro, so that the firmware paths are included in the module's metadata. The accel/ivpu driver loads firmware but lacks this metadata, preventing dracut from correctly locating firmware files. Fix it. Fixes: 9ab43e95f922 ("accel/ivpu: Switch to generation based FW names") Fixes: 02d5b0aacd05 ("accel/ivpu: Implement firmware parsing and booting") Signed-off-by: Alexander F. Lent --- Hi Jacek, Thanks for catching the error, and for the more succinct comment. Please find v3 attached. --- Changes in v3: - Simplify comment, per review. - Fix typo in 40xx firmware path, per review. - Link to v2: https://lore.kernel.org/r/20240708-fix-ivpu-firmware-metadata-v2-1-78b953172026@xanderlent.com Changes in v2: - Only annotate the module with the production firmware paths, per review. - Drop macros for de-duping firmware fileames, just use string literals, per review. - Link to v1: https://lore.kernel.org/r/20240705-fix-ivpu-firmware-metadata-v1-1-704b73852d92@xanderlent.com --- drivers/accel/ivpu/ivpu_fw.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/accel/ivpu/ivpu_fw.c b/drivers/accel/ivpu/ivpu_fw.c index 1457300828bf..ef717802a3c8 100644 --- a/drivers/accel/ivpu/ivpu_fw.c +++ b/drivers/accel/ivpu/ivpu_fw.c @@ -58,6 +58,10 @@ static struct { { IVPU_HW_40XX, "intel/vpu/vpu_40xx_v0.0.bin" }, }; +/* Production fw_names from the table above */ +MODULE_FIRMWARE("intel/vpu/vpu_37xx_v0.0.bin"); +MODULE_FIRMWARE("intel/vpu/vpu_40xx_v0.0.bin"); + static int ivpu_fw_request(struct ivpu_device *vdev) { int ret = -ENOENT; --- base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826 change-id: 20240704-fix-ivpu-firmware-metadata-3d02bd60768d Best regards, -- Alexander F. Lent . Message-ID: Subject: Fwd: [jlayton:mgtime 5/13] inode.c:undefined reference to `__invalid_cmpxchg_size' From: Jeff Layton To: Geert Uytterhoeven Cc: linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Date: Tue, 09 Jul 2024 07:58:03 -0400 References: <202407091931.mztaeJHw-lkp@intel.com> Content-Type: multipart/mixed; boundary="=-pI+W7gA8jU7BvhCoJ/+E" X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1271998 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-m68k Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail --=-pI+W7gA8jU7BvhCoJ/+E Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I've been getting some of these warning emails from the KTR. I think this is in reference to this patch, which adds a 64-bit try_cmpxchg in the timestamp handling code: https://lore.kernel.org/linux-fsdevel/20240708-mgtime-v4-0-a0f3c6fb57f3= @kernel.org/ On m68k, there is a prototype for __invalid_cmpxchg_size, but no actual function, AFAICT. Should that be defined somewhere, or is this a deliberate way to force a build break in this case? More to the point though: do I need to do anything special for m86k here (or for other arches that can't do a native 64-bit cmpxchg)? Thanks, --=20 Jeff Layton --=-pI+W7gA8jU7BvhCoJ/+E Content-Disposition: inline Content-Description: Forwarded message =?UTF-8?Q?=E2=80=94?= [jlayton:mgtime 5/13] inode.c:undefined reference to `__invalid_cmpxchg_size' Content-Type: message/rfc822 Delivered-To: jlayton@poochiereds.net Return-Path: Delivered-To: jlayton@kernel.org Date: Tue, 9 Jul 2024 19:40:55 +0800 From: kernel test robot To: Jeff Layton Cc: oe-kbuild-all@lists.linux.dev Subject: [jlayton:mgtime 5/13] inode.c:undefined reference to `__invalid_cmpxchg_size' Message-ID: <202407091931.mztaeJHw-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline tree: https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git mgtime head: 81b2439edd7c9f966afcb091f414b7f219cda8f6 commit: 2265b64634f4af479ffb0c478409cfd56ec6dc4d [5/13] fs: add infrastructure for multigrain timestamps config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20240709/202407091931.mztaeJHw-lkp@intel.com/config) compiler: m68k-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240709/202407091931.mztaeJHw-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot | Closes: https://lore.kernel.org/oe-kbuild-all/202407091931.mztaeJHw-lkp@intel.com/ All errors (new ones prefixed by >>): m68k-linux-ld: fs/inode.o: in function `inode_set_ctime_current': >> inode.c:(.text+0x167a): undefined reference to `__invalid_cmpxchg_size' -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki --=-pI+W7gA8jU7BvhCoJ/+E-- . From: Miaohe Lin To: , , , CC: , , Subject: [PATCH] mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio Date: Tue, 9 Jul 2024 19:58:41 +0800 Message-ID: <20240709115841.4098393-1-linmiaohe@huawei.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272001 org.kvack.linux-mm:203064 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail A kernel crash was observed when migrating hugetlb folio: BUG: kernel NULL pointer dereference, address: 0000000000000008 PGD 0 P4D 0 Oops: Oops: 0002 [#1] PREEMPT SMP NOPTI CPU: 0 PID: 3435 Comm: bash Not tainted 6.10.0-rc6-00450-g8578ca01f21f #66 RIP: 0010:__folio_undo_large_rmappable+0x70/0xb0 RSP: 0018:ffffb165c98a7b38 EFLAGS: 00000097 RAX: fffffbbc44528090 RBX: 0000000000000000 RCX: 0000000000000000 RDX: ffffa30e000a2800 RSI: 0000000000000246 RDI: ffffa3153ffffcc0 RBP: fffffbbc44528000 R08: 0000000000002371 R09: ffffffffbe4e5868 R10: 0000000000000001 R11: 0000000000000001 R12: ffffa3153ffffcc0 R13: fffffbbc44468000 R14: 0000000000000001 R15: 0000000000000001 FS: 00007f5b3a716740(0000) GS:ffffa3151fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000008 CR3: 000000010959a000 CR4: 00000000000006f0 Call Trace: __folio_migrate_mapping+0x59e/0x950 __migrate_folio.constprop.0+0x5f/0x120 move_to_new_folio+0xfd/0x250 migrate_pages+0x383/0xd70 soft_offline_page+0x2ab/0x7f0 soft_offline_page_store+0x52/0x90 kernfs_fop_write_iter+0x12c/0x1d0 vfs_write+0x380/0x540 ksys_write+0x64/0xe0 do_syscall_64+0xb9/0x1d0 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f5b3a514887 RSP: 002b:00007ffe138fce68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 000000000000000c RCX: 00007f5b3a514887 RDX: 000000000000000c RSI: 0000556ab809ee10 RDI: 0000000000000001 RBP: 0000556ab809ee10 R08: 00007f5b3a5d1460 R09: 000000007fffffff R10: 0000000000000000 R11: 0000000000000246 R12: 000000000000000c R13: 00007f5b3a61b780 R14: 00007f5b3a617600 R15: 00007f5b3a616a00 It's because hugetlb folio is passed to __folio_undo_large_rmappable() unexpectedly. large_rmappable flag is imperceptibly set to hugetlb folio since commit f6a8dd98a2ce ("hugetlb: convert alloc_buddy_hugetlb_folio to use a folio"). Then commit be9581ea8c05 ("mm: fix crashes from deferred split racing folio migration") makes folio_migrate_mapping() call folio_undo_large_rmappable() triggering the bug. Fix this issue by clearing large_rmappable flag for hugetlb folios. They don't need that flag set anyway. Fixes: f6a8dd98a2ce ("hugetlb: convert alloc_buddy_hugetlb_folio to use a folio") Fixes: be9581ea8c05 ("mm: fix crashes from deferred split racing folio migration") Signed-off-by: Miaohe Lin Cc: --- mm/hugetlb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6282dd9e37e3..4e288757da19 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2173,6 +2173,8 @@ static struct folio *alloc_buddy_hugetlb_folio(struct hstate *h, nid = numa_mem_id(); retry: folio = __folio_alloc(gfp_mask, order, nid, nmask); + /* Ensure hugetlb folio won't have large_rmappable flag set. */ + folio_clear_large_rmappable(folio); if (folio && !folio_ref_freeze(folio, 1)) { folio_put(folio); -- 2.33.0 . From: Siddharth Vadapalli To: , , , , , , , CC: , , , , Subject: [PATCH] phy: cadence-torrent: add support for three or more links using 2 protocols Date: Tue, 9 Jul 2024 17:37:03 +0530 Message-ID: <20240709120703.2716397-1-s-vadapalli@ti.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272005 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-phy Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The Torrent SERDES can support at most two different protocols. This only mandates that the device-tree sub-nodes expressing the configuration should describe links with at-most two different protocols. The existing implementation however imposes an artificial constraint that allows only two links (device-tree sub-nodes). As long as at-most two protocols are chosen, using more than two links to describe them in an alternating configuration is still a valid configuration of the Torrent SERDES. A 3-Link 2-Protocol configuration of the 4-Lane SERDES can be: Lane 0 => Protocol 1 => Link 1 Lane 1 => Protocol 1 => Link 1 Lane 2 => Protocol 2 => Link 2 Lane 3 => Protocol 1 => Link 3 A 4-Link 2-Protocol configuration of the 4-Lane SERDES can be: Lane 0 => Protocol 1 => Link 1 Lane 1 => Protocol 2 => Link 2 Lane 2 => Protocol 1 => Link 3 Lane 3 => Protocol 2 => Link 4 Signed-off-by: Siddharth Vadapalli --- Hello, This patch is based on linux-next tagged next-20240709. Patch has been sanity tested on J7200-EVM which has the 4-Lane Torrent SERDES in a PCIe+QSGMII multi-link configuration as follows: SERDES0 Lanes 0 and 1 for PCIe SERDES0 Lane2 for QSGMII I have also sanity tested the 3 subnode use-case: SERDES0 Lanes 0 and 1 for PCIe -> SUBNODE 1 SERDES0 Lane2 for QSGMII -> SUBNODE 2 SERDES0 Lane3 for PCIe -> SUBNODE 3 verifying that Lanes 0 and 1 for PCIe and Lane2 for QSGMII are functional. Since the PCIe on the J7200-EVM doesn't support splitting the link, I could not verify functionality of SERDES0 Lane3 as PCIe. The intended use-case supported by this patch is something like: SERDES0 Lane0 for SGMII SERDES0 Lane1 for SGMII SERDES0 Lane2 for QSGMII SERDES0 Lane3 for SGMII which still is only 2 protocols: SGMII and QSGMII but requires 3 device-tree subnodes to express it. Such a configuration is not currently supported by the driver. This patch aims to support such use-cases as well. Regards, Siddharth. drivers/phy/cadence/phy-cadence-torrent.c | 239 +++++++++++----------- 1 file changed, 124 insertions(+), 115 deletions(-) diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadence/phy-cadence-torrent.c index 56ce82a47f88..58e9f8d82630 100644 --- a/drivers/phy/cadence/phy-cadence-torrent.c +++ b/drivers/phy/cadence/phy-cadence-torrent.c @@ -351,6 +351,7 @@ struct cdns_torrent_phy { void __iomem *sd_base; /* SD0801 registers base */ u32 max_bit_rate; /* Maximum link bit rate to use (in Mbps) */ u32 dp_pll; + u32 protocol_bitmask; struct reset_control *phy_rst; struct reset_control *apb_rst; struct device *dev; @@ -2475,21 +2476,21 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy) struct cdns_reg_pairs *reg_pairs; enum cdns_torrent_ssc_mode ssc; struct regmap *regmap; - u32 num_regs; + u32 num_regs, protocol; - /* Maximum 2 links (subnodes) are supported */ - if (cdns_phy->nsubnodes != 2) + /* Maximum 2 protocols are supported */ + if (hweight32(cdns_phy->protocol_bitmask) != 2) return -EINVAL; - phy_t1 = cdns_phy->phys[0].phy_type; - phy_t2 = cdns_phy->phys[1].phy_type; + phy_t1 = fns(cdns_phy->protocol_bitmask, 0); + phy_t2 = fns(cdns_phy->protocol_bitmask, 1); /** * First configure the PHY for first link with phy_t1. Get the array * values as [phy_t1][phy_t2][ssc]. */ - for (node = 0; node < cdns_phy->nsubnodes; node++) { - if (node == 1) { + for (protocol = 0; protocol < 2; protocol++) { + if (protocol == 1) { /** * If first link with phy_t1 is configured, then * configure the PHY for second link with phy_t2. @@ -2499,130 +2500,136 @@ int cdns_torrent_phy_configure_multilink(struct cdns_torrent_phy *cdns_phy) swap(ref_clk, ref_clk1); } - mlane = cdns_phy->phys[node].mlane; - ssc = cdns_phy->phys[node].ssc_mode; - num_lanes = cdns_phy->phys[node].num_lanes; + for (node = 0; node < cdns_phy->nsubnodes; node++) { + if (cdns_phy->phys[node].phy_type != phy_t1) + continue; - /** - * PHY configuration specific registers: - * link_cmn_vals depend on combination of PHY types being - * configured and are common for both PHY types, so array - * values should be same for [phy_t1][phy_t2][ssc] and - * [phy_t2][phy_t1][ssc]. - * xcvr_diag_vals also depend on combination of PHY types - * being configured, but these can be different for particular - * PHY type and are per lane. - */ - link_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->link_cmn_vals_tbl, - CLK_ANY, CLK_ANY, - phy_t1, phy_t2, ANY_SSC); - if (link_cmn_vals) { - reg_pairs = link_cmn_vals->reg_pairs; - num_regs = link_cmn_vals->num_regs; - regmap = cdns_phy->regmap_common_cdb; + mlane = cdns_phy->phys[node].mlane; + ssc = cdns_phy->phys[node].ssc_mode; + num_lanes = cdns_phy->phys[node].num_lanes; /** - * First array value in link_cmn_vals must be of - * PHY_PLL_CFG register + * PHY configuration specific registers: + * link_cmn_vals depend on combination of PHY types being + * configured and are common for both PHY types, so array + * values should be same for [phy_t1][phy_t2][ssc] and + * [phy_t2][phy_t1][ssc]. + * xcvr_diag_vals also depend on combination of PHY types + * being configured, but these can be different for particular + * PHY type and are per lane. */ - regmap_field_write(cdns_phy->phy_pll_cfg, - reg_pairs[0].val); + link_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->link_cmn_vals_tbl, + CLK_ANY, CLK_ANY, + phy_t1, phy_t2, ANY_SSC); + if (link_cmn_vals) { + reg_pairs = link_cmn_vals->reg_pairs; + num_regs = link_cmn_vals->num_regs; + regmap = cdns_phy->regmap_common_cdb; - for (i = 1; i < num_regs; i++) - regmap_write(regmap, reg_pairs[i].off, - reg_pairs[i].val); - } + /** + * First array value in link_cmn_vals must be of + * PHY_PLL_CFG register + */ + regmap_field_write(cdns_phy->phy_pll_cfg, + reg_pairs[0].val); - xcvr_diag_vals = cdns_torrent_get_tbl_vals(&init_data->xcvr_diag_vals_tbl, - CLK_ANY, CLK_ANY, - phy_t1, phy_t2, ANY_SSC); - if (xcvr_diag_vals) { - reg_pairs = xcvr_diag_vals->reg_pairs; - num_regs = xcvr_diag_vals->num_regs; - for (i = 0; i < num_lanes; i++) { - regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane]; - for (j = 0; j < num_regs; j++) - regmap_write(regmap, reg_pairs[j].off, - reg_pairs[j].val); + for (i = 1; i < num_regs; i++) + regmap_write(regmap, reg_pairs[i].off, + reg_pairs[i].val); } - } - /* PHY PCS common registers configurations */ - pcs_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->pcs_cmn_vals_tbl, - CLK_ANY, CLK_ANY, - phy_t1, phy_t2, ANY_SSC); - if (pcs_cmn_vals) { - reg_pairs = pcs_cmn_vals->reg_pairs; - num_regs = pcs_cmn_vals->num_regs; - regmap = cdns_phy->regmap_phy_pcs_common_cdb; - for (i = 0; i < num_regs; i++) - regmap_write(regmap, reg_pairs[i].off, - reg_pairs[i].val); - } + xcvr_diag_vals = cdns_torrent_get_tbl_vals(&init_data->xcvr_diag_vals_tbl, + CLK_ANY, CLK_ANY, + phy_t1, phy_t2, ANY_SSC); + if (xcvr_diag_vals) { + reg_pairs = xcvr_diag_vals->reg_pairs; + num_regs = xcvr_diag_vals->num_regs; + for (i = 0; i < num_lanes; i++) { + regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane]; + for (j = 0; j < num_regs; j++) + regmap_write(regmap, reg_pairs[j].off, + reg_pairs[j].val); + } + } - /* PHY PMA common registers configurations */ - phy_pma_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->phy_pma_cmn_vals_tbl, - CLK_ANY, CLK_ANY, - phy_t1, phy_t2, ANY_SSC); - if (phy_pma_cmn_vals) { - reg_pairs = phy_pma_cmn_vals->reg_pairs; - num_regs = phy_pma_cmn_vals->num_regs; - regmap = cdns_phy->regmap_phy_pma_common_cdb; - for (i = 0; i < num_regs; i++) - regmap_write(regmap, reg_pairs[i].off, - reg_pairs[i].val); - } + /* PHY PCS common registers configurations */ + pcs_cmn_vals = cdns_torrent_get_tbl_vals(&init_data->pcs_cmn_vals_tbl, + CLK_ANY, CLK_ANY, + phy_t1, phy_t2, ANY_SSC); + if (pcs_cmn_vals) { + reg_pairs = pcs_cmn_vals->reg_pairs; + num_regs = pcs_cmn_vals->num_regs; + regmap = cdns_phy->regmap_phy_pcs_common_cdb; + for (i = 0; i < num_regs; i++) + regmap_write(regmap, reg_pairs[i].off, + reg_pairs[i].val); + } - /* PMA common registers configurations */ - cmn_vals = cdns_torrent_get_tbl_vals(&init_data->cmn_vals_tbl, - ref_clk, ref_clk1, - phy_t1, phy_t2, ssc); - if (cmn_vals) { - reg_pairs = cmn_vals->reg_pairs; - num_regs = cmn_vals->num_regs; - regmap = cdns_phy->regmap_common_cdb; - for (i = 0; i < num_regs; i++) - regmap_write(regmap, reg_pairs[i].off, - reg_pairs[i].val); - } + /* PHY PMA common registers configurations */ + phy_pma_cmn_vals = + cdns_torrent_get_tbl_vals(&init_data->phy_pma_cmn_vals_tbl, + CLK_ANY, CLK_ANY, phy_t1, phy_t2, + ANY_SSC); + if (phy_pma_cmn_vals) { + reg_pairs = phy_pma_cmn_vals->reg_pairs; + num_regs = phy_pma_cmn_vals->num_regs; + regmap = cdns_phy->regmap_phy_pma_common_cdb; + for (i = 0; i < num_regs; i++) + regmap_write(regmap, reg_pairs[i].off, + reg_pairs[i].val); + } - /* PMA TX lane registers configurations */ - tx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->tx_ln_vals_tbl, - ref_clk, ref_clk1, - phy_t1, phy_t2, ssc); - if (tx_ln_vals) { - reg_pairs = tx_ln_vals->reg_pairs; - num_regs = tx_ln_vals->num_regs; - for (i = 0; i < num_lanes; i++) { - regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane]; - for (j = 0; j < num_regs; j++) - regmap_write(regmap, reg_pairs[j].off, - reg_pairs[j].val); + /* PMA common registers configurations */ + cmn_vals = cdns_torrent_get_tbl_vals(&init_data->cmn_vals_tbl, + ref_clk, ref_clk1, + phy_t1, phy_t2, ssc); + if (cmn_vals) { + reg_pairs = cmn_vals->reg_pairs; + num_regs = cmn_vals->num_regs; + regmap = cdns_phy->regmap_common_cdb; + for (i = 0; i < num_regs; i++) + regmap_write(regmap, reg_pairs[i].off, + reg_pairs[i].val); } - } - /* PMA RX lane registers configurations */ - rx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->rx_ln_vals_tbl, - ref_clk, ref_clk1, - phy_t1, phy_t2, ssc); - if (rx_ln_vals) { - reg_pairs = rx_ln_vals->reg_pairs; - num_regs = rx_ln_vals->num_regs; - for (i = 0; i < num_lanes; i++) { - regmap = cdns_phy->regmap_rx_lane_cdb[i + mlane]; - for (j = 0; j < num_regs; j++) - regmap_write(regmap, reg_pairs[j].off, - reg_pairs[j].val); + /* PMA TX lane registers configurations */ + tx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->tx_ln_vals_tbl, + ref_clk, ref_clk1, + phy_t1, phy_t2, ssc); + if (tx_ln_vals) { + reg_pairs = tx_ln_vals->reg_pairs; + num_regs = tx_ln_vals->num_regs; + for (i = 0; i < num_lanes; i++) { + regmap = cdns_phy->regmap_tx_lane_cdb[i + mlane]; + for (j = 0; j < num_regs; j++) + regmap_write(regmap, reg_pairs[j].off, + reg_pairs[j].val); + } } - } - if (phy_t1 == TYPE_DP) { - ret = cdns_torrent_dp_get_pll(cdns_phy, phy_t2); - if (ret) - return ret; - } + /* PMA RX lane registers configurations */ + rx_ln_vals = cdns_torrent_get_tbl_vals(&init_data->rx_ln_vals_tbl, + ref_clk, ref_clk1, + phy_t1, phy_t2, ssc); + if (rx_ln_vals) { + reg_pairs = rx_ln_vals->reg_pairs; + num_regs = rx_ln_vals->num_regs; + for (i = 0; i < num_lanes; i++) { + regmap = cdns_phy->regmap_rx_lane_cdb[i + mlane]; + for (j = 0; j < num_regs; j++) + regmap_write(regmap, reg_pairs[j].off, + reg_pairs[j].val); + } + } - reset_control_deassert(cdns_phy->phys[node].lnk_rst); + if (phy_t1 == TYPE_DP) { + ret = cdns_torrent_dp_get_pll(cdns_phy, phy_t2); + if (ret) + return ret; + } + + reset_control_deassert(cdns_phy->phys[node].lnk_rst); + } } /* Take the PHY out of reset */ @@ -2826,6 +2833,7 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev) dev_set_drvdata(dev, cdns_phy); cdns_phy->dev = dev; cdns_phy->init_data = data; + cdns_phy->protocol_bitmask = 0; cdns_phy->sd_base = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(cdns_phy->sd_base)) @@ -3010,6 +3018,7 @@ static int cdns_torrent_phy_probe(struct platform_device *pdev) } cdns_phy->phys[node].phy = gphy; + cdns_phy->protocol_bitmask |= BIT(cdns_phy->phys[node].phy_type); phy_set_drvdata(gphy, &cdns_phy->phys[node]); node++; -- 2.40.1 . From: Miaohe Lin To: , , , CC: , , Subject: [PATCH RESEND] mm/hugetlb: fix kernel NULL pointer dereference when migrating hugetlb folio Date: Tue, 9 Jul 2024 20:04:33 +0800 Message-ID: <20240709120433.4136700-1-linmiaohe@huawei.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272009 org.kvack.linux-mm:203066 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail A kernel crash was observed when migrating hugetlb folio: BUG: kernel NULL pointer dereference, address: 0000000000000008 PGD 0 P4D 0 Oops: Oops: 0002 [#1] PREEMPT SMP NOPTI CPU: 0 PID: 3435 Comm: bash Not tainted 6.10.0-rc6-00450-g8578ca01f21f #66 RIP: 0010:__folio_undo_large_rmappable+0x70/0xb0 RSP: 0018:ffffb165c98a7b38 EFLAGS: 00000097 RAX: fffffbbc44528090 RBX: 0000000000000000 RCX: 0000000000000000 RDX: ffffa30e000a2800 RSI: 0000000000000246 RDI: ffffa3153ffffcc0 RBP: fffffbbc44528000 R08: 0000000000002371 R09: ffffffffbe4e5868 R10: 0000000000000001 R11: 0000000000000001 R12: ffffa3153ffffcc0 R13: fffffbbc44468000 R14: 0000000000000001 R15: 0000000000000001 FS: 00007f5b3a716740(0000) GS:ffffa3151fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000008 CR3: 000000010959a000 CR4: 00000000000006f0 Call Trace: __folio_migrate_mapping+0x59e/0x950 __migrate_folio.constprop.0+0x5f/0x120 move_to_new_folio+0xfd/0x250 migrate_pages+0x383/0xd70 soft_offline_page+0x2ab/0x7f0 soft_offline_page_store+0x52/0x90 kernfs_fop_write_iter+0x12c/0x1d0 vfs_write+0x380/0x540 ksys_write+0x64/0xe0 do_syscall_64+0xb9/0x1d0 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f5b3a514887 RSP: 002b:00007ffe138fce68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 000000000000000c RCX: 00007f5b3a514887 RDX: 000000000000000c RSI: 0000556ab809ee10 RDI: 0000000000000001 RBP: 0000556ab809ee10 R08: 00007f5b3a5d1460 R09: 000000007fffffff R10: 0000000000000000 R11: 0000000000000246 R12: 000000000000000c R13: 00007f5b3a61b780 R14: 00007f5b3a617600 R15: 00007f5b3a616a00 It's because hugetlb folio is passed to __folio_undo_large_rmappable() unexpectedly. large_rmappable flag is imperceptibly set to hugetlb folio since commit f6a8dd98a2ce ("hugetlb: convert alloc_buddy_hugetlb_folio to use a folio"). Then commit be9581ea8c05 ("mm: fix crashes from deferred split racing folio migration") makes folio_migrate_mapping() call folio_undo_large_rmappable() triggering the bug. Fix this issue by clearing large_rmappable flag for hugetlb folios. They don't need that flag set anyway. Fixes: f6a8dd98a2ce ("hugetlb: convert alloc_buddy_hugetlb_folio to use a folio") Fixes: be9581ea8c05 ("mm: fix crashes from deferred split racing folio migration") Signed-off-by: Miaohe Lin Cc: --- mm/hugetlb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 6282dd9e37e3..45fd3bc75332 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2173,6 +2173,9 @@ static struct folio *alloc_buddy_hugetlb_folio(struct hstate *h, nid = numa_mem_id(); retry: folio = __folio_alloc(gfp_mask, order, nid, nmask); + /* Ensure hugetlb folio won't have large_rmappable flag set. */ + if (folio) + folio_clear_large_rmappable(folio); if (folio && !folio_ref_freeze(folio, 1)) { folio_put(folio); -- 2.33.0 . From: Zhiguo Jiang To: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , David Hildenbrand , Matthew Wilcox Cc: opensource.kernel@vivo.com, Zhiguo Jiang Subject: [PATCH v7] mm: shrink skip folio mapped by an exiting process Date: Tue, 9 Jul 2024 20:31:15 +0800 Message-ID: <20240709123115.117-1-justinjiang@vivo.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272019 org.kvack.linux-mm:203067 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The releasing process of the non-shared anonymous folio mapped solely by an exiting process may go through two flows: 1) the anonymous folio is firstly is swaped-out into swapspace and transformed into a swp_entry in shrink_folio_list; 2) then the swp_entry is released in the process exiting flow. This will result in the high cpu load of releasing a non-shared anonymous folio mapped solely by an exiting process. When the low system memory and the exiting process exist at the same time, it will be likely to happen, because the non-shared anonymous folio mapped solely by an exiting process may be reclaimed by shrink_folio_list. This patch is that shrink skips the non-shared anonymous folio solely mapped by an exting process and this folio is only released directly in the process exiting flow, which will save swap-out time and alleviate the load of the process exiting. Signed-off-by: Zhiguo Jiang --- Change log: v6->v7: 1.Modify tab indentation to space indentation of the continuation lines of the condition. v5->v6: 1.Move folio_likely_mapped_shared() under the PTL. 2.Add check_stable_address_space() to replace MMF_OOM_SKIP. 3.Remove folio_test_anon(folio). v4->v5: 1.Further modify to skip non-shared anonymous folio only. 2.Update comments for pra->referenced = -1. v3->v4: 1.Modify to skip only the non-shared anonymous folio mapped solely by an exiting process. v2->v3: Nothing. v1->v2: 1.The VM_EXITING added in v1 patch is removed, because it will fail to compile in 32-bit system. Comments from participants and my responses: [v6->v7]: 1.Matthew Wilcox You told me you'd fix the indentation. You cannot indent both the continuation lines of the condition and the body of the if by one tab each! --> Modify tab indentation to space indentation of the continuation lines of the condition. [v5->v6]: 1.David Hildenbrand I'm currently working on moving all folio_likely_mapped_shared() under the PTL, where we are then sure that the folio is actually mapped by this process (e.g., no concurrent unmapping poisslbe). Can we do the same here directly? --> You are right. we might use page_vma_mapped_walk_done() to bail out. (Barry Song) 2.Barry Song By the way, I am not convinced that using test_bit(MMF_OOM_SKIP, &vma->vm_mm->flags) is correct (I think it is wrong). And exit_mmap() automatically has MMF_OOM_SKIP. What is the purpose of this check? Is there a better way to determine if a process is an OOM target? What about check_stable_address_space() ? --> Sorry, I overlook the situation with if (is_global_init(p)), MMF_OOM_SKIP is indeed not suitable. It seems feasible for check_stable_address_space() replacing MMF_OOM_SKIP. check_stable_address_space() can indicate oom kill, and !atomic_read(&vma->vm_mm->mm_users) can indicate the normal process exiting. I also think we actually can remove "folio_test_anon(folio)". --> Yes, update in patch v6. [v4->v5]: 1.Barry Song I don't think this is correct. folio_likely_mapped_shared() is almost "correct" but not always. Please explain why you set pra->referenced = -1. Please address all comments before you send a new version. --> Update in patch v5. 2.Matthew Wilcox How is the file folio similar? File folios are never written to swap, and they'll be written back from the page cache whenever the filesystem decides it's a good time to do so. --> What do you mean is that the file folio will not have any relevant identifier left in memory after it is reclamed in the shrink flow, and it will not be released again during an exiting process? If that's the case, I think we only need the anon folio is skipped here. [v3->v4]: 1.Barry Song This is clearly version 3, as you previously sent version 2, correct? --> Yes. Could you please describe the specific impact on users, including user experience and power consumption? How serious is this problem? --> At present, I do not have a suitable method to accurately measure the optimization benefit datas of this modifications, but I believe it theoretically has some benefits. Launching large memory app (for example, starting the camera) in multiple backend scenes may result in the high cpu load of the exiting processes. Applications? --> Yes, when system is low memory, it more likely to occur. I'm not completely convinced this patch is correct, but it appears to be heading in the right direction. Therefore, I expect to see new versions rather than it being dead. You changed the file mode to 755, which is incorrect. --> Solved. Why use -1? Is this meant to simulate lock contention to keep the folio without activating it? Please do have some comments to explain why. I'm not convinced this change is appropriate for shared folios. It seems more suitable for exclusive folios used solely by the exiting process. --> The skiped folios are FOLIOREF_KEEP and added into inactive lru, beacase the folios will be freed soon in the exiting process flow. Yes, the shared folios can not be simply skipped. I have made relevant modifications in patch v4 and please help to further review. https://lore.kernel.org/linux-mm/20240708031517.856-1-justinjiang@vivo.com/ 2.David Hildenbrand but what if it is shared among multiple processes and only one of them is exiting? --> Modify to skip only the non-shared anonymous folio mapped solely by an exiting process in next version v4. [v2->v3:] Nothing. [v1->v2]: 1.Matthew Wilcox What testing have you done of this patch? How often does it happen? Are there particular workloads that benefit from this? (I'm not sure what "mutil backed-applications" are?) And I do mean specifically of this patch, because to my eyes it shouldn't even compile. Except on 32-bit where it'll say "warning: integer constant out of range". --> Yes, I have tested. When the low system memory and the exiting process exist at the same time, it will happen. This modification can alleviate the load of the exiting process. "mutil backed-applications" means that there are a large number of the backend applications in the system. The VM_EXITING added in v1 patch is removed, because it will fail to compile in 32-bit system. mm/rmap.c | 14 ++++++++++++++ mm/vmscan.c | 7 ++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/mm/rmap.c b/mm/rmap.c index 88156deb46a6..bb9954773cce 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -877,6 +877,20 @@ static bool folio_referenced_one(struct folio *folio, continue; } + /* + * Skip the non-shared swapbacked folio mapped solely by + * the exiting or OOM-reaped process. This avoids redundant + * swap-out followed by an immediate unmap. + */ + if ((!atomic_read(&vma->vm_mm->mm_users) || + check_stable_address_space(vma->vm_mm)) && + folio_test_swapbacked(folio) && + !folio_likely_mapped_shared(folio)) { + pra->referenced = -1; + page_vma_mapped_walk_done(&pvmw); + return false; + } + if (pvmw.pte) { if (lru_gen_enabled() && pte_young(ptep_get(pvmw.pte))) { diff --git a/mm/vmscan.c b/mm/vmscan.c index 80f9a486cf27..1d5f78a3dbeb 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -863,7 +863,12 @@ static enum folio_references folio_check_references(struct folio *folio, if (vm_flags & VM_LOCKED) return FOLIOREF_ACTIVATE; - /* rmap lock contention: rotate */ + /* + * There are two cases to consider. + * 1) Rmap lock contention: rotate. + * 2) Skip the non-shared swapbacked folio mapped solely by + * the exiting or OOM-reaped process. + */ if (referenced_ptes == -1) return FOLIOREF_KEEP; -- 2.39.0 . From: Heiko Stuebner To: mturquette@baylibre.com, sboyd@kernel.org Cc: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, heiko@sntech.de, quentin.schulz@cherry.de, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org Subject: [PATCH 0/6] Binding and driver for "dumb" clock generators Date: Tue, 9 Jul 2024 14:31:15 +0200 Message-Id: <20240709123121.1452394-1-heiko@sntech.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272021 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Rockchip boards with PCIe3 controllers inside the soc (rk3568, rk3588) have external clock generators on the board to generate the needed 100MHz reference clock the PCIe3 controller needs. Often these clock generators need supplies to be enabled to run. Modelling this clock has taken a number of shapes: - The rk3568 Rock-3a modelled the generator-regulator as "phy-supply" [0] &pcie30phy { phy-supply = <&vcc3v3_pi6c_03>; status = "okay"; }; which is of course not part of the binding - On the Rock-5-ITX the supply of the clock generator is controlled by the same gpio as the regulator supplying the the port connected to the pcie30x4 controller, so if this controller probes first, both controllers will just run. But if the pcie30x2 controller probes first (which has a different supply), the controller will stall at the first dbi read. - Recent Theobroma-Systems boards (Jaguar and Tiger) modelled their generator as a combination of fixed clock and gpio-gate, which works because the generator's vdd-supply is always on and only the output- enable pin needs to be toggled. So this series attempts to improve the situation by allowing to model these clock generators as actual entities in the devicetree, to not have them just accidentially work or break bindings. [0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/rockchip/rk3568-rock-3a.dts#n605 Heiko Stuebner (6): dt-bindings: clocks: add binding for generic clock-generators clk: add driver for generic clock generators arm64: dts: rockchip: fix the pcie clock generator on Rock 5 ITX arm64: dts: rockchip: use clock-generator for pcie-refclk on rk3588-jaguar arm64: dts: rockchip: use clock-generator for pcie-refclk on rk3588-tiger arm64: dts: rockchip: add pinctrl for clk-generator gpio on rk3588-tiger .../bindings/clock/clock-generator.yaml | 62 ++++++++ .../arm64/boot/dts/rockchip/rk3588-jaguar.dts | 13 +- .../boot/dts/rockchip/rk3588-rock-5itx.dts | 34 ++++- .../arm64/boot/dts/rockchip/rk3588-tiger.dtsi | 21 +-- drivers/clk/Kconfig | 7 + drivers/clk/Makefile | 1 + drivers/clk/clk-generator.c | 133 ++++++++++++++++++ 7 files changed, 251 insertions(+), 20 deletions(-) create mode 100644 Documentation/devicetree/bindings/clock/clock-generator.yaml create mode 100644 drivers/clk/clk-generator.c -- 2.39.2 . From: Sean Nyekjaer To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue , Marcin Sloniewski , Ahmad Fatoum Cc: Sean Nyekjaer , Alexandre Torgue , devicetree@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] ARM: dts: stm32: Add missing gpio options for sdmmc2_d47_pins_d Date: Tue, 9 Jul 2024 14:16:18 +0200 Message-ID: <20240709121619.1588520-1-sean@geanix.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272033 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This enables DDR50 mode for the eMMC on Octavo OSD32MP1-RED board. Fixes: be78ab4f632c ("ARM: dts: stm32: add initial support for stm32mp157-odyssey board") Signed-off-by: Sean Nyekjaer --- arch/arm/boot/dts/st/stm32mp15-pinctrl.dtsi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/arm/boot/dts/st/stm32mp15-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32mp15-pinctrl.dtsi index ae83e7b10232..70e132dc6147 100644 --- a/arch/arm/boot/dts/st/stm32mp15-pinctrl.dtsi +++ b/arch/arm/boot/dts/st/stm32mp15-pinctrl.dtsi @@ -2229,6 +2229,9 @@ pins { , /* SDMMC2_D5 */ , /* SDMMC2_D6 */ ; /* SDMMC2_D7 */ + slew-rate = <1>; + drive-push-pull; + bias-pull-up; }; }; -- 2.45.2 . From: Tengfei Fan Date: Tue, 9 Jul 2024 20:46:19 +0800 Subject: [PATCH v2] dt-bindings: phy: qcom,usb-snps-femto-v2: Add bindings for QCS9100 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_usb_hs_phy_compatible-v2-1-c84fbbafa9d6@quicinc.com> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Wesley Cheng CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272038 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the compatible string for USB phy found in Qualcomm QCS9100 SoC. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-usb-hs-phy" to describe non-SCMI based USB phy. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml index 519c2b403f66..cd0a723590f0 100644 --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml @@ -17,6 +17,7 @@ properties: oneOf: - items: - enum: + - qcom,qcs9100-usb-hs-phy - qcom,sa8775p-usb-hs-phy - qcom,sc8280xp-usb-hs-phy - const: qcom,usb-snps-hs-5nm-phy --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_usb_hs_phy_compatible-8b3b9cb6538e Best regards, -- Tengfei Fan . From: Dongsheng Yang To: axboe@kernel.dk, dan.j.williams@intel.com, gregory.price@memverge.com, John@groves.net, Jonathan.Cameron@Huawei.com, bbhushan2@marvell.com, chaitanyak@nvidia.com, rdunlap@infradead.org Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Dongsheng Yang Subject: [PATCH v1 0/7] Introduce CBD (CXL Block Device) Date: Tue, 9 Jul 2024 13:03:36 +0000 Message-Id: <20240709130343.858363-1-dongsheng.yang@linux.dev> X-Mailing-List: linux-block@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-block:93970 org.kernel.vger.linux-cxl:29354 org.kernel.vger.linux-kernel:1272049 Newsgroups: org.kernel.vger.linux-block,org.kernel.vger.linux-cxl,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi all, This is V1 for CXL Block Device. This patchset is based on v6.9 and it's available at: https://github.com/DataTravelGuide/linux branch cbd. changes from RFC: (https://lore.kernel.org/lkml/20240422071606.52637-1-dongsheng.yang@easystack.cn/) (1) only support hardware-consistency cxl shared memory. As discussed in the RFC, the current cbd only supports hardware-consistency for CXL shared memory, and some code related to software-consistency support has been removed from the RFC. In the current tests, whether using local PMEM or QEMU-simulated shared memory devices, they all are hardware-consistency. (2) add a segment abstraction for transport data space management. The layout of the transport remains essentially unchanged, with the only difference being the addition of a segment abstraction for scalability purposes. A channel is a type of segment used for data transfer between the blkdev and the backend. In the future, there will be more segment types, such as a cache segment for caching data for the blkdev. (3) add CONFIG_CBD_CRC option in Kconfig We only support hardware-consistency, so theoretically, there should be no data consistency issues when transferring data between blkdev and the backend. However, cbd provides a verification mechanism, offering CRC checks for both metadata and data to verify after data reception. This method impacts performance, so it is an option in Kconfig. (4) allow user to clear dead object in transport metadata When a host using cbd, whether backend or blkdev, dies without unregistering, the metadata in the transport will retain some dead information. In v1, users are allowed to clear this dead metadata via sysfs. Of course, there is a heartbeat mechanism to ensure users do not mistakenly delete alive metadata. (5) allow user to force stop blkdev and reattach backend This also handles scenarios where the host goes offline unexpectedly. When the backend goes offline unexpectedly, the corresponding blkdev might have I/O operations that cannot finish. In such cases, cbd provides two ways to handle this: a) If the backend can recover, we can re-add the backend to the corresponding transport, allowing the blkdev's I/O operations to continue being processed. b) If the backend cannot recover, the blkdev can be force-stopped, and the incomplete I/O operations will return EIO, but they will no longer remain blocked. (6) dont allocate new pages in hander for bio data. The backend handler does not allocate pages for bio. Instead, the handler can directly map the data pages from the transport to the bio, and then send the bio to the backend disk, achieving zero copy on the backend side. (7) new test project cbd-tests: cbd-tests (https://github.com/DataTravelGuide/cbd-tests), for testing cbd. It is an automated testing project based on the Avocado testing framework. Currently, it includes xfstests on cbd block devices with XFS, V1 Passed all 944 tests in xfstests (https://datatravelguide.github.io/dtg-blog/cbd/test-results/test_result_v1/test-results/xfstests-1-xfstests.py_Xfstests.test_run-cbdd_timeout-no_timeout-disk_type-fs_type-fs_xfs-f090/debug.log). as well as fio performance testing directly on /dev/cbdX block devices. The test results can be viewed here in [test results]: https://datatravelguide.github.io/dtg-blog/cbd/cbd.html#test-results Thanx Dongsheng Yang (7): cbd: introduce cbd_transport cbd: introduce cbd_host cbd: introduce cbd_segment cbd: introduce cbd_channel cbd: introduce cbd_blkdev cbd: introduce cbd_backend block: Init for CBD(CXL Block Device) module drivers/block/Kconfig | 2 + drivers/block/Makefile | 2 + drivers/block/cbd/Kconfig | 23 + drivers/block/cbd/Makefile | 3 + drivers/block/cbd/cbd_backend.c | 296 ++++++++++ drivers/block/cbd/cbd_blkdev.c | 417 ++++++++++++++ drivers/block/cbd/cbd_channel.c | 153 ++++++ drivers/block/cbd/cbd_handler.c | 263 +++++++++ drivers/block/cbd/cbd_host.c | 128 +++++ drivers/block/cbd/cbd_internal.h | 848 ++++++++++++++++++++++++++++ drivers/block/cbd/cbd_main.c | 224 ++++++++ drivers/block/cbd/cbd_queue.c | 526 ++++++++++++++++++ drivers/block/cbd/cbd_segment.c | 108 ++++ drivers/block/cbd/cbd_transport.c | 883 ++++++++++++++++++++++++++++++ 14 files changed, 3876 insertions(+) create mode 100644 drivers/block/cbd/Kconfig create mode 100644 drivers/block/cbd/Makefile create mode 100644 drivers/block/cbd/cbd_backend.c create mode 100644 drivers/block/cbd/cbd_blkdev.c create mode 100644 drivers/block/cbd/cbd_channel.c create mode 100644 drivers/block/cbd/cbd_handler.c create mode 100644 drivers/block/cbd/cbd_host.c create mode 100644 drivers/block/cbd/cbd_internal.h create mode 100644 drivers/block/cbd/cbd_main.c create mode 100644 drivers/block/cbd/cbd_queue.c create mode 100644 drivers/block/cbd/cbd_segment.c create mode 100644 drivers/block/cbd/cbd_transport.c -- 2.34.1 . From: Tengfei Fan Subject: [PATCH v2 0/2] pinctrl: qcom: Add the QCS9100 tlmm compatible Date: Tue, 9 Jul 2024 21:04:40 +0800 Message-ID: <20240709-add_qcs9100_tlmm_compatible-v2-0-d025b58ea196@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Bjorn Andersson , Linus Walleij , Rob Herring , "Krzysztof Kozlowski" , Conor Dooley , "Bartosz Golaszewski" CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272070 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-gpio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: pinctrl: add qcs9100-tlmm compatible pinctrl: qcom: add the tlmm driver support for qcs9100 platform Documentation/devicetree/bindings/pinctrl/qcom,sa8775p-tlmm.yaml | 5 ++++- drivers/pinctrl/qcom/pinctrl-sa8775p.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_tlmm_compatible-7e9b8e1bff83 Best regards, -- Tengfei Fan . From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev, tglx@linutronix.de Cc: "Jason A. Donenfeld" , linux-crypto@vger.kernel.org, linux-api@vger.kernel.org, x86@kernel.org, Linus Torvalds , Greg Kroah-Hartman , Adhemerval Zanella Netto , Carlos O'Donell , Florian Weimer , Arnd Bergmann , Jann Horn , Christian Brauner , David Hildenbrand Subject: [PATCH v22 0/4] implement getrandom() in vDSO Date: Tue, 9 Jul 2024 15:05:08 +0200 Message-ID: <20240709130513.98102-1-Jason@zx2c4.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272072 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.patches,org.kernel.vger.linux-api,org.kernel.vger.linux-crypto Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The plan for this series is to take it through my random.git tree for 6.11. It's cooking in linux-next now. Changes v21->v22: - Only add MAP_DROPPABLE, not the other MAP_*s, but make it imply the other relevant flags. - Ensure that mlock() and madvise() can't undo MAP_DROPPABLE implications. - Since MAP_DROPPABLE is generally useful, remove conditional Kconfig scafolding around it. - Follow mm/ standards on comment style. - Base atop latest selftest PR, to avoid merge conflicts in 6.11. - Update glibc patches. Changes v20->v21: - After extensive conversation with Linus, we're nixing the entire vgetrandom_alloc() syscall, in favor of just exposing the functionality needed through mmap() and having the kernel communicate to the caller what arguments/sizes it should pass to mmap(). This simplifies the series considerably. It also means that the first commit adds some new MAP_* constants for mmap(). - Separate vDSO selftests out into separate commit. -------------- Useful links: - This series: - https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git/log/ - Glibc patches by Adhemerval and me against glibc-2.39: - https://git.zx2c4.com/glibc/log/?h=vdso - In case you're actually interested in the v≤14 design where faults were non-fatal and instructions were skipped (which I think is more coherent, even if the implementation is controversial), this lives in my branch here: - https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git/log/?h=jd/vdso-skip-insn Note that I'm *not* actually proposing this for upstream at this time. But it may be of conversational interest. ------------- Two statements: 1) Userspace wants faster cryptographically secure random numbers of arbitrary size, big or small. 2) Userspace is currently unable to safely roll its own RNG with the same security profile as getrandom(). Statement (1) has been debated for years, with arguments ranging from "we need faster cryptographically secure card shuffling!" to "the only things that actually need good randomness are keys, which are few and far between" to "actually, TLS CBC nonces are frequent" and so on. I don't intend to wade into that debate substantially, except to note that recently glibc added arc4random(), whose goal is to return a cryptographically secure uint32_t, and there are real user reports of it being too slow. So here we are. Statement (2) is more interesting. The kernel is the nexus of all entropic inputs that influence the RNG. It is in the best position, and probably the only position, to decide anything at all about the current state of the RNG and of its entropy. One of the things it uniquely knows about is when reseeding is necessary. For example, when a virtual machine is forked, restored, or duplicated, it's imparative that the RNG doesn't generate the same outputs. For this reason, there's a small protocol between hypervisors and the kernel that indicates this has happened, alongside some ID, which the RNG uses to immediately reseed, so as not to return the same numbers. Were userspace to expand a getrandom() seed from time T1 for the next hour, and at some point T2 < hour, the virtual machine forked, userspace would continue to provide the same numbers to two (or more) different virtual machines, resulting in potential cryptographic catastrophe. Something similar happens on resuming from hibernation (or even suspend), with various compromise scenarios there in mind. There's a more general reason why userspace rolling its own RNG from a getrandom() seed is fraught. There's a lot of attention paid to this particular Linuxism we have of the RNG being initialized and thus non-blocking or uninitialized and thus blocking until it is initialized. These are our Two Big States that many hold to be the holy differentiating factor between safe and not safe, between cryptographically secure and garbage. The fact is, however, that the distinction between these two states is a hand-wavy wishy-washy inexact approximation. Outside of a few exceptional cases (e.g. a HW RNG is available), we actually don't really ever know with any rigor at all when the RNG is safe and ready (nor when it's compromised). We do the best we can to "estimate" it, but entropy estimation is fundamentally impossible in the general case. So really, we're just doing guess work, and hoping it's good and conservative enough. Let's then assume that there's always some potential error involved in this differentiator. In fact, under the surface, the RNG is engineered around a different principle, and that is trying to *use* new entropic inputs regularly and at the right specific moments in time. For example, close to boot time, the RNG reseeds itself more often than later. At certain events, like VM fork, the RNG reseeds itself immediately. The various heuristics for when the RNG will use new entropy and how often is really a core aspect of what the RNG has some potential to do decently enough (and something that will probably continue to improve in the future from random.c's present set of algorithms). So in your mind, put away the metal attachment to the Two Big States, which represent an approximation with a potential margin of error. Instead keep in mind that the RNG's primary operating heuristic is how often and exactly when it's going to reseed. So, if userspace takes a seed from getrandom() at point T1, and uses it for the next hour (or N megabytes or some other meaningless metric), during that time, potential errors in the Two Big States approximation are amplified. During that time potential reseeds are being lost, forgotten, not reflected in the output stream. That's not good. The simplest statement you could make is that userspace RNGs that expand a getrandom() seed at some point T1 are nearly always *worse*, in some way, than just calling getrandom() every time a random number is desired. For those reasons, after some discussion on libc-alpha, glibc's arc4random() now just calls getrandom() on each invocation. That's trivially safe, and gives us latitude to then make the safe thing faster without becoming unsafe at our leasure. Card shuffling isn't particularly fast, however. How do we rectify this? By putting a safe implementation of getrandom() in the vDSO, which has access to whatever information a particular iteration of random.c is using to make its decisions. I use that careful language of "particular iteration of random.c", because the set of things that a vDSO getrandom() implementation might need for making decisions as good as the kernel's will likely change over time. This isn't just a matter of exporting certain *data* to userspace. We're not going to commit to a "data API" where the various heuristics used are exposed, locking in how the kernel works for decades to come, and then leave it to various userspaces to roll something on top and shoot themselves in the foot and have all sorts of complexity disasters. Rather, vDSO getrandom() is supposed to be the *same exact algorithm* that runs in the kernel, except it's been hoisted into userspace as much as possible. And so vDSO getrandom() and kernel getrandom() will always mirror each other hermetically. API-wise, the vDSO gains this function: ssize_t vgetrandom(void *buffer, size_t len, unsigned int flags, void *opaque_state, size_t opaque_len); The return value and the first 3 arguments are the same as ordinary getrandom(), while the penultimate argument is a pointer to some state allocated with the right flags passed to mmap(2), explained below. Were all five arguments passed to the getrandom syscall, nothing different would happen, and the functions would have the exact same behavior. If vgetrandom(NULL, 0, 0, ¶ms, ~0UL) is called, then params gets populated with information about what flags and prot fields to pass to mmap(2), as well as how big each state should be, so that the caller can slice up returned memory from mmap(2) into chunks for passing to vgetrandom(). Libc is expected to allocate a chunk of these on first use, and then dole them out to threads as they're created, allocating more when needed. The interesting meat of the implementation is in lib/vdso/getrandom.c, as generic C code, and it aims to mainly follow random.c's buffered fast key erasure logic. Before the RNG is initialized, it falls back to the syscall. Right now it uses a simple generation counter to make its decisions on reseeding (though this could be made more extensive over time). The actual place that has the most work to do is in all of the other files. Most of the vDSO shared page infrastructure is centered around gettimeofday, and so the main structs are all in arrays for different timestamp types, and attached to time namespaces, and so forth. I've done the best I could to add onto this in an unintrusive way. In my test results, performance is pretty stellar (around 15x for uint32_t generation), and it seems to be working. There's an extended example in the last commit of this series, showing how the syscall and the vDSO function are meant to be used together. Cc: linux-crypto@vger.kernel.org Cc: linux-api@vger.kernel.org Cc: x86@kernel.org Cc: Thomas Gleixner Cc: Linus Torvalds Cc: Greg Kroah-Hartman Cc: Adhemerval Zanella Netto Cc: Carlos O'Donell Cc: Florian Weimer Cc: Arnd Bergmann Cc: Jann Horn Cc: Christian Brauner Cc: David Hildenbrand Jason A. Donenfeld (4): mm: add MAP_DROPPABLE for designating always lazily freeable mappings random: introduce generic vDSO getrandom() implementation x86: vdso: Wire up getrandom() vDSO implementation selftests/vDSO: add tests for vgetrandom MAINTAINERS | 4 + arch/x86/Kconfig | 1 + arch/x86/entry/vdso/Makefile | 3 +- arch/x86/entry/vdso/vdso.lds.S | 2 + arch/x86/entry/vdso/vgetrandom-chacha.S | 178 +++++++++++ arch/x86/entry/vdso/vgetrandom.c | 17 ++ arch/x86/include/asm/vdso/getrandom.h | 55 ++++ arch/x86/include/asm/vdso/vsyscall.h | 2 + arch/x86/include/asm/vvar.h | 16 + drivers/char/random.c | 18 +- fs/proc/task_mmu.c | 1 + include/linux/mm.h | 7 + include/trace/events/mmflags.h | 7 + include/uapi/linux/mman.h | 1 + include/uapi/linux/random.h | 15 + include/vdso/datapage.h | 11 + include/vdso/getrandom.h | 46 +++ lib/vdso/Kconfig | 5 + lib/vdso/getrandom.c | 251 +++++++++++++++ mm/madvise.c | 5 +- mm/mlock.c | 2 +- mm/mmap.c | 30 ++ mm/rmap.c | 22 +- tools/include/asm/rwonce.h | 0 tools/include/uapi/linux/mman.h | 1 + tools/testing/selftests/mm/.gitignore | 1 + tools/testing/selftests/mm/Makefile | 1 + tools/testing/selftests/mm/droppable.c | 53 ++++ tools/testing/selftests/vDSO/.gitignore | 2 + tools/testing/selftests/vDSO/Makefile | 18 ++ .../testing/selftests/vDSO/vdso_test_chacha.c | 43 +++ .../selftests/vDSO/vdso_test_getrandom.c | 288 ++++++++++++++++++ 32 files changed, 1099 insertions(+), 7 deletions(-) create mode 100644 arch/x86/entry/vdso/vgetrandom-chacha.S create mode 100644 arch/x86/entry/vdso/vgetrandom.c create mode 100644 arch/x86/include/asm/vdso/getrandom.h create mode 100644 include/vdso/getrandom.h create mode 100644 lib/vdso/getrandom.c create mode 100644 tools/include/asm/rwonce.h create mode 100644 tools/testing/selftests/mm/droppable.c create mode 100644 tools/testing/selftests/vDSO/vdso_test_chacha.c create mode 100644 tools/testing/selftests/vDSO/vdso_test_getrandom.c base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826 prerequisite-patch-id: 9a45c4b77033012b2c2cbbec24fd8b2a7a5daf84 prerequisite-patch-id: 8b773921433de1e8b9fd5a8f3d6107258c133c2a prerequisite-patch-id: afd1b07bd24fe3c93d1fef782ba9064e95d1534c prerequisite-patch-id: a5cbcafe6072a173a8f20eac5cc7e545be50ae20 prerequisite-patch-id: 59640753e9c60e5d23ede9a20ed5c933a47b3f97 -- 2.45.2 . From: Neil Armstrong Subject: [PATCH 0/2] drm/panel: add support for the BOE TV101WUM-LL2 DSI Display Panel Date: Tue, 09 Jul 2024 15:05:43 +0200 Message-Id: <20240709-topic-sdm450-upstream-tbx605f-panel-v1-0-af473397835d@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Jessica Zhang , David Airlie , Daniel Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272074 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document and add support for the 1200x1920 BOE TV101WUM-LL2 DSI Display Panel found in the Lenovo Smart Tab M10 tablet. The controller powering the panel is unknown. Signed-off-by: Neil Armstrong --- Neil Armstrong (2): dt-bindings: display: panel: document BOE TV101WUM-LL2 DSI Display Panel drm/panel: add BOE tv101wum-ll2 panel driver .../bindings/display/panel/boe,tv101wum-ll2.yaml | 63 ++++++ drivers/gpu/drm/panel/Kconfig | 9 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-boe-tv101wum-ll2.c | 240 +++++++++++++++++++++ 4 files changed, 313 insertions(+) --- base-commit: 97e1ea2dc264da85da53b6ae5726a130bef690a3 change-id: 20240709-topic-sdm450-upstream-tbx605f-panel-f13d55fbd444 Best regards, -- Neil Armstrong . From: Kory Maincent To: linux-kernel@vger.kernel.org Cc: Oleksij Rempel , Kory Maincent , thomas.petazzoni@bootlin.com Subject: [PATCH net-next] MAINTAINERS: Add ethtool pse-pd to PSE NETWORK DRIVER Date: Tue, 9 Jul 2024 15:06:36 +0200 Message-Id: <20240709130637.163991-1-kory.maincent@bootlin.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272080 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add net/ethtool/pse-pd.c to PSE NETWORK DRIVER to receive emails concerning modifications to the ethtool part. Signed-off-by: Kory Maincent --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index e0f28278e504..b8312a8ba808 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18050,6 +18050,7 @@ L: netdev@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/net/pse-pd/ F: drivers/net/pse-pd/ +F: net/ethtool/pse-pd.c PSTORE FILESYSTEM M: Kees Cook -- 2.34.1 . From: Tengfei Fan Date: Tue, 9 Jul 2024 21:08:07 +0800 Subject: [PATCH v2] dt-bindings: crypto: ice: Document QCS9100 inline crypto engine X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-documnet_qcs9100_crypto_engine_compatible-v2-1-59bd16b1a99c@quicinc.com> To: Herbert Xu , "David S. Miller" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson CC: , , , , , Tengfei Fan , Maria Yu Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272083 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-crypto,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the compatible used for the inline crypto engine found on QCS9100. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-inline-crypto-engine" to describe non-SCMI based crypto engine. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Co-developed-by: Maria Yu Signed-off-by: Maria Yu --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/1b32168b-7d1c-4b18-b4f3-a4979232b515@quicinc.com --- Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml index 0304f074cf08..ad0944e05025 100644 --- a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml +++ b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml @@ -13,6 +13,7 @@ properties: compatible: items: - enum: + - qcom,qcs9100-inline-crypto-engine - qcom,sa8775p-inline-crypto-engine - qcom,sc7180-inline-crypto-engine - qcom,sc7280-inline-crypto-engine --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-documnet_qcs9100_crypto_engine_compatible-e5de2d56bca9 Best regards, -- Tengfei Fan . From: Kory Maincent To: "Kory Maincent (Dent Project)" , Jakub Kicinski , Andrew Lunn , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Oleksij Rempel , thomas.petazzoni@bootlin.com, "David S. Miller" , Eric Dumazet , Paolo Abeni Subject: [PATCH net] net: ethtool: pse-pd: Fix possible null-deref Date: Tue, 9 Jul 2024 15:12:01 +0200 Message-Id: <20240709131201.166421-1-kory.maincent@bootlin.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272086 org.kernel.vger.netdev:355930 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Fix a possible null dereference when a PSE supports both c33 and PoDL, but only one of the netlink attributes is specified. The c33 or PoDL PSE capabilities are already validated in the ethnl_set_pse_validate() call. Signed-off-by: Kory Maincent Reported-by: Jakub Kicinski Closes: https://lore.kernel.org/netdev/20240705184116.13d8235a@kernel.org/ Fixes: 4d18e3ddf427 ("net: ethtool: pse-pd: Expand pse commands with the PSE PoE interface") --- net/ethtool/pse-pd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ethtool/pse-pd.c b/net/ethtool/pse-pd.c index 2c981d443f27..9dc70eb50039 100644 --- a/net/ethtool/pse-pd.c +++ b/net/ethtool/pse-pd.c @@ -178,9 +178,9 @@ ethnl_set_pse(struct ethnl_req_info *req_info, struct genl_info *info) phydev = dev->phydev; /* These values are already validated by the ethnl_pse_set_policy */ - if (pse_has_podl(phydev->psec)) + if (tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]) config.podl_admin_control = nla_get_u32(tb[ETHTOOL_A_PODL_PSE_ADMIN_CONTROL]); - if (pse_has_c33(phydev->psec)) + if (tb[ETHTOOL_A_C33_PSE_ADMIN_CONTROL]) config.c33_admin_control = nla_get_u32(tb[ETHTOOL_A_C33_PSE_ADMIN_CONTROL]); /* Return errno directly - PSE has no notification */ -- 2.34.1 . From: Ma Ke To: fbarrat@linux.ibm.com, ajd@linux.ibm.com, arnd@arndb.de, gregkh@linuxfoundation.org, manoj@linux.vnet.ibm.com, mpe@ellerman.id.au, clombard@linux.vnet.ibm.com, imunsie@au1.ibm.com Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH] cxl: Fix possible null pointer dereference in read_handle() Date: Tue, 9 Jul 2024 21:17:54 +0800 Message-Id: <20240709131754.855144-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272092 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable,org.ozlabs.lists.linuxppc-dev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In read_handle() of_get_address() may return NULL which is later dereferenced. Fix this bug by adding NULL check. Cc: stable@vger.kernel.org Fixes: 14baf4d9c739 ("cxl: Add guest-specific code") Signed-off-by: Ma Ke --- drivers/misc/cxl/of.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/misc/cxl/of.c b/drivers/misc/cxl/of.c index bcc005dff1c0..d8dbb3723951 100644 --- a/drivers/misc/cxl/of.c +++ b/drivers/misc/cxl/of.c @@ -58,7 +58,7 @@ static int read_handle(struct device_node *np, u64 *handle) /* Get address and size of the node */ prop = of_get_address(np, 0, &size, NULL); - if (size) + if (!prop || size) return -EINVAL; /* Helper to read a big number; size is in cells (not bytes) */ -- 2.25.1 . Date: Tue, 9 Jul 2024 06:20:46 -0700 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709132058.227930-1-jmattson@google.com> Subject: [PATCH 5.10 RESEND] x86/retpoline: Move a NOENDBR annotation to the SRSO dummy return thunk From: Jim Mattson To: Greg Kroah-Hartman , "Borislav Petkov (AMD)" , Ingo Molnar , x86@kernel.org, linux-kernel@vger.kernel.org Cc: Jim Mattson , Greg Thelen , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272096 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The linux-5.10-y backport of commit b377c66ae350 ("x86/retpoline: Add NOENDBR annotation to the SRSO dummy return thunk") misplaced the new NOENDBR annotation, repeating the annotation on __x86_return_thunk, rather than adding the annotation to the !CONFIG_CPU_SRSO version of srso_alias_untrain_ret, as intended. Move the annotation to the right place. Fixes: 0bdc64e9e716 ("x86/retpoline: Add NOENDBR annotation to the SRSO dummy return thunk") Reported-by: Greg Thelen Signed-off-by: Jim Mattson Acked-by: Borislav Petkov (AMD) Cc: stable@vger.kernel.org --- arch/x86/lib/retpoline.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S index ab9b047790dd..d1902213a0d6 100644 --- a/arch/x86/lib/retpoline.S +++ b/arch/x86/lib/retpoline.S @@ -105,6 +105,7 @@ __EXPORT_THUNK(srso_alias_untrain_ret) /* dummy definition for alternatives */ SYM_START(srso_alias_untrain_ret, SYM_L_GLOBAL, SYM_A_NONE) ANNOTATE_UNRET_SAFE + ANNOTATE_NOENDBR ret int3 SYM_FUNC_END(srso_alias_untrain_ret) @@ -258,7 +259,6 @@ SYM_CODE_START(__x86_return_thunk) UNWIND_HINT_FUNC ANNOTATE_NOENDBR ANNOTATE_UNRET_SAFE - ANNOTATE_NOENDBR ret int3 SYM_CODE_END(__x86_return_thunk) -- 2.45.2.803.g4e1b14247a-goog . From: Patrick Roy To: , , , , , CC: Patrick Roy , , , , , , , , , , , , , , , , , Subject: [RFC PATCH 0/8] Unmapping guest_memfd from Direct Map Date: Tue, 9 Jul 2024 14:20:28 +0100 Message-ID: <20240709132041.3625501-1-roypat@amazon.co.uk> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272097 org.kvack.linux-mm:203082 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kvm,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hey all, This RFC series is a rough draft adding support for running non-confidential compute VMs in guest_memfd, based on prior discussions with Sean [1]. Our specific usecase for this is the ability to unmap guest memory from the host kernel's direct map, as a mitigation against a large class of speculative execution issues. === Implementation === This patch series introduces a new flag to the `KVM_CREATE_GUEST_MEMFD` to remove its pages from the direct map when they are allocated. When trying to run a guest from such a VM, we now face the problem that without either userspace or kernelspace mappings of guest_memfd, KVM cannot access guest memory to, for example, do MMIO emulation of access memory used to guest/host communication. We have multiple options for solving this when running non-CoCo VMs: (1) implement a TDX-light solution, where the guest shares memory that KVM needs to access, and relies on paravirtual solutions where this is not possible (e.g. MMIO), (2) have KVM use userspace mappings of guest_memfd (e.g. a memfd_secret-style solution), or (3) dynamically reinsert pages into the direct map whenever KVM wants to access them. This RFC goes for option (3). Option (1) is a lot of overhead for very little gain, since we are not actually constrained by a physical inability to access guest memory (e.g. we are not in a TDX context where accesses to guest memory cause a #MC). Option (2) has previously been rejected [1]. In this patch series, we make sufficient parts of KVM gmem-aware to be able to boot a Linux initrd from private memory on x86. These include KVM's MMIO emulation (including guest page table walking) and kvm-clock. For VM types which do not allow accessing gmem, we return -EFAULT and attempt to prepare a KVM_EXIT_MEMORY_FAULT. Additionally, this patch series adds support for "restricted" userspace mappings of guest_memfd, which work similar to memfd_secret (e.g. disallow get_user_pages), which allows handling I/O and loading the guest kernel in a simple way. Support for this is completely independent of the rest of the functionality introduced in this patch series. However, it is required to build a minimal hypervisor PoC that actually allows booting a VM from a disk. === Performance === We have run some preliminary performance benchmarks to assess the impact of on-the-fly direct map manipulations. We were mainly interested in the impact of manipulating the direct map for MMIO emulation on virtio-mmio. Particularly, we were worried about the impact of the TLB and L1/2/3 Cache flushes that set_memory_[n]p entails. In our setup, we have taken a modified Firecracker VMM, spawned a Linux guest with 1 vCPU, and used fio to stress a virtio_blk device. We found that the cache flushes caused throughput to drop from around 600MB/s to ~50MB/s (~90%) for both reads and writes (on a Intel(R) Xeon(R) Platinum 8375C CPU with 64 cores). We then converted our prototype to use set_direct_map_{invalid,default}_noflush instead of set_memory_[n]p and found that without cache flushes the pure impact of the direct map manipulation is indistinguishable from noise. This is why we use set_direct_map_{invalid,default}_noflush instead of set_memory_[n]p in this RFC. Note that in this comparison, both the baseline, as well as the guest_memfd-supporting version of Firecracker were made to bounce I/O buffers in VMM userspace. As GUP is disabled for the guest_memfd VMAs, the virtio stack cannot directly pass guest buffers to read/write syscalls. === Security === We want to use unmapping guest memory from the host kernel as a security mitigation against transient execution attacks. Temporarily restoring direct map entries whenever KVM requires access to guest memory leaves a gap in this mitigation. We believe this to be acceptable for the above cases, since pages used for paravirtual guest/host communication (e.g. kvm-clock) and guest page tables do not contain sensitive data. MMIO emulation will only end up reading pages containing privileged instructions (e.g. guest kernel code). === Summary === Patches 1-4 are about hot-patching various points inside of KVM that access guest memory to correctly handle the case where memory happens to be guest-private. This means either handling the access as a memory error, or simply accessing the memslot's guest_memfd instead of looking at the userspace provided VMA if the VM type allows these kind of accesses. Patches 5-6 add a flag to KVM_CREATE_GUEST_MEMFD that will make it remove its pages from the kernel's direct map. Whenever KVM wants to access guest-private memory, it will temporarily re-insert the relevant pages. Patches 7-8 allow for restricted userspace mappings (e.g. get_user_pages paths are disabled like for memfd_secret) of guest_memfd, so that userspace has an easy path for loading the guest kernel and handling I/O-buffers. === ToDos / Limitations === There are still a few rough edges that need to be addressed before dropping the "RFC" tag, e.g. * Handle errors of set_direct_map_default_not_flush in kvm_gmem_invalidate_folio instead of calling BUG_ON * Lift the limitation of "at most one gfn_to_pfn_cache for each gfn/pfn" in e1c61f0a7963 ("kvm: gmem: Temporarily restore direct map entries when needed"). It currently means that guests with more than 1 vcpu fail to boot, because multiple vcpus can put their kvm-clock PV structures into the same page (gfn) * Write selftests, particularly around hole punching, direct map removal, and mmap. Lastly, there's the question of nested virtualization which Sean brought up in previous discussions, which runs into similar problems as MMIO. I have looked at it very briefly. On Intel, KVM uses various gfn->uhva caches, which run in similar problems as the gfn_to_hva_caches dealt with in 200834b15dda ("kvm: use slowpath in gfn_to_hva_cache if memory is private"). However, previous attempts at just converting this to gfn_to_pfn_cache (which would make them work with guest_memfd) proved complicated [2]. I suppose initially, we should probably disallow nested virtualization in VMs that have their memory removed from the direct map. Best, Patrick [1]: https://lore.kernel.org/linux-mm/cc1bb8e9bc3e1ab637700a4d3defeec95b55060a.camel@amazon.com/ [2]: https://lore.kernel.org/kvm/ZBEEQtmtNPaEqU1i@google.com/ Patrick Roy (8): kvm: Allow reading/writing gmem using kvm_{read,write}_guest kvm: use slowpath in gfn_to_hva_cache if memory is private kvm: pfncache: enlighten about gmem kvm: x86: support walking guest page tables in gmem kvm: gmem: add option to remove guest private memory from direct map kvm: gmem: Temporarily restore direct map entries when needed mm: secretmem: use AS_INACCESSIBLE to prohibit GUP kvm: gmem: Allow restricted userspace mappings arch/x86/kvm/mmu/paging_tmpl.h | 94 +++++++++++++++++++----- include/linux/kvm_host.h | 5 ++ include/linux/kvm_types.h | 1 + include/linux/secretmem.h | 13 +++- include/uapi/linux/kvm.h | 2 + mm/secretmem.c | 6 +- virt/kvm/guest_memfd.c | 83 +++++++++++++++++++-- virt/kvm/kvm_main.c | 112 +++++++++++++++++++++++++++- virt/kvm/pfncache.c | 130 +++++++++++++++++++++++++++++---- 9 files changed, 399 insertions(+), 47 deletions(-) base-commit: 890a64810d59b1a58ed26efc28cfd821fc068e84 -- 2.45.2 . From: Tengfei Fan Date: Tue, 9 Jul 2024 21:21:44 +0800 Subject: [PATCH v2] dt-bindings: ufs: qcom: document QCS9100 UFS X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_ufshc_compatible-v2-1-c6e6bcd0c494@quicinc.com> To: Manivannan Sadhasivam , Alim Akhtar , Avri Altman , Bart Van Assche , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Andy Gross CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272105 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-scsi Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the compatible string for the UFS found on QCS9100. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-ufshc" to describe non-SCMI based UFS. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/ufs/qcom,ufs.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml b/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml index 25a5edeea164..baee567fbcd6 100644 --- a/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml +++ b/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml @@ -26,6 +26,7 @@ properties: - qcom,msm8994-ufshc - qcom,msm8996-ufshc - qcom,msm8998-ufshc + - qcom,qcs9100-ufshc - qcom,sa8775p-ufshc - qcom,sc7180-ufshc - qcom,sc7280-ufshc @@ -146,6 +147,7 @@ allOf: contains: enum: - qcom,msm8998-ufshc + - qcom,qcs9100-ufshc - qcom,sa8775p-ufshc - qcom,sc7280-ufshc - qcom,sc8180x-ufshc --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_ufshc_compatible-dc47995c8378 Best regards, -- Tengfei Fan . From: Tengfei Fan Date: Tue, 9 Jul 2024 21:28:02 +0800 Subject: [PATCH v2] dt-bindings: thermal: qcom-tsens: document the QCS9100 Temperature Sensor X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_tsens_compatible-v2-1-f09a143161c1@quicinc.com> To: Amit Kucheria , Thara Gopinath , "Rafael J. Wysocki" , "Daniel Lezcano" , Zhang Rui , "Lukasz Luba" , Rob Herring , "Krzysztof Kozlowski" , Conor Dooley CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272108 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the Temperature Sensor (TSENS) on the QCS9100 Platform. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-tsens" to describe non-SCMI based tsens. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/thermal/qcom-tsens.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml index 99d9c526c0b6..ace2cf1975c4 100644 --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.yaml @@ -51,6 +51,7 @@ properties: - qcom,msm8996-tsens - qcom,msm8998-tsens - qcom,qcm2290-tsens + - qcom,qcs9100-tsens - qcom,sa8775p-tsens - qcom,sc7180-tsens - qcom,sc7280-tsens --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_tsens_compatible-b07b57d9b4dc Best regards, -- Tengfei Fan . From: Waiman Long To: Tejun Heo , Zefan Li , Johannes Weiner , Jonathan Corbet Cc: cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Waiman Long Subject: [PATCH-cgroup v2] cgroup: Show # of subsystem CSSes in root cgroup.stat Date: Tue, 9 Jul 2024 09:28:14 -0400 Message-Id: <20240709132814.2198740-1-longman@redhat.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272109 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.cgroups,org.kernel.vger.linux-doc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The /proc/cgroups file shows the number of cgroups for each of the subsystems. With cgroup v1, the number of CSSes is the same as the number of cgroups. That is not the case anymore with cgroup v2. The /proc/cgroups file cannot show the actual number of CSSes for the subsystems that are bound to cgroup v2. So if a v2 cgroup subsystem is leaking cgroups (usually memory cgroup), we can't tell by looking at /proc/cgroups which cgroup subsystems may be responsible. This patch adds CSS counts in the cgroup_subsys structure to keep track of the number of CSSes for each of the cgroup subsystems. As cgroup v2 had deprecated the use of /proc/cgroups, the root cgroup.stat file is extended to show the number of outstanding CSSes associated with all the non-inhibited cgroup subsystems that have been bound to cgroup v2. This will help us pinpoint which subsystems may be responsible for the increasing number of dying (nr_dying_descendants) cgroups. The cgroup-v2.rst file is updated to discuss this new behavior. With this patch applied, a sample output from root cgroup.stat file was shown below. nr_descendants 53 nr_dying_descendants 34 nr_cpuset 1 nr_cpu 40 nr_io 40 nr_memory 87 nr_perf_event 54 nr_hugetlb 1 nr_pids 53 nr_rdma 1 nr_misc 1 In this particular case, it can be seen that memory cgroup is the most likely culprit for causing the 34 dying cgroups. Signed-off-by: Waiman Long --- Documentation/admin-guide/cgroup-v2.rst | 10 ++++++++-- include/linux/cgroup-defs.h | 3 +++ kernel/cgroup/cgroup.c | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/cgroup-v2.rst b/Documentation/admin-guide/cgroup-v2.rst index 52763d6b2919..65af2f30196f 100644 --- a/Documentation/admin-guide/cgroup-v2.rst +++ b/Documentation/admin-guide/cgroup-v2.rst @@ -981,6 +981,12 @@ All cgroup core files are prefixed with "cgroup." A dying cgroup can consume system resources not exceeding limits, which were active at the moment of cgroup deletion. + nr_ + Total number of cgroups associated with that cgroup + subsystem, e.g. cpuset or memory. These cgroup counts + will only be shown in the root cgroup and for subsystems + bound to cgroup v2. + cgroup.freeze A read-write single value file which exists on non-root cgroups. Allowed values are "0" and "1". The default is "0". @@ -2930,8 +2936,8 @@ Deprecated v1 Core Features - "cgroup.clone_children" is removed. -- /proc/cgroups is meaningless for v2. Use "cgroup.controllers" file - at the root instead. +- /proc/cgroups is meaningless for v2. Use "cgroup.controllers" or + "cgroup.stat" files at the root instead. Issues with v1 and Rationales for v2 diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index b36690ca0d3f..522ab77f0406 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -776,6 +776,9 @@ struct cgroup_subsys { * specifies the mask of subsystems that this one depends on. */ unsigned int depends_on; + + /* Number of CSSes, used only for /proc/cgroups */ + atomic_t nr_csses; }; extern struct percpu_rw_semaphore cgroup_threadgroup_rwsem; diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index c8e4b62b436a..48eba2737b1a 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -3669,12 +3669,27 @@ static int cgroup_events_show(struct seq_file *seq, void *v) static int cgroup_stat_show(struct seq_file *seq, void *v) { struct cgroup *cgroup = seq_css(seq)->cgroup; + struct cgroup_subsys *ss; + int i; seq_printf(seq, "nr_descendants %d\n", cgroup->nr_descendants); seq_printf(seq, "nr_dying_descendants %d\n", cgroup->nr_dying_descendants); + if (cgroup_parent(cgroup)) + return 0; + + /* + * For the root cgroup, shows the number of csses associated + * with each of non-inhibited cgroup subsystems bound to it. + */ + do_each_subsys_mask(ss, i, ~cgrp_dfl_inhibit_ss_mask) { + if (ss->root != &cgrp_dfl_root) + continue; + seq_printf(seq, "nr_%s %d\n", ss->name, + atomic_read(&ss->nr_csses)); + } while_each_subsys_mask(); return 0; } @@ -5375,6 +5390,7 @@ static void css_free_rwork_fn(struct work_struct *work) int id = css->id; ss->css_free(css); + atomic_dec(&ss->nr_csses); cgroup_idr_remove(&ss->css_idr, id); cgroup_put(cgrp); @@ -5567,6 +5583,7 @@ static struct cgroup_subsys_state *css_create(struct cgroup *cgrp, if (IS_ERR(css)) return css; + atomic_inc(&ss->nr_csses); init_and_link_css(css, ss, cgrp); err = percpu_ref_init(&css->refcnt, css_release, 0, GFP_KERNEL); @@ -6005,6 +6022,8 @@ static void __init cgroup_init_subsys(struct cgroup_subsys *ss, bool early) /* Create the root cgroup state for this subsystem */ ss->root = &cgrp_dfl_root; css = ss->css_alloc(NULL); + atomic_set(&ss->nr_csses, 1); + /* We don't handle early failures gracefully */ BUG_ON(IS_ERR(css)); init_and_link_css(css, ss, &cgrp_dfl_root.cgrp); -- 2.39.3 . From: Yunsheng Lin To: , , CC: , , Yunsheng Lin , Alexander Duyck , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Matthias Brugger , AngeloGioacchino Del Regno , , , Subject: [PATCH net-next v10 00/15] Replace page_frag with page_frag_cache for sk_page_frag() Date: Tue, 9 Jul 2024 21:27:25 +0800 Message-ID: <20240709132741.47751-1-linyunsheng@huawei.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272111 org.kernel.vger.netdev:355932 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.bpf,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail After [1], there are still two implementations for page frag: 1. mm/page_alloc.c: net stack seems to be using it in the rx part with 'struct page_frag_cache' and the main API being page_frag_alloc_align(). 2. net/core/sock.c: net stack seems to be using it in the tx part with 'struct page_frag' and the main API being skb_page_frag_refill(). This patchset tries to unfiy the page frag implementation by replacing page_frag with page_frag_cache for sk_page_frag() first. net_high_order_alloc_disable_key for the implementation in net/core/sock.c doesn't seems matter that much now have have pcp support for high-order pages in commit 44042b449872 ("mm/page_alloc: allow high-order pages to be stored on the per-cpu lists"). As the related change is mostly related to networking, so targeting the net-next. And will try to replace the rest of page_frag in the follow patchset. After this patchset: 1. Unify the page frag implementation by taking the best out of two the existing implementations: we are able to save some space for the 'page_frag_cache' API user, and avoid 'get_page()' for the old 'page_frag' API user. 2. Future bugfix and performance can be done in one place, hence improving maintainability of page_frag's implementation. Kernel Image changing: Linux Kernel total | text data bss ------------------------------------------------------ after 45250307 | 27274279 17209996 766032 before 45254134 | 27278118 17209984 766032 delta -3827 | -3839 +12 +0 Performance validation: 1. Using micro-benchmark ko added in patch 1 to test aligned and non-aligned API performance impact for the existing users, there is no notiable performance degradation. Instead we seems to some minor performance boot for both aligned and non-aligned API after this patchset as below. 2. Use the below netcat test case, we also have some minor performance boot for repalcing 'page_frag' with 'page_frag_cache' after this patchset. server: taskset -c 32 nc -l -k 1234 > /dev/null client: perf stat -r 200 -- taskset -c 0 head -c 20G /dev/zero | taskset -c 1 nc 127.0.0.1 1234 In order to avoid performance noise as much as possible, the testing is done in system without any other laod and have enough iterations to prove the data is stable enogh, complete log for testing is below: taskset -c 32 nc -l -k 1234 > /dev/null perf stat -r 200 -- insmod ./page_frag_test.ko test_push_cpu=16 test_pop_cpu=17 perf stat -r 200 -- insmod ./page_frag_test.ko test_push_cpu=16 test_pop_cpu=17 test_align=1 perf stat -r 200 -- taskset -c 0 head -c 20G /dev/zero | taskset -c 1 nc 127.0.0.1 1234 *After* this patchset: Performance counter stats for 'insmod ./page_frag_test.ko test_push_cpu=16 test_pop_cpu=17' (200 runs): 17.829030 task-clock (msec) # 0.001 CPUs utilized ( +- 0.30% ) 7 context-switches # 0.386 K/sec ( +- 0.35% ) 0 cpu-migrations # 0.003 K/sec ( +- 28.06% ) 83 page-faults # 0.005 M/sec ( +- 0.10% ) 46303585 cycles # 2.597 GHz ( +- 0.30% ) 61119216 instructions # 1.32 insn per cycle ( +- 0.01% ) 14811318 branches # 830.742 M/sec ( +- 0.01% ) 21046 branch-misses # 0.14% of all branches ( +- 0.09% ) 23.856064365 seconds time elapsed ( +- 0.08% ) Performance counter stats for 'insmod ./page_frag_test.ko test_push_cpu=16 test_pop_cpu=17 test_align=1' (200 runs): 17.628569 task-clock (msec) # 0.001 CPUs utilized ( +- 0.01% ) 7 context-switches # 0.397 K/sec ( +- 0.12% ) 0 cpu-migrations # 0.000 K/sec 0 cpu-migrations # 0.000 K/sec 83 page-faults # 0.005 M/sec ( +- 0.10% ) 45785943 cycles # 2.597 GHz ( +- 0.01% ) 60043610 instructions # 1.31 insn per cycle ( +- 0.01% ) 14550182 branches # 825.375 M/sec ( +- 0.01% ) 21492 branch-misses # 0.15% of all branches ( +- 0.08% ) 23.443927103 seconds time elapsed ( +- 0.05% ) Performance counter stats for 'taskset -c 0 head -c 20G /dev/zero' (200 runs): 16626.042731 task-clock (msec) # 0.607 CPUs utilized ( +- 0.03% ) 3291020 context-switches # 0.198 M/sec ( +- 0.05% ) 1 cpu-migrations # 0.000 K/sec ( +- 0.50% ) 85 page-faults # 0.005 K/sec ( +- 0.16% ) 30581044838 cycles # 1.839 GHz ( +- 0.05% ) 34962744631 instructions # 1.14 insn per cycle ( +- 0.01% ) 6483883671 branches # 389.984 M/sec ( +- 0.02% ) 99624551 branch-misses # 1.54% of all branches ( +- 0.17% ) 27.370305077 seconds time elapsed ( +- 0.01% ) *Before* this patchset: Performance counter stats for 'insmod ./page_frag_test.ko test_push_cpu=16 test_pop_cpu=17' (200 runs): 18.143552 task-clock (msec) # 0.001 CPUs utilized ( +- 0.28% ) 7 context-switches # 0.382 K/sec ( +- 0.28% ) 1 cpu-migrations # 0.056 K/sec ( +- 0.97% ) 83 page-faults # 0.005 M/sec ( +- 0.10% ) 47105569 cycles # 2.596 GHz ( +- 0.28% ) 60628757 instructions # 1.29 insn per cycle ( +- 0.04% ) 14686743 branches # 809.475 M/sec ( +- 0.04% ) 21826 branch-misses # 0.15% of all branches ( +- 0.12% ) 23.918006193 seconds time elapsed ( +- 0.10% ) Performance counter stats for 'insmod ./page_frag_test.ko test_push_cpu=16 test_pop_cpu=17 test_align=1' (200 runs): 21.726393 task-clock (msec) # 0.001 CPUs utilized ( +- 0.72% ) 7 context-switches # 0.321 K/sec ( +- 0.24% ) 1 cpu-migrations # 0.047 K/sec ( +- 0.85% ) 83 page-faults # 0.004 M/sec ( +- 0.10% ) 56422898 cycles # 2.597 GHz ( +- 0.72% ) 61271860 instructions # 1.09 insn per cycle ( +- 0.05% ) 14837500 branches # 682.925 M/sec ( +- 0.05% ) 21484 branch-misses # 0.14% of all branches ( +- 0.10% ) 23.876306259 seconds time elapsed ( +- 0.13% ) Performance counter stats for 'taskset -c 0 head -c 20G /dev/zero' (200 runs): 17364.040855 task-clock (msec) # 0.624 CPUs utilized ( +- 0.02% ) 3340375 context-switches # 0.192 M/sec ( +- 0.06% ) 1 cpu-migrations # 0.000 K/sec 85 page-faults # 0.005 K/sec ( +- 0.15% ) 32077623335 cycles # 1.847 GHz ( +- 0.03% ) 35121047596 instructions # 1.09 insn per cycle ( +- 0.01% ) 6519872824 branches # 375.481 M/sec ( +- 0.02% ) 101877022 branch-misses # 1.56% of all branches ( +- 0.14% ) 27.842745343 seconds time elapsed ( +- 0.02% ) Note, ipv4-udp, ipv6-tcp and ipv6-udp is also tested with the below script: nc -u -l -k 1234 > /dev/null perf stat -r 4 -- head -c 51200000000 /dev/zero | nc -N -u 127.0.0.1 1234 nc -l6 -k 1234 > /dev/null perf stat -r 4 -- head -c 51200000000 /dev/zero | nc -N ::1 1234 nc -l6 -k -u 1234 > /dev/null perf stat -r 4 -- head -c 51200000000 /dev/zero | nc -u -N ::1 1234 CC: Alexander Duyck 1. https://lore.kernel.org/all/20240228093013.8263-1-linyunsheng@huawei.com/ Change log: V10: 1. Change Subject to "Replace page_frag with page_frag_cache for sk_page_frag()". 2. Move 'struct page_frag_cache' to sched.h as suggested by Alexander. 3. Rename skb_copy_to_page_nocache(). 4. Adjust change between patches to make it more reviewable as Alexander's comment. 5. Use 'aligned_remaining' variable to generate virtual address as Alexander's comment. 6. Some included header and typo fix as Alexander's comment. 7. Add back the get_order() opt patch for xtensa arch V9: 1. Add check for test_alloc_len and change perm of module_param() to 0 as Wang Wei' comment. 2. Rebased on latest net-next. V8: Remove patch 2 & 3 in V7, as free_unref_page() is changed to call pcp_allowed_order() and used in page_frag API recently in: commit 5b8d75913a0e ("mm: combine free_the_page() and free_unref_page()") V7: Fix doc build warning and error. V6: 1. Fix some typo and compiler error for x86 pointed out by Jakub and Simon. 2. Add two refactoring and optimization patches. V5: 1. Add page_frag_alloc_pg() API for tls_device.c case and refactor some implementation, update kernel bin size changing as bin size is increased after that. 2. Add ack from Mat. RFC v4: 1. Update doc according to Randy and Mat's suggestion. 2. Change probe API to "probe" for a specific amount of available space, rather than "nonzero" space according to Mat's suggestion. 3. Retest and update the test result. v3: 1. Use new layout for 'struct page_frag_cache' as the discussion with Alexander and other sugeestions from Alexander. 2. Add probe API to address Mat' comment about mptcp use case. 3. Some doc updating according to Bagas' suggestion. v2: 1. reorder test module to patch 1. 2. split doc and maintainer updating to two patches. 3. refactor the page_frag before moving. 4. fix a type and 'static' warning in test module. 5. add a patch for xtensa arch to enable using get_order() in BUILD_BUG_ON(). 6. Add test case and performance data for the socket code. Yunsheng Lin (15): mm: page_frag: add a test module for page_frag mm: move the page fragment allocator from page_alloc into its own file mm: page_frag: use initial zero offset for page_frag_alloc_align() mm: page_frag: add '_va' suffix to page_frag API mm: page_frag: avoid caller accessing 'page_frag_cache' directly xtensa: remove the get_order() implementation mm: page_frag: reuse existing space for 'size' and 'pfmemalloc' mm: page_frag: some minor refactoring before adding new API mm: page_frag: use __alloc_pages() to replace alloc_pages_node() net: rename skb_copy_to_page_nocache() helper mm: page_frag: introduce prepare/probe/commit API mm: page_frag: move 'struct page_frag_cache' to sched.h net: replace page_frag with page_frag_cache mm: page_frag: update documentation for page_frag mm: page_frag: add a entry in MAINTAINERS for page_frag Documentation/mm/page_frags.rst | 163 +++++++- MAINTAINERS | 11 + arch/xtensa/include/asm/page.h | 18 - .../chelsio/inline_crypto/chtls/chtls.h | 3 - .../chelsio/inline_crypto/chtls/chtls_io.c | 100 ++--- .../chelsio/inline_crypto/chtls/chtls_main.c | 3 - drivers/net/ethernet/google/gve/gve_rx.c | 4 +- drivers/net/ethernet/intel/ice/ice_txrx.c | 2 +- drivers/net/ethernet/intel/ice/ice_txrx.h | 2 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 2 +- .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 4 +- .../marvell/octeontx2/nic/otx2_common.c | 2 +- drivers/net/ethernet/mediatek/mtk_wed_wo.c | 4 +- drivers/net/tun.c | 44 +- drivers/nvme/host/tcp.c | 8 +- drivers/nvme/target/tcp.c | 22 +- drivers/vhost/net.c | 8 +- include/linux/gfp.h | 22 - include/linux/mm_types.h | 18 - include/linux/mm_types_task.h | 18 + include/linux/page_frag_cache.h | 271 ++++++++++++ include/linux/sched.h | 2 +- include/linux/skbuff.h | 3 +- include/net/sock.h | 23 +- kernel/bpf/cpumap.c | 2 +- kernel/exit.c | 3 +- kernel/fork.c | 3 +- mm/Kconfig.debug | 8 + mm/Makefile | 2 + mm/page_alloc.c | 136 ------ mm/page_frag_cache.c | 345 +++++++++++++++ mm/page_frag_test.c | 392 ++++++++++++++++++ net/core/skbuff.c | 79 ++-- net/core/skmsg.c | 22 +- net/core/sock.c | 46 +- net/core/xdp.c | 2 +- net/ipv4/ip_output.c | 33 +- net/ipv4/tcp.c | 35 +- net/ipv4/tcp_output.c | 28 +- net/ipv6/ip6_output.c | 33 +- net/kcm/kcmsock.c | 30 +- net/mptcp/protocol.c | 67 +-- net/rxrpc/conn_object.c | 4 +- net/rxrpc/local_object.c | 4 +- net/rxrpc/txbuf.c | 15 +- net/sched/em_meta.c | 2 +- net/sunrpc/svcsock.c | 12 +- net/tls/tls_device.c | 137 +++--- 48 files changed, 1615 insertions(+), 582 deletions(-) create mode 100644 include/linux/page_frag_cache.h create mode 100644 mm/page_frag_cache.c create mode 100644 mm/page_frag_test.c -- 2.33.0 . From: Tengfei Fan Date: Tue, 9 Jul 2024 21:34:00 +0800 Subject: [PATCH v2] dt-bindings: crypto: qcom,prng: document QCS9100 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_trng_compatible-v2-1-3a924ee68511@quicinc.com> To: Herbert Xu , "David S. Miller" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vinod Koul CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272129 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-crypto,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document QCS9100 compatible for the True Random Number Generator. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-trng" to describe non-SCMI based TRNG. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/crypto/qcom,prng.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/crypto/qcom,prng.yaml b/Documentation/devicetree/bindings/crypto/qcom,prng.yaml index 89c88004b41b..e97226eb7a50 100644 --- a/Documentation/devicetree/bindings/crypto/qcom,prng.yaml +++ b/Documentation/devicetree/bindings/crypto/qcom,prng.yaml @@ -17,6 +17,7 @@ properties: - qcom,prng-ee # 8996 and later using EE - items: - enum: + - qcom,qcs9100-trng - qcom,sa8775p-trng - qcom,sc7280-trng - qcom,sm8450-trng --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_trng_compatible-be46d3047484 Best regards, -- Tengfei Fan . From: Stewart Hildebrand To: Bjorn Helgaas , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" CC: Stewart Hildebrand , , , Subject: [PATCH 0/6] PCI: align small (<4k) BARs Date: Tue, 9 Jul 2024 09:35:57 -0400 Message-ID: <20240709133610.1089420-1-stewart.hildebrand@amd.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272131 org.kernel.vger.linux-pci:145058 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series sets the default minimum resource alignment to 4k for memory BARs. In preparation, it makes an optimization and addresses some corner cases observed when reallocating BARs. I consider the prepapatory patches to be prerequisites to changing the default BAR size. Issues observed when small (<4k) BARs are not 4k aligned are: 1. Devices to be passed through (to e.g. a Xen HVM guest) with small (<4k) BARs require each memory BAR to be page aligned. Currently, the only way to guarantee this alignment from a user perspective is to fake the size of the BARs using the pci=resource_alignment= option. This is a bad user experience, and faking the BAR size is not always desirable. See the comment in drivers/pci/pci.c:pci_request_resource_alignment() for further discussion. Anecdotally, we're using pcitest for PCI passthrough validation with Xen, and pcitest fails with a fake BAR size. 2. Devices with multiple small (<4k) BARs could have the MSI-X tables located in one of its small (<4k) BARs. This may lead to the MSI-X tables being mapped in the same 4k region as other data. The PCIe 6.1 specification (section 7.7.2 MSI-X Capability and Table Structure) says we probably shouldn't do that. To improve the user experience, and increase conformance to PCIe spec, set the default minimum resource alignment of memory BARs to 4k. Choose 4k (rather than PAGE_SIZE) for the alignment value in the common code, since that is the value called out in the PCIe 6.1 spec, section 7.7.2. The new default alignment may be overridden by arches by implementing pcibios_default_alignment(), or by the user with the pci=resource_alignment= option. I considered introducing checks for the specific scenarios described, but chose not to pursue this. A check such as "if (xen_domain())" may be pretty simple, but that doesn't account for other hypervisors. If other hypervisors are to be considered, or if we try to dynamically reallocate BARs for devices being marked for passthrough, such a check may quickly grow unwieldy. Further, checking for the MSI-X tables residing in a small (<4k) BAR is unlikely to be a one-liner. Making 4k alignment the default seems more robust. I considered alternatively adding new functionality to the pci=resource_alignment= option, but that approach was already attempted and decided against [1]. [1] https://lore.kernel.org/linux-pci/1473757234-5284-4-git-send-email-xyjxie@linux.vnet.ibm.com/ Comment from pci_request_resource_alignment() pasted here for reference: /* * Increase the alignment of the resource. There are two ways we * can do this: * * 1) Increase the size of the resource. BARs are aligned on their * size, so when we reallocate space for this resource, we'll * allocate it with the larger alignment. This also prevents * assignment of any other BARs inside the alignment region, so * if we're requesting page alignment, this means no other BARs * will share the page. * * The disadvantage is that this makes the resource larger than * the hardware BAR, which may break drivers that compute things * based on the resource size, e.g., to find registers at a * fixed offset before the end of the BAR. * * 2) Retain the resource size, but use IORESOURCE_STARTALIGN and * set r->start to the desired alignment. By itself this * doesn't prevent other BARs being put inside the alignment * region, but if we realign *every* resource of every device in * the system, none of them will share an alignment region. * * When the user has requested alignment for only some devices via * the "pci=resource_alignment" argument, "resize" is true and we * use the first method. Otherwise we assume we're aligning all * devices and we use the second. */ Stewart Hildebrand (6): PCI: don't clear already cleared bit PCI: restore resource alignment PCI: restore memory decoding after reallocation x86: PCI: preserve IORESOURCE_STARTALIGN alignment PCI: don't reassign resources that are already aligned PCI: align small (<4k) BARs arch/x86/pci/i386.c | 7 +++++-- drivers/pci/pci.c | 17 +++++++++++++--- drivers/pci/setup-bus.c | 44 +++++++++++++++++++++++++++++++++++++++++ include/linux/pci.h | 2 ++ 4 files changed, 65 insertions(+), 5 deletions(-) -- 2.45.2 . From: Ma Ke To: dinguyen@kernel.org, bp@alien8.de, tony.luck@intel.com, james.morse@arm.com, mchehab@kernel.org, rric@kernel.org, niravkumar.l.rabara@intel.com Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Ma Ke , stable@vger.kernel.org Subject: [PATCH] EDAC/altera: Fix possible null pointer dereference Date: Tue, 9 Jul 2024 21:37:59 +0800 Message-Id: <20240709133759.1012350-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272139 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-edac,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In altr_s10_sdram_check_ecc_deps(), of_get_address() may return NULL which is later dereferenced. Fix this bug by adding NULL check. Cc: stable@vger.kernel.org Fixes: e1bca853dddc ("EDAC/altera: Add SDRAM ECC check for U-Boot") Signed-off-by: Ma Ke --- drivers/edac/altera_edac.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index fe89f5c4837f..d6bf0eebeb41 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -1086,6 +1086,7 @@ static int altr_s10_sdram_check_ecc_deps(struct altr_edac_device_dev *device) struct arm_smccc_res result; struct device_node *np; phys_addr_t sdram_addr; + const __be32 *sdram_addrp; u32 read_reg; int ret; @@ -1093,8 +1094,14 @@ static int altr_s10_sdram_check_ecc_deps(struct altr_edac_device_dev *device) if (!np) goto sdram_err; - sdram_addr = of_translate_address(np, of_get_address(np, 0, - NULL, NULL)); + sdram_addrp = of_get_address(np, 0, NULL, NULL); + if (!sdram_addrp) + return -EINVAL; + + sdram_addr = of_translate_address(np, sdram_addrp); + if (!sdram_addr) + return -EINVAL; + of_node_put(np); sdram_ecc_addr = (unsigned long)sdram_addr + prv->ecc_en_ofst; arm_smccc_smc(INTEL_SIP_SMC_REG_READ, sdram_ecc_addr, -- 2.25.1 . From: Tengfei Fan Date: Tue, 9 Jul 2024 21:39:29 +0800 Subject: [PATCH v2] dt-bindings: arm-smmu: Document QCS9100 SMMU X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_smmu_compatible-v2-1-599161b7d5c8@quicinc.com> To: Will Deacon , Robin Murphy , "Joerg Roedel" , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272141 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the SMMU on the QCS9100 platform. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-smmu-500" to describe non-SCMI based SMMU. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml index 5c130cf06a21..82b7e1d40ce0 100644 --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml @@ -36,6 +36,7 @@ properties: items: - enum: - qcom,qcm2290-smmu-500 + - qcom,qcs9100-smmu-500 - qcom,qdu1000-smmu-500 - qcom,sa8775p-smmu-500 - qcom,sc7180-smmu-500 @@ -84,6 +85,7 @@ properties: items: - enum: - qcom,qcm2290-smmu-500 + - qcom,qcs9100-smmu-500 - qcom,sa8775p-smmu-500 - qcom,sc7280-smmu-500 - qcom,sc8280xp-smmu-500 @@ -385,6 +387,7 @@ allOf: compatible: contains: enum: + - qcom,qcs9100-smmu-500 - qcom,sa8775p-smmu-500 - qcom,sc7280-smmu-500 - qcom,sc8280xp-smmu-500 --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_smmu_compatible-85267adc3809 Best regards, -- Tengfei Fan . From: Zhaoxiong Lv To: neil.armstrong@linaro.org, robh@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, airlied@gmail.com, mripard@kernel.org, dianders@google.com, hsinyi@google.com, awarnecke002@hotmail.com, quic_jesszhan@quicinc.com, dmitry.baryshkov@linaro.org Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Zhaoxiong Lv Subject: [PATCH v6 0/5] Support Starry er88577 MIPI-DSI panel Date: Tue, 9 Jul 2024 21:47:49 +0800 Message-Id: <20240709134754.28013-1-lvzhaoxiong@huaqin.corp-partner.google.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272149 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The Starry is a 10.1" WXGA TFT LCD panel. Because Starry-er88577 and boe-th101mb31ig002 have very similar inti_code, after discussing with Dmitry Baryshkov, We will modify it based on the panel-boe-th101mb31ig002-28a.c driver instead of using a separate driver. Changes between V6 and V5: - PATCH 1/5: Corrected the use of "->init" in struct panel_desc, and modify indentation - PATCH 2/5: No changes. - PATCH 3/5: No changes. - PATCH 4/5: Modify the commit information and "reset gpio" binding. - PATCH 5/5: Add two lines of init_code (D1 and D3) to modify the internal resistance of the mipi channel. - Link to v5: https://lore.kernel.org/all/20240704072958.27876-1-lvzhaoxiong@huaqin.corp-partner.google.com/ Changes between V5 and V4: - PATCH 1/5: Add a new patch, make it compatible with more panels. - PATCH 2/5: Add a new patch, change devm_gpiod_get() to devm_gpiod_get_optional() in the Probe() function. - PATCH 3/5: Add a new patch, use wrapped MIPI DCS functions. - PATCH 4/5: Add it to the "boe,th101mb31ig002-28a.yaml. - PATCH 5/5: Compatible with starry-er88577 panel in panel-boe-th101mb31ig002-28a.c driver. - Link to v4: https://lore.kernel.org/all/20240620115245.31540-1-lvzhaoxiong@huaqin.corp-partner.google.com/ Changes between V4 and V3: - PATCH 1/2: Move positions to keep the list sorted. - PATCH 2/2: Adjust the ".clock" assignment format. - Link to v3: https://lore.kernel.org/all/20240614145609.25432-1-lvzhaoxiong@huaqin.corp-partner.google.com/ Changes between V3 and V2: - PATCH 1/2: This add the bindings to panel-simple-dsi. - PATCH 2/2: Add a separate driver for Starry-er88577, and Use the new mipi_dsi_dcs_write_seq_multi() function. - Link to v2: https://lore.kernel.org/all/20240601084528.22502-1-lvzhaoxiong@huaqin.corp-partner.google.com/ Changes between V2 and V1: - PATCH 1/4: Delete some unnecessary information. - PATCH 2/4: Use the new mipi_dsi_dcs_write_seq_multi() function, deleted some unnecessary functions. - PATCH 3/4: Add compatible for Starry-er88577. - PATCH 4/4: Add starry panel configuration in panel-kingdisplay-kd101ne3 driver. - Link to v1: https://lore.kernel.org/all/20240418081548.12160-1-lvzhaoxiong@huaqin.corp-partner.google.com/ Zhaoxiong Lv (5): drm/panel: boe-th101mb31ig002 : Make it compatible with other panel. drm/panel: boe-th101mb31ig002: switch to devm_gpiod_get_optional() for reset_gpio drm/panel: boe-th101mb31ig002: use wrapped MIPI DCS functions dt-bindings: display: panel: Add compatible for starry-er88577 drm/panel: boe-th101mb31ig002: Support for starry-er88577 MIPI-DSI panel .../display/panel/boe,th101mb31ig002-28a.yaml | 21 +- .../drm/panel/panel-boe-th101mb31ig002-28a.c | 303 +++++++++++++----- 2 files changed, 236 insertions(+), 88 deletions(-) -- 2.17.1 . From: Dmitry Baryshkov Subject: [PATCH 0/2] drm/msm/dpu: two fixes targeting 6.11 Date: Tue, 09 Jul 2024 16:48:21 +0300 Message-Id: <20240709-dpu-fix-wb-v1-0-448348bfd4cb@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Rob Clark , Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Daniel Vetter , Jordan Crouse , Chandan Uddaraju , Rajesh Yadav , Sravanthi Kollukuduru , Archit Taneja Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Jeykumar Sankaran , stable@vger.kernel.org, Leonard Lausen Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272153 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Leonard Lausen reported an issue with suspend/resume of the sc7180 devices. Fix the WB atomic check, which caused the issue. Also make sure that DPU debugging logs are always directed to the drm_debug / DRIVER so that usual drm.debug masks work in an expected way. Signed-off-by: Dmitry Baryshkov --- Dmitry Baryshkov (2): drm/msm/dpu1: don't choke on disabling the writeback connector drm/msm/dpu: don't play tricks with debug macros drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 14 ++------------ drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 14 +++++++------- 2 files changed, 9 insertions(+), 19 deletions(-) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-dpu-fix-wb-6cd57e3eb182 Best regards, -- Dmitry Baryshkov . From: Tengfei Fan Subject: [PATCH v2 0/2] phy: qcom-qmp-ufs: Add QCS9100 QMP UFS PHY compatible Date: Tue, 9 Jul 2024 21:48:12 +0800 Message-ID: <20240709-add_qcs9100_qmp_ufs_phy_compatible-v2-0-e7f8f71bc334@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272156 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: phy: Add QMP UFS PHY comptible for QCS9100 phy: qcom-qmp-ufs: Add QCS9100 support Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-ufs-phy.yaml | 2 ++ drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 3 +++ 2 files changed, 5 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_qmp_ufs_phy_compatible-99977fc205db Best regards, -- Tengfei Fan . From: Daniel Lublin To: Jonathan Corbet Cc: Daniel Lublin , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] Documentation: add reference from dynamic debug to loglevel kernel params Date: Tue, 9 Jul 2024 15:51:57 +0200 Message-ID: <4633bdb82c1c7c014d79840887878624a55c59f8.1720533043.git.daniel@lublin.se> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Bar: / X-Rspamd-Report: BAYES_HAM(-1.146869) MIME_GOOD(-0.1) MID_CONTAINS_FROM(1) FORGED_SENDER(0.3) R_MISSING_CHARSET(0.5) X-Rspamd-Score: 0.55313 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272162 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This is useful information for somebody who has managed to dig into enabling debug output, but is wondering why there is no such output appearing on the console. Signed-off-by: Daniel Lublin --- Documentation/admin-guide/dynamic-debug-howto.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentation/admin-guide/dynamic-debug-howto.rst index 0e9b48daf690..7c036590cd07 100644 --- a/Documentation/admin-guide/dynamic-debug-howto.rst +++ b/Documentation/admin-guide/dynamic-debug-howto.rst @@ -26,6 +26,11 @@ Dynamic debug provides: - format string - class name (as known/declared by each module) +NOTE: To actually get the debug-print output on the console, you may +need to adjust the kernel ``loglevel=``, or use ``ignore_loglevel``. +Read about these kernel parameters in +Documentation/admin-guide/kernel-parameters.rst. + Viewing Dynamic Debug Behaviour =============================== -- 2.45.2 . From: Kory Maincent Subject: [PATCH net-next v17 00/14] net: Make timestamping selectable Date: Tue, 09 Jul 2024 15:53:32 +0200 Message-Id: <20240709-feature_ptp_netnext-v17-0-b5317f50df2a@bootlin.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: Florian Fainelli , Broadcom internal kernel review list , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Richard Cochran , Radu Pirea , Jay Vosburgh , Andy Gospodarek , Nicolas Ferre , Claudiu Beznea , Willem de Bruijn , Jonathan Corbet , Horatiu Vultur , UNGLinuxDriver@microchip.com, Simon Horman , Vladimir Oltean , donald.hunter@gmail.com, danieller@nvidia.com, ecree.xilinx@gmail.com Cc: Thomas Petazzoni , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org, Maxime Chevallier , Rahul Rameshbabu , Willem de Bruijn , Shannon Nelson , Alexandra Winter , Kory Maincent Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272166 org.kernel.vger.netdev:355950 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Up until now, there was no way to let the user select the hardware PTP provider at which time stamping occurs. The stack assumed that PHY time stamping is always preferred, but some MAC/PHY combinations were buggy. This series updates the default MAC/PHY default timestamping and aims to allow the user to select the desired hwtstamp provider administratively. Changes in v17: - Fix a documentation nit. - Add a missing kernel_ethtool_tsinfo update from a new MAC driver. - Link to v16: https://lore.kernel.org/r/20240705-feature_ptp_netnext-v16-0-5d7153914052@bootlin.com Changes in v16: - Add a new patch to separate tsinfo into a new tsconfig command to get and set the hwtstamp config. - Used call_rcu() instead of synchronize_rcu() to free the hwtstamp_provider - Moved net core changes of patch 12 directly to patch 8. - Link to v15: https://lore.kernel.org/r/20240612-feature_ptp_netnext-v15-0-b2a086257b63@bootlin.com Changes in v15: - Fix uninitialized ethtool_ts_info structure. - Link to v14: https://lore.kernel.org/r/20240604-feature_ptp_netnext-v14-0-77b6f6efea40@bootlin.com Changes in v14: - Add back an EXPORT_SYMBOL() missing. - Link to v13: https://lore.kernel.org/r/20240529-feature_ptp_netnext-v13-0-6eda4d40fa4f@bootlin.com Changes in v13: - Add PTP builtin code to fix build errors when building PTP as a module. - Fix error spotted by smatch and sparse. - Link to v12: https://lore.kernel.org/r/20240430-feature_ptp_netnext-v12-0-2c5f24b6a914@bootlin.com Changes in v12: - Add missing return description in the kdoc. - Fix few nit. - Link to v11: https://lore.kernel.org/r/20240422-feature_ptp_netnext-v11-0-f14441f2a1d8@bootlin.com Changes in v11: - Add netlink examples. - Remove a change of my out of tree marvell_ptp patch in the patch series. - Remove useless extern. - Link to v10: https://lore.kernel.org/r/20240409-feature_ptp_netnext-v10-0-0fa2ea5c89a9@bootlin.com Changes in v10: - Move declarations to net/core/dev.h instead of netdevice.h - Add netlink documentation. - Add ETHTOOL_A_TSINFO_GHWTSTAMP netlink attributes instead of a bit in ETHTOOL_A_TSINFO_TIMESTAMPING bitset. - Send "Move from simple ida to xarray" patch standalone. - Add tsinfo ntf command. - Add rcu_lock protection mechanism to avoid memory leak. - Fixed doc and kdoc issue. - Link to v9: https://lore.kernel.org/r/20240226-feature_ptp_netnext-v9-0-455611549f21@bootlin.com Changes in v9: - Remove the RFC prefix. - Correct few NIT fixes. - Link to v8: https://lore.kernel.org/r/20240216-feature_ptp_netnext-v8-0-510f42f444fb@bootlin.com Changes in v8: - Drop the 6 first patch as they are now merged. - Change the full implementation to not be based on the hwtstamp layer (MAC/PHY) but on the hwtstamp provider which mean a ptp clock and a phc qualifier. - Made some patch to prepare the new implementation. - Expand netlink tsinfo instead of a new ts command for new hwtstamp configuration uAPI and for dumping tsinfo of specific hwtstamp provider. - Link to v7: https://lore.kernel.org/r/20231114-feature_ptp_netnext-v7-0-472e77951e40@bootlin.com Changes in v7: - Fix a temporary build error. - Link to v6: https://lore.kernel.org/r/20231019-feature_ptp_netnext-v6-0-71affc27b0e5@bootlin.com Changes in v6: - Few fixes from the reviews. - Replace the allowlist to default_timestamp flag to know which phy is using old API behavior. - Rename the timestamping layer enum values. - Move to a simple enum instead of the mix between enum and bitfield. - Update ts_info and ts-set in software timestamping case. Changes in v5: - Update to ndo_hwstamp_get/set. This bring several new patches. - Add few patches to make the glue. - Convert macb to ndo_hwstamp_get/set. - Add netlink specs description of new ethtool commands. - Removed netdev notifier. - Split the patches that expose the timestamping to userspace to separate the core and ethtool development. - Add description of software timestamping. - Convert PHYs hwtstamp callback to use kernel_hwtstamp_config. Changes in v4: - Move on to ethtool netlink instead of ioctl. - Add a netdev notifier to allow packet trapping by the MAC in case of PHY time stamping. - Add a PHY whitelist to not break the old PHY default time-stamping preference API. Changes in v3: - Expose the PTP choice to ethtool instead of sysfs. You can test it with the ethtool source on branch feature_ptp of: https://github.com/kmaincent/ethtool - Added a devicetree binding to select the preferred timestamp. Changes in v2: - Move selected_timestamping_layer variable of the concerned patch. - Use sysfs_streq instead of strmcmp. - Use the PHY timestamp only if available. Signed-off-by: Kory Maincent --- Kory Maincent (14): net_tstamp: Add TIMESTAMPING SOFTWARE and HARDWARE mask net: Make dev_get_hwtstamp_phylib accessible net: Make net_hwtstamp_validate accessible net: Change the API of PHY default timestamp to MAC net: net_tstamp: Add unspec field to hwtstamp_source enumeration net: Add struct kernel_ethtool_ts_info ptp: Add phc source and helpers to register specific PTP clock or get information net: Add the possibility to support a selected hwtstamp in netdevice net: netdevsim: ptp_mock: Convert to netdev_ptp_clock_register net: macb: Convert to netdev_ptp_clock_register net: ptp: Move ptp_clock_index() to builtin symbol net: ethtool: tsinfo: Add support for reading tsinfo for a specific hwtstamp provider net: ethtool: Add support for tsconfig command to get/set hwtstamp config netlink: specs: Enhance tsinfo netlink attributes and add a tsconfig set command Documentation/netlink/specs/ethtool.yaml | 73 +++++ Documentation/networking/ethtool-netlink.rst | 7 +- Documentation/networking/timestamping.rst | 33 +- drivers/net/bonding/bond_main.c | 4 +- drivers/net/can/dev/dev.c | 2 +- drivers/net/can/peak_canfd/peak_canfd.c | 2 +- drivers/net/can/usb/gs_usb.c | 2 +- drivers/net/can/usb/peak_usb/pcan_usb_core.c | 2 +- drivers/net/can/usb/peak_usb/pcan_usb_core.h | 2 +- drivers/net/dsa/hirschmann/hellcreek_hwtstamp.c | 2 +- drivers/net/dsa/hirschmann/hellcreek_hwtstamp.h | 2 +- drivers/net/dsa/microchip/ksz_ptp.c | 2 +- drivers/net/dsa/microchip/ksz_ptp.h | 2 +- drivers/net/dsa/mv88e6xxx/hwtstamp.c | 2 +- drivers/net/dsa/mv88e6xxx/hwtstamp.h | 4 +- drivers/net/dsa/ocelot/felix.c | 2 +- drivers/net/dsa/sja1105/sja1105_ptp.c | 2 +- drivers/net/dsa/sja1105/sja1105_ptp.h | 2 +- drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 2 +- .../net/ethernet/aquantia/atlantic/aq_ethtool.c | 2 +- .../net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 +- drivers/net/ethernet/broadcom/tg3.c | 2 +- drivers/net/ethernet/cadence/macb.h | 2 +- drivers/net/ethernet/cadence/macb_main.c | 4 +- drivers/net/ethernet/cadence/macb_ptp.c | 2 +- drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 2 +- .../net/ethernet/cavium/thunder/nicvf_ethtool.c | 2 +- drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c | 2 +- drivers/net/ethernet/cisco/enic/enic_ethtool.c | 2 +- drivers/net/ethernet/engleder/tsnep_ethtool.c | 2 +- drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 2 +- .../net/ethernet/freescale/dpaa2/dpaa2-ethtool.c | 2 +- .../net/ethernet/freescale/enetc/enetc_ethtool.c | 2 +- drivers/net/ethernet/freescale/fec_main.c | 2 +- drivers/net/ethernet/freescale/gianfar_ethtool.c | 2 +- .../net/ethernet/fungible/funeth/funeth_ethtool.c | 2 +- drivers/net/ethernet/hisilicon/hns3/hnae3.h | 2 +- drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 2 +- .../net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.c | 2 +- .../net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.h | 2 +- drivers/net/ethernet/intel/e1000e/ethtool.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 +- drivers/net/ethernet/intel/ice/ice_ethtool.c | 2 +- drivers/net/ethernet/intel/igb/igb_ethtool.c | 2 +- drivers/net/ethernet/intel/igc/igc_ethtool.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 +- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 +- .../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 2 +- drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 2 +- .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 4 +- .../ethernet/mellanox/mlx5/core/ipoib/ethtool.c | 2 +- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 2 +- .../net/ethernet/mellanox/mlxsw/spectrum_ethtool.c | 2 +- drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 4 +- drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.h | 10 +- drivers/net/ethernet/microchip/lan743x_ethtool.c | 2 +- .../ethernet/microchip/lan966x/lan966x_ethtool.c | 2 +- .../net/ethernet/microchip/sparx5/sparx5_ethtool.c | 2 +- drivers/net/ethernet/mscc/ocelot_net.c | 2 +- drivers/net/ethernet/mscc/ocelot_ptp.c | 2 +- .../net/ethernet/pensando/ionic/ionic_ethtool.c | 2 +- drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 2 +- drivers/net/ethernet/qlogic/qede/qede_ptp.c | 2 +- drivers/net/ethernet/qlogic/qede/qede_ptp.h | 2 +- drivers/net/ethernet/renesas/ravb_main.c | 2 +- drivers/net/ethernet/renesas/rswitch.c | 2 +- drivers/net/ethernet/renesas/rtsn.c | 2 +- drivers/net/ethernet/sfc/ethtool.c | 2 +- drivers/net/ethernet/sfc/falcon/nic.h | 2 +- drivers/net/ethernet/sfc/ptp.c | 2 +- drivers/net/ethernet/sfc/ptp.h | 5 +- drivers/net/ethernet/sfc/siena/ethtool.c | 2 +- drivers/net/ethernet/sfc/siena/ptp.c | 2 +- drivers/net/ethernet/sfc/siena/ptp.h | 4 +- .../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 2 +- drivers/net/ethernet/ti/am65-cpsw-ethtool.c | 2 +- drivers/net/ethernet/ti/cpsw_ethtool.c | 4 +- drivers/net/ethernet/ti/cpsw_priv.h | 2 +- drivers/net/ethernet/ti/icssg/icssg_ethtool.c | 2 +- drivers/net/ethernet/ti/netcp_ethss.c | 4 +- drivers/net/ethernet/xscale/ixp4xx_eth.c | 2 +- drivers/net/macvlan.c | 2 +- drivers/net/netdevsim/ethtool.c | 2 +- drivers/net/netdevsim/netdev.c | 19 +- drivers/net/phy/bcm-phy-ptp.c | 5 +- drivers/net/phy/dp83640.c | 4 +- drivers/net/phy/micrel.c | 10 +- drivers/net/phy/mscc/mscc_ptp.c | 5 +- drivers/net/phy/nxp-c45-tja11xx.c | 5 +- drivers/net/phy/phy_device.c | 11 + drivers/ptp/Makefile | 5 + drivers/ptp/ptp_clock.c | 39 ++- drivers/ptp/ptp_clock_consumer.c | 182 +++++++++++ drivers/ptp/ptp_ines.c | 2 +- drivers/ptp/ptp_mock.c | 4 +- drivers/ptp/ptp_private.h | 7 + drivers/s390/net/qeth_ethtool.c | 2 +- include/linux/can/dev.h | 2 +- include/linux/ethtool.h | 29 +- include/linux/mii_timestamper.h | 2 +- include/linux/net_tstamp.h | 27 ++ include/linux/netdevice.h | 5 + include/linux/phy.h | 21 +- include/linux/ptp_clock_kernel.h | 188 +++++++++++ include/linux/ptp_mock.h | 4 +- include/net/dsa.h | 2 +- include/soc/mscc/ocelot.h | 2 +- include/uapi/linux/ethtool_netlink.h | 29 +- include/uapi/linux/net_tstamp.h | 11 + net/8021q/vlan_dev.c | 2 +- net/core/dev.h | 3 + net/core/dev_ioctl.c | 55 +++- net/core/timestamping.c | 49 ++- net/dsa/user.c | 2 +- net/ethtool/Makefile | 3 +- net/ethtool/common.c | 40 ++- net/ethtool/common.h | 5 +- net/ethtool/ioctl.c | 14 +- net/ethtool/netlink.c | 26 +- net/ethtool/netlink.h | 8 +- net/ethtool/ts.h | 52 +++ net/ethtool/tsconfig.c | 347 +++++++++++++++++++++ net/ethtool/tsinfo.c | 245 ++++++++++++++- net/sched/sch_taprio.c | 2 +- 126 files changed, 1595 insertions(+), 184 deletions(-) --- base-commit: ca778dde1ebe2816020d6fc53a9a715e4f9db417 change-id: 20231011-feature_ptp_netnext-3f278578e84b Best regards, -- Köry Maincent, Bootlin Embedded Linux and kernel engineering https://bootlin.com . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Tue, 09 Jul 2024 06:54:26 -0700 Message-ID: <00000000000026c1ff061cd0de12@google.com> Subject: [syzbot] [dri?] possible deadlock in modeset_lock From: syzbot To: airlied@gmail.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, hamohammed.sa@gmail.com, linux-kernel@vger.kernel.org, maarten.lankhorst@linux.intel.com, mairacanal@riseup.net, melissa.srw@gmail.com, mripard@kernel.org, rodrigosiqueiramelo@gmail.com, syzkaller-bugs@googlegroups.com, tzimmermann@suse.de Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272179 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, syzbot found the following issue on: HEAD commit: 661e504db04c Merge tag 'for-6.10-rc6-tag' of git://git.ker.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=144e9f99980000 kernel config: https://syzkaller.appspot.com/x/.config?x=864caee5f78cab51 dashboard link: https://syzkaller.appspot.com/bug?extid=6cebc1af246fe020a2f0 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 Unfortunately, I don't have any reproducer for this issue yet. Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/3e115f4e545a/disk-661e504d.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/48cfbafd84c8/vmlinux-661e504d.xz kernel image: https://storage.googleapis.com/syzbot-assets/b19b9de9b5fd/bzImage-661e504d.xz IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+6cebc1af246fe020a2f0@syzkaller.appspotmail.com ====================================================== WARNING: possible circular locking dependency detected 6.10.0-rc6-syzkaller-00163-g661e504db04c #0 Not tainted ------------------------------------------------------ syz.3.2274/16483 is trying to acquire lock: ffff88807aca9e18 (&mm->mmap_lock){++++}-{3:3}, at: __might_fault+0xaa/0x120 mm/memory.c:6234 but task is already holding lock: ffff88801fc08518 (crtc_ww_class_mutex){+.+.}-{3:3}, at: modeset_lock+0x2bf/0x650 drivers/gpu/drm/drm_modeset_lock.c:314 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #8 (crtc_ww_class_mutex){+.+.}-{3:3}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __mutex_lock_common kernel/locking/mutex.c:608 [inline] __ww_mutex_lock+0x1ac/0x2790 kernel/locking/mutex.c:759 ww_mutex_lock+0x40/0x1f0 kernel/locking/mutex.c:876 modeset_lock+0x2bf/0x650 drivers/gpu/drm/drm_modeset_lock.c:314 drmm_mode_config_init+0xe91/0x17d0 drivers/gpu/drm/drm_mode_config.c:454 vkms_modeset_init drivers/gpu/drm/vkms/vkms_drv.c:156 [inline] vkms_create drivers/gpu/drm/vkms/vkms_drv.c:215 [inline] vkms_init+0x380/0x730 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24a/0x880 init/main.c:1267 do_initcall_level+0x157/0x210 init/main.c:1329 do_initcalls+0x3f/0x80 init/main.c:1345 kernel_init_freeable+0x435/0x5d0 init/main.c:1578 kernel_init+0x1d/0x2b0 init/main.c:1467 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 -> #7 (crtc_ww_class_acquire){+.+.}-{0:0}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 ww_acquire_init include/linux/ww_mutex.h:149 [inline] drm_modeset_acquire_init+0x1b7/0x360 drivers/gpu/drm/drm_modeset_lock.c:250 drm_client_modeset_commit_atomic+0xd5/0x7e0 drivers/gpu/drm/drm_client_modeset.c:1002 drm_client_modeset_commit_locked+0xe0/0x520 drivers/gpu/drm/drm_client_modeset.c:1166 drm_client_modeset_commit+0x4a/0x70 drivers/gpu/drm/drm_client_modeset.c:1192 __drm_fb_helper_restore_fbdev_mode_unlocked+0xc3/0x170 drivers/gpu/drm/drm_fb_helper.c:251 drm_fb_helper_set_par+0xaf/0x100 drivers/gpu/drm/drm_fb_helper.c:1347 fbcon_init+0x112d/0x2100 drivers/video/fbdev/core/fbcon.c:1093 visual_init+0x2e9/0x660 drivers/tty/vt/vt.c:1011 do_bind_con_driver+0x863/0xf60 drivers/tty/vt/vt.c:3833 do_take_over_console+0x5e7/0x750 drivers/tty/vt/vt.c:4399 do_fbcon_takeover+0x11a/0x200 drivers/video/fbdev/core/fbcon.c:531 do_fb_registered drivers/video/fbdev/core/fbcon.c:2968 [inline] fbcon_fb_registered+0x364/0x620 drivers/video/fbdev/core/fbcon.c:2988 do_register_framebuffer drivers/video/fbdev/core/fbmem.c:449 [inline] register_framebuffer+0x66f/0x820 drivers/video/fbdev/core/fbmem.c:515 __drm_fb_helper_initial_config_and_unlock+0x1716/0x1df0 drivers/gpu/drm/drm_fb_helper.c:1871 drm_fbdev_generic_client_hotplug+0x16e/0x230 drivers/gpu/drm/drm_fbdev_generic.c:278 drm_client_register+0x181/0x210 drivers/gpu/drm/drm_client.c:141 vkms_create drivers/gpu/drm/vkms/vkms_drv.c:226 [inline] vkms_init+0x5f5/0x730 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24a/0x880 init/main.c:1267 do_initcall_level+0x157/0x210 init/main.c:1329 do_initcalls+0x3f/0x80 init/main.c:1345 kernel_init_freeable+0x435/0x5d0 init/main.c:1578 kernel_init+0x1d/0x2b0 init/main.c:1467 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 -> #6 (&client->modeset_mutex){+.+.}-{3:3}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __mutex_lock_common kernel/locking/mutex.c:608 [inline] __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752 drm_client_modeset_probe+0x3b9/0x5480 drivers/gpu/drm/drm_client_modeset.c:832 __drm_fb_helper_initial_config_and_unlock+0x112/0x1df0 drivers/gpu/drm/drm_fb_helper.c:1848 drm_fbdev_generic_client_hotplug+0x16e/0x230 drivers/gpu/drm/drm_fbdev_generic.c:278 drm_client_register+0x181/0x210 drivers/gpu/drm/drm_client.c:141 vkms_create drivers/gpu/drm/vkms/vkms_drv.c:226 [inline] vkms_init+0x5f5/0x730 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24a/0x880 init/main.c:1267 do_initcall_level+0x157/0x210 init/main.c:1329 do_initcalls+0x3f/0x80 init/main.c:1345 kernel_init_freeable+0x435/0x5d0 init/main.c:1578 kernel_init+0x1d/0x2b0 init/main.c:1467 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 -> #5 (&helper->lock){+.+.}-{3:3}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __mutex_lock_common kernel/locking/mutex.c:608 [inline] __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752 __drm_fb_helper_restore_fbdev_mode_unlocked+0xa2/0x170 drivers/gpu/drm/drm_fb_helper.c:242 drm_fb_helper_set_par+0xaf/0x100 drivers/gpu/drm/drm_fb_helper.c:1347 fbcon_init+0x112d/0x2100 drivers/video/fbdev/core/fbcon.c:1093 visual_init+0x2e9/0x660 drivers/tty/vt/vt.c:1011 do_bind_con_driver+0x863/0xf60 drivers/tty/vt/vt.c:3833 do_take_over_console+0x5e7/0x750 drivers/tty/vt/vt.c:4399 do_fbcon_takeover+0x11a/0x200 drivers/video/fbdev/core/fbcon.c:531 do_fb_registered drivers/video/fbdev/core/fbcon.c:2968 [inline] fbcon_fb_registered+0x364/0x620 drivers/video/fbdev/core/fbcon.c:2988 do_register_framebuffer drivers/video/fbdev/core/fbmem.c:449 [inline] register_framebuffer+0x66f/0x820 drivers/video/fbdev/core/fbmem.c:515 __drm_fb_helper_initial_config_and_unlock+0x1716/0x1df0 drivers/gpu/drm/drm_fb_helper.c:1871 drm_fbdev_generic_client_hotplug+0x16e/0x230 drivers/gpu/drm/drm_fbdev_generic.c:278 drm_client_register+0x181/0x210 drivers/gpu/drm/drm_client.c:141 vkms_create drivers/gpu/drm/vkms/vkms_drv.c:226 [inline] vkms_init+0x5f5/0x730 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24a/0x880 init/main.c:1267 do_initcall_level+0x157/0x210 init/main.c:1329 do_initcalls+0x3f/0x80 init/main.c:1345 kernel_init_freeable+0x435/0x5d0 init/main.c:1578 kernel_init+0x1d/0x2b0 init/main.c:1467 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 -> #4 (console_lock){+.+.}-{0:0}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 console_lock+0x164/0x1b0 kernel/printk/printk.c:2665 bch2_print_string_as_lines+0x20/0xc0 fs/bcachefs/util.c:264 bch2_fsck_err+0xd44/0x1450 fs/bcachefs/error.c:352 bch2_gc_mark_key+0xa69/0x1010 fs/bcachefs/btree_gc.c:586 bch2_gc_btree fs/bcachefs/btree_gc.c:664 [inline] bch2_gc_btrees fs/bcachefs/btree_gc.c:697 [inline] bch2_check_allocations+0x3668/0xccc0 fs/bcachefs/btree_gc.c:1224 bch2_run_recovery_pass+0xf2/0x1e0 fs/bcachefs/recovery_passes.c:182 bch2_run_recovery_passes+0x19e/0x820 fs/bcachefs/recovery_passes.c:225 bch2_fs_recovery+0x2386/0x3730 fs/bcachefs/recovery.c:813 bch2_fs_start+0x356/0x5b0 fs/bcachefs/super.c:1035 bch2_fs_open+0xa8d/0xdf0 fs/bcachefs/super.c:2132 bch2_mount+0x6b0/0x13a0 fs/bcachefs/fs.c:1926 legacy_get_tree+0xf0/0x190 fs/fs_context.c:662 vfs_get_tree+0x92/0x2a0 fs/super.c:1789 do_new_mount+0x2be/0xb40 fs/namespace.c:3352 do_mount fs/namespace.c:3692 [inline] __do_sys_mount fs/namespace.c:3898 [inline] __se_sys_mount+0x2d9/0x3c0 fs/namespace.c:3875 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f -> #3 (&c->fsck_error_msgs_lock){+.+.}-{3:3}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __mutex_lock_common kernel/locking/mutex.c:608 [inline] __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752 bch2_fsck_err+0x311/0x1450 fs/bcachefs/error.c:239 bch2_gc_done fs/bcachefs/btree_gc.c:767 [inline] bch2_check_allocations+0x7d39/0xccc0 fs/bcachefs/btree_gc.c:1233 bch2_run_recovery_pass+0xf2/0x1e0 fs/bcachefs/recovery_passes.c:182 bch2_run_recovery_passes+0x19e/0x820 fs/bcachefs/recovery_passes.c:225 bch2_fs_recovery+0x2386/0x3730 fs/bcachefs/recovery.c:813 bch2_fs_start+0x356/0x5b0 fs/bcachefs/super.c:1035 bch2_fs_open+0xa8d/0xdf0 fs/bcachefs/super.c:2132 bch2_mount+0x6b0/0x13a0 fs/bcachefs/fs.c:1926 legacy_get_tree+0xf0/0x190 fs/fs_context.c:662 vfs_get_tree+0x92/0x2a0 fs/super.c:1789 do_new_mount+0x2be/0xb40 fs/namespace.c:3352 do_mount fs/namespace.c:3692 [inline] __do_sys_mount fs/namespace.c:3898 [inline] __se_sys_mount+0x2d9/0x3c0 fs/namespace.c:3875 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f -> #2 (&c->mark_lock){++++}-{0:0}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 percpu_down_read+0x44/0x1b0 include/linux/percpu-rwsem.h:51 __bch2_disk_reservation_add+0x97/0x620 fs/bcachefs/buckets.c:1530 bch2_disk_reservation_add fs/bcachefs/buckets.h:430 [inline] bch2_folio_reservation_get+0x2d1/0x600 fs/bcachefs/fs-io-pagecache.c:446 bch2_page_mkwrite+0x8a5/0xd90 fs/bcachefs/fs-io-pagecache.c:616 do_page_mkwrite+0x19d/0x480 mm/memory.c:3093 do_shared_fault mm/memory.c:4993 [inline] do_fault mm/memory.c:5055 [inline] do_pte_missing mm/memory.c:3897 [inline] handle_pte_fault+0x1290/0x7090 mm/memory.c:5381 __handle_mm_fault mm/memory.c:5524 [inline] handle_mm_fault+0x10df/0x1ba0 mm/memory.c:5689 do_user_addr_fault arch/x86/mm/fault.c:1389 [inline] handle_page_fault arch/x86/mm/fault.c:1481 [inline] exc_page_fault+0x2b9/0x8c0 arch/x86/mm/fault.c:1539 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623 -> #1 (sb_pagefaults#2){.+.+}-{0:0}: lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 percpu_down_read include/linux/percpu-rwsem.h:51 [inline] __sb_start_write include/linux/fs.h:1655 [inline] sb_start_pagefault include/linux/fs.h:1820 [inline] bch2_page_mkwrite+0x2fc/0xd90 fs/bcachefs/fs-io-pagecache.c:593 do_page_mkwrite+0x19d/0x480 mm/memory.c:3093 do_shared_fault mm/memory.c:4993 [inline] do_fault mm/memory.c:5055 [inline] do_pte_missing mm/memory.c:3897 [inline] handle_pte_fault+0x1290/0x7090 mm/memory.c:5381 __handle_mm_fault mm/memory.c:5524 [inline] handle_mm_fault+0x10df/0x1ba0 mm/memory.c:5689 do_user_addr_fault arch/x86/mm/fault.c:1389 [inline] handle_page_fault arch/x86/mm/fault.c:1481 [inline] exc_page_fault+0x2b9/0x8c0 arch/x86/mm/fault.c:1539 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623 -> #0 (&mm->mmap_lock){++++}-{3:3}: check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain+0x18e0/0x5900 kernel/locking/lockdep.c:3869 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __might_fault+0xc6/0x120 mm/memory.c:6234 drm_mode_object_get_properties+0x222/0x4d0 drivers/gpu/drm/drm_mode_object.c:406 drm_mode_obj_get_properties_ioctl+0x350/0x610 drivers/gpu/drm/drm_mode_object.c:458 drm_ioctl_kernel+0x33c/0x440 drivers/gpu/drm/drm_ioctl.c:744 drm_ioctl+0x611/0xad0 drivers/gpu/drm/drm_ioctl.c:841 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl+0xfe/0x170 fs/ioctl.c:893 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f other info that might help us debug this: Chain exists of: &mm->mmap_lock --> crtc_ww_class_acquire --> crtc_ww_class_mutex Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(crtc_ww_class_mutex); lock(crtc_ww_class_acquire); lock(crtc_ww_class_mutex); rlock(&mm->mmap_lock); *** DEADLOCK *** 2 locks held by syz.3.2274/16483: #0: ffffc900044d7b30 (crtc_ww_class_acquire){+.+.}-{0:0}, at: drm_mode_obj_get_properties_ioctl+0x1d3/0x610 drivers/gpu/drm/drm_mode_object.c:446 #1: ffff88801fc08518 (crtc_ww_class_mutex){+.+.}-{3:3}, at: modeset_lock+0x2bf/0x650 drivers/gpu/drm/drm_modeset_lock.c:314 stack backtrace: CPU: 1 PID: 16483 Comm: syz.3.2274 Not tainted 6.10.0-rc6-syzkaller-00163-g661e504db04c #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2187 check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain+0x18e0/0x5900 kernel/locking/lockdep.c:3869 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754 __might_fault+0xc6/0x120 mm/memory.c:6234 drm_mode_object_get_properties+0x222/0x4d0 drivers/gpu/drm/drm_mode_object.c:406 drm_mode_obj_get_properties_ioctl+0x350/0x610 drivers/gpu/drm/drm_mode_object.c:458 drm_ioctl_kernel+0x33c/0x440 drivers/gpu/drm/drm_ioctl.c:744 drm_ioctl+0x611/0xad0 drivers/gpu/drm/drm_ioctl.c:841 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl+0xfe/0x170 fs/ioctl.c:893 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f7140375bd9 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f7141231048 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00007f7140503f60 RCX: 00007f7140375bd9 RDX: 00000000200002c0 RSI: 00000000c02064b9 RDI: 0000000000000003 RBP: 00007f71403e4aa1 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 000000000000000b R14: 00007f7140503f60 R15: 00007ffdba322618 --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup . From: Tengfei Fan Date: Tue, 9 Jul 2024 21:56:45 +0800 Subject: [PATCH v2] dt-bindings: interrupt-controller: qcom,pdc: document pdc on QCS9100 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_pdc_compatible-v2-1-83619dcd2658@quicinc.com> To: Thomas Gleixner , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson CC: , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272181 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The QCS9100 SoC includes a PDC, document it. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-pdc" to describe non-SCMI based pdc. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml b/Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml index 985fa10abb99..41fbfce838fa 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml +++ b/Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml @@ -26,6 +26,7 @@ properties: compatible: items: - enum: + - qcom,qcs9100-pdc - qcom,qdu1000-pdc - qcom,sa8775p-pdc - qcom,sc7180-pdc --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_pdc_compatible-65e4066b1728 Best regards, -- Tengfei Fan . From: Ma Ke To: shubhrajyoti.datta@amd.com, sai.krishna.potthuri@amd.com, bp@alien8.de, tony.luck@intel.com, james.morse@arm.com, mchehab@kernel.org, rric@kernel.org Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Ma Ke Subject: [PATCH] EDAC/versal: Fix possible null pointer dereference in emif_get_id() Date: Tue, 9 Jul 2024 21:58:30 +0800 Message-Id: <20240709135830.1172936-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272184 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-edac Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In emif_get_id(), of_get_address() may return NULL which is later dereferenced. Fix this bug by adding NULL check. Fixes: 6f15b178cd63 ("EDAC/versal: Add a Xilinx Versal memory controller driver") Signed-off-by: Ma Ke --- drivers/edac/versal_edac.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/edac/versal_edac.c b/drivers/edac/versal_edac.c index a556d23e8261..6ab87277d439 100644 --- a/drivers/edac/versal_edac.c +++ b/drivers/edac/versal_edac.c @@ -1053,6 +1053,9 @@ static u32 emif_get_id(struct device_node *node) const __be32 *addrp; addrp = of_get_address(node, 0, NULL, NULL); + if (!addrp) + return -EINVAL; + my_addr = (u32)of_translate_address(node, addrp); for_each_matching_node(np, xlnx_edac_match) { @@ -1060,6 +1063,9 @@ static u32 emif_get_id(struct device_node *node) continue; addrp = of_get_address(np, 0, NULL, NULL); + if (!addrp) + return _EINVAL; + addr = (u32)of_translate_address(np, addrp); edac_printk(KERN_INFO, EDAC_MC, -- 2.25.1 . X-Mailing-List: linux-cifs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Steve French Date: Tue, 9 Jul 2024 09:57:59 -0500 Message-ID: Subject: [GIT PULL] ksmbd server fixes To: Linus Torvalds Cc: CIFS , LKML , Namjae Jeon Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-cifs:43237 org.kernel.vger.linux-kernel:1272187 Newsgroups: org.kernel.vger.linux-cifs,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Please pull the following changes since commit 22a40d14b572deb80c0648557f4bd502d7e83826: Linux 6.10-rc6 (2024-06-30 14:40:44 -0700) are available in the Git repository at: git://git.samba.org/ksmbd.git tags/6.10-rc6-smb3-server-fixes for you to fetch changes up to e2e33caa5dc2eae7bddf88b22ce11ec3d760e5cd: ksmbd: discard write access to the directory open (2024-07-05 09:56:13 -0500) ---------------------------------------------------------------- Two ksmbd server fixes - fix access flags to address fuse incompatibility - fix device type returned by get filesystem info ---------------------------------------------------------------- Hobin Woo (1): ksmbd: discard write access to the directory open Namjae Jeon (1): ksmbd: return FILE_DEVICE_DISK instead of super magic fs/smb/common/smb2pdu.h | 34 ++++++++++++++++++++++++++++++++++ fs/smb/server/smb2pdu.c | 22 ++++++++++++++++++---- 2 files changed, 52 insertions(+), 4 deletions(-) -- Thanks, Steve . From: "Peng Fan (OSS)" To: sudeep.holla@arm.com, cristian.marussi@arm.com, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, arm-scmi@vger.kernel.org, devicetree@vger.kernel.org, Peng Fan Subject: [PATCH V3 1/2] dt-bindings: firmware: arm,scmi: introduce property mbox-rx-timeout-ms Date: Tue, 9 Jul 2024 22:09:56 +0800 Message-Id: <20240709140957.3171255-1-peng.fan@oss.nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272189 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.arm-scmi,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Peng Fan System Controller Management Interface(SCMI) firmwares might have different designs by SCMI firmware developers. So the maximum receive channel timeout value might also varies in the various designs. So introduce property mbox-rx-timeout-ms to let each platform could set its own timeout value in device tree. Signed-off-by: Peng Fan --- V3: Add minimum: 1, because 0 is invalid. maximum is not set, because it is platform specific and unknown. V2: Drop defaults, update description. Documentation/devicetree/bindings/firmware/arm,scmi.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml index ebf384e76df1..f84a978a36b2 100644 --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml @@ -121,6 +121,13 @@ properties: atomic mode of operation, even if requested. default: 0 + max-rx-timeout-ms: + description: + An optional time value, expressed in milliseconds, representing the + mailbox maximum timeout value for receive channel. The value should + be a non-zero value if set. + minimum: 1 + arm,smc-id: $ref: /schemas/types.yaml#/definitions/uint32 description: -- 2.37.1 . From: Tengfei Fan Date: Tue, 9 Jul 2024 22:01:47 +0800 Subject: [PATCH v2] dt-bindings: mailbox: qcom-ipcc: Document the QCS9100 IPCC X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_ipcc_compatible-v2-1-0fd67000e6b1@quicinc.com> To: Manivannan Sadhasivam , Jassi Brar , Rob Herring , "Krzysztof Kozlowski" , Conor Dooley CC: , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272192 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the Inter-Processor Communication Controller on the QCS9100 Platform. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-ipcc" to describe non-SCMI based IPCC. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml b/Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml index 05e4e1d51713..916c47fbc238 100644 --- a/Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml +++ b/Documentation/devicetree/bindings/mailbox/qcom-ipcc.yaml @@ -24,6 +24,7 @@ properties: compatible: items: - enum: + - qcom,qcs9100-ipcc - qcom,qdu1000-ipcc - qcom,sa8775p-ipcc - qcom,sc7280-ipcc --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_ipcc_compatible-f5f933d24098 Best regards, -- Tengfei Fan . From: Ma Ke To: kristo@kernel.org, bp@alien8.de, tony.luck@intel.com, james.morse@arm.com, mchehab@kernel.org, rric@kernel.org Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Ma Ke Subject: [PATCH] EDAC/ti: Fix possible null pointer dereference in _emif_get_id() Date: Tue, 9 Jul 2024 22:04:54 +0800 Message-Id: <20240709140454.1222094-1-make24@iscas.ac.cn> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272195 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-edac Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In _emif_get_id(), of_get_address() may return NULL which is later dereferenced. Fix this bug by adding NULL check. Fixes: 86a18ee21e5e ("EDAC, ti: Add support for TI keystone and DRA7xx EDAC") Signed-off-by: Ma Ke --- drivers/edac/ti_edac.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/edac/ti_edac.c b/drivers/edac/ti_edac.c index 29723c9592f7..6f3da8d99eab 100644 --- a/drivers/edac/ti_edac.c +++ b/drivers/edac/ti_edac.c @@ -207,6 +207,9 @@ static int _emif_get_id(struct device_node *node) int my_id = 0; addrp = of_get_address(node, 0, NULL, NULL); + if (!addrp) + return -EINVAL; + my_addr = (u32)of_translate_address(node, addrp); for_each_matching_node(np, ti_edac_of_match) { @@ -214,6 +217,9 @@ static int _emif_get_id(struct device_node *node) continue; addrp = of_get_address(np, 0, NULL, NULL); + if (!addrp) + return -EINVAL; + addr = (u32)of_translate_address(np, addrp); edac_printk(KERN_INFO, EDAC_MOD_NAME, -- 2.25.1 . From: Tengfei Fan Date: Tue, 9 Jul 2024 22:05:52 +0800 Subject: [PATCH v2] dt-bindings: soc: qcom: add qcom,qcs9100-imem compatible X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_imem_compatible-v2-1-de2a8712d788@quicinc.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson CC: , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272198 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add qcom,qcs9100-imem compatible name support. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-imem" to describe non-SCMI based imem. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/sram/qcom,imem.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/sram/qcom,imem.yaml b/Documentation/devicetree/bindings/sram/qcom,imem.yaml index faef3d6e0a94..e45337a21232 100644 --- a/Documentation/devicetree/bindings/sram/qcom,imem.yaml +++ b/Documentation/devicetree/bindings/sram/qcom,imem.yaml @@ -21,6 +21,7 @@ properties: - qcom,msm8226-imem - qcom,msm8974-imem - qcom,qcs404-imem + - qcom,qcs9100-imem - qcom,qdu1000-imem - qcom,sa8775p-imem - qcom,sc7180-imem --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_imem_compatible-d40db479083e Best regards, -- Tengfei Fan . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Tue, 09 Jul 2024 07:10:25 -0700 Message-ID: <00000000000054f703061cd117fb@google.com> Subject: [syzbot] Monthly kernfs report (Jul 2024) From: syzbot To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com, tj@kernel.org Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272202 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello kernfs maintainers/developers, This is a 31-day syzbot report for the kernfs subsystem. All related reports/information can be found at: https://syzkaller.appspot.com/upstream/s/kernfs During the period, 4 new issues were detected and 0 were fixed. In total, 20 issues are still open and 20 have been fixed so far. Some of the still happening issues: Ref Crashes Repro Title <1> 4937 Yes BUG: workqueue lockup (5) https://syzkaller.appspot.com/bug?extid=f0b66b520b54883d4b9d <2> 949 Yes INFO: task hung in lookup_slow (3) https://syzkaller.appspot.com/bug?extid=7cfc6a4f6b025f710423 <3> 428 Yes possible deadlock in __kernfs_remove https://syzkaller.appspot.com/bug?extid=4762dd74e32532cda5ff <4> 321 No possible deadlock in lookup_slow (3) https://syzkaller.appspot.com/bug?extid=65459fd3b61877d717a3 <5> 246 Yes WARNING in kernfs_remove_by_name_ns (3) https://syzkaller.appspot.com/bug?extid=93cbdd0ab421adc5275d <6> 22 Yes INFO: task hung in kernfs_dop_revalidate (4) https://syzkaller.appspot.com/bug?extid=da20d108162166514db6 <7> 9 Yes WARNING in kernfs_get (5) https://syzkaller.appspot.com/bug?extid=2f44671e54488d20f0e6 <8> 7 Yes INFO: task hung in kernfs_remove_by_name_ns (2) https://syzkaller.appspot.com/bug?extid=6d5664213a6db9a5a72c <9> 1 No KCSAN: data-race in kernfs_iop_permission / kernfs_iop_permission (4) https://syzkaller.appspot.com/bug?extid=4d9e77bc73d118c6dc78 <10> 1 No possible deadlock in kernfs_fop_write_iter https://syzkaller.appspot.com/bug?extid=24386307cce6239b5f68 --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. To disable reminders for individual bugs, reply with the following command: #syz set no-reminders To change bug's subsystems, reply with: #syz set subsystems: new-subsystem You may send multiple commands in a single email message. . From: Zijun Hu Date: Tue, 09 Jul 2024 22:13:11 +0800 Subject: [PATCH v2] driver core: Fix size calculation of symlink name for devlink_(add|remove)_symlinks() X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240709-devlink_fix-v2-1-22254f1138e1@quicinc.com> To: Greg Kroah-Hartman , "Rafael J. Wysocki" Cc: Saravana Kannan , linux-kernel@vger.kernel.org, Zijun Hu , Zijun Hu X-Apple-Remote-Links: v=1;h=KCk=;charset=UTF-8 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272207 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Zijun Hu devlink_(add|remove)_symlinks() kzalloc() memory to save symlink name for both supplier and consumer, but do not explicitly take into account consumer's prefix "consumer:", so cause wrong algorithm for calculating memory size, fixed by taking into account consumer's prefix as well. Signed-off-by: Zijun Hu --- Changes in v2: - Correct commit message and add inline comments - Remove fix tag - Link to v1: https://lore.kernel.org/r/20240707-devlink_fix-v1-1-623acb431cd8@quicinc.com --- drivers/base/core.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index 2b4c0624b704..51209db7ff84 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -572,7 +572,11 @@ static int devlink_add_symlinks(struct device *dev) len = max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)), strlen(dev_bus_name(con)) + strlen(dev_name(con))); len += strlen(":"); - len += strlen("supplier:") + 1; + /* + * we kzalloc() memory for symlink name of both supplier and + * consumer, so explicitly take into account both prefix. + */ + len += max(strlen("supplier:"), strlen("consumer:")) + 1; buf = kzalloc(len, GFP_KERNEL); if (!buf) return -ENOMEM; @@ -623,7 +627,7 @@ static void devlink_remove_symlinks(struct device *dev) len = max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)), strlen(dev_bus_name(con)) + strlen(dev_name(con))); len += strlen(":"); - len += strlen("supplier:") + 1; + len += max(strlen("supplier:"), strlen("consumer:")) + 1; buf = kzalloc(len, GFP_KERNEL); if (!buf) { WARN(1, "Unable to properly free device link symlinks!\n"); --- base-commit: c6653f49e4fd3b0d52c12a1fc814d6c5b234ea15 change-id: 20240707-devlink_fix-0fa46dedfe95 Best regards, -- Zijun Hu . From: Lizhe To: gregkh@linuxfoundation.org, rafael@kernel.org Cc: linux-kernel@vger.kernel.org, Lizhe Subject: [PATCH v3] driver:core: no need to invert the return value of the call_driver_probe() Date: Tue, 9 Jul 2024 07:14:17 -0700 Message-Id: <20240709141417.3349-1-sensor1010@163.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272209 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In the probe function (either drv->bus->probe() or drv->probe()), there is no return value of EPROBE_DEFER. the error return from probe should be -EPROBE_DEFER, hence no negation of call_driver_probe()'s return is needed, nor should there be an EPROBE_DEFER check in driver_probe_device() Signed-off-by: Lizhe v3: Modify commit message and versions go below the --- v2: Delete the judgment with the return value of EPROBEDEFER from the _driver_probe.device() v1: Add the judgment with the return value of EPROBEDEFER from the _driver_probe.device() --- drivers/base/dd.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/base/dd.c b/drivers/base/dd.c index 83d352394fdf..d047919d1f5e 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -664,11 +664,6 @@ static int really_probe(struct device *dev, struct device_driver *drv) if (link_ret == -EAGAIN) ret = -EPROBE_DEFER; - /* - * Return probe errors as positive values so that the callers - * can distinguish them from other errors. - */ - ret = -ret; goto probe_failed; } @@ -826,7 +821,7 @@ static int driver_probe_device(struct device_driver *drv, struct device *dev) atomic_inc(&probe_count); ret = __driver_probe_device(drv, dev); - if (ret == -EPROBE_DEFER || ret == EPROBE_DEFER) { + if (ret == -EPROBE_DEFER) { driver_deferred_probe_add(dev); /* -- 2.17.1 . From: Tengfei Fan Date: Tue, 9 Jul 2024 22:17:09 +0800 Subject: [PATCH v2] dt-bindings: usb: dwc3: Add QCS9100 compatible X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_dwc3_compatible-v2-1-ed543ae02117@quicinc.com> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Wesley Cheng CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272212 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-usb Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the QCS9100 dwc3 compatible. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-dwc3" to describe non-SCMI based DWC3. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/usb/qcom,dwc3.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml index efde47a5b145..07b0b6530b78 100644 --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml @@ -26,6 +26,7 @@ properties: - qcom,msm8998-dwc3 - qcom,qcm2290-dwc3 - qcom,qcs404-dwc3 + - qcom,qcs9100-dwc3 - qcom,qdu1000-dwc3 - qcom,sa8775p-dwc3 - qcom,sc7180-dwc3 @@ -199,6 +200,7 @@ allOf: - qcom,msm8953-dwc3 - qcom,msm8996-dwc3 - qcom,msm8998-dwc3 + - qcom,qcs9100-dwc3 - qcom,sa8775p-dwc3 - qcom,sc7180-dwc3 - qcom,sc7280-dwc3 @@ -448,6 +450,7 @@ allOf: - qcom,ipq4019-dwc3 - qcom,ipq8064-dwc3 - qcom,msm8994-dwc3 + - qcom,qcs9100-dwc3 - qcom,qdu1000-dwc3 - qcom,sa8775p-dwc3 - qcom,sc7180-dwc3 --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_dwc3_compatible-a767738e13c9 Best regards, -- Tengfei Fan . From: Tengfei Fan Date: Tue, 9 Jul 2024 22:21:00 +0800 Subject: [PATCH v2] dt-bindings: watchdog: qcom-wdt: document QCS9100 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_apss_wdt_compatible-v2-1-beeba6288c97@quicinc.com> To: Wim Van Sebroeck , Guenter Roeck , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Rajendra Nayak CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272214 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-watchdog Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the QCS9100 watchdog compatible. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,apss-wdt-qcs9100" to describe non-SCMI based watchdog. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/watchdog/qcom-wdt.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/watchdog/qcom-wdt.yaml b/Documentation/devicetree/bindings/watchdog/qcom-wdt.yaml index 47587971fb0b..5a78816aeece 100644 --- a/Documentation/devicetree/bindings/watchdog/qcom-wdt.yaml +++ b/Documentation/devicetree/bindings/watchdog/qcom-wdt.yaml @@ -26,6 +26,7 @@ properties: - qcom,apss-wdt-msm8994 - qcom,apss-wdt-qcm2290 - qcom,apss-wdt-qcs404 + - qcom,apss-wdt-qcs9100 - qcom,apss-wdt-sa8775p - qcom,apss-wdt-sc7180 - qcom,apss-wdt-sc7280 --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_apss_wdt_compatible-71744c461527 Best regards, -- Tengfei Fan . Date: Tue, 09 Jul 2024 22:22:40 +0800 From: kernel test robot To: "x86-ml" Cc: linux-kernel@vger.kernel.org Subject: [tip:master] BUILD SUCCESS aa9d8caba6e40b0b02a6f2b5f2bd9177cd76cacf Message-ID: <202407092238.NDktlUKA-lkp@intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272217 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git master branch HEAD: aa9d8caba6e40b0b02a6f2b5f2bd9177cd76cacf Merge timers/core into tip/master elapsed time: 1278m configs tested: 149 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha alldefconfig gcc-13.2.0 alpha allnoconfig gcc-13.2.0 alpha allyesconfig gcc-13.2.0 arc allmodconfig gcc-13.2.0 arc allnoconfig gcc-13.2.0 arc allyesconfig gcc-13.2.0 arc randconfig-001-20240709 gcc-13.2.0 arc randconfig-002-20240709 gcc-13.2.0 arc tb10x_defconfig gcc-13.2.0 arm allmodconfig gcc-13.2.0 arm allnoconfig clang-19 arm allyesconfig gcc-13.2.0 arm integrator_defconfig clang-19 arm randconfig-001-20240709 gcc-13.2.0 arm randconfig-002-20240709 clang-19 arm randconfig-003-20240709 clang-19 arm randconfig-004-20240709 gcc-13.2.0 arm64 allmodconfig clang-19 arm64 allnoconfig gcc-13.2.0 arm64 randconfig-001-20240709 clang-19 arm64 randconfig-002-20240709 clang-17 arm64 randconfig-003-20240709 clang-19 arm64 randconfig-004-20240709 clang-19 csky allnoconfig gcc-13.2.0 csky randconfig-001-20240709 gcc-13.2.0 csky randconfig-002-20240709 gcc-13.2.0 hexagon allnoconfig clang-19 hexagon allyesconfig clang-19 hexagon randconfig-001-20240709 clang-19 hexagon randconfig-002-20240709 clang-19 i386 allmodconfig gcc-13 i386 allnoconfig gcc-13 i386 allyesconfig gcc-13 i386 buildonly-randconfig-001-20240709 gcc-11 i386 buildonly-randconfig-002-20240709 gcc-13 i386 buildonly-randconfig-003-20240709 clang-18 i386 buildonly-randconfig-004-20240709 clang-18 i386 buildonly-randconfig-005-20240709 clang-18 i386 buildonly-randconfig-006-20240709 clang-18 i386 defconfig clang-18 i386 randconfig-001-20240709 gcc-13 i386 randconfig-002-20240709 clang-18 i386 randconfig-003-20240709 gcc-11 i386 randconfig-004-20240709 gcc-13 i386 randconfig-005-20240709 gcc-13 i386 randconfig-006-20240709 gcc-13 i386 randconfig-011-20240709 clang-18 i386 randconfig-012-20240709 gcc-13 i386 randconfig-013-20240709 gcc-12 i386 randconfig-014-20240709 clang-18 i386 randconfig-015-20240709 clang-18 i386 randconfig-016-20240709 gcc-10 loongarch allmodconfig gcc-13.2.0 loongarch allnoconfig gcc-13.2.0 loongarch randconfig-001-20240709 gcc-13.2.0 loongarch randconfig-002-20240709 gcc-13.2.0 m68k allmodconfig gcc-13.2.0 m68k allnoconfig gcc-13.2.0 m68k allyesconfig gcc-13.2.0 m68k bvme6000_defconfig gcc-13.2.0 microblaze allmodconfig gcc-13.2.0 microblaze allnoconfig gcc-13.2.0 microblaze allyesconfig gcc-13.2.0 mips allnoconfig gcc-13.2.0 mips cobalt_defconfig gcc-13.2.0 mips jazz_defconfig clang-19 nios2 allnoconfig gcc-13.2.0 nios2 randconfig-001-20240709 gcc-13.2.0 nios2 randconfig-002-20240709 gcc-13.2.0 openrisc allnoconfig gcc-13.2.0 openrisc allyesconfig gcc-13.2.0 openrisc or1ksim_defconfig gcc-13.2.0 parisc allmodconfig gcc-13.2.0 parisc allnoconfig gcc-13.2.0 parisc allyesconfig gcc-13.2.0 parisc randconfig-001-20240709 gcc-13.2.0 parisc randconfig-002-20240709 gcc-13.2.0 powerpc allmodconfig gcc-13.2.0 powerpc allnoconfig gcc-13.2.0 powerpc allyesconfig clang-19 powerpc kilauea_defconfig clang-19 powerpc mgcoge_defconfig clang-19 powerpc ppc44x_defconfig clang-16 powerpc randconfig-001-20240709 clang-19 powerpc randconfig-002-20240709 gcc-13.2.0 powerpc randconfig-003-20240709 clang-15 powerpc64 randconfig-001-20240709 gcc-13.2.0 powerpc64 randconfig-002-20240709 gcc-13.2.0 powerpc64 randconfig-003-20240709 clang-19 riscv allmodconfig clang-19 riscv allnoconfig gcc-13.2.0 riscv allyesconfig clang-19 riscv randconfig-001-20240709 clang-17 riscv randconfig-002-20240709 gcc-13.2.0 s390 allmodconfig clang-19 s390 allnoconfig clang-19 s390 allyesconfig gcc-13.2.0 s390 randconfig-001-20240709 gcc-13.2.0 s390 randconfig-002-20240709 clang-19 sh allmodconfig gcc-13.2.0 sh allnoconfig gcc-13.2.0 sh allyesconfig gcc-13.2.0 sh dreamcast_defconfig gcc-13.2.0 sh edosk7760_defconfig gcc-13.2.0 sh hp6xx_defconfig gcc-13.2.0 sh randconfig-001-20240709 gcc-13.2.0 sh randconfig-002-20240709 gcc-13.2.0 sh rsk7203_defconfig gcc-13.2.0 sh rsk7269_defconfig gcc-13.2.0 sh shx3_defconfig gcc-13.2.0 sparc allmodconfig gcc-13.2.0 sparc64 randconfig-001-20240709 gcc-13.2.0 sparc64 randconfig-002-20240709 gcc-13.2.0 um allmodconfig clang-19 um allnoconfig clang-17 um allyesconfig gcc-13 um randconfig-001-20240709 gcc-13 um randconfig-002-20240709 gcc-11 x86_64 allnoconfig clang-18 x86_64 allyesconfig clang-18 x86_64 buildonly-randconfig-001-20240709 gcc-11 x86_64 buildonly-randconfig-002-20240709 clang-18 x86_64 buildonly-randconfig-003-20240709 clang-18 x86_64 buildonly-randconfig-004-20240709 gcc-9 x86_64 buildonly-randconfig-005-20240709 gcc-13 x86_64 buildonly-randconfig-006-20240709 clang-18 x86_64 defconfig gcc-13 x86_64 randconfig-001-20240709 clang-18 x86_64 randconfig-002-20240709 gcc-10 x86_64 randconfig-003-20240709 clang-18 x86_64 randconfig-004-20240709 gcc-12 x86_64 randconfig-005-20240709 gcc-13 x86_64 randconfig-006-20240709 gcc-8 x86_64 randconfig-011-20240709 clang-18 x86_64 randconfig-012-20240709 clang-18 x86_64 randconfig-013-20240709 clang-18 x86_64 randconfig-014-20240709 clang-18 x86_64 randconfig-015-20240709 clang-18 x86_64 randconfig-016-20240709 clang-18 x86_64 randconfig-071-20240709 gcc-7 x86_64 randconfig-072-20240709 clang-18 x86_64 randconfig-073-20240709 gcc-13 x86_64 randconfig-074-20240709 gcc-13 x86_64 randconfig-075-20240709 gcc-11 x86_64 randconfig-076-20240709 gcc-13 x86_64 rhel-8.3-rust clang-18 xtensa allnoconfig gcc-13.2.0 xtensa randconfig-001-20240709 gcc-13.2.0 xtensa randconfig-002-20240709 gcc-13.2.0 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . From: Tengfei Fan Date: Tue, 9 Jul 2024 22:24:49 +0800 Subject: [PATCH v2] dt-bindings: soc: qcom,aoss-qmp: Document the QCS9100 AOSS channel X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_aoss_qmp_compatible-v2-1-6c7f35bc9ec3@quicinc.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , "Krzysztof Kozlowski" , Conor Dooley CC: , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272220 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document the Always-On Subsystem side channel on the QCS9100 Platform. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,qcs9100-aoss-qmp" to describe non-SCMI based AOSS channel. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml index 7afdb60edb22..80e1a8b43586 100644 --- a/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,aoss-qmp.yaml @@ -25,6 +25,7 @@ properties: compatible: items: - enum: + - qcom,qcs9100-aoss-qmp - qcom,qdu1000-aoss-qmp - qcom,sa8775p-aoss-qmp - qcom,sc7180-aoss-qmp --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_aoss_qmp_compatible-a7376629ea6c Best regards, -- Tengfei Fan . From: Pavel Begunkov To: io-uring@vger.kernel.org Cc: Jens Axboe , asml.silence@gmail.com, Oleg Nesterov , Andrew Morton , Christian Brauner , Tycho Andersen , Thomas Gleixner , linux-kernel@vger.kernel.org, Julian Orth , Peter Zijlstra , Tejun Heo Subject: [PATCH v2 0/2] fix task_work interation with freezing Date: Tue, 9 Jul 2024 15:27:17 +0100 Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272223 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.io-uring Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail It's reported [1] that a task_work queued at a wrong time can prevent freezing and make the tasks to spin in get_signal() taking 100% of CPU. Patch 1 is a preparation. Patch 2 addresses the issue. [1] https://github.com/systemd/systemd/issues/33626 v2: move task_work_run() into do_freezer_trap() change Fixes tag Pavel Begunkov (2): io_uring/io-wq: limit retrying worker initialisation kernel: rerun task_work while freezing in get_signal() io_uring/io-wq.c | 10 +++++++--- kernel/signal.c | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) -- 2.44.0 . From: Tengfei Fan Date: Tue, 9 Jul 2024 22:29:27 +0800 Subject: [PATCH v2] dt-bindings: firmware: qcom,scm: document SCM on QCS9100 SoC X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-document_qcs9100_scm_compatible-v2-1-d2e9d4860964@quicinc.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , "Krzysztof Kozlowski" , Conor Dooley , "Robert Marko" , Das Srinagesh CC: , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272229 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Document scm compatible for QCS9100 SoC. QCS9100 is drived from SA8775p. Currently, both the QCS9100 and SA8775p platform use non-SCMI resource. In the future, the SA8775p platform will move to use SCMI resources and it will have new sa8775p-related device tree. Consequently, introduce "qcom,scm-qcs9100" to describe non-SCMI based SCM. Signed-off-by: Tengfei Fan --- Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Documentation/devicetree/bindings/firmware/qcom,scm.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/firmware/qcom,scm.yaml b/Documentation/devicetree/bindings/firmware/qcom,scm.yaml index 2cc83771d8e7..3596ae0e0610 100644 --- a/Documentation/devicetree/bindings/firmware/qcom,scm.yaml +++ b/Documentation/devicetree/bindings/firmware/qcom,scm.yaml @@ -42,6 +42,7 @@ properties: - qcom,scm-msm8996 - qcom,scm-msm8998 - qcom,scm-qcm2290 + - qcom,scm-qcs9100 - qcom,scm-qdu1000 - qcom,scm-sa8775p - qcom,scm-sc7180 --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-document_qcs9100_scm_compatible-34ee68ff6e75 Best regards, -- Tengfei Fan . From: Jacob Pan To: X86 Kernel , Sean Christopherson , LKML , Thomas Gleixner , Dave Hansen , "H. Peter Anvin" , "Ingo Molnar" , "Borislav Petkov" , "Xin Li" , linux-perf-users@vger.kernel.org, Peter Zijlstra Cc: Paolo Bonzini , Tony Luck , Andy Lutomirski , acme@kernel.org, kan.liang@linux.intel.com, Andi Kleen , Nikolay Borisov , "Mehta, Sohil" , Jacob Pan Subject: [PATCH v4 00/11] Add support for NMI-source reporting Date: Tue, 9 Jul 2024 07:38:55 -0700 Message-Id: <20240709143906.1040477-1-jacob.jun.pan@linux.intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272234 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi Thomas and all, Non-Maskable Interrupts (NMIs) are routed to the local Advanced Programmable Interrupt Controller (APIC) using vector #2. Before the advent of the Flexible Return and Event Delivery (FRED)[1], the vector information set by the NMI initiator was disregarded or lost within the hardware, compelling system software to poll every registered NMI handler to pinpoint the source of the NMI[2]. This approach led to several issues: 1. Inefficiency due to the CPU's time spent polling all handlers. 2. Increased latency from the additional time taken to poll all handlers. 3. The occurrence of unnecessary NMIs if they are triggered shortly after being processed by a different source. To tackle these challenges, Intel introduced NMI source reporting as a part of the FRED specification (detailed in Chapter 9). This CPU feature ensures that while all NMI sources are still aggregated into NMI vector (#2) for delivery, the source of the NMI is now conveyed through FRED event data (a 16-bit bitmap on the stack). This allows for the selective dispatch of the NMI source handler based on the bitmap, eliminating the need to invoke all NMI source handlers indiscriminately. In line with the hardware architecture, various interrupt sources can generate NMIs by encoding an NMI delivery mode. However, this patchset activates only the local NMI sources that are currently utilized by the Linux kernel, which includes: 1. Performance monitoring. 2. Inter-Processor Interrupts (IPIs) for functions like CPU backtrace, machine check, Kernel GNU Debugger (KGDB), reboot, panic stop, and self-test. Other NMI sources will continue to be handled as previously when the NMI source is not utilized or remains unidentified. Next steps: 1. KVM support 2. Optimization to reuse IDT NMI vector 2 as NMI source for "known" source. Link:https://lore.kernel.org/lkml/746fecd5-4c79-42f9-919e-912ec415e73f@zytor.com/ [1] https://www.intel.com/content/www/us/en/content-details/779982/flexible-return-and-event-delivery-fred-specification.html [2] https://lore.kernel.org/lkml/171011362209.2468526.15187874627966416701.tglx@xen13/ Thanks, Jacob --- V4: - Mostly coding style, comments, and naming changes (Li Xin, Nikolay, Kan) V3: - Added KVM VMX patches to handle NMI exits (Sean) - Clean up in KVM for code reuse in PV IPI (patch 10 and 11) - Misc fixes based on reviews from HPA, Li Xin, and Sohil Change logs are in individual patches. Thanks, Jacob Jacob Pan (9): x86/irq: Add enumeration of NMI source reporting CPU feature x86/irq: Define NMI source vectors x86/irq: Extend NMI handler registration interface to include source x86/irq: Factor out common NMI handling code x86/irq: Process nmi sources in NMI handler perf/x86: Enable NMI source reporting for perfmon x86/irq: Enable NMI source on IPIs delivered as NMI x86/irq: Move __prepare_ICR to x86 common header KVM: X86: Use common code for PV IPIs in linux guest Zeng Guang (2): KVM: VMX: Expand FRED kvm entry with event data KVM: VMX: Handle NMI Source report in VM exit arch/x86/entry/entry_64_fred.S | 2 +- arch/x86/events/amd/ibs.c | 2 +- arch/x86/events/core.c | 7 +- arch/x86/events/intel/core.c | 6 +- arch/x86/include/asm/apic.h | 23 ++++++ arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/fred.h | 8 +- arch/x86/include/asm/irq_vectors.h | 40 +++++++++ arch/x86/include/asm/nmi.h | 4 +- arch/x86/kernel/apic/hw_nmi.c | 5 +- arch/x86/kernel/apic/ipi.c | 4 +- arch/x86/kernel/apic/local.h | 16 ---- arch/x86/kernel/cpu/mce/inject.c | 4 +- arch/x86/kernel/cpu/mshyperv.c | 2 +- arch/x86/kernel/kgdb.c | 6 +- arch/x86/kernel/kvm.c | 10 +-- arch/x86/kernel/nmi.c | 127 ++++++++++++++++++++++++++--- arch/x86/kernel/nmi_selftest.c | 7 +- arch/x86/kernel/reboot.c | 4 +- arch/x86/kernel/smp.c | 4 +- arch/x86/kernel/traps.c | 4 +- arch/x86/kvm/vmx/vmx.c | 13 ++- arch/x86/platform/uv/uv_nmi.c | 4 +- drivers/acpi/apei/ghes.c | 2 +- drivers/char/ipmi/ipmi_watchdog.c | 2 +- drivers/edac/igen6_edac.c | 2 +- drivers/watchdog/hpwdt.c | 6 +- 27 files changed, 237 insertions(+), 78 deletions(-) -- 2.25.1 . From: Tengfei Fan Subject: [PATCH v2 0/2] clk: qcom: rpmh: Add QCS9100 rpmh compatible Date: Tue, 9 Jul 2024 22:35:28 +0800 Message-ID: <20240709-add_qcs9100_rpmh_clk_compatible-v2-0-b6f516c36818@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Taniya Das CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272249 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: clock: qcom-rpmhcc: Add RPMHCC bindings for QCS9100 clk: qcom: rpmh: Add support for QCS9100 rpmh clocks Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml | 1 + drivers/clk/qcom/clk-rpmh.c | 1 + 2 files changed, 2 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_rpmh_clk_compatible-e57368401164 Best regards, -- Tengfei Fan . From: David Hunter To: mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, naveen.n.rao@linux.ibm.com, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Cc: David Hunter , julia.lawall@inria.fr, skhan@linuxfoundation.org, javier.carrasco.cruz@gmail.com Subject: [PATCH] powerpc-km82xx.c: replace of_node_put with __free improves cleanup Date: Tue, 9 Jul 2024 10:35:53 -0400 Message-Id: <20240709143553.117053-1-david.hunter.linux@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272252 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The use of the __free function allows the cleanup to be based on scope instead of on another function called later. This makes the cleanup automatic and less susceptible to errors later. This code was compiled without errors or warnings. Signed-off-by: David Hunter --- arch/powerpc/platforms/82xx/km82xx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/platforms/82xx/km82xx.c b/arch/powerpc/platforms/82xx/km82xx.c index c86da3f2b74b..5791c9c5acd0 100644 --- a/arch/powerpc/platforms/82xx/km82xx.c +++ b/arch/powerpc/platforms/82xx/km82xx.c @@ -27,15 +27,15 @@ static void __init km82xx_pic_init(void) { - struct device_node *np = of_find_compatible_node(NULL, NULL, - "fsl,pq2-pic"); + struct device_node *np __free(device_node) = of_find_compatible_node(NULL, + NULL, + "fsl,pq2-pic"); if (!np) { pr_err("PIC init: can not find cpm-pic node\n"); return; } cpm2_pic_init(np); - of_node_put(np); } struct cpm_pin { -- 2.34.1 . From: Armin Wolf To: coproscefalo@gmail.com Cc: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] drivers/platform: toshiba_acpi: Fix array out-of-bounds access Date: Tue, 9 Jul 2024 16:38:51 +0200 Message-Id: <20240709143851.10097-1-W_Armin@gmx.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272255 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.platform-driver-x86 Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In order to use toshiba_dmi_quirks[] together with the standard DMI matching functions, it must be terminated by a empty entry. Since this entry is missing, an array out-of-bounds access occurs every time the quirk list is processed. Fix this by adding the terminating empty entry. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-lkp/202407091536.8b116b3d-lkp@intel.com Fixes: 3cb1f40dfdc3 ("drivers/platform: toshiba_acpi: Call HCI_PANEL_POWER= _ON on resume on some models") Signed-off-by: Armin Wolf =2D-- drivers/platform/x86/toshiba_acpi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/to= shiba_acpi.c index 3a8d8df89186..d54bccec6ad6 100644 =2D-- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -3299,6 +3299,7 @@ static const struct dmi_system_id toshiba_dmi_quirks= [] =3D { }, .driver_data =3D (void *)(QUIRK_TURN_ON_PANEL_ON_RESUME | QUIRK_HCI_HOT= KEY_QUICKSTART), }, + { } }; static int toshiba_acpi_add(struct acpi_device *acpi_dev) =2D- 2.39.2 . From: Tengfei Fan Subject: [PATCH v2 0/2] phy: qcpm-qmp-usb: Add QCS9100 USB3 PHY compatible Date: Tue, 9 Jul 2024 22:41:25 +0800 Message-ID: <20240709-add_qcs9100_qmp_usb3_uni_phy_compatible-v2-0-e83b9fc7b280@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272258 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: phy: qcom,qmp-usb: Add QCS9100 USB3 PHY phy: qcpm-qmp-usb: Add support for QCS9100 .../devicetree/bindings/phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml | 3 +++ drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 3 +++ 2 files changed, 6 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_qmp_usb3_uni_phy_compatible-e7be2785197e Best regards, -- Tengfei Fan . From: Tengfei Fan Subject: [PATCH v2 0/2] phy: qcom-qmp-pcie: Add QCS9100 x4 lane EP compatible Date: Tue, 9 Jul 2024 22:47:53 +0800 Message-ID: <20240709-add_qcs9100_pcie_phy_compatible-v2-0-c68f1e38560b@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272269 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: phy: qcom,qmp: Add qcs9100 QMP PCIe PHY phy: qcom-qmp-pcie: add x4 lane EP support for QCS9100 .../devicetree/bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml | 4 ++++ drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 6 ++++++ 2 files changed, 10 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_pcie_phy_compatible-531a12dc2311 Best regards, -- Tengfei Fan . From: Richard Fitzgerald To: CC: , , , Subject: [PATCH 0/4] firmware: cs_dsp: Some small coding improvements Date: Tue, 9 Jul 2024 15:51:52 +0100 Message-ID: <20240709145156.268074-1-rf@opensource.cirrus.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272275 Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Commit series that makes some small improvements to code and the kernel log messages. Richard Fitzgerald (4): firmware: cs_dsp: Don't allocate temporary buffer for info text firmware: cs_dsp: Make wmfw and bin filename arguments const char * firmware: cs_dsp: Merge wmfw format log message into INFO message firmware: cs_dsp: Rename fw_ver to wmfw_ver drivers/firmware/cirrus/cs_dsp.c | 64 +++++++++----------------- include/linux/firmware/cirrus/cs_dsp.h | 10 ++-- sound/soc/codecs/wm_adsp.c | 2 +- 3 files changed, 27 insertions(+), 49 deletions(-) -- 2.39.2 . From: Tengfei Fan Subject: [PATCH v2 0/2] PCI: qcom-ep: Add QCS9100 PCIe ep compatible Date: Tue, 9 Jul 2024 22:53:42 +0800 Message-ID: <20240709-add_qcs9100_pcie_ep_compatible-v2-0-217742eac32b@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Manivannan Sadhasivam , "Lorenzo Pieralisi" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Conor Dooley CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272282 org.kernel.vger.linux-pci:145068 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pci Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: PCI: qcom-ep: Add support for QCS9100 SoC PCI: qcom-ep: Add HDMA support for QCS9100 SoC Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml | 2 ++ drivers/pci/controller/dwc/pcie-qcom-ep.c | 1 + 2 files changed, 3 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_pcie_ep_compatible-c5a9eb2324ac Best regards, -- Tengfei Fan . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Tue, 09 Jul 2024 07:58:24 -0700 Message-ID: <000000000000ee4d7c061cd1c21f@google.com> Subject: [syzbot] [bcachefs?] WARNING: suspicious RCU usage in bch2_bucket_ref_update From: syzbot To: bfoster@redhat.com, kent.overstreet@linux.dev, linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272288 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bcachefs Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, syzbot found the following issue on: HEAD commit: 256abd8e550c Linux 6.10-rc7 git tree: upstream console+strace: https://syzkaller.appspot.com/x/log.txt?x=1606fe6e980000 kernel config: https://syzkaller.appspot.com/x/.config?x=42a432cfd0e579e0 dashboard link: https://syzkaller.appspot.com/bug?extid=e74fea078710bbca6f4b compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=119422a5980000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15869b76980000 Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/49b114b276ef/disk-256abd8e.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/ef1a6b8836ca/vmlinux-256abd8e.xz kernel image: https://storage.googleapis.com/syzbot-assets/4c81ede104a4/bzImage-256abd8e.xz mounted in repro: https://storage.googleapis.com/syzbot-assets/99b2b0c25d67/mount_0.gz The issue was bisected to: commit f7643bc9749f270d487c32dc35b578575bf1adb0 Author: Kent Overstreet Date: Wed Apr 17 05:26:02 2024 +0000 bcachefs: make btree read errors silent during scan bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=12c7687e980000 final oops: https://syzkaller.appspot.com/x/report.txt?x=11c7687e980000 console output: https://syzkaller.appspot.com/x/log.txt?x=16c7687e980000 IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+e74fea078710bbca6f4b@syzkaller.appspotmail.com Fixes: f7643bc9749f ("bcachefs: make btree read errors silent during scan") bcachefs (loop0): done starting filesystem ============================= WARNING: suspicious RCU usage 6.10.0-rc7-syzkaller #0 Not tainted ----------------------------- fs/bcachefs/buckets.h:107 suspicious rcu_dereference_check() usage! other info that might help us debug this: rcu_scheduler_active = 2, debug_locks = 1 9 locks held by syz-executor107/5084: #0: ffff88807441c420 (sb_writers#9){.+.+}-{0:0}, at: mnt_want_write+0x3f/0x90 fs/namespace.c:409 #1: ffff88807441c730 (&type->s_vfs_rename_key){+.+.}-{3:3}, at: lock_rename fs/namei.c:3078 [inline] #1: ffff88807441c730 (&type->s_vfs_rename_key){+.+.}-{3:3}, at: do_renameat2+0x5cf/0x13f0 fs/namei.c:4985 #2: ffff88807a278150 (&type->i_mutex_dir_key#6/1){+.+.}-{3:3}, at: inode_lock_nested include/linux/fs.h:826 [inline] #2: ffff88807a278150 (&type->i_mutex_dir_key#6/1){+.+.}-{3:3}, at: lock_two_directories+0x145/0x220 fs/namei.c:3044 #3: ffff88807a2788b8 (&type->i_mutex_dir_key#6/5){+.+.}-{3:3}, at: inode_lock_nested include/linux/fs.h:826 [inline] #3: ffff88807a2788b8 (&type->i_mutex_dir_key#6/5){+.+.}-{3:3}, at: lock_two_directories+0x16f/0x220 fs/namei.c:3045 #4: ffff888077f842d8 (&c->btree_trans_barrier){.+.+}-{0:0}, at: srcu_lock_acquire include/linux/srcu.h:116 [inline] #4: ffff888077f842d8 (&c->btree_trans_barrier){.+.+}-{0:0}, at: srcu_read_lock include/linux/srcu.h:215 [inline] #4: ffff888077f842d8 (&c->btree_trans_barrier){.+.+}-{0:0}, at: __bch2_trans_get+0x840/0xce0 fs/bcachefs/btree_iter.c:3193 #5: ffff88802fc93070 (&dev->mutex){....}-{3:3}, at: six_relock_type fs/bcachefs/six.h:289 [inline] #5: ffff88802fc93070 (&dev->mutex){....}-{3:3}, at: __bch2_btree_node_relock+0x142/0x9c0 fs/bcachefs/btree_locking.c:507 #6: ffff88802fc93070 (&dev->mutex){....}-{3:3}, at: btree_node_lock_increment fs/bcachefs/btree_locking.h:248 [inline] #6: ffff88802fc93070 (&dev->mutex){....}-{3:3}, at: __bch2_btree_node_relock+0x675/0x9c0 fs/bcachefs/btree_locking.c:509 #7: ffff88807a0db340 (&dev->mutex){....}-{3:3}, at: six_relock_type fs/bcachefs/six.h:289 [inline] #7: ffff88807a0db340 (&dev->mutex){....}-{3:3}, at: __bch2_btree_node_relock+0x142/0x9c0 fs/bcachefs/btree_locking.c:507 #8: ffff88802b279870 (&dev->mutex){....}-{3:3}, at: six_relock_type fs/bcachefs/six.h:289 [inline] #8: ffff88802b279870 (&dev->mutex){....}-{3:3}, at: __bch2_btree_node_relock+0x142/0x9c0 fs/bcachefs/btree_locking.c:507 stack backtrace: CPU: 0 PID: 5084 Comm: syz-executor107 Not tainted 6.10.0-rc7-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 lockdep_rcu_suspicious+0x221/0x340 kernel/locking/lockdep.c:6712 bucket_gens fs/bcachefs/buckets.h:103 [inline] bucket_gen fs/bcachefs/buckets.h:112 [inline] bch2_bucket_ref_update+0xbe1/0x1100 fs/bcachefs/buckets.c:808 __mark_pointer fs/bcachefs/buckets.c:1000 [inline] bch2_trigger_pointer fs/bcachefs/buckets.c:1037 [inline] __trigger_extent+0x1524/0x6260 fs/bcachefs/buckets.c:1176 bch2_trigger_extent+0x636/0x920 fs/bcachefs/buckets.c:1261 bch2_key_trigger fs/bcachefs/bkey_methods.h:88 [inline] bch2_key_trigger_old fs/bcachefs/bkey_methods.h:102 [inline] run_one_trans_trigger fs/bcachefs/btree_trans_commit.c:514 [inline] run_btree_triggers+0xadb/0x11d0 fs/bcachefs/btree_trans_commit.c:544 bch2_trans_commit_run_triggers fs/bcachefs/btree_trans_commit.c:576 [inline] __bch2_trans_commit+0x3a6/0x88e0 fs/bcachefs/btree_trans_commit.c:1022 bch2_trans_commit fs/bcachefs/btree_update.h:170 [inline] bch2_inode_delete_keys+0xae8/0x1440 fs/bcachefs/inode.c:845 bch2_inode_rm+0x165/0xd40 fs/bcachefs/inode.c:874 bch2_evict_inode+0x21c/0x3c0 fs/bcachefs/fs.c:1588 evict+0x2a8/0x630 fs/inode.c:667 __dentry_kill+0x20d/0x630 fs/dcache.c:603 dput+0x19f/0x2b0 fs/dcache.c:845 do_renameat2+0xda1/0x13f0 fs/namei.c:5052 __do_sys_renameat2 fs/namei.c:5084 [inline] __se_sys_renameat2 fs/namei.c:5081 [inline] __x64_sys_renameat2+0xd2/0xf0 fs/namei.c:5081 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f491fe4ad59 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fff84583f28 EFLAGS: 00000246 ORIG_RAX: 000000000000013c RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f491fe4ad59 RDX: 0000000000000004 RSI: 0000000020000080 RDI: 00000000ffffff9c RBP: 00007f491fec45f0 R08: 0000000000000000 R09: 000055555e2ff4c0 R10: 0000000020000980 R11: 0000000000000246 R12: 00007fff84583f50 R13: 00007fff84584178 R14: 431bde82d7b634db R15: 00007f491fe9403b bucket 0:34 gen 7 (mem gen 0) data type user: stale dirty ptr (gen 0) while marking u64s 7 type extent 536870913:8:U32_MAX len 8 ver 0: durability: 1 crc: c_size 8 size 8 offset 0 nonce 0 csum crc32c compress incompressible ptr: 0:34:0 gen 0, shutting down bcachefs (loop0): inconsistency detected - emergency read only at journal seq 11 syz-executor107 (5084) used greatest stack depth: 18488 bytes left --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. For information about bisection process see: https://goo.gl/tpsmEJ#bisection If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want syzbot to run the reproducer, reply with: #syz test: git://repo/address.git branch-or-commit-hash If you attach or paste a git patch, syzbot will apply it before testing. If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup . From: Tengfei Fan Subject: [PATCH v2 0/2] PCI: qcom: Add QCS9100 PCIe compatible Date: Tue, 9 Jul 2024 22:59:28 +0800 Message-ID: <20240709-add_qcs9100_pcie_compatible-v2-0-04f1e85c8a48@quicinc.com> X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Bjorn Helgaas , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Manivannan Sadhasivam CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-pci:145070 org.kernel.vger.linux-kernel:1272289 Newsgroups: org.kernel.vger.linux-pci,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: PCI: Document compatible for QCS9100 PCI: qcom: Add support for QCS9100 SoC Documentation/devicetree/bindings/pci/qcom,pcie-sa8775p.yaml | 5 ++++- drivers/pci/controller/dwc/pcie-qcom.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_pcie_compatible-ceec013a335d Best regards, -- Tengfei Fan . Return-Path: From: Tengfei Fan Subject: [PATCH v2 0/2] soc: qcom: llcc: Add QCS9100 LLCC compatible Date: Tue, 9 Jul 2024 23:04:43 +0800 Message-ID: <20240709-add_qcs9100_llcc_compatible-v2-0-99d203616eed@quicinc.com> MIME-Version: 1.0 To: Bjorn Andersson , Konrad Dybcio , Conor Dooley , Rob Herring , Krzysztof Kozlowski CC: , , , , , Tengfei Fan X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79530 org.kernel.vger.linux-kernel:1272291 Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: cache: qcom,llcc: Add QCS9100 description soc: qcom: llcc: Add llcc configuration support for the QCS9100 platform Documentation/devicetree/bindings/cache/qcom,llcc.yaml | 2 ++ drivers/soc/qcom/llcc-qcom.c | 1 + 2 files changed, 3 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_llcc_compatible-3477559ba2e2 Best regards, -- Tengfei Fan _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv . From: "Rob Herring (Arm)" To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Krzysztof Kozlowski , Conor Dooley Cc: linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] dt-bindings: thermal: Drop 'trips' node as required Date: Tue, 9 Jul 2024 09:01:53 -0600 Message-ID: <20240709150154.3272825-1-robh@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272303 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail It is possible to have thermal zones which don't have any trip points. These zones in effect simply represent a temperature sensor without any action associated with it. While the schema has always required a 'trips' node, users have existed for a long time without it. Update the schema to match reality. Signed-off-by: Rob Herring (Arm) --- Documentation/devicetree/bindings/thermal/thermal-zones.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/Documentation/devicetree/bindings/thermal/thermal-zones.yaml b/Documentation/devicetree/bindings/thermal/thermal-zones.yaml index 68398e7e8655..8315ab4b00eb 100644 --- a/Documentation/devicetree/bindings/thermal/thermal-zones.yaml +++ b/Documentation/devicetree/bindings/thermal/thermal-zones.yaml @@ -229,7 +229,6 @@ patternProperties: required: - thermal-sensors - - trips additionalProperties: false -- 2.43.0 . From: Tengfei Fan Subject: [PATCH v2 0/2] clk: qcom: Add QCS9100 GPUCC compatible Date: Tue, 9 Jul 2024 23:10:06 +0800 Message-ID: <20240709-add_qcs9100_gpucc_compatible-v2-0-c206bccc495b@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Bjorn Andersson , Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Taniya Das CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272318 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-clk,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: clock: qcom: describe the GPUCC clock for QCS9100 clk: qcom: add the GPUCC driver support for QCS9100 Documentation/devicetree/bindings/clock/qcom,gpucc.yaml | 1 + drivers/clk/qcom/gpucc-sa8775p.c | 1 + 2 files changed, 2 insertions(+) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_gpucc_compatible-816b149402a3 Best regards, -- Tengfei Fan . From: Bartosz Golaszewski To: Linus Walleij Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Bartosz Golaszewski , kernel test robot Subject: [PATCH] gpio: virtuser: actually use the "trimmed" local variable Date: Tue, 9 Jul 2024 17:12:34 +0200 Message-ID: <20240709151235.90523-1-brgl@bgdev.pl> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272319 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-gpio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Bartosz Golaszewski This variable is set with the intention of being passed to the subsequent strcmp() but something went wrong and it was left unused. Use it now. Fixes: 91581c4b3f29 ("gpio: virtuser: new virtual testing driver for the GPIO API") Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202407092245.BPnW2mr6-lkp@intel.com/ Signed-off-by: Bartosz Golaszewski --- drivers/gpio/gpio-virtuser.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpio/gpio-virtuser.c b/drivers/gpio/gpio-virtuser.c index 2ac09c6a3763..0e0d55da4f01 100644 --- a/drivers/gpio/gpio-virtuser.c +++ b/drivers/gpio/gpio-virtuser.c @@ -406,12 +406,12 @@ static ssize_t gpio_virtuser_direction_do_write(struct file *file, trimmed = strim(buf); - if (strcmp(buf, "input") == 0) { + if (strcmp(trimmed, "input") == 0) { dir = 1; - } else if (strcmp(buf, "output-high") == 0) { + } else if (strcmp(trimmed, "output-high") == 0) { dir = 0; val = 1; - } else if (strcmp(buf, "output-low") == 0) { + } else if (strcmp(trimmed, "output-low") == 0) { dir = val = 0; } else { return -EINVAL; -- 2.43.0 . From: Tengfei Fan Subject: [PATCH v2 0/2] phy: qcom: Add QCS9100 dwmac sgmii phy compatible Date: Tue, 9 Jul 2024 23:15:35 +0800 Message-ID: <20240709-add_qcs9100_dwmac_sgmii_hpy_compatible-v2-0-5ffeb16252db@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bartosz Golaszewski CC: , , , , , Tengfei Fan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272321 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Introduce support for the QCS9100 SoC device tree (DTSI) and the QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p. While the QCS9100 platform is still in the early design stage, the QCS9100 RIDE board is identical to the SA8775p RIDE board, except it mounts the QCS9100 SoC instead of the SA8775p SoC. The QCS9100 SoC DTSI is directly renamed from the SA8775p SoC DTSI, and all the compatible strings will be updated from "SA8775p" to "QCS9100". The QCS9100 device tree patches will be pushed after all the device tree bindings and device driver patches are reviewed. The final dtsi will like: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-3-quic_tengfan@quicinc.com/ The detailed cover letter reference: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ Signed-off-by: Tengfei Fan --- Changes in v2: - Split huge patch series into different patch series according to subsytems - Update patch commit message prevous disscussion here: [1] v1: https://lore.kernel.org/linux-arm-msm/20240703025850.2172008-1-quic_tengfan@quicinc.com/ --- Tengfei Fan (2): dt-bindings: phy: describe the Qualcomm SGMII PHY for QCS9100 phy: qcom: add the SGMII SerDes PHY driver support .../devicetree/bindings/phy/qcom,sa8775p-dwmac-sgmii-phy.yaml | 5 ++++- drivers/phy/qualcomm/phy-qcom-sgmii-eth.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240709-add_qcs9100_dwmac_sgmii_hpy_compatible-46dcc1347aa0 Best regards, -- Tengfei Fan . From: Julien Stephan Date: Tue, 09 Jul 2024 17:16:46 +0200 Subject: [PATCH] docs: iio: new docs for ad7380 driver X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240709-ad7380-add-docs-v1-1-458ced3dfcc5@baylibre.com> To: Michael Hennerich , =?utf-8?q?Nuno_S=C3=A1?= , David Lechner , Jonathan Cameron , Lars-Peter Clausen , Jonathan Corbet Cc: linux-iio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Julien Stephan Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272324 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.kernel.vger.linux-iio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This adds a new page to document how to use the ad7380 ADC driver. Credit: this docs is based on ad7944 docs. Signed-off-by: Julien Stephan --- This commit adds documentation page for ad738x ADC family --- Documentation/iio/ad7380.rst | 88 ++++++++++++++++++++++++++++++++++++++++++++ Documentation/iio/index.rst | 1 + MAINTAINERS | 1 + 3 files changed, 90 insertions(+) diff --git a/Documentation/iio/ad7380.rst b/Documentation/iio/ad7380.rst new file mode 100644 index 000000000000..061cd632b5df --- /dev/null +++ b/Documentation/iio/ad7380.rst @@ -0,0 +1,88 @@ +.. SPDX-License-Identifier: GPL-2.0-only + +============= +AD7380 driver +============= + +ADC driver for Analog Devices Inc. AD7380 and similar devices. The module name +is ``ad7380``. + + +Supported devices +================= + +The following chips are supported by this driver: + +* `AD7380 `_ +* `AD7381 `_ +* `AD7383 `_ +* `AD7384 `_ +* `AD7380-4 `_ +* `AD7381-4 `_ +* `AD7383-4 `_ +* `AD7384-4 `_ + + +Supported features +================== + +SPI wiring modes +---------------- + +ad738x ADCs can output data on several SDO lines (1/2/4). The driver currently +supports only 1 SDO line. + +Reference voltage +----------------- + +2 possible reference voltage sources are supported: + +- Internal reference (2.5V) +- External reference (2.5V to 3.3V) + +The source is determined by the device tree. If ``refio-supply`` is present, +then the external reference is used, else the internal reference is used. + +Oversampling and resolution boost +--------------------------------- + +This family supports 2 types of oversampling: normal average and rolling +average. Only normal average is supported by the driver, as rolling average can +be achieved by processing a captured data buffer. The following ratios are +available: 1 (oversampling disabled)/2/4/8/16/32. + +When the on-chip oversampling function is enabled the performance of the ADC can +exceed the default resolution. To accommodate the performance boost achievable, +it is possible to enable an additional two bits of resolution. Because the +resolution boost feature can only be enabled when oversampling is enabled and +oversampling is not as useful without the resolution boost, the driver +automatically enables the resolution boost if and only if oversampling is +enabled. + +Since the resolution boost feature causes 16-bit chips to now have 18-bit data +which means the storagebits has to change from 16 to 32 bits, we use the new +ext_scan_type feature to allow changing the scan_type at runtime. Unfortunately +libiio does not support it. So when enabling or disabling oversampling, user +must restart iiod using the following command: + +.. code-block:: bash + + root:~# systemctl restart iiod + + +Unimplemented features +---------------------- + +- 2/4 SDO lines +- Rolling average oversampling +- Power down mode +- CRC indication +- Alert + + +Device buffers +============== + +This driver supports IIO triggered buffers. + +See :doc:`iio_devbuf` for more information. diff --git a/Documentation/iio/index.rst b/Documentation/iio/index.rst index 9cb4c50cb20d..b0385a9ee5a7 100644 --- a/Documentation/iio/index.rst +++ b/Documentation/iio/index.rst @@ -18,6 +18,7 @@ Industrial I/O Kernel Drivers .. toctree:: :maxdepth: 1 + ad7380 ad7944 adis16475 adis16480 diff --git a/MAINTAINERS b/MAINTAINERS index 06ecfa64a39a..40cf58c2f884 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -447,6 +447,7 @@ S: Supported W: https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad738x W: https://ez.analog.com/linux-software-drivers F: Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml +F: Documentation/iio/ad7380.rst F: drivers/iio/adc/ad7380.c AD7877 TOUCHSCREEN DRIVER --- base-commit: 986da024b99a72e64f6bdb3f3f0e52af024b1f50 change-id: 20240708-ad7380-add-docs-42a9296e5cd3 Best regards, -- Julien Stephan . From: "Rob Herring (Arm)" To: Saravana Kannan Cc: Geert Uytterhoeven , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] scripts/dtc: Update to upstream version v1.7.0-93-g1df7b047fe43 Date: Tue, 9 Jul 2024 09:17:43 -0600 Message-ID: <20240709151748.3390282-1-robh@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272325 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This adds the following commits from upstream: 1df7b047fe43 pylibfdt/Makefile.pylibfdt: use project's flags to compile the extension 61e88fdcec52 libfdt: overlay: Fix phandle overwrite check for new subtrees 49d30894466e meson: fix installation with meson-python d54aaf93673c pylibfdt: clean up python build directory ab86f1e9fda8 pylibfdt: add VERSION.txt to Python sdist 7b8a30eceabe pylibfdt: fix Python version ff4f17eb5865 pylibfdt/Makefile.pylibfdt: fix Python library being rebuild during install 9e313b14e684 pylibfdt/meson.build: fix Python library being rebuilt during install d598fc3648ec tests/run_tests.sh: fix Meson library path being dropped b98239da2f18 tests/meson.build: fix python and yaml tests not running c17d76ab5e84 checks: Check the overall length of "interrupt-map" ae26223a056e libfdt: overlay: Refactor overlay_fixup_phandle 4dd831affd01 libfdt: tests: Update test case for overlay_bad_fixup e6d294200837 tests: Remove two_roots and named_root from LIBTREE_TESTS_L and add all dtb filenames generated by dumptrees to TESTS_TREES_L in Makefile.tests 855c934e26ae tests: fix tests broken under Meson 4fd3f4f0a95d github: enforce testing pylibfdt and yaml support 9ca7d62dbf0b meson: split run-tests by type bb51223083a4 meson: fix dependencies of tests e81900635c95 meson: fix pylibfdt missing dependency on libfdt 822123856980 pylibfdt: fix get_mem_rsv for newer Python versions 1fad065080e6 libfdt: overlay: ensure that existing phandles are not overwritten b0aacd0a7735 github: add windows/msys CI build ae97d9745862 github: Don't accidentally suppress test errors 057a7dbbb777 github: Display meson test logs on failure 92b5d4e91678 pylibfdt: Remove some apparently deprecated options from setup.py 417e3299dbd1 github: Update to newer checkout action 5e6cefa17e2d fix MinGW format attribute 24f60011fd43 libfdt: Simplify adjustment of values for local fixups da39ee0e68b6 libfdt: rework shared/static libraries a669223f7a60 Makefile: do not hardcode the `install` program path 3fbfdd08afd2 libfdt: fix duplicate meson target dcef5f834ea3 tests: use correct pkg-config when cross compiling 0b8026ff254f meson: allow building from shallow clones 95c74d71f090 treesource: Restore string list output when no type markers 2283dd78eff5 libfdt: fdt_path_offset_namelen: Reject empty path 79b9e326a162 libfdt: fdt_get_alias_namelen: Validate aliases 52157f13ef3d pylibfdt: Support boolean properties d77433727566 dtc: fix missing string in usage_opts_help ad8bf9f9aa39 libfdt: Fix fdt_appendprop_addrrange documentation 6c5e189fb952 github: add workflow for Meson builds a3dc9f006a78 libfdt: rename libfdt-X.Y.Z.so to libfdt.so.X.Y.Z 35019949c4c7 workflows: build: remove setuptools_scm hack cd3e2304f4a9 pylibfdt: use fallback version in tarballs 0f5864567745 move release version into VERSION.txt 38165954c13b libfdt: add missing version symbols 5e98b5979354 editorconfig: use tab indentation for version.lds d030a893be25 tests: generate dtbs in Meson build directory 8d8372b13706 tests: fix use of deprecated meson methods 761114effaf7 pylibtfdt: fix use of deprecated meson method bf6377a98d97 meson: set minimum Meson version to 0.56.0 4c68e4b16b22 libfdt: fix library version to match project version bdc5c8793a13 meson: allow disabling tests f088e381f29e Makefile: allow to install libfdt without building executables 6df5328a902c Fix use of functions ccf1f62d59ad libfdt: Fix a typo in libfdt.h 71a8b8ef0adf libfdt: meson: Fix linking on macOS linker 589d8c7653c7 dtc: Add an option to generate __local_fixups__ and __fixups__ e8364666d5ac CI: Add build matrix with multiple Linux distributions 3b02a94b486f dtc: Correct invalid dts output with mixed phandles and integers d4888958d64b tests: Add additional tests for device graph checks ea3b9a1d2c5a checks: Fix crash in graph_child_address if 'reg' cell size != 1 b2b9671583e9 livetree: fix off-by-one in propval_cell_n() bounds check ab481e483061 Add definition for a GitHub Actions CI job c88038c9b8ca Drop obsolete/broken CI definitions 0ac8b30ba5a1 yaml: Depend on libyaml >= 0.2.3 f1657b2fb5be tests: Add test cases for bad endpoint node and remote-endpoint prop checks 44bb89cafd3d checks: Fix segmentation fault in check_graph_node 60bcf1cde1a8 improve documentation for fdt_path_offset() a6f997bc77d4 add fdt_get_symbol() and fdt_get_symbol_namelen() functions 18f5ec12a10e use fdt_path_getprop_namelen() in fdt_get_alias_namelen() df093279282c add fdt_path_getprop_namelen() helper 129bb4b78bc6 doc: dt-object-internal: Fix a typo 390f481521c3 fdtoverlay: Drop a a repeated article 9f8b382ed45e manual: Fix and improve documentation about -@ 2cdf93a6d402 fdtoverlay: Fix usage string to not mention "" 72fc810c3025 build-sys: add -Wwrite-strings 083ab26da83b tests: fix leaks spotted by ASAN 6f8b28f49609 livetree: fix leak spotted by ASAN fd68bb8c5658 Make name_node() xstrdup its name argument 4718189c4ca8 Delay xstrdup() of node and property names coming from a flat tree 0b842c3c8199 Make build_property() xstrdup its name argument 9cceabea1ee0 checks: correct I2C 10-bit address check 0d56145938fe yamltree.c: fix -Werror=discarded-qualifiers & -Werror=cast-qual 61fa22b05f69 checks: make check.data const 7a1d72a788e0 checks.c: fix check_msg() leak ee5799938697 checks.c: fix heap-buffer-overflow 44c9b73801c1 tests: fix -Wwrite-strings 5b60f5104fcc srcpos.c: fix -Wwrite-strings 32174a66efa4 meson: Fix cell overflow tests when running from meson 64a907f08b9b meson.build: bump version to 1.7.0 e3cde0613bfd Add -Wsuggest-attribute=format warning, correct warnings thus generated 41821821101a Use #ifdef NO_VALGRIND 71c19f20b3ef Do not redefine _GNU_SOURCE if already set 039a99414e77 Bump version to v1.7.0 9b62ec84bb2d Merge remote-tracking branch 'gitlab/main' 3f29d6d85c24 pylibfdt: add size_hint parameter for get_path 2022bb10879d checks: Update #{size,address}-cells check for 'dma-ranges' Signed-off-by: Rob Herring (Arm) --- scripts/dtc/checks.c | 85 ++++---- scripts/dtc/dtc-parser.y | 5 + scripts/dtc/dtc.c | 9 +- scripts/dtc/dtc.h | 12 +- scripts/dtc/fdtoverlay.c | 6 +- scripts/dtc/flattree.c | 21 +- scripts/dtc/fstree.c | 2 +- scripts/dtc/libfdt/fdt_overlay.c | 349 ++++++++++++++++++++++++++----- scripts/dtc/libfdt/fdt_ro.c | 37 +++- scripts/dtc/libfdt/libfdt.h | 67 +++++- scripts/dtc/livetree.c | 56 ++--- scripts/dtc/srcpos.c | 14 +- scripts/dtc/treesource.c | 26 +++ scripts/dtc/util.h | 6 +- scripts/dtc/version_gen.h | 2 +- 15 files changed, 539 insertions(+), 158 deletions(-) diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c index 9f31d2607182..10fb63894369 100644 --- a/scripts/dtc/checks.c +++ b/scripts/dtc/checks.c @@ -31,7 +31,7 @@ typedef void (*check_fn)(struct check *c, struct dt_info *dti, struct node *node struct check { const char *name; check_fn fn; - void *data; + const void *data; bool warn, error; enum checkstatus status; bool inprogress; @@ -114,6 +114,7 @@ static inline void PRINTF(5, 6) check_msg(struct check *c, struct dt_info *dti, } fputs(str, stderr); + free(str); } #define FAIL(c, dti, node, ...) \ @@ -207,7 +208,7 @@ static void check_is_string(struct check *c, struct dt_info *dti, struct node *node) { struct property *prop; - char *propname = c->data; + const char *propname = c->data; prop = get_property(node, propname); if (!prop) @@ -226,7 +227,7 @@ static void check_is_string_list(struct check *c, struct dt_info *dti, { int rem, l; struct property *prop; - char *propname = c->data; + const char *propname = c->data; char *str; prop = get_property(node, propname); @@ -254,7 +255,7 @@ static void check_is_cell(struct check *c, struct dt_info *dti, struct node *node) { struct property *prop; - char *propname = c->data; + const char *propname = c->data; prop = get_property(node, propname); if (!prop) @@ -1078,10 +1079,11 @@ static void check_i2c_bus_reg(struct check *c, struct dt_info *dti, struct node /* Ignore I2C_OWN_SLAVE_ADDRESS */ reg &= ~I2C_OWN_SLAVE_ADDRESS; - if ((reg & I2C_TEN_BIT_ADDRESS) && ((reg & ~I2C_TEN_BIT_ADDRESS) > 0x3ff)) - FAIL_PROP(c, dti, node, prop, "I2C address must be less than 10-bits, got \"0x%x\"", + if (reg & I2C_TEN_BIT_ADDRESS) { + if ((reg & ~I2C_TEN_BIT_ADDRESS) > 0x3ff) + FAIL_PROP(c, dti, node, prop, "I2C address must be less than 10-bits, got \"0x%x\"", reg); - else if (reg > 0x7f) + } else if (reg > 0x7f) FAIL_PROP(c, dti, node, prop, "I2C address must be less than 7-bits, got \"0x%x\". Set I2C_TEN_BIT_ADDRESS for 10 bit addresses or fix the property", reg); } @@ -1108,7 +1110,7 @@ static void check_spi_bus_bridge(struct check *c, struct dt_info *dti, struct no for_each_child(node, child) { struct property *prop; for_each_property(child, prop) { - if (strprefixeq(prop->name, 4, "spi-")) { + if (strstarts(prop->name, "spi-")) { node->bus = &spi_bus; break; } @@ -1180,7 +1182,7 @@ static void check_unit_address_format(struct check *c, struct dt_info *dti, /* skip over 0x for next test */ unitname += 2; } - if (unitname[0] == '0' && isxdigit(unitname[1])) + if (unitname[0] == '0' && isxdigit((unsigned char)unitname[1])) FAIL(c, dti, node, "unit name should not have leading 0s"); } WARNING(unit_address_format, check_unit_address_format, NULL, @@ -1222,7 +1224,7 @@ static void check_avoid_unnecessary_addr_size(struct check *c, struct dt_info *d if (!node->parent || node->addr_cells < 0 || node->size_cells < 0) return; - if (get_property(node, "ranges") || !node->children) + if (get_property(node, "ranges") || get_property(node, "dma-ranges") || !node->children) return; for_each_child(node, child) { @@ -1232,7 +1234,7 @@ static void check_avoid_unnecessary_addr_size(struct check *c, struct dt_info *d } if (!has_reg) - FAIL(c, dti, node, "unnecessary #address-cells/#size-cells without \"ranges\" or child \"reg\" property"); + FAIL(c, dti, node, "unnecessary #address-cells/#size-cells without \"ranges\", \"dma-ranges\" or child \"reg\" property"); } WARNING(avoid_unnecessary_addr_size, check_avoid_unnecessary_addr_size, NULL, &avoid_default_addr_size); @@ -1465,7 +1467,7 @@ static void check_provider_cells_property(struct check *c, struct dt_info *dti, struct node *node) { - struct provider *provider = c->data; + const struct provider *provider = c->data; struct property *prop; prop = get_property(node, provider->prop_name); @@ -1673,6 +1675,10 @@ static void check_interrupt_map(struct check *c, parent_cellsize += propval_cell(cellprop); cell += 1 + parent_cellsize; + if (cell > map_cells) + FAIL_PROP(c, dti, node, irq_map_prop, + "property size (%d) mismatch, expected %zu", + irq_map_prop->val.len, cell * sizeof(cell_t)); } } WARNING(interrupt_map, check_interrupt_map, NULL, &phandle_references, &addr_size_cells, &interrupt_provider); @@ -1765,6 +1771,11 @@ static void check_graph_nodes(struct check *c, struct dt_info *dti, get_property(child, "remote-endpoint"))) continue; + /* The root node cannot be a port */ + if (!node->parent) { + FAIL(c, dti, node, "root node contains endpoint node '%s', potentially misplaced remote-endpoint property", child->name); + continue; + } node->bus = &graph_port_bus; /* The parent of 'port' nodes can be either 'ports' or a device */ @@ -1778,31 +1789,6 @@ static void check_graph_nodes(struct check *c, struct dt_info *dti, } WARNING(graph_nodes, check_graph_nodes, NULL); -static void check_graph_child_address(struct check *c, struct dt_info *dti, - struct node *node) -{ - int cnt = 0; - struct node *child; - - if (node->bus != &graph_ports_bus && node->bus != &graph_port_bus) - return; - - for_each_child(node, child) { - struct property *prop = get_property(child, "reg"); - - /* No error if we have any non-zero unit address */ - if (prop && propval_cell(prop) != 0) - return; - - cnt++; - } - - if (cnt == 1 && node->addr_cells != -1) - FAIL(c, dti, node, "graph node has single child node '%s', #address-cells/#size-cells are not necessary", - node->children->name); -} -WARNING(graph_child_address, check_graph_child_address, NULL, &graph_nodes); - static void check_graph_reg(struct check *c, struct dt_info *dti, struct node *node) { @@ -1893,6 +1879,31 @@ static void check_graph_endpoint(struct check *c, struct dt_info *dti, } WARNING(graph_endpoint, check_graph_endpoint, NULL, &graph_nodes); +static void check_graph_child_address(struct check *c, struct dt_info *dti, + struct node *node) +{ + int cnt = 0; + struct node *child; + + if (node->bus != &graph_ports_bus && node->bus != &graph_port_bus) + return; + + for_each_child(node, child) { + struct property *prop = get_property(child, "reg"); + + /* No error if we have any non-zero unit address */ + if (prop && propval_cell(prop) != 0 ) + return; + + cnt++; + } + + if (cnt == 1 && node->addr_cells != -1) + FAIL(c, dti, node, "graph node has single child node '%s', #address-cells/#size-cells are not necessary", + node->children->name); +} +WARNING(graph_child_address, check_graph_child_address, NULL, &graph_nodes, &graph_port, &graph_endpoint); + static struct check *check_table[] = { &duplicate_node_names, &duplicate_property_names, &node_name_chars, &node_name_format, &property_name_chars, diff --git a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y index bff1337ec266..4d5eece52624 100644 --- a/scripts/dtc/dtc-parser.y +++ b/scripts/dtc/dtc-parser.y @@ -284,14 +284,17 @@ propdef: DT_PROPNODENAME '=' propdata ';' { $$ = build_property($1, $3, &@$); + free($1); } | DT_PROPNODENAME ';' { $$ = build_property($1, empty_data, &@$); + free($1); } | DT_DEL_PROP DT_PROPNODENAME ';' { $$ = build_property_delete($2); + free($2); } | DT_LABEL propdef { @@ -570,10 +573,12 @@ subnode: DT_PROPNODENAME nodedef { $$ = name_node($2, $1); + free($1); } | DT_DEL_NODE DT_PROPNODENAME ';' { $$ = name_node(build_node_delete(&@$), $2); + free($2); } | DT_OMIT_NO_REF subnode { diff --git a/scripts/dtc/dtc.c b/scripts/dtc/dtc.c index bc786c543b7e..0655c2e2c362 100644 --- a/scripts/dtc/dtc.c +++ b/scripts/dtc/dtc.c @@ -47,7 +47,7 @@ static void fill_fullpaths(struct node *tree, const char *prefix) /* Usage related data. */ static const char usage_synopsis[] = "dtc [options] "; -static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@AThv"; +static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@LAThv"; static struct option const usage_long_opts[] = { {"quiet", no_argument, NULL, 'q'}, {"in-format", a_argument, NULL, 'I'}, @@ -67,6 +67,7 @@ static struct option const usage_long_opts[] = { {"warning", a_argument, NULL, 'W'}, {"error", a_argument, NULL, 'E'}, {"symbols", no_argument, NULL, '@'}, + {"local-fixups", no_argument, NULL, 'L'}, {"auto-alias", no_argument, NULL, 'A'}, {"annotate", no_argument, NULL, 'T'}, {"help", no_argument, NULL, 'h'}, @@ -104,6 +105,7 @@ static const char * const usage_opts_help[] = { "\n\tEnable/disable warnings (prefix with \"no-\")", "\n\tEnable/disable errors (prefix with \"no-\")", "\n\tEnable generation of symbols", + "\n\tPossibly generates a __local_fixups__ and a __fixups__ node at the root node", "\n\tEnable auto-alias of labels", "\n\tAnnotate output .dts with input source file and line (-T -T for more details)", "\n\tPrint this help and exit", @@ -252,6 +254,11 @@ int main(int argc, char *argv[]) case '@': generate_symbols = 1; break; + + case 'L': + generate_fixups = 1; + break; + case 'A': auto_label_aliases = 1; break; diff --git a/scripts/dtc/dtc.h b/scripts/dtc/dtc.h index 0a1f54991026..4c4aaca1fc41 100644 --- a/scripts/dtc/dtc.h +++ b/scripts/dtc/dtc.h @@ -260,16 +260,16 @@ struct node { void add_label(struct label **labels, char *label); void delete_labels(struct label **labels); -struct property *build_property(char *name, struct data val, +struct property *build_property(const char *name, struct data val, struct srcpos *srcpos); -struct property *build_property_delete(char *name); +struct property *build_property_delete(const char *name); struct property *chain_property(struct property *first, struct property *list); struct property *reverse_properties(struct property *first); struct node *build_node(struct property *proplist, struct node *children, struct srcpos *srcpos); struct node *build_node_delete(struct srcpos *srcpos); -struct node *name_node(struct node *node, char *name); +struct node *name_node(struct node *node, const char *name); struct node *omit_node_if_unused(struct node *node); struct node *reference_node(struct node *node); struct node *chain_node(struct node *first, struct node *list); @@ -336,9 +336,9 @@ struct dt_info *build_dt_info(unsigned int dtsflags, struct reserve_info *reservelist, struct node *tree, uint32_t boot_cpuid_phys); void sort_tree(struct dt_info *dti); -void generate_label_tree(struct dt_info *dti, char *name, bool allocph); -void generate_fixups_tree(struct dt_info *dti, char *name); -void generate_local_fixups_tree(struct dt_info *dti, char *name); +void generate_label_tree(struct dt_info *dti, const char *name, bool allocph); +void generate_fixups_tree(struct dt_info *dti, const char *name); +void generate_local_fixups_tree(struct dt_info *dti, const char *name); /* Checks */ diff --git a/scripts/dtc/fdtoverlay.c b/scripts/dtc/fdtoverlay.c index 5350af65679f..4eba0460f240 100644 --- a/scripts/dtc/fdtoverlay.c +++ b/scripts/dtc/fdtoverlay.c @@ -23,9 +23,7 @@ /* Usage related data. */ static const char usage_synopsis[] = "apply a number of overlays to a base blob\n" - " fdtoverlay [ []]\n" - "\n" - USAGE_TYPE_MSG; + " fdtoverlay [ []]"; static const char usage_short_opts[] = "i:o:v" USAGE_COMMON_SHORT_OPTS; static struct option const usage_long_opts[] = { {"input", required_argument, NULL, 'i'}, @@ -50,7 +48,7 @@ static void *apply_one(char *base, const char *overlay, size_t *buf_len, int ret; /* - * We take a copies first, because a a failed apply can trash + * We take a copies first, because a failed apply can trash * both the base blob and the overlay */ tmpo = xmalloc(fdt_totalsize(overlay)); diff --git a/scripts/dtc/flattree.c b/scripts/dtc/flattree.c index 95e43d32c3e6..1bcd8089c5b9 100644 --- a/scripts/dtc/flattree.c +++ b/scripts/dtc/flattree.c @@ -604,11 +604,11 @@ static void flat_realign(struct inbuf *inb, int align) die("Premature end of data parsing flat device tree\n"); } -static char *flat_read_string(struct inbuf *inb) +static const char *flat_read_string(struct inbuf *inb) { int len = 0; const char *p = inb->ptr; - char *str; + const char *str; do { if (p >= inb->limit) @@ -616,7 +616,7 @@ static char *flat_read_string(struct inbuf *inb) len++; } while ((*p++) != '\0'); - str = xstrdup(inb->ptr); + str = inb->ptr; inb->ptr += len; @@ -711,7 +711,7 @@ static struct reserve_info *flat_read_mem_reserve(struct inbuf *inb) } -static char *nodename_from_path(const char *ppath, const char *cpath) +static const char *nodename_from_path(const char *ppath, const char *cpath) { int plen; @@ -725,7 +725,7 @@ static char *nodename_from_path(const char *ppath, const char *cpath) if (!streq(ppath, "/")) plen++; - return xstrdup(cpath + plen); + return cpath + plen; } static struct node *unflatten_tree(struct inbuf *dtbuf, @@ -733,7 +733,7 @@ static struct node *unflatten_tree(struct inbuf *dtbuf, const char *parent_flatname, int flags) { struct node *node; - char *flatname; + const char *flatname; uint32_t val; node = build_node(NULL, NULL, NULL); @@ -741,9 +741,10 @@ static struct node *unflatten_tree(struct inbuf *dtbuf, flatname = flat_read_string(dtbuf); if (flags & FTF_FULLPATH) - node->name = nodename_from_path(parent_flatname, flatname); + node->name = xstrdup(nodename_from_path(parent_flatname, + flatname)); else - node->name = flatname; + node->name = xstrdup(flatname); do { struct property *prop; @@ -785,10 +786,6 @@ static struct node *unflatten_tree(struct inbuf *dtbuf, } } while (val != FDT_END_NODE); - if (node->name != flatname) { - free(flatname); - } - return node; } diff --git a/scripts/dtc/fstree.c b/scripts/dtc/fstree.c index 5e59594ab301..0f9a534bacdb 100644 --- a/scripts/dtc/fstree.c +++ b/scripts/dtc/fstree.c @@ -43,7 +43,7 @@ static struct node *read_fstree(const char *dirname) "WARNING: Cannot open %s: %s\n", tmpname, strerror(errno)); } else { - prop = build_property(xstrdup(de->d_name), + prop = build_property(de->d_name, data_copy_file(pfile, st.st_size), NULL); diff --git a/scripts/dtc/libfdt/fdt_overlay.c b/scripts/dtc/libfdt/fdt_overlay.c index 5c0c3981b89d..28b667ffc490 100644 --- a/scripts/dtc/libfdt/fdt_overlay.c +++ b/scripts/dtc/libfdt/fdt_overlay.c @@ -101,26 +101,22 @@ int fdt_overlay_target_offset(const void *fdt, const void *fdto, static int overlay_phandle_add_offset(void *fdt, int node, const char *name, uint32_t delta) { - const fdt32_t *val; - uint32_t adj_val; + fdt32_t *valp, val; int len; - val = fdt_getprop(fdt, node, name, &len); - if (!val) + valp = fdt_getprop_w(fdt, node, name, &len); + if (!valp) return len; - if (len != sizeof(*val)) + if (len != sizeof(val)) return -FDT_ERR_BADPHANDLE; - adj_val = fdt32_to_cpu(*val); - if ((adj_val + delta) < adj_val) - return -FDT_ERR_NOPHANDLES; - - adj_val += delta; - if (adj_val == (uint32_t)-1) + val = fdt32_ld(valp); + if (val + delta < val || val + delta == (uint32_t)-1) return -FDT_ERR_NOPHANDLES; - return fdt_setprop_inplace_u32(fdt, node, name, adj_val); + fdt32_st(valp, val + delta); + return 0; } /** @@ -213,8 +209,8 @@ static int overlay_update_local_node_references(void *fdto, fdt_for_each_property_offset(fixup_prop, fdto, fixup_node) { const fdt32_t *fixup_val; - const char *tree_val; const char *name; + char *tree_val; int fixup_len; int tree_len; int i; @@ -228,7 +224,7 @@ static int overlay_update_local_node_references(void *fdto, return -FDT_ERR_BADOVERLAY; fixup_len /= sizeof(uint32_t); - tree_val = fdt_getprop(fdto, tree_node, name, &tree_len); + tree_val = fdt_getprop_w(fdto, tree_node, name, &tree_len); if (!tree_val) { if (tree_len == -FDT_ERR_NOTFOUND) return -FDT_ERR_BADOVERLAY; @@ -237,33 +233,15 @@ static int overlay_update_local_node_references(void *fdto, } for (i = 0; i < fixup_len; i++) { - fdt32_t adj_val; - uint32_t poffset; + fdt32_t *refp; - poffset = fdt32_to_cpu(fixup_val[i]); + refp = (fdt32_t *)(tree_val + fdt32_ld_(fixup_val + i)); /* - * phandles to fixup can be unaligned. - * - * Use a memcpy for the architectures that do - * not support unaligned accesses. + * phandles to fixup can be unaligned, so use + * fdt32_{ld,st}() to read/write them. */ - memcpy(&adj_val, tree_val + poffset, sizeof(adj_val)); - - adj_val = cpu_to_fdt32(fdt32_to_cpu(adj_val) + delta); - - ret = fdt_setprop_inplace_namelen_partial(fdto, - tree_node, - name, - strlen(name), - poffset, - &adj_val, - sizeof(adj_val)); - if (ret == -FDT_ERR_NOSPACE) - return -FDT_ERR_BADOVERLAY; - - if (ret) - return ret; + fdt32_st(refp, fdt32_ld(refp) + delta); } } @@ -337,7 +315,7 @@ static int overlay_update_local_references(void *fdto, uint32_t delta) * @name: Name of the property holding the phandle reference in the overlay * @name_len: number of name characters to consider * @poffset: Offset within the overlay property where the phandle is stored - * @label: Label of the node referenced by the phandle + * @phandle: Phandle referencing the node * * overlay_fixup_one_phandle() resolves an overlay phandle pointing to * a node in the base device tree. @@ -354,30 +332,14 @@ static int overlay_fixup_one_phandle(void *fdt, void *fdto, int symbols_off, const char *path, uint32_t path_len, const char *name, uint32_t name_len, - int poffset, const char *label) + int poffset, uint32_t phandle) { - const char *symbol_path; - uint32_t phandle; fdt32_t phandle_prop; - int symbol_off, fixup_off; - int prop_len; + int fixup_off; if (symbols_off < 0) return symbols_off; - symbol_path = fdt_getprop(fdt, symbols_off, label, - &prop_len); - if (!symbol_path) - return prop_len; - - symbol_off = fdt_path_offset(fdt, symbol_path); - if (symbol_off < 0) - return symbol_off; - - phandle = fdt_get_phandle(fdt, symbol_off); - if (!phandle) - return -FDT_ERR_NOTFOUND; - fixup_off = fdt_path_offset_namelen(fdto, path, path_len); if (fixup_off == -FDT_ERR_NOTFOUND) return -FDT_ERR_BADOVERLAY; @@ -416,6 +378,10 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off, const char *value; const char *label; int len; + const char *symbol_path; + int prop_len; + int symbol_off; + uint32_t phandle; value = fdt_getprop_by_offset(fdto, property, &label, &len); @@ -426,6 +392,18 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off, return len; } + symbol_path = fdt_getprop(fdt, symbols_off, label, &prop_len); + if (!symbol_path) + return prop_len; + + symbol_off = fdt_path_offset(fdt, symbol_path); + if (symbol_off < 0) + return symbol_off; + + phandle = fdt_get_phandle(fdt, symbol_off); + if (!phandle) + return -FDT_ERR_NOTFOUND; + do { const char *path, *name, *fixup_end; const char *fixup_str = value; @@ -467,7 +445,7 @@ static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off, ret = overlay_fixup_one_phandle(fdt, fdto, symbols_off, path, path_len, name, name_len, - poffset, label); + poffset, phandle); if (ret) return ret; } while (len > 0); @@ -520,6 +498,255 @@ static int overlay_fixup_phandles(void *fdt, void *fdto) return 0; } +/** + * overlay_adjust_local_conflicting_phandle: Changes a phandle value + * @fdto: Device tree overlay + * @node: The node the phandle is set for + * @fdt_phandle: The new value for the phandle + * + * returns: + * 0 on success + * Negative error code on failure + */ +static int overlay_adjust_local_conflicting_phandle(void *fdto, int node, + uint32_t fdt_phandle) +{ + const fdt32_t *php; + int len, ret; + + php = fdt_getprop(fdto, node, "phandle", &len); + if (php && len == sizeof(*php)) { + ret = fdt_setprop_inplace_u32(fdto, node, "phandle", fdt_phandle); + if (ret) + return ret; + } + + php = fdt_getprop(fdto, node, "linux,phandle", &len); + if (php && len == sizeof(*php)) { + ret = fdt_setprop_inplace_u32(fdto, node, "linux,phandle", fdt_phandle); + if (ret) + return ret; + } + + return 0; +} + +/** + * overlay_update_node_conflicting_references - Recursively replace phandle values + * @fdto: Device tree overlay blob + * @tree_node: Node to recurse into + * @fixup_node: Node offset of the matching local fixups node + * @fdt_phandle: Value to replace phandles with + * @fdto_phandle: Value to be replaced + * + * Replaces all phandles with value @fdto_phandle by @fdt_phandle. + * + * returns: + * 0 on success + * Negative error code on failure + */ +static int overlay_update_node_conflicting_references(void *fdto, int tree_node, + int fixup_node, + uint32_t fdt_phandle, + uint32_t fdto_phandle) +{ + int fixup_prop; + int fixup_child; + int ret; + + fdt_for_each_property_offset(fixup_prop, fdto, fixup_node) { + const fdt32_t *fixup_val; + const char *name; + char *tree_val; + int fixup_len; + int tree_len; + int i; + + fixup_val = fdt_getprop_by_offset(fdto, fixup_prop, + &name, &fixup_len); + if (!fixup_val) + return fixup_len; + + if (fixup_len % sizeof(uint32_t)) + return -FDT_ERR_BADOVERLAY; + fixup_len /= sizeof(uint32_t); + + tree_val = fdt_getprop_w(fdto, tree_node, name, &tree_len); + if (!tree_val) { + if (tree_len == -FDT_ERR_NOTFOUND) + return -FDT_ERR_BADOVERLAY; + + return tree_len; + } + + for (i = 0; i < fixup_len; i++) { + fdt32_t *refp; + uint32_t valp; + + refp = (fdt32_t *)(tree_val + fdt32_ld_(fixup_val + i)); + valp = fdt32_ld(refp); + + if (valp == fdto_phandle) + fdt32_st(refp, fdt_phandle); + } + } + + fdt_for_each_subnode(fixup_child, fdto, fixup_node) { + const char *fixup_child_name = fdt_get_name(fdto, fixup_child, NULL); + int tree_child; + + tree_child = fdt_subnode_offset(fdto, tree_node, fixup_child_name); + + if (tree_child == -FDT_ERR_NOTFOUND) + return -FDT_ERR_BADOVERLAY; + if (tree_child < 0) + return tree_child; + + ret = overlay_update_node_conflicting_references(fdto, tree_child, + fixup_child, + fdt_phandle, + fdto_phandle); + if (ret) + return ret; + } + + return 0; +} + +/** + * overlay_update_local_conflicting_references - Recursively replace phandle values + * @fdto: Device tree overlay blob + * @fdt_phandle: Value to replace phandles with + * @fdto_phandle: Value to be replaced + * + * Replaces all phandles with value @fdto_phandle by @fdt_phandle. + * + * returns: + * 0 on success + * Negative error code on failure + */ +static int overlay_update_local_conflicting_references(void *fdto, + uint32_t fdt_phandle, + uint32_t fdto_phandle) +{ + int fixups; + + fixups = fdt_path_offset(fdto, "/__local_fixups__"); + if (fixups == -FDT_ERR_NOTFOUND) + return 0; + if (fixups < 0) + return fixups; + + return overlay_update_node_conflicting_references(fdto, 0, fixups, + fdt_phandle, + fdto_phandle); +} + +/** + * overlay_prevent_phandle_overwrite_node - Helper function for overlay_prevent_phandle_overwrite + * @fdt: Base Device tree blob + * @fdtnode: Node in fdt that is checked for an overwrite + * @fdto: Device tree overlay blob + * @fdtonode: Node in fdto matching @fdtnode + * + * returns: + * 0 on success + * Negative error code on failure + */ +static int overlay_prevent_phandle_overwrite_node(void *fdt, int fdtnode, + void *fdto, int fdtonode) +{ + uint32_t fdt_phandle, fdto_phandle; + int fdtochild; + + fdt_phandle = fdt_get_phandle(fdt, fdtnode); + fdto_phandle = fdt_get_phandle(fdto, fdtonode); + + if (fdt_phandle && fdto_phandle) { + int ret; + + ret = overlay_adjust_local_conflicting_phandle(fdto, fdtonode, + fdt_phandle); + if (ret) + return ret; + + ret = overlay_update_local_conflicting_references(fdto, + fdt_phandle, + fdto_phandle); + if (ret) + return ret; + } + + fdt_for_each_subnode(fdtochild, fdto, fdtonode) { + const char *name = fdt_get_name(fdto, fdtochild, NULL); + int fdtchild; + int ret; + + fdtchild = fdt_subnode_offset(fdt, fdtnode, name); + if (fdtchild == -FDT_ERR_NOTFOUND) + /* + * no further overwrites possible here as this node is + * new + */ + continue; + + ret = overlay_prevent_phandle_overwrite_node(fdt, fdtchild, + fdto, fdtochild); + if (ret) + return ret; + } + + return 0; +} + +/** + * overlay_prevent_phandle_overwrite - Fixes overlay phandles to not overwrite base phandles + * @fdt: Base Device Tree blob + * @fdto: Device tree overlay blob + * + * Checks recursively if applying fdto overwrites phandle values in the base + * dtb. When such a phandle is found, the fdto is changed to use the fdt's + * phandle value to not break references in the base. + * + * returns: + * 0 on success + * Negative error code on failure + */ +static int overlay_prevent_phandle_overwrite(void *fdt, void *fdto) +{ + int fragment; + + fdt_for_each_subnode(fragment, fdto, 0) { + int overlay; + int target; + int ret; + + overlay = fdt_subnode_offset(fdto, fragment, "__overlay__"); + if (overlay == -FDT_ERR_NOTFOUND) + continue; + + if (overlay < 0) + return overlay; + + target = fdt_overlay_target_offset(fdt, fdto, fragment, NULL); + if (target == -FDT_ERR_NOTFOUND) + /* + * The subtree doesn't exist in the base, so nothing + * will be overwritten. + */ + continue; + else if (target < 0) + return target; + + ret = overlay_prevent_phandle_overwrite_node(fdt, target, + fdto, overlay); + if (ret) + return ret; + } + + return 0; +} + /** * overlay_apply_node - Merges a node into the base device tree * @fdt: Base Device Tree blob @@ -824,18 +1051,26 @@ int fdt_overlay_apply(void *fdt, void *fdto) if (ret) goto err; + /* Increase all phandles in the fdto by delta */ ret = overlay_adjust_local_phandles(fdto, delta); if (ret) goto err; + /* Adapt the phandle values in fdto to the above increase */ ret = overlay_update_local_references(fdto, delta); if (ret) goto err; + /* Update fdto's phandles using symbols from fdt */ ret = overlay_fixup_phandles(fdt, fdto); if (ret) goto err; + /* Don't overwrite phandles in fdt */ + ret = overlay_prevent_phandle_overwrite(fdt, fdto); + if (ret) + goto err; + ret = overlay_merge(fdt, fdto); if (ret) goto err; diff --git a/scripts/dtc/libfdt/fdt_ro.c b/scripts/dtc/libfdt/fdt_ro.c index 9f6c551a22c2..b78c4e48f1cb 100644 --- a/scripts/dtc/libfdt/fdt_ro.c +++ b/scripts/dtc/libfdt/fdt_ro.c @@ -255,6 +255,9 @@ int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen) FDT_RO_PROBE(fdt); + if (!can_assume(VALID_INPUT) && namelen <= 0) + return -FDT_ERR_BADPATH; + /* see if we have an alias */ if (*path != '/') { const char *q = memchr(path, '/', end - p); @@ -522,16 +525,31 @@ uint32_t fdt_get_phandle(const void *fdt, int nodeoffset) return fdt32_ld_(php); } +static const void *fdt_path_getprop_namelen(const void *fdt, const char *path, + const char *propname, int propnamelen, + int *lenp) +{ + int offset = fdt_path_offset(fdt, path); + + if (offset < 0) + return NULL; + + return fdt_getprop_namelen(fdt, offset, propname, propnamelen, lenp); +} + const char *fdt_get_alias_namelen(const void *fdt, const char *name, int namelen) { - int aliasoffset; + int len; + const char *alias; - aliasoffset = fdt_path_offset(fdt, "/aliases"); - if (aliasoffset < 0) + alias = fdt_path_getprop_namelen(fdt, "/aliases", name, namelen, &len); + + if (!can_assume(VALID_DTB) && + !(alias && len > 0 && alias[len - 1] == '\0' && *alias == '/')) return NULL; - return fdt_getprop_namelen(fdt, aliasoffset, name, namelen, NULL); + return alias; } const char *fdt_get_alias(const void *fdt, const char *name) @@ -539,6 +557,17 @@ const char *fdt_get_alias(const void *fdt, const char *name) return fdt_get_alias_namelen(fdt, name, strlen(name)); } +const char *fdt_get_symbol_namelen(const void *fdt, + const char *name, int namelen) +{ + return fdt_path_getprop_namelen(fdt, "/__symbols__", name, namelen, NULL); +} + +const char *fdt_get_symbol(const void *fdt, const char *name) +{ + return fdt_get_symbol_namelen(fdt, name, strlen(name)); +} + int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen) { int pdepth = 0, p = 0; diff --git a/scripts/dtc/libfdt/libfdt.h b/scripts/dtc/libfdt/libfdt.h index 77ccff19911e..2d409d8e829b 100644 --- a/scripts/dtc/libfdt/libfdt.h +++ b/scripts/dtc/libfdt/libfdt.h @@ -524,10 +524,35 @@ int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen); * level matching the given component, differentiated only by unit * address). * + * If the path is not absolute (i.e. does not begin with '/'), the + * first component is treated as an alias. That is, the property by + * that name is looked up in the /aliases node, and the value of that + * property used in place of that first component. + * + * For example, for this small fragment + * + * / { + * aliases { + * i2c2 = &foo; // RHS compiles to "/soc@0/i2c@30a40000/eeprom@52" + * }; + * soc@0 { + * foo: i2c@30a40000 { + * bar: eeprom@52 { + * }; + * }; + * }; + * }; + * + * these would be equivalent: + * + * /soc@0/i2c@30a40000/eeprom@52 + * i2c2/eeprom@52 + * * returns: * structure block offset of the node with the requested path (>=0), on * success - * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_BADPATH, given path does not begin with '/' and the first + * component is not a valid alias * -FDT_ERR_NOTFOUND, if the requested node does not exist * -FDT_ERR_BADMAGIC, * -FDT_ERR_BADVERSION, @@ -869,6 +894,42 @@ const char *fdt_get_alias_namelen(const void *fdt, */ const char *fdt_get_alias(const void *fdt, const char *name); +/** + * fdt_get_symbol_namelen - get symbol based on substring + * @fdt: pointer to the device tree blob + * @name: name of the symbol to look up + * @namelen: number of characters of name to consider + * + * Identical to fdt_get_symbol(), but only examine the first @namelen + * characters of @name for matching the symbol name. + * + * Return: a pointer to the expansion of the symbol named @name, if it exists, + * NULL otherwise + */ +#ifndef SWIG /* Not available in Python */ +const char *fdt_get_symbol_namelen(const void *fdt, + const char *name, int namelen); +#endif + +/** + * fdt_get_symbol - retrieve the path referenced by a given symbol + * @fdt: pointer to the device tree blob + * @name: name of the symbol to look up + * + * fdt_get_symbol() retrieves the value of a given symbol. That is, + * the value of the property named @name in the node + * /__symbols__. Such a node exists only for a device tree blob that + * has been compiled with the -@ dtc option. Each property corresponds + * to a label appearing in the device tree source, with the name of + * the property being the label and the value being the full path of + * the node it is attached to. + * + * returns: + * a pointer to the expansion of the symbol named 'name', if it exists + * NULL, if the given symbol or the /__symbols__ node does not exist + */ +const char *fdt_get_symbol(const void *fdt, const char *name); + /** * fdt_get_path - determine the full path of a node * @fdt: pointer to the device tree blob @@ -1450,7 +1511,7 @@ int fdt_nop_node(void *fdt, int nodeoffset); * fdt_create_with_flags() begins the process of creating a new fdt with * the sequential write interface. * - * fdt creation process must end with fdt_finished() to produce a valid fdt. + * fdt creation process must end with fdt_finish() to produce a valid fdt. * * returns: * 0, on success @@ -1968,7 +2029,7 @@ static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, * address and size) to the value of the named property in the given * node, or creates a new property with that value if it does not * already exist. - * If "name" is not specified, a default "reg" is used. + * * Cell sizes are determined by parent's #address-cells and #size-cells. * * This function may insert data into the blob, and will therefore diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c index f46a098d5ada..49f723002f85 100644 --- a/scripts/dtc/livetree.c +++ b/scripts/dtc/livetree.c @@ -36,27 +36,27 @@ void delete_labels(struct label **labels) label->deleted = 1; } -struct property *build_property(char *name, struct data val, +struct property *build_property(const char *name, struct data val, struct srcpos *srcpos) { struct property *new = xmalloc(sizeof(*new)); memset(new, 0, sizeof(*new)); - new->name = name; + new->name = xstrdup(name); new->val = val; new->srcpos = srcpos_copy(srcpos); return new; } -struct property *build_property_delete(char *name) +struct property *build_property_delete(const char *name) { struct property *new = xmalloc(sizeof(*new)); memset(new, 0, sizeof(*new)); - new->name = name; + new->name = xstrdup(name); new->deleted = 1; return new; @@ -116,11 +116,11 @@ struct node *build_node_delete(struct srcpos *srcpos) return new; } -struct node *name_node(struct node *node, char *name) +struct node *name_node(struct node *node, const char *name) { assert(node->name == NULL); - node->name = name; + node->name = xstrdup(name); return node; } @@ -250,6 +250,7 @@ struct node * add_orphan_node(struct node *dt, struct node *new_node, char *ref) name_node(new_node, "__overlay__"); node = build_node(p, new_node, NULL); name_node(node, name); + free(name); add_child(dt, node); return dt; @@ -440,7 +441,7 @@ cell_t propval_cell(struct property *prop) cell_t propval_cell_n(struct property *prop, unsigned int n) { - assert(prop->val.len / sizeof(cell_t) >= n); + assert(prop->val.len / sizeof(cell_t) > n); return fdt32_to_cpu(*((fdt32_t *)prop->val.val + n)); } @@ -616,10 +617,25 @@ struct node *get_node_by_ref(struct node *tree, const char *ref) return target; } +static void add_phandle_property(struct node *node, + const char *name, int format) +{ + struct data d; + + if (!(phandle_format & format)) + return; + if (get_property(node, name)) + return; + + d = data_add_marker(empty_data, TYPE_UINT32, NULL); + d = data_append_cell(d, node->phandle); + + add_property(node, build_property(name, d, NULL)); +} + cell_t get_node_phandle(struct node *root, struct node *node) { static cell_t phandle = 1; /* FIXME: ick, static local */ - struct data d = empty_data; if (phandle_is_valid(node->phandle)) return node->phandle; @@ -629,16 +645,8 @@ cell_t get_node_phandle(struct node *root, struct node *node) node->phandle = phandle; - d = data_add_marker(d, TYPE_UINT32, NULL); - d = data_append_cell(d, phandle); - - if (!get_property(node, "linux,phandle") - && (phandle_format & PHANDLE_LEGACY)) - add_property(node, build_property("linux,phandle", d, NULL)); - - if (!get_property(node, "phandle") - && (phandle_format & PHANDLE_EPAPR)) - add_property(node, build_property("phandle", d, NULL)); + add_phandle_property(node, "linux,phandle", PHANDLE_LEGACY); + add_phandle_property(node, "phandle", PHANDLE_EPAPR); /* If the node *does* have a phandle property, we must * be dealing with a self-referencing phandle, which will be @@ -808,18 +816,18 @@ void sort_tree(struct dt_info *dti) } /* utility helper to avoid code duplication */ -static struct node *build_and_name_child_node(struct node *parent, char *name) +static struct node *build_and_name_child_node(struct node *parent, const char *name) { struct node *node; node = build_node(NULL, NULL, NULL); - name_node(node, xstrdup(name)); + name_node(node, name); add_child(parent, node); return node; } -static struct node *build_root_node(struct node *dt, char *name) +static struct node *build_root_node(struct node *dt, const char *name) { struct node *an; @@ -1040,7 +1048,7 @@ static void generate_local_fixups_tree_internal(struct dt_info *dti, generate_local_fixups_tree_internal(dti, lfn, c); } -void generate_label_tree(struct dt_info *dti, char *name, bool allocph) +void generate_label_tree(struct dt_info *dti, const char *name, bool allocph) { if (!any_label_tree(dti, dti->dt)) return; @@ -1048,7 +1056,7 @@ void generate_label_tree(struct dt_info *dti, char *name, bool allocph) dti->dt, allocph); } -void generate_fixups_tree(struct dt_info *dti, char *name) +void generate_fixups_tree(struct dt_info *dti, const char *name) { if (!any_fixup_tree(dti, dti->dt)) return; @@ -1056,7 +1064,7 @@ void generate_fixups_tree(struct dt_info *dti, char *name) dti->dt); } -void generate_local_fixups_tree(struct dt_info *dti, char *name) +void generate_local_fixups_tree(struct dt_info *dti, const char *name) { if (!any_local_fixup_tree(dti, dti->dt)) return; diff --git a/scripts/dtc/srcpos.c b/scripts/dtc/srcpos.c index 4fdb22a019bd..8e4d18a90b47 100644 --- a/scripts/dtc/srcpos.c +++ b/scripts/dtc/srcpos.c @@ -3,7 +3,9 @@ * Copyright 2007 Jon Loeliger, Freescale Semiconductor, Inc. */ +#ifndef _GNU_SOURCE #define _GNU_SOURCE +#endif #include @@ -311,8 +313,8 @@ srcpos_string(struct srcpos *pos) static char * srcpos_string_comment(struct srcpos *pos, bool first_line, int level) { - char *pos_str, *fname, *first, *rest; - bool fresh_fname = false; + char *pos_str, *fresh_fname = NULL, *first, *rest; + const char *fname; if (!pos) { if (level > 1) { @@ -330,9 +332,9 @@ srcpos_string_comment(struct srcpos *pos, bool first_line, int level) else if (level > 1) fname = pos->file->name; else { - fname = shorten_to_initial_path(pos->file->name); - if (fname) - fresh_fname = true; + fresh_fname = shorten_to_initial_path(pos->file->name); + if (fresh_fname) + fname = fresh_fname; else fname = pos->file->name; } @@ -346,7 +348,7 @@ srcpos_string_comment(struct srcpos *pos, bool first_line, int level) first_line ? pos->first_line : pos->last_line); if (fresh_fname) - free(fname); + free(fresh_fname); if (pos->next != NULL) { rest = srcpos_string_comment(pos->next, first_line, level); diff --git a/scripts/dtc/treesource.c b/scripts/dtc/treesource.c index 33fedee82d58..ae15839ba6a5 100644 --- a/scripts/dtc/treesource.c +++ b/scripts/dtc/treesource.c @@ -139,6 +139,28 @@ static const char *delim_end[] = { [TYPE_STRING] = "", }; +static void add_string_markers(struct property *prop) +{ + int l, len = prop->val.len; + const char *p = prop->val.val; + + for (l = strlen(p) + 1; l < len; l += strlen(p + l) + 1) { + struct marker *m, **nextp; + + m = xmalloc(sizeof(*m)); + m->offset = l; + m->type = TYPE_STRING; + m->ref = NULL; + m->next = NULL; + + /* Find the end of the markerlist */ + nextp = &prop->val.markers; + while (*nextp) + nextp = &((*nextp)->next); + *nextp = m; + } +} + static enum markertype guess_value_type(struct property *prop) { int len = prop->val.len; @@ -164,6 +186,8 @@ static enum markertype guess_value_type(struct property *prop) if ((p[len-1] == '\0') && (nnotstring == 0) && (nnul <= (len-nnul)) && (nnotstringlbl == 0)) { + if (nnul > 1) + add_string_markers(prop); return TYPE_STRING; } else if (((len % sizeof(cell_t)) == 0) && (nnotcelllbl == 0)) { return TYPE_UINT32; @@ -241,6 +265,8 @@ static void write_propval(FILE *f, struct property *prop) } else { write_propval_int(f, p, chunk_len, 4); } + if (data_len > chunk_len) + fputc(' ', f); break; case TYPE_UINT64: write_propval_int(f, p, chunk_len, 8); diff --git a/scripts/dtc/util.h b/scripts/dtc/util.h index 9d38edee9736..b448cd79efd3 100644 --- a/scripts/dtc/util.h +++ b/scripts/dtc/util.h @@ -13,7 +13,9 @@ */ #ifdef __GNUC__ -#if __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) +#ifdef __MINGW_PRINTF_FORMAT +#define PRINTF(i, j) __attribute__((format (__MINGW_PRINTF_FORMAT, i, j))) +#elif __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) #define PRINTF(i, j) __attribute__((format (gnu_printf, i, j))) #else #define PRINTF(i, j) __attribute__((format (printf, i, j))) @@ -65,7 +67,7 @@ extern char *xstrndup(const char *s, size_t len); extern int PRINTF(2, 3) xasprintf(char **strp, const char *fmt, ...); extern int PRINTF(2, 3) xasprintf_append(char **strp, const char *fmt, ...); -extern int xavsprintf_append(char **strp, const char *fmt, va_list ap); +extern int PRINTF(2, 0) xavsprintf_append(char **strp, const char *fmt, va_list ap); extern char *join_path(const char *path, const char *name); /** diff --git a/scripts/dtc/version_gen.h b/scripts/dtc/version_gen.h index 99614ec1a289..4c5e17639d2b 100644 --- a/scripts/dtc/version_gen.h +++ b/scripts/dtc/version_gen.h @@ -1 +1 @@ -#define DTC_VERSION "DTC 1.6.1-gabbd523b" +#define DTC_VERSION "DTC 1.7.0-g1df7b047" -- 2.43.0 . Message-ID: <268b039f-b810-496a-8c9f-a9db1f833e74@gmx.de> Date: Tue, 9 Jul 2024 17:18:58 +0200 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Ronald Warsow To: Greg Kroah-Hartman , stable@vger.kernel.org Cc: linux-kernel@vger.kernel.org Content-Language: de-DE, en-US Subject: Re: [PATCH 6.9 000/197] 6.9.9-rc1 review Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272327 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi Greg no regressions here on x86_64 (RKL, Intel 11th Gen. CPU) Thanks Tested-by: Ronald Warsow . From: Rayyan Ansari To: devicetree@vger.kernel.org Cc: Rayyan Ansari , alsa-devel@alsa-project.org, Banajit Goswami , Conor Dooley , Krzysztof Kozlowski , Liam Girdwood , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, Mark Brown , Rob Herring , Srinivas Kandagatla Subject: [PATCH 0/2] ASoC: dt-bindings: convert qcom sound bindings to yaml Date: Tue, 9 Jul 2024 16:24:41 +0100 Message-ID: <20240709152808.155405-1-rayyan.ansari@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272339 Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi, These patches convert the remaining plain text bindings for Qualcomm sound drivers to dt schema, so device trees can be validated against them. Thanks, Rayyan Rayyan Ansari (2): ASoC: dt-bindings: qcom,msm8916-wcd-digital-codec: convert to dtschema ASoC: dt-bindings: qcom,apq8096-sndcard: use dtschema .../bindings/sound/qcom,apq8096.txt | 128 ------------------ .../sound/qcom,msm8916-wcd-digital-codec.yaml | 53 ++++++++ .../sound/qcom,msm8916-wcd-digital.txt | 20 --- .../bindings/sound/qcom,sm8250.yaml | 1 + 4 files changed, 54 insertions(+), 148 deletions(-) delete mode 100644 Documentation/devicetree/bindings/sound/qcom,apq8096.txt create mode 100644 Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-digital-codec.yaml delete mode 100644 Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-digital.txt -- 2.45.2 . From: Lu Baolu To: Joerg Roedel , Will Deacon , Robin Murphy , Kevin Tian , Louis Maliyam Cc: iommu@lists.linux.dev, linux-kernel@vger.kernel.org, Lu Baolu Subject: [PATCH v2 0/2] iommu/vt-d: Fix aligned pages for cache invalidation Date: Tue, 9 Jul 2024 23:26:41 +0800 Message-Id: <20240709152643.28109-1-baolu.lu@linux.intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272346 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.iommu Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The aligned pages for cache invalidation returned by calculate_psi_aligned_address() are incorrect if the start pfn is not aligned, which can lead to cache inconsistencies when qi_flush_piotlb() uses the number of pages to flush caches for the first-stage translation. Fix this by updating the aligned pages once the address mask is adjusted. Change log: v2: - Add a new fix to Limit max address mask to MAX_AGAW_PFN_WIDTH. v1: https://lore.kernel.org/linux-iommu/20240708121417.18705-1-baolu.lu@linux.intel.com/ Lu Baolu (2): iommu/vt-d: Limit max address mask to MAX_AGAW_PFN_WIDTH iommu/vt-d: Fix aligned pages in calculate_psi_aligned_address() drivers/iommu/intel/cache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.34.1 . From: Christophe Leroy To: Michael Ellerman , Nicholas Piggin , Christophe Leroy , "Naveen N. Rao" , Jonathan Corbet Cc: linuxppc-dev@lists.ozlabs.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] Documentation/powerpc: Remove retired CPUs from list of supported CPUs Date: Tue, 9 Jul 2024 17:34:27 +0200 Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272353 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.ozlabs.lists.linuxppc-dev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail 601, power4, 401, 403, 405, e200 and IBM-A2 support was removed by by following commits: - Commit 8b14e1dff067 ("powerpc: Remove support for PowerPC 601") - Commit 471d7ff8b51b ("powerpc/64s: Remove POWER4 support") - Commit 1b5c0967ab8a ("powerpc/40x: Remove support for IBM 403GCX") - Commit 39c8bf2b3cc1 ("powerpc: Retire e200 core (mpc555x processor)") - Commit fb5a515704d7 ("powerpc: Remove platforms/wsp and associated pieces") Remove them from the list of supported CPUs. Signed-off-by: Christophe Leroy --- Documentation/arch/powerpc/cpu_families.rst | 56 +++------------------ 1 file changed, 8 insertions(+), 48 deletions(-) diff --git a/Documentation/arch/powerpc/cpu_families.rst b/Documentation/arch/powerpc/cpu_families.rst index eb7e60649b43..713806eb14bd 100644 --- a/Documentation/arch/powerpc/cpu_families.rst +++ b/Documentation/arch/powerpc/cpu_families.rst @@ -20,10 +20,10 @@ Book3S (aka sPAPR) +--------------+ +----------------+ | | - v - +--------------+ +----------------+ +------+ - | 601 | --------------> | 603 | ---> | e300 | - +--------------+ +----------------+ +------+ + | + | +----------------+ +------+ + |-----------------------> | 603 | ---> | e300 | + | +----------------+ +------+ | | | | v v @@ -50,10 +50,10 @@ Book3S (aka sPAPR) +--------------+ +----------------+ | | | | - v v - +--------------+ +----------------+ - | POWER4 | | 7455 | - +--------------+ +----------------+ + | v + | +----------------+ + | | 7455 | + | +----------------+ | | | | v v @@ -128,24 +128,6 @@ IBM BookE - All 32 bit:: +--------------+ - | 401 | - +--------------+ - | - | - v - +--------------+ - | 403 | - +--------------+ - | - | - v - +--------------+ - | 405 | - +--------------+ - | - | - v - +--------------+ | 440 | +--------------+ | @@ -186,11 +168,6 @@ Freescale BookE - e6500 adds HW loaded indirect TLB entries. - Mix of 32 & 64 bit:: - +--------------+ - | e200 | - +--------------+ - - +--------------------------------+ | e500 | +--------------------------------+ @@ -218,20 +195,3 @@ Freescale BookE +--------------------------------+ | e6500 (HW TLB) (Multithreaded) | +--------------------------------+ - - -IBM A2 core ------------ - -- Book3E, software loaded TLB + HW loaded indirect TLB entries. -- 64 bit:: - - +--------------+ +----------------+ - | A2 core | --> | WSP | - +--------------+ +----------------+ - | - | - v - +--------------+ - | BG/Q | - +--------------+ -- 2.44.0 . From: "Xin Li (Intel)" To: linux-kernel@vger.kernel.org Cc: hpa@zytor.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, peterz@infradead.org, andrew.cooper3@citrix.com, nik.borisov@suse.com, houwenlong.hwl@antgroup.com Subject: [PATCH v2 0/3] Enable FRED earlier Date: Tue, 9 Jul 2024 08:40:45 -0700 Message-ID: <20240709154048.3543361-1-xin@zytor.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272362 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Wenlong Hou from Ant group reported two problems during the FRED initialization: https://lore.kernel.org/lkml/cover.1718972598.git.houwenlong.hwl@antgroup.com/ The first problem is that spurious_interrupt() gets called on the HYPERVISOR_CALLBACK_VECTOR vector. Because kvm_guest_init(), being executed way before trap_init() in which it is decided that whether FRED will be enabled or not, calls sysvec_install() to install HYPERVISOR_CALLBACK_VECTOR's interrupt handler into FRED system vector dispatch table or IDT depending on whether FRED is enabled. The other problem is that the #PF handler gets a wrong faulting address from the stack instead of CR2 before FRED is enabled. Because the #PF handler fetches its faulting addresss from the stack or CR2 based on whether FRED is available rather than active. This patchset fixes the 2 problems with suggestions from tglx: 1) Parse cmdline param "fred=" in cpu_parse_early_param() to minimize the gap mentioned above, before kvm_guest_init(). 2) Enable FRED right after init_mem_mapping() to switch to FRED from early IDT ASAP, avoid intermediately using the IDT #PF handler. Link to v1: https://lore.kernel.org/lkml/20240703085426.274801-1-xin@zytor.com/ Changes since v1: * Drop the patch that changes wrmsrl() to wrmsrns(). * Use strncmp() instead of strcmp(). Xin Li (Intel) (3): x86/fred: Parse cmdline param "fred=" in cpu_parse_early_param() x86/fred: Split FRED RSP initialization into a separate function x86/fred: Enable FRED right after init_mem_mapping() arch/x86/include/asm/fred.h | 2 ++ arch/x86/kernel/cpu/common.c | 9 ++++++--- arch/x86/kernel/fred.c | 28 +++++++++++++++++++--------- arch/x86/kernel/setup.c | 11 ++++++++++- arch/x86/kernel/smpboot.c | 6 ++++++ arch/x86/kernel/traps.c | 30 ++++-------------------------- 6 files changed, 47 insertions(+), 39 deletions(-) base-commit: aa9d8caba6e40b0b02a6f2b5f2bd9177cd76cacf -- 2.45.2 . From: Kees Cook To: Greg Kroah-Hartman Cc: Kees Cook , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH] usb: gadget: Use u16 types for 16-bit fields Date: Tue, 9 Jul 2024 08:49:56 -0700 Message-Id: <20240709154953.work.953-kees@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272367 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-hardening,org.kernel.vger.linux-usb Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Since the beginning of time, struct usb_ep::maxpacket was a bitfield, and when new 16-bit members were added, the convention was followed: 1da177e4c3f41 (Linus Torvalds 2005-04-16 236) unsigned maxpacket:16; e117e742d3106 (Robert Baldyga 2013-12-13 237) unsigned maxpacket_limit:16; a59d6b91cbca5 (Tatyana Brokhman 2011-06-28 238) unsigned max_streams:16; However, there is no need for this as a simple u16 can be used instead, simplifying the struct and the resulting compiler binary output. Switch to u16 for all three, and rearrange struct slightly to minimize holes. No change in the final size of the struct results; the 2 byte gap is just moved to the end, as seen with pahole: - /* XXX 2 bytes hole, try to pack */ ... /* size: 72, cachelines: 2, members: 15 */ ... + /* padding: 2 */ Changing this simplifies future introspection[1] of maxpacket's type during allocations: drivers/usb/gadget/function/f_tcm.c:330:24: error: 'typeof' applied to a bit-field 330 | fu->cmd.buf = kmalloc(fu->ep_out->maxpacket, GFP_KERNEL); Link: https://lore.kernel.org/all/202407090928.6UaOAZAJ-lkp@intel.com [1] Signed-off-by: Kees Cook --- Cc: Greg Kroah-Hartman Cc: linux-usb@vger.kernel.org --- include/linux/usb/gadget.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 56dda8e1562d..df33333650a0 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -229,18 +229,18 @@ struct usb_ep { const char *name; const struct usb_ep_ops *ops; + const struct usb_endpoint_descriptor *desc; + const struct usb_ss_ep_comp_descriptor *comp_desc; struct list_head ep_list; struct usb_ep_caps caps; bool claimed; bool enabled; - unsigned maxpacket:16; - unsigned maxpacket_limit:16; - unsigned max_streams:16; unsigned mult:2; unsigned maxburst:5; u8 address; - const struct usb_endpoint_descriptor *desc; - const struct usb_ss_ep_comp_descriptor *comp_desc; + u16 maxpacket; + u16 maxpacket_limit; + u16 max_streams; }; /*-------------------------------------------------------------------------*/ -- 2.34.1 . Return-Path: From: Jisheng Zhang To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 0/2] riscv: select ARCH_USE_SYM_ANNOTATIONS Date: Wed, 10 Jul 2024 00:05:20 +0800 Message-ID: <20240709160536.3690-1-jszhang@kernel.org> MIME-Version: 1.0 X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79534 org.kernel.vger.linux-kernel:1272377 Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Y29tbWl0IDc2MzI5YzY5MzkyNCAoInJpc2N2OiBVc2UgU1lNXyooKSBhc3NlbWJseSBtYWNyb3Mg aW5zdGVhZApvZiBkZXByZWNhdGVkIG9uZXMiKSwgbW9zdCByaXNjdiBoYXMgYmVlbiB0byBjb252 ZXJ0ZWQgdGhlIG5ldyBzdHlsZQpTWU1fIGFzc2VtYmxlciBhbm5vdGF0aW9ucy4gVGhlIHJlbWFp bmluZyBvbmUgaXMgc2lmaXZlJ3MKZXJyYXRhX2NpcF80NTMuUywgc28gY29udmVydCB0byBuZXcg c3R5bGUgU1lNXyBhbm5vdGF0aW9ucyBhcyB3ZWxsLgpBZnRlciB0aGF0IHNlbGVjdCBBUkNIX1VT RV9TWU1fQU5OT1RBVElPTlMuCgoKU2luY2UgdjE6CiAgLSBhZGQgbmV3IHBhdGNoIHRvIGNvbnZl cnQgc2lmaXZlJ3MgZXJyYXRhX2NpcF80NTMuUywgdGhhbmsgQ2zDqW1lbnQKICAtIHVwZGF0ZSBw YXRjaDIgY29tbWl0IG1zZwoKSmlzaGVuZyBaaGFuZyAoMik6CiAgcmlzY3Y6IGVycmF0YTogc2lm aXZlOiBVc2UgU1lNXyooKSBhc3NlbWJseSBtYWNyb3MKICByaXNjdjogc2VsZWN0IEFSQ0hfVVNF X1NZTV9BTk5PVEFUSU9OUwoKIGFyY2gvcmlzY3YvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICAgIHwgMSArCiBhcmNoL3Jpc2N2L2VycmF0YS9zaWZpdmUvZXJyYXRhX2NpcF80NTMuUyB8IDgg KysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKLS0gCjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cmlzY3YK . Date: Tue, 9 Jul 2024 09:00:13 -0700 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709160013.634308-1-tadamsjr@google.com> Subject: [PATCH] scsi: pm80xx: Remove msleep() loop from pm8001_dev_gone_notify() From: TJ Adams To: Jack Wang , "James E . J . Bottomley" , "Martin K . Petersen" Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Igor Pylypiv , TJ Adams Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272381 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Igor Pylypiv It's possible to end up in a state where pm8001_dev->running_req never reaches zero. In that state we will be sleeping forever. sas_execute_internal_abort_dev() can wait for a response for up to 60 seconds (3 retries x 20 seconds). 60 seconds should be enough for pm8001_dev->running_req to get to zero. Signed-off-by: Igor Pylypiv Signed-off-by: TJ Adams --- drivers/scsi/pm8001/pm8001_sas.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c index a5a31dfa4512..513e9a49838c 100644 --- a/drivers/scsi/pm8001/pm8001_sas.c +++ b/drivers/scsi/pm8001/pm8001_sas.c @@ -712,8 +712,11 @@ static void pm8001_dev_gone_notify(struct domain_device *dev) if (atomic_read(&pm8001_dev->running_req)) { spin_unlock_irqrestore(&pm8001_ha->lock, flags); sas_execute_internal_abort_dev(dev, 0, NULL); - while (atomic_read(&pm8001_dev->running_req)) - msleep(20); + if (atomic_read(&pm8001_dev->running_req)) { + pm8001_dbg(pm8001_ha, FAIL, + "device_id: %u: Failed to abort %d requests!\n", + device_id, atomic_read(&pm8001_dev->running_req)); + } spin_lock_irqsave(&pm8001_ha->lock, flags); } PM8001_CHIP_DISP->dereg_dev_req(pm8001_ha, device_id); -- 2.45.2.803.g4e1b14247a-goog . From: Miguel Ojeda To: Miguel Ojeda , Wedson Almeida Filho , Alex Gaynor Cc: Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, patches@lists.linux.dev, linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org, workflows@vger.kernel.org Subject: [PATCH v2 00/13] Support several Rust toolchain versions Date: Tue, 9 Jul 2024 18:05:55 +0200 Message-ID: <20240709160615.998336-1-ojeda@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272384 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.patches,org.kernel.vger.linux-doc,org.kernel.vger.linux-kbuild,org.kernel.vger.rust-for-linux,org.kernel.vger.workflows Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi all, A few things improved here and there, and rebased on top of `rust-next`. The changelog is attached to each patch. I kept the `Tested-by`s since most of the changes are on documentation or comments, though I did remove them on the patch that changed the most just in case (even for that one, I think Benno's and Andreas' setup would not have made a difference). I plan to put this series into `rust-next` very soon so that it goes into the merge window. Previous cover letter: v1: https://lore.kernel.org/rust-for-linux/20240701183625.665574-1-ojeda@kernel.org/ Thanks! Cheers, Miguel Miguel Ojeda (13): rust: macros: indent list item in `paste!`'s docs rust: init: simplify from `map_err` to `inspect_err` rust: allow `dead_code` for never constructed bindings rust: relax most deny-level lints to warnings rust: simplify Clippy warning flags set rust: start supporting several compiler versions rust: avoid assuming a particular `bindgen` build rust: work around `bindgen` 0.69.0 issue rust: start supporting several `bindgen` versions rust: warn about `bindgen` versions 0.66.0 and 0.66.1 kbuild: rust: add `rustc-version` support rust: support the new `-Zub-checks` flag docs: rust: quick-start: add section on Linux distributions Documentation/process/changes.rst | 9 +- Documentation/rust/quick-start.rst | 136 +++++++++++++++++------ Makefile | 31 +++--- init/Kconfig | 11 +- lib/Kconfig.debug | 18 +++ rust/Makefile | 4 +- rust/bindings/lib.rs | 1 + rust/kernel/init.rs | 13 +-- rust/macros/lib.rs | 2 +- rust/uapi/lib.rs | 1 + scripts/Kconfig.include | 6 + scripts/Makefile.compiler | 4 + scripts/rust_is_available.sh | 33 +++--- scripts/rust_is_available_bindgen_0_66.h | 2 + scripts/rust_is_available_test.py | 59 ++++++---- scripts/rustc-version.sh | 52 +++++++++ 16 files changed, 274 insertions(+), 108 deletions(-) create mode 100644 scripts/rust_is_available_bindgen_0_66.h create mode 100755 scripts/rustc-version.sh base-commit: fc6e66f4696b63b8a2645a2bcea407cb04bd0666 -- 2.45.2 . From: Depeng Shao To: , , , , , , CC: , , , , , , Subject: [PATCH V3 00/13] media: qcom: camss: Add sm8550 support Date: Tue, 9 Jul 2024 21:36:43 +0530 Message-ID: <20240709160656.31146-1-quic_depengs@quicinc.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272400 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-media Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail V3: - Rebased the change based on below change which will be merged firstly. "Move camss version related defs in to resources" Link: https://lore.kernel.org/all/20240522154659.510-1-quic_grosikop@quicinc.com/ - Rebased the change based on Bryan's csiphy optimization change and add these changes into this series, so that the new csiphy-3ph driver don't need to add duplicate code. This has got Bryan's permission to add his patches into this series. - Refactor some changes based on the comments to move the random code to patches where they are used. - Remove the vfe780 irq function since it isn't doing the actual work. - Add dt-binding for sm8550 camss driver. Link to V2: https://lore.kernel.org/all/20240320141136.26827-1-quic_depengs@quicinc.com/ V2: - Update some commit messages Link to V1: https://lore.kernel.org/all/20240320134227.16587-1-quic_depengs@quicinc.com/ V1: SM8550 is a Qualcomm flagship SoC. This series adds support to bring up the CSIPHY, CSID, VFE/RDI interfaces in SM8550. SM8550 provides - 3 x VFE, 3 RDI per VFE - 2 x VFE Lite, 4 RDI per VFE - 3 x CSID - 2 x CSID Lite - 8 x CSI PHY This series is rebased based on: "Move camss version related defs in to resources" Link: https://lore.kernel.org/all/20240522154659.510-1-quic_grosikop@quicinc.com/ Bryan O'Donoghue (6): media: qcom: camss: csiphy-3ph: Fix trivial indentation fault in defines media: qcom: camss: csiphy-3ph: Remove redundant PHY init sequence control loop media: qcom: camss: csiphy-3ph: Rename struct media: qcom: camss: csiphy: Add an init callback to CSI PHY devices media: qcom: camss: csiphy-3ph: Move CSIPHY variables to data field inside csiphy struct media: qcom: camss: csiphy-3ph: Use an offset variable to find common control regs Depeng Shao (7): dt-bindings: media: camss: Add qcom,sm8550-camss binding media: qcom: camss: csiphy-3ph: Add Gen2 v1.2 two-phase MIPI CSI-2 DPHY init media: qcom: camss: Add CSID Gen3 support for SM8550 media: qcom: camss: Add support for VFE hardware version Titan 780 media: qcom: camss: Add notify interface in camss driver media: qcom: camss: Add sm8550 support media: qcom: camss: Add sm8550 resources .../bindings/media/qcom,sm8550-camss.yaml | 545 ++++++++++++ drivers/media/platform/qcom/camss/Makefile | 2 + .../platform/qcom/camss/camss-csid-gen3.c | 483 +++++++++++ .../platform/qcom/camss/camss-csid-gen3.h | 26 + .../media/platform/qcom/camss/camss-csid.c | 21 + .../media/platform/qcom/camss/camss-csid.h | 11 + .../qcom/camss/camss-csiphy-2ph-1-0.c | 6 + .../qcom/camss/camss-csiphy-3ph-1-0.c | 796 ++++++++++-------- .../media/platform/qcom/camss/camss-csiphy.c | 4 + .../media/platform/qcom/camss/camss-csiphy.h | 2 + .../media/platform/qcom/camss/camss-vfe-780.c | 429 ++++++++++ drivers/media/platform/qcom/camss/camss-vfe.c | 6 + drivers/media/platform/qcom/camss/camss-vfe.h | 2 + drivers/media/platform/qcom/camss/camss.c | 462 ++++++++++ drivers/media/platform/qcom/camss/camss.h | 10 + 15 files changed, 2467 insertions(+), 338 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8550-camss.yaml create mode 100644 drivers/media/platform/qcom/camss/camss-csid-gen3.c create mode 100644 drivers/media/platform/qcom/camss/camss-csid-gen3.h create mode 100644 drivers/media/platform/qcom/camss/camss-vfe-780.c base-commit: 0c52056d9f77508cb6d4d68d3fc91c6c08ec71af prerequisite-patch-id: 74fabfbf51d650af74a1dc9f7e09fe03a1d85d93 prerequisite-patch-id: 3833c5eed2690679e5eca3551053e08350d2b070 prerequisite-patch-id: 0e433e0c5a9d2402da97c1a01194b1a9f6f7e6cb prerequisite-patch-id: f876f5ed5605fcfebea7f1584888f494bfecd102 prerequisite-patch-id: 8bcb15b208a319a6e88ff4f9e5023097af92cc90 prerequisite-patch-id: dc4b5ddbbedd8773159694b3becad5c7dcbfcf77 prerequisite-patch-id: 75c1b00f4476ee6006041046ad5194b086db3358 prerequisite-patch-id: 0efc004cb8a844291ebe1f16ce192567f44218c7 -- 2.34.1 . From: Benjamin Gaignard To: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, hverkuil-cisco@xs4all.nl Cc: linux-media@vger.kernel.or, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, Benjamin Gaignard Subject: [PATCH v3 0/2] Enumerate all pixels formats Date: Tue, 9 Jul 2024 18:17:08 +0200 Message-ID: <20240709161710.83109-1-benjamin.gaignard@collabora.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272422 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-rockchip Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The goal of this series is to let userland applications enumerate all the supported pixels formats of a stateless decoder without setting all the possible codec-dependent control. That offer a simplest solution for applications to discover supported pixels formats and possibly let them doing smarter choice between stateless decoders. An example of how it can be used in GStreamer to discover the supported pixels formats for stateless decoder is available here: https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/commits/v4l2codecs_enum_all_supported_formats?ref_type=heads changes in version 3: - Add a flag to inform userspace application that driver as take care of the flag. changes in version 2: - Clarify documentation. - Only keep V4L2_FMT_FLAG_ALL_FORMATS flag in ioctl. Benjamin Benjamin Gaignard (2): media: videodev2: Add flags to unconditionnaly enumerate pixels formats media: verisilicon: Use V4L2_FMT_FLAG_ENUM_ALL_FORMATS flag .../media/v4l/dev-stateless-decoder.rst | 6 ++++++ .../userspace-api/media/v4l/vidioc-enum-fmt.rst | 10 ++++++++++ .../media/videodev2.h.rst.exceptions | 2 ++ drivers/media/platform/verisilicon/hantro_v4l2.c | 16 +++++++++++++--- drivers/media/v4l2-core/v4l2-ioctl.c | 3 +++ include/uapi/linux/videodev2.h | 2 ++ 6 files changed, 36 insertions(+), 3 deletions(-) -- 2.43.0 . From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Tejun Heo , Jan Engelhardt , Linus Torvalds , Sasha Levin Subject: [PATCH AUTOSEL 6.9 01/40] workqueue: Refactor worker ID formatting and make wq_worker_comm() use full ID string Date: Tue, 9 Jul 2024 12:18:41 -0400 Message-ID: <20240709162007.30160-1-sashal@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.9.8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272429 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Tejun Heo [ Upstream commit 2a1b02bcba78f8498ab00d6142e1238d85b01591 ] Currently, worker ID formatting is open coded in create_worker(), init_rescuer() and worker_thread() (for %WORKER_DIE case). The formatted ID is saved into task->comm and wq_worker_comm() uses it as the base name to append extra information to when generating the name to be shown to userspace. However, TASK_COMM_LEN is only 16 leading to badly truncated names for rescuers. For example, the rescuer for the inet_frag_wq workqueue becomes: $ ps -ef | grep '[k]worker/R-inet' root 483 2 0 Apr26 ? 00:00:00 [kworker/R-inet_] Even for non-rescue workers, it's easy to run over 15 characters on moderately large machines. Fit it by consolidating worker ID formatting into a new helper format_worker_id() and calling it from wq_worker_comm() to obtain the untruncated worker ID string. $ ps -ef | grep '[k]worker/R-inet' root 60 2 0 12:10 ? 00:00:00 [kworker/R-inet_frag_wq] Signed-off-by: Tejun Heo Reported-and-tested-by: Jan Engelhardt Suggested-by: Linus Torvalds Signed-off-by: Sasha Levin --- kernel/workqueue.c | 51 ++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index d2dbe099286b9..7634fc32ee05a 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -124,6 +124,7 @@ enum wq_internal_consts { HIGHPRI_NICE_LEVEL = MIN_NICE, WQ_NAME_LEN = 32, + WORKER_ID_LEN = 10 + WQ_NAME_LEN, /* "kworker/R-" + WQ_NAME_LEN */ }; /* @@ -2778,6 +2779,26 @@ static void worker_detach_from_pool(struct worker *worker) complete(detach_completion); } +static int format_worker_id(char *buf, size_t size, struct worker *worker, + struct worker_pool *pool) +{ + if (worker->rescue_wq) + return scnprintf(buf, size, "kworker/R-%s", + worker->rescue_wq->name); + + if (pool) { + if (pool->cpu >= 0) + return scnprintf(buf, size, "kworker/%d:%d%s", + pool->cpu, worker->id, + pool->attrs->nice < 0 ? "H" : ""); + else + return scnprintf(buf, size, "kworker/u%d:%d", + pool->id, worker->id); + } else { + return scnprintf(buf, size, "kworker/dying"); + } +} + /** * create_worker - create a new workqueue worker * @pool: pool the new worker will belong to @@ -2794,7 +2815,6 @@ static struct worker *create_worker(struct worker_pool *pool) { struct worker *worker; int id; - char id_buf[23]; /* ID is needed to determine kthread name */ id = ida_alloc(&pool->worker_ida, GFP_KERNEL); @@ -2813,17 +2833,14 @@ static struct worker *create_worker(struct worker_pool *pool) worker->id = id; if (!(pool->flags & POOL_BH)) { - if (pool->cpu >= 0) - snprintf(id_buf, sizeof(id_buf), "%d:%d%s", pool->cpu, id, - pool->attrs->nice < 0 ? "H" : ""); - else - snprintf(id_buf, sizeof(id_buf), "u%d:%d", pool->id, id); + char id_buf[WORKER_ID_LEN]; + format_worker_id(id_buf, sizeof(id_buf), worker, pool); worker->task = kthread_create_on_node(worker_thread, worker, - pool->node, "kworker/%s", id_buf); + pool->node, "%s", id_buf); if (IS_ERR(worker->task)) { if (PTR_ERR(worker->task) == -EINTR) { - pr_err("workqueue: Interrupted when creating a worker thread \"kworker/%s\"\n", + pr_err("workqueue: Interrupted when creating a worker thread \"%s\"\n", id_buf); } else { pr_err_once("workqueue: Failed to create a worker thread: %pe", @@ -3386,7 +3403,6 @@ static int worker_thread(void *__worker) raw_spin_unlock_irq(&pool->lock); set_pf_worker(false); - set_task_comm(worker->task, "kworker/dying"); ida_free(&pool->worker_ida, worker->id); worker_detach_from_pool(worker); WARN_ON_ONCE(!list_empty(&worker->entry)); @@ -5430,6 +5446,7 @@ static int wq_clamp_max_active(int max_active, unsigned int flags, static int init_rescuer(struct workqueue_struct *wq) { struct worker *rescuer; + char id_buf[WORKER_ID_LEN]; int ret; if (!(wq->flags & WQ_MEM_RECLAIM)) @@ -5443,7 +5460,9 @@ static int init_rescuer(struct workqueue_struct *wq) } rescuer->rescue_wq = wq; - rescuer->task = kthread_create(rescuer_thread, rescuer, "kworker/R-%s", wq->name); + format_worker_id(id_buf, sizeof(id_buf), rescuer, NULL); + + rescuer->task = kthread_create(rescuer_thread, rescuer, "%s", id_buf); if (IS_ERR(rescuer->task)) { ret = PTR_ERR(rescuer->task); pr_err("workqueue: Failed to create a rescuer kthread for wq \"%s\": %pe", @@ -6272,19 +6291,15 @@ void show_freezable_workqueues(void) /* used to show worker information through /proc/PID/{comm,stat,status} */ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) { - int off; - - /* always show the actual comm */ - off = strscpy(buf, task->comm, size); - if (off < 0) - return; - /* stabilize PF_WQ_WORKER and worker pool association */ mutex_lock(&wq_pool_attach_mutex); if (task->flags & PF_WQ_WORKER) { struct worker *worker = kthread_data(task); struct worker_pool *pool = worker->pool; + int off; + + off = format_worker_id(buf, size, worker, pool); if (pool) { raw_spin_lock_irq(&pool->lock); @@ -6303,6 +6318,8 @@ void wq_worker_comm(char *buf, size_t size, struct task_struct *task) } raw_spin_unlock_irq(&pool->lock); } + } else { + strscpy(buf, task->comm, size); } mutex_unlock(&wq_pool_attach_mutex); -- 2.43.0 . From: Rayyan Ansari To: devicetree@vger.kernel.org Cc: Rayyan Ansari , Bjorn Andersson , Conor Dooley , Krzysztof Kozlowski , Linus Walleij , linux-arm-msm@vger.kernel.org, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring Subject: [PATCH 0/4] dt-bindings: pinctrl: convert remaining qcom bindings to yaml Date: Tue, 9 Jul 2024 17:17:52 +0100 Message-ID: <20240709162009.5166-1-rayyan.ansari@linaro.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272439 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-gpio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi, The following patches convert all remaining old text bindings for Qualcomm pinctrl to yaml, so device trees can be validated against the schema. Thanks, Rayyan Rayyan Ansari (4): dt-bindings: pinctrl: qcom,apq8064-pinctrl: convert to dtschema dt-bindings: pinctrl: qcom,ipq8064-pinctrl: convert to dtschema dt-bindings: pinctrl: qcom,ipq4019-pinctrl: convert to dtschema dt-bindings: pinctrl: qcom,apq8084-pinctrl: convert to dtschema .../bindings/pinctrl/qcom,apq8064-pinctrl.txt | 95 --------- .../pinctrl/qcom,apq8064-pinctrl.yaml | 110 ++++++++++ .../bindings/pinctrl/qcom,apq8084-pinctrl.txt | 188 ------------------ .../pinctrl/qcom,apq8084-pinctrl.yaml | 129 ++++++++++++ .../bindings/pinctrl/qcom,ipq4019-pinctrl.txt | 85 -------- .../pinctrl/qcom,ipq4019-pinctrl.yaml | 102 ++++++++++ .../bindings/pinctrl/qcom,ipq8064-pinctrl.txt | 101 ---------- .../pinctrl/qcom,ipq8064-pinctrl.yaml | 108 ++++++++++ 8 files changed, 449 insertions(+), 469 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.yaml delete mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,apq8084-pinctrl.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,apq8084-pinctrl.yaml delete mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.yaml delete mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.yaml -- 2.45.2 . From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jonathan Denose , Dmitry Torokhov , Sasha Levin , jefferymiller@google.com, linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 6.6 01/33] Input: elantech - fix touchpad state on resume for Lenovo N24 Date: Tue, 9 Jul 2024 12:21:27 -0400 Message-ID: <20240709162224.31148-1-sashal@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.6.38 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272470 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Jonathan Denose [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ] The Lenovo N24 on resume becomes stuck in a state where it sends incorrect packets, causing elantech_packet_check_v4 to fail. The only way for the device to resume sending the correct packets is for it to be disabled and then re-enabled. This change adds a dmi check to trigger this behavior on resume. Signed-off-by: Jonathan Denose Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/mouse/elantech.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 4e38229404b4b..b4723ea395eb9 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -1476,16 +1476,47 @@ static void elantech_disconnect(struct psmouse *psmouse) psmouse->private = NULL; } +/* + * Some hw_version 4 models fail to properly activate absolute mode on + * resume without going through disable/enable cycle. + */ +static const struct dmi_system_id elantech_needs_reenable[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Lenovo N24 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "81AF"), + }, + }, +#endif + { } +}; + /* * Put the touchpad back into absolute mode when reconnecting */ static int elantech_reconnect(struct psmouse *psmouse) { + int err; + psmouse_reset(psmouse); if (elantech_detect(psmouse, 0)) return -1; + if (dmi_check_system(elantech_needs_reenable)) { + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); + if (err) + psmouse_warn(psmouse, "failed to deactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); + if (err) + psmouse_warn(psmouse, "failed to reactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + } + if (elantech_set_absolute_mode(psmouse)) { psmouse_err(psmouse, "failed to put touchpad back into absolute mode.\n"); -- 2.43.0 . From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jonathan Denose , Dmitry Torokhov , Sasha Levin , jefferymiller@google.com, linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 6.1 01/27] Input: elantech - fix touchpad state on resume for Lenovo N24 Date: Tue, 9 Jul 2024 12:23:15 -0400 Message-ID: <20240709162401.31946-1-sashal@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.1.97 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272499 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Jonathan Denose [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ] The Lenovo N24 on resume becomes stuck in a state where it sends incorrect packets, causing elantech_packet_check_v4 to fail. The only way for the device to resume sending the correct packets is for it to be disabled and then re-enabled. This change adds a dmi check to trigger this behavior on resume. Signed-off-by: Jonathan Denose Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/mouse/elantech.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 4e38229404b4b..b4723ea395eb9 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -1476,16 +1476,47 @@ static void elantech_disconnect(struct psmouse *psmouse) psmouse->private = NULL; } +/* + * Some hw_version 4 models fail to properly activate absolute mode on + * resume without going through disable/enable cycle. + */ +static const struct dmi_system_id elantech_needs_reenable[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Lenovo N24 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "81AF"), + }, + }, +#endif + { } +}; + /* * Put the touchpad back into absolute mode when reconnecting */ static int elantech_reconnect(struct psmouse *psmouse) { + int err; + psmouse_reset(psmouse); if (elantech_detect(psmouse, 0)) return -1; + if (dmi_check_system(elantech_needs_reenable)) { + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); + if (err) + psmouse_warn(psmouse, "failed to deactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); + if (err) + psmouse_warn(psmouse, "failed to reactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + } + if (elantech_set_absolute_mode(psmouse)) { psmouse_err(psmouse, "failed to put touchpad back into absolute mode.\n"); -- 2.43.0 . From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jonathan Denose , Dmitry Torokhov , Sasha Levin , jefferymiller@google.com, linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 5.10 01/14] Input: elantech - fix touchpad state on resume for Lenovo N24 Date: Tue, 9 Jul 2024 12:25:45 -0400 Message-ID: <20240709162612.32988-1-sashal@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 5.10.221 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272540 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Jonathan Denose [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ] The Lenovo N24 on resume becomes stuck in a state where it sends incorrect packets, causing elantech_packet_check_v4 to fail. The only way for the device to resume sending the correct packets is for it to be disabled and then re-enabled. This change adds a dmi check to trigger this behavior on resume. Signed-off-by: Jonathan Denose Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/mouse/elantech.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 400281feb4e8d..8246662fa60b7 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -1476,16 +1476,47 @@ static void elantech_disconnect(struct psmouse *psmouse) psmouse->private = NULL; } +/* + * Some hw_version 4 models fail to properly activate absolute mode on + * resume without going through disable/enable cycle. + */ +static const struct dmi_system_id elantech_needs_reenable[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Lenovo N24 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "81AF"), + }, + }, +#endif + { } +}; + /* * Put the touchpad back into absolute mode when reconnecting */ static int elantech_reconnect(struct psmouse *psmouse) { + int err; + psmouse_reset(psmouse); if (elantech_detect(psmouse, 0)) return -1; + if (dmi_check_system(elantech_needs_reenable)) { + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); + if (err) + psmouse_warn(psmouse, "failed to deactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); + if (err) + psmouse_warn(psmouse, "failed to reactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + } + if (elantech_set_absolute_mode(psmouse)) { psmouse_err(psmouse, "failed to put touchpad back into absolute mode.\n"); -- 2.43.0 . From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jonathan Denose , Dmitry Torokhov , Sasha Levin , jefferymiller@google.com, linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 5.4 01/11] Input: elantech - fix touchpad state on resume for Lenovo N24 Date: Tue, 9 Jul 2024 12:26:34 -0400 Message-ID: <20240709162654.33343-1-sashal@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 5.4.279 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272555 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Jonathan Denose [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ] The Lenovo N24 on resume becomes stuck in a state where it sends incorrect packets, causing elantech_packet_check_v4 to fail. The only way for the device to resume sending the correct packets is for it to be disabled and then re-enabled. This change adds a dmi check to trigger this behavior on resume. Signed-off-by: Jonathan Denose Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/mouse/elantech.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 9ff89bfda7a24..8e286e023916f 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -1476,16 +1476,47 @@ static void elantech_disconnect(struct psmouse *psmouse) psmouse->private = NULL; } +/* + * Some hw_version 4 models fail to properly activate absolute mode on + * resume without going through disable/enable cycle. + */ +static const struct dmi_system_id elantech_needs_reenable[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Lenovo N24 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "81AF"), + }, + }, +#endif + { } +}; + /* * Put the touchpad back into absolute mode when reconnecting */ static int elantech_reconnect(struct psmouse *psmouse) { + int err; + psmouse_reset(psmouse); if (elantech_detect(psmouse, 0)) return -1; + if (dmi_check_system(elantech_needs_reenable)) { + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); + if (err) + psmouse_warn(psmouse, "failed to deactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); + if (err) + psmouse_warn(psmouse, "failed to reactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + } + if (elantech_set_absolute_mode(psmouse)) { psmouse_err(psmouse, "failed to put touchpad back into absolute mode.\n"); -- 2.43.0 . From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Jonathan Denose , Dmitry Torokhov , Sasha Levin , jefferymiller@google.com, linux-input@vger.kernel.org Subject: [PATCH AUTOSEL 4.19 1/7] Input: elantech - fix touchpad state on resume for Lenovo N24 Date: Tue, 9 Jul 2024 12:27:12 -0400 Message-ID: <20240709162726.33610-1-sashal@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 4.19.317 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272564 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Jonathan Denose [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ] The Lenovo N24 on resume becomes stuck in a state where it sends incorrect packets, causing elantech_packet_check_v4 to fail. The only way for the device to resume sending the correct packets is for it to be disabled and then re-enabled. This change adds a dmi check to trigger this behavior on resume. Signed-off-by: Jonathan Denose Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid Signed-off-by: Dmitry Torokhov Signed-off-by: Sasha Levin --- drivers/input/mouse/elantech.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 6759cab82a723..6f747c59cd652 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -1527,16 +1527,47 @@ static void elantech_disconnect(struct psmouse *psmouse) psmouse->private = NULL; } +/* + * Some hw_version 4 models fail to properly activate absolute mode on + * resume without going through disable/enable cycle. + */ +static const struct dmi_system_id elantech_needs_reenable[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + /* Lenovo N24 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "81AF"), + }, + }, +#endif + { } +}; + /* * Put the touchpad back into absolute mode when reconnecting */ static int elantech_reconnect(struct psmouse *psmouse) { + int err; + psmouse_reset(psmouse); if (elantech_detect(psmouse, 0)) return -1; + if (dmi_check_system(elantech_needs_reenable)) { + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE); + if (err) + psmouse_warn(psmouse, "failed to deactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + + err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE); + if (err) + psmouse_warn(psmouse, "failed to reactivate mouse on %s: %d\n", + psmouse->ps2dev.serio->phys, err); + } + if (elantech_set_absolute_mode(psmouse)) { psmouse_err(psmouse, "failed to put touchpad back into absolute mode.\n"); -- 2.43.0 . From: David Vernet To: linux-kernel@vger.kernel.org Cc: ericvh@kernel.org, lucho@ionkov.net, asmadeus@codewreck.org, linux_oss@crudebyte.com, v9fs@lists.linux.dev, kernel-team@meta.com Subject: [PATCH] net/9p: Fix uaf / refcnt underflow for req object in virtio Date: Tue, 9 Jul 2024 11:29:04 -0500 Message-ID: <20240709162904.226952-1-void@manifault.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272570 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.v9fs Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail We can currently encounter an underflow when freeing an rpc request object when using a virtio 9p transport, as shown by stress-ng: $ stress-ng --exec 1 -t 1 ... [ 5.188359] ------------[ cut here ]------------ [ 5.211094] refcount_t: underflow; use-after-free. [ 5.230781] WARNING: CPU: 6 PID: 557 at lib/refcount.c:28 refcount_warn_saturate+0xb4/0x140 [ 5.247551] Modules linked in: [ 5.258476] CPU: 6 PID: 557 Comm: stress-ng-exec- Not tainted 6.10.0-rc2-virtme #26 [ 5.276072] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 04/01/2014 [ 5.294310] RIP: 0010:refcount_warn_saturate+0xb4/0x140 [ 5.313818] Code: ff 90 0f 0b 90 90 e9 16 07 91 00 cc 80 3d f9 14 83 01 00 75 90 c6 05 f0 14 83 01 01 90 48 c7 c7 97 ad 48 84 e8 5d d2 b5 ff 90 <0f> 0b 90 90 e9 ee 06 91 00 cc 80 3d ce 14 83 01 00 0f 85 64 ff ff [ 5.342462] RSP: 0018:ffffa9ac80a47a28 EFLAGS: 00010246 [ 5.345307] RAX: b2786dec9d38b800 RBX: ffff9b67e704eaa8 RCX: ffffffff84c6e950 [ 5.361743] RDX: 0000000000000002 RSI: 0000000100005ceb RDI: ffffffff84c9ed60 [ 5.384172] RBP: 0000000000000000 R08: 0000000000001ceb R09: ffffffff84c6ed60 [ 5.408242] R10: 00000000000056c1 R11: 0000000000000003 R12: 00000000fffffe00 [ 5.425085] R13: ffffffff8452db57 R14: ffff9b67cb3b2f00 R15: ffff9b67c4e33ec0 [ 5.444305] FS: 00007fb7ba9e16c0(0000) GS:ffff9b67fe780000(0000) knlGS:0000000000000000 [ 5.464612] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 5.481423] CR2: 00007fffcdf76fe8 CR3: 000000000c142000 CR4: 0000000000750ef0 [ 5.498275] PKRU: 55555554 [ 5.502138] Call Trace: [ 5.505372] [ 5.507353] ? __warn+0xc9/0x1c0 [ 5.511056] ? refcount_warn_saturate+0xb4/0x140 [ 5.520082] ? report_bug+0x148/0x1e0 [ 5.531777] ? handle_bug+0x3e/0x70 [ 5.543371] ? exc_invalid_op+0x1a/0x50 [ 5.557119] ? asm_exc_invalid_op+0x1a/0x20 [ 5.564184] ? refcount_warn_saturate+0xb4/0x140 [ 5.576789] ? refcount_warn_saturate+0xb3/0x140 [ 5.589334] p9_req_put+0x9e/0xf0 [ 5.598119] p9_client_zc_rpc+0x3ac/0x460 [ 5.611438] ? wake_page_function+0x41/0xa0 [ 5.620745] ? __wake_up_locked_key+0x3f/0x70 [ 5.631290] p9_client_read_once+0xd8/0x2d0 [ 5.644251] p9_client_read+0x3e/0x70 [ 5.655285] v9fs_issue_read+0x47/0x90 [ 5.668043] netfs_begin_read+0x3f2/0x880 [ 5.673140] ? srso_alias_return_thunk+0x5/0xfbef5 [ 5.676800] ? netfs_alloc_request+0x21a/0x2b0 [ 5.679999] netfs_read_folio+0xde/0x380 [ 5.685441] ? srso_alias_return_thunk+0x5/0xfbef5 [ 5.695729] ? __filemap_get_folio+0x158/0x2a0 [ 5.713327] filemap_read_folio+0x1f/0x70 [ 5.726596] filemap_fault+0x28d/0x510 [ 5.737644] __do_fault+0x42/0xb0 [ 5.747996] handle_mm_fault+0x59c/0x13a0 [ 5.759156] ? srso_alias_return_thunk+0x5/0xfbef5 [ 5.776631] ? mt_find+0x2da/0x400 [ 5.785758] do_user_addr_fault+0x1fd/0x790 [ 5.800640] ? srso_alias_return_thunk+0x5/0xfbef5 [ 5.813852] exc_page_fault+0x68/0x180 [ 5.822403] asm_exc_page_fault+0x26/0x30 [ 5.933431] [ 5.941515] ---[ end trace 0000000000000000 ]--- The sequence that causes this underflow is as follows: 1. The virtio transport returns -ERESTARTSYS from p9_virtio_zc_request() due to virtqueue_add_sgs() returning -ENOSPC, and wait_event_killable() eventually returning -ERESTARTSYS. 2. The request is never kicked, so its reference is dropped at the end of p9_virtio_zc_request(). This is the first of the two available references. 3. In p9_client_zc_rpc(), the client is still connected, so we call p9_client_flush() which drops the second and final reference in the callback to p9_virtio_cancelled(). 4. We reference the req object below in p9_virtio_zc_request(), and then hit a refcnt underflow when we again try to drop a reference in the reterr path. Let's fix this by only dropping that reference if we're not exiting due to -ERESTARTSYS, as the assumption is that the reference will instead be dropped later when we flush the request. Signed-off-by: David Vernet --- **NOTE**: I'm not 100% sure that this is correct or the proper way to fix this. If we get an -ENOSPC error when issuing the flush request on the regular p9_client_rpc() path taken by p9_client_flush(), then we won't hit the c->trans_mod->cancelled() (i.e. p9_virtio_cancelled()) path when we would have otherwise freed this request, so this may end up leaking the request on that path. Also not sure if this needs a Fixes tag, as it seems like a bug that's been around for a very long time. net/9p/trans_virtio.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c index 0b8086f58ad5..944f64bf72fe 100644 --- a/net/9p/trans_virtio.c +++ b/net/9p/trans_virtio.c @@ -556,8 +556,11 @@ p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req, } kvfree(in_pages); kvfree(out_pages); - if (!kicked) { - /* reply won't come */ + if (!kicked && err != -ERESTARTSYS) { + /* Reply won't come, so drop the refcnt here. If we're failing + * with -ERESTARTSYS, the refcnt will be dropped when we flush + * the request. + */ p9_req_put(client, req); } return err; -- 2.45.2 . Date: Tue, 9 Jul 2024 16:30:53 +0000 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709163053.2514760-1-fvdl@google.com> Subject: [PATCH] mm/cma: export total and free number of pages for CMA areas From: Frank van der Linden To: linux-mm@kvack.org, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, Frank van der Linden Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272577 org.kvack.linux-mm:203123 Newsgroups: org.kernel.vger.linux-kernel,org.kvack.linux-mm Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In addition to the number of allocations and releases, system management software may like to be aware of the size of CMA areas, and how many pages are available in it. This information is currently not available, so export it in total_page and available_pages, respectively. The name 'available_pages' was picked over 'free_pages' because 'free' implies that the pages are unused. But they might not be, they just haven't been used by cma_alloc The number of available pages is tracked regardless of CONFIG_CMA_SYSFS, allowing for a few minor shortcuts in the code, avoiding bitmap operations. Signed-off-by: Frank van der Linden --- Documentation/ABI/testing/sysfs-kernel-mm-cma | 13 ++++++++++++ mm/cma.c | 18 +++++++++++------ mm/cma.h | 1 + mm/cma_debug.c | 5 +---- mm/cma_sysfs.c | 20 +++++++++++++++++++ 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-kernel-mm-cma b/Documentation/ABI/testing/sysfs-kernel-mm-cma index dfd755201142..aaf2a5d8b13b 100644 --- a/Documentation/ABI/testing/sysfs-kernel-mm-cma +++ b/Documentation/ABI/testing/sysfs-kernel-mm-cma @@ -29,3 +29,16 @@ Date: Feb 2024 Contact: Anshuman Khandual Description: the number of pages CMA API succeeded to release + +What: /sys/kernel/mm/cma//total_pages +Date: Jun 2024 +Contact: Frank van der Linden +Description: + The size of the CMA area in pages. + +What: /sys/kernel/mm/cma//available_pages +Date: Jun 2024 +Contact: Frank van der Linden +Description: + The number of pages in the CMA area that are still + available for CMA allocation. diff --git a/mm/cma.c b/mm/cma.c index 3e9724716bad..727e8c04d53a 100644 --- a/mm/cma.c +++ b/mm/cma.c @@ -86,6 +86,7 @@ static void cma_clear_bitmap(struct cma *cma, unsigned long pfn, spin_lock_irqsave(&cma->lock, flags); bitmap_clear(cma->bitmap, bitmap_no, bitmap_count); + cma->available_count += count; spin_unlock_irqrestore(&cma->lock, flags); } @@ -133,7 +134,7 @@ static void __init cma_activate_area(struct cma *cma) free_reserved_page(pfn_to_page(pfn)); } totalcma_pages -= cma->count; - cma->count = 0; + cma->available_count = cma->count = 0; pr_err("CMA area %s could not be activated\n", cma->name); return; } @@ -198,7 +199,7 @@ int __init cma_init_reserved_mem(phys_addr_t base, phys_addr_t size, snprintf(cma->name, CMA_MAX_NAME, "cma%d\n", cma_area_count); cma->base_pfn = PFN_DOWN(base); - cma->count = size >> PAGE_SHIFT; + cma->available_count = cma->count = size >> PAGE_SHIFT; cma->order_per_bit = order_per_bit; *res_cma = cma; cma_area_count++; @@ -382,7 +383,7 @@ static void cma_debug_show_areas(struct cma *cma) { unsigned long next_zero_bit, next_set_bit, nr_zero; unsigned long start = 0; - unsigned long nr_part, nr_total = 0; + unsigned long nr_part; unsigned long nbits = cma_bitmap_maxno(cma); spin_lock_irq(&cma->lock); @@ -394,12 +395,12 @@ static void cma_debug_show_areas(struct cma *cma) next_set_bit = find_next_bit(cma->bitmap, nbits, next_zero_bit); nr_zero = next_set_bit - next_zero_bit; nr_part = nr_zero << cma->order_per_bit; - pr_cont("%s%lu@%lu", nr_total ? "+" : "", nr_part, + pr_cont("%s%lu@%lu", start ? "+" : "", nr_part, next_zero_bit); - nr_total += nr_part; start = next_zero_bit + nr_zero; } - pr_cont("=> %lu free of %lu total pages\n", nr_total, cma->count); + pr_cont("=> %lu free of %lu total pages\n", cma->available_count, + cma->count); spin_unlock_irq(&cma->lock); } @@ -446,6 +447,10 @@ struct page *cma_alloc(struct cma *cma, unsigned long count, for (;;) { spin_lock_irq(&cma->lock); + if (count > cma->available_count) { + spin_unlock_irq(&cma->lock); + break; + } bitmap_no = bitmap_find_next_zero_area_off(cma->bitmap, bitmap_maxno, start, bitmap_count, mask, offset); @@ -454,6 +459,7 @@ struct page *cma_alloc(struct cma *cma, unsigned long count, break; } bitmap_set(cma->bitmap, bitmap_no, bitmap_count); + cma->available_count -= count; /* * It's safe to drop the lock here. We've marked this region for * our exclusive use. If the migration fails we will take the diff --git a/mm/cma.h b/mm/cma.h index ad61cc6dd439..d111f3d51868 100644 --- a/mm/cma.h +++ b/mm/cma.h @@ -13,6 +13,7 @@ struct cma_kobject { struct cma { unsigned long base_pfn; unsigned long count; + unsigned long available_count; unsigned long *bitmap; unsigned int order_per_bit; /* Order of pages represented by one bit */ spinlock_t lock; diff --git a/mm/cma_debug.c b/mm/cma_debug.c index 602fff89b15f..89236f22230a 100644 --- a/mm/cma_debug.c +++ b/mm/cma_debug.c @@ -34,13 +34,10 @@ DEFINE_DEBUGFS_ATTRIBUTE(cma_debugfs_fops, cma_debugfs_get, NULL, "%llu\n"); static int cma_used_get(void *data, u64 *val) { struct cma *cma = data; - unsigned long used; spin_lock_irq(&cma->lock); - /* pages counter is smaller than sizeof(int) */ - used = bitmap_weight(cma->bitmap, (int)cma_bitmap_maxno(cma)); + *val = cma->count - cma->available_count; spin_unlock_irq(&cma->lock); - *val = (u64)used << cma->order_per_bit; return 0; } diff --git a/mm/cma_sysfs.c b/mm/cma_sysfs.c index f50db3973171..97acd3e5a6a5 100644 --- a/mm/cma_sysfs.c +++ b/mm/cma_sysfs.c @@ -62,6 +62,24 @@ static ssize_t release_pages_success_show(struct kobject *kobj, } CMA_ATTR_RO(release_pages_success); +static ssize_t total_pages_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct cma *cma = cma_from_kobj(kobj); + + return sysfs_emit(buf, "%lu\n", cma->count); +} +CMA_ATTR_RO(total_pages); + +static ssize_t available_pages_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct cma *cma = cma_from_kobj(kobj); + + return sysfs_emit(buf, "%lu\n", cma->available_count); +} +CMA_ATTR_RO(available_pages); + static void cma_kobj_release(struct kobject *kobj) { struct cma *cma = cma_from_kobj(kobj); @@ -75,6 +93,8 @@ static struct attribute *cma_attrs[] = { &alloc_pages_success_attr.attr, &alloc_pages_fail_attr.attr, &release_pages_success_attr.attr, + &total_pages_attr.attr, + &available_pages_attr.attr, NULL, }; ATTRIBUTE_GROUPS(cma); -- 2.45.2.803.g4e1b14247a-goog . From: Joshua Felmeden Subject: [PATCH 0/2] iio: humidity: Add support for en21x sensor family Date: Tue, 09 Jul 2024 17:36:09 +0100 Message-Id: <20240709-ens21x-v1-0-678521433cdd@thegoodpenguin.co.uk> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: Jonathan Cameron , Lars-Peter Clausen , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Joshua Felmeden Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272588 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-iio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This patch series adds support for the ENS210/ENS210A/ENS211/ENS212/ENS213A/ENS215 temperature and humidity sensors. Patch 1 adds the required device tree bindings. Patch 2 adds the driver, providing the probe and read functions. Signed-off-by: Joshua Felmeden --- Joshua Felmeden (2): dt-bindings: iio: humidity: add ENS21x sensor family iio: humidity: Add support for ENS21x .../bindings/iio/humidity/sciosense,ens21x.yaml | 50 +++ drivers/iio/humidity/Kconfig | 11 + drivers/iio/humidity/Makefile | 1 + drivers/iio/humidity/ens21x.c | 348 +++++++++++++++++++++ 4 files changed, 410 insertions(+) --- base-commit: 1ebab783647a9e3bf357002d5c4ff060c8474a0a change-id: 20240709-ens21x-8f2530968f2e Best regards, -- Joshua Felmeden . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Tue, 09 Jul 2024 09:36:28 -0700 Message-ID: <000000000000a5de14061cd3215f@google.com> Subject: [syzbot] [net?] [serial?] INFO: task hung in filemap_fault (6) From: syzbot To: davem@davemloft.net, edumazet@google.com, gregkh@linuxfoundation.org, ivecera@redhat.com, jiri@resnulli.us, kuba@kernel.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, netdev@vger.kernel.org, pabeni@redhat.com, syzkaller-bugs@googlegroups.com Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272591 org.kernel.vger.netdev:355969 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, syzbot found the following issue on: HEAD commit: 4376e966ecb7 Merge tag 'perf-tools-fixes-for-v6.10-2024-07.. git tree: upstream console output: https://syzkaller.appspot.com/x/log.txt?x=12ccb031980000 kernel config: https://syzkaller.appspot.com/x/.config?x=42a432cfd0e579e0 dashboard link: https://syzkaller.appspot.com/bug?extid=cbbcd52813dd10467cfe compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 Unfortunately, I don't have any reproducer for this issue yet. Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/78d3fb79d8a7/disk-4376e966.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/9ab2a3a6286f/vmlinux-4376e966.xz kernel image: https://storage.googleapis.com/syzbot-assets/b25d95b9757e/bzImage-4376e966.xz IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+cbbcd52813dd10467cfe@syzkaller.appspotmail.com INFO: task syz.1.4917:19167 blocked for more than 143 seconds. Not tainted 6.10.0-rc7-syzkaller-00003-g4376e966ecb7 #0 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:syz.1.4917 state:D stack:24672 pid:19167 tgid:19167 ppid:18074 flags:0x00000004 Call Trace: context_switch kernel/sched/core.c:5408 [inline] __schedule+0x1796/0x49d0 kernel/sched/core.c:6745 __schedule_loop kernel/sched/core.c:6822 [inline] schedule+0x14b/0x320 kernel/sched/core.c:6837 schedule_preempt_disabled+0x13/0x30 kernel/sched/core.c:6894 rwsem_down_read_slowpath kernel/locking/rwsem.c:1086 [inline] __down_read_common kernel/locking/rwsem.c:1250 [inline] __down_read kernel/locking/rwsem.c:1263 [inline] down_read+0x705/0xa40 kernel/locking/rwsem.c:1528 filemap_invalidate_lock_shared include/linux/fs.h:846 [inline] filemap_fault+0xb5b/0x1760 mm/filemap.c:3320 __do_fault+0x135/0x460 mm/memory.c:4556 do_shared_fault mm/memory.c:4981 [inline] do_fault mm/memory.c:5055 [inline] do_pte_missing mm/memory.c:3897 [inline] handle_pte_fault+0x119b/0x7090 mm/memory.c:5381 __handle_mm_fault mm/memory.c:5524 [inline] handle_mm_fault+0xfb0/0x19d0 mm/memory.c:5689 do_user_addr_fault arch/x86/mm/fault.c:1338 [inline] handle_page_fault arch/x86/mm/fault.c:1481 [inline] exc_page_fault+0x459/0x8c0 arch/x86/mm/fault.c:1539 asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623 RIP: 0033:0x7fa837e4a10e RSP: 002b:00007ffd63127370 EFLAGS: 00010246 RAX: 0000000000008400 RBX: 0000000000000001 RCX: fffffffffffffcff RDX: a9ff1748001aba72 RSI: 0000000020000300 RDI: 000055557cdd93c8 RBP: fffffffffffffffe R08: 00007fa837e00000 R09: 000000000000000c R10: 0000000000000000 R11: 0000000000000001 R12: 00007fa838103f6c R13: 0000000000000032 R14: 00007fa838105a60 R15: 00007fa838103f60 Showing all locks held in the system: 3 locks held by kworker/1:0/25: #0: ffff888015080948 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline] #0: ffff888015080948 ((wq_completion)events){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329 #1: ffffc900001f7d00 (deferred_process_work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline] #1: ffffc900001f7d00 (deferred_process_work){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329 #2: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: switchdev_deferred_process_work+0xe/0x20 net/switchdev/switchdev.c:104 1 lock held by khungtaskd/30: #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline] #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:781 [inline] #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: debug_show_all_locks+0x55/0x2a0 kernel/locking/lockdep.c:6614 5 locks held by kworker/u8:5/80: #0: ffff888015ed3148 ((wq_completion)netns){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline] #0: ffff888015ed3148 ((wq_completion)netns){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329 #1: ffffc9000231fd00 (net_cleanup_work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline] #1: ffffc9000231fd00 (net_cleanup_work){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329 #2: ffffffff8f5c80d0 (pernet_ops_rwsem){++++}-{3:3}, at: cleanup_net+0x16a/0xcc0 net/core/net_namespace.c:594 #3: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: cleanup_net+0x6af/0xcc0 net/core/net_namespace.c:630 #4: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: exp_funnel_lock kernel/rcu/tree_exp.h:291 [inline] #4: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: synchronize_rcu_expedited+0x381/0x830 kernel/rcu/tree_exp.h:939 2 locks held by kworker/u8:6/962: 2 locks held by getty/4840: #0: ffff88802b2b60a0 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x25/0x70 drivers/tty/tty_ldisc.c:243 #1: ffffc90002f162f0 (&ldata->atomic_read_lock){+.+.}-{3:3}, at: n_tty_read+0x6b5/0x1e10 drivers/tty/n_tty.c:2211 3 locks held by kworker/u8:18/9185: #0: ffff88802a6c4948 ((wq_completion)ipv6_addrconf){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline] #0: ffff88802a6c4948 ((wq_completion)ipv6_addrconf){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329 #1: ffffc9000ffb7d00 ((work_completion)(&(&ifa->dad_work)->work)){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline] #1: ffffc9000ffb7d00 ((work_completion)(&(&ifa->dad_work)->work)){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329 #2: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: addrconf_dad_work+0xd0/0x16f0 net/ipv6/addrconf.c:4193 2 locks held by kworker/u8:22/9194: #0: ffff8880b943e758 (&rq->__lock){-.-.}-{2:2}, at: raw_spin_rq_lock_nested+0x2a/0x140 kernel/sched/core.c:559 #1: ffff8880b9428948 (&per_cpu_ptr(group->pcpu, cpu)->seq){-.-.}-{0:0}, at: psi_task_switch+0x441/0x770 kernel/sched/psi.c:988 1 lock held by syz.2.1532/9540: 1 lock held by syz.0.1583/9698: 1 lock held by syz.4.4498/17805: 3 locks held by kworker/1:6/18520: #0: ffff888015080948 ((wq_completion)events){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline] #0: ffff888015080948 ((wq_completion)events){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329 #1: ffffc900032ffd00 ((linkwatch_work).work){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline] #1: ffffc900032ffd00 ((linkwatch_work).work){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329 #2: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: linkwatch_event+0xe/0x60 net/core/link_watch.c:276 2 locks held by syz.1.4917/19167: #0: ffff8880498a0070 (&vma->vm_lock->lock){++++}-{3:3}, at: vma_start_read include/linux/mm.h:683 [inline] #0: ffff8880498a0070 (&vma->vm_lock->lock){++++}-{3:3}, at: lock_vma_under_rcu+0x2f9/0x6e0 mm/memory.c:5845 #1: ffff88801d55e548 (mapping.invalidate_lock#2){++++}-{3:3}, at: filemap_invalidate_lock_shared include/linux/fs.h:846 [inline] #1: ffff88801d55e548 (mapping.invalidate_lock#2){++++}-{3:3}, at: filemap_fault+0xb5b/0x1760 mm/filemap.c:3320 1 lock held by syz-executor/19271: #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: tun_detach drivers/net/tun.c:698 [inline] #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: tun_chr_close+0x3e/0x1b0 drivers/net/tun.c:3500 1 lock held by syz.1.5136/19866: #0: ffff88801d55e548 (mapping.invalidate_lock#2){++++}-{3:3}, at: filemap_invalidate_lock_shared include/linux/fs.h:846 [inline] #0: ffff88801d55e548 (mapping.invalidate_lock#2){++++}-{3:3}, at: page_cache_ra_unbounded+0xf7/0x7f0 mm/readahead.c:225 1 lock held by syz-executor/19951: #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock net/core/rtnetlink.c:79 [inline] #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x842/0x1180 net/core/rtnetlink.c:6632 3 locks held by syz-executor/19971: #0: ffffffff8f63ad70 (cb_lock){++++}-{3:3}, at: genl_rcv+0x19/0x40 net/netlink/genetlink.c:1218 #1: ffffffff8f63ac28 (genl_mutex){+.+.}-{3:3}, at: genl_lock net/netlink/genetlink.c:35 [inline] #1: ffffffff8f63ac28 (genl_mutex){+.+.}-{3:3}, at: genl_op_lock net/netlink/genetlink.c:60 [inline] #1: ffffffff8f63ac28 (genl_mutex){+.+.}-{3:3}, at: genl_rcv_msg+0x121/0xec0 net/netlink/genetlink.c:1209 #2: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: wg_set_device+0x102/0x2160 drivers/net/wireguard/netlink.c:504 1 lock held by syz-executor/20338: #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock net/core/rtnetlink.c:79 [inline] #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x842/0x1180 net/core/rtnetlink.c:6632 1 lock held by syz.3.5348/20433: #0: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: exp_funnel_lock kernel/rcu/tree_exp.h:323 [inline] #0: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: synchronize_rcu_expedited+0x451/0x830 kernel/rcu/tree_exp.h:939 ============================================= NMI backtrace for cpu 1 CPU: 1 PID: 30 Comm: khungtaskd Not tainted 6.10.0-rc7-syzkaller-00003-g4376e966ecb7 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114 nmi_cpu_backtrace+0x49c/0x4d0 lib/nmi_backtrace.c:113 nmi_trigger_cpumask_backtrace+0x198/0x320 lib/nmi_backtrace.c:62 trigger_all_cpu_backtrace include/linux/nmi.h:162 [inline] check_hung_uninterruptible_tasks kernel/hung_task.c:223 [inline] watchdog+0xfde/0x1020 kernel/hung_task.c:379 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 Sending NMI from CPU 1 to CPUs 0: NMI backtrace for cpu 0 CPU: 0 PID: 5190 Comm: kworker/0:6 Not tainted 6.10.0-rc7-syzkaller-00003-g4376e966ecb7 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 Workqueue: events drain_vmap_area_work RIP: 0010:get_current arch/x86/include/asm/current.h:49 [inline] RIP: 0010:__sanitizer_cov_trace_pc+0x8/0x70 kernel/kcov.c:206 Code: 8b 3d 0c 3c 44 0c 48 89 de 5b e9 c3 f6 56 00 0f 1f 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 48 8b 04 24 <65> 48 8b 0c 25 80 d4 03 00 65 8b 15 b0 ad 6d 7e f7 c2 00 01 ff 00 RSP: 0018:ffffc90004867450 EFLAGS: 00000202 RAX: ffffffff8140eea1 RBX: ffffc900048674c8 RCX: ffffffff91018000 RDX: ffff888021093c00 RSI: 0000000000000001 RDI: 0000000000000000 RBP: 0000000000000001 R08: ffffffff8140ee98 R09: ffffffff8141095f R10: 0000000000000003 R11: ffff888021093c00 R12: ffff888021093c00 R13: ffffffff8181dca0 R14: dffffc0000000000 R15: 1ffff9200090ce99 FS: 0000000000000000(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007fa7b6037d60 CR3: 000000000e132000 CR4: 00000000003506f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: unwind_get_return_address+0x71/0xc0 arch/x86/kernel/unwind_orc.c:369 arch_stack_walk+0x125/0x1b0 arch/x86/kernel/stacktrace.c:26 stack_trace_save+0x118/0x1d0 kernel/stacktrace.c:122 save_stack+0xfb/0x1f0 mm/page_owner.c:156 __reset_page_owner+0x75/0x3f0 mm/page_owner.c:297 reset_page_owner include/linux/page_owner.h:25 [inline] free_pages_prepare mm/page_alloc.c:1093 [inline] free_unref_page+0xd19/0xea0 mm/page_alloc.c:2588 kasan_depopulate_vmalloc_pte+0x74/0x90 mm/kasan/shadow.c:408 apply_to_pte_range mm/memory.c:2746 [inline] apply_to_pmd_range mm/memory.c:2790 [inline] apply_to_pud_range mm/memory.c:2826 [inline] apply_to_p4d_range mm/memory.c:2862 [inline] __apply_to_page_range+0x8a8/0xe50 mm/memory.c:2896 kasan_release_vmalloc+0x9a/0xb0 mm/kasan/shadow.c:525 purge_vmap_node+0x3e3/0x770 mm/vmalloc.c:2207 __purge_vmap_area_lazy+0x708/0xae0 mm/vmalloc.c:2289 drain_vmap_area_work+0x27/0x40 mm/vmalloc.c:2323 process_one_work kernel/workqueue.c:3248 [inline] process_scheduled_works+0xa2c/0x1830 kernel/workqueue.c:3329 worker_thread+0x86d/0xd50 kernel/workqueue.c:3409 kthread+0x2f0/0x390 kernel/kthread.c:389 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244 --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup . From: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= To: netdev@vger.kernel.org Cc: =?UTF-8?q?Asbj=C3=B8rn=20Sloth=20T=C3=B8nnesen?= , Davide Caratti , Ilya Maximets , Jamal Hadi Salim , Cong Wang , Jiri Pirko , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , David Ahern , Simon Horman , Ratheesh Kannoth , Florian Westphal , Alexander Lobakin , linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 00/10] flower: rework TCA_FLOWER_KEY_ENC_FLAGS usage Date: Tue, 9 Jul 2024 16:38:14 +0000 Message-ID: <20240709163825.1210046-1-ast@fiberby.net> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272596 org.kernel.vger.netdev:355971 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.netdev Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series reworks the recently added TCA_FLOWER_KEY_ENC_FLAGS attribute, to be more like TCA_FLOWER_KEY_FLAGS, and use the unused u32 flags field in FLOW_DISSECTOR_KEY_ENC_CONTROL, instead of adding a new flags field as FLOW_DISSECTOR_KEY_ENC_FLAGS. I have defined the new FLOW_DIS_F_* and TCA_FLOWER_KEY_FLAGS_* flags to co-exist with the existing flags, so the meaning of the flags field in struct flow_dissector_key_control is not depending on the context it is used in. If we run out of bits then we can always split them up later, if we really want to. Future flags might also be valid in both contexts. iproute2 RFC patch: (needs update of uAPI headers) https://lore.kernel.org/897379f1850a50d8c320ca3facd06c5f03943bac.1719506876.git.dcaratti@redhat.com/ --- Changelog: v3: - Retitle patch 1 (tunnel flags -> control flags) v2: https://lore.kernel.org/20240705133348.728901-1-ast@fiberby.net/ - Refactor flower control flag definitions (requested by Jakub and Alexander) - Add Tested-by from Davide Caratti on patch 3-10. v1: https://lore.kernel.org/20240703104600.455125-1-ast@fiberby.net/ - Change netlink attribute type from NLA_U32 to NLA_BE32. - Ensure that the FLOW_DISSECTOR_KEY_ENC_CONTROL is also masked for non-IP. - Fix preexisting typo in kdoc for struct flow_dissector_key_control (all suggested by Davide) RFC: https://lore.kernel.org/20240611235355.177667-1-ast@fiberby.net/ Asbjørn Sloth Tønnesen (10): net/sched: flower: refactor control flag definitions net/sched: flower: define new tunnel flags net/sched: cls_flower: prepare fl_{set,dump}_key_flags() for ENC_FLAGS net/sched: cls_flower: add policy for TCA_FLOWER_KEY_FLAGS flow_dissector: prepare for encapsulated control flags flow_dissector: set encapsulated control flags from tun_flags net/sched: cls_flower: add tunnel flags to fl_{set,dump}_key_flags() net/sched: cls_flower: rework TCA_FLOWER_KEY_ENC_FLAGS usage flow_dissector: cleanup FLOW_DISSECTOR_KEY_ENC_FLAGS flow_dissector: set encapsulation control flags for non-IP include/net/flow_dissector.h | 30 ++++---- include/net/ip_tunnels.h | 12 --- include/uapi/linux/pkt_cls.h | 11 ++- net/core/flow_dissector.c | 50 ++++++------ net/sched/cls_flower.c | 142 ++++++++++++++++++++--------------- 5 files changed, 135 insertions(+), 110 deletions(-) -- 2.45.2 . Return-Path: From: Jesse Taube To: linux-riscv@lists.infradead.org Cc: Ard Biesheuvel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt , Jesse Taube , Alexandre Ghiti , Conor Dooley , Masahiro Yamada , Wende Tan , Christophe JAILLET , Sami Tolvanen , Andrew Morton , Baoquan He , "Mike Rapoport (IBM)" , "Vishal Moola (Oracle)" , linux-kernel@vger.kernel.org, llvm@lists.linux.dev Subject: [PATCH v4 0/4] RISC-V: Parse DT for Zkr to seed KASLR Date: Tue, 9 Jul 2024 13:39:33 -0400 Message-ID: <20240709173937.510084-1-jesse@rivosinc.com> MIME-Version: 1.0 X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79539 org.kernel.vger.linux-kernel:1272618 Newsgroups: org.infradead.lists.linux-riscv,dev.linux.lists.llvm,org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add functions to pi/fdt_early.c to help parse the FDT to check if the isa string has the Zkr extension. Then use the Zkr extension to seed the KASLR base address. The first two patches fix the visibility of symbols. V1 -> V2: - Add RISC-V: pi: Force hidden visibility for all symbol references - Add RISC-V: pi: Add kernel/pi/pi.h - Rewrite archrandom_early.c to parse DT over checking the csr V2 -> V3: - Add RISC-V: lib: Add pi aliases for string functions - Rewrite isa_string_contains in third patch Jesse Taube (4): RISC-V: pi: Force hidden visibility for all symbol references RISC-V: lib: Add pi aliases for string functions RISC-V: pi: Add kernel/pi/pi.h RISC-V: Use Zkr to seed KASLR base address arch/riscv/kernel/pi/Makefile | 4 +- arch/riscv/kernel/pi/archrandom_early.c | 30 +++++ arch/riscv/kernel/pi/cmdline_early.c | 10 +- arch/riscv/kernel/pi/fdt_early.c | 167 +++++++++++++++++++++++- arch/riscv/kernel/pi/pi.h | 20 +++ arch/riscv/lib/memset.S | 2 + arch/riscv/lib/strcmp.S | 1 + arch/riscv/lib/strncmp.S | 1 + arch/riscv/mm/init.c | 5 +- 9 files changed, 224 insertions(+), 16 deletions(-) create mode 100644 arch/riscv/kernel/pi/archrandom_early.c create mode 100644 arch/riscv/kernel/pi/pi.h -- 2.45.2 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv . From: Igor Prusov To: Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai , Philipp Zabel , Igor Prusov CC: , , , , Subject: [PATCH 0/6] ASoC: Add NTP8918 and NTP8835 codecs support Date: Tue, 9 Jul 2024 20:28:28 +0300 Message-ID: <20240709172834.9785-1-ivprusov@salutedevices.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 186397 [Jul 09 2024] X-KSMG-AntiSpam-Version: 6.1.0.4 X-KSMG-AntiSpam-Envelope-From: ivprusov@salutedevices.com X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 24 0.3.24 186c4d603b899ccfd4883d230c53f273b80e467f, {Tracking_from_domain_doesnt_match_to}, smtp.sberdevices.ru:5.0.1,7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;salutedevices.com:7.1.1;100.64.160.123:7.1.2;127.0.0.199:7.1.2, FromAlignment: s, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2024/07/09 15:25:00 #25923573 X-KSMG-AntiVirus-Status: Clean, skipped Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272632 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This series adds support for two NeoFidelity amplifiers. For both amplifiers vendor provides software for equalizer and filters configuration, which generates firmware files with registers values. Since in both cases those files have same encoding, a common helper module is added to get firmware via request_firmware() API and set registers values. Igor Prusov (6): dt-bindings: vendor-prefixes: Add NeoFidelity, Inc ASoC: codecs: Add NeoFidelity Firmware helpers ASoC: dt-bindings: Add bindings for NeoFidelity NTP8918 ASoC: codecs: Add NeoFidelity NTP8918 codec ASoC: dt-bindings: Add bindings for NeoFidelity NTP8835 ASoC: codecs: Add NeoFidelity NTP8835 codec .../bindings/sound/neofidelity,ntp8835.yaml | 65 +++ .../bindings/sound/neofidelity,ntp8918.yaml | 63 +++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + sound/soc/codecs/Kconfig | 13 + sound/soc/codecs/Makefile | 6 + sound/soc/codecs/ntp8835.c | 432 ++++++++++++++++++ sound/soc/codecs/ntp8918.c | 356 +++++++++++++++ sound/soc/codecs/ntpfw.c | 137 ++++++ sound/soc/codecs/ntpfw.h | 23 + 9 files changed, 1097 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/neofidelity,ntp8835.yaml create mode 100644 Documentation/devicetree/bindings/sound/neofidelity,ntp8918.yaml create mode 100644 sound/soc/codecs/ntp8835.c create mode 100644 sound/soc/codecs/ntp8918.c create mode 100644 sound/soc/codecs/ntpfw.c create mode 100644 sound/soc/codecs/ntpfw.h -- 2.34.1 . From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v3 0/2] i2c: smbus cleanups and SPD support for piix4 Date: Tue, 09 Jul 2024 19:35:34 +0200 Message-Id: <20240709-piix4-spd-v3-0-9d1daa204983@weissschuh.net> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: Andi Shyti , Jean Delvare Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Guenter Roeck , Wolfram Sang , Heiner Kallweit , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272643 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Patches 1 is a preparation patch. Patch 2 is the actual change to piix4. Patch 1 drops the warning about muxed busses. I didn't feel that the warning only would warrant the additional complexity it introduces with multiple callers of i2c_register_spd(). If others feel different, maybe a more generic warning/info or a source code comment would suffice. On a machine with 32 slots of which 16 are populated only the first 8 slots are addressable, half of which are empty. Unfortunately I couldn't run a custom kernel for testing. But manually instantiating ee1004 devices worked as expected, so the proposed changes should also work. Tested with spd5118 and two DIMMs. Signed-off-by: Thomas Weißschuh --- Changes in v3: - Apply tags from Guenter - Squash commits 1-3, and reword the message slightly - Drop Fixes: - Link to v2: https://lore.kernel.org/r/20240627-piix4-spd-v2-0-617ce47b8ff4@weissschuh.net Changes in v2: - Add new i2c-smbus prep patches - Only register SPD for port 0 - Link to v1: https://lore.kernel.org/r/20240530-piix4-spd-v1-1-9cbf1abebf41@weissschuh.net --- Thomas Weißschuh (2): i2c: smbus: remove i801 assumptions from SPD probing i2c: piix4: Register SPDs drivers/i2c/busses/Kconfig | 1 + drivers/i2c/busses/i2c-piix4.c | 4 ++++ drivers/i2c/i2c-smbus.c | 15 ++++----------- 3 files changed, 9 insertions(+), 11 deletions(-) --- base-commit: 9746c2dd0307c80bd695e4e3065367f3e0154723 change-id: 20240530-piix4-spd-39c156b22959 Best regards, -- Thomas Weißschuh . From: Christophe JAILLET To: Nishanth Menon , Santosh Shilimkar Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Christophe JAILLET , linux-arm-kernel@lists.infradead.org Subject: [PATCH] soc: ti: k3-ringacc: Constify struct k3_ring_ops Date: Tue, 9 Jul 2024 19:41:29 +0200 Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272647 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.kernel-janitors Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail 'struct k3_ring_ops' is not modified in this driver. Constifying this structure moves some data to a read-only section, so increase overall security. On a x86_64, with allmodconfig: Before: ====== text data bss dec hex filename 17090 3304 32 20426 4fca drivers/soc/ti/k3-ringacc.o After: ===== text data bss dec hex filename 17266 3144 32 20442 4fda drivers/soc/ti/k3-ringacc.o Signed-off-by: Christophe JAILLET --- Compile tested-only --- drivers/soc/ti/k3-ringacc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/soc/ti/k3-ringacc.c b/drivers/soc/ti/k3-ringacc.c index fd4251d75935..8c0102968351 100644 --- a/drivers/soc/ti/k3-ringacc.c +++ b/drivers/soc/ti/k3-ringacc.c @@ -161,7 +161,7 @@ struct k3_ring { struct k3_ringacc_proxy_target_regs __iomem *proxy; dma_addr_t ring_mem_dma; void *ring_mem_virt; - struct k3_ring_ops *ops; + const struct k3_ring_ops *ops; u32 size; enum k3_ring_size elm_size; enum k3_ring_mode mode; @@ -268,17 +268,17 @@ static int k3_ringacc_ring_pop_mem(struct k3_ring *ring, void *elem); static int k3_dmaring_fwd_pop(struct k3_ring *ring, void *elem); static int k3_dmaring_reverse_pop(struct k3_ring *ring, void *elem); -static struct k3_ring_ops k3_ring_mode_ring_ops = { +static const struct k3_ring_ops k3_ring_mode_ring_ops = { .push_tail = k3_ringacc_ring_push_mem, .pop_head = k3_ringacc_ring_pop_mem, }; -static struct k3_ring_ops k3_dmaring_fwd_ops = { +static const struct k3_ring_ops k3_dmaring_fwd_ops = { .push_tail = k3_ringacc_ring_push_mem, .pop_head = k3_dmaring_fwd_pop, }; -static struct k3_ring_ops k3_dmaring_reverse_ops = { +static const struct k3_ring_ops k3_dmaring_reverse_ops = { /* Reverse side of the DMA ring can only be popped by SW */ .pop_head = k3_dmaring_reverse_pop, }; @@ -288,7 +288,7 @@ static int k3_ringacc_ring_pop_io(struct k3_ring *ring, void *elem); static int k3_ringacc_ring_push_head_io(struct k3_ring *ring, void *elem); static int k3_ringacc_ring_pop_tail_io(struct k3_ring *ring, void *elem); -static struct k3_ring_ops k3_ring_mode_msg_ops = { +static const struct k3_ring_ops k3_ring_mode_msg_ops = { .push_tail = k3_ringacc_ring_push_io, .push_head = k3_ringacc_ring_push_head_io, .pop_tail = k3_ringacc_ring_pop_tail_io, @@ -300,7 +300,7 @@ static int k3_ringacc_ring_push_tail_proxy(struct k3_ring *ring, void *elem); static int k3_ringacc_ring_pop_head_proxy(struct k3_ring *ring, void *elem); static int k3_ringacc_ring_pop_tail_proxy(struct k3_ring *ring, void *elem); -static struct k3_ring_ops k3_ring_mode_proxy_ops = { +static const struct k3_ring_ops k3_ring_mode_proxy_ops = { .push_tail = k3_ringacc_ring_push_tail_proxy, .push_head = k3_ringacc_ring_push_head_proxy, .pop_tail = k3_ringacc_ring_pop_tail_proxy, -- 2.45.2 . X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Tue, 09 Jul 2024 10:53:18 -0700 Message-ID: <00000000000073db8b061cd43496@google.com> Subject: [syzbot] [dri?] possible deadlock in drm_modeset_lock From: syzbot To: airlied@gmail.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, hamohammed.sa@gmail.com, linux-kernel@vger.kernel.org, maarten.lankhorst@linux.intel.com, mairacanal@riseup.net, melissa.srw@gmail.com, mripard@kernel.org, rodrigosiqueiramelo@gmail.com, syzkaller-bugs@googlegroups.com, tzimmermann@suse.de Content-Type: text/plain; charset="UTF-8" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272655 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, syzbot found the following issue on: HEAD commit: 8e2f4becf4fa Merge remote-tracking branch 'tglx/devmsi-arm.. git tree: git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci console output: https://syzkaller.appspot.com/x/log.txt?x=10676a9e980000 kernel config: https://syzkaller.appspot.com/x/.config?x=15349546db652fd3 dashboard link: https://syzkaller.appspot.com/bug?extid=2e171785a12db2e2bd5d compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 userspace arch: arm64 Unfortunately, I don't have any reproducer for this issue yet. Downloadable assets: disk image: https://storage.googleapis.com/syzbot-assets/ee71a34a1c26/disk-8e2f4bec.raw.xz vmlinux: https://storage.googleapis.com/syzbot-assets/f8a6bf3c4b1c/vmlinux-8e2f4bec.xz kernel image: https://storage.googleapis.com/syzbot-assets/236760504de5/Image-8e2f4bec.gz.xz IMPORTANT: if you fix the issue, please add the following tag to the commit: Reported-by: syzbot+2e171785a12db2e2bd5d@syzkaller.appspotmail.com ====================================================== WARNING: possible circular locking dependency detected 6.10.0-rc6-syzkaller-g8e2f4becf4fa #0 Not tainted ------------------------------------------------------ syz.4.1912/14164 is trying to acquire lock: ffff0000ccd2e988 (&mm->mmap_lock){++++}-{3:3}, at: __might_fault+0x9c/0x124 mm/memory.c:6233 but task is already holding lock: ffff0000c8f64518 (crtc_ww_class_mutex){+.+.}-{3:3}, at: drm_modeset_lock+0x78/0xa4 drivers/gpu/drm/drm_modeset_lock.c:398 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #8 (crtc_ww_class_mutex){+.+.}-{3:3}: __mutex_lock_common+0x190/0x21a0 kernel/locking/mutex.c:608 __ww_mutex_lock kernel/locking/mutex.c:759 [inline] ww_mutex_lock+0x64/0x3a4 kernel/locking/mutex.c:876 modeset_lock+0x278/0x59c drivers/gpu/drm/drm_modeset_lock.c:314 drm_modeset_lock+0x64/0xa4 drivers/gpu/drm/drm_modeset_lock.c:396 drmm_mode_config_init+0xba0/0x1280 drivers/gpu/drm/drm_mode_config.c:454 vkms_modeset_init drivers/gpu/drm/vkms/vkms_drv.c:156 [inline] vkms_create drivers/gpu/drm/vkms/vkms_drv.c:215 [inline] vkms_init+0x2fc/0x600 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24c/0x9c0 init/main.c:1267 do_initcall_level+0x154/0x214 init/main.c:1329 do_initcalls+0x58/0xac init/main.c:1345 do_basic_setup+0x8c/0xa0 init/main.c:1364 kernel_init_freeable+0x324/0x478 init/main.c:1578 kernel_init+0x24/0x2a0 init/main.c:1467 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860 -> #7 (crtc_ww_class_acquire){+.+.}-{0:0}: ww_acquire_init include/linux/ww_mutex.h:149 [inline] drm_modeset_acquire_init+0x194/0x330 drivers/gpu/drm/drm_modeset_lock.c:250 drm_client_modeset_commit_atomic+0xe0/0x730 drivers/gpu/drm/drm_client_modeset.c:1002 drm_client_modeset_commit_locked+0xd0/0x4a8 drivers/gpu/drm/drm_client_modeset.c:1166 drm_client_modeset_commit+0x50/0x7c drivers/gpu/drm/drm_client_modeset.c:1192 __drm_fb_helper_restore_fbdev_mode_unlocked+0xd4/0x178 drivers/gpu/drm/drm_fb_helper.c:251 drm_fb_helper_set_par+0xc4/0x110 drivers/gpu/drm/drm_fb_helper.c:1347 fbcon_init+0xf34/0x1eb8 drivers/video/fbdev/core/fbcon.c:1093 visual_init+0x27c/0x548 drivers/tty/vt/vt.c:1011 do_bind_con_driver+0x7dc/0xe04 drivers/tty/vt/vt.c:3833 do_take_over_console+0x4ac/0x5f0 drivers/tty/vt/vt.c:4399 do_fbcon_takeover+0x158/0x260 drivers/video/fbdev/core/fbcon.c:531 do_fb_registered drivers/video/fbdev/core/fbcon.c:2968 [inline] fbcon_fb_registered+0x370/0x4ec drivers/video/fbdev/core/fbcon.c:2988 do_register_framebuffer drivers/video/fbdev/core/fbmem.c:449 [inline] register_framebuffer+0x470/0x610 drivers/video/fbdev/core/fbmem.c:515 __drm_fb_helper_initial_config_and_unlock+0x13b0/0x19a4 drivers/gpu/drm/drm_fb_helper.c:1871 drm_fb_helper_initial_config+0x48/0x64 drivers/gpu/drm/drm_fb_helper.c:1936 drm_fbdev_generic_client_hotplug+0x158/0x22c drivers/gpu/drm/drm_fbdev_generic.c:278 drm_client_register+0x144/0x1e0 drivers/gpu/drm/drm_client.c:141 drm_fbdev_generic_setup+0x11c/0x2cc drivers/gpu/drm/drm_fbdev_generic.c:340 vkms_create drivers/gpu/drm/vkms/vkms_drv.c:226 [inline] vkms_init+0x4f0/0x600 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24c/0x9c0 init/main.c:1267 do_initcall_level+0x154/0x214 init/main.c:1329 do_initcalls+0x58/0xac init/main.c:1345 do_basic_setup+0x8c/0xa0 init/main.c:1364 kernel_init_freeable+0x324/0x478 init/main.c:1578 kernel_init+0x24/0x2a0 init/main.c:1467 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860 -> #6 (&client->modeset_mutex){+.+.}-{3:3}: __mutex_lock_common+0x190/0x21a0 kernel/locking/mutex.c:608 __mutex_lock kernel/locking/mutex.c:752 [inline] mutex_lock_nested+0x2c/0x38 kernel/locking/mutex.c:804 drm_client_modeset_probe+0x318/0x3f68 drivers/gpu/drm/drm_client_modeset.c:832 __drm_fb_helper_initial_config_and_unlock+0xf0/0x19a4 drivers/gpu/drm/drm_fb_helper.c:1848 drm_fb_helper_initial_config+0x48/0x64 drivers/gpu/drm/drm_fb_helper.c:1936 drm_fbdev_generic_client_hotplug+0x158/0x22c drivers/gpu/drm/drm_fbdev_generic.c:278 drm_client_register+0x144/0x1e0 drivers/gpu/drm/drm_client.c:141 drm_fbdev_generic_setup+0x11c/0x2cc drivers/gpu/drm/drm_fbdev_generic.c:340 vkms_create drivers/gpu/drm/vkms/vkms_drv.c:226 [inline] vkms_init+0x4f0/0x600 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24c/0x9c0 init/main.c:1267 do_initcall_level+0x154/0x214 init/main.c:1329 do_initcalls+0x58/0xac init/main.c:1345 do_basic_setup+0x8c/0xa0 init/main.c:1364 kernel_init_freeable+0x324/0x478 init/main.c:1578 kernel_init+0x24/0x2a0 init/main.c:1467 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860 -> #5 (&helper->lock){+.+.}-{3:3}: __mutex_lock_common+0x190/0x21a0 kernel/locking/mutex.c:608 __mutex_lock kernel/locking/mutex.c:752 [inline] mutex_lock_nested+0x2c/0x38 kernel/locking/mutex.c:804 __drm_fb_helper_restore_fbdev_mode_unlocked+0xb4/0x178 drivers/gpu/drm/drm_fb_helper.c:242 drm_fb_helper_set_par+0xc4/0x110 drivers/gpu/drm/drm_fb_helper.c:1347 fbcon_init+0xf34/0x1eb8 drivers/video/fbdev/core/fbcon.c:1093 visual_init+0x27c/0x548 drivers/tty/vt/vt.c:1011 do_bind_con_driver+0x7dc/0xe04 drivers/tty/vt/vt.c:3833 do_take_over_console+0x4ac/0x5f0 drivers/tty/vt/vt.c:4399 do_fbcon_takeover+0x158/0x260 drivers/video/fbdev/core/fbcon.c:531 do_fb_registered drivers/video/fbdev/core/fbcon.c:2968 [inline] fbcon_fb_registered+0x370/0x4ec drivers/video/fbdev/core/fbcon.c:2988 do_register_framebuffer drivers/video/fbdev/core/fbmem.c:449 [inline] register_framebuffer+0x470/0x610 drivers/video/fbdev/core/fbmem.c:515 __drm_fb_helper_initial_config_and_unlock+0x13b0/0x19a4 drivers/gpu/drm/drm_fb_helper.c:1871 drm_fb_helper_initial_config+0x48/0x64 drivers/gpu/drm/drm_fb_helper.c:1936 drm_fbdev_generic_client_hotplug+0x158/0x22c drivers/gpu/drm/drm_fbdev_generic.c:278 drm_client_register+0x144/0x1e0 drivers/gpu/drm/drm_client.c:141 drm_fbdev_generic_setup+0x11c/0x2cc drivers/gpu/drm/drm_fbdev_generic.c:340 vkms_create drivers/gpu/drm/vkms/vkms_drv.c:226 [inline] vkms_init+0x4f0/0x600 drivers/gpu/drm/vkms/vkms_drv.c:252 do_one_initcall+0x24c/0x9c0 init/main.c:1267 do_initcall_level+0x154/0x214 init/main.c:1329 do_initcalls+0x58/0xac init/main.c:1345 do_basic_setup+0x8c/0xa0 init/main.c:1364 kernel_init_freeable+0x324/0x478 init/main.c:1578 kernel_init+0x24/0x2a0 init/main.c:1467 ret_from_fork+0x10/0x20 arch/arm64/kernel/entry.S:860 -> #4 (console_lock){+.+.}-{0:0}: console_lock+0x19c/0x1f4 kernel/printk/printk.c:2665 bch2_print_string_as_lines+0x2c/0xd4 fs/bcachefs/util.c:264 bch2_fsck_err+0x1d84/0x3300 fs/bcachefs/error.c:352 bch2_check_fix_ptr fs/bcachefs/buckets.c:504 [inline] bch2_check_fix_ptrs+0x14b4/0x4ae8 fs/bcachefs/buckets.c:631 bch2_trigger_extent+0x634/0x734 fs/bcachefs/buckets.c:1238 bch2_key_trigger fs/bcachefs/bkey_methods.h:88 [inline] bch2_gc_mark_key+0x474/0xb3c fs/bcachefs/btree_gc.c:613 bch2_gc_btree fs/bcachefs/btree_gc.c:664 [inline] bch2_gc_btrees fs/bcachefs/btree_gc.c:697 [inline] bch2_check_allocations+0x2128/0x80d8 fs/bcachefs/btree_gc.c:1224 bch2_run_recovery_pass+0xe4/0x1d4 fs/bcachefs/recovery_passes.c:182 bch2_run_recovery_passes+0x258/0x6e0 fs/bcachefs/recovery_passes.c:225 bch2_fs_recovery+0x31f0/0x5488 fs/bcachefs/recovery.c:813 bch2_fs_start+0x30c/0x53c fs/bcachefs/super.c:1035 bch2_fs_open+0x8b4/0xb64 fs/bcachefs/super.c:2132 bch2_mount+0x4fc/0xe68 fs/bcachefs/fs.c:1926 legacy_get_tree+0xd4/0x16c fs/fs_context.c:662 vfs_get_tree+0x90/0x288 fs/super.c:1780 do_new_mount+0x278/0x900 fs/namespace.c:3352 path_mount+0x590/0xe04 fs/namespace.c:3679 do_mount fs/namespace.c:3692 [inline] __do_sys_mount fs/namespace.c:3898 [inline] __se_sys_mount fs/namespace.c:3875 [inline] __arm64_sys_mount+0x45c/0x594 fs/namespace.c:3875 __invoke_syscall arch/arm64/kernel/syscall.c:34 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:48 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:131 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:150 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:712 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 -> #3 (&c->fsck_error_msgs_lock){+.+.}-{3:3}: __mutex_lock_common+0x190/0x21a0 kernel/locking/mutex.c:608 __mutex_lock kernel/locking/mutex.c:752 [inline] mutex_lock_nested+0x2c/0x38 kernel/locking/mutex.c:804 bch2_fsck_err+0x2d4/0x3300 fs/bcachefs/error.c:239 bch2_check_fix_ptr fs/bcachefs/buckets.c:504 [inline] bch2_check_fix_ptrs+0x14b4/0x4ae8 fs/bcachefs/buckets.c:631 bch2_trigger_extent+0x634/0x734 fs/bcachefs/buckets.c:1238 bch2_key_trigger fs/bcachefs/bkey_methods.h:88 [inline] bch2_gc_mark_key+0x474/0xb3c fs/bcachefs/btree_gc.c:613 bch2_gc_btree fs/bcachefs/btree_gc.c:664 [inline] bch2_gc_btrees fs/bcachefs/btree_gc.c:697 [inline] bch2_check_allocations+0x2128/0x80d8 fs/bcachefs/btree_gc.c:1224 bch2_run_recovery_pass+0xe4/0x1d4 fs/bcachefs/recovery_passes.c:182 bch2_run_recovery_passes+0x258/0x6e0 fs/bcachefs/recovery_passes.c:225 bch2_fs_recovery+0x31f0/0x5488 fs/bcachefs/recovery.c:813 bch2_fs_start+0x30c/0x53c fs/bcachefs/super.c:1035 bch2_fs_open+0x8b4/0xb64 fs/bcachefs/super.c:2132 bch2_mount+0x4fc/0xe68 fs/bcachefs/fs.c:1926 legacy_get_tree+0xd4/0x16c fs/fs_context.c:662 vfs_get_tree+0x90/0x288 fs/super.c:1780 do_new_mount+0x278/0x900 fs/namespace.c:3352 path_mount+0x590/0xe04 fs/namespace.c:3679 do_mount fs/namespace.c:3692 [inline] __do_sys_mount fs/namespace.c:3898 [inline] __se_sys_mount fs/namespace.c:3875 [inline] __arm64_sys_mount+0x45c/0x594 fs/namespace.c:3875 __invoke_syscall arch/arm64/kernel/syscall.c:34 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:48 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:131 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:150 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:712 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 -> #2 (&c->mark_lock){++++}-{0:0}: percpu_down_read+0x5c/0x2e8 include/linux/percpu-rwsem.h:51 __bch2_disk_reservation_add+0x98/0x904 fs/bcachefs/buckets.c:1530 bch2_disk_reservation_add+0x2f0/0x45c fs/bcachefs/buckets.h:430 bch2_folio_reservation_get+0x4b0/0x7a0 fs/bcachefs/fs-io-pagecache.c:446 bch2_page_mkwrite+0xa08/0xddc fs/bcachefs/fs-io-pagecache.c:616 do_page_mkwrite+0x140/0x2dc mm/memory.c:3093 do_shared_fault mm/memory.c:4993 [inline] do_fault mm/memory.c:5055 [inline] do_pte_missing mm/memory.c:3897 [inline] handle_pte_fault+0x11e4/0x5714 mm/memory.c:5381 __handle_mm_fault mm/memory.c:5524 [inline] handle_mm_fault+0xe84/0x15cc mm/memory.c:5689 do_page_fault+0x428/0xb1c arch/arm64/mm/fault.c:613 do_translation_fault+0xc4/0x114 arch/arm64/mm/fault.c:690 do_mem_abort+0x74/0x200 arch/arm64/mm/fault.c:826 el0_da+0x60/0x178 arch/arm64/kernel/entry-common.c:580 el0t_64_sync_handler+0xcc/0xfc arch/arm64/kernel/entry-common.c:733 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 -> #1 (sb_pagefaults#2){.+.+}-{0:0}: percpu_down_read include/linux/percpu-rwsem.h:51 [inline] __sb_start_write include/linux/fs.h:1655 [inline] sb_start_pagefault include/linux/fs.h:1820 [inline] bch2_page_mkwrite+0x260/0xddc fs/bcachefs/fs-io-pagecache.c:593 do_page_mkwrite+0x140/0x2dc mm/memory.c:3093 do_shared_fault mm/memory.c:4993 [inline] do_fault mm/memory.c:5055 [inline] do_pte_missing mm/memory.c:3897 [inline] handle_pte_fault+0x11e4/0x5714 mm/memory.c:5381 __handle_mm_fault mm/memory.c:5524 [inline] handle_mm_fault+0xe84/0x15cc mm/memory.c:5689 do_page_fault+0x428/0xb1c arch/arm64/mm/fault.c:613 do_translation_fault+0xc4/0x114 arch/arm64/mm/fault.c:690 do_mem_abort+0x74/0x200 arch/arm64/mm/fault.c:826 el0_da+0x60/0x178 arch/arm64/kernel/entry-common.c:580 el0t_64_sync_handler+0xcc/0xfc arch/arm64/kernel/entry-common.c:733 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 -> #0 (&mm->mmap_lock){++++}-{3:3}: check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain kernel/locking/lockdep.c:3869 [inline] __lock_acquire+0x3384/0x763c kernel/locking/lockdep.c:5137 lock_acquire+0x240/0x728 kernel/locking/lockdep.c:5754 __might_fault+0xc4/0x124 mm/memory.c:6234 drm_mode_object_get_properties+0x208/0x560 drivers/gpu/drm/drm_mode_object.c:406 drm_mode_getconnector+0xde4/0x1224 drivers/gpu/drm/drm_connector.c:3020 drm_ioctl_kernel+0x26c/0x368 drivers/gpu/drm/drm_ioctl.c:744 drm_ioctl+0x5e4/0xae4 drivers/gpu/drm/drm_ioctl.c:841 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl fs/ioctl.c:893 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:893 __invoke_syscall arch/arm64/kernel/syscall.c:34 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:48 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:131 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:150 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:712 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 other info that might help us debug this: Chain exists of: &mm->mmap_lock --> crtc_ww_class_acquire --> crtc_ww_class_mutex Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(crtc_ww_class_mutex); lock(crtc_ww_class_acquire); lock(crtc_ww_class_mutex); rlock(&mm->mmap_lock); *** DEADLOCK *** 1 lock held by syz.4.1912/14164: #0: ffff0000c8f64518 (crtc_ww_class_mutex){+.+.}-{3:3}, at: drm_modeset_lock+0x78/0xa4 drivers/gpu/drm/drm_modeset_lock.c:398 stack backtrace: CPU: 0 PID: 14164 Comm: syz.4.1912 Not tainted 6.10.0-rc6-syzkaller-g8e2f4becf4fa #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024 Call trace: dump_backtrace+0x1b8/0x1e4 arch/arm64/kernel/stacktrace.c:317 show_stack+0x2c/0x3c arch/arm64/kernel/stacktrace.c:324 __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xe4/0x150 lib/dump_stack.c:114 dump_stack+0x1c/0x28 lib/dump_stack.c:123 print_circular_bug+0x150/0x1b8 kernel/locking/lockdep.c:2060 check_noncircular+0x310/0x404 kernel/locking/lockdep.c:2187 check_prev_add kernel/locking/lockdep.c:3134 [inline] check_prevs_add kernel/locking/lockdep.c:3253 [inline] validate_chain kernel/locking/lockdep.c:3869 [inline] __lock_acquire+0x3384/0x763c kernel/locking/lockdep.c:5137 lock_acquire+0x240/0x728 kernel/locking/lockdep.c:5754 __might_fault+0xc4/0x124 mm/memory.c:6234 drm_mode_object_get_properties+0x208/0x560 drivers/gpu/drm/drm_mode_object.c:406 drm_mode_getconnector+0xde4/0x1224 drivers/gpu/drm/drm_connector.c:3020 drm_ioctl_kernel+0x26c/0x368 drivers/gpu/drm/drm_ioctl.c:744 drm_ioctl+0x5e4/0xae4 drivers/gpu/drm/drm_ioctl.c:841 vfs_ioctl fs/ioctl.c:51 [inline] __do_sys_ioctl fs/ioctl.c:907 [inline] __se_sys_ioctl fs/ioctl.c:893 [inline] __arm64_sys_ioctl+0x14c/0x1c8 fs/ioctl.c:893 __invoke_syscall arch/arm64/kernel/syscall.c:34 [inline] invoke_syscall+0x98/0x2b8 arch/arm64/kernel/syscall.c:48 el0_svc_common+0x130/0x23c arch/arm64/kernel/syscall.c:131 do_el0_svc+0x48/0x58 arch/arm64/kernel/syscall.c:150 el0_svc+0x54/0x168 arch/arm64/kernel/entry-common.c:712 el0t_64_sync_handler+0x84/0xfc arch/arm64/kernel/entry-common.c:730 el0t_64_sync+0x190/0x194 arch/arm64/kernel/entry.S:598 --- This report is generated by a bot. It may contain errors. See https://goo.gl/tpsmEJ for more information about syzbot. syzbot engineers can be reached at syzkaller@googlegroups.com. syzbot will keep track of this issue. See: https://goo.gl/tpsmEJ#status for how to communicate with syzbot. If the report is already addressed, let syzbot know by replying with: #syz fix: exact-commit-title If you want to overwrite report's subsystems, reply with: #syz set subsystems: new-subsystem (See the list of subsystem names on the web dashboard) If the report is a duplicate of another one, reply with: #syz dup: exact-subject-of-another-report If you want to undo deduplication, reply with: #syz undup . Message-ID: <08fc2878-722e-4884-94f3-19ec4717cccd@gmail.com> Date: Tue, 9 Jul 2024 20:01:26 +0200 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Johan Jonker Subject: [PATCH v1] drm/rockchip: rk3066_hdmi: change to bridge driver mode To: Andy Yan Cc: Heiko Stuebner , hjc@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272664 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Change rk3066_hdmi.c to bridge driver mode. Signed-off-by: Johan Jonker --- Apply after: [PATCH v10] drm/rockchip: rk3066_hdmi: add sound support --- drivers/gpu/drm/rockchip/rk3066_hdmi.c | 293 ++++++++++++++----------- 1 file changed, 161 insertions(+), 132 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c index e3b8faf89ae2..905610a10549 100644 --- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c +++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c @@ -5,12 +5,15 @@ */ #include +#include +#include #include #include #include #include #include +#include #include #include #include @@ -53,7 +56,8 @@ struct rk3066_hdmi { struct clk *hclk; void __iomem *regs; - struct drm_connector connector; + struct drm_bridge bridge; + struct drm_connector *connector; struct rockchip_encoder encoder; struct rk3066_hdmi_i2c *i2c; @@ -75,11 +79,6 @@ static struct rk3066_hdmi *encoder_to_rk3066_hdmi(struct drm_encoder *encoder) return container_of(rkencoder, struct rk3066_hdmi, encoder); } -static struct rk3066_hdmi *connector_to_rk3066_hdmi(struct drm_connector *connector) -{ - return container_of(connector, struct rk3066_hdmi, connector); -} - static inline u8 hdmi_readb(struct rk3066_hdmi *hdmi, u16 offset) { return readl_relaxed(hdmi->regs + offset); @@ -208,8 +207,7 @@ static int rk3066_hdmi_config_avi(struct rk3066_hdmi *hdmi, union hdmi_infoframe frame; int rc; - rc = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, - &hdmi->connector, mode); + rc = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, hdmi->connector, mode); if (hdmi->hdmi_data.enc_out_format == HDMI_COLORSPACE_YUV444) frame.avi.colorspace = HDMI_COLORSPACE_YUV444; @@ -347,7 +345,7 @@ static int rk3066_hdmi_audio_hw_params(struct device *dev, void *d, struct hdmi_codec_params *params) { struct rk3066_hdmi *hdmi = dev_get_drvdata(dev); - struct drm_display_info *display = &hdmi->connector.display_info; + struct drm_display_info *display = &hdmi->connector->display_info; if (!display->has_audio) { DRM_DEV_ERROR(hdmi->dev, "no audio support\n"); @@ -380,7 +378,7 @@ static void rk3066_hdmi_audio_shutdown(struct device *dev, void *d) static int rk3066_hdmi_audio_mute_stream(struct device *dev, void *d, bool mute, int direction) { struct rk3066_hdmi *hdmi = dev_get_drvdata(dev); - struct drm_display_info *display = &hdmi->connector.display_info; + struct drm_display_info *display = &hdmi->connector->display_info; if (!display->has_audio) { DRM_DEV_ERROR(hdmi->dev, "no audio support\n"); @@ -515,8 +513,7 @@ static int rk3066_hdmi_config_video_timing(struct rk3066_hdmi *hdmi, return 0; } -static void -rk3066_hdmi_phy_write(struct rk3066_hdmi *hdmi, u16 offset, u8 value) +static void rk3066_hdmi_phy_write(struct rk3066_hdmi *hdmi, u16 offset, u8 value) { hdmi_writeb(hdmi, offset, value); hdmi_modb(hdmi, HDMI_SYS_CTRL, @@ -572,7 +569,7 @@ static void rk3066_hdmi_config_phy(struct rk3066_hdmi *hdmi) static int rk3066_hdmi_setup(struct rk3066_hdmi *hdmi, struct drm_display_mode *mode) { - struct drm_display_info *display = &hdmi->connector.display_info; + struct drm_display_info *display = &hdmi->connector->display_info; hdmi->hdmi_data.vic = drm_match_cea_mode(mode); hdmi->hdmi_data.enc_out_format = HDMI_COLORSPACE_RGB; @@ -644,15 +641,16 @@ static int rk3066_hdmi_setup(struct rk3066_hdmi *hdmi, return 0; } -static void rk3066_hdmi_encoder_enable(struct drm_encoder *encoder, - struct drm_atomic_state *state) +static void rk3066_hdmi_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state) { - struct rk3066_hdmi *hdmi = encoder_to_rk3066_hdmi(encoder); + struct drm_atomic_state *state = bridge_state->base.state; + struct rk3066_hdmi *hdmi = bridge->driver_private; struct drm_connector_state *conn_state; struct drm_crtc_state *crtc_state; int mux, val; - conn_state = drm_atomic_get_new_connector_state(state, &hdmi->connector); + conn_state = drm_atomic_get_new_connector_state(state, hdmi->connector); if (WARN_ON(!conn_state)) return; @@ -660,7 +658,7 @@ static void rk3066_hdmi_encoder_enable(struct drm_encoder *encoder, if (WARN_ON(!crtc_state)) return; - mux = drm_of_encoder_active_endpoint_id(hdmi->dev->of_node, encoder); + mux = drm_of_encoder_active_endpoint_id(hdmi->dev->of_node, bridge->encoder); if (mux) val = (HDMI_VIDEO_SEL << 16) | HDMI_VIDEO_SEL; else @@ -674,10 +672,10 @@ static void rk3066_hdmi_encoder_enable(struct drm_encoder *encoder, rk3066_hdmi_setup(hdmi, &crtc_state->adjusted_mode); } -static void rk3066_hdmi_encoder_disable(struct drm_encoder *encoder, - struct drm_atomic_state *state) +static void rk3066_hdmi_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state) { - struct rk3066_hdmi *hdmi = encoder_to_rk3066_hdmi(encoder); + struct rk3066_hdmi *hdmi = bridge->driver_private; DRM_DEV_DEBUG(hdmi->dev, "hdmi encoder disable\n"); @@ -693,148 +691,146 @@ static void rk3066_hdmi_encoder_disable(struct drm_encoder *encoder, rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_A); } -static int -rk3066_hdmi_encoder_atomic_check(struct drm_encoder *encoder, - struct drm_crtc_state *crtc_state, - struct drm_connector_state *conn_state) +static enum drm_connector_status rk3066_hdmi_bridge_detect(struct drm_bridge *bridge) { - struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state); - - s->output_mode = ROCKCHIP_OUT_MODE_P888; - s->output_type = DRM_MODE_CONNECTOR_HDMIA; + struct rk3066_hdmi *hdmi = bridge->driver_private; - return 0; + return (hdmi_readb(hdmi, HDMI_HPG_MENS_STA) & HDMI_HPG_IN_STATUS_HIGH) ? + connector_status_connected : connector_status_disconnected; } -static int rk3066_hdmi_encoder_late_register(struct drm_encoder *encoder) +static enum drm_mode_status rk3066_hdmi_bridge_mode_valid(struct drm_bridge *bridge, + const struct drm_display_info *info, + const struct drm_display_mode *mode) { - struct rk3066_hdmi *hdmi = encoder_to_rk3066_hdmi(encoder); + if ((mode->flags & DRM_MODE_FLAG_DBLCLK) || + (mode->flags & DRM_MODE_FLAG_INTERLACE)) + return MODE_BAD; - return rk3066_hdmi_audio_codec_init(hdmi); -} + if (mode->clock < 25000) + return MODE_CLOCK_LOW; -static void rk3066_hdmi_encoder_early_unregister(struct drm_encoder *encoder) -{ - struct rk3066_hdmi *hdmi = encoder_to_rk3066_hdmi(encoder); + if (mode->clock > 148500) + return MODE_CLOCK_HIGH; - platform_device_unregister(hdmi->audio_pdev); + return MODE_OK; } -static const struct drm_encoder_funcs rk3066_hdmi_encoder_funcs = { - .destroy = drm_encoder_cleanup, - .late_register = rk3066_hdmi_encoder_late_register, - .early_unregister = rk3066_hdmi_encoder_early_unregister, -}; - -static const -struct drm_encoder_helper_funcs rk3066_hdmi_encoder_helper_funcs = { - .atomic_check = rk3066_hdmi_encoder_atomic_check, - .atomic_enable = rk3066_hdmi_encoder_enable, - .atomic_disable = rk3066_hdmi_encoder_disable, -}; - -static enum drm_connector_status -rk3066_hdmi_connector_detect(struct drm_connector *connector, bool force) +static int rk3066_hdmi_bridge_atomic_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) { - struct rk3066_hdmi *hdmi = connector_to_rk3066_hdmi(connector); + struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state); + struct rk3066_hdmi *hdmi = bridge->driver_private; + struct drm_display_info *display = &hdmi->connector->display_info; - return (hdmi_readb(hdmi, HDMI_HPG_MENS_STA) & HDMI_HPG_IN_STATUS_HIGH) ? - connector_status_connected : connector_status_disconnected; + s->output_mode = ROCKCHIP_OUT_MODE_P888; + s->output_type = DRM_MODE_CONNECTOR_HDMIA; + + return rk3066_hdmi_bridge_mode_valid(bridge, display, + &crtc_state->adjusted_mode) == MODE_OK ? 0 : -EINVAL; } -static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector) +static const struct drm_edid *rk3066_hdmi_bridge_edid_read(struct drm_bridge *bridge, + struct drm_connector *connector) { - struct rk3066_hdmi *hdmi = connector_to_rk3066_hdmi(connector); + struct rk3066_hdmi *hdmi = bridge->driver_private; const struct drm_edid *drm_edid; - int ret = 0; if (!hdmi->ddc) - return 0; + return NULL; drm_edid = drm_edid_read_ddc(connector, hdmi->ddc); - drm_edid_connector_update(connector, drm_edid); - ret = drm_edid_connector_add_modes(connector); - drm_edid_free(drm_edid); + if (!drm_edid) { + dev_dbg(hdmi->dev, "failed to get edid\n"); + return NULL; + } - return ret; + return drm_edid; } -static enum drm_mode_status -rk3066_hdmi_connector_mode_valid(struct drm_connector *connector, - struct drm_display_mode *mode) +#define MAX_INPUT_SEL_FORMATS 1 + +static u32 *rk3066_hdmi_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state, + u32 output_fmt, + unsigned int *num_input_fmts) { - u32 vic = drm_match_cea_mode(mode); + u32 *input_fmts; - if (vic > 1) - return MODE_OK; - else - return MODE_BAD; -} + *num_input_fmts = 0; -static struct drm_encoder * -rk3066_hdmi_connector_best_encoder(struct drm_connector *connector) -{ - struct rk3066_hdmi *hdmi = connector_to_rk3066_hdmi(connector); + input_fmts = kcalloc(MAX_INPUT_SEL_FORMATS, sizeof(*input_fmts), + GFP_KERNEL); + if (!input_fmts) + return NULL; + + input_fmts[0] = MEDIA_BUS_FMT_RGB888_1X24; + *num_input_fmts = 1; - return &hdmi->encoder.encoder; + return input_fmts; } -static int -rk3066_hdmi_probe_single_connector_modes(struct drm_connector *connector, - uint32_t maxX, uint32_t maxY) +#define MAX_OUTPUT_SEL_FORMATS 1 + +static u32 *rk3066_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state, + unsigned int *num_output_fmts) { - if (maxX > 1920) - maxX = 1920; - if (maxY > 1080) - maxY = 1080; + u32 *output_fmts; - return drm_helper_probe_single_connector_modes(connector, maxX, maxY); -} + *num_output_fmts = 0; -static void rk3066_hdmi_connector_destroy(struct drm_connector *connector) -{ - drm_connector_unregister(connector); - drm_connector_cleanup(connector); -} + output_fmts = kcalloc(MAX_OUTPUT_SEL_FORMATS, sizeof(*output_fmts), + GFP_KERNEL); + if (!output_fmts) + return NULL; -static const struct drm_connector_funcs rk3066_hdmi_connector_funcs = { - .fill_modes = rk3066_hdmi_probe_single_connector_modes, - .detect = rk3066_hdmi_connector_detect, - .destroy = rk3066_hdmi_connector_destroy, - .reset = drm_atomic_helper_connector_reset, - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, -}; + output_fmts[0] = MEDIA_BUS_FMT_FIXED; + *num_output_fmts = 1; + + return output_fmts; +} -static const -struct drm_connector_helper_funcs rk3066_hdmi_connector_helper_funcs = { - .get_modes = rk3066_hdmi_connector_get_modes, - .mode_valid = rk3066_hdmi_connector_mode_valid, - .best_encoder = rk3066_hdmi_connector_best_encoder, +static const struct drm_bridge_funcs rk3066_hdmi_bridge_funcs = { + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, + .atomic_reset = drm_atomic_helper_bridge_reset, + .atomic_check = rk3066_hdmi_bridge_atomic_check, + .atomic_enable = rk3066_hdmi_bridge_atomic_enable, + .atomic_disable = rk3066_hdmi_bridge_atomic_disable, + .atomic_get_input_bus_fmts = rk3066_hdmi_bridge_atomic_get_input_bus_fmts, + .atomic_get_output_bus_fmts = rk3066_hdmi_bridge_atomic_get_output_bus_fmts, + .mode_valid = rk3066_hdmi_bridge_mode_valid, + .detect = rk3066_hdmi_bridge_detect, + .edid_read = rk3066_hdmi_bridge_edid_read, }; -static int rk3066_hdmi_register(struct drm_device *drm, struct rk3066_hdmi *hdmi) +static int rk3066_hdmi_encoder_late_register(struct drm_encoder *encoder) { - struct drm_encoder *encoder = &hdmi->encoder.encoder; - - drm_encoder_helper_add(encoder, &rk3066_hdmi_encoder_helper_funcs); - drm_encoder_init(drm, encoder, &rk3066_hdmi_encoder_funcs, - DRM_MODE_ENCODER_TMDS, NULL); - - hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD; + struct rk3066_hdmi *hdmi = encoder_to_rk3066_hdmi(encoder); - drm_connector_helper_add(&hdmi->connector, - &rk3066_hdmi_connector_helper_funcs); - drm_connector_init_with_ddc(drm, &hdmi->connector, - &rk3066_hdmi_connector_funcs, - DRM_MODE_CONNECTOR_HDMIA, - hdmi->ddc); + return rk3066_hdmi_audio_codec_init(hdmi); +} - drm_connector_attach_encoder(&hdmi->connector, encoder); +static void rk3066_hdmi_encoder_early_unregister(struct drm_encoder *encoder) +{ + struct rk3066_hdmi *hdmi = encoder_to_rk3066_hdmi(encoder); - return 0; + platform_device_unregister(hdmi->audio_pdev); } +static const struct drm_encoder_funcs rk3066_hdmi_encoder_funcs = { + .destroy = drm_encoder_cleanup, + .late_register = rk3066_hdmi_encoder_late_register, + .early_unregister = rk3066_hdmi_encoder_early_unregister, +}; + static irqreturn_t rk3066_hdmi_hardirq(int irq, void *dev_id) { struct rk3066_hdmi *hdmi = dev_id; @@ -863,7 +859,8 @@ static irqreturn_t rk3066_hdmi_irq(int irq, void *dev_id) { struct rk3066_hdmi *hdmi = dev_id; - drm_helper_hpd_irq_event(hdmi->connector.dev); + if (hdmi->bridge.dev) + drm_helper_hpd_irq_event(hdmi->bridge.dev); return IRQ_HANDLED; } @@ -1074,9 +1071,8 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master, hdmi_writeb(hdmi, HDMI_INTR_MASK4, 0); rk3066_hdmi_set_power_mode(hdmi, HDMI_SYS_POWER_MODE_A); - ret = rk3066_hdmi_register(drm, hdmi); - if (ret) - goto err_disable_i2c; + drm_encoder_init(drm, encoder, &rk3066_hdmi_encoder_funcs, + DRM_MODE_ENCODER_TMDS, NULL); dev_set_drvdata(dev, hdmi); @@ -1085,15 +1081,47 @@ static int rk3066_hdmi_bind(struct device *dev, struct device *master, dev_name(dev), hdmi); if (ret) { DRM_DEV_ERROR(dev, "failed to request hdmi irq: %d\n", ret); - goto err_cleanup_hdmi; + goto err_free_encoder; + } + + hdmi->bridge.driver_private = hdmi; + hdmi->bridge.funcs = &rk3066_hdmi_bridge_funcs; + hdmi->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID + | DRM_BRIDGE_OP_HPD; + hdmi->bridge.interlace_allowed = false; + hdmi->bridge.ddc = hdmi->ddc; + hdmi->bridge.of_node = pdev->dev.of_node; + hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA; + + drm_bridge_add(&hdmi->bridge); + + ret = drm_bridge_attach(encoder, &hdmi->bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); + if (ret) { + DRM_DEV_ERROR(dev, "failed to attach bridge: %d\n", ret); + goto err_remove_bridge; + } + + hdmi->connector = drm_bridge_connector_init(drm, encoder); + if (IS_ERR(hdmi->connector)) { + DRM_DEV_ERROR(dev, "failed to initialize bridge connector: %pe\n", hdmi->connector); + ret = PTR_ERR(hdmi->connector); + goto err_remove_bridge; + } + + ret = drm_connector_attach_encoder(hdmi->connector, encoder); + if (ret < 0) { + DRM_DEV_ERROR(dev, "failed to attach connector: %d\n", ret); + goto err_free_connector; } return 0; -err_cleanup_hdmi: - hdmi->connector.funcs->destroy(&hdmi->connector); - hdmi->encoder.encoder.funcs->destroy(&hdmi->encoder.encoder); -err_disable_i2c: +err_free_connector: + drm_connector_cleanup(hdmi->connector); +err_remove_bridge: + drm_bridge_remove(&hdmi->bridge); +err_free_encoder: + drm_encoder_cleanup(encoder); i2c_put_adapter(hdmi->ddc); err_disable_hclk: clk_disable_unprepare(hdmi->hclk); @@ -1106,8 +1134,9 @@ static void rk3066_hdmi_unbind(struct device *dev, struct device *master, { struct rk3066_hdmi *hdmi = dev_get_drvdata(dev); - hdmi->connector.funcs->destroy(&hdmi->connector); - hdmi->encoder.encoder.funcs->destroy(&hdmi->encoder.encoder); + drm_connector_cleanup(hdmi->connector); + drm_bridge_remove(&hdmi->bridge); + drm_encoder_cleanup(&hdmi->encoder.encoder); i2c_put_adapter(hdmi->ddc); clk_disable_unprepare(hdmi->hclk); -- 2.39.2 . From: Radhey Shyam Pandey To: , , , , CC: , , , Radhey Shyam Pandey Subject: [PATCH v5] usb: dwc3: enable CCI support for AMD-xilinx DWC3 controller Date: Tue, 9 Jul 2024 23:40:51 +0530 Message-ID: <1720548651-726412-1-git-send-email-radhey.shyam.pandey@amd.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272673 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The GSBUSCFG0 register bits [31:16] are used to configure the cache type settings of the descriptor and data write/read transfers (Cacheable, Bufferable/Posted). When CCI is enabled in the design, DWC3 core GSBUSCFG0 cache bits must be updated to support CCI enabled transfers in USB. To program GSBUSCFG0 cache bits create a software node property in AMD-xilinx dwc3 glue driver and pass it to dwc3 core. The core then reads this property value and configures it in dwc3_core_init() sequence. Signed-off-by: Radhey Shyam Pandey --- Changes for v5: - Remove linux/of_address.h include from core.c - Move dwc3_get_properties() implementation above dwc3_get_properties(). - Rename DWC3_GSBUSCFG0_REQINFO_UNSPECIFIED. Changes for v4: - Pass swnode GSBUSCFG0 cache property from glue driver based on dma-coherent flag. - Introduce function dwc3_get_software_properties(). - Rename DWC3_GSBUSCFG0_REQINFO_MASK. - Use DWC3_GSBUSCFG0_REQINFO(n) and get rid of mask shift define. - Rename dwc3 member gsbuscfg0_reqinfo and change it type to u32 and define 0xffffffff as unspecified. - In comment dwc3_get_software_properties() description also mention "non-DT (non-ABI) properties". Changes for v3: - In v2 review as suggested by Thinh Nguyen, switch to swnode implementation for passing GSBUSCFG0 cache bits from AMD-xilinx dwc3 glue driver to core driver. Changes for v2: - Make GSBUSCFG0 configuration specific to AMD-xilinx platform. Taken reference from existing commit ec5eb43813a4 ("usb: dwc3: core: add support for realtek SoCs custom's global register start address") v1 link: https://lore.kernel.org/all/20231013053448.11056-1-piyush.mehta@amd.com --- drivers/usb/dwc3/core.c | 37 ++++++++++++++++++++++++++++++++++ drivers/usb/dwc3/core.h | 8 ++++++++ drivers/usb/dwc3/dwc3-xilinx.c | 29 ++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index cb82557678dd..ebb3f6eb191f 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -599,6 +599,18 @@ static void dwc3_cache_hwparams(struct dwc3 *dwc) parms->hwparams9 = dwc3_readl(dwc->regs, DWC3_GHWPARAMS9); } +static void dwc3_config_soc_bus(struct dwc3 *dwc) +{ + if (dwc->gsbuscfg0_reqinfo != DWC3_GSBUSCFG0_REQINFO_UNSPECIFIED) { + u32 reg; + + reg = dwc3_readl(dwc->regs, DWC3_GSBUSCFG0); + reg &= ~DWC3_GSBUSCFG0_REQINFO(~0); + reg |= DWC3_GSBUSCFG0_REQINFO(dwc->gsbuscfg0_reqinfo); + dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, reg); + } +} + static int dwc3_core_ulpi_init(struct dwc3 *dwc) { int intf; @@ -1338,6 +1350,8 @@ static int dwc3_core_init(struct dwc3 *dwc) dwc3_set_incr_burst_type(dwc); + dwc3_config_soc_bus(dwc); + ret = dwc3_phy_power_on(dwc); if (ret) goto err_exit_phy; @@ -1576,6 +1590,27 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc) dwc3_set_prtcap(dwc, DWC3_GCTL_PRTCAP_DEVICE); } +static void dwc3_get_software_properties(struct dwc3 *dwc) +{ + struct device *tmpdev; + u16 gsbuscfg0_reqinfo; + int ret; + + dwc->gsbuscfg0_reqinfo = DWC3_GSBUSCFG0_REQINFO_UNSPECIFIED; + + /* + * Iterate over all parent nodes for finding swnode properties + * and non-DT (non-ABI) properties. + */ + for (tmpdev = dwc->dev; tmpdev; tmpdev = tmpdev->parent) { + ret = device_property_read_u16(tmpdev, + "snps,gsbuscfg0-reqinfo", + &gsbuscfg0_reqinfo); + if (!ret) + dwc->gsbuscfg0_reqinfo = gsbuscfg0_reqinfo; + } +} + static void dwc3_get_properties(struct dwc3 *dwc) { struct device *dev = dwc->dev; @@ -2090,6 +2125,8 @@ static int dwc3_probe(struct platform_device *pdev) dwc3_get_properties(dwc); + dwc3_get_software_properties(dwc); + dwc->reset = devm_reset_control_array_get_optional_shared(dev); if (IS_ERR(dwc->reset)) { ret = PTR_ERR(dwc->reset); diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 3781c736c1a1..1e561fd8b86e 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -194,6 +194,10 @@ #define DWC3_GSBUSCFG0_INCRBRSTENA (1 << 0) /* undefined length enable */ #define DWC3_GSBUSCFG0_INCRBRST_MASK 0xff +/* Global SoC Bus Configuration Register: AHB-prot/AXI-cache/OCP-ReqInfo */ +#define DWC3_GSBUSCFG0_REQINFO(n) (((n) & 0xffff) << 16) +#define DWC3_GSBUSCFG0_REQINFO_UNSPECIFIED 0xffffffff + /* Global Debug LSP MUX Select */ #define DWC3_GDBGLSPMUX_ENDBC BIT(15) /* Host only */ #define DWC3_GDBGLSPMUX_HOSTSELECT(n) ((n) & 0x3fff) @@ -1153,6 +1157,9 @@ struct dwc3_scratchpad_array { * @num_ep_resized: carries the current number endpoints which have had its tx * fifo resized. * @debug_root: root debugfs directory for this device to put its files in. + * @gsbuscfg0_reqinfo: store GSBUSCFG0.DATRDREQINFO, DESRDREQINFO, + * DATWRREQINFO, and DESWRREQINFO value passed from + * glue driver. */ struct dwc3 { struct work_struct drd_work; @@ -1380,6 +1387,7 @@ struct dwc3 { int last_fifo_depth; int num_ep_resized; struct dentry *debug_root; + u32 gsbuscfg0_reqinfo; }; #define INCRX_BURST_MODE 0 diff --git a/drivers/usb/dwc3/dwc3-xilinx.c b/drivers/usb/dwc3/dwc3-xilinx.c index 6095f4dee6ce..bb4d894c16e9 100644 --- a/drivers/usb/dwc3/dwc3-xilinx.c +++ b/drivers/usb/dwc3/dwc3-xilinx.c @@ -246,6 +246,31 @@ static const struct of_device_id dwc3_xlnx_of_match[] = { }; MODULE_DEVICE_TABLE(of, dwc3_xlnx_of_match); +static int dwc3_set_swnode(struct device *dev) +{ + struct device_node *np = dev->of_node, *dwc3_np; + struct property_entry props[2]; + int prop_idx = 0, ret = 0; + + dwc3_np = of_get_compatible_child(np, "snps,dwc3"); + if (!dwc3_np) { + ret = -ENODEV; + dev_err(dev, "failed to find dwc3 core child\n"); + return ret; + } + + memset(props, 0, sizeof(struct property_entry) * ARRAY_SIZE(props)); + if (of_dma_is_coherent(dwc3_np)) + props[prop_idx++] = PROPERTY_ENTRY_U16("snps,gsbuscfg0-reqinfo", + 0xffff); + of_node_put(dwc3_np); + + if (prop_idx) + ret = device_create_managed_software_node(dev, props, NULL); + + return ret; +} + static int dwc3_xlnx_probe(struct platform_device *pdev) { struct dwc3_xlnx *priv_data; @@ -288,6 +313,10 @@ static int dwc3_xlnx_probe(struct platform_device *pdev) if (ret) goto err_clk_put; + ret = dwc3_set_swnode(dev); + if (ret) + goto err_clk_put; + ret = of_platform_populate(np, NULL, NULL, dev); if (ret) goto err_clk_put; base-commit: 34afb82a3c67f869267a26f593b6f8fc6bf35905 -- 2.34.1 . From: Bert Karwatzki To: Masahiro Yamada Cc: Bert Karwatzki , linux-kernel@vger.kernel.org Subject: commit 8ef052389f7f breaks make bindeb-pkg Date: Tue, 9 Jul 2024 20:14:20 +0200 Message-ID: <20240709181422.156829-1-spasswolf@web.de> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272678 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Since linux-next-20240709 "make bindeb-pkg" fails with this error message: $ make bindeb-pkg GEN debian ./scripts/package/mkdebian: 138: 1: parameter not set make[2]: *** [scripts/Makefile.package:98: debian] Error 2 make[1]: *** [/mnt/data/linux-forest/linux-next/Makefile:1538: bindeb-pkg] Error 2 make: *** [Makefile:224: __sub-make] Error 2 Reverting commit 8ef052389f7f fixes the issue. make deb-pkg is not affected and works as usual. Bert Karwatzki . From: Sagar Cheluvegowda Date: Tue, 9 Jul 2024 11:21:40 -0700 Subject: [PATCH v2] arm64: dts: qcom: sa8775p: Add interconnects for ethernet X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-icc_bw_voting_emac_dtsi-v2-1-a1e02c7099a5@quicinc.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , "Krzysztof Kozlowski" , Conor Dooley CC: , , , Andrew Lunn , Andrew Halaney , , Sagar Cheluvegowda Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272682 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Define interconnect properties for ethernet hardware. Suggested-by: Andrew Halaney Signed-off-by: Sagar Cheluvegowda --- Adding interconnect dtsi properties within ethernet node of SA8775P, this patch is adding support for the interconnect properties defined in the series -> https://lore.kernel.org/all/20240703-icc_bw_voting_from_ethqos-v3-0-8f9148ac60a3@quicinc.com/ --- Changes in v2: - Rearrange the interconnect properties for SA8775P to follow the below order. property property-names - Link to v1: https://lore.kernel.org/r/20240708-icc_bw_voting_emac_dtsi-v1-1-4b091b3150c0@quicinc.com --- arch/arm64/boot/dts/qcom/sa8775p.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sa8775p.dtsi b/arch/arm64/boot/dts/qcom/sa8775p.dtsi index 23f1b2e5e624..cc4ad901fbac 100644 --- a/arch/arm64/boot/dts/qcom/sa8775p.dtsi +++ b/arch/arm64/boot/dts/qcom/sa8775p.dtsi @@ -3464,6 +3464,12 @@ ethernet1: ethernet@23000000 { "ptp_ref", "phyaux"; + interconnects = <&aggre1_noc MASTER_EMAC_1 QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS + &config_noc SLAVE_EMAC1_CFG QCOM_ICC_TAG_ALWAYS>; + interconnect-names = "mac-mem", "cpu-mac"; + power-domains = <&gcc EMAC1_GDSC>; phys = <&serdes1>; @@ -3499,6 +3505,12 @@ ethernet0: ethernet@23040000 { "ptp_ref", "phyaux"; + interconnects = <&aggre1_noc MASTER_EMAC QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS + &config_noc SLAVE_EMAC_CFG QCOM_ICC_TAG_ALWAYS>; + interconnect-names = "mac-mem", "cpu-mac"; + power-domains = <&gcc EMAC0_GDSC>; phys = <&serdes0>; --- base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233 change-id: 20240703-icc_bw_voting_emac_dtsi-2a09f9a18174 Best regards, -- Sagar Cheluvegowda . From: marc.ferland@gmail.com To: linus.walleij@linaro.org Cc: corbet@lwn.net, linux-gpio@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Marc Ferland Subject: [PATCH] docs/pinctrl: fix typo in mapping example Date: Tue, 9 Jul 2024 14:39:19 -0400 Message-Id: <20240709183919.3337131-1-marc.ferland@sonatest.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272692 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc,org.kernel.vger.linux-gpio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail From: Marc Ferland Small typo. The device name in the example should be "foo-i2c.0" and not "foo-i2c.o". Signed-off-by: Marc Ferland --- Documentation/driver-api/pin-control.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/driver-api/pin-control.rst b/Documentation/driver-api/pin-control.rst index 4639912dc9cc..27ea1236307e 100644 --- a/Documentation/driver-api/pin-control.rst +++ b/Documentation/driver-api/pin-control.rst @@ -1002,7 +1002,7 @@ it even more compact which assumes you want to use pinctrl-foo and position .. code-block:: c static struct pinctrl_map mapping[] __initdata = { - PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, + PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"), }; -- 2.34.1 . From: Animesh Agarwal To: Cc: Animesh Agarwal , Daniel Baluta , David Rhodes , Richard Fitzgerald , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , patches@opensource.cirrus.com, alsa-devel@alsa-project.org, linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] ASoC: dt-bindings: cirrus,cs4270: Convert to dtschema Date: Wed, 10 Jul 2024 00:12:25 +0530 Message-ID: <20240709184231.125207-1-animeshagarwal28@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272698 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Convert the Cirrus Logic CS4270 audio CODEC bindings to DT schema. Add missing va-supply, vd-supply and vlc-supply properties, because they are already being used in the DTS and the driver for this device. Cc: Daniel Baluta Signed-off-by: Animesh Agarwal --- Changes in v2: - Added proper description for power supply properties. - Added ref to dai-common. - Added '#sound-dai-cells'. - Dropped unused labels in example. - Replaced example node name to a generic name. --- .../bindings/sound/cirrus,cs4270.yaml | 59 +++++++++++++++++++ .../devicetree/bindings/sound/cs4270.txt | 21 ------- 2 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml delete mode 100644 Documentation/devicetree/bindings/sound/cs4270.txt diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml new file mode 100644 index 000000000000..336e11773694 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml @@ -0,0 +1,59 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/sound/cirrus,cs4270.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Cirrus Logic CS4270 audio CODEC + +maintainers: + - patches@opensource.cirrus.com + +description: + The CS4270 is a stereo audio codec. The driver for this device currently only + supports I2C. + +allOf: + - $ref: dai-common.yaml# + +properties: + compatible: + const: cirrus,cs4270 + + reg: + maxItems: 1 + + '#sound-dai-cells': + const: 0 + + reset-gpios: + description: + This pin will be deasserted before communication to the codec starts. + maxItems: 1 + + va-supply: + description: Analog power supply. + + vd-supply: + description: Digital power supply. + + vlc-supply: + description: Serial Control Port power supply. + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + codec@48 { + compatible = "cirrus,cs4270"; + reg = <0x48>; + }; + }; diff --git a/Documentation/devicetree/bindings/sound/cs4270.txt b/Documentation/devicetree/bindings/sound/cs4270.txt deleted file mode 100644 index c33770ec4c3c..000000000000 --- a/Documentation/devicetree/bindings/sound/cs4270.txt +++ /dev/null @@ -1,21 +0,0 @@ -CS4270 audio CODEC - -The driver for this device currently only supports I2C. - -Required properties: - - - compatible : "cirrus,cs4270" - - - reg : the I2C address of the device for I2C - -Optional properties: - - - reset-gpios : a GPIO spec for the reset pin. If specified, it will be - deasserted before communication to the codec starts. - -Example: - -codec: cs4270@48 { - compatible = "cirrus,cs4270"; - reg = <0x48>; -}; -- 2.45.2 . Date: Tue, 9 Jul 2024 12:15:26 -0700 From: Tyler Taormina To: gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, linux-staging@lists.linux.dev Subject: [PATCH] staging: vme_user: Remove redundant parentheses Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272722 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-staging Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Adhere to Linux kernel coding style. Reported by checkpatch: CHECK: Unnecessary parentheses around (...) Signed-off-by: Tyler Taormina --- drivers/staging/vme_user/vme.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/staging/vme_user/vme.c b/drivers/staging/vme_user/vme.c index 0cd370ab1008..5c1d1c9b7b70 100644 --- a/drivers/staging/vme_user/vme.c +++ b/drivers/staging/vme_user/vme.c @@ -274,7 +274,7 @@ struct vme_resource *vme_slave_request(struct vme_dev *vdev, u32 address, mutex_lock(&slave_image->mtx); if (((slave_image->address_attr & address) == address) && ((slave_image->cycle_attr & cycle) == cycle) && - (slave_image->locked == 0)) { + slave_image->locked == 0) { slave_image->locked = 1; mutex_unlock(&slave_image->mtx); allocated_image = slave_image; @@ -473,7 +473,7 @@ struct vme_resource *vme_master_request(struct vme_dev *vdev, u32 address, if (((master_image->address_attr & address) == address) && ((master_image->cycle_attr & cycle) == cycle) && ((master_image->width_attr & dwidth) == dwidth) && - (master_image->locked == 0)) { + master_image->locked == 0) { master_image->locked = 1; spin_unlock(&master_image->lock); allocated_image = master_image; @@ -849,7 +849,7 @@ struct vme_resource *vme_dma_request(struct vme_dev *vdev, u32 route) /* Find an unlocked and compatible controller */ mutex_lock(&dma_ctrlr->mtx); if (((dma_ctrlr->route_attr & route) == route) && - (dma_ctrlr->locked == 0)) { + dma_ctrlr->locked == 0) { dma_ctrlr->locked = 1; mutex_unlock(&dma_ctrlr->mtx); allocated_ctrlr = dma_ctrlr; @@ -1218,9 +1218,9 @@ void vme_bus_error_handler(struct vme_bridge *bridge, u32 aspace = vme_get_aspace(am); list_for_each_entry(handler, &bridge->vme_error_handlers, list) { - if ((aspace == handler->aspace) && - (address >= handler->start) && - (address < handler->end)) { + if (aspace == handler->aspace && + address >= handler->start && + address < handler->end) { if (!handler->num_errors) handler->first_error = address; if (handler->num_errors != UINT_MAX) @@ -1307,7 +1307,7 @@ int vme_irq_request(struct vme_dev *vdev, int level, int statid, return -EINVAL; } - if ((level < 1) || (level > 7)) { + if (level < 1 || level > 7) { dev_err(bridge->parent, "Invalid interrupt level\n"); return -EINVAL; } @@ -1357,7 +1357,7 @@ void vme_irq_free(struct vme_dev *vdev, int level, int statid) return; } - if ((level < 1) || (level > 7)) { + if (level < 1 || level > 7) { dev_err(bridge->parent, "Invalid interrupt level\n"); return; } @@ -1405,7 +1405,7 @@ int vme_irq_generate(struct vme_dev *vdev, int level, int statid) return -EINVAL; } - if ((level < 1) || (level > 7)) { + if (level < 1 || level > 7) { dev_warn(bridge->parent, "Invalid interrupt level\n"); return -EINVAL; } -- 2.39.2 . From: Raphael Gallais-Pou To: David Airlie , Alain Volmat , Maxime Ripard , Thomas Zimmermann , Maarten Lankhorst , Daniel Vetter , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH] MAINTAINERS: add myself to DRM/STi maintainers Date: Tue, 9 Jul 2024 22:14:28 +0200 Message-ID: <20240709201428.132612-1-rgallaispou@gmail.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272762 Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail In lights of recent events and my will to participate in the Linux kernel development I see this opportunity to add myself, and help Alain as maintainer for the DRM/STi drivers. Signed-off-by: Raphael Gallais-Pou --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 71b739b40921..0e583aae590a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7477,6 +7477,7 @@ F: drivers/gpu/drm/rockchip/ DRM DRIVERS FOR STI M: Alain Volmat +M: Raphael Gallais-Pou L: dri-devel@lists.freedesktop.org S: Maintained T: git https://gitlab.freedesktop.org/drm/misc/kernel.git -- 2.45.2 . From: Frank Li Subject: [PATCH 0/6] EDAC: fsl-ddr, add imx9 support Date: Tue, 09 Jul 2024 16:23:01 -0400 Message-Id: <20240709-imx95_edac-v1-0-3e9c146c1b01@nxp.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit To: York Sun , Borislav Petkov , Tony Luck , James Morse , Mauro Carvalho Chehab , Robert Richter , Krzysztof Kozlowski , Rob Herring , Conor Dooley , Krzysztof Kozlowski , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Frank Li , Priyanka Singh , Sherry Sun , Li Yang , Ye Li , Peng Fan X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272765 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-edac Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Add imx9 support for fsl-ddr. Patch 1-2 is prepare patch, no function chagne Patch 3 is small fix for bit shift Patch 4 is dt binding patch. Patch 5 is driver change to support imx9 Patch 6 is imx93 dts change Signed-off-by: Frank Li --- Frank Li (4): EDAC: fsl_ddr: Pass down fsl_mc_pdata in ddr_in32() and ddr_out32() EDAC, fsl_ddr: Move global variable into struct fsl_mc_pdata dt-bindings: memory: fsl: Add compatible string nxp,imx9-memory-controller arm64: dts: imx93: add ddr edac support Priyanka Singh (1): EDAC: fsl: Fix bad bit shift operations Ye Li (1): EDAC: fsl_ddr: Add support for i.MX9 DDR controller .../bindings/memory-controllers/fsl/fsl,ddr.yaml | 31 ++++- arch/arm64/boot/dts/freescale/imx93.dtsi | 8 ++ drivers/edac/fsl_ddr_edac.c | 134 ++++++++++++++------- drivers/edac/fsl_ddr_edac.h | 13 ++ drivers/edac/layerscape_edac.c | 1 + 5 files changed, 141 insertions(+), 46 deletions(-) --- base-commit: 82d01fe6ee52086035b201cfa1410a3b04384257 change-id: 20240704-imx95_edac-209cec208446 Best regards, --- Frank Li . Date: Tue, 9 Jul 2024 13:31:43 -0700 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Message-ID: <20240709203213.799070-1-jstultz@google.com> Subject: [PATCH v11 0/7] Preparatory changes for Proxy Execution v11 From: John Stultz To: LKML Cc: John Stultz , Joel Fernandes , Qais Yousef , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Valentin Schneider , Steven Rostedt , Ben Segall , Zimuzo Ezeozue , Youssef Esmat , Mel Gorman , Will Deacon , Waiman Long , Boqun Feng , "Paul E. McKenney" , Metin Kaya , Xuewen Yan , K Prateek Nayak , Thomas Gleixner , Daniel Lezcano , kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272774 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hey All, I wanted to send out v11 of the preparatory patches for Proxy Execution - an approach for a generalized form of priority inheritance. Here again, I=E2=80=99m only submitting the early / preparatory changes for review, in the hope that we can move these more straightforward patches along and then iteratively move through the more interesting patches in the Proxy Execution series. That said, I=E2=80=99ve not gotten a ton of feedback with this approach, so I=E2=80=99m open to other suggestions. There have been some changes to the preparatory patches in v11: * Qais Yousef suggested a few other spots where the move_queued_task_locked() helper could be used. * Simplified the task_is_pushable() helper to return a bool as suggested by Metin Kaya and others. It will later be a tri-state return, but that can wait for later in the series when it is actually used. * A few spots of re-arranging logic to reduce indentation and simplify things, suggested by Qais and Metin * Metin pointed out some spots in the split scheduler and execution contexts patch where variables could be more clearly named. Many thanks to Metin and Qais for their detailed feedback here! I=E2=80=99ve also continued working on the rest of the series, which you can find here: https://github.com/johnstultz-work/linux-dev/commits/proxy-exec-v11-6.10-r= c7 https://github.com/johnstultz-work/linux-dev.git proxy-exec-v11-6.10-rc7 New changes in the full series include: * Got rid of recursion in activate_blocked_waiter logic * Added more detail to new traceevents as well as additional traceevents for validating behavior * Fixes for edge case where wake_cpu used for return migration ended up outside the affinity mask * Fix for case where we weren=E2=80=99t preserving need_resched when find_proxy_task() returns the idle task * Lots of small detail cleanups suggested by Metin Issues still to address with the full series: * K Prateek Nayak did some testing with an earlier version of the series and saw ~3-5% regressions in some cases. I=E2=80=99m hoping to look into this soon to see if we can reduce those further. * The chain migration functionality needs further iterations and better validation to ensure it truly maintains the RT/DL load balancing invariants (despite this being broken in vanilla upstream with RT_PUSH_IPI currently) * At OSPM, Juri Lelli and the (very very sadly) late Daniel Bristot de Oliveira raised the point that Proxy Exec may not actually be generalizable for SCHED_DEADLINE tasks, as one cannot always correctly donate the resources of the waiter to an owner on a different cpu. If one was to reverse the proxy-migration direction, migrating the owner to the waiter cpu, this would preserve the SCHED_DEADLINE bandwidth calculations, but would break down if the owner's cpu affinity disallowed it. To my understanding this constraint seems to make most forms of priority inheritance infeasible with SCHED_DEADLINE, but I=E2=80=99ll have to leave that to the folks/academics who know it well. After talking with Juri, my current plan is just to special case find_proxy_task() to not proxy with SCHED_DEADLINE (falling back to the current behavior where we deactivate the waiting task). But SCHED_NORMAL waiter tasks would still be able to benefit from Proxy Exec. * Also at OSPM, Thomas Gleixner mentioned we might consider including Proxy Exec in the PREEMPT_RT patch series, however for this to be useful I need to take a stab at deprecating rt_mutexes for proxy mutexes, as everything is an rt_mutex with PREEMPT_RT. Credit/Disclaimer: -------------------- As mentioned previously, this Proxy Execution series has a long history:=20 First described in a paper[1] by Watkins, Straub, Niehaus, then from patches from Peter Zijlstra, extended with lots of work by Juri Lelli, Valentin Schneider, and Connor O'Brien. (and thank you to Steven Rostedt for providing additional details here!) So again, many thanks to those above, as all the credit for this series really is due to them - while the mistakes are likely mine. As always, feedback and review would be greatly appreciated! Thanks so much! -john [1] https://static.lwn.net/images/conf/rtlws11/papers/proc/p38.pdf Cc: Joel Fernandes Cc: Qais Yousef Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Juri Lelli Cc: Vincent Guittot Cc: Dietmar Eggemann Cc: Valentin Schneider Cc: Steven Rostedt Cc: Ben Segall Cc: Zimuzo Ezeozue Cc: Youssef Esmat Cc: Mel Gorman Cc: Will Deacon Cc: Waiman Long Cc: Boqun Feng Cc: "Paul E. McKenney" Cc: Metin Kaya Cc: Xuewen Yan Cc: K Prateek Nayak Cc: Thomas Gleixner Cc: Daniel Lezcano Cc: kernel-team@android.com Connor O'Brien (2): sched: Add move_queued_task_locked helper sched: Consolidate pick_*_task to task_is_pushable helper John Stultz (1): sched: Split out __schedule() deactivate task logic into a helper Juri Lelli (2): locking/mutex: Make mutex::wait_lock irq safe locking/mutex: Expose __mutex_owner() Peter Zijlstra (2): locking/mutex: Remove wakeups from under mutex::wait_lock sched: Split scheduler and execution contexts kernel/locking/mutex.c | 60 +++++++--------- kernel/locking/mutex.h | 27 ++++++++ kernel/locking/rtmutex.c | 30 +++++--- kernel/locking/rwbase_rt.c | 8 ++- kernel/locking/rwsem.c | 4 +- kernel/locking/spinlock_rt.c | 3 +- kernel/locking/ww_mutex.h | 49 +++++++------ kernel/sched/core.c | 130 ++++++++++++++++++++--------------- kernel/sched/deadline.c | 57 +++++++-------- kernel/sched/fair.c | 32 ++++----- kernel/sched/rt.c | 67 ++++++++---------- kernel/sched/sched.h | 48 ++++++++++++- 12 files changed, 295 insertions(+), 220 deletions(-) --=20 2.45.2.993.g49e7a77208-goog . From: Christophe JAILLET To: linus.walleij@linaro.org, lokeshvutla@ti.com, nm@ti.com, robh@kernel.org, tony@atomide.com Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Christophe JAILLET Subject: [PATCH 0/3] pinctrl: ti: ti-iodelay: Fix some error handling paths + 2 unrelated clean-ups Date: Tue, 9 Jul 2024 22:37:42 +0200 Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272784 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-gpio Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail The first patch is completly speculative. It is based on static analysis when a function is called in the remove() function, but not in the error handling path of the probe. When looking deeper at it, it seems that part of ti_iodelay_pinconf_init_dev() also needed to be fixed. /!\ This is completly speculative. So review with care /!\ Patch 2 and 3 are just constification patches spoted while looking at the code. Christophe JAILLET (3): pinctrl: ti: ti-iodelay: Fix some error handling paths pinctrl: ti: ti-iodelay: Constify struct ti_iodelay_reg_data pinctrl: ti: ti-iodelay: Constify struct regmap_config drivers/pinctrl/ti/pinctrl-ti-iodelay.c | 58 ++++++++++--------------- 1 file changed, 24 insertions(+), 34 deletions(-) -- 2.45.2 . From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v2 0/5] ACPI: sysfs: manage sysfs attributes through device core Date: Tue, 09 Jul 2024 22:37:23 +0200 Message-Id: <20240709-acpi-sysfs-groups-v2-0-058ab0667fa8@weissschuh.net> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: "Rafael J. Wysocki" , Len Brown , Robert Moore , Lance Ortiz Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, acpica-devel@lists.linux.dev, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= , stable@vger.kernel.org Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272792 Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.acpica-devel,org.kernel.vger.linux-acpi,org.kernel.vger.stable Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Simplify the lifecycle of the sysfs attributes by letting the device core manage them. Signed-off-by: Thomas Weißschuh --- Changes in v2: - Add fix to validate buffer type validation (patch 1) - Drop usage of devm-APIs as these are unusable for unbound devices - Evaluate _STR on each sysfs access - Link to v1: https://lore.kernel.org/r/20240613-acpi-sysfs-groups-v1-0-665e0deb052a@weissschuh.net --- Thomas Weißschuh (5): ACPI: sysfs: validate return type of _STR method ACPI: sysfs: evaluate _STR on each sysfs access ACPI: sysfs: manage attributes as attribute_group ACPI: sysfs: manage sysfs attributes through device core ACPI: sysfs: remove return value of acpi_device_setup_files() drivers/acpi/device_sysfs.c | 196 +++++++++++++++++++------------------------- drivers/acpi/internal.h | 3 +- drivers/acpi/scan.c | 6 +- include/acpi/acpi_bus.h | 1 - 4 files changed, 89 insertions(+), 117 deletions(-) --- base-commit: 34afb82a3c67f869267a26f593b6f8fc6bf35905 change-id: 20240609-acpi-sysfs-groups-cfa756d16752 Best regards, -- Thomas Weißschuh . From: Brian Norris To: Arnaldo Carvalho de Melo , Namhyung Kim , Ian Rogers , Thomas Richter , Josh Poimboeuf , Peter Zijlstra Cc: linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, Masahiro Yamada , Brian Norris Subject: [PATCH v3 0/3] tools build: Incorrect fixdep dependencies Date: Tue, 9 Jul 2024 13:41:50 -0700 Message-ID: <20240709204203.1481851-1-briannorris@chromium.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272796 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.bpf,org.kernel.vger.linux-kbuild Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi all, The following series consists of a few bugfixes on the topic of "misuse of fixdep in the tools/ build tree." There is no listed maintainer for tools/build, but there are for tools/bpf and tools/objtool, which are the main pieces that affect most users, because they're built as part of the main kernel build. I've addressed this series to a selection of those maintainers, and those that have previously applied build changes in tools/. I hope one of you can apply this series, pending favorable review. Or feel free to point me to a different set of maintainers. This patch series came out of poking around some build errors seen by me and my coworkers, and I found that there were rather similar reports a while back here: Subject: possible dependency error? https://lore.kernel.org/all/ZGVi9HbI43R5trN8@bhelgaas/ I reported some findings to that thread; see also subsequent discussion: https://lore.kernel.org/all/Zk-C5Eg84yt6_nml@google.com/ One element of that discussion: these problems are already solved consistently in Kbuild. tools/build purposely borrows some from Kbuild, but also purposely does not actually use Kbuild. While it'd make my life easier if tools/ would just adopt Kbuild (at least for the tools which are built during kernel builds), I've chosen a path that I hope will yield less resistance -- simply hacking up the existing tools/ build without major changes to its design. NB: I've also CC'd Kbuild folks, since Masahiro has already been so helpful here, but note that this is not really a "kbuild" patch series. Regards, Brian Changes in v3: - Drop unnecessary tools/build/Build Changes in v2: - also fix libbpf shared library rules - ensure OUTPUT is always set, and always an absolute path - add backup $(Q) definition in tools/build/Makefile.include Brian Norris (3): tools build: Correct libsubcmd fixdep dependencies tools build: Avoid circular .fixdep-in.o.cmd issues tools build: Correct bpf fixdep dependencies tools/build/Build | 3 --- tools/build/Makefile | 11 ++--------- tools/build/Makefile.include | 12 +++++++++++- tools/lib/bpf/Makefile | 14 ++++++++++++-- tools/lib/subcmd/Makefile | 2 +- 5 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 tools/build/Build -- 2.45.2.803.g4e1b14247a-goog . Date: Wed, 10 Jul 2024 04:55:54 +0800 From: kernel test robot To: "Gustavo A. R. Silva" Cc: LKML Subject: [gustavoars:testing/WFAMNAE-next20240621-CbC] BUILD SUCCESS 5625a19d70e0d4b59a776586e73f0dfd0c944e88 Message-ID: <202407100452.c6mf75Rk-lkp@intel.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272806 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git testing/WFAMNAE-next20240621-CbC branch HEAD: 5625a19d70e0d4b59a776586e73f0dfd0c944e88 perf: Avoid -Wflex-array-member-not-at-end warnings elapsed time: 1308m configs tested: 156 configs skipped: 2 The following configs have been built successfully. More configs may be tested in the coming days. tested configs: alpha allnoconfig gcc-13.2.0 alpha allyesconfig gcc-13.2.0 alpha defconfig gcc-13.2.0 arc allmodconfig gcc-13.2.0 arc allnoconfig gcc-13.2.0 arc allyesconfig gcc-13.2.0 arc defconfig gcc-13.2.0 arc randconfig-001-20240709 gcc-13.2.0 arc randconfig-002-20240709 gcc-13.2.0 arm allmodconfig gcc-13.2.0 arm allnoconfig clang-19 arm allyesconfig gcc-13.2.0 arm jornada720_defconfig clang-19 arm randconfig-001-20240709 gcc-13.2.0 arm randconfig-002-20240709 clang-19 arm randconfig-003-20240709 clang-19 arm randconfig-004-20240709 gcc-13.2.0 arm sp7021_defconfig gcc-13.2.0 arm64 allmodconfig clang-19 arm64 allnoconfig gcc-13.2.0 arm64 defconfig gcc-13.2.0 arm64 randconfig-001-20240709 clang-19 arm64 randconfig-002-20240709 clang-17 arm64 randconfig-003-20240709 clang-19 arm64 randconfig-004-20240709 clang-19 csky allnoconfig gcc-13.2.0 csky defconfig gcc-13.2.0 csky randconfig-001-20240709 gcc-13.2.0 csky randconfig-002-20240709 gcc-13.2.0 hexagon allmodconfig clang-19 hexagon allnoconfig clang-19 hexagon allyesconfig clang-19 hexagon defconfig clang-19 hexagon randconfig-001-20240709 clang-19 hexagon randconfig-002-20240709 clang-19 i386 allmodconfig gcc-13 i386 allnoconfig gcc-13 i386 allyesconfig gcc-13 i386 buildonly-randconfig-001-20240709 gcc-11 i386 buildonly-randconfig-002-20240709 gcc-13 i386 buildonly-randconfig-003-20240709 clang-18 i386 buildonly-randconfig-004-20240709 clang-18 i386 buildonly-randconfig-005-20240709 clang-18 i386 buildonly-randconfig-006-20240709 clang-18 i386 defconfig clang-18 i386 randconfig-001-20240709 gcc-13 i386 randconfig-002-20240709 clang-18 i386 randconfig-003-20240709 gcc-11 i386 randconfig-004-20240709 gcc-13 i386 randconfig-005-20240709 gcc-13 i386 randconfig-006-20240709 gcc-13 i386 randconfig-011-20240709 clang-18 i386 randconfig-012-20240709 gcc-13 i386 randconfig-013-20240709 gcc-12 i386 randconfig-014-20240709 clang-18 i386 randconfig-015-20240709 clang-18 i386 randconfig-016-20240709 gcc-10 loongarch allmodconfig gcc-13.2.0 loongarch allnoconfig gcc-13.2.0 loongarch randconfig-001-20240709 gcc-13.2.0 loongarch randconfig-002-20240709 gcc-13.2.0 m68k allmodconfig gcc-13.2.0 m68k allnoconfig gcc-13.2.0 m68k allyesconfig gcc-13.2.0 microblaze allmodconfig gcc-13.2.0 microblaze allnoconfig gcc-13.2.0 microblaze allyesconfig gcc-13.2.0 mips allnoconfig gcc-13.2.0 mips ci20_defconfig clang-19 mips decstation_64_defconfig gcc-13.2.0 mips loongson1c_defconfig gcc-13.2.0 mips omega2p_defconfig clang-19 mips sb1250_swarm_defconfig gcc-13.2.0 nios2 allnoconfig gcc-13.2.0 nios2 randconfig-001-20240709 gcc-13.2.0 nios2 randconfig-002-20240709 gcc-13.2.0 openrisc allnoconfig gcc-13.2.0 openrisc allyesconfig gcc-13.2.0 openrisc defconfig gcc-13.2.0 openrisc simple_smp_defconfig gcc-13.2.0 parisc allmodconfig gcc-13.2.0 parisc allnoconfig gcc-13.2.0 parisc allyesconfig gcc-13.2.0 parisc defconfig gcc-13.2.0 parisc randconfig-001-20240709 gcc-13.2.0 parisc randconfig-002-20240709 gcc-13.2.0 powerpc allmodconfig gcc-13.2.0 powerpc allnoconfig gcc-13.2.0 powerpc allyesconfig clang-19 powerpc arches_defconfig gcc-13.2.0 powerpc asp8347_defconfig clang-17 powerpc currituck_defconfig clang-19 powerpc mpc8313_rdb_defconfig gcc-13.2.0 powerpc mpc832x_rdb_defconfig gcc-13.2.0 powerpc powernv_defconfig gcc-13.2.0 powerpc randconfig-001-20240709 clang-19 powerpc randconfig-002-20240709 gcc-13.2.0 powerpc randconfig-003-20240709 clang-15 powerpc tqm8548_defconfig clang-19 powerpc64 randconfig-001-20240709 gcc-13.2.0 powerpc64 randconfig-002-20240709 gcc-13.2.0 powerpc64 randconfig-003-20240709 clang-19 riscv allmodconfig clang-19 riscv allnoconfig gcc-13.2.0 riscv allyesconfig clang-19 riscv randconfig-001-20240709 clang-17 riscv randconfig-002-20240709 gcc-13.2.0 s390 allmodconfig clang-19 s390 allnoconfig clang-19 s390 allyesconfig gcc-13.2.0 s390 randconfig-001-20240709 gcc-13.2.0 s390 randconfig-002-20240709 clang-19 sh allmodconfig gcc-13.2.0 sh allnoconfig gcc-13.2.0 sh allyesconfig gcc-13.2.0 sh randconfig-001-20240709 gcc-13.2.0 sh randconfig-002-20240709 gcc-13.2.0 sparc allmodconfig gcc-13.2.0 sparc64 randconfig-001-20240709 gcc-13.2.0 sparc64 randconfig-002-20240709 gcc-13.2.0 um allmodconfig clang-19 um allnoconfig clang-17 um allyesconfig gcc-13 um randconfig-001-20240709 gcc-13 um randconfig-002-20240709 gcc-11 x86_64 allnoconfig clang-18 x86_64 allyesconfig clang-18 x86_64 buildonly-randconfig-001-20240709 gcc-11 x86_64 buildonly-randconfig-002-20240709 clang-18 x86_64 buildonly-randconfig-003-20240709 clang-18 x86_64 buildonly-randconfig-004-20240709 gcc-9 x86_64 buildonly-randconfig-005-20240709 gcc-13 x86_64 buildonly-randconfig-006-20240709 clang-18 x86_64 defconfig gcc-13 x86_64 randconfig-001-20240709 clang-18 x86_64 randconfig-002-20240709 gcc-10 x86_64 randconfig-003-20240709 clang-18 x86_64 randconfig-004-20240709 gcc-12 x86_64 randconfig-005-20240709 gcc-13 x86_64 randconfig-006-20240709 gcc-8 x86_64 randconfig-011-20240709 clang-18 x86_64 randconfig-012-20240709 clang-18 x86_64 randconfig-013-20240709 clang-18 x86_64 randconfig-014-20240709 clang-18 x86_64 randconfig-015-20240709 clang-18 x86_64 randconfig-016-20240709 clang-18 x86_64 randconfig-071-20240709 gcc-7 x86_64 randconfig-072-20240709 clang-18 x86_64 randconfig-073-20240709 gcc-13 x86_64 randconfig-074-20240709 gcc-13 x86_64 randconfig-075-20240709 gcc-11 x86_64 randconfig-076-20240709 gcc-13 x86_64 rhel-8.3-rust clang-18 xtensa allnoconfig gcc-13.2.0 xtensa randconfig-001-20240709 gcc-13.2.0 xtensa randconfig-002-20240709 gcc-13.2.0 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki . Sender: Tejun Heo From: Tejun Heo To: void@manifault.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, schatzberg.dan@gmail.com Subject: [PATCHSET sched_ext/for-6.11] sched_ext: Fix scx_bpf_reenqueue_local() Date: Tue, 9 Jul 2024 11:09:41 -1000 Message-ID: <20240709211001.1198145-1-tj@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272817 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Fix scx_bpf_reenqueue_local()'s misbehaviors in two cases: - when SCX_ENQ_HEAD is used to dispatch a re-enqueued task back to the same local DSQ. - when the CPU is being preempted by stop_task for task migration. This patchset contains the following two patches: 0001-sched_ext-Reimplement-scx_bpf_reenqueue_local.patch 0002-sched_ext-Make-scx_bpf_reenqueue_local-skip-tasks-th.patch and is also available in the following git branch: git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-fix-reenqueue_local diffstat follows. Thanks. kernel/sched/ext.c | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) -- tejun . Message-ID: <06099367-4da5-4777-aace-b5acddbad7b8@gmail.com> Date: Tue, 9 Jul 2024 23:14:51 +0200 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Language: en-US To: Linux Kernel Mailing List Cc: Alexandre Bounine , Matt Porter From: Mirsad Todorovac Subject: [PROBLEM linux-next] Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272823 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Dear all, On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F which was known from before to trigger various errors in compile and build process. Though this might seem as contributing to channel noise, Linux refuses to build this config, treating warnings as errors, using this build line: $ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty left, there seems to be more tedious work ahead to make the compilers happy. The compiler output is: drivers/rapidio/rio_cm.c: In function ‘rio_txcq_handler’: drivers/rapidio/rio_cm.c:675:21: error: variable ‘rc’ set but not used [-Werror=unused-but-set-variable] 675 | int rc; | ^~ cc1: all warnings being treated as errors 670 /* 671 * If there are pending requests, insert them into transmit queue 672 */ 673 if (!list_empty(&cm->tx_reqs) && (cm->tx_cnt < RIOCM_TX_RING_SIZE)) { 674 struct tx_req *req, *_req; → 675 int rc; 676 677 list_for_each_entry_safe(req, _req, &cm->tx_reqs, node) { 678 list_del(&req->node); 679 cm->tx_buf[cm->tx_slot] = req->buffer; → 680 rc = rio_add_outb_message(cm->mport, req->rdev, cmbox, 681 req->buffer, req->len); 682 kfree(req->buffer); 683 kfree(req); 684 685 ++cm->tx_cnt; 686 ++cm->tx_slot; 687 cm->tx_slot &= (RIOCM_TX_RING_SIZE - 1); 688 if (cm->tx_cnt == RIOCM_TX_RING_SIZE) 689 break; 690 } 691 } 692 693 spin_unlock(&cm->tx_lock); 694 } Hope this helps. Best regards, Mirsad Todorovac . Message-ID: Date: Tue, 9 Jul 2024 23:20:34 +0200 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Language: en-US To: Linux Kernel Mailing List Cc: Peter Rosin From: Mirsad Todorovac Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_drivers/mux/adg792a=2Ec=3A134=3A?= =?UTF-8?B?MzQ6IGVycm9yOiDigJhhZGc3OTJhX29mX21hdGNo4oCZIGRlZmluZWQgYnV0IG5v?= =?UTF-8?Q?t_used_=5B-Werror=3Dunused-const-variable=3D=5D?= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272825 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Dear all, On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F which was known from before to trigger various errors in compile and build process. Though this might seem as contributing to channel noise, Linux refuses to build this config, treating warnings as errors, using this build line: $ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty left, there seems to be more tedious work ahead to make the compilers happy. The compiler output is: drivers/mux/adg792a.c:134:34: error: ‘adg792a_of_match’ defined but not used [-Werror=unused-const-variable=] 134 | static const struct of_device_id adg792a_of_match[] = { | ^~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors The offending lines are: drivers/mux/adg792a.c:134 134 static const struct of_device_id adg792a_of_match[] = { 135 { .compatible = "adi,adg792a", }, 136 { .compatible = "adi,adg792g", }, 137 { } 138 }; 139 MODULE_DEVICE_TABLE(of, adg792a_of_match); Hope this helps. Best regards, Mirsad Todorovac . Sender: Tejun Heo From: Tejun Heo To: void@manifault.com Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, schatzberg.dan@gmail.com, mingo@redhat.com, peterz@infradead.org, changwoo@igalia.com, righi.andrea@gmail.com Subject: [PATCHSET sched_ext/for-6.11] sched_ext: Allow SCX_DSQ_LOCAL_ON for direct dispatches Date: Tue, 9 Jul 2024 11:21:06 -1000 Message-ID: <20240709212137.1199269-1-tj@kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272826 Newsgroups: org.kernel.vger.linux-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hello, In ops.dispatch(), SCX_DSQ_LOCAL_ON can be used to dispatch the task to the local DSQ of any CPU. However, during direct dispatch from ops.select_cpu() and ops.enqueue(), this isn't allowed. This is because dispatching to the local DSQ of a remote CPU requires locking both the task's current and new rq's and such double locking can't be done directly from ops.enqueue(). This gap in API forces schedulers into work-arounds which are not straightforward or optimal such as skipping direct dispatches in such cases. This patchset implements SCX_DSQ_LOCAL_ON support for direct dispatches. This patchset contains the following patches: 0001-sched-Move-struct-balance_callback-definition-upward.patch 0002-sched_ext-Open-code-task_linked_on_dsq.patch 0003-sched_ext-Make-rf-optional-for-dispatch_to_local_dsq.patch 0004-sched_ext-s-SCX_RQ_BALANCING-SCX_RQ_IN_BALANCE-and-a.patch 0005-sched_ext-Allow-SCX_DSQ_LOCAL_ON-for-direct-dispatch.patch 0006-sched_ext-scx_qmap-Pick-idle-CPU-for-direct-dispatch.patch While 0001 is a scheduler core change, all it does is moving the definition of struct balance_callback so that it's visible for struct scx_rq definition. If there are no objections, it'd make sense to route it through the sched_ext tree with the rest of the changes. and is also available in the following git branch: git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git scx-ddsp-local-on kernel/sched/ext.c | 207 +++++++++++++++++++++++++++++++++++++++++++++++++++------------ kernel/sched/sched.h | 19 +++-- tools/sched_ext/scx_qmap.bpf.c | 39 +++++++++-- tools/sched_ext/scx_qmap.c | 5 - 4 files changed, 215 insertions(+), 55 deletions(-) -- tejun . Content-Type: multipart/mixed; boundary="------------7RQm7x3v8VP8OKBUALlH80RD" Message-ID: <27abdc76-37ea-4566-8e1a-ad64ee97344b@gmail.com> Date: Tue, 9 Jul 2024 23:28:25 +0200 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Language: en-US To: Linux Kernel Mailing List From: Mirsad Todorovac Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_drivers/mux/adg792a=2Ec=3A134=3A?= =?UTF-8?B?MzQ6IGVycm9yOiDigJhhZGc3OTJhX29mX21hdGNo4oCZIGRlZmluZWQgYnV0IG5v?= =?UTF-8?Q?t_used_=5B-Werror=3Dunused-const-variable=3D=5D?= Cc: "Kashyap, Desai" , Eric Moore , Sathya Prakash , Sreekanth Reddy , Suganath Prabu Subramani , MPT-FusionLinux.pdl@broadcom.com, linux-scsi@vger.kernel.org Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272836 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail This is a multi-part message in MIME format. --------------7RQm7x3v8VP8OKBUALlH80RD Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dear all, On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F which was known from before to trigger various errors in compile and build process. Though this might seem as contributing to channel noise, Linux refuses to build this config, treating warnings as errors, using this build line: $ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty left, there seems to be more tedious work ahead to make the compilers happy. The compiler output is: drivers/message/fusion/mptsas.c: In function ‘mptsas_reprobe_lun’: drivers/message/fusion/mptsas.c:4234:13: error: variable ‘rc’ set but not used [-Werror=unused-but-set-variable] 4234 | int rc; | ^~ drivers/message/fusion/mptsas.c: In function ‘mptsas_issue_tm’: drivers/message/fusion/mptsas.c:4793:26: error: variable ‘timeleft’ set but not used [-Werror=unused-but-set-variable] 4793 | unsigned long timeleft; | ^~~~~~~~ 4230 4231 static void 4232 mptsas_reprobe_lun(struct scsi_device *sdev, void *data) 4233 { 4234 → int rc; 4235 4236 sdev->no_uld_attach = data ? 1 : 0; 4237 → rc = scsi_device_reprobe(sdev); 4238 } 4239 4787 mptsas_issue_tm(MPT_ADAPTER *ioc, u8 type, u8 channel, u8 id, u64 lun, 4788 int task_context, ulong timeout, u8 *issue_reset) 4789 { 4790 MPT_FRAME_HDR *mf; 4791 SCSITaskMgmt_t *pScsiTm; 4792 int retval; 4793 → unsigned long timeleft; 4794 4795 *issue_reset = 0; 4796 mf = mpt_get_msg_frame(mptsasDeviceResetCtx, ioc); 4797 if (mf == NULL) { 4798 retval = -1; /* return failure */ 4799 dtmprintk(ioc, printk(MYIOC_s_WARN_FMT "TaskMgmt request: no " 4800 "msg frames!!\n", ioc->name)); 4801 goto out; 4802 } 4803 4804 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "TaskMgmt request: mr = %p, " 4805 "task_type = 0x%02X,\n\t timeout = %ld, fw_channel = %d, " 4806 "fw_id = %d, lun = %lld,\n\t task_context = 0x%x\n", ioc->name, mf, 4807 type, timeout, channel, id, (unsigned long long)lun, 4808 task_context)); 4809 4810 pScsiTm = (SCSITaskMgmt_t *) mf; 4811 memset(pScsiTm, 0, sizeof(SCSITaskMgmt_t)); 4812 pScsiTm->Function = MPI_FUNCTION_SCSI_TASK_MGMT; 4813 pScsiTm->TaskType = type; 4814 pScsiTm->MsgFlags = 0; 4815 pScsiTm->TargetID = id; 4816 pScsiTm->Bus = channel; 4817 pScsiTm->ChainOffset = 0; 4818 pScsiTm->Reserved = 0; 4819 pScsiTm->Reserved1 = 0; 4820 pScsiTm->TaskMsgContext = task_context; 4821 int_to_scsilun(lun, (struct scsi_lun *)pScsiTm->LUN); 4822 4823 INITIALIZE_MGMT_STATUS(ioc->taskmgmt_cmds.status) 4824 CLEAR_MGMT_STATUS(ioc->internal_cmds.status) 4825 retval = 0; 4826 mpt_put_msg_frame_hi_pri(mptsasDeviceResetCtx, ioc, mf); 4827 4828 /* Now wait for the command to complete */ 4829 → timeleft = wait_for_completion_timeout(&ioc->taskmgmt_cmds.done, 4830 timeout*HZ); 4831 if (!(ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_COMMAND_GOOD)) { 4832 retval = -1; /* return failure */ 4833 dtmprintk(ioc, printk(MYIOC_s_ERR_FMT 4834 "TaskMgmt request: TIMED OUT!(mr=%p)\n", ioc->name, mf)); 4835 mpt_free_msg_frame(ioc, mf); 4836 if (ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET) 4837 goto out; 4838 *issue_reset = 1; 4839 goto out; 4840 } 4841 4842 if (!(ioc->taskmgmt_cmds.status & MPT_MGMT_STATUS_RF_VALID)) { 4843 retval = -1; /* return failure */ 4844 dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT 4845 "TaskMgmt request: failed with no reply\n", ioc->name)); 4846 goto out; 4847 } Hope this helps. Best regards, Mirsad Todorovac --------------7RQm7x3v8VP8OKBUALlH80RD Content-Type: text/plain; charset=UTF-8; name=".config" Content-Disposition: attachment; filename=".config" Content-Transfer-Encoding: base64 IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElULgojIExpbnV4 L3g4NiA2LjEwLjAtcmM3IEtlcm5lbCBDb25maWd1cmF0aW9uCiMKQ09ORklHX0NDX1ZFUlNJ T05fVEVYVD0iZ2NjIChVYnVudHUgMTIuMy4wLTF1YnVudHUxfjIyLjA0KSAxMi4zLjAiCkNP TkZJR19DQ19JU19HQ0M9eQpDT05GSUdfR0NDX1ZFUlNJT049MTIwMzAwCkNPTkZJR19DTEFO R19WRVJTSU9OPTAKQ09ORklHX0FTX0lTX0dOVT15CkNPTkZJR19BU19WRVJTSU9OPTIzODAw CkNPTkZJR19MRF9JU19CRkQ9eQpDT05GSUdfTERfVkVSU0lPTj0yMzgwMApDT05GSUdfTExE X1ZFUlNJT049MApDT05GSUdfQ0NfQ0FOX0xJTks9eQpDT05GSUdfQ0NfQ0FOX0xJTktfU1RB VElDPXkKQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQ9eQpDT05GSUdfQ0NfSEFTX0FT TV9HT1RPX1RJRURfT1VUUFVUPXkKQ09ORklHX0dDQ19BU01fR09UT19PVVRQVVRfV09SS0FS T1VORD15CkNPTkZJR19UT09MU19TVVBQT1JUX1JFTFI9eQpDT05GSUdfQ0NfSEFTX0FTTV9J TkxJTkU9eQpDT05GSUdfQ0NfSEFTX05PX1BST0ZJTEVfRk5fQVRUUj15CkNPTkZJR19QQUhP TEVfVkVSU0lPTj0xMjUKQ09ORklHX0NPTlNUUlVDVE9SUz15CkNPTkZJR19JUlFfV09SSz15 CkNPTkZJR19CVUlMRFRJTUVfVEFCTEVfU09SVD15CkNPTkZJR19USFJFQURfSU5GT19JTl9U QVNLPXkKCiMKIyBHZW5lcmFsIHNldHVwCiMKQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0z MgojIENPTkZJR19DT01QSUxFX1RFU1QgaXMgbm90IHNldApDT05GSUdfV0VSUk9SPXkKQ09O RklHX1VBUElfSEVBREVSX1RFU1Q9eQpDT05GSUdfTE9DQUxWRVJTSU9OPSIiCiMgQ09ORklH X0xPQ0FMVkVSU0lPTl9BVVRPIGlzIG5vdCBzZXQKQ09ORklHX0JVSUxEX1NBTFQ9IiIKQ09O RklHX0hBVkVfS0VSTkVMX0daSVA9eQpDT05GSUdfSEFWRV9LRVJORUxfQlpJUDI9eQpDT05G SUdfSEFWRV9LRVJORUxfTFpNQT15CkNPTkZJR19IQVZFX0tFUk5FTF9YWj15CkNPTkZJR19I QVZFX0tFUk5FTF9MWk89eQpDT05GSUdfSEFWRV9LRVJORUxfTFo0PXkKQ09ORklHX0hBVkVf S0VSTkVMX1pTVEQ9eQpDT05GSUdfS0VSTkVMX0daSVA9eQojIENPTkZJR19LRVJORUxfQlpJ UDIgaXMgbm90IHNldAojIENPTkZJR19LRVJORUxfTFpNQSBpcyBub3Qgc2V0CiMgQ09ORklH X0tFUk5FTF9YWiBpcyBub3Qgc2V0CiMgQ09ORklHX0tFUk5FTF9MWk8gaXMgbm90IHNldAoj IENPTkZJR19LRVJORUxfTFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfS0VSTkVMX1pTVEQgaXMg bm90IHNldApDT05GSUdfREVGQVVMVF9JTklUPSIiCkNPTkZJR19ERUZBVUxUX0hPU1ROQU1F PSIobm9uZSkiCiMgQ09ORklHX1NZU1ZJUEMgaXMgbm90IHNldAojIENPTkZJR19XQVRDSF9R VUVVRSBpcyBub3Qgc2V0CiMgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0ggaXMgbm90IHNl dAojIENPTkZJR19VU0VMSUIgaXMgbm90IHNldApDT05GSUdfSEFWRV9BUkNIX0FVRElUU1lT Q0FMTD15CgojCiMgSVJRIHN1YnN5c3RlbQojCkNPTkZJR19HRU5FUklDX0lSUV9QUk9CRT15 CkNPTkZJR19HRU5FUklDX0lSUV9TSE9XPXkKQ09ORklHX0dFTkVSSUNfSVJRX0VGRkVDVElW RV9BRkZfTUFTSz15CkNPTkZJR19HRU5FUklDX1BFTkRJTkdfSVJRPXkKQ09ORklHX0dFTkVS SUNfSVJRX01JR1JBVElPTj15CkNPTkZJR19HRU5FUklDX0lSUV9JTkpFQ1RJT049eQpDT05G SUdfSEFSRElSUVNfU1dfUkVTRU5EPXkKQ09ORklHX0dFTkVSSUNfSVJRX0NISVA9eQpDT05G SUdfSVJRX0RPTUFJTj15CkNPTkZJR19JUlFfU0lNPXkKQ09ORklHX0lSUV9ET01BSU5fSElF UkFSQ0hZPXkKQ09ORklHX0dFTkVSSUNfSVJRX01BVFJJWF9BTExPQ0FUT1I9eQpDT05GSUdf R0VORVJJQ19JUlFfUkVTRVJWQVRJT05fTU9ERT15CkNPTkZJR19JUlFfRk9SQ0VEX1RIUkVB RElORz15CkNPTkZJR19TUEFSU0VfSVJRPXkKQ09ORklHX0dFTkVSSUNfSVJRX0RFQlVHRlM9 eQojIGVuZCBvZiBJUlEgc3Vic3lzdGVtCgpDT05GSUdfQ0xPQ0tTT1VSQ0VfV0FUQ0hET0c9 eQpDT05GSUdfQVJDSF9DTE9DS1NPVVJDRV9JTklUPXkKQ09ORklHX0NMT0NLU09VUkNFX1ZB TElEQVRFX0xBU1RfQ1lDTEU9eQpDT05GSUdfR0VORVJJQ19USU1FX1ZTWVNDQUxMPXkKQ09O RklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFM9eQpDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UU19C Uk9BRENBU1Q9eQpDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UU19CUk9BRENBU1RfSURMRT15 CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX01JTl9BREpVU1Q9eQpDT05GSUdfR0VORVJJ Q19DTU9TX1VQREFURT15CkNPTkZJR19IQVZFX1BPU0lYX0NQVV9USU1FUlNfVEFTS19XT1JL PXkKQ09ORklHX1BPU0lYX0NQVV9USU1FUlNfVEFTS19XT1JLPXkKQ09ORklHX1RJTUVfS1VO SVRfVEVTVD15CkNPTkZJR19DT05URVhUX1RSQUNLSU5HPXkKQ09ORklHX0NPTlRFWFRfVFJB Q0tJTkdfSURMRT15CgojCiMgVGltZXJzIHN1YnN5c3RlbQojCkNPTkZJR19IWl9QRVJJT0RJ Qz15CiMgQ09ORklHX05PX0haX0lETEUgaXMgbm90IHNldApDT05GSUdfTk9fSFo9eQojIENP TkZJR19ISUdIX1JFU19USU1FUlMgaXMgbm90IHNldApDT05GSUdfQ0xPQ0tTT1VSQ0VfV0FU Q0hET0dfTUFYX1NLRVdfVVM9MTI1CiMgZW5kIG9mIFRpbWVycyBzdWJzeXN0ZW0KCkNPTkZJ R19CUEY9eQpDT05GSUdfSEFWRV9FQlBGX0pJVD15CgojCiMgQlBGIHN1YnN5c3RlbQojCkNP TkZJR19CUEZfU1lTQ0FMTD15CkNPTkZJR19CUEZfSklUPXkKIyBDT05GSUdfQlBGX0pJVF9B TFdBWVNfT04gaXMgbm90IHNldApDT05GSUdfQlBGX1VOUFJJVl9ERUZBVUxUX09GRj15CkNP TkZJR19VU0VSTU9ERV9EUklWRVI9eQpDT05GSUdfQlBGX1BSRUxPQUQ9eQojIENPTkZJR19C UEZfUFJFTE9BRF9VTUQgaXMgbm90IHNldAojIGVuZCBvZiBCUEYgc3Vic3lzdGVtCgpDT05G SUdfUFJFRU1QVF9WT0xVTlRBUllfQlVJTEQ9eQojIENPTkZJR19QUkVFTVBUX05PTkUgaXMg bm90IHNldApDT05GSUdfUFJFRU1QVF9WT0xVTlRBUlk9eQojIENPTkZJR19QUkVFTVBUIGlz IG5vdCBzZXQKIyBDT05GSUdfUFJFRU1QVF9EWU5BTUlDIGlzIG5vdCBzZXQKIyBDT05GSUdf U0NIRURfQ09SRSBpcyBub3Qgc2V0CgojCiMgQ1BVL1Rhc2sgdGltZSBhbmQgc3RhdHMgYWNj b3VudGluZwojCkNPTkZJR19USUNLX0NQVV9BQ0NPVU5USU5HPXkKQ09ORklHX0lSUV9USU1F X0FDQ09VTlRJTkc9eQpDT05GSUdfSEFWRV9TQ0hFRF9BVkdfSVJRPXkKQ09ORklHX0JTRF9Q Uk9DRVNTX0FDQ1Q9eQpDT05GSUdfQlNEX1BST0NFU1NfQUNDVF9WMz15CkNPTkZJR19QU0k9 eQojIENPTkZJR19QU0lfREVGQVVMVF9ESVNBQkxFRCBpcyBub3Qgc2V0CiMgZW5kIG9mIENQ VS9UYXNrIHRpbWUgYW5kIHN0YXRzIGFjY291bnRpbmcKCkNPTkZJR19DUFVfSVNPTEFUSU9O PXkKCiMKIyBSQ1UgU3Vic3lzdGVtCiMKQ09ORklHX1RSRUVfUkNVPXkKIyBDT05GSUdfUkNV X0VYUEVSVCBpcyBub3Qgc2V0CkNPTkZJR19UUkVFX1NSQ1U9eQpDT05GSUdfVEFTS1NfUkNV X0dFTkVSSUM9eQpDT05GSUdfTkVFRF9UQVNLU19SQ1U9eQpDT05GSUdfVEFTS1NfVFJBQ0Vf UkNVPXkKQ09ORklHX1JDVV9TVEFMTF9DT01NT049eQpDT05GSUdfUkNVX05FRURfU0VHQ0JM SVNUPXkKIyBlbmQgb2YgUkNVIFN1YnN5c3RlbQoKQ09ORklHX0lLQ09ORklHPXkKQ09ORklH X0lLQ09ORklHX1BST0M9eQpDT05GSUdfSUtIRUFERVJTPXkKQ09ORklHX0xPR19CVUZfU0hJ RlQ9MTcKQ09ORklHX0xPR19DUFVfTUFYX0JVRl9TSElGVD0xMgojIENPTkZJR19QUklOVEtf SU5ERVggaXMgbm90IHNldApDT05GSUdfSEFWRV9VTlNUQUJMRV9TQ0hFRF9DTE9DSz15Cgoj CiMgU2NoZWR1bGVyIGZlYXR1cmVzCiMKIyBlbmQgb2YgU2NoZWR1bGVyIGZlYXR1cmVzCgpD T05GSUdfQVJDSF9XQU5UX0JBVENIRURfVU5NQVBfVExCX0ZMVVNIPXkKQ09ORklHX0NDX0lN UExJQ0lUX0ZBTExUSFJPVUdIPSItV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTUiCkNPTkZJR19H Q0MxMF9OT19BUlJBWV9CT1VORFM9eQpDT05GSUdfQ0NfTk9fQVJSQVlfQk9VTkRTPXkKQ09O RklHX0dDQ19OT19TVFJJTkdPUF9PVkVSRkxPVz15CkNPTkZJR19DQ19OT19TVFJJTkdPUF9P VkVSRkxPVz15CkNPTkZJR19TTEFCX09CSl9FWFQ9eQpDT05GSUdfQ0dST1VQUz15CkNPTkZJ R19QQUdFX0NPVU5URVI9eQpDT05GSUdfQ0dST1VQX0ZBVk9SX0RZTk1PRFM9eQpDT05GSUdf TUVNQ0c9eQojIENPTkZJR19NRU1DR19WMSBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19DR1JP VVAgaXMgbm90IHNldAojIENPTkZJR19DR1JPVVBfU0NIRUQgaXMgbm90IHNldApDT05GSUdf U0NIRURfTU1fQ0lEPXkKIyBDT05GSUdfQ0dST1VQX1BJRFMgaXMgbm90IHNldAojIENPTkZJ R19DR1JPVVBfUkRNQSBpcyBub3Qgc2V0CkNPTkZJR19DR1JPVVBfRlJFRVpFUj15CkNPTkZJ R19DR1JPVVBfSFVHRVRMQj15CiMgQ09ORklHX0NQVVNFVFMgaXMgbm90IHNldApDT05GSUdf Q0dST1VQX0RFVklDRT15CiMgQ09ORklHX0NHUk9VUF9DUFVBQ0NUIGlzIG5vdCBzZXQKQ09O RklHX0NHUk9VUF9QRVJGPXkKIyBDT05GSUdfQ0dST1VQX0JQRiBpcyBub3Qgc2V0CkNPTkZJ R19DR1JPVVBfTUlTQz15CkNPTkZJR19OQU1FU1BBQ0VTPXkKIyBDT05GSUdfVVRTX05TIGlz IG5vdCBzZXQKIyBDT05GSUdfVElNRV9OUyBpcyBub3Qgc2V0CiMgQ09ORklHX1VTRVJfTlMg aXMgbm90IHNldAojIENPTkZJR19QSURfTlMgaXMgbm90IHNldAojIENPTkZJR19DSEVDS1BP SU5UX1JFU1RPUkUgaXMgbm90IHNldAojIENPTkZJR19TQ0hFRF9BVVRPR1JPVVAgaXMgbm90 IHNldAojIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19ERVZfSU5JVFJE IGlzIG5vdCBzZXQKQ09ORklHX0JPT1RfQ09ORklHPXkKQ09ORklHX0JPT1RfQ09ORklHX0ZP UkNFPXkKQ09ORklHX0JPT1RfQ09ORklHX0VNQkVEPXkKQ09ORklHX0JPT1RfQ09ORklHX0VN QkVEX0ZJTEU9IiIKQ09ORklHX0lOSVRSQU1GU19QUkVTRVJWRV9NVElNRT15CkNPTkZJR19D Q19PUFRJTUlaRV9GT1JfUEVSRk9STUFOQ0U9eQojIENPTkZJR19DQ19PUFRJTUlaRV9GT1Jf U0laRSBpcyBub3Qgc2V0CkNPTkZJR19MRF9PUlBIQU5fV0FSTj15CkNPTkZJR19MRF9PUlBI QU5fV0FSTl9MRVZFTD0iZXJyb3IiCkNPTkZJR19TWVNDVEw9eQpDT05GSUdfSEFWRV9VSUQx Nj15CkNPTkZJR19TWVNDVExfRVhDRVBUSU9OX1RSQUNFPXkKQ09ORklHX0hBVkVfUENTUEtS X1BMQVRGT1JNPXkKIyBDT05GSUdfRVhQRVJUIGlzIG5vdCBzZXQKQ09ORklHX1VJRDE2PXkK Q09ORklHX01VTFRJVVNFUj15CkNPTkZJR19TR0VUTUFTS19TWVNDQUxMPXkKQ09ORklHX1NZ U0ZTX1NZU0NBTEw9eQpDT05GSUdfRkhBTkRMRT15CkNPTkZJR19QT1NJWF9USU1FUlM9eQpD T05GSUdfUFJJTlRLPXkKQ09ORklHX0JVRz15CkNPTkZJR19FTEZfQ09SRT15CkNPTkZJR19Q Q1NQS1JfUExBVEZPUk09eQpDT05GSUdfRlVURVg9eQpDT05GSUdfRlVURVhfUEk9eQpDT05G SUdfRVBPTEw9eQpDT05GSUdfU0lHTkFMRkQ9eQpDT05GSUdfVElNRVJGRD15CkNPTkZJR19F VkVOVEZEPXkKQ09ORklHX1NITUVNPXkKQ09ORklHX0FJTz15CkNPTkZJR19JT19VUklORz15 CkNPTkZJR19BRFZJU0VfU1lTQ0FMTFM9eQpDT05GSUdfTUVNQkFSUklFUj15CkNPTkZJR19S U0VRPXkKQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMPXkKQ09ORklHX0tBTExTWU1TPXkKQ09O RklHX0tBTExTWU1TX1NFTEZURVNUPXkKQ09ORklHX0tBTExTWU1TX0JBU0VfUkVMQVRJVkU9 eQpDT05GSUdfQVJDSF9IQVNfTUVNQkFSUklFUl9TWU5DX0NPUkU9eQpDT05GSUdfSEFWRV9Q RVJGX0VWRU5UUz15CgojCiMgS2VybmVsIFBlcmZvcm1hbmNlIEV2ZW50cyBBbmQgQ291bnRl cnMKIwpDT05GSUdfUEVSRl9FVkVOVFM9eQojIGVuZCBvZiBLZXJuZWwgUGVyZm9ybWFuY2Ug RXZlbnRzIEFuZCBDb3VudGVycwoKQ09ORklHX1NZU1RFTV9EQVRBX1ZFUklGSUNBVElPTj15 CiMgQ09ORklHX1BST0ZJTElORyBpcyBub3Qgc2V0CgojCiMgS2V4ZWMgYW5kIGNyYXNoIGZl YXR1cmVzCiMKIyBDT05GSUdfS0VYRUMgaXMgbm90IHNldAojIGVuZCBvZiBLZXhlYyBhbmQg Y3Jhc2ggZmVhdHVyZXMKIyBlbmQgb2YgR2VuZXJhbCBzZXR1cAoKIyBDT05GSUdfNjRCSVQg aXMgbm90IHNldApDT05GSUdfWDg2XzMyPXkKQ09ORklHX1g4Nj15CkNPTkZJR19JTlNUUlVD VElPTl9ERUNPREVSPXkKQ09ORklHX09VVFBVVF9GT1JNQVQ9ImVsZjMyLWkzODYiCkNPTkZJ R19MT0NLREVQX1NVUFBPUlQ9eQpDT05GSUdfU1RBQ0tUUkFDRV9TVVBQT1JUPXkKQ09ORklH X01NVT15CkNPTkZJR19BUkNIX01NQVBfUk5EX0JJVFNfTUlOPTgKQ09ORklHX0FSQ0hfTU1B UF9STkRfQklUU19NQVg9MTYKQ09ORklHX0FSQ0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUlO PTgKQ09ORklHX0FSQ0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUFYPTE2CkNPTkZJR19HRU5F UklDX0lTQV9ETUE9eQpDT05GSUdfR0VORVJJQ19CVUc9eQpDT05GSUdfQVJDSF9NQVlfSEFW RV9QQ19GREM9eQpDT05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQpDT05GSUdfQVJD SF9IQVNfQ1BVX1JFTEFYPXkKQ09ORklHX0FSQ0hfSElCRVJOQVRJT05fUE9TU0lCTEU9eQpD T05GSUdfQVJDSF9TVVNQRU5EX1BPU1NJQkxFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfVVBS T0JFUz15CkNPTkZJR19GSVhfRUFSTFlDT05fTUVNPXkKQ09ORklHX1BHVEFCTEVfTEVWRUxT PTIKQ09ORklHX0NDX0hBU19TQU5FX1NUQUNLUFJPVEVDVE9SPXkKCiMKIyBQcm9jZXNzb3Ig dHlwZSBhbmQgZmVhdHVyZXMKIwpDT05GSUdfU01QPXkKIyBDT05GSUdfWDg2X01QUEFSU0Ug aXMgbm90IHNldAojIENPTkZJR19YODZfQ1BVX1JFU0NUUkwgaXMgbm90IHNldApDT05GSUdf WDg2X0JJR1NNUD15CiMgQ09ORklHX1g4Nl9FWFRFTkRFRF9QTEFURk9STSBpcyBub3Qgc2V0 CkNPTkZJR19YODZfSU5URUxfTFBTUz15CiMgQ09ORklHX1g4Nl9BTURfUExBVEZPUk1fREVW SUNFIGlzIG5vdCBzZXQKQ09ORklHX0lPU0ZfTUJJPXkKIyBDT05GSUdfSU9TRl9NQklfREVC VUcgaXMgbm90IHNldApDT05GSUdfWDg2X1NVUFBPUlRTX01FTU9SWV9GQUlMVVJFPXkKQ09O RklHX1g4Nl8zMl9JUklTPXkKQ09ORklHX1NDSEVEX09NSVRfRlJBTUVfUE9JTlRFUj15CiMg Q09ORklHX0hZUEVSVklTT1JfR1VFU1QgaXMgbm90IHNldAojIENPTkZJR19NNDg2U1ggaXMg bm90IHNldAojIENPTkZJR19NNDg2IGlzIG5vdCBzZXQKQ09ORklHX001ODY9eQojIENPTkZJ R19NNTg2VFNDIGlzIG5vdCBzZXQKIyBDT05GSUdfTTU4Nk1NWCBpcyBub3Qgc2V0CiMgQ09O RklHX002ODYgaXMgbm90IHNldAojIENPTkZJR19NUEVOVElVTUlJIGlzIG5vdCBzZXQKIyBD T05GSUdfTVBFTlRJVU1JSUkgaXMgbm90IHNldAojIENPTkZJR19NUEVOVElVTU0gaXMgbm90 IHNldAojIENPTkZJR19NUEVOVElVTTQgaXMgbm90IHNldAojIENPTkZJR19NSzYgaXMgbm90 IHNldAojIENPTkZJR19NSzcgaXMgbm90IHNldAojIENPTkZJR19NSzggaXMgbm90IHNldAoj IENPTkZJR19NQ1JVU09FIGlzIG5vdCBzZXQKIyBDT05GSUdfTUVGRklDRU9OIGlzIG5vdCBz ZXQKIyBDT05GSUdfTVdJTkNISVBDNiBpcyBub3Qgc2V0CiMgQ09ORklHX01XSU5DSElQM0Qg aXMgbm90IHNldAojIENPTkZJR19NRUxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX01HRU9ERUdY MSBpcyBub3Qgc2V0CiMgQ09ORklHX01HRU9ERV9MWCBpcyBub3Qgc2V0CiMgQ09ORklHX01D WVJJWElJSSBpcyBub3Qgc2V0CiMgQ09ORklHX01WSUFDM18yIGlzIG5vdCBzZXQKIyBDT05G SUdfTVZJQUM3IGlzIG5vdCBzZXQKIyBDT05GSUdfTUNPUkUyIGlzIG5vdCBzZXQKIyBDT05G SUdfTUFUT00gaXMgbm90IHNldApDT05GSUdfWDg2X0dFTkVSSUM9eQpDT05GSUdfWDg2X0lO VEVSTk9ERV9DQUNIRV9TSElGVD02CkNPTkZJR19YODZfTDFfQ0FDSEVfU0hJRlQ9NgpDT05G SUdfWDg2X0YwMEZfQlVHPXkKQ09ORklHX1g4Nl9BTElHTk1FTlRfMTY9eQpDT05GSUdfWDg2 X0lOVEVMX1VTRVJDT1BZPXkKQ09ORklHX1g4Nl9NSU5JTVVNX0NQVV9GQU1JTFk9NApDT05G SUdfSUEzMl9GRUFUX0NUTD15CkNPTkZJR19YODZfVk1YX0ZFQVRVUkVfTkFNRVM9eQpDT05G SUdfQ1BVX1NVUF9JTlRFTD15CkNPTkZJR19DUFVfU1VQX0NZUklYXzMyPXkKQ09ORklHX0NQ VV9TVVBfQU1EPXkKQ09ORklHX0NQVV9TVVBfSFlHT049eQpDT05GSUdfQ1BVX1NVUF9DRU5U QVVSPXkKQ09ORklHX0NQVV9TVVBfVFJBTlNNRVRBXzMyPXkKQ09ORklHX0NQVV9TVVBfWkhB T1hJTj15CkNPTkZJR19DUFVfU1VQX1ZPUlRFWF8zMj15CiMgQ09ORklHX0hQRVRfVElNRVIg aXMgbm90IHNldApDT05GSUdfRE1JPXkKQ09ORklHX05SX0NQVVNfUkFOR0VfQkVHSU49MgpD T05GSUdfTlJfQ1BVU19SQU5HRV9FTkQ9NjQKQ09ORklHX05SX0NQVVNfREVGQVVMVD0zMgpD T05GSUdfTlJfQ1BVUz0zMgpDT05GSUdfU0NIRURfQ0xVU1RFUj15CkNPTkZJR19TQ0hFRF9T TVQ9eQojIENPTkZJR19TQ0hFRF9NQyBpcyBub3Qgc2V0CkNPTkZJR19YODZfTE9DQUxfQVBJ Qz15CkNPTkZJR19YODZfSU9fQVBJQz15CiMgQ09ORklHX1g4Nl9SRVJPVVRFX0ZPUl9CUk9L RU5fQk9PVF9JUlFTIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9NQ0U9eQpDT05GSUdfWDg2X01D RUxPR19MRUdBQ1k9eQpDT05GSUdfWDg2X01DRV9JTlRFTD15CiMgQ09ORklHX1g4Nl9NQ0Vf QU1EIGlzIG5vdCBzZXQKIyBDT05GSUdfWDg2X0FOQ0lFTlRfTUNFIGlzIG5vdCBzZXQKQ09O RklHX1g4Nl9NQ0VfVEhSRVNIT0xEPXkKQ09ORklHX1g4Nl9NQ0VfSU5KRUNUPXkKCiMKIyBQ ZXJmb3JtYW5jZSBtb25pdG9yaW5nCiMKQ09ORklHX1BFUkZfRVZFTlRTX0lOVEVMX1VOQ09S RT15CiMgQ09ORklHX1BFUkZfRVZFTlRTX0lOVEVMX1JBUEwgaXMgbm90IHNldAojIENPTkZJ R19QRVJGX0VWRU5UU19JTlRFTF9DU1RBVEUgaXMgbm90IHNldApDT05GSUdfUEVSRl9FVkVO VFNfQU1EX1BPV0VSPXkKQ09ORklHX1BFUkZfRVZFTlRTX0FNRF9VTkNPUkU9eQojIENPTkZJ R19QRVJGX0VWRU5UU19BTURfQlJTIGlzIG5vdCBzZXQKIyBlbmQgb2YgUGVyZm9ybWFuY2Ug bW9uaXRvcmluZwoKIyBDT05GSUdfWDg2X0xFR0FDWV9WTTg2IGlzIG5vdCBzZXQKQ09ORklH X1g4Nl8xNkJJVD15CkNPTkZJR19YODZfRVNQRklYMzI9eQpDT05GSUdfWDg2X0lPUExfSU9Q RVJNPXkKIyBDT05GSUdfVE9TSElCQSBpcyBub3Qgc2V0CkNPTkZJR19YODZfUkVCT09URklY VVBTPXkKQ09ORklHX01JQ1JPQ09ERT15CkNPTkZJR19NSUNST0NPREVfTEFURV9MT0FESU5H PXkKIyBDT05GSUdfTUlDUk9DT0RFX0xBVEVfRk9SQ0VfTUlOUkVWIGlzIG5vdCBzZXQKIyBD T05GSUdfWDg2X01TUiBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9DUFVJRCBpcyBub3Qgc2V0 CiMgQ09ORklHX05PSElHSE1FTSBpcyBub3Qgc2V0CkNPTkZJR19ISUdITUVNNEc9eQojIENP TkZJR19WTVNQTElUXzNHIGlzIG5vdCBzZXQKIyBDT05GSUdfVk1TUExJVF8zR19PUFQgaXMg bm90IHNldApDT05GSUdfVk1TUExJVF8yRz15CiMgQ09ORklHX1ZNU1BMSVRfMkdfT1BUIGlz IG5vdCBzZXQKIyBDT05GSUdfVk1TUExJVF8xRyBpcyBub3Qgc2V0CkNPTkZJR19QQUdFX09G RlNFVD0weDgwMDAwMDAwCkNPTkZJR19ISUdITUVNPXkKIyBDT05GSUdfWDg2X0NQQV9TVEFU SVNUSUNTIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQpDT05GSUdf QVJDSF9TUEFSU0VNRU1fRU5BQkxFPXkKQ09ORklHX0FSQ0hfU0VMRUNUX01FTU9SWV9NT0RF TD15CkNPTkZJR19JTExFR0FMX1BPSU5URVJfVkFMVUU9MApDT05GSUdfSElHSFBURT15CiMg Q09ORklHX1g4Nl9DSEVDS19CSU9TX0NPUlJVUFRJT04gaXMgbm90IHNldApDT05GSUdfTVRS Uj15CkNPTkZJR19NVFJSX1NBTklUSVpFUj15CkNPTkZJR19NVFJSX1NBTklUSVpFUl9FTkFC TEVfREVGQVVMVD0wCkNPTkZJR19NVFJSX1NBTklUSVpFUl9TUEFSRV9SRUdfTlJfREVGQVVM VD0xCkNPTkZJR19YODZfUEFUPXkKQ09ORklHX0FSQ0hfVVNFU19QR19VTkNBQ0hFRD15CkNP TkZJR19YODZfVU1JUD15CkNPTkZJR19DQ19IQVNfSUJUPXkKQ09ORklHX1g4Nl9JTlRFTF9U U1hfTU9ERV9PRkY9eQojIENPTkZJR19YODZfSU5URUxfVFNYX01PREVfT04gaXMgbm90IHNl dAojIENPTkZJR19YODZfSU5URUxfVFNYX01PREVfQVVUTyBpcyBub3Qgc2V0CkNPTkZJR19F Rkk9eQpDT05GSUdfRUZJX1NUVUI9eQpDT05GSUdfRUZJX0hBTkRPVkVSX1BST1RPQ09MPXkK IyBDT05GSUdfSFpfMTAwIGlzIG5vdCBzZXQKQ09ORklHX0haXzI1MD15CiMgQ09ORklHX0ha XzMwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldApDT05GSUdfSFo9 MjUwCkNPTkZJR19BUkNIX1NVUFBPUlRTX0tFWEVDPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNf S0VYRUNfUFVSR0FUT1JZPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfU0lHPXkKQ09O RklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfU0lHX0ZPUkNFPXkKQ09ORklHX0FSQ0hfU1VQUE9S VFNfS0VYRUNfQlpJTUFHRV9WRVJJRllfU0lHPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VY RUNfSlVNUD15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0NSQVNIX0RVTVA9eQpDT05GSUdfQVJD SF9TVVBQT1JUU19DUkFTSF9IT1RQTFVHPXkKQ09ORklHX1BIWVNJQ0FMX1NUQVJUPTB4MTAw MDAwMApDT05GSUdfUkVMT0NBVEFCTEU9eQpDT05GSUdfUkFORE9NSVpFX0JBU0U9eQpDT05G SUdfWDg2X05FRURfUkVMT0NTPXkKQ09ORklHX1BIWVNJQ0FMX0FMSUdOPTB4MjAwMDAwCkNP TkZJR19IT1RQTFVHX0NQVT15CkNPTkZJR19DT01QQVRfVkRTTz15CkNPTkZJR19DTURMSU5F X0JPT0w9eQpDT05GSUdfQ01ETElORT0iIgpDT05GSUdfTU9ESUZZX0xEVF9TWVNDQUxMPXkK Q09ORklHX1NUUklDVF9TSUdBTFRTVEFDS19TSVpFPXkKIyBlbmQgb2YgUHJvY2Vzc29yIHR5 cGUgYW5kIGZlYXR1cmVzCgpDT05GSUdfQ0NfSEFTX05BTUVEX0FTPXkKQ09ORklHX1VTRV9Y ODZfU0VHX1NVUFBPUlQ9eQpDT05GSUdfQ0NfSEFTX1NMUz15CkNPTkZJR19DQ19IQVNfUkVU VVJOX1RIVU5LPXkKQ09ORklHX0NDX0hBU19FTlRSWV9QQURESU5HPXkKQ09ORklHX0ZVTkNU SU9OX1BBRERJTkdfQ0ZJPTExCkNPTkZJR19GVU5DVElPTl9QQURESU5HX0JZVEVTPTE2CkNP TkZJR19DUFVfTUlUSUdBVElPTlM9eQpDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkU9eQoj IENPTkZJR19NSVRJR0FUSU9OX1JFVEhVTksgaXMgbm90IHNldAojIENPTkZJR19NSVRJR0FU SU9OX0dEU19GT1JDRSBpcyBub3Qgc2V0CkNPTkZJR19NSVRJR0FUSU9OX1JGRFM9eQojIENP TkZJR19NSVRJR0FUSU9OX1NQRUNUUkVfQkhJIGlzIG5vdCBzZXQKCiMKIyBQb3dlciBtYW5h Z2VtZW50IGFuZCBBQ1BJIG9wdGlvbnMKIwojIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXQK IyBDT05GSUdfUE0gaXMgbm90IHNldApDT05GSUdfQVJDSF9TVVBQT1JUU19BQ1BJPXkKQ09O RklHX0FDUEk9eQpDT05GSUdfQUNQSV9MRUdBQ1lfVEFCTEVTX0xPT0tVUD15CkNPTkZJR19B UkNIX01JR0hUX0hBVkVfQUNQSV9QREM9eQpDT05GSUdfQUNQSV9TWVNURU1fUE9XRVJfU1RB VEVTX1NVUFBPUlQ9eQpDT05GSUdfQUNQSV9USEVSTUFMX0xJQj15CkNPTkZJR19BQ1BJX0RF QlVHR0VSPXkKQ09ORklHX0FDUElfREVCVUdHRVJfVVNFUj15CiMgQ09ORklHX0FDUElfU1BD Ul9UQUJMRSBpcyBub3Qgc2V0CiMgQ09ORklHX0FDUElfUkVWX09WRVJSSURFX1BPU1NJQkxF IGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9FQ19ERUJVR0ZTIGlzIG5vdCBzZXQKIyBDT05G SUdfQUNQSV9BQyBpcyBub3Qgc2V0CkNPTkZJR19BQ1BJX0JBVFRFUlk9eQpDT05GSUdfQUNQ SV9CVVRUT049eQpDT05GSUdfQUNQSV9WSURFTz15CkNPTkZJR19BQ1BJX0ZBTj15CkNPTkZJ R19BQ1BJX0RPQ0s9eQpDT05GSUdfQUNQSV9DUFVfRlJFUV9QU1M9eQpDT05GSUdfQUNQSV9Q Uk9DRVNTT1JfQ1NUQVRFPXkKQ09ORklHX0FDUElfUFJPQ0VTU09SX0lETEU9eQpDT05GSUdf QUNQSV9QUk9DRVNTT1I9eQpDT05GSUdfQUNQSV9IT1RQTFVHX0NQVT15CkNPTkZJR19BQ1BJ X1BST0NFU1NPUl9BR0dSRUdBVE9SPXkKQ09ORklHX0FDUElfVEhFUk1BTD15CkNPTkZJR19B Q1BJX1BMQVRGT1JNX1BST0ZJTEU9eQpDT05GSUdfQVJDSF9IQVNfQUNQSV9UQUJMRV9VUEdS QURFPXkKQ09ORklHX0FDUElfREVCVUc9eQojIENPTkZJR19BQ1BJX1BDSV9TTE9UIGlzIG5v dCBzZXQKQ09ORklHX0FDUElfQ09OVEFJTkVSPXkKQ09ORklHX0FDUElfSE9UUExVR19JT0FQ SUM9eQpDT05GSUdfQUNQSV9TQlM9eQpDT05GSUdfQUNQSV9IRUQ9eQpDT05GSUdfQUNQSV9C R1JUPXkKQ09ORklHX0FDUElfTkhMVD15CkNPTkZJR19IQVZFX0FDUElfQVBFST15CkNPTkZJ R19IQVZFX0FDUElfQVBFSV9OTUk9eQpDT05GSUdfQUNQSV9BUEVJPXkKIyBDT05GSUdfQUNQ SV9BUEVJX0dIRVMgaXMgbm90IHNldApDT05GSUdfQUNQSV9BUEVJX0VJTko9eQpDT05GSUdf QUNQSV9BUEVJX0VSU1RfREVCVUc9eQojIENPTkZJR19BQ1BJX0RQVEYgaXMgbm90IHNldAoj IENPTkZJR19BQ1BJX0NPTkZJR0ZTIGlzIG5vdCBzZXQKQ09ORklHX0FDUElfUENDPXkKIyBD T05GSUdfQUNQSV9GRkggaXMgbm90IHNldApDT05GSUdfUE1JQ19PUFJFR0lPTj15CkNPTkZJ R19YUE9XRVJfUE1JQ19PUFJFR0lPTj15CiMgQ09ORklHX0JYVF9XQ19QTUlDX09QUkVHSU9O IGlzIG5vdCBzZXQKQ09ORklHX1RQUzY4NDcwX1BNSUNfT1BSRUdJT049eQpDT05GSUdfWDg2 X1BNX1RJTUVSPXkKCiMKIyBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKIwojIENPTkZJR19DUFVf RlJFUSBpcyBub3Qgc2V0CiMgZW5kIG9mIENQVSBGcmVxdWVuY3kgc2NhbGluZwoKIwojIENQ VSBJZGxlCiMKQ09ORklHX0NQVV9JRExFPXkKIyBDT05GSUdfQ1BVX0lETEVfR09WX0xBRERF UiBpcyBub3Qgc2V0CiMgQ09ORklHX0NQVV9JRExFX0dPVl9NRU5VIGlzIG5vdCBzZXQKQ09O RklHX0NQVV9JRExFX0dPVl9URU89eQojIGVuZCBvZiBDUFUgSWRsZQoKIyBDT05GSUdfSU5U RUxfSURMRSBpcyBub3Qgc2V0CiMgZW5kIG9mIFBvd2VyIG1hbmFnZW1lbnQgYW5kIEFDUEkg b3B0aW9ucwoKIwojIEJ1cyBvcHRpb25zIChQQ0kgZXRjLikKIwojIENPTkZJR19QQ0lfR09C SU9TIGlzIG5vdCBzZXQKQ09ORklHX1BDSV9HT01NQ09ORklHPXkKIyBDT05GSUdfUENJX0dP RElSRUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfUENJX0dPQU5ZIGlzIG5vdCBzZXQKQ09ORklH X1BDSV9ESVJFQ1Q9eQpDT05GSUdfUENJX01NQ09ORklHPXkKQ09ORklHX0lTQV9ETUFfQVBJ PXkKIyBDT05GSUdfSVNBIGlzIG5vdCBzZXQKQ09ORklHX1NDeDIwMD15CkNPTkZJR19TQ3gy MDBIUl9USU1FUj15CiMgQ09ORklHX09MUEMgaXMgbm90IHNldApDT05GSUdfQUxJWD15CkNP TkZJR19ORVQ1NTAxPXkKQ09ORklHX0dFT1M9eQpDT05GSUdfQU1EX05CPXkKIyBlbmQgb2Yg QnVzIG9wdGlvbnMgKFBDSSBldGMuKQoKIwojIEJpbmFyeSBFbXVsYXRpb25zCiMKQ09ORklH X0NPTVBBVF8zMj15CiMgZW5kIG9mIEJpbmFyeSBFbXVsYXRpb25zCgpDT05GSUdfSEFWRV9B VE9NSUNfSU9NQVA9eQpDT05GSUdfVklSVFVBTElaQVRJT049eQpDT05GSUdfQVNfQVZYNTEy PXkKQ09ORklHX0FTX1NIQTFfTkk9eQpDT05GSUdfQVNfU0hBMjU2X05JPXkKQ09ORklHX0FT X1RQQVVTRT15CkNPTkZJR19BU19HRk5JPXkKQ09ORklHX0FTX1ZBRVM9eQpDT05GSUdfQVNf VlBDTE1VTFFEUT15CkNPTkZJR19BU19XUlVTUz15CkNPTkZJR19BUkNIX0NPTkZJR1VSRVNf Q1BVX01JVElHQVRJT05TPXkKCiMKIyBHZW5lcmFsIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQg b3B0aW9ucwojCkNPTkZJR19IT1RQTFVHX1NNVD15CkNPTkZJR19IT1RQTFVHX0NPUkVfU1lO Qz15CkNPTkZJR19IT1RQTFVHX0NPUkVfU1lOQ19ERUFEPXkKQ09ORklHX0hPVFBMVUdfQ09S RV9TWU5DX0ZVTEw9eQpDT05GSUdfSE9UUExVR19TUExJVF9TVEFSVFVQPXkKQ09ORklHX0dF TkVSSUNfRU5UUlk9eQojIENPTkZJR19LUFJPQkVTIGlzIG5vdCBzZXQKQ09ORklHX0pVTVBf TEFCRUw9eQojIENPTkZJR19TVEFUSUNfS0VZU19TRUxGVEVTVCBpcyBub3Qgc2V0CkNPTkZJ R19TVEFUSUNfQ0FMTF9TRUxGVEVTVD15CkNPTkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdO RURfQUNDRVNTPXkKQ09ORklHX0FSQ0hfVVNFX0JVSUxUSU5fQlNXQVA9eQpDT05GSUdfSEFW RV9JT1JFTUFQX1BST1Q9eQpDT05GSUdfSEFWRV9LUFJPQkVTPXkKQ09ORklHX0hBVkVfS1JF VFBST0JFUz15CkNPTkZJR19IQVZFX09QVFBST0JFUz15CkNPTkZJR19IQVZFX0tQUk9CRVNf T05fRlRSQUNFPXkKQ09ORklHX0FSQ0hfQ09SUkVDVF9TVEFDS1RSQUNFX09OX0tSRVRQUk9C RT15CkNPTkZJR19IQVZFX0ZVTkNUSU9OX0VSUk9SX0lOSkVDVElPTj15CkNPTkZJR19IQVZF X05NST15CkNPTkZJR19UUkFDRV9JUlFGTEFHU19TVVBQT1JUPXkKQ09ORklHX1RSQUNFX0lS UUZMQUdTX05NSV9TVVBQT1JUPXkKQ09ORklHX0hBVkVfQVJDSF9UUkFDRUhPT0s9eQpDT05G SUdfSEFWRV9ETUFfQ09OVElHVU9VUz15CkNPTkZJR19HRU5FUklDX1NNUF9JRExFX1RIUkVB RD15CkNPTkZJR19BUkNIX0hBU19GT1JUSUZZX1NPVVJDRT15CkNPTkZJR19BUkNIX0hBU19T RVRfTUVNT1JZPXkKQ09ORklHX0FSQ0hfSEFTX1NFVF9ESVJFQ1RfTUFQPXkKQ09ORklHX0FS Q0hfSEFTX0NQVV9GSU5BTElaRV9JTklUPXkKQ09ORklHX0hBVkVfQVJDSF9USFJFQURfU1RS VUNUX1dISVRFTElTVD15CkNPTkZJR19BUkNIX1dBTlRTX0RZTkFNSUNfVEFTS19TVFJVQ1Q9 eQpDT05GSUdfQVJDSF9XQU5UU19OT19JTlNUUj15CkNPTkZJR19BUkNIXzMyQklUX09GRl9U PXkKQ09ORklHX0hBVkVfQVNNX01PRFZFUlNJT05TPXkKQ09ORklHX0hBVkVfUkVHU19BTkRf U1RBQ0tfQUNDRVNTX0FQST15CkNPTkZJR19IQVZFX1JTRVE9eQpDT05GSUdfSEFWRV9GVU5D VElPTl9BUkdfQUNDRVNTX0FQST15CkNPTkZJR19IQVZFX0hXX0JSRUFLUE9JTlQ9eQpDT05G SUdfSEFWRV9NSVhFRF9CUkVBS1BPSU5UU19SRUdTPXkKQ09ORklHX0hBVkVfVVNFUl9SRVRV Uk5fTk9USUZJRVI9eQpDT05GSUdfSEFWRV9QRVJGX0VWRU5UU19OTUk9eQpDT05GSUdfSEFW RV9IQVJETE9DS1VQX0RFVEVDVE9SX1BFUkY9eQpDT05GSUdfSEFWRV9QRVJGX1JFR1M9eQpD T05GSUdfSEFWRV9QRVJGX1VTRVJfU1RBQ0tfRFVNUD15CkNPTkZJR19IQVZFX0FSQ0hfSlVN UF9MQUJFTD15CkNPTkZJR19IQVZFX0FSQ0hfSlVNUF9MQUJFTF9SRUxBVElWRT15CkNPTkZJ R19NTVVfR0FUSEVSX01FUkdFX1ZNQVM9eQpDT05GSUdfTU1VX0xBWllfVExCX1JFRkNPVU5U PXkKQ09ORklHX0FSQ0hfSEFWRV9OTUlfU0FGRV9DTVBYQ0hHPXkKQ09ORklHX0FSQ0hfSEFT X05NSV9TQUZFX1RISVNfQ1BVX09QUz15CkNPTkZJR19IQVZFX0FMSUdORURfU1RSVUNUX1BB R0U9eQpDT05GSUdfSEFWRV9DTVBYQ0hHX0xPQ0FMPXkKQ09ORklHX0hBVkVfQ01QWENIR19E T1VCTEU9eQpDT05GSUdfQVJDSF9XQU5UX0lQQ19QQVJTRV9WRVJTSU9OPXkKQ09ORklHX0hB VkVfQVJDSF9TRUNDT01QPXkKQ09ORklHX0hBVkVfQVJDSF9TRUNDT01QX0ZJTFRFUj15CiMg Q09ORklHX1NFQ0NPTVAgaXMgbm90IHNldApDT05GSUdfSEFWRV9BUkNIX1NUQUNLTEVBSz15 CkNPTkZJR19IQVZFX1NUQUNLUFJPVEVDVE9SPXkKIyBDT05GSUdfU1RBQ0tQUk9URUNUT1Ig aXMgbm90IHNldApDT05GSUdfQVJDSF9TVVBQT1JUU19MVE9fQ0xBTkc9eQpDT05GSUdfQVJD SF9TVVBQT1JUU19MVE9fQ0xBTkdfVEhJTj15CkNPTkZJR19MVE9fTk9ORT15CkNPTkZJR19I QVZFX0FSQ0hfV0lUSElOX1NUQUNLX0ZSQU1FUz15CkNPTkZJR19IQVZFX0lSUV9USU1FX0FD Q09VTlRJTkc9eQpDT05GSUdfSEFWRV9NT1ZFX1BVRD15CkNPTkZJR19IQVZFX01PVkVfUE1E PXkKQ09ORklHX0hBVkVfQVJDSF9UUkFOU1BBUkVOVF9IVUdFUEFHRT15CkNPTkZJR19BUkNI X1dBTlRfSFVHRV9QTURfU0hBUkU9eQpDT05GSUdfQVJDSF9XQU5UX1BNRF9NS1dSSVRFPXkK Q09ORklHX0hBVkVfTU9EX0FSQ0hfU1BFQ0lGSUM9eQpDT05GSUdfTU9EVUxFU19VU0VfRUxG X1JFTD15CkNPTkZJR19IQVZFX1NPRlRJUlFfT05fT1dOX1NUQUNLPXkKQ09ORklHX1NPRlRJ UlFfT05fT1dOX1NUQUNLPXkKQ09ORklHX0FSQ0hfSEFTX0VMRl9SQU5ET01JWkU9eQpDT05G SUdfSEFWRV9BUkNIX01NQVBfUk5EX0JJVFM9eQpDT05GSUdfSEFWRV9FWElUX1RIUkVBRD15 CkNPTkZJR19BUkNIX01NQVBfUk5EX0JJVFM9OApDT05GSUdfSEFWRV9QQUdFX1NJWkVfNEtC PXkKQ09ORklHX1BBR0VfU0laRV80S0I9eQpDT05GSUdfUEFHRV9TSVpFX0xFU1NfVEhBTl82 NEtCPXkKQ09ORklHX1BBR0VfU0laRV9MRVNTX1RIQU5fMjU2S0I9eQpDT05GSUdfUEFHRV9T SElGVD0xMgpDT05GSUdfSVNBX0JVU19BUEk9eQpDT05GSUdfQ0xPTkVfQkFDS1dBUkRTPXkK Q09ORklHX09MRF9TSUdTVVNQRU5EMz15CkNPTkZJR19PTERfU0lHQUNUSU9OPXkKIyBDT05G SUdfQ09NUEFUXzMyQklUX1RJTUUgaXMgbm90IHNldApDT05GSUdfSEFWRV9BUkNIX1JBTkRP TUlaRV9LU1RBQ0tfT0ZGU0VUPXkKQ09ORklHX1JBTkRPTUlaRV9LU1RBQ0tfT0ZGU0VUPXkK IyBDT05GSUdfUkFORE9NSVpFX0tTVEFDS19PRkZTRVRfREVGQVVMVCBpcyBub3Qgc2V0CkNP TkZJR19BUkNIX0hBU19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJR19TVFJJQ1RfS0VSTkVM X1JXWD15CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfTU9EVUxFX1JXWD15CkNPTkZJR19IQVZF X0FSQ0hfUFJFTDMyX1JFTE9DQVRJT05TPXkKQ09ORklHX0FSQ0hfVVNFX01FTVJFTUFQX1BS T1Q9eQpDT05GSUdfTE9DS19FVkVOVF9DT1VOVFM9eQpDT05GSUdfQVJDSF9IQVNfTUVNX0VO Q1JZUFQ9eQpDT05GSUdfSEFWRV9TVEFUSUNfQ0FMTD15CkNPTkZJR19IQVZFX1BSRUVNUFRf RFlOQU1JQz15CkNPTkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQ19DQUxMPXkKQ09ORklHX0FS Q0hfV0FOVF9MRF9PUlBIQU5fV0FSTj15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0RFQlVHX1BB R0VBTExPQz15CkNPTkZJR19BUkNIX1NQTElUX0FSRzY0PXkKQ09ORklHX0FSQ0hfSEFTX1BB UkFOT0lEX0wxRF9GTFVTSD15CkNPTkZJR19EWU5BTUlDX1NJR0ZSQU1FPXkKQ09ORklHX0FS Q0hfSEFTX0hXX1BURV9ZT1VORz15CkNPTkZJR19BUkNIX0hBU19LRVJORUxfRlBVX1NVUFBP UlQ9eQoKIwojIEdDT1YtYmFzZWQga2VybmVsIHByb2ZpbGluZwojCkNPTkZJR19HQ09WX0tF Uk5FTD15CkNPTkZJR19BUkNIX0hBU19HQ09WX1BST0ZJTEVfQUxMPXkKQ09ORklHX0dDT1Zf UFJPRklMRV9BTEw9eQojIGVuZCBvZiBHQ09WLWJhc2VkIGtlcm5lbCBwcm9maWxpbmcKCkNP TkZJR19IQVZFX0dDQ19QTFVHSU5TPXkKQ09ORklHX0ZVTkNUSU9OX0FMSUdOTUVOVF80Qj15 CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlRfMTZCPXkKQ09ORklHX0ZVTkNUSU9OX0FMSUdO TUVOVD0xNgojIGVuZCBvZiBHZW5lcmFsIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgb3B0aW9u cwoKQ09ORklHX1JUX01VVEVYRVM9eQojIENPTkZJR19NT0RVTEVTIGlzIG5vdCBzZXQKQ09O RklHX0JMT0NLPXkKQ09ORklHX0JMT0NLX0xFR0FDWV9BVVRPTE9BRD15CkNPTkZJR19CTEtf REVWX0JTR19DT01NT049eQpDT05GSUdfQkxLX0lDUT15CkNPTkZJR19CTEtfREVWX0JTR0xJ Qj15CkNPTkZJR19CTEtfREVWX0lOVEVHUklUWT15CiMgQ09ORklHX0JMS19ERVZfV1JJVEVf TU9VTlRFRCBpcyBub3Qgc2V0CkNPTkZJR19CTEtfREVWX1pPTkVEPXkKQ09ORklHX0JMS19X QlQ9eQojIENPTkZJR19CTEtfV0JUX01RIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RFQlVH X0ZTIGlzIG5vdCBzZXQKQ09ORklHX0JMS19TRURfT1BBTD15CiMgQ09ORklHX0JMS19JTkxJ TkVfRU5DUllQVElPTiBpcyBub3Qgc2V0CgojCiMgUGFydGl0aW9uIFR5cGVzCiMKIyBDT05G SUdfUEFSVElUSU9OX0FEVkFOQ0VEIGlzIG5vdCBzZXQKQ09ORklHX0FNSUdBX1BBUlRJVElP Tj15CkNPTkZJR19NU0RPU19QQVJUSVRJT049eQpDT05GSUdfRUZJX1BBUlRJVElPTj15CiMg ZW5kIG9mIFBhcnRpdGlvbiBUeXBlcwoKQ09ORklHX0JMS19NUV9QQ0k9eQpDT05GSUdfQkxL X01RX1ZJUlRJTz15CkNPTkZJR19CTE9DS19IT0xERVJfREVQUkVDQVRFRD15CkNPTkZJR19C TEtfTVFfU1RBQ0tJTkc9eQoKIwojIElPIFNjaGVkdWxlcnMKIwojIENPTkZJR19NUV9JT1ND SEVEX0RFQURMSU5FIGlzIG5vdCBzZXQKIyBDT05GSUdfTVFfSU9TQ0hFRF9LWUJFUiBpcyBu b3Qgc2V0CkNPTkZJR19JT1NDSEVEX0JGUT15CiMgZW5kIG9mIElPIFNjaGVkdWxlcnMKCkNP TkZJR19QQURBVEE9eQpDT05GSUdfQVNOMT15CkNPTkZJR19JTkxJTkVfU1BJTl9VTkxPQ0tf SVJRPXkKQ09ORklHX0lOTElORV9SRUFEX1VOTE9DSz15CkNPTkZJR19JTkxJTkVfUkVBRF9V TkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9XUklURV9VTkxPQ0s9eQpDT05GSUdfSU5MSU5F X1dSSVRFX1VOTE9DS19JUlE9eQpDT05GSUdfQVJDSF9TVVBQT1JUU19BVE9NSUNfUk1XPXkK Q09ORklHX01VVEVYX1NQSU5fT05fT1dORVI9eQpDT05GSUdfUldTRU1fU1BJTl9PTl9PV05F Uj15CkNPTkZJR19MT0NLX1NQSU5fT05fT1dORVI9eQpDT05GSUdfQVJDSF9VU0VfUVVFVUVE X1NQSU5MT0NLUz15CkNPTkZJR19RVUVVRURfU1BJTkxPQ0tTPXkKQ09ORklHX0FSQ0hfVVNF X1FVRVVFRF9SV0xPQ0tTPXkKQ09ORklHX1FVRVVFRF9SV0xPQ0tTPXkKQ09ORklHX0FSQ0hf SEFTX05PTl9PVkVSTEFQUElOR19BRERSRVNTX1NQQUNFPXkKQ09ORklHX0FSQ0hfSEFTX1NZ TkNfQ09SRV9CRUZPUkVfVVNFUk1PREU9eQpDT05GSUdfQVJDSF9IQVNfU1lTQ0FMTF9XUkFQ UEVSPXkKQ09ORklHX0ZSRUVaRVI9eQoKIwojIEV4ZWN1dGFibGUgZmlsZSBmb3JtYXRzCiMK Q09ORklHX0JJTkZNVF9FTEY9eQojIENPTkZJR19CSU5GTVRfRUxGX0tVTklUX1RFU1QgaXMg bm90IHNldApDT05GSUdfRUxGQ09SRT15CkNPTkZJR19DT1JFX0RVTVBfREVGQVVMVF9FTEZf SEVBREVSUz15CkNPTkZJR19CSU5GTVRfU0NSSVBUPXkKQ09ORklHX0JJTkZNVF9NSVNDPXkK Q09ORklHX0NPUkVEVU1QPXkKQ09ORklHX0VYRUNfS1VOSVRfVEVTVD15CiMgZW5kIG9mIEV4 ZWN1dGFibGUgZmlsZSBmb3JtYXRzCgojCiMgTWVtb3J5IE1hbmFnZW1lbnQgb3B0aW9ucwoj CiMgQ09ORklHX1NXQVAgaXMgbm90IHNldApDT05GSUdfSEFWRV9aU01BTExPQz15CgojCiMg U2xhYiBhbGxvY2F0b3Igb3B0aW9ucwojCkNPTkZJR19TTFVCPXkKIyBDT05GSUdfU0xBQl9N RVJHRV9ERUZBVUxUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0xBQl9GUkVFTElTVF9SQU5ET00g aXMgbm90IHNldApDT05GSUdfU0xBQl9GUkVFTElTVF9IQVJERU5FRD15CiMgQ09ORklHX1NM QUJfQlVDS0VUUyBpcyBub3Qgc2V0CkNPTkZJR19TTFVCX1NUQVRTPXkKQ09ORklHX1NMVUJf Q1BVX1BBUlRJQUw9eQojIENPTkZJR19SQU5ET01fS01BTExPQ19DQUNIRVMgaXMgbm90IHNl dAojIGVuZCBvZiBTbGFiIGFsbG9jYXRvciBvcHRpb25zCgpDT05GSUdfU0hVRkZMRV9QQUdF X0FMTE9DQVRPUj15CiMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldApDT05GSUdfU0VM RUNUX01FTU9SWV9NT0RFTD15CkNPTkZJR19GTEFUTUVNX01BTlVBTD15CiMgQ09ORklHX1NQ QVJTRU1FTV9NQU5VQUwgaXMgbm90IHNldApDT05GSUdfRkxBVE1FTT15CkNPTkZJR19TUEFS U0VNRU1fU1RBVElDPXkKQ09ORklHX0hBVkVfR1VQX0ZBU1Q9eQpDT05GSUdfRVhDTFVTSVZF X1NZU1RFTV9SQU09eQpDT05GSUdfQVJDSF9NSFBfTUVNTUFQX09OX01FTU9SWV9FTkFCTEU9 eQpDT05GSUdfU1BMSVRfUFRMT0NLX0NQVVM9NApDT05GSUdfTUVNT1JZX0JBTExPT049eQoj IENPTkZJR19CQUxMT09OX0NPTVBBQ1RJT04gaXMgbm90IHNldApDT05GSUdfQ09NUEFDVElP Tj15CkNPTkZJR19DT01QQUNUX1VORVZJQ1RBQkxFX0RFRkFVTFQ9MQpDT05GSUdfUEFHRV9S RVBPUlRJTkc9eQpDT05GSUdfTUlHUkFUSU9OPXkKQ09ORklHX1BDUF9CQVRDSF9TQ0FMRV9N QVg9NQojIENPTkZJR19CT1VOQ0UgaXMgbm90IHNldAojIENPTkZJR19LU00gaXMgbm90IHNl dApDT05GSUdfREVGQVVMVF9NTUFQX01JTl9BRERSPTQwOTYKQ09ORklHX0FSQ0hfU1VQUE9S VFNfTUVNT1JZX0ZBSUxVUkU9eQojIENPTkZJR19NRU1PUllfRkFJTFVSRSBpcyBub3Qgc2V0 CkNPTkZJR19BUkNIX1dBTlRfR0VORVJBTF9IVUdFVExCPXkKQ09ORklHX1RSQU5TUEFSRU5U X0hVR0VQQUdFPXkKIyBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTIGlzIG5v dCBzZXQKIyBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRSBpcyBub3Qgc2V0 CkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRV9ORVZFUj15CkNPTkZJR19SRUFEX09OTFlf VEhQX0ZPUl9GUz15CkNPTkZJR19QR1RBQkxFX0hBU19IVUdFX0xFQVZFUz15CkNPTkZJR19O RUVEX1BFUl9DUFVfRU1CRURfRklSU1RfQ0hVTks9eQpDT05GSUdfTkVFRF9QRVJfQ1BVX1BB R0VfRklSU1RfQ0hVTks9eQpDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BVX0FSRUE9eQojIENP TkZJR19DTUEgaXMgbm90IHNldApDT05GSUdfR0VORVJJQ19FQVJMWV9JT1JFTUFQPXkKQ09O RklHX1BBR0VfSURMRV9GTEFHPXkKQ09ORklHX0lETEVfUEFHRV9UUkFDS0lORz15CkNPTkZJ R19BUkNIX0hBU19DQUNIRV9MSU5FX1NJWkU9eQpDT05GSUdfQVJDSF9IQVNfQ1VSUkVOVF9T VEFDS19QT0lOVEVSPXkKQ09ORklHX1pPTkVfRE1BPXkKQ09ORklHX1ZNX0VWRU5UX0NPVU5U RVJTPXkKQ09ORklHX1BFUkNQVV9TVEFUUz15CiMgQ09ORklHX0dVUF9URVNUIGlzIG5vdCBz ZXQKIyBDT05GSUdfRE1BUE9PTF9URVNUIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfSEFTX1BU RV9TUEVDSUFMPXkKQ09ORklHX0tNQVBfTE9DQUw9eQpDT05GSUdfTUVNRkRfQ1JFQVRFPXkK Q09ORklHX1NFQ1JFVE1FTT15CkNPTkZJR19BTk9OX1ZNQV9OQU1FPXkKQ09ORklHX1VTRVJG QVVMVEZEPXkKQ09ORklHX0xSVV9HRU49eQpDT05GSUdfTFJVX0dFTl9FTkFCTEVEPXkKQ09O RklHX0xSVV9HRU5fU1RBVFM9eQpDT05GSUdfTFJVX0dFTl9XQUxLU19NTVU9eQpDT05GSUdf TE9DS19NTV9BTkRfRklORF9WTUE9eQpDT05GSUdfRVhFQ01FTT15CgojCiMgRGF0YSBBY2Nl c3MgTW9uaXRvcmluZwojCkNPTkZJR19EQU1PTj15CiMgQ09ORklHX0RBTU9OX0tVTklUX1RF U1QgaXMgbm90IHNldAojIENPTkZJR19EQU1PTl9WQUREUiBpcyBub3Qgc2V0CkNPTkZJR19E QU1PTl9QQUREUj15CiMgQ09ORklHX0RBTU9OX1NZU0ZTIGlzIG5vdCBzZXQKQ09ORklHX0RB TU9OX1JFQ0xBSU09eQpDT05GSUdfREFNT05fTFJVX1NPUlQ9eQojIGVuZCBvZiBEYXRhIEFj Y2VzcyBNb25pdG9yaW5nCiMgZW5kIG9mIE1lbW9yeSBNYW5hZ2VtZW50IG9wdGlvbnMKCiMg Q09ORklHX05FVCBpcyBub3Qgc2V0CgojCiMgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdfSEFW RV9FSVNBPXkKIyBDT05GSUdfRUlTQSBpcyBub3Qgc2V0CkNPTkZJR19IQVZFX1BDST15CkNP TkZJR19HRU5FUklDX1BDSV9JT01BUD15CkNPTkZJR19QQ0k9eQpDT05GSUdfUENJX0RPTUFJ TlM9eQojIENPTkZJR19QQ0lFUE9SVEJVUyBpcyBub3Qgc2V0CkNPTkZJR19QQ0lFQVNQTT15 CkNPTkZJR19QQ0lFQVNQTV9ERUZBVUxUPXkKIyBDT05GSUdfUENJRUFTUE1fUE9XRVJTQVZF IGlzIG5vdCBzZXQKIyBDT05GSUdfUENJRUFTUE1fUE9XRVJfU1VQRVJTQVZFIGlzIG5vdCBz ZXQKIyBDT05GSUdfUENJRUFTUE1fUEVSRk9STUFOQ0UgaXMgbm90IHNldAojIENPTkZJR19Q Q0lFX1BUTSBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSV9NU0kgaXMgbm90IHNldApDT05GSUdf UENJX1FVSVJLUz15CiMgQ09ORklHX1BDSV9SRUFMTE9DX0VOQUJMRV9BVVRPIGlzIG5vdCBz ZXQKQ09ORklHX1BDSV9TVFVCPXkKQ09ORklHX1BDSV9QRl9TVFVCPXkKQ09ORklHX1BDSV9B VFM9eQpDT05GSUdfUENJX0xPQ0tMRVNTX0NPTkZJRz15CkNPTkZJR19QQ0lfSU9WPXkKIyBD T05GSUdfUENJX1BSSSBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSV9QQVNJRCBpcyBub3Qgc2V0 CkNPTkZJR19QQ0lfTEFCRUw9eQpDT05GSUdfVkdBX0FSQj15CkNPTkZJR19WR0FfQVJCX01B WF9HUFVTPTE2CiMgQ09ORklHX0hPVFBMVUdfUENJIGlzIG5vdCBzZXQKCiMKIyBQQ0kgY29u dHJvbGxlciBkcml2ZXJzCiMKCiMKIyBDYWRlbmNlLWJhc2VkIFBDSWUgY29udHJvbGxlcnMK IwojIGVuZCBvZiBDYWRlbmNlLWJhc2VkIFBDSWUgY29udHJvbGxlcnMKCiMKIyBEZXNpZ25X YXJlLWJhc2VkIFBDSWUgY29udHJvbGxlcnMKIwojIGVuZCBvZiBEZXNpZ25XYXJlLWJhc2Vk IFBDSWUgY29udHJvbGxlcnMKCiMKIyBNb2JpdmVpbC1iYXNlZCBQQ0llIGNvbnRyb2xsZXJz CiMKIyBlbmQgb2YgTW9iaXZlaWwtYmFzZWQgUENJZSBjb250cm9sbGVycwoKIwojIFBMREEt YmFzZWQgUENJZSBjb250cm9sbGVycwojCiMgZW5kIG9mIFBMREEtYmFzZWQgUENJZSBjb250 cm9sbGVycwojIGVuZCBvZiBQQ0kgY29udHJvbGxlciBkcml2ZXJzCgojCiMgUENJIEVuZHBv aW50CiMKQ09ORklHX1BDSV9FTkRQT0lOVD15CkNPTkZJR19QQ0lfRU5EUE9JTlRfQ09ORklH RlM9eQpDT05GSUdfUENJX0VQRl9URVNUPXkKIyBDT05GSUdfUENJX0VQRl9OVEIgaXMgbm90 IHNldApDT05GSUdfUENJX0VQRl9WTlRCPXkKQ09ORklHX1BDSV9FUEZfTUhJPXkKIyBlbmQg b2YgUENJIEVuZHBvaW50CgojCiMgUENJIHN3aXRjaCBjb250cm9sbGVyIGRyaXZlcnMKIwpD T05GSUdfUENJX1NXX1NXSVRDSFRFQz15CiMgZW5kIG9mIFBDSSBzd2l0Y2ggY29udHJvbGxl ciBkcml2ZXJzCgojCiMgUENJIFBvd2VyIGNvbnRyb2wgZHJpdmVycwojCkNPTkZJR19QQ0lf UFdSQ1RMPXkKQ09ORklHX1BDSV9QV1JDVExfUFdSU0VRPXkKIyBlbmQgb2YgUENJIFBvd2Vy IGNvbnRyb2wgZHJpdmVycwoKIyBDT05GSUdfQ1hMX0JVUyBpcyBub3Qgc2V0CkNPTkZJR19Q Q0NBUkQ9eQpDT05GSUdfUENNQ0lBPXkKIyBDT05GSUdfUENNQ0lBX0xPQURfQ0lTIGlzIG5v dCBzZXQKQ09ORklHX0NBUkRCVVM9eQoKIwojIFBDLWNhcmQgYnJpZGdlcwojCkNPTkZJR19Z RU5UQT15CkNPTkZJR19ZRU5UQV9PMj15CkNPTkZJR19ZRU5UQV9SSUNPSD15CkNPTkZJR19Z RU5UQV9UST15CkNPTkZJR19ZRU5UQV9FTkVfVFVORT15CkNPTkZJR19ZRU5UQV9UT1NISUJB PXkKQ09ORklHX1BENjcyOT15CkNPTkZJR19JODIwOTI9eQpDT05GSUdfUENDQVJEX05PTlNU QVRJQz15CkNPTkZJR19SQVBJRElPPXkKQ09ORklHX1JBUElESU9fRElTQ19USU1FT1VUPTMw CkNPTkZJR19SQVBJRElPX0VOQUJMRV9SWF9UWF9QT1JUUz15CiMgQ09ORklHX1JBUElESU9f RE1BX0VOR0lORSBpcyBub3Qgc2V0CiMgQ09ORklHX1JBUElESU9fREVCVUcgaXMgbm90IHNl dAojIENPTkZJR19SQVBJRElPX0VOVU1fQkFTSUMgaXMgbm90IHNldApDT05GSUdfUkFQSURJ T19DSE1BTj15CkNPTkZJR19SQVBJRElPX01QT1JUX0NERVY9eQoKIwojIFJhcGlkSU8gU3dp dGNoIGRyaXZlcnMKIwpDT05GSUdfUkFQSURJT19DUFNfWFg9eQpDT05GSUdfUkFQSURJT19D UFNfR0VOMj15CiMgQ09ORklHX1JBUElESU9fUlhTX0dFTjMgaXMgbm90IHNldAojIGVuZCBv ZiBSYXBpZElPIFN3aXRjaCBkcml2ZXJzCgojCiMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucwoj CkNPTkZJR19BVVhJTElBUllfQlVTPXkKIyBDT05GSUdfVUVWRU5UX0hFTFBFUiBpcyBub3Qg c2V0CkNPTkZJR19ERVZUTVBGUz15CiMgQ09ORklHX0RFVlRNUEZTX01PVU5UIGlzIG5vdCBz ZXQKQ09ORklHX0RFVlRNUEZTX1NBRkU9eQpDT05GSUdfU1RBTkRBTE9ORT15CkNPTkZJR19Q UkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKCiMKIyBGaXJtd2FyZSBsb2FkZXIKIwpDT05GSUdf RldfTE9BREVSPXkKQ09ORklHX0ZXX0xPQURFUl9QQUdFRF9CVUY9eQpDT05GSUdfRldfTE9B REVSX1NZU0ZTPXkKQ09ORklHX0VYVFJBX0ZJUk1XQVJFPSIiCkNPTkZJR19GV19MT0FERVJf VVNFUl9IRUxQRVI9eQpDT05GSUdfRldfTE9BREVSX1VTRVJfSEVMUEVSX0ZBTExCQUNLPXkK IyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNTIGlzIG5vdCBzZXQKIyBDT05GSUdfRldfVVBM T0FEIGlzIG5vdCBzZXQKIyBlbmQgb2YgRmlybXdhcmUgbG9hZGVyCgpDT05GSUdfQUxMT1df REVWX0NPUkVEVU1QPXkKQ09ORklHX1BNX1FPU19LVU5JVF9URVNUPXkKQ09ORklHX0RNX0tV TklUX1RFU1Q9eQpDT05GSUdfRFJJVkVSX1BFX0tVTklUX1RFU1Q9eQpDT05GSUdfR0VORVJJ Q19DUFVfREVWSUNFUz15CkNPTkZJR19HRU5FUklDX0NQVV9BVVRPUFJPQkU9eQpDT05GSUdf R0VORVJJQ19DUFVfVlVMTkVSQUJJTElUSUVTPXkKQ09ORklHX1NPQ19CVVM9eQpDT05GSUdf UkVHTUFQPXkKQ09ORklHX1JFR01BUF9LVU5JVD15CiMgQ09ORklHX1JFR01BUF9CVUlMRCBp cyBub3Qgc2V0CkNPTkZJR19SRUdNQVBfSTJDPXkKQ09ORklHX1JFR01BUF9TTElNQlVTPXkK Q09ORklHX1JFR01BUF9TUE1JPXkKQ09ORklHX1JFR01BUF9XMT15CkNPTkZJR19SRUdNQVBf TU1JTz15CkNPTkZJR19SRUdNQVBfSVJRPXkKQ09ORklHX1JFR01BUF9SQU09eQpDT05GSUdf UkVHTUFQX1NPVU5EV0lSRT15CkNPTkZJR19SRUdNQVBfU09VTkRXSVJFX01CUT15CkNPTkZJ R19SRUdNQVBfU0NDQj15CkNPTkZJR19ETUFfU0hBUkVEX0JVRkZFUj15CkNPTkZJR19ETUFf RkVOQ0VfVFJBQ0U9eQojIENPTkZJR19GV19ERVZMSU5LX1NZTkNfU1RBVEVfVElNRU9VVCBp cyBub3Qgc2V0CiMgZW5kIG9mIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKCiMKIyBCdXMgZGV2 aWNlcwojCiMgQ09ORklHX01ISV9CVVMgaXMgbm90IHNldApDT05GSUdfTUhJX0JVU19FUD15 CiMgZW5kIG9mIEJ1cyBkZXZpY2VzCgojCiMgQ2FjaGUgRHJpdmVycwojCiMgZW5kIG9mIENh Y2hlIERyaXZlcnMKCiMKIyBGaXJtd2FyZSBEcml2ZXJzCiMKCiMKIyBBUk0gU3lzdGVtIENv bnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJmYWNlIFByb3RvY29sCiMKIyBlbmQgb2YgQVJN IFN5c3RlbSBDb250cm9sIGFuZCBNYW5hZ2VtZW50IEludGVyZmFjZSBQcm90b2NvbAoKQ09O RklHX0VERD15CkNPTkZJR19FRERfT0ZGPXkKQ09ORklHX0ZJUk1XQVJFX01FTU1BUD15CiMg Q09ORklHX0RNSUlEIGlzIG5vdCBzZXQKQ09ORklHX0RNSV9TWVNGUz15CkNPTkZJR19ETUlf U0NBTl9NQUNISU5FX05PTl9FRklfRkFMTEJBQ0s9eQpDT05GSUdfRldfQ0ZHX1NZU0ZTPXkK Q09ORklHX0ZXX0NGR19TWVNGU19DTURMSU5FPXkKIyBDT05GSUdfU1lTRkJfU0lNUExFRkIg aXMgbm90IHNldApDT05GSUdfRldfQ1NfRFNQPXkKIyBDT05GSUdfR09PR0xFX0ZJUk1XQVJF IGlzIG5vdCBzZXQKCiMKIyBFRkkgKEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNlKSBT dXBwb3J0CiMKQ09ORklHX0VGSV9FU1JUPXkKIyBDT05GSUdfRUZJX1ZBUlNfUFNUT1JFIGlz IG5vdCBzZXQKIyBDT05GSUdfRUZJX0RYRV9NRU1fQVRUUklCVVRFUyBpcyBub3Qgc2V0CkNP TkZJR19FRklfUlVOVElNRV9XUkFQUEVSUz15CkNPTkZJR19FRklfQk9PVExPQURFUl9DT05U Uk9MPXkKQ09ORklHX0VGSV9DQVBTVUxFX0xPQURFUj15CiMgQ09ORklHX0VGSV9DQVBTVUxF X1FVSVJLX1FVQVJLX0NTSCBpcyBub3Qgc2V0CkNPTkZJR19FRklfVEVTVD15CkNPTkZJR19F RklfREVWX1BBVEhfUEFSU0VSPXkKQ09ORklHX0FQUExFX1BST1BFUlRJRVM9eQojIENPTkZJ R19SRVNFVF9BVFRBQ0tfTUlUSUdBVElPTiBpcyBub3Qgc2V0CkNPTkZJR19FRklfUkNJMl9U QUJMRT15CkNPTkZJR19FRklfRElTQUJMRV9QQ0lfRE1BPXkKQ09ORklHX0VGSV9FQVJMWUNP Tj15CkNPTkZJR19FRklfQ1VTVE9NX1NTRFRfT1ZFUkxBWVM9eQojIENPTkZJR19FRklfRElT QUJMRV9SVU5USU1FIGlzIG5vdCBzZXQKIyBDT05GSUdfRUZJX0NPQ09fU0VDUkVUIGlzIG5v dCBzZXQKIyBlbmQgb2YgRUZJIChFeHRlbnNpYmxlIEZpcm13YXJlIEludGVyZmFjZSkgU3Vw cG9ydAoKQ09ORklHX1VFRklfQ1BFUj15CkNPTkZJR19VRUZJX0NQRVJfWDg2PXkKCiMKIyBR dWFsY29tbSBmaXJtd2FyZSBkcml2ZXJzCiMKIyBDT05GSUdfUUNPTV9UWk1FTV9NT0RFX0dF TkVSSUMgaXMgbm90IHNldApDT05GSUdfUUNPTV9UWk1FTV9NT0RFX1NITUJSSURHRT15CiMg ZW5kIG9mIFF1YWxjb21tIGZpcm13YXJlIGRyaXZlcnMKCiMKIyBUZWdyYSBmaXJtd2FyZSBk cml2ZXIKIwojIGVuZCBvZiBUZWdyYSBmaXJtd2FyZSBkcml2ZXIKIyBlbmQgb2YgRmlybXdh cmUgRHJpdmVycwoKQ09ORklHX0dOU1M9eQpDT05GSUdfTVREPXkKCiMKIyBQYXJ0aXRpb24g cGFyc2VycwojCkNPTkZJR19NVERfQ01ETElORV9QQVJUUz15CiMgQ09ORklHX01URF9SRURC T09UX1BBUlRTIGlzIG5vdCBzZXQKIyBlbmQgb2YgUGFydGl0aW9uIHBhcnNlcnMKCiMKIyBV c2VyIE1vZHVsZXMgQW5kIFRyYW5zbGF0aW9uIExheWVycwojCkNPTkZJR19NVERfQkxLREVW Uz15CiMgQ09ORklHX01URF9CTE9DSyBpcyBub3Qgc2V0CiMgQ09ORklHX01URF9CTE9DS19S TyBpcyBub3Qgc2V0CkNPTkZJR19GVEw9eQpDT05GSUdfTkZUTD15CiMgQ09ORklHX05GVExf UlcgaXMgbm90IHNldAojIENPTkZJR19JTkZUTCBpcyBub3Qgc2V0CkNPTkZJR19SRkRfRlRM PXkKIyBDT05GSUdfU1NGREMgaXMgbm90IHNldApDT05GSUdfU01fRlRMPXkKIyBDT05GSUdf TVREX09PUFMgaXMgbm90IHNldAojIENPTkZJR19NVERfUEFSVElUSU9ORURfTUFTVEVSIGlz IG5vdCBzZXQKCiMKIyBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwojCkNPTkZJR19NVERf Q0ZJPXkKQ09ORklHX01URF9KRURFQ1BST0JFPXkKQ09ORklHX01URF9HRU5fUFJPQkU9eQoj IENPTkZJR19NVERfQ0ZJX0FEVl9PUFRJT05TIGlzIG5vdCBzZXQKQ09ORklHX01URF9NQVBf QkFOS19XSURUSF8xPXkKQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8yPXkKQ09ORklHX01U RF9NQVBfQkFOS19XSURUSF80PXkKQ09ORklHX01URF9DRklfSTE9eQpDT05GSUdfTVREX0NG SV9JMj15CkNPTkZJR19NVERfQ0ZJX0lOVEVMRVhUPXkKQ09ORklHX01URF9DRklfQU1EU1RE PXkKQ09ORklHX01URF9DRklfU1RBQT15CkNPTkZJR19NVERfQ0ZJX1VUSUw9eQpDT05GSUdf TVREX1JBTT15CiMgQ09ORklHX01URF9ST00gaXMgbm90IHNldApDT05GSUdfTVREX0FCU0VO VD15CiMgZW5kIG9mIFJBTS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCgojCiMgTWFwcGluZyBk cml2ZXJzIGZvciBjaGlwIGFjY2VzcwojCkNPTkZJR19NVERfQ09NUExFWF9NQVBQSU5HUz15 CiMgQ09ORklHX01URF9QSFlTTUFQIGlzIG5vdCBzZXQKQ09ORklHX01URF9TQkNfR1hYPXkK IyBDT05GSUdfTVREX1NDeDIwMF9ET0NGTEFTSCBpcyBub3Qgc2V0CkNPTkZJR19NVERfQU1E NzZYUk9NPXkKQ09ORklHX01URF9JQ0hYUk9NPXkKQ09ORklHX01URF9FU0IyUk9NPXkKQ09O RklHX01URF9DSzgwNFhST009eQpDT05GSUdfTVREX1NDQjJfRkxBU0g9eQpDT05GSUdfTVRE X05FVHRlbD15CiMgQ09ORklHX01URF9MNDQwR1ggaXMgbm90IHNldApDT05GSUdfTVREX1BD ST15CkNPTkZJR19NVERfUENNQ0lBPXkKIyBDT05GSUdfTVREX1BDTUNJQV9BTk9OWU1PVVMg aXMgbm90IHNldApDT05GSUdfTVREX1BMQVRSQU09eQojIGVuZCBvZiBNYXBwaW5nIGRyaXZl cnMgZm9yIGNoaXAgYWNjZXNzCgojCiMgU2VsZi1jb250YWluZWQgTVREIGRldmljZSBkcml2 ZXJzCiMKQ09ORklHX01URF9QTUM1NTE9eQojIENPTkZJR19NVERfUE1DNTUxX0JVR0ZJWCBp cyBub3Qgc2V0CiMgQ09ORklHX01URF9QTUM1NTFfREVCVUcgaXMgbm90IHNldApDT05GSUdf TVREX1NMUkFNPXkKQ09ORklHX01URF9QSFJBTT15CkNPTkZJR19NVERfTVREUkFNPXkKQ09O RklHX01URFJBTV9UT1RBTF9TSVpFPTQwOTYKQ09ORklHX01URFJBTV9FUkFTRV9TSVpFPTEy OApDT05GSUdfTVREX0JMT0NLMk1URD15CgojCiMgRGlzay1Pbi1DaGlwIERldmljZSBEcml2 ZXJzCiMKQ09ORklHX01URF9ET0NHMz15CkNPTkZJR19CQ0hfQ09OU1RfTT0xNApDT05GSUdf QkNIX0NPTlNUX1Q9NAojIGVuZCBvZiBTZWxmLWNvbnRhaW5lZCBNVEQgZGV2aWNlIGRyaXZl cnMKCiMKIyBOQU5ECiMKQ09ORklHX01URF9OQU5EX0NPUkU9eQojIENPTkZJR19NVERfT05F TkFORCBpcyBub3Qgc2V0CkNPTkZJR19NVERfUkFXX05BTkQ9eQoKIwojIFJhdy9wYXJhbGxl bCBOQU5EIGZsYXNoIGNvbnRyb2xsZXJzCiMKIyBDT05GSUdfTVREX05BTkRfREVOQUxJX1BD SSBpcyBub3Qgc2V0CkNPTkZJR19NVERfTkFORF9DQUZFPXkKIyBDT05GSUdfTVREX05BTkRf Q1M1NTNYIGlzIG5vdCBzZXQKQ09ORklHX01URF9OQU5EX01YSUM9eQojIENPTkZJR19NVERf TkFORF9HUElPIGlzIG5vdCBzZXQKQ09ORklHX01URF9OQU5EX1BMQVRGT1JNPXkKQ09ORklH X01URF9OQU5EX0FSQVNBTj15CgojCiMgTWlzYwojCkNPTkZJR19NVERfU01fQ09NTU9OPXkK Q09ORklHX01URF9OQU5EX05BTkRTSU09eQpDT05GSUdfTVREX05BTkRfUklDT0g9eQpDT05G SUdfTVREX05BTkRfRElTS09OQ0hJUD15CkNPTkZJR19NVERfTkFORF9ESVNLT05DSElQX1BS T0JFX0FEVkFOQ0VEPXkKQ09ORklHX01URF9OQU5EX0RJU0tPTkNISVBfUFJPQkVfQUREUkVT Uz0wCiMgQ09ORklHX01URF9OQU5EX0RJU0tPTkNISVBfUFJPQkVfSElHSCBpcyBub3Qgc2V0 CkNPTkZJR19NVERfTkFORF9ESVNLT05DSElQX0JCVFdSSVRFPXkKCiMKIyBFQ0MgZW5naW5l IHN1cHBvcnQKIwpDT05GSUdfTVREX05BTkRfRUNDPXkKQ09ORklHX01URF9OQU5EX0VDQ19T V19IQU1NSU5HPXkKIyBDT05GSUdfTVREX05BTkRfRUNDX1NXX0hBTU1JTkdfU01DIGlzIG5v dCBzZXQKQ09ORklHX01URF9OQU5EX0VDQ19TV19CQ0g9eQojIENPTkZJR19NVERfTkFORF9F Q0NfTVhJQyBpcyBub3Qgc2V0CiMgZW5kIG9mIEVDQyBlbmdpbmUgc3VwcG9ydAojIGVuZCBv ZiBOQU5ECgojCiMgTFBERFIgJiBMUEREUjIgUENNIG1lbW9yeSBkcml2ZXJzCiMKQ09ORklH X01URF9MUEREUj15CkNPTkZJR19NVERfUUlORk9fUFJPQkU9eQojIGVuZCBvZiBMUEREUiAm IExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKCkNPTkZJR19NVERfVUJJPXkKQ09ORklHX01U RF9VQklfV0xfVEhSRVNIT0xEPTQwOTYKQ09ORklHX01URF9VQklfQkVCX0xJTUlUPTIwCkNP TkZJR19NVERfVUJJX0ZBU1RNQVA9eQpDT05GSUdfTVREX1VCSV9HTFVFQkk9eQpDT05GSUdf TVREX1VCSV9CTE9DSz15CkNPTkZJR19NVERfVUJJX05WTUVNPXkKQ09ORklHX01URF9IWVBF UkJVUz15CiMgQ09ORklHX09GIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9Q Q19QQVJQT1JUPXkKIyBDT05GSUdfUEFSUE9SVCBpcyBub3Qgc2V0CkNPTkZJR19QTlA9eQpD T05GSUdfUE5QX0RFQlVHX01FU1NBR0VTPXkKCiMKIyBQcm90b2NvbHMKIwpDT05GSUdfUE5Q QUNQST15CiMgQ09ORklHX0JMS19ERVYgaXMgbm90IHNldAoKIwojIE5WTUUgU3VwcG9ydAoj CkNPTkZJR19OVk1FX0FVVEg9eQpDT05GSUdfTlZNRV9DT1JFPXkKQ09ORklHX0JMS19ERVZf TlZNRT15CiMgQ09ORklHX05WTUVfTVVMVElQQVRIIGlzIG5vdCBzZXQKQ09ORklHX05WTUVf VkVSQk9TRV9FUlJPUlM9eQpDT05GSUdfTlZNRV9IV01PTj15CkNPTkZJR19OVk1FX0ZBQlJJ Q1M9eQpDT05GSUdfTlZNRV9GQz15CkNPTkZJR19OVk1FX0hPU1RfQVVUSD15CkNPTkZJR19O Vk1FX1RBUkdFVD15CkNPTkZJR19OVk1FX1RBUkdFVF9QQVNTVEhSVT15CkNPTkZJR19OVk1F X1RBUkdFVF9MT09QPXkKQ09ORklHX05WTUVfVEFSR0VUX0ZDPXkKQ09ORklHX05WTUVfVEFS R0VUX0ZDTE9PUD15CkNPTkZJR19OVk1FX1RBUkdFVF9BVVRIPXkKIyBlbmQgb2YgTlZNRSBT dXBwb3J0CgojCiMgTWlzYyBkZXZpY2VzCiMKIyBDT05GSUdfQUQ1MjVYX0RQT1QgaXMgbm90 IHNldAojIENPTkZJR19EVU1NWV9JUlEgaXMgbm90IHNldAojIENPTkZJR19JQk1fQVNNIGlz IG5vdCBzZXQKIyBDT05GSUdfUEhBTlRPTSBpcyBub3Qgc2V0CkNPTkZJR19USUZNX0NPUkU9 eQojIENPTkZJR19USUZNXzdYWDEgaXMgbm90IHNldAojIENPTkZJR19JQ1M5MzJTNDAxIGlz IG5vdCBzZXQKIyBDT05GSUdfRU5DTE9TVVJFX1NFUlZJQ0VTIGlzIG5vdCBzZXQKQ09ORklH X0NTNTUzNV9NRkdQVD15CkNPTkZJR19DUzU1MzVfTUZHUFRfREVGQVVMVF9JUlE9NwpDT05G SUdfQ1M1NTM1X0NMT0NLX0VWRU5UX1NSQz15CkNPTkZJR19IUF9JTE89eQpDT05GSUdfQVBE Uzk4MDJBTFM9eQpDT05GSUdfSVNMMjkwMDM9eQpDT05GSUdfSVNMMjkwMjA9eQojIENPTkZJ R19TRU5TT1JTX1RTTDI1NTAgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19CSDE3NzA9eQoj IENPTkZJR19TRU5TT1JTX0FQRFM5OTBYIGlzIG5vdCBzZXQKQ09ORklHX0hNQzYzNTI9eQoj IENPTkZJR19EUzE2ODIgaXMgbm90IHNldAojIENPTkZJR19QQ0hfUEhVQiBpcyBub3Qgc2V0 CkNPTkZJR19TUkFNPXkKQ09ORklHX0RXX1hEQVRBX1BDSUU9eQpDT05GSUdfUENJX0VORFBP SU5UX1RFU1Q9eQojIENPTkZJR19YSUxJTlhfU0RGRUMgaXMgbm90IHNldApDT05GSUdfVFBT NjU5NF9FU009eQpDT05GSUdfVFBTNjU5NF9QRlNNPXkKQ09ORklHX05TTT15CkNPTkZJR19D MlBPUlQ9eQojIENPTkZJR19DMlBPUlRfRFVSQU1BUl8yMTUwIGlzIG5vdCBzZXQKCiMKIyBF RVBST00gc3VwcG9ydAojCkNPTkZJR19FRVBST01fQVQyND15CiMgQ09ORklHX0VFUFJPTV9N QVg2ODc1IGlzIG5vdCBzZXQKIyBDT05GSUdfRUVQUk9NXzkzQ1g2IGlzIG5vdCBzZXQKQ09O RklHX0VFUFJPTV9JRFRfODlIUEVTWD15CkNPTkZJR19FRVBST01fRUUxMDA0PXkKIyBlbmQg b2YgRUVQUk9NIHN1cHBvcnQKCkNPTkZJR19DQjcxMF9DT1JFPXkKQ09ORklHX0NCNzEwX0RF QlVHPXkKQ09ORklHX0NCNzEwX0RFQlVHX0FTU1VNUFRJT05TPXkKCiMKIyBUZXhhcyBJbnN0 cnVtZW50cyBzaGFyZWQgdHJhbnNwb3J0IGxpbmUgZGlzY2lwbGluZQojCiMgZW5kIG9mIFRl eGFzIEluc3RydW1lbnRzIHNoYXJlZCB0cmFuc3BvcnQgbGluZSBkaXNjaXBsaW5lCgojIENP TkZJR19TRU5TT1JTX0xJUzNfSTJDIGlzIG5vdCBzZXQKQ09ORklHX0FMVEVSQV9TVEFQTD15 CiMgQ09ORklHX0lOVEVMX01FSSBpcyBub3Qgc2V0CkNPTkZJR19WTVdBUkVfVk1DST15CkNP TkZJR19FQ0hPPXkKQ09ORklHX01JU0NfQUxDT1JfUENJPXkKIyBDT05GSUdfTUlTQ19SVFNY X1BDSSBpcyBub3Qgc2V0CkNPTkZJR19VQUNDRT15CiMgQ09ORklHX1BWUEFOSUMgaXMgbm90 IHNldAojIENPTkZJR19HUF9QQ0kxWFhYWCBpcyBub3Qgc2V0CiMgQ09ORklHX0tFQkFfQ1A1 MDAgaXMgbm90IHNldAojIGVuZCBvZiBNaXNjIGRldmljZXMKCiMKIyBTQ1NJIGRldmljZSBz dXBwb3J0CiMKQ09ORklHX1NDU0lfTU9EPXkKQ09ORklHX1JBSURfQVRUUlM9eQpDT05GSUdf U0NTSV9DT01NT049eQpDT05GSUdfU0NTST15CkNPTkZJR19TQ1NJX0RNQT15CiMgQ09ORklH X1NDU0lfUFJPQ19GUyBpcyBub3Qgc2V0CkNPTkZJR19TQ1NJX0xJQl9LVU5JVF9URVNUPXkK CiMKIyBTQ1NJIHN1cHBvcnQgdHlwZSAoZGlzaywgdGFwZSwgQ0QtUk9NKQojCkNPTkZJR19C TEtfREVWX1NEPXkKQ09ORklHX0NIUl9ERVZfU1Q9eQojIENPTkZJR19DSFJfREVWX1NHIGlz IG5vdCBzZXQKIyBDT05GSUdfQkxLX0RFVl9CU0cgaXMgbm90IHNldAojIENPTkZJR19DSFJf REVWX1NDSCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfQ09OU1RBTlRTIGlzIG5vdCBzZXQK Q09ORklHX1NDU0lfTE9HR0lORz15CiMgQ09ORklHX1NDU0lfU0NBTl9BU1lOQyBpcyBub3Qg c2V0CkNPTkZJR19TQ1NJX1BST1RPX1RFU1Q9eQoKIwojIFNDU0kgVHJhbnNwb3J0cwojCkNP TkZJR19TQ1NJX1NQSV9BVFRSUz15CkNPTkZJR19TQ1NJX1NBU19BVFRSUz15CkNPTkZJR19T Q1NJX1NBU19MSUJTQVM9eQpDT05GSUdfU0NTSV9TQVNfQVRBPXkKIyBDT05GSUdfU0NTSV9T QVNfSE9TVF9TTVAgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX1NSUF9BVFRSUyBpcyBub3Qg c2V0CiMgZW5kIG9mIFNDU0kgVHJhbnNwb3J0cwoKIyBDT05GSUdfU0NTSV9MT1dMRVZFTCBp cyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfREggaXMgbm90IHNldAojIGVuZCBvZiBTQ1NJIGRl dmljZSBzdXBwb3J0CgpDT05GSUdfQVRBPXkKQ09ORklHX1NBVEFfSE9TVD15CkNPTkZJR19Q QVRBX1RJTUlOR1M9eQpDT05GSUdfQVRBX1ZFUkJPU0VfRVJST1I9eQpDT05GSUdfQVRBX0ZP UkNFPXkKQ09ORklHX0FUQV9BQ1BJPXkKIyBDT05GSUdfU0FUQV9QTVAgaXMgbm90IHNldAoK IwojIENvbnRyb2xsZXJzIHdpdGggbm9uLVNGRiBuYXRpdmUgaW50ZXJmYWNlCiMKIyBDT05G SUdfU0FUQV9BSENJIGlzIG5vdCBzZXQKQ09ORklHX1NBVEFfQUhDSV9QTEFURk9STT15CkNP TkZJR19BSENJX0RXQz15CkNPTkZJR19TQVRBX0lOSUMxNjJYPXkKIyBDT05GSUdfU0FUQV9B Q0FSRF9BSENJIGlzIG5vdCBzZXQKQ09ORklHX1NBVEFfU0lMMjQ9eQojIENPTkZJR19BVEFf U0ZGIGlzIG5vdCBzZXQKQ09ORklHX01EPXkKQ09ORklHX0JMS19ERVZfTUQ9eQpDT05GSUdf TURfQVVUT0RFVEVDVD15CkNPTkZJR19NRF9CSVRNQVBfRklMRT15CkNPTkZJR19NRF9SQUlE MD15CkNPTkZJR19NRF9SQUlEMT15CkNPTkZJR19NRF9SQUlEMTA9eQpDT05GSUdfTURfUkFJ RDQ1Nj15CiMgQ09ORklHX0JDQUNIRSBpcyBub3Qgc2V0CkNPTkZJR19CTEtfREVWX0RNX0JV SUxUSU49eQpDT05GSUdfQkxLX0RFVl9ETT15CkNPTkZJR19ETV9ERUJVRz15CkNPTkZJR19E TV9CVUZJTz15CiMgQ09ORklHX0RNX0RFQlVHX0JMT0NLX01BTkFHRVJfTE9DS0lORyBpcyBu b3Qgc2V0CkNPTkZJR19ETV9CSU9fUFJJU09OPXkKQ09ORklHX0RNX1BFUlNJU1RFTlRfREFU QT15CkNPTkZJR19ETV9VTlNUUklQRUQ9eQpDT05GSUdfRE1fQ1JZUFQ9eQojIENPTkZJR19E TV9TTkFQU0hPVCBpcyBub3Qgc2V0CkNPTkZJR19ETV9USElOX1BST1ZJU0lPTklORz15CkNP TkZJR19ETV9DQUNIRT15CkNPTkZJR19ETV9DQUNIRV9TTVE9eQpDT05GSUdfRE1fV1JJVEVD QUNIRT15CiMgQ09ORklHX0RNX0VSQSBpcyBub3Qgc2V0CiMgQ09ORklHX0RNX0NMT05FIGlz IG5vdCBzZXQKQ09ORklHX0RNX01JUlJPUj15CkNPTkZJR19ETV9SQUlEPXkKIyBDT05GSUdf RE1fWkVSTyBpcyBub3Qgc2V0CiMgQ09ORklHX0RNX01VTFRJUEFUSCBpcyBub3Qgc2V0CkNP TkZJR19ETV9ERUxBWT15CkNPTkZJR19ETV9EVVNUPXkKIyBDT05GSUdfRE1fSU5JVCBpcyBu b3Qgc2V0CiMgQ09ORklHX0RNX1VFVkVOVCBpcyBub3Qgc2V0CiMgQ09ORklHX0RNX0ZMQUtF WSBpcyBub3Qgc2V0CkNPTkZJR19ETV9WRVJJVFk9eQojIENPTkZJR19ETV9WRVJJVFlfVkVS SUZZX1JPT1RIQVNIX1NJRyBpcyBub3Qgc2V0CkNPTkZJR19ETV9WRVJJVFlfRkVDPXkKIyBD T05GSUdfRE1fU1dJVENIIGlzIG5vdCBzZXQKQ09ORklHX0RNX0xPR19XUklURVM9eQpDT05G SUdfRE1fSU5URUdSSVRZPXkKIyBDT05GSUdfRE1fWk9ORUQgaXMgbm90IHNldApDT05GSUdf VEFSR0VUX0NPUkU9eQojIENPTkZJR19UQ01fSUJMT0NLIGlzIG5vdCBzZXQKIyBDT05GSUdf VENNX0ZJTEVJTyBpcyBub3Qgc2V0CkNPTkZJR19UQ01fUFNDU0k9eQojIENPTkZJR19MT09Q QkFDS19UQVJHRVQgaXMgbm90IHNldAojIENPTkZJR19TQlBfVEFSR0VUIGlzIG5vdCBzZXQK IyBDT05GSUdfUkVNT1RFX1RBUkdFVCBpcyBub3Qgc2V0CkNPTkZJR19GVVNJT049eQpDT05G SUdfRlVTSU9OX1NQST15CkNPTkZJR19GVVNJT05fU0FTPXkKQ09ORklHX0ZVU0lPTl9NQVhf U0dFPTEyOApDT05GSUdfRlVTSU9OX0NUTD15CkNPTkZJR19GVVNJT05fTE9HR0lORz15Cgoj CiMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAojCkNPTkZJR19GSVJFV0lSRT15CkNP TkZJR19GSVJFV0lSRV9LVU5JVF9VQVBJX1RFU1Q9eQpDT05GSUdfRklSRVdJUkVfS1VOSVRf REVWSUNFX0FUVFJJQlVURV9URVNUPXkKQ09ORklHX0ZJUkVXSVJFX0tVTklUX1BBQ0tFVF9T RVJERVNfVEVTVD15CkNPTkZJR19GSVJFV0lSRV9LVU5JVF9TRUxGX0lEX1NFUVVFTkNFX0hF TFBFUl9URVNUPXkKQ09ORklHX0ZJUkVXSVJFX09IQ0k9eQojIENPTkZJR19GSVJFV0lSRV9L VU5JVF9PSENJX1NFUkRFU19URVNUIGlzIG5vdCBzZXQKQ09ORklHX0ZJUkVXSVJFX1NCUDI9 eQpDT05GSUdfRklSRVdJUkVfTk9TWT15CiMgZW5kIG9mIElFRUUgMTM5NCAoRmlyZVdpcmUp IHN1cHBvcnQKCiMgQ09ORklHX01BQ0lOVE9TSF9EUklWRVJTIGlzIG5vdCBzZXQKCiMKIyBJ bnB1dCBkZXZpY2Ugc3VwcG9ydAojCkNPTkZJR19JTlBVVD15CkNPTkZJR19JTlBVVF9MRURT PXkKQ09ORklHX0lOUFVUX0ZGX01FTUxFU1M9eQpDT05GSUdfSU5QVVRfU1BBUlNFS01BUD15 CkNPTkZJR19JTlBVVF9NQVRSSVhLTUFQPXkKCiMKIyBVc2VybGFuZCBpbnRlcmZhY2VzCiMK IyBDT05GSUdfSU5QVVRfTU9VU0VERVYgaXMgbm90IHNldApDT05GSUdfSU5QVVRfSk9ZREVW PXkKIyBDT05GSUdfSU5QVVRfRVZERVYgaXMgbm90IHNldApDT05GSUdfSU5QVVRfRVZCVUc9 eQojIENPTkZJR19JTlBVVF9LVU5JVF9URVNUIGlzIG5vdCBzZXQKCiMKIyBJbnB1dCBEZXZp Y2UgRHJpdmVycwojCkNPTkZJR19JTlBVVF9LRVlCT0FSRD15CkNPTkZJR19LRVlCT0FSRF9B REM9eQpDT05GSUdfS0VZQk9BUkRfQURQNTU4OD15CiMgQ09ORklHX0tFWUJPQVJEX0FEUDU1 ODkgaXMgbm90IHNldAojIENPTkZJR19LRVlCT0FSRF9BVEtCRCBpcyBub3Qgc2V0CkNPTkZJ R19LRVlCT0FSRF9RVDEwNTA9eQpDT05GSUdfS0VZQk9BUkRfUVQxMDcwPXkKIyBDT05GSUdf S0VZQk9BUkRfUVQyMTYwIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX0RMSU5LX0RJUjY4 NT15CkNPTkZJR19LRVlCT0FSRF9MS0tCRD15CkNPTkZJR19LRVlCT0FSRF9HUElPPXkKQ09O RklHX0tFWUJPQVJEX0dQSU9fUE9MTEVEPXkKQ09ORklHX0tFWUJPQVJEX1RDQTY0MTY9eQpD T05GSUdfS0VZQk9BUkRfVENBODQxOD15CiMgQ09ORklHX0tFWUJPQVJEX01BVFJJWCBpcyBu b3Qgc2V0CiMgQ09ORklHX0tFWUJPQVJEX0xNODMyMyBpcyBub3Qgc2V0CkNPTkZJR19LRVlC T0FSRF9MTTgzMzM9eQojIENPTkZJR19LRVlCT0FSRF9NQVg3MzU5IGlzIG5vdCBzZXQKQ09O RklHX0tFWUJPQVJEX01DUz15CiMgQ09ORklHX0tFWUJPQVJEX01QUjEyMSBpcyBub3Qgc2V0 CkNPTkZJR19LRVlCT0FSRF9ORVdUT049eQojIENPTkZJR19LRVlCT0FSRF9PUEVOQ09SRVMg aXMgbm90IHNldAojIENPTkZJR19LRVlCT0FSRF9QSU5FUEhPTkUgaXMgbm90IHNldAojIENP TkZJR19LRVlCT0FSRF9TQU1TVU5HIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX0dPTERG SVNIX0VWRU5UUz15CiMgQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZIGlzIG5vdCBzZXQKIyBD T05GSUdfS0VZQk9BUkRfU1VOS0JEIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX0lRUzYy WD15CkNPTkZJR19LRVlCT0FSRF9UTTJfVE9VQ0hLRVk9eQpDT05GSUdfS0VZQk9BUkRfVFdM NDAzMD15CkNPTkZJR19LRVlCT0FSRF9YVEtCRD15CkNPTkZJR19LRVlCT0FSRF9NVEtfUE1J Qz15CkNPTkZJR19LRVlCT0FSRF9DWVBSRVNTX1NGPXkKIyBDT05GSUdfSU5QVVRfTU9VU0Ug aXMgbm90IHNldAojIENPTkZJR19JTlBVVF9KT1lTVElDSyBpcyBub3Qgc2V0CiMgQ09ORklH X0lOUFVUX1RBQkxFVCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9UT1VDSFNDUkVFTj15CiMg Q09ORklHX1RPVUNIU0NSRUVOXzg4UE04NjBYIGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NS RUVOX0FENzg3OT15CkNPTkZJR19UT1VDSFNDUkVFTl9BRDc4NzlfSTJDPXkKQ09ORklHX1RP VUNIU0NSRUVOX0FEQz15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0FUTUVMX01YVCBpcyBub3Qg c2V0CkNPTkZJR19UT1VDSFNDUkVFTl9BVU9fUElYQ0lSPXkKQ09ORklHX1RPVUNIU0NSRUVO X0JVMjEwMTM9eQojIENPTkZJR19UT1VDSFNDUkVFTl9CVTIxMDI5IGlzIG5vdCBzZXQKQ09O RklHX1RPVUNIU0NSRUVOX0NISVBPTkVfSUNOODUwNT15CiMgQ09ORklHX1RPVUNIU0NSRUVO X0NZOENUTUExNDAgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9DWThDVE1HMTEw IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX0NZVFRTUF9DT1JFPXkKQ09ORklHX1RP VUNIU0NSRUVOX0NZVFRTUF9JMkM9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fQ1lUVFNQNF9DT1JF PXkKQ09ORklHX1RPVUNIU0NSRUVOX0NZVFRTUDRfSTJDPXkKIyBDT05GSUdfVE9VQ0hTQ1JF RU5fQ1lUVFNQNSBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0RZTkFQUk8gaXMg bm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fSEFNUFNISVJFPXkKQ09ORklHX1RPVUNIU0NS RUVOX0VFVEk9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYX1NFUklBTD15CkNPTkZJR19U T1VDSFNDUkVFTl9FWEMzMDAwPXkKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fRlVKSVRTVSBpcyBu b3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9HT09ESVg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5f R09PRElYX0JFUkxJTl9DT1JFPXkKQ09ORklHX1RPVUNIU0NSRUVOX0dPT0RJWF9CRVJMSU5f STJDPXkKQ09ORklHX1RPVUNIU0NSRUVOX0hJREVFUD15CkNPTkZJR19UT1VDSFNDUkVFTl9I WUNPTl9IWTQ2WFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSFlOSVRST05fQ1NUWFhYPXkKIyBD T05GSUdfVE9VQ0hTQ1JFRU5fSUxJMjEwWCBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVF Tl9JTElURUs9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fUzZTWTc2MT15CkNPTkZJR19UT1VDSFND UkVFTl9HVU5aRT15CkNPTkZJR19UT1VDSFNDUkVFTl9FS1RGMjEyNz15CkNPTkZJR19UT1VD SFNDUkVFTl9FTEFOPXkKQ09ORklHX1RPVUNIU0NSRUVOX0VMTz15CkNPTkZJR19UT1VDSFND UkVFTl9XQUNPTV9XODAwMT15CkNPTkZJR19UT1VDSFNDUkVFTl9XQUNPTV9JMkM9eQojIENP TkZJR19UT1VDSFNDUkVFTl9NQVgxMTgwMSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVF Tl9NQ1M1MDAwPXkKQ09ORklHX1RPVUNIU0NSRUVOX01NUzExND15CkNPTkZJR19UT1VDSFND UkVFTl9NRUxGQVNfTUlQND15CkNPTkZJR19UT1VDSFNDUkVFTl9NU0cyNjM4PXkKQ09ORklH X1RPVUNIU0NSRUVOX01UT1VDSD15CkNPTkZJR19UT1VDSFNDUkVFTl9OT1ZBVEVLX05WVF9U Uz15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0lNQUdJUyBpcyBub3Qgc2V0CiMgQ09ORklHX1RP VUNIU0NSRUVOX0lORVhJTyBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX1BFTk1P VU5UIGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX0VEVF9GVDVYMDY9eQojIENPTkZJ R19UT1VDSFNDUkVFTl9UT1VDSFJJR0hUIGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVO X1RPVUNIV0lOPXkKQ09ORklHX1RPVUNIU0NSRUVOX1BJWENJUj15CiMgQ09ORklHX1RPVUNI U0NSRUVOX1dEVDg3WFhfSTJDIGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX1dNOTdY WD15CiMgQ09ORklHX1RPVUNIU0NSRUVOX1dNOTcwNSBpcyBub3Qgc2V0CiMgQ09ORklHX1RP VUNIU0NSRUVOX1dNOTcxMiBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX1dNOTcx MyBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX1RPVUNISVQyMTMgaXMgbm90IHNl dApDT05GSUdfVE9VQ0hTQ1JFRU5fVFNDX1NFUklPPXkKIyBDT05GSUdfVE9VQ0hTQ1JFRU5f VFNDMjAwNCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX1RTQzIwMDcgaXMgbm90 IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9STV9UUyBpcyBub3Qgc2V0CiMgQ09ORklHX1RP VUNIU0NSRUVOX1NJTEVBRCBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9TSVNfSTJD PXkKQ09ORklHX1RPVUNIU0NSRUVOX1NUMTIzMj15CkNPTkZJR19UT1VDSFNDUkVFTl9TVE1G VFM9eQojIENPTkZJR19UT1VDSFNDUkVFTl9TWDg2NTQgaXMgbm90IHNldAojIENPTkZJR19U T1VDSFNDUkVFTl9UUFM2NTA3WCBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9aRVQ2 MjIzPXkKQ09ORklHX1RPVUNIU0NSRUVOX1pGT1JDRT15CiMgQ09ORklHX1RPVUNIU0NSRUVO X0NPTElCUklfVkY1MCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX1JPSE1fQlUy MTAyMyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9JUVM1WFg9eQojIENPTkZJR19U T1VDSFNDUkVFTl9JUVM3MjExIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fWklO SVRJWCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0hJTUFYX0hYODMxMTJCIGlz IG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfTUlTQyBpcyBub3Qgc2V0CiMgQ09ORklHX1JNSTRf Q09SRSBpcyBub3Qgc2V0CgojCiMgSGFyZHdhcmUgSS9PIHBvcnRzCiMKQ09ORklHX1NFUklP PXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9QQ19TRVJJTz15CiMgQ09ORklHX1NFUklPX0k4 MDQyIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fU0VSUE9SVCBpcyBub3Qgc2V0CkNPTkZJ R19TRVJJT19DVDgyQzcxMD15CiMgQ09ORklHX1NFUklPX1BDSVBTMiBpcyBub3Qgc2V0CiMg Q09ORklHX1NFUklPX0xJQlBTMiBpcyBub3Qgc2V0CkNPTkZJR19TRVJJT19SQVc9eQojIENP TkZJR19TRVJJT19BTFRFUkFfUFMyIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fUFMyTVVM VCBpcyBub3Qgc2V0CkNPTkZJR19TRVJJT19BUkNfUFMyPXkKQ09ORklHX1NFUklPX0dQSU9f UFMyPXkKIyBDT05GSUdfVVNFUklPIGlzIG5vdCBzZXQKIyBDT05GSUdfR0FNRVBPUlQgaXMg bm90IHNldAojIGVuZCBvZiBIYXJkd2FyZSBJL08gcG9ydHMKIyBlbmQgb2YgSW5wdXQgZGV2 aWNlIHN1cHBvcnQKCiMKIyBDaGFyYWN0ZXIgZGV2aWNlcwojCkNPTkZJR19UVFk9eQpDT05G SUdfVlQ9eQpDT05GSUdfQ09OU09MRV9UUkFOU0xBVElPTlM9eQpDT05GSUdfVlRfQ09OU09M RT15CiMgQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORyBpcyBub3Qgc2V0CkNPTkZJR19V TklYOThfUFRZUz15CkNPTkZJR19MRUdBQ1lfUFRZUz15CkNPTkZJR19MRUdBQ1lfUFRZX0NP VU5UPTI1NgpDT05GSUdfTEVHQUNZX1RJT0NTVEk9eQojIENPTkZJR19MRElTQ19BVVRPTE9B RCBpcyBub3Qgc2V0CgojCiMgU2VyaWFsIGRyaXZlcnMKIwpDT05GSUdfU0VSSUFMX0VBUkxZ Q09OPXkKQ09ORklHX1NFUklBTF84MjUwPXkKQ09ORklHX1NFUklBTF84MjUwX0RFUFJFQ0FU RURfT1BUSU9OUz15CkNPTkZJR19TRVJJQUxfODI1MF9QTlA9eQojIENPTkZJR19TRVJJQUxf ODI1MF8xNjU1MEFfVkFSSUFOVFMgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfRklO VEVLPXkKQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQpDT05GSUdfU0VSSUFMXzgyNTBf RE1BPXkKQ09ORklHX1NFUklBTF84MjUwX1BDSUxJQj15CkNPTkZJR19TRVJJQUxfODI1MF9Q Q0k9eQojIENPTkZJR19TRVJJQUxfODI1MF9FWEFSIGlzIG5vdCBzZXQKQ09ORklHX1NFUklB TF84MjUwX0NTPXkKQ09ORklHX1NFUklBTF84MjUwX01FTl9NQ0I9eQpDT05GSUdfU0VSSUFM XzgyNTBfTlJfVUFSVFM9NApDT05GSUdfU0VSSUFMXzgyNTBfUlVOVElNRV9VQVJUUz00CkNP TkZJR19TRVJJQUxfODI1MF9FWFRFTkRFRD15CkNPTkZJR19TRVJJQUxfODI1MF9NQU5ZX1BP UlRTPXkKIyBDT05GSUdfU0VSSUFMXzgyNTBfUENJMVhYWFggaXMgbm90IHNldAojIENPTkZJ R19TRVJJQUxfODI1MF9TSEFSRV9JUlEgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBf REVURUNUX0lSUT15CkNPTkZJR19TRVJJQUxfODI1MF9SU0E9eQpDT05GSUdfU0VSSUFMXzgy NTBfRFdMSUI9eQpDT05GSUdfU0VSSUFMXzgyNTBfRFc9eQpDT05GSUdfU0VSSUFMXzgyNTBf UlQyODhYPXkKQ09ORklHX1NFUklBTF84MjUwX0xQU1M9eQojIENPTkZJR19TRVJJQUxfODI1 MF9NSUQgaXMgbm90IHNldAojIENPTkZJR19TRVJJQUxfODI1MF9QRVJJQ09NIGlzIG5vdCBz ZXQKCiMKIyBOb24tODI1MCBzZXJpYWwgcG9ydCBzdXBwb3J0CiMKQ09ORklHX1NFUklBTF9V QVJUTElURT15CiMgQ09ORklHX1NFUklBTF9VQVJUTElURV9DT05TT0xFIGlzIG5vdCBzZXQK Q09ORklHX1NFUklBTF9VQVJUTElURV9OUl9VQVJUUz0xCkNPTkZJR19TRVJJQUxfQ09SRT15 CkNPTkZJR19TRVJJQUxfQ09SRV9DT05TT0xFPXkKIyBDT05GSUdfU0VSSUFMX0pTTSBpcyBu b3Qgc2V0CiMgQ09ORklHX1NFUklBTF9MQU5USVEgaXMgbm90IHNldApDT05GSUdfU0VSSUFM X1NDQ05YUD15CkNPTkZJR19TRVJJQUxfU0NDTlhQX0NPTlNPTEU9eQpDT05GSUdfU0VSSUFM X1NDMTZJUzdYWD15CkNPTkZJR19TRVJJQUxfU0MxNklTN1hYX0kyQz15CiMgQ09ORklHX1NF UklBTF9USU1CRVJEQUxFIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX0FMVEVSQV9KVEFH VUFSVCBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQUxURVJBX1VBUlQ9eQpDT05GSUdfU0VS SUFMX0FMVEVSQV9VQVJUX01BWFBPUlRTPTQKQ09ORklHX1NFUklBTF9BTFRFUkFfVUFSVF9C QVVEUkFURT0xMTUyMDAKQ09ORklHX1NFUklBTF9BTFRFUkFfVUFSVF9DT05TT0xFPXkKQ09O RklHX1NFUklBTF9QQ0hfVUFSVD15CkNPTkZJR19TRVJJQUxfUENIX1VBUlRfQ09OU09MRT15 CkNPTkZJR19TRVJJQUxfQVJDPXkKQ09ORklHX1NFUklBTF9BUkNfQ09OU09MRT15CkNPTkZJ R19TRVJJQUxfQVJDX05SX1BPUlRTPTEKIyBDT05GSUdfU0VSSUFMX1JQMiBpcyBub3Qgc2V0 CkNPTkZJR19TRVJJQUxfRlNMX0xQVUFSVD15CkNPTkZJR19TRVJJQUxfRlNMX0xQVUFSVF9D T05TT0xFPXkKIyBDT05GSUdfU0VSSUFMX0ZTTF9MSU5GTEVYVUFSVCBpcyBub3Qgc2V0CiMg Q09ORklHX1NFUklBTF9NRU5fWjEzNSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfU1BSRD15 CiMgQ09ORklHX1NFUklBTF9TUFJEX0NPTlNPTEUgaXMgbm90IHNldAojIGVuZCBvZiBTZXJp YWwgZHJpdmVycwoKQ09ORklHX1NFUklBTF9NQ1RSTF9HUElPPXkKIyBDT05GSUdfU0VSSUFM X05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKQ09ORklHX0dPTERGSVNIX1RUWT15CkNPTkZJR19H T0xERklTSF9UVFlfRUFSTFlfQ09OU09MRT15CiMgQ09ORklHX05PWk9NSSBpcyBub3Qgc2V0 CiMgQ09ORklHX05VTExfVFRZIGlzIG5vdCBzZXQKQ09ORklHX1JQTVNHX1RUWT15CiMgQ09O RklHX1NFUklBTF9ERVZfQlVTIGlzIG5vdCBzZXQKIyBDT05GSUdfVklSVElPX0NPTlNPTEUg aXMgbm90IHNldAojIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldApDT05GSUdfU1NJ Rl9JUE1JX0JNQz15CkNPTkZJR19JUE1CX0RFVklDRV9JTlRFUkZBQ0U9eQpDT05GSUdfSFdf UkFORE9NPXkKQ09ORklHX0hXX1JBTkRPTV9USU1FUklPTUVNPXkKQ09ORklHX0hXX1JBTkRP TV9JTlRFTD15CiMgQ09ORklHX0hXX1JBTkRPTV9BTUQgaXMgbm90IHNldAojIENPTkZJR19I V19SQU5ET01fQkE0MzEgaXMgbm90IHNldApDT05GSUdfSFdfUkFORE9NX0dFT0RFPXkKQ09O RklHX0hXX1JBTkRPTV9WSUE9eQojIENPTkZJR19IV19SQU5ET01fVklSVElPIGlzIG5vdCBz ZXQKQ09ORklHX0hXX1JBTkRPTV9YSVBIRVJBPXkKQ09ORklHX0FQUExJQ09NPXkKQ09ORklH X1NPTllQST15CkNPTkZJR19NV0FWRT15CiMgQ09ORklHX1NDeDIwMF9HUElPIGlzIG5vdCBz ZXQKQ09ORklHX1BDODczNnhfR1BJTz15CkNPTkZJR19OU0NfR1BJTz15CiMgQ09ORklHX0RF Vk1FTSBpcyBub3Qgc2V0CkNPTkZJR19OVlJBTT15CkNPTkZJR19ERVZQT1JUPXkKQ09ORklH X0hQRVQ9eQpDT05GSUdfSFBFVF9NTUFQPXkKQ09ORklHX0hQRVRfTU1BUF9ERUZBVUxUPXkK Q09ORklHX0hBTkdDSEVDS19USU1FUj15CkNPTkZJR19UQ0dfVFBNPXkKQ09ORklHX1RDR19U UE0yX0hNQUM9eQojIENPTkZJR19IV19SQU5ET01fVFBNIGlzIG5vdCBzZXQKQ09ORklHX1RD R19USVNfQ09SRT15CkNPTkZJR19UQ0dfVElTPXkKQ09ORklHX1RDR19USVNfSTJDPXkKQ09O RklHX1RDR19USVNfSTJDX0NSNTA9eQpDT05GSUdfVENHX1RJU19JMkNfQVRNRUw9eQpDT05G SUdfVENHX1RJU19JMkNfSU5GSU5FT049eQpDT05GSUdfVENHX1RJU19JMkNfTlVWT1RPTj15 CkNPTkZJR19UQ0dfTlNDPXkKQ09ORklHX1RDR19BVE1FTD15CiMgQ09ORklHX1RDR19JTkZJ TkVPTiBpcyBub3Qgc2V0CkNPTkZJR19UQ0dfQ1JCPXkKQ09ORklHX1RDR19WVFBNX1BST1hZ PXkKIyBDT05GSUdfVENHX1RJU19TVDMzWlAyNF9JMkMgaXMgbm90IHNldApDT05GSUdfVEVM Q0xPQ0s9eQojIENPTkZJR19YSUxMWUJVUyBpcyBub3Qgc2V0CiMgZW5kIG9mIENoYXJhY3Rl ciBkZXZpY2VzCgojCiMgSTJDIHN1cHBvcnQKIwpDT05GSUdfSTJDPXkKQ09ORklHX0FDUElf STJDX09QUkVHSU9OPXkKQ09ORklHX0kyQ19CT0FSRElORk89eQpDT05GSUdfSTJDX0NPTVBB VD15CkNPTkZJR19JMkNfQ0hBUkRFVj15CkNPTkZJR19JMkNfTVVYPXkKCiMKIyBNdWx0aXBs ZXhlciBJMkMgQ2hpcCBzdXBwb3J0CiMKQ09ORklHX0kyQ19NVVhfR1BJTz15CkNPTkZJR19J MkNfTVVYX0xUQzQzMDY9eQojIENPTkZJR19JMkNfTVVYX1BDQTk1NDEgaXMgbm90IHNldAoj IENPTkZJR19JMkNfTVVYX1BDQTk1NHggaXMgbm90IHNldApDT05GSUdfSTJDX01VWF9SRUc9 eQojIENPTkZJR19JMkNfTVVYX01MWENQTEQgaXMgbm90IHNldAojIGVuZCBvZiBNdWx0aXBs ZXhlciBJMkMgQ2hpcCBzdXBwb3J0CgojIENPTkZJR19JMkNfSEVMUEVSX0FVVE8gaXMgbm90 IHNldApDT05GSUdfSTJDX1NNQlVTPXkKCiMKIyBJMkMgQWxnb3JpdGhtcwojCkNPTkZJR19J MkNfQUxHT0JJVD15CkNPTkZJR19JMkNfQUxHT1BDRj15CkNPTkZJR19JMkNfQUxHT1BDQT15 CiMgZW5kIG9mIEkyQyBBbGdvcml0aG1zCgojCiMgSTJDIEhhcmR3YXJlIEJ1cyBzdXBwb3J0 CiMKCiMKIyBQQyBTTUJ1cyBob3N0IGNvbnRyb2xsZXIgZHJpdmVycwojCkNPTkZJR19JMkNf Q0NHWF9VQ1NJPXkKQ09ORklHX0kyQ19BTEkxNTM1PXkKQ09ORklHX0kyQ19BTEkxNTYzPXkK Q09ORklHX0kyQ19BTEkxNVgzPXkKQ09ORklHX0kyQ19BTUQ3NTY9eQpDT05GSUdfSTJDX0FN RDc1Nl9TNDg4Mj15CkNPTkZJR19JMkNfQU1EODExMT15CkNPTkZJR19JMkNfQU1EX01QMj15 CiMgQ09ORklHX0kyQ19JODAxIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19JU0NIPXkKQ09ORklH X0kyQ19JU01UPXkKIyBDT05GSUdfSTJDX1BJSVg0IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19O Rk9SQ0UyPXkKQ09ORklHX0kyQ19ORk9SQ0UyX1M0OTg1PXkKQ09ORklHX0kyQ19OVklESUFf R1BVPXkKQ09ORklHX0kyQ19TSVM1NTk1PXkKQ09ORklHX0kyQ19TSVM2MzA9eQojIENPTkZJ R19JMkNfU0lTOTZYIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19WSUE9eQpDT05GSUdfSTJDX1ZJ QVBSTz15CkNPTkZJR19JMkNfWkhBT1hJTj15CgojCiMgQUNQSSBkcml2ZXJzCiMKQ09ORklH X0kyQ19TQ01JPXkKCiMKIyBJMkMgc3lzdGVtIGJ1cyBkcml2ZXJzIChtb3N0bHkgZW1iZWRk ZWQgLyBzeXN0ZW0tb24tY2hpcCkKIwpDT05GSUdfSTJDX0NCVVNfR1BJTz15CkNPTkZJR19J MkNfREVTSUdOV0FSRV9DT1JFPXkKIyBDT05GSUdfSTJDX0RFU0lHTldBUkVfU0xBVkUgaXMg bm90IHNldAojIENPTkZJR19JMkNfREVTSUdOV0FSRV9QTEFURk9STSBpcyBub3Qgc2V0CkNP TkZJR19JMkNfREVTSUdOV0FSRV9QQ0k9eQpDT05GSUdfSTJDX0VHMjBUPXkKQ09ORklHX0ky Q19FTUVWMj15CiMgQ09ORklHX0kyQ19HUElPIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19LRU1Q TEQ9eQpDT05GSUdfSTJDX09DT1JFUz15CkNPTkZJR19JMkNfUENBX1BMQVRGT1JNPXkKQ09O RklHX0kyQ19TSU1URUM9eQpDT05GSUdfSTJDX1hJTElOWD15CgojCiMgRXh0ZXJuYWwgSTJD L1NNQnVzIGFkYXB0ZXIgZHJpdmVycwojCkNPTkZJR19JMkNfUENJMVhYWFg9eQojIENPTkZJ R19JMkNfVEFPU19FVk0gaXMgbm90IHNldAoKIwojIE90aGVyIEkyQy9TTUJ1cyBidXMgZHJp dmVycwojCkNPTkZJR19TQ3gyMDBfQUNCPXkKQ09ORklHX0kyQ19WSVJUSU89eQojIGVuZCBv ZiBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKCkNPTkZJR19JMkNfU0xBVkU9eQojIENPTkZJ R19JMkNfU0xBVkVfRUVQUk9NIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19TTEFWRV9URVNUVU5J VD15CkNPTkZJR19JMkNfREVCVUdfQ09SRT15CkNPTkZJR19JMkNfREVCVUdfQUxHTz15CkNP TkZJR19JMkNfREVCVUdfQlVTPXkKIyBlbmQgb2YgSTJDIHN1cHBvcnQKCiMgQ09ORklHX0kz QyBpcyBub3Qgc2V0CiMgQ09ORklHX1NQSSBpcyBub3Qgc2V0CkNPTkZJR19TUE1JPXkKQ09O RklHX1NQTUlfSElTSTM2NzA9eQpDT05GSUdfSFNJPXkKQ09ORklHX0hTSV9CT0FSRElORk89 eQoKIwojIEhTSSBjb250cm9sbGVycwojCgojCiMgSFNJIGNsaWVudHMKIwpDT05GSUdfSFNJ X0NIQVI9eQojIENPTkZJR19QUFMgaXMgbm90IHNldAoKIwojIFBUUCBjbG9jayBzdXBwb3J0 CiMKQ09ORklHX1BUUF8xNTg4X0NMT0NLX09QVElPTkFMPXkKCiMKIyBFbmFibGUgUEhZTElC IGFuZCBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkcgdG8gc2VlIHRoZSBhZGRpdGlvbmFsIGNs b2Nrcy4KIwojIGVuZCBvZiBQVFAgY2xvY2sgc3VwcG9ydAoKQ09ORklHX1BJTkNUUkw9eQpD T05GSUdfUElOTVVYPXkKQ09ORklHX1BJTkNPTkY9eQpDT05GSUdfR0VORVJJQ19QSU5DT05G PXkKQ09ORklHX1BJTkNUUkxfQU1EPXkKQ09ORklHX1BJTkNUUkxfQ1k4Qzk1WDA9eQpDT05G SUdfUElOQ1RSTF9EQTkwNjI9eQpDT05GSUdfUElOQ1RSTF9NQ1AyM1MwOF9JMkM9eQpDT05G SUdfUElOQ1RSTF9NQ1AyM1MwOD15CkNPTkZJR19QSU5DVFJMX1NYMTUwWD15CkNPTkZJR19Q SU5DVFJMX0NTNDJMNDM9eQoKIwojIEludGVsIHBpbmN0cmwgZHJpdmVycwojCkNPTkZJR19Q SU5DVFJMX0JBWVRSQUlMPXkKQ09ORklHX1BJTkNUUkxfQ0hFUlJZVklFVz15CiMgQ09ORklH X1BJTkNUUkxfTFlOWFBPSU5UIGlzIG5vdCBzZXQKQ09ORklHX1BJTkNUUkxfSU5URUw9eQpD T05GSUdfUElOQ1RSTF9JTlRFTF9QTEFURk9STT15CiMgQ09ORklHX1BJTkNUUkxfQUxERVJM QUtFIGlzIG5vdCBzZXQKQ09ORklHX1BJTkNUUkxfQlJPWFRPTj15CkNPTkZJR19QSU5DVFJM X0NBTk5PTkxBS0U9eQpDT05GSUdfUElOQ1RSTF9DRURBUkZPUks9eQojIENPTkZJR19QSU5D VFJMX0RFTlZFUlRPTiBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfRUxLSEFSVExBS0Ug aXMgbm90IHNldApDT05GSUdfUElOQ1RSTF9FTU1JVFNCVVJHPXkKQ09ORklHX1BJTkNUUkxf R0VNSU5JTEFLRT15CiMgQ09ORklHX1BJTkNUUkxfSUNFTEFLRSBpcyBub3Qgc2V0CiMgQ09O RklHX1BJTkNUUkxfSkFTUEVSTEFLRSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX0xBS0VG SUVMRD15CkNPTkZJR19QSU5DVFJMX0xFV0lTQlVSRz15CkNPTkZJR19QSU5DVFJMX01FVEVP UkxBS0U9eQpDT05GSUdfUElOQ1RSTF9NRVRFT1JQT0lOVD15CkNPTkZJR19QSU5DVFJMX1NV TlJJU0VQT0lOVD15CkNPTkZJR19QSU5DVFJMX1RJR0VSTEFLRT15CiMgZW5kIG9mIEludGVs IHBpbmN0cmwgZHJpdmVycwoKIwojIFJlbmVzYXMgcGluY3RybCBkcml2ZXJzCiMKIyBlbmQg b2YgUmVuZXNhcyBwaW5jdHJsIGRyaXZlcnMKCkNPTkZJR19HUElPTElCPXkKQ09ORklHX0dQ SU9MSUJfRkFTVFBBVEhfTElNSVQ9NTEyCkNPTkZJR19HUElPX0FDUEk9eQpDT05GSUdfR1BJ T0xJQl9JUlFDSElQPXkKQ09ORklHX0dQSU9fQ0RFVj15CkNPTkZJR19HUElPX0NERVZfVjE9 eQpDT05GSUdfR1BJT19HRU5FUklDPXkKQ09ORklHX0dQSU9fUkVHTUFQPXkKQ09ORklHX0dQ SU9fTUFYNzMwWD15CgojCiMgTWVtb3J5IG1hcHBlZCBHUElPIGRyaXZlcnMKIwpDT05GSUdf R1BJT19BTURQVD15CiMgQ09ORklHX0dQSU9fRFdBUEIgaXMgbm90IHNldApDT05GSUdfR1BJ T19HRU5FUklDX1BMQVRGT1JNPXkKIyBDT05GSUdfR1BJT19HUkFOSVRFUkFQSURTIGlzIG5v dCBzZXQKQ09ORklHX0dQSU9fSUNIPXkKQ09ORklHX0dQSU9fTUI4NlM3WD15CiMgQ09ORklH X0dQSU9fTUVOWjEyNyBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1NJT1g9eQpDT05GSUdfR1BJ T19BTURfRkNIPXkKIyBlbmQgb2YgTWVtb3J5IG1hcHBlZCBHUElPIGRyaXZlcnMKCiMKIyBQ b3J0LW1hcHBlZCBJL08gR1BJTyBkcml2ZXJzCiMKIyBDT05GSUdfR1BJT19WWDg1NSBpcyBu b3Qgc2V0CkNPTkZJR19HUElPX0Y3MTg4WD15CiMgQ09ORklHX0dQSU9fSVQ4NyBpcyBub3Qg c2V0CkNPTkZJR19HUElPX1NDSD15CiMgQ09ORklHX0dQSU9fU0NIMzExWCBpcyBub3Qgc2V0 CiMgQ09ORklHX0dQSU9fV0lOQk9ORCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fV1MxNkM0 OCBpcyBub3Qgc2V0CiMgZW5kIG9mIFBvcnQtbWFwcGVkIEkvTyBHUElPIGRyaXZlcnMKCiMK IyBJMkMgR1BJTyBleHBhbmRlcnMKIwpDT05GSUdfR1BJT19GWEw2NDA4PXkKQ09ORklHX0dQ SU9fRFM0NTIwPXkKQ09ORklHX0dQSU9fTUFYNzMwMD15CiMgQ09ORklHX0dQSU9fTUFYNzMy WCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUENBOTUzWCBpcyBub3Qgc2V0CkNPTkZJR19H UElPX1BDQTk1NzA9eQojIENPTkZJR19HUElPX1BDRjg1N1ggaXMgbm90IHNldApDT05GSUdf R1BJT19UUElDMjgxMD15CiMgZW5kIG9mIEkyQyBHUElPIGV4cGFuZGVycwoKIwojIE1GRCBH UElPIGV4cGFuZGVycwojCkNPTkZJR19HUElPX0FSSVpPTkE9eQpDT05GSUdfR1BJT19DUzU1 MzU9eQpDT05GSUdfR1BJT19EQTkwNTU9eQojIENPTkZJR19HUElPX0VMS0hBUlRMQUtFIGlz IG5vdCBzZXQKQ09ORklHX0dQSU9fSkFOWl9UVEw9eQpDT05GSUdfR1BJT19LRU1QTEQ9eQpD T05GSUdfR1BJT19MUDM5NDM9eQpDT05GSUdfR1BJT19MUDg3M1g9eQojIENPTkZJR19HUElP X1BBTE1BUyBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUkM1VDU4MyBpcyBub3Qgc2V0CkNP TkZJR19HUElPX1RJTUJFUkRBTEU9eQojIENPTkZJR19HUElPX1RQUzY1MDg2IGlzIG5vdCBz ZXQKIyBDT05GSUdfR1BJT19UUFM2NTkxMCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVFBT Njg0NzAgaXMgbm90IHNldAojIENPTkZJR19HUElPX1RRTVg4NiBpcyBub3Qgc2V0CkNPTkZJ R19HUElPX1RXTDQwMzA9eQpDT05GSUdfR1BJT19UV0w2MDQwPXkKQ09ORklHX0dQSU9fV0hJ U0tFWV9DT1ZFPXkKIyBDT05GSUdfR1BJT19XTTgzNTAgaXMgbm90IHNldAojIGVuZCBvZiBN RkQgR1BJTyBleHBhbmRlcnMKCiMKIyBQQ0kgR1BJTyBleHBhbmRlcnMKIwojIENPTkZJR19H UElPX0FNRDgxMTEgaXMgbm90IHNldAojIENPTkZJR19HUElPX0JUOFhYIGlzIG5vdCBzZXQK IyBDT05GSUdfR1BJT19NTF9JT0ggaXMgbm90IHNldApDT05GSUdfR1BJT19QQ0g9eQojIENP TkZJR19HUElPX1BDSV9JRElPXzE2IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19QQ0lFX0lE SU9fMjQgaXMgbm90IHNldApDT05GSUdfR1BJT19SREMzMjFYPXkKIyBlbmQgb2YgUENJIEdQ SU8gZXhwYW5kZXJzCgojCiMgVmlydHVhbCBHUElPIGRyaXZlcnMKIwpDT05GSUdfR1BJT19B R0dSRUdBVE9SPXkKQ09ORklHX0dQSU9fTEFUQ0g9eQojIENPTkZJR19HUElPX01PQ0tVUCBp cyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVklSVElPIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9f U0lNPXkKIyBlbmQgb2YgVmlydHVhbCBHUElPIGRyaXZlcnMKCiMKIyBHUElPIERlYnVnZ2lu ZyB1dGlsaXRpZXMKIwojIGVuZCBvZiBHUElPIERlYnVnZ2luZyB1dGlsaXRpZXMKCkNPTkZJ R19XMT15CgojCiMgMS13aXJlIEJ1cyBNYXN0ZXJzCiMKIyBDT05GSUdfVzFfTUFTVEVSX0FN RF9BWEkgaXMgbm90IHNldAojIENPTkZJR19XMV9NQVNURVJfTUFUUk9YIGlzIG5vdCBzZXQK Q09ORklHX1cxX01BU1RFUl9EUzI0ODI9eQpDT05GSUdfVzFfTUFTVEVSX0dQSU89eQpDT05G SUdfVzFfTUFTVEVSX1NHST15CiMgZW5kIG9mIDEtd2lyZSBCdXMgTWFzdGVycwoKIwojIDEt d2lyZSBTbGF2ZXMKIwpDT05GSUdfVzFfU0xBVkVfVEhFUk09eQpDT05GSUdfVzFfU0xBVkVf U01FTT15CkNPTkZJR19XMV9TTEFWRV9EUzI0MDU9eQojIENPTkZJR19XMV9TTEFWRV9EUzI0 MDggaXMgbm90IHNldApDT05GSUdfVzFfU0xBVkVfRFMyNDEzPXkKQ09ORklHX1cxX1NMQVZF X0RTMjQwNj15CiMgQ09ORklHX1cxX1NMQVZFX0RTMjQyMyBpcyBub3Qgc2V0CiMgQ09ORklH X1cxX1NMQVZFX0RTMjgwNSBpcyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI0MzA9eQpD T05GSUdfVzFfU0xBVkVfRFMyNDMxPXkKQ09ORklHX1cxX1NMQVZFX0RTMjQzMz15CiMgQ09O RklHX1cxX1NMQVZFX0RTMjQzM19DUkMgaXMgbm90IHNldAojIENPTkZJR19XMV9TTEFWRV9E UzI0MzggaXMgbm90IHNldApDT05GSUdfVzFfU0xBVkVfRFMyNTBYPXkKQ09ORklHX1cxX1NM QVZFX0RTMjc4MD15CkNPTkZJR19XMV9TTEFWRV9EUzI3ODE9eQpDT05GSUdfVzFfU0xBVkVf RFMyOEUwND15CiMgQ09ORklHX1cxX1NMQVZFX0RTMjhFMTcgaXMgbm90IHNldAojIGVuZCBv ZiAxLXdpcmUgU2xhdmVzCgpDT05GSUdfUE9XRVJfUkVTRVQ9eQpDT05GSUdfUE9XRVJfUkVT RVRfQVRDMjYwWD15CiMgQ09ORklHX1BPV0VSX1JFU0VUX01UNjMyMyBpcyBub3Qgc2V0CiMg Q09ORklHX1BPV0VSX1JFU0VUX1JFU1RBUlQgaXMgbm90IHNldAojIENPTkZJR19QT1dFUl9S RVNFVF9UUFM2NTA4NiBpcyBub3Qgc2V0CkNPTkZJR19QT1dFUl9TRVFVRU5DSU5HPXkKQ09O RklHX1BPV0VSX1NFUVVFTkNJTkdfUUNPTV9XQ049eQpDT05GSUdfUE9XRVJfU1VQUExZPXkK IyBDT05GSUdfUE9XRVJfU1VQUExZX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1BPV0VSX1NV UFBMWV9IV01PTj15CiMgQ09ORklHX0dFTkVSSUNfQURDX0JBVFRFUlkgaXMgbm90IHNldApD T05GSUdfSVA1WFhYX1BPV0VSPXkKQ09ORklHX01BWDg5MjVfUE9XRVI9eQojIENPTkZJR19X TTgzNTBfUE9XRVIgaXMgbm90IHNldApDT05GSUdfVEVTVF9QT1dFUj15CkNPTkZJR19CQVRU RVJZXzg4UE04NjBYPXkKQ09ORklHX0NIQVJHRVJfQURQNTA2MT15CkNPTkZJR19CQVRURVJZ X0NXMjAxNT15CkNPTkZJR19CQVRURVJZX0RTMjc2MD15CiMgQ09ORklHX0JBVFRFUllfRFMy NzgwIGlzIG5vdCBzZXQKQ09ORklHX0JBVFRFUllfRFMyNzgxPXkKQ09ORklHX0JBVFRFUllf RFMyNzgyPXkKQ09ORklHX0JBVFRFUllfU0FNU1VOR19TREk9eQojIENPTkZJR19CQVRURVJZ X1dNOTdYWCBpcyBub3Qgc2V0CkNPTkZJR19CQVRURVJZX1NCUz15CkNPTkZJR19DSEFSR0VS X1NCUz15CiMgQ09ORklHX01BTkFHRVJfU0JTIGlzIG5vdCBzZXQKQ09ORklHX0JBVFRFUllf QlEyN1hYWD15CiMgQ09ORklHX0JBVFRFUllfQlEyN1hYWF9JMkMgaXMgbm90IHNldApDT05G SUdfQkFUVEVSWV9CUTI3WFhYX0hEUT15CkNPTkZJR19CQVRURVJZX0RBOTE1MD15CkNPTkZJ R19DSEFSR0VSX0FYUDIwWD15CiMgQ09ORklHX0JBVFRFUllfQVhQMjBYIGlzIG5vdCBzZXQK IyBDT05GSUdfQVhQMjBYX1BPV0VSIGlzIG5vdCBzZXQKQ09ORklHX0FYUDI4OF9GVUVMX0dB VUdFPXkKQ09ORklHX0JBVFRFUllfTUFYMTcwNDA9eQojIENPTkZJR19CQVRURVJZX01BWDE3 MDQyIGlzIG5vdCBzZXQKQ09ORklHX0JBVFRFUllfTUFYMTcyMFg9eQpDT05GSUdfQkFUVEVS WV9NQVgxNzIxWD15CkNPTkZJR19CQVRURVJZX1RXTDQwMzBfTUFEQz15CkNPTkZJR19DSEFS R0VSXzg4UE04NjBYPXkKIyBDT05GSUdfQ0hBUkdFUl9QQ0Y1MDYzMyBpcyBub3Qgc2V0CkNP TkZJR19CQVRURVJZX1JYNTE9eQpDT05GSUdfQ0hBUkdFUl9NQVg4OTAzPXkKQ09ORklHX0NI QVJHRVJfVFdMNDAzMD15CkNPTkZJR19DSEFSR0VSX0xQODcyNz15CiMgQ09ORklHX0NIQVJH RVJfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX01BTkFHRVI9eQpDT05GSUdfQ0hB UkdFUl9MVDM2NTE9eQpDT05GSUdfQ0hBUkdFUl9MVEM0MTYyTD15CiMgQ09ORklHX0NIQVJH RVJfTUFYMTQ1NzcgaXMgbm90IHNldAojIENPTkZJR19DSEFSR0VSX01BWDc3NjkzIGlzIG5v dCBzZXQKQ09ORklHX0NIQVJHRVJfTUFYNzc5NzY9eQpDT05GSUdfQ0hBUkdFUl9NQVg4OTk3 PXkKQ09ORklHX0NIQVJHRVJfTVAyNjI5PXkKQ09ORklHX0NIQVJHRVJfTVQ2MzYwPXkKQ09O RklHX0NIQVJHRVJfTVQ2MzcwPXkKQ09ORklHX0NIQVJHRVJfQlEyNDE1WD15CkNPTkZJR19D SEFSR0VSX0JRMjQxOTA9eQpDT05GSUdfQ0hBUkdFUl9CUTI0MjU3PXkKIyBDT05GSUdfQ0hB UkdFUl9CUTI0NzM1IGlzIG5vdCBzZXQKQ09ORklHX0NIQVJHRVJfQlEyNTE1WD15CiMgQ09O RklHX0NIQVJHRVJfQlEyNTg5MCBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX0JRMjU5ODA9 eQpDT05GSUdfQ0hBUkdFUl9CUTI1NlhYPXkKQ09ORklHX0NIQVJHRVJfU01CMzQ3PXkKQ09O RklHX0NIQVJHRVJfVFBTNjUwOTA9eQpDT05GSUdfQkFUVEVSWV9HQVVHRV9MVEMyOTQxPXkK Q09ORklHX0JBVFRFUllfR09MREZJU0g9eQojIENPTkZJR19CQVRURVJZX1JUNTAzMyBpcyBu b3Qgc2V0CkNPTkZJR19DSEFSR0VSX1JUOTQ1NT15CiMgQ09ORklHX0NIQVJHRVJfUlQ5NDY3 IGlzIG5vdCBzZXQKQ09ORklHX0NIQVJHRVJfUlQ5NDcxPXkKIyBDT05GSUdfQ0hBUkdFUl9C RDk5OTU0IGlzIG5vdCBzZXQKQ09ORklHX0JBVFRFUllfVUczMTA1PXkKIyBDT05GSUdfRlVF TF9HQVVHRV9NTTgwMTMgaXMgbm90IHNldApDT05GSUdfSFdNT049eQpDT05GSUdfSFdNT05f VklEPXkKQ09ORklHX0hXTU9OX0RFQlVHX0NISVA9eQoKIwojIE5hdGl2ZSBkcml2ZXJzCiMK Q09ORklHX1NFTlNPUlNfQUJJVFVHVVJVPXkKQ09ORklHX1NFTlNPUlNfQUJJVFVHVVJVMz15 CkNPTkZJR19TRU5TT1JTX0FENzQxND15CkNPTkZJR19TRU5TT1JTX0FENzQxOD15CiMgQ09O RklHX1NFTlNPUlNfQURNMTAyNSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FETTEwMjY9 eQpDT05GSUdfU0VOU09SU19BRE0xMDI5PXkKQ09ORklHX1NFTlNPUlNfQURNMTAzMT15CkNP TkZJR19TRU5TT1JTX0FETTExNzc9eQpDT05GSUdfU0VOU09SU19BRE05MjQwPXkKQ09ORklH X1NFTlNPUlNfQURUN1gxMD15CkNPTkZJR19TRU5TT1JTX0FEVDc0MTA9eQpDT05GSUdfU0VO U09SU19BRFQ3NDExPXkKQ09ORklHX1NFTlNPUlNfQURUNzQ2Mj15CiMgQ09ORklHX1NFTlNP UlNfQURUNzQ3MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQURUNzQ3NSBpcyBub3Qg c2V0CkNPTkZJR19TRU5TT1JTX0FIVDEwPXkKQ09ORklHX1NFTlNPUlNfQVMzNzA9eQojIENP TkZJR19TRU5TT1JTX0FTQzc2MjEgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19BWElfRkFO X0NPTlRST0w9eQojIENPTkZJR19TRU5TT1JTX0s4VEVNUCBpcyBub3Qgc2V0CiMgQ09ORklH X1NFTlNPUlNfSzEwVEVNUCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0ZBTTE1SF9QT1dF Uj15CiMgQ09ORklHX1NFTlNPUlNfQVBQTEVTTUMgaXMgbm90IHNldApDT05GSUdfU0VOU09S U19BU0IxMDA9eQpDT05GSUdfU0VOU09SU19BVFhQMT15CiMgQ09ORklHX1NFTlNPUlNfQ0hJ UENBUDIgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19EUklWRVRFTVA9eQojIENPTkZJR19T RU5TT1JTX0RTNjIwIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRFMxNjIxPXkKIyBDT05G SUdfU0VOU09SU19ERUxMX1NNTSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfREE5MDU1 IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfSTVLX0FNQj15CkNPTkZJR19TRU5TT1JTX0Y3 MTgwNUY9eQpDT05GSUdfU0VOU09SU19GNzE4ODJGRz15CkNPTkZJR19TRU5TT1JTX0Y3NTM3 NVM9eQpDT05GSUdfU0VOU09SU19GU0NITUQ9eQpDT05GSUdfU0VOU09SU19GVFNURVVUQVRF Uz15CiMgQ09ORklHX1NFTlNPUlNfR0w1MThTTSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNP UlNfR0w1MjBTTSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0c3NjBBPXkKQ09ORklHX1NF TlNPUlNfRzc2Mj15CkNPTkZJR19TRU5TT1JTX0hJSDYxMzA9eQpDT05GSUdfU0VOU09SU19I UzMwMDE9eQpDT05GSUdfU0VOU09SU19JSU9fSFdNT049eQojIENPTkZJR19TRU5TT1JTX0k1 NTAwIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQ09SRVRFTVA9eQpDT05GSUdfU0VOU09S U19JVDg3PXkKQ09ORklHX1NFTlNPUlNfSkM0Mj15CiMgQ09ORklHX1NFTlNPUlNfUE9XUjEy MjAgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MRU5PVk9fRUM9eQpDT05GSUdfU0VOU09S U19MSU5FQUdFPXkKQ09ORklHX1NFTlNPUlNfTFRDMjk0NT15CkNPTkZJR19TRU5TT1JTX0xU QzI5NDc9eQpDT05GSUdfU0VOU09SU19MVEMyOTQ3X0kyQz15CkNPTkZJR19TRU5TT1JTX0xU QzI5OTA9eQpDT05GSUdfU0VOU09SU19MVEMyOTkxPXkKQ09ORklHX1NFTlNPUlNfTFRDMjk5 Mj15CkNPTkZJR19TRU5TT1JTX0xUQzQxNTE9eQpDT05GSUdfU0VOU09SU19MVEM0MjE1PXkK Q09ORklHX1NFTlNPUlNfTFRDNDIyMj15CkNPTkZJR19TRU5TT1JTX0xUQzQyNDU9eQpDT05G SUdfU0VOU09SU19MVEM0MjYwPXkKQ09ORklHX1NFTlNPUlNfTFRDNDI2MT15CiMgQ09ORklH X1NFTlNPUlNfTFRDNDI4MiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUFYMTI3IGlz IG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTUFYMTYwNjU9eQpDT05GSUdfU0VOU09SU19NQVgx NjE5PXkKQ09ORklHX1NFTlNPUlNfTUFYMTY2OD15CkNPTkZJR19TRU5TT1JTX01BWDE5Nz15 CkNPTkZJR19TRU5TT1JTX01BWDMxNzMwPXkKQ09ORklHX1NFTlNPUlNfTUFYMzE3NjA9eQpD T05GSUdfTUFYMzE4Mjc9eQpDT05GSUdfU0VOU09SU19NQVg2NjIwPXkKIyBDT05GSUdfU0VO U09SU19NQVg2NjIxIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTUFYNjYzOT15CiMgQ09O RklHX1NFTlNPUlNfTUFYNjY1MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUFYNjY5 NyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUFYMzE3OTAgaXMgbm90IHNldAojIENP TkZJR19TRU5TT1JTX01DMzRWUjUwMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUNQ MzAyMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1RDNjU0PXkKQ09ORklHX1NFTlNPUlNf VFBTMjM4NjE9eQojIENPTkZJR19TRU5TT1JTX01SNzUyMDMgaXMgbm90IHNldAojIENPTkZJ R19TRU5TT1JTX0xNNjMgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNzMgaXMgbm90 IHNldApDT05GSUdfU0VOU09SU19MTTc1PXkKIyBDT05GSUdfU0VOU09SU19MTTc3IGlzIG5v dCBzZXQKQ09ORklHX1NFTlNPUlNfTE03OD15CkNPTkZJR19TRU5TT1JTX0xNODA9eQpDT05G SUdfU0VOU09SU19MTTgzPXkKQ09ORklHX1NFTlNPUlNfTE04NT15CkNPTkZJR19TRU5TT1JT X0xNODc9eQpDT05GSUdfU0VOU09SU19MTTkwPXkKIyBDT05GSUdfU0VOU09SU19MTTkyIGlz IG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTkzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNP UlNfTE05NTIzND15CkNPTkZJR19TRU5TT1JTX0xNOTUyNDE9eQpDT05GSUdfU0VOU09SU19M TTk1MjQ1PXkKQ09ORklHX1NFTlNPUlNfUEM4NzM2MD15CiMgQ09ORklHX1NFTlNPUlNfUEM4 NzQyNyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX05UQ19USEVSTUlTVE9SPXkKQ09ORklH X1NFTlNPUlNfTkNUNjY4Mz15CkNPTkZJR19TRU5TT1JTX05DVDY3NzVfQ09SRT15CkNPTkZJ R19TRU5TT1JTX05DVDY3NzU9eQpDT05GSUdfU0VOU09SU19OQ1Q2Nzc1X0kyQz15CkNPTkZJ R19TRU5TT1JTX05DVDc4MDI9eQpDT05GSUdfU0VOU09SU19OQ1Q3OTA0PXkKQ09ORklHX1NF TlNPUlNfTlBDTTdYWD15CkNPTkZJR19TRU5TT1JTX09DQ19QOF9JMkM9eQpDT05GSUdfU0VO U09SU19PQ0M9eQpDT05GSUdfU0VOU09SU19PWFA9eQojIENPTkZJR19TRU5TT1JTX1BDRjg1 OTEgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19QRUNJX0NQVVRFTVA9eQpDT05GSUdfU0VO U09SU19QRUNJX0RJTU1URU1QPXkKQ09ORklHX1NFTlNPUlNfUEVDST15CiMgQ09ORklHX1BN QlVTIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfUFQ1MTYxTD15CkNPTkZJR19TRU5TT1JT X1NCVFNJPXkKQ09ORklHX1NFTlNPUlNfU0JSTUk9eQojIENPTkZJR19TRU5TT1JTX1NIVDE1 IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfU0hUMjE9eQojIENPTkZJR19TRU5TT1JTX1NI VDN4IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfU0hUNHg9eQojIENPTkZJR19TRU5TT1JT X1NIVEMxIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfU0lTNTU5NT15CiMgQ09ORklHX1NF TlNPUlNfU1k3NjM2QSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRE1FMTczNyBpcyBu b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0VNQzE0MDM9eQpDT05GSUdfU0VOU09SU19FTUMyMTAz PXkKQ09ORklHX1NFTlNPUlNfRU1DMjMwNT15CkNPTkZJR19TRU5TT1JTX0VNQzZXMjAxPXkK IyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NN U0M0N00xOTI9eQpDT05GSUdfU0VOU09SU19TTVNDNDdCMzk3PXkKQ09ORklHX1NFTlNPUlNf U0NINTZYWF9DT01NT049eQojIENPTkZJR19TRU5TT1JTX1NDSDU2MjcgaXMgbm90IHNldApD T05GSUdfU0VOU09SU19TQ0g1NjM2PXkKQ09ORklHX1NFTlNPUlNfU1RUUzc1MT15CkNPTkZJ R19TRU5TT1JTX0FEQzEyOEQ4MTg9eQojIENPTkZJR19TRU5TT1JTX0FEUzc4MjggaXMgbm90 IHNldApDT05GSUdfU0VOU09SU19BTUM2ODIxPXkKQ09ORklHX1NFTlNPUlNfSU5BMjA5PXkK Q09ORklHX1NFTlNPUlNfSU5BMlhYPXkKIyBDT05GSUdfU0VOU09SU19JTkEyMzggaXMgbm90 IHNldAojIENPTkZJR19TRU5TT1JTX0lOQTMyMjEgaXMgbm90IHNldApDT05GSUdfU0VOU09S U19TUEQ1MTE4PXkKIyBDT05GSUdfU0VOU09SU19TUEQ1MTE4X0RFVEVDVCBpcyBub3Qgc2V0 CkNPTkZJR19TRU5TT1JTX1RDNzQ9eQojIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qg c2V0CiMgQ09ORklHX1NFTlNPUlNfVE1QMTAyIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf VE1QMTAzPXkKQ09ORklHX1NFTlNPUlNfVE1QMTA4PXkKIyBDT05GSUdfU0VOU09SU19UTVA0 MDEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1RNUDQyMSBpcyBub3Qgc2V0CiMgQ09O RklHX1NFTlNPUlNfVE1QNDY0IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVE1QNTEzPXkK IyBDT05GSUdfU0VOU09SU19WSUFfQ1BVVEVNUCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JT X1ZJQTY4NkE9eQpDT05GSUdfU0VOU09SU19WVDEyMTE9eQojIENPTkZJR19TRU5TT1JTX1ZU ODIzMSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVzgzNzczRyBpcyBub3Qgc2V0CiMg Q09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1c4Mzc5 MUQ9eQojIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldApDT05GSUdfU0VOU09S U19XODM3OTM9eQojIENPTkZJR19TRU5TT1JTX1c4Mzc5NSBpcyBub3Qgc2V0CiMgQ09ORklH X1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19XODNMNzg2 TkcgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XODM2MjdIRj15CkNPTkZJR19TRU5TT1JT X1c4MzYyN0VIRj15CiMgQ09ORklHX1NFTlNPUlNfV004MzUwIGlzIG5vdCBzZXQKQ09ORklH X1NFTlNPUlNfWEdFTkU9eQoKIwojIEFDUEkgZHJpdmVycwojCkNPTkZJR19TRU5TT1JTX0FD UElfUE9XRVI9eQpDT05GSUdfU0VOU09SU19BVEswMTEwPXkKQ09ORklHX1NFTlNPUlNfQVNV U19XTUk9eQojIENPTkZJR19TRU5TT1JTX0FTVVNfRUMgaXMgbm90IHNldApDT05GSUdfU0VO U09SU19IUF9XTUk9eQpDT05GSUdfVEhFUk1BTD15CkNPTkZJR19USEVSTUFMX1NUQVRJU1RJ Q1M9eQojIENPTkZJR19USEVSTUFMX0RFQlVHRlMgaXMgbm90IHNldApDT05GSUdfVEhFUk1B TF9FTUVSR0VOQ1lfUE9XRVJPRkZfREVMQVlfTVM9MApDT05GSUdfVEhFUk1BTF9IV01PTj15 CkNPTkZJR19USEVSTUFMX0RFRkFVTFRfR09WX1NURVBfV0lTRT15CiMgQ09ORklHX1RIRVJN QUxfREVGQVVMVF9HT1ZfRkFJUl9TSEFSRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxf REVGQVVMVF9HT1ZfVVNFUl9TUEFDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVG QVVMVF9HT1ZfQkFOR19CQU5HIGlzIG5vdCBzZXQKQ09ORklHX1RIRVJNQUxfR09WX0ZBSVJf U0hBUkU9eQpDT05GSUdfVEhFUk1BTF9HT1ZfU1RFUF9XSVNFPXkKQ09ORklHX1RIRVJNQUxf R09WX0JBTkdfQkFORz15CkNPTkZJR19USEVSTUFMX0dPVl9VU0VSX1NQQUNFPXkKQ09ORklH X1RIRVJNQUxfRU1VTEFUSU9OPXkKCiMKIyBJbnRlbCB0aGVybWFsIGRyaXZlcnMKIwpDT05G SUdfSU5URUxfUE9XRVJDTEFNUD15CkNPTkZJR19YODZfVEhFUk1BTF9WRUNUT1I9eQpDT05G SUdfSU5URUxfVENDPXkKQ09ORklHX1g4Nl9QS0dfVEVNUF9USEVSTUFMPXkKIyBDT05GSUdf SU5URUxfU09DX0RUU19USEVSTUFMIGlzIG5vdCBzZXQKCiMKIyBBQ1BJIElOVDM0MFggdGhl cm1hbCBkcml2ZXJzCiMKIyBlbmQgb2YgQUNQSSBJTlQzNDBYIHRoZXJtYWwgZHJpdmVycwoK IyBDT05GSUdfSU5URUxfQlhUX1BNSUNfVEhFUk1BTCBpcyBub3Qgc2V0CkNPTkZJR19JTlRF TF9QQ0hfVEhFUk1BTD15CkNPTkZJR19JTlRFTF9UQ0NfQ09PTElORz15CiMgZW5kIG9mIElu dGVsIHRoZXJtYWwgZHJpdmVycwoKQ09ORklHX0dFTkVSSUNfQURDX1RIRVJNQUw9eQpDT05G SUdfV0FUQ0hET0c9eQpDT05GSUdfV0FUQ0hET0dfQ09SRT15CkNPTkZJR19XQVRDSERPR19O T1dBWU9VVD15CkNPTkZJR19XQVRDSERPR19IQU5ETEVfQk9PVF9FTkFCTEVEPXkKQ09ORklH X1dBVENIRE9HX09QRU5fVElNRU9VVD0wCiMgQ09ORklHX1dBVENIRE9HX1NZU0ZTIGlzIG5v dCBzZXQKQ09ORklHX1dBVENIRE9HX0hSVElNRVJfUFJFVElNRU9VVD15CgojCiMgV2F0Y2hk b2cgUHJldGltZW91dCBHb3Zlcm5vcnMKIwpDT05GSUdfV0FUQ0hET0dfUFJFVElNRU9VVF9H T1Y9eQpDT05GSUdfV0FUQ0hET0dfUFJFVElNRU9VVF9HT1ZfU0VMPXkKIyBDT05GSUdfV0FU Q0hET0dfUFJFVElNRU9VVF9HT1ZfTk9PUCBpcyBub3Qgc2V0CkNPTkZJR19XQVRDSERPR19Q UkVUSU1FT1VUX0dPVl9QQU5JQz15CkNPTkZJR19XQVRDSERPR19QUkVUSU1FT1VUX0RFRkFV TFRfR09WX1BBTklDPXkKCiMKIyBXYXRjaGRvZyBEZXZpY2UgRHJpdmVycwojCiMgQ09ORklH X1NPRlRfV0FUQ0hET0cgaXMgbm90IHNldApDT05GSUdfREE5MDU1X1dBVENIRE9HPXkKIyBD T05GSUdfREE5MDYyX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklHX0xFTk9WT19TRTEwX1dE VD15CkNPTkZJR19NRU5aMDY5X1dBVENIRE9HPXkKIyBDT05GSUdfV0RBVF9XRFQgaXMgbm90 IHNldApDT05GSUdfV004MzUwX1dBVENIRE9HPXkKQ09ORklHX1hJTElOWF9XQVRDSERPRz15 CkNPTkZJR19aSUlSQVZFX1dBVENIRE9HPXkKQ09ORklHX0NBREVOQ0VfV0FUQ0hET0c9eQoj IENPTkZJR19EV19XQVRDSERPRyBpcyBub3Qgc2V0CkNPTkZJR19UV0w0MDMwX1dBVENIRE9H PXkKQ09ORklHX01BWDYzWFhfV0FUQ0hET0c9eQojIENPTkZJR19SRVRVX1dBVENIRE9HIGlz IG5vdCBzZXQKQ09ORklHX0FDUVVJUkVfV0RUPXkKIyBDT05GSUdfQURWQU5URUNIX1dEVCBp cyBub3Qgc2V0CkNPTkZJR19BRFZBTlRFQ0hfRUNfV0RUPXkKIyBDT05GSUdfQUxJTTE1MzVf V0RUIGlzIG5vdCBzZXQKQ09ORklHX0FMSU03MTAxX1dEVD15CkNPTkZJR19FQkNfQzM4NF9X RFQ9eQpDT05GSUdfRVhBUl9XRFQ9eQpDT05GSUdfRjcxODA4RV9XRFQ9eQojIENPTkZJR19T UDUxMDBfVENPIGlzIG5vdCBzZXQKQ09ORklHX0dFT0RFX1dEVD15CiMgQ09ORklHX1NCQ19G SVRQQzJfV0FUQ0hET0cgaXMgbm90IHNldApDT05GSUdfRVVST1RFQ0hfV0RUPXkKQ09ORklH X0lCNzAwX1dEVD15CiMgQ09ORklHX0lCTUFTUiBpcyBub3Qgc2V0CiMgQ09ORklHX1dBRkVS X1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX0k2MzAwRVNCX1dEVCBpcyBub3Qgc2V0CkNPTkZJ R19JRTZYWF9XRFQ9eQojIENPTkZJR19JVENPX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX0lU ODcxMkZfV0RUIGlzIG5vdCBzZXQKQ09ORklHX0lUODdfV0RUPXkKQ09ORklHX0hQX1dBVENI RE9HPXkKIyBDT05GSUdfSFBXRFRfTk1JX0RFQ09ESU5HIGlzIG5vdCBzZXQKIyBDT05GSUdf S0VNUExEX1dEVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDMTIwMF9XRFQgaXMgbm90IHNldApD T05GSUdfU0N4MjAwX1dEVD15CkNPTkZJR19QQzg3NDEzX1dEVD15CiMgQ09ORklHX05WX1RD TyBpcyBub3Qgc2V0CiMgQ09ORklHXzYwWFhfV0RUIGlzIG5vdCBzZXQKQ09ORklHX1NCQzgz NjBfV0RUPXkKIyBDT05GSUdfU0JDNzI0MF9XRFQgaXMgbm90IHNldAojIENPTkZJR19DUFU1 X1dEVCBpcyBub3Qgc2V0CkNPTkZJR19TTVNDX1NDSDMxMVhfV0RUPXkKQ09ORklHX1NNU0Mz N0I3ODdfV0RUPXkKQ09ORklHX1RRTVg4Nl9XRFQ9eQpDT05GSUdfVklBX1dEVD15CkNPTkZJ R19XODM2MjdIRl9XRFQ9eQpDT05GSUdfVzgzODc3Rl9XRFQ9eQojIENPTkZJR19XODM5NzdG X1dEVCBpcyBub3Qgc2V0CkNPTkZJR19NQUNIWl9XRFQ9eQpDT05GSUdfU0JDX0VQWF9DM19X QVRDSERPRz15CkNPTkZJR19OSTkwM1hfV0RUPXkKQ09ORklHX05JQzcwMThfV0RUPXkKIyBD T05GSUdfU0lFTUVOU19TSU1BVElDX0lQQ19XRFQgaXMgbm90IHNldAojIENPTkZJR19NRU5f QTIxX1dEVCBpcyBub3Qgc2V0CgojCiMgUENJLWJhc2VkIFdhdGNoZG9nIENhcmRzCiMKIyBD T05GSUdfUENJUENXQVRDSERPRyBpcyBub3Qgc2V0CkNPTkZJR19XRFRQQ0k9eQpDT05GSUdf U1NCX1BPU1NJQkxFPXkKQ09ORklHX1NTQj15CkNPTkZJR19TU0JfU1BST009eQpDT05GSUdf U1NCX1BDSUhPU1RfUE9TU0lCTEU9eQpDT05GSUdfU1NCX1BDSUhPU1Q9eQpDT05GSUdfU1NC X1BDTUNJQUhPU1RfUE9TU0lCTEU9eQpDT05GSUdfU1NCX1BDTUNJQUhPU1Q9eQpDT05GSUdf U1NCX1NESU9IT1NUX1BPU1NJQkxFPXkKQ09ORklHX1NTQl9TRElPSE9TVD15CkNPTkZJR19T U0JfRFJJVkVSX1BDSUNPUkVfUE9TU0lCTEU9eQojIENPTkZJR19TU0JfRFJJVkVSX1BDSUNP UkUgaXMgbm90IHNldAojIENPTkZJR19TU0JfRFJJVkVSX0dQSU8gaXMgbm90IHNldApDT05G SUdfQkNNQV9QT1NTSUJMRT15CiMgQ09ORklHX0JDTUEgaXMgbm90IHNldAoKIwojIE11bHRp ZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKIwpDT05GSUdfTUZEX0NPUkU9eQpDT05GSUdfTUZE X0NTNTUzNT15CiMgQ09ORklHX01GRF9BUzM3MTEgaXMgbm90IHNldAojIENPTkZJR19NRkRf U01QUk8gaXMgbm90IHNldAojIENPTkZJR19QTUlDX0FEUDU1MjAgaXMgbm90IHNldAojIENP TkZJR19NRkRfQUFUMjg3MF9DT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0JDTTU5MFhY IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0JEOTU3MU1XViBpcyBub3Qgc2V0CkNPTkZJR19N RkRfQVhQMjBYPXkKQ09ORklHX01GRF9BWFAyMFhfSTJDPXkKQ09ORklHX01GRF9DUzQyTDQz PXkKIyBDT05GSUdfTUZEX0NTNDJMNDNfSTJDIGlzIG5vdCBzZXQKQ09ORklHX01GRF9DUzQy TDQzX1NEVz15CiMgQ09ORklHX01GRF9NQURFUkEgaXMgbm90IHNldAojIENPTkZJR19QTUlD X0RBOTAzWCBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9EQTkwNTJfSTJDIGlzIG5vdCBzZXQK Q09ORklHX01GRF9EQTkwNTU9eQpDT05GSUdfTUZEX0RBOTA2Mj15CiMgQ09ORklHX01GRF9E QTkwNjMgaXMgbm90IHNldApDT05GSUdfTUZEX0RBOTE1MD15CiMgQ09ORklHX01GRF9NQzEz WFhYX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19NRkRfTVAyNjI5PXkKIyBDT05GSUdfTUZEX0lO VEVMX1FVQVJLX0kyQ19HUElPIGlzIG5vdCBzZXQKQ09ORklHX0xQQ19JQ0g9eQpDT05GSUdf TFBDX1NDSD15CkNPTkZJR19JTlRFTF9TT0NfUE1JQ19CWFRXQz15CkNPTkZJR19JTlRFTF9T T0NfUE1JQ19NUkZMRD15CkNPTkZJR19NRkRfSU5URUxfTFBTUz15CiMgQ09ORklHX01GRF9J TlRFTF9MUFNTX0FDUEkgaXMgbm90IHNldApDT05GSUdfTUZEX0lOVEVMX0xQU1NfUENJPXkK Q09ORklHX01GRF9JTlRFTF9QTUNfQlhUPXkKQ09ORklHX01GRF9JUVM2Mlg9eQpDT05GSUdf TUZEX0pBTlpfQ01PRElPPXkKQ09ORklHX01GRF9LRU1QTEQ9eQpDT05GSUdfTUZEXzg4UE04 MDA9eQpDT05GSUdfTUZEXzg4UE04MDU9eQpDT05GSUdfTUZEXzg4UE04NjBYPXkKQ09ORklH X01GRF9NQVgxNDU3Nz15CiMgQ09ORklHX01GRF9NQVg3NzU0MSBpcyBub3Qgc2V0CkNPTkZJ R19NRkRfTUFYNzc2OTM9eQojIENPTkZJR19NRkRfTUFYNzc4NDMgaXMgbm90IHNldApDT05G SUdfTUZEX01BWDg5MDc9eQpDT05GSUdfTUZEX01BWDg5MjU9eQpDT05GSUdfTUZEX01BWDg5 OTc9eQojIENPTkZJR19NRkRfTUFYODk5OCBpcyBub3Qgc2V0CkNPTkZJR19NRkRfTVQ2MzYw PXkKQ09ORklHX01GRF9NVDYzNzA9eQpDT05GSUdfTUZEX01UNjM5Nz15CiMgQ09ORklHX01G RF9NRU5GMjFCTUMgaXMgbm90IHNldApDT05GSUdfTUZEX1JFVFU9eQpDT05GSUdfTUZEX1BD RjUwNjMzPXkKQ09ORklHX1BDRjUwNjMzX0FEQz15CiMgQ09ORklHX1BDRjUwNjMzX0dQSU8g aXMgbm90IHNldApDT05GSUdfTUZEX1NZNzYzNkE9eQpDT05GSUdfTUZEX1JEQzMyMVg9eQpD T05GSUdfTUZEX1JUNDgzMT15CiMgQ09ORklHX01GRF9SVDUwMzMgaXMgbm90IHNldAojIENP TkZJR19NRkRfUlQ1MTIwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9SQzVUNTgzPXkKQ09ORklH X01GRF9TSTQ3NlhfQ09SRT15CkNPTkZJR19NRkRfU0lNUExFX01GRF9JMkM9eQojIENPTkZJ R19NRkRfU001MDEgaXMgbm90IHNldApDT05GSUdfTUZEX1NLWTgxNDUyPXkKIyBDT05GSUdf TUZEX1NZU0NPTiBpcyBub3Qgc2V0CkNPTkZJR19NRkRfTFAzOTQzPXkKIyBDT05GSUdfTUZE X0xQODc4OCBpcyBub3Qgc2V0CkNPTkZJR19NRkRfVElfTE1VPXkKQ09ORklHX01GRF9QQUxN QVM9eQpDT05GSUdfVFBTNjEwNVg9eQpDT05GSUdfVFBTNjUwMTA9eQpDT05GSUdfVFBTNjUw N1g9eQpDT05GSUdfTUZEX1RQUzY1MDg2PXkKQ09ORklHX01GRF9UUFM2NTA5MD15CkNPTkZJ R19NRkRfVElfTFA4NzNYPXkKIyBDT05GSUdfTUZEX1RQUzY1ODZYIGlzIG5vdCBzZXQKQ09O RklHX01GRF9UUFM2NTkxMD15CiMgQ09ORklHX01GRF9UUFM2NTkxMl9JMkMgaXMgbm90IHNl dApDT05GSUdfTUZEX1RQUzY1OTQ9eQpDT05GSUdfTUZEX1RQUzY1OTRfSTJDPXkKQ09ORklH X1RXTDQwMzBfQ09SRT15CkNPTkZJR19NRkRfVFdMNDAzMF9BVURJTz15CkNPTkZJR19UV0w2 MDQwX0NPUkU9eQpDT05GSUdfTUZEX1dMMTI3M19DT1JFPXkKQ09ORklHX01GRF9MTTM1MzM9 eQpDT05GSUdfTUZEX1RJTUJFUkRBTEU9eQpDT05GSUdfTUZEX1RRTVg4Nj15CkNPTkZJR19N RkRfVlg4NTU9eQpDT05GSUdfTUZEX0FSSVpPTkE9eQpDT05GSUdfTUZEX0FSSVpPTkFfSTJD PXkKQ09ORklHX01GRF9DUzQ3TDI0PXkKIyBDT05GSUdfTUZEX1dNNTEwMiBpcyBub3Qgc2V0 CkNPTkZJR19NRkRfV001MTEwPXkKQ09ORklHX01GRF9XTTg5OTc9eQpDT05GSUdfTUZEX1dN ODk5OD15CiMgQ09ORklHX01GRF9XTTg0MDAgaXMgbm90IHNldAojIENPTkZJR19NRkRfV004 MzFYX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19NRkRfV004MzUwPXkKQ09ORklHX01GRF9XTTgz NTBfSTJDPXkKIyBDT05GSUdfTUZEX1dNODk5NCBpcyBub3Qgc2V0CkNPTkZJR19NRkRfV0NE OTM0WD15CkNPTkZJR19NRkRfQVRDMjYwWD15CkNPTkZJR19NRkRfQVRDMjYwWF9JMkM9eQpD T05GSUdfTUZEX0NTNDBMNTBfQ09SRT15CkNPTkZJR19NRkRfQ1M0MEw1MF9JMkM9eQojIGVu ZCBvZiBNdWx0aWZ1bmN0aW9uIGRldmljZSBkcml2ZXJzCgpDT05GSUdfUkVHVUxBVE9SPXkK IyBDT05GSUdfUkVHVUxBVE9SX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9G SVhFRF9WT0xUQUdFPXkKQ09ORklHX1JFR1VMQVRPUl9WSVJUVUFMX0NPTlNVTUVSPXkKQ09O RklHX1JFR1VMQVRPUl9VU0VSU1BBQ0VfQ09OU1VNRVI9eQpDT05GSUdfUkVHVUxBVE9SXzg4 UEc4Nlg9eQojIENPTkZJR19SRUdVTEFUT1JfODhQTTgwMCBpcyBub3Qgc2V0CiMgQ09ORklH X1JFR1VMQVRPUl84OFBNODYwNyBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfQUNUODg2 NT15CkNPTkZJR19SRUdVTEFUT1JfQUQ1Mzk4PXkKQ09ORklHX1JFR1VMQVRPUl9BUklaT05B X0xETzE9eQojIENPTkZJR19SRUdVTEFUT1JfQVJJWk9OQV9NSUNTVVBQIGlzIG5vdCBzZXQK IyBDT05GSUdfUkVHVUxBVE9SX0FUQzI2MFggaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFU T1JfQVczNzUwMyBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfQVhQMjBYPXkKQ09ORklH X1JFR1VMQVRPUl9EQTkwNTU9eQojIENPTkZJR19SRUdVTEFUT1JfREE5MDYyIGlzIG5vdCBz ZXQKIyBDT05GSUdfUkVHVUxBVE9SX0RBOTIxMCBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VM QVRPUl9EQTkyMTEgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfRkFONTM1NTUgaXMg bm90IHNldApDT05GSUdfUkVHVUxBVE9SX0dQSU89eQpDT05GSUdfUkVHVUxBVE9SX0lTTDkz MDU9eQojIENPTkZJR19SRUdVTEFUT1JfSVNMNjI3MUEgaXMgbm90IHNldApDT05GSUdfUkVH VUxBVE9SX0xNMzYzWD15CkNPTkZJR19SRUdVTEFUT1JfTFAzOTcxPXkKQ09ORklHX1JFR1VM QVRPUl9MUDM5NzI9eQojIENPTkZJR19SRUdVTEFUT1JfTFA4NzJYIGlzIG5vdCBzZXQKQ09O RklHX1JFR1VMQVRPUl9MUDg3NTU9eQpDT05GSUdfUkVHVUxBVE9SX0xUQzM1ODk9eQpDT05G SUdfUkVHVUxBVE9SX0xUQzM2NzY9eQpDT05GSUdfUkVHVUxBVE9SX01BWDE0NTc3PXkKIyBD T05GSUdfUkVHVUxBVE9SX01BWDE1ODYgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01B WDc3NTAzPXkKQ09ORklHX1JFR1VMQVRPUl9NQVg3Nzg1Nz15CkNPTkZJR19SRUdVTEFUT1Jf TUFYODY0OT15CiMgQ09ORklHX1JFR1VMQVRPUl9NQVg4NjYwIGlzIG5vdCBzZXQKQ09ORklH X1JFR1VMQVRPUl9NQVg4ODkzPXkKQ09ORklHX1JFR1VMQVRPUl9NQVg4OTA3PXkKQ09ORklH X1JFR1VMQVRPUl9NQVg4OTI1PXkKQ09ORklHX1JFR1VMQVRPUl9NQVg4OTUyPXkKQ09ORklH X1JFR1VMQVRPUl9NQVg4OTk3PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDIwMDg2IGlzIG5v dCBzZXQKQ09ORklHX1JFR1VMQVRPUl9NQVgyMDQxMT15CkNPTkZJR19SRUdVTEFUT1JfTUFY Nzc2OTM9eQojIENPTkZJR19SRUdVTEFUT1JfTUFYNzc4MjYgaXMgbm90IHNldAojIENPTkZJ R19SRUdVTEFUT1JfTVA4ODU5IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzMTE9 eQpDT05GSUdfUkVHVUxBVE9SX01UNjMxNT15CiMgQ09ORklHX1JFR1VMQVRPUl9NVDYzMjMg aXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfTVQ2MzMxIGlzIG5vdCBzZXQKQ09ORklH X1JFR1VMQVRPUl9NVDYzMzI9eQpDT05GSUdfUkVHVUxBVE9SX01UNjM1Nz15CiMgQ09ORklH X1JFR1VMQVRPUl9NVDYzNTggaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfTVQ2MzU5 IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzNjA9eQpDT05GSUdfUkVHVUxBVE9S X01UNjM3MD15CiMgQ09ORklHX1JFR1VMQVRPUl9NVDYzOTcgaXMgbm90IHNldAojIENPTkZJ R19SRUdVTEFUT1JfUEFMTUFTIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9QQ0E5NDUw PXkKQ09ORklHX1JFR1VMQVRPUl9QQ0Y1MDYzMz15CkNPTkZJR19SRUdVTEFUT1JfUFY4ODA2 MD15CkNPTkZJR19SRUdVTEFUT1JfUFY4ODA4MD15CkNPTkZJR19SRUdVTEFUT1JfUFY4ODA5 MD15CkNPTkZJR19SRUdVTEFUT1JfUUNPTV9TUE1JPXkKIyBDT05GSUdfUkVHVUxBVE9SX1FD T01fVVNCX1ZCVVMgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1JBQTIxNTMwMD15CiMg Q09ORklHX1JFR1VMQVRPUl9SQzVUNTgzIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9S VDQ4MDE9eQpDT05GSUdfUkVHVUxBVE9SX1JUNDgwMz15CkNPTkZJR19SRUdVTEFUT1JfUlQ0 ODMxPXkKQ09ORklHX1JFR1VMQVRPUl9SVDUxOTBBPXkKIyBDT05GSUdfUkVHVUxBVE9SX1JU NTczOSBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUlQ1NzU5PXkKQ09ORklHX1JFR1VM QVRPUl9SVDYxNjA9eQpDT05GSUdfUkVHVUxBVE9SX1JUNjE5MD15CiMgQ09ORklHX1JFR1VM QVRPUl9SVDYyNDUgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1JUUTIxMzQ9eQpDT05G SUdfUkVHVUxBVE9SX1JUTVYyMD15CkNPTkZJR19SRUdVTEFUT1JfUlRRNjc1Mj15CiMgQ09O RklHX1JFR1VMQVRPUl9SVFEyMjA4IGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX1NL WTgxNDUyIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9TTEc1MTAwMD15CkNPTkZJR19S RUdVTEFUT1JfU1k3NjM2QT15CkNPTkZJR19SRUdVTEFUT1JfVFBTNTE2MzI9eQpDT05GSUdf UkVHVUxBVE9SX1RQUzYxMDVYPXkKQ09ORklHX1JFR1VMQVRPUl9UUFM2MjM2MD15CkNPTkZJ R19SRUdVTEFUT1JfVFBTNjUwMjM9eQojIENPTkZJR19SRUdVTEFUT1JfVFBTNjUwN1ggaXMg bm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfVFBTNjUwODYgaXMgbm90IHNldApDT05GSUdf UkVHVUxBVE9SX1RQUzY1MDkwPXkKQ09ORklHX1JFR1VMQVRPUl9UUFM2NTEzMj15CiMgQ09O RklHX1JFR1VMQVRPUl9UUFM2NTkxMCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBT Njg0NzA9eQojIENPTkZJR19SRUdVTEFUT1JfVFdMNDAzMCBpcyBub3Qgc2V0CiMgQ09ORklH X1JFR1VMQVRPUl9XTTgzNTAgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1FDT01fTEFC SUJCPXkKQ09ORklHX1JDX0NPUkU9eQojIENPTkZJR19MSVJDIGlzIG5vdCBzZXQKQ09ORklH X1JDX01BUD15CkNPTkZJR19SQ19ERUNPREVSUz15CkNPTkZJR19JUl9JTU9OX0RFQ09ERVI9 eQpDT05GSUdfSVJfSlZDX0RFQ09ERVI9eQpDT05GSUdfSVJfTUNFX0tCRF9ERUNPREVSPXkK IyBDT05GSUdfSVJfTkVDX0RFQ09ERVIgaXMgbm90IHNldApDT05GSUdfSVJfUkM1X0RFQ09E RVI9eQpDT05GSUdfSVJfUkM2X0RFQ09ERVI9eQpDT05GSUdfSVJfUkNNTV9ERUNPREVSPXkK IyBDT05GSUdfSVJfU0FOWU9fREVDT0RFUiBpcyBub3Qgc2V0CkNPTkZJR19JUl9TSEFSUF9E RUNPREVSPXkKQ09ORklHX0lSX1NPTllfREVDT0RFUj15CiMgQ09ORklHX0lSX1hNUF9ERUNP REVSIGlzIG5vdCBzZXQKQ09ORklHX1JDX0RFVklDRVM9eQojIENPTkZJR19JUl9FTkUgaXMg bm90IHNldApDT05GSUdfSVJfRklOVEVLPXkKIyBDT05GSUdfSVJfSVRFX0NJUiBpcyBub3Qg c2V0CkNPTkZJR19JUl9OVVZPVE9OPXkKIyBDT05GSUdfSVJfU0VSSUFMIGlzIG5vdCBzZXQK Q09ORklHX0lSX1dJTkJPTkRfQ0lSPXkKQ09ORklHX1JDX0xPT1BCQUNLPXkKCiMKIyBDRUMg c3VwcG9ydAojCiMgQ09ORklHX01FRElBX0NFQ19TVVBQT1JUIGlzIG5vdCBzZXQKIyBlbmQg b2YgQ0VDIHN1cHBvcnQKCkNPTkZJR19NRURJQV9TVVBQT1JUPXkKQ09ORklHX01FRElBX1NV UFBPUlRfRklMVEVSPXkKQ09ORklHX01FRElBX1NVQkRSVl9BVVRPU0VMRUNUPXkKCiMKIyBN ZWRpYSBkZXZpY2UgdHlwZXMKIwpDT05GSUdfTUVESUFfQ0FNRVJBX1NVUFBPUlQ9eQojIENP TkZJR19NRURJQV9BTkFMT0dfVFZfU1VQUE9SVCBpcyBub3Qgc2V0CiMgQ09ORklHX01FRElB X0RJR0lUQUxfVFZfU1VQUE9SVCBpcyBub3Qgc2V0CkNPTkZJR19NRURJQV9SQURJT19TVVBQ T1JUPXkKQ09ORklHX01FRElBX1NEUl9TVVBQT1JUPXkKQ09ORklHX01FRElBX1BMQVRGT1JN X1NVUFBPUlQ9eQojIENPTkZJR19NRURJQV9URVNUX1NVUFBPUlQgaXMgbm90IHNldAojIGVu ZCBvZiBNZWRpYSBkZXZpY2UgdHlwZXMKCkNPTkZJR19WSURFT19ERVY9eQpDT05GSUdfTUVE SUFfQ09OVFJPTExFUj15CgojCiMgVmlkZW80TGludXggb3B0aW9ucwojCkNPTkZJR19WSURF T19WNEwyX0kyQz15CkNPTkZJR19WSURFT19WNEwyX1NVQkRFVl9BUEk9eQpDT05GSUdfVklE RU9fQURWX0RFQlVHPXkKQ09ORklHX1ZJREVPX0ZJWEVEX01JTk9SX1JBTkdFUz15CkNPTkZJ R19WNEwyX0ZMQVNIX0xFRF9DTEFTUz15CkNPTkZJR19WNEwyX0ZXTk9ERT15CkNPTkZJR19W NEwyX0FTWU5DPXkKQ09ORklHX1Y0TDJfQ0NJPXkKQ09ORklHX1Y0TDJfQ0NJX0kyQz15CiMg ZW5kIG9mIFZpZGVvNExpbnV4IG9wdGlvbnMKCiMKIyBNZWRpYSBjb250cm9sbGVyIG9wdGlv bnMKIwojIGVuZCBvZiBNZWRpYSBjb250cm9sbGVyIG9wdGlvbnMKCiMKIyBNZWRpYSBkcml2 ZXJzCiMKCiMKIyBEcml2ZXJzIGZpbHRlcmVkIGFzIHNlbGVjdGVkIGF0ICdGaWx0ZXIgbWVk aWEgZHJpdmVycycKIwoKIwojIE1lZGlhIGRyaXZlcnMKIwojIENPTkZJR19NRURJQV9QQ0lf U1VQUE9SVCBpcyBub3Qgc2V0CkNPTkZJR19SQURJT19BREFQVEVSUz15CkNPTkZJR19SQURJ T19NQVhJUkFESU89eQpDT05GSUdfUkFESU9fU0FBNzcwNkg9eQpDT05GSUdfUkFESU9fU0k0 NzEzPXkKQ09ORklHX1JBRElPX1NJNDc2WD15CkNPTkZJR19SQURJT19URUE1NzVYPXkKQ09O RklHX1JBRElPX1RFQTU3NjQ9eQpDT05GSUdfUkFESU9fVEVBNTc2NF9YVEFMPXkKQ09ORklH X1JBRElPX1RFRjY4NjI9eQpDT05GSUdfUkFESU9fVElNQkVSREFMRT15CkNPTkZJR19SQURJ T19XTDEyNzM9eQpDT05GSUdfUkFESU9fU0k0NzBYPXkKQ09ORklHX0kyQ19TSTQ3MFg9eQpD T05GSUdfUExBVEZPUk1fU0k0NzEzPXkKQ09ORklHX0kyQ19TSTQ3MTM9eQojIENPTkZJR19N RURJQV9QTEFURk9STV9EUklWRVJTIGlzIG5vdCBzZXQKIyBlbmQgb2YgTWVkaWEgZHJpdmVy cwoKQ09ORklHX01FRElBX0hJREVfQU5DSUxMQVJZX1NVQkRSVj15CgojCiMgTWVkaWEgYW5j aWxsYXJ5IGRyaXZlcnMKIwoKIwojIElSIEkyQyBkcml2ZXIgYXV0by1zZWxlY3RlZCBieSAn QXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycycKIwpDT05GSUdfVklERU9fSVJfSTJDPXkK Q09ORklHX1ZJREVPX0NBTUVSQV9TRU5TT1I9eQpDT05GSUdfVklERU9fQVBUSU5BX1BMTD15 CkNPTkZJR19WSURFT19DQ1NfUExMPXkKQ09ORklHX1ZJREVPX0FMVklVTV9DU0kyPXkKIyBD T05GSUdfVklERU9fQVIwNTIxIGlzIG5vdCBzZXQKIyBDT05GSUdfVklERU9fR0MwMzA4IGlz IG5vdCBzZXQKQ09ORklHX1ZJREVPX0dDMDVBMj15CkNPTkZJR19WSURFT19HQzA4QTM9eQoj IENPTkZJR19WSURFT19HQzIxNDUgaXMgbm90IHNldApDT05GSUdfVklERU9fSEk1NTY9eQoj IENPTkZJR19WSURFT19ISTg0NiBpcyBub3Qgc2V0CkNPTkZJR19WSURFT19ISTg0Nz15CkNP TkZJR19WSURFT19JTVgyMDg9eQojIENPTkZJR19WSURFT19JTVgyMTQgaXMgbm90IHNldApD T05GSUdfVklERU9fSU1YMjE5PXkKIyBDT05GSUdfVklERU9fSU1YMjU4IGlzIG5vdCBzZXQK Q09ORklHX1ZJREVPX0lNWDI3ND15CkNPTkZJR19WSURFT19JTVgyODM9eQpDT05GSUdfVklE RU9fSU1YMjkwPXkKIyBDT05GSUdfVklERU9fSU1YMjk2IGlzIG5vdCBzZXQKQ09ORklHX1ZJ REVPX0lNWDMxOT15CkNPTkZJR19WSURFT19JTVgzNTU9eQpDT05GSUdfVklERU9fTUFYOTI3 MV9MSUI9eQojIENPTkZJR19WSURFT19NVDlNMDAxIGlzIG5vdCBzZXQKQ09ORklHX1ZJREVP X01UOU0xMTE9eQpDT05GSUdfVklERU9fTVQ5TTExND15CkNPTkZJR19WSURFT19NVDlQMDMx PXkKQ09ORklHX1ZJREVPX01UOVQxMTI9eQpDT05GSUdfVklERU9fTVQ5VjAxMT15CkNPTkZJ R19WSURFT19NVDlWMDMyPXkKIyBDT05GSUdfVklERU9fTVQ5VjExMSBpcyBub3Qgc2V0CkNP TkZJR19WSURFT19PRzAxQTFCPXkKQ09ORklHX1ZJREVPX09WMDFBMTA9eQpDT05GSUdfVklE RU9fT1YwMkExMD15CkNPTkZJR19WSURFT19PVjA4RDEwPXkKIyBDT05GSUdfVklERU9fT1Yw OFg0MCBpcyBub3Qgc2V0CkNPTkZJR19WSURFT19PVjEzODU4PXkKQ09ORklHX1ZJREVPX09W MTNCMTA9eQpDT05GSUdfVklERU9fT1YyNjQwPXkKQ09ORklHX1ZJREVPX09WMjY1OT15CkNP TkZJR19WSURFT19PVjI2ODA9eQojIENPTkZJR19WSURFT19PVjI2ODUgaXMgbm90IHNldAoj IENPTkZJR19WSURFT19PVjI3NDAgaXMgbm90IHNldApDT05GSUdfVklERU9fT1Y0Njg5PXkK Q09ORklHX1ZJREVPX09WNTY0Nz15CkNPTkZJR19WSURFT19PVjU2NzA9eQpDT05GSUdfVklE RU9fT1Y1Njc1PXkKQ09ORklHX1ZJREVPX09WNTY5Mz15CiMgQ09ORklHX1ZJREVPX09WNTY5 NSBpcyBub3Qgc2V0CkNPTkZJR19WSURFT19PVjY0QTQwPXkKIyBDT05GSUdfVklERU9fT1Y2 NjUwIGlzIG5vdCBzZXQKQ09ORklHX1ZJREVPX09WNzI1MT15CkNPTkZJR19WSURFT19PVjc2 NDA9eQojIENPTkZJR19WSURFT19PVjc2NzAgaXMgbm90IHNldAojIENPTkZJR19WSURFT19P Vjc3MlggaXMgbm90IHNldAojIENPTkZJR19WSURFT19PVjc3NDAgaXMgbm90IHNldApDT05G SUdfVklERU9fT1Y4ODU2PXkKQ09ORklHX1ZJREVPX09WOTY0MD15CkNPTkZJR19WSURFT19P Vjk2NTA9eQpDT05GSUdfVklERU9fT1Y5NzM0PXkKQ09ORklHX1ZJREVPX1JEQUNNMjA9eQoj IENPTkZJR19WSURFT19SREFDTTIxIGlzIG5vdCBzZXQKQ09ORklHX1ZJREVPX1JKNTROMT15 CkNPTkZJR19WSURFT19TNUs1QkFGPXkKIyBDT05GSUdfVklERU9fUzVLNkEzIGlzIG5vdCBz ZXQKQ09ORklHX1ZJREVPX0NDUz15CkNPTkZJR19WSURFT19FVDhFSzg9eQoKIwojIENhbWVy YSBJU1BzCiMKIyBDT05GSUdfVklERU9fVEhQNzMxMiBpcyBub3Qgc2V0CiMgZW5kIG9mIENh bWVyYSBJU1BzCgojCiMgTGVucyBkcml2ZXJzCiMKQ09ORklHX1ZJREVPX0FENTgyMD15CiMg Q09ORklHX1ZJREVPX0FLNzM3NSBpcyBub3Qgc2V0CiMgQ09ORklHX1ZJREVPX0RXOTcxNCBp cyBub3Qgc2V0CkNPTkZJR19WSURFT19EVzk3MTk9eQpDT05GSUdfVklERU9fRFc5NzY4PXkK IyBDT05GSUdfVklERU9fRFc5ODA3X1ZDTSBpcyBub3Qgc2V0CiMgZW5kIG9mIExlbnMgZHJp dmVycwoKIwojIEZsYXNoIGRldmljZXMKIwojIENPTkZJR19WSURFT19BRFAxNjUzIGlzIG5v dCBzZXQKQ09ORklHX1ZJREVPX0xNMzU2MD15CkNPTkZJR19WSURFT19MTTM2NDY9eQojIGVu ZCBvZiBGbGFzaCBkZXZpY2VzCgojCiMgYXVkaW8sIHZpZGVvIGFuZCByYWRpbyBJMkMgZHJp dmVycyBhdXRvLXNlbGVjdGVkIGJ5ICdBdXRvc2VsZWN0IGFuY2lsbGFyeSBkcml2ZXJzJwoj CgojCiMgVmlkZW8gYW5kIGF1ZGlvIGRlY29kZXJzCiMKCiMKIyBWaWRlbyBzZXJpYWxpemVy cyBhbmQgZGVzZXJpYWxpemVycwojCiMgZW5kIG9mIFZpZGVvIHNlcmlhbGl6ZXJzIGFuZCBk ZXNlcmlhbGl6ZXJzCgpDT05GSUdfTUVESUFfVFVORVI9eQoKIwojIFR1bmVyIGRyaXZlcnMg YXV0by1zZWxlY3RlZCBieSAnQXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycycKIwpDT05G SUdfTUVESUFfVFVORVJfTUM0NFM4MDM9eQpDT05GSUdfTUVESUFfVFVORVJfTVQyMFhYPXkK Q09ORklHX01FRElBX1RVTkVSX1NJTVBMRT15CkNPTkZJR19NRURJQV9UVU5FUl9UREExODI3 MT15CkNPTkZJR19NRURJQV9UVU5FUl9UREE4MjdYPXkKQ09ORklHX01FRElBX1RVTkVSX1RE QTgyOTA9eQpDT05GSUdfTUVESUFfVFVORVJfVERBOTg4Nz15CkNPTkZJR19NRURJQV9UVU5F Ul9URUE1NzYxPXkKQ09ORklHX01FRElBX1RVTkVSX1RFQTU3Njc9eQpDT05GSUdfTUVESUFf VFVORVJfWEMyMDI4PXkKQ09ORklHX01FRElBX1RVTkVSX1hDNDAwMD15CkNPTkZJR19NRURJ QV9UVU5FUl9YQzUwMDA9eQojIGVuZCBvZiBNZWRpYSBhbmNpbGxhcnkgZHJpdmVycwoKIwoj IEdyYXBoaWNzIHN1cHBvcnQKIwpDT05GSUdfQVBFUlRVUkVfSEVMUEVSUz15CkNPTkZJR19W SURFTz15CiMgQ09ORklHX0FVWERJU1BMQVkgaXMgbm90IHNldAojIENPTkZJR19BR1AgaXMg bm90IHNldAojIENPTkZJR19WR0FfU1dJVENIRVJPTyBpcyBub3Qgc2V0CiMgQ09ORklHX0RS TSBpcyBub3Qgc2V0CgojCiMgRnJhbWUgYnVmZmVyIERldmljZXMKIwpDT05GSUdfRkI9eQpD T05GSUdfRkJfQ0lSUlVTPXkKQ09ORklHX0ZCX1BNMj15CkNPTkZJR19GQl9QTTJfRklGT19E SVNDT05ORUNUPXkKIyBDT05GSUdfRkJfQ1lCRVIyMDAwIGlzIG5vdCBzZXQKQ09ORklHX0ZC X0FSQz15CiMgQ09ORklHX0ZCX0FTSUxJQU5UIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfSU1T VFQgaXMgbm90IHNldApDT05GSUdfRkJfVkdBMTY9eQojIENPTkZJR19GQl9WRVNBIGlzIG5v dCBzZXQKIyBDT05GSUdfRkJfRUZJIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfTjQxMSBpcyBu b3Qgc2V0CiMgQ09ORklHX0ZCX0hHQSBpcyBub3Qgc2V0CkNPTkZJR19GQl9PUEVOQ09SRVM9 eQpDT05GSUdfRkJfUzFEMTNYWFg9eQpDT05GSUdfRkJfTlZJRElBPXkKQ09ORklHX0ZCX05W SURJQV9JMkM9eQojIENPTkZJR19GQl9OVklESUFfREVCVUcgaXMgbm90IHNldApDT05GSUdf RkJfTlZJRElBX0JBQ0tMSUdIVD15CkNPTkZJR19GQl9SSVZBPXkKQ09ORklHX0ZCX1JJVkFf STJDPXkKIyBDT05GSUdfRkJfUklWQV9ERUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX0ZCX1JJ VkFfQkFDS0xJR0hUIGlzIG5vdCBzZXQKQ09ORklHX0ZCX0k3NDA9eQojIENPTkZJR19GQl9N QVRST1ggaXMgbm90IHNldAojIENPTkZJR19GQl9SQURFT04gaXMgbm90IHNldApDT05GSUdf RkJfQVRZMTI4PXkKQ09ORklHX0ZCX0FUWTEyOF9CQUNLTElHSFQ9eQojIENPTkZJR19GQl9B VFkgaXMgbm90IHNldAojIENPTkZJR19GQl9TMyBpcyBub3Qgc2V0CkNPTkZJR19GQl9TQVZB R0U9eQojIENPTkZJR19GQl9TQVZBR0VfSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfU0FW QUdFX0FDQ0VMIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfU0lTIGlzIG5vdCBzZXQKIyBDT05G SUdfRkJfVklBIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfTkVPTUFHSUMgaXMgbm90IHNldAoj IENPTkZJR19GQl9LWVJPIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfM0RGWCBpcyBub3Qgc2V0 CkNPTkZJR19GQl9WT09ET08xPXkKIyBDT05GSUdfRkJfVlQ4NjIzIGlzIG5vdCBzZXQKIyBD T05GSUdfRkJfVFJJREVOVCBpcyBub3Qgc2V0CiMgQ09ORklHX0ZCX0FSSyBpcyBub3Qgc2V0 CkNPTkZJR19GQl9QTTM9eQojIENPTkZJR19GQl9DQVJNSU5FIGlzIG5vdCBzZXQKQ09ORklH X0ZCX0dFT0RFPXkKIyBDT05GSUdfRkJfR0VPREVfTFggaXMgbm90IHNldApDT05GSUdfRkJf R0VPREVfR1g9eQpDT05GSUdfRkJfR0VPREVfR1gxPXkKQ09ORklHX0ZCX0lCTV9HWFQ0NTAw PXkKQ09ORklHX0ZCX0dPTERGSVNIPXkKQ09ORklHX0ZCX1ZJUlRVQUw9eQpDT05GSUdfRkJf TUVUUk9OT01FPXkKIyBDT05GSUdfRkJfTUI4NjJYWCBpcyBub3Qgc2V0CiMgQ09ORklHX0ZC X1NJTVBMRSBpcyBub3Qgc2V0CkNPTkZJR19GQl9TU0QxMzA3PXkKQ09ORklHX0ZCX1NNNzEy PXkKQ09ORklHX0ZCX0NPUkU9eQpDT05GSUdfRkJfTk9USUZZPXkKQ09ORklHX0ZJUk1XQVJF X0VESUQ9eQpDT05GSUdfRkJfREVWSUNFPXkKQ09ORklHX0ZCX0REQz15CkNPTkZJR19GQl9D RkJfRklMTFJFQ1Q9eQpDT05GSUdfRkJfQ0ZCX0NPUFlBUkVBPXkKQ09ORklHX0ZCX0NGQl9J TUFHRUJMSVQ9eQpDT05GSUdfRkJfU1lTX0ZJTExSRUNUPXkKQ09ORklHX0ZCX1NZU19DT1BZ QVJFQT15CkNPTkZJR19GQl9TWVNfSU1BR0VCTElUPXkKIyBDT05GSUdfRkJfRk9SRUlHTl9F TkRJQU4gaXMgbm90IHNldApDT05GSUdfRkJfU1lTTUVNX0ZPUFM9eQpDT05GSUdfRkJfREVG RVJSRURfSU89eQpDT05GSUdfRkJfSU9NRU1fRk9QUz15CkNPTkZJR19GQl9JT01FTV9IRUxQ RVJTPXkKQ09ORklHX0ZCX1NZU01FTV9IRUxQRVJTPXkKQ09ORklHX0ZCX1NZU01FTV9IRUxQ RVJTX0RFRkVSUkVEPXkKQ09ORklHX0ZCX0JBQ0tMSUdIVD15CkNPTkZJR19GQl9NT0RFX0hF TFBFUlM9eQojIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAojIGVuZCBvZiBG cmFtZSBidWZmZXIgRGV2aWNlcwoKIwojIEJhY2tsaWdodCAmIExDRCBkZXZpY2Ugc3VwcG9y dAojCkNPTkZJR19MQ0RfQ0xBU1NfREVWSUNFPXkKQ09ORklHX0xDRF9QTEFURk9STT15CkNP TkZJR19CQUNLTElHSFRfQ0xBU1NfREVWSUNFPXkKQ09ORklHX0JBQ0tMSUdIVF9LVEQyNTM9 eQojIENPTkZJR19CQUNLTElHSFRfS1REMjgwMSBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElH SFRfS1RaODg2Nj15CiMgQ09ORklHX0JBQ0tMSUdIVF9MTTM1MzMgaXMgbm90IHNldApDT05G SUdfQkFDS0xJR0hUX01BWDg5MjU9eQpDT05GSUdfQkFDS0xJR0hUX01UNjM3MD15CiMgQ09O RklHX0JBQ0tMSUdIVF9BUFBMRSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tMSUdIVF9RQ09N X1dMRUQgaXMgbm90IHNldApDT05GSUdfQkFDS0xJR0hUX1JUNDgzMT15CiMgQ09ORklHX0JB Q0tMSUdIVF9TQUhBUkEgaXMgbm90IHNldAojIENPTkZJR19CQUNLTElHSFRfQURQODg2MCBp cyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfQURQODg3MD15CiMgQ09ORklHX0JBQ0tMSUdI VF84OFBNODYwWCBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tMSUdIVF9QQ0Y1MDYzMyBpcyBu b3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfTE0zNTA5PXkKIyBDT05GSUdfQkFDS0xJR0hUX0xN MzYzOSBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfUEFORE9SQT15CiMgQ09ORklHX0JB Q0tMSUdIVF9TS1k4MTQ1MiBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tMSUdIVF9HUElPIGlz IG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9MVjUyMDdMUD15CkNPTkZJR19CQUNLTElHSFRf QkQ2MTA3PXkKQ09ORklHX0JBQ0tMSUdIVF9BUkNYQ05OPXkKIyBlbmQgb2YgQmFja2xpZ2h0 ICYgTENEIGRldmljZSBzdXBwb3J0CgpDT05GSUdfVkdBU1RBVEU9eQpDT05GSUdfSERNST15 CgojCiMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiMKQ09ORklHX1ZHQV9DT05T T0xFPXkKQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQpDT05GSUdfRFVNTVlfQ09OU09MRV9DT0xV TU5TPTgwCkNPTkZJR19EVU1NWV9DT05TT0xFX1JPV1M9MjUKIyBDT05GSUdfRlJBTUVCVUZG RVJfQ09OU09MRSBpcyBub3Qgc2V0CiMgZW5kIG9mIENvbnNvbGUgZGlzcGxheSBkcml2ZXIg c3VwcG9ydAoKQ09ORklHX0xPR089eQojIENPTkZJR19MT0dPX0xJTlVYX01PTk8gaXMgbm90 IHNldApDT05GSUdfTE9HT19MSU5VWF9WR0ExNj15CkNPTkZJR19MT0dPX0xJTlVYX0NMVVQy MjQ9eQojIGVuZCBvZiBHcmFwaGljcyBzdXBwb3J0CgpDT05GSUdfU09VTkQ9eQpDT05GSUdf U09VTkRfT1NTX0NPUkU9eQojIENPTkZJR19TT1VORF9PU1NfQ09SRV9QUkVDTEFJTSBpcyBu b3Qgc2V0CkNPTkZJR19TTkQ9eQpDT05GSUdfU05EX1RJTUVSPXkKQ09ORklHX1NORF9QQ009 eQpDT05GSUdfU05EX1BDTV9FTEQ9eQpDT05GSUdfU05EX0RNQUVOR0lORV9QQ009eQpDT05G SUdfU05EX0hXREVQPXkKQ09ORklHX1NORF9TRVFfREVWSUNFPXkKQ09ORklHX1NORF9SQVdN SURJPXkKIyBDT05GSUdfU05EX0NPUkVfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19TTkRfQ09N UFJFU1NfT0ZGTE9BRD15CkNPTkZJR19TTkRfSkFDSz15CkNPTkZJR19TTkRfSkFDS19JTlBV VF9ERVY9eQpDT05GSUdfU05EX09TU0VNVUw9eQpDT05GSUdfU05EX01JWEVSX09TUz15CkNP TkZJR19TTkRfUENNX09TUz15CkNPTkZJR19TTkRfUENNX09TU19QTFVHSU5TPXkKQ09ORklH X1NORF9QQ01fVElNRVI9eQpDT05GSUdfU05EX0RZTkFNSUNfTUlOT1JTPXkKQ09ORklHX1NO RF9NQVhfQ0FSRFM9MzIKQ09ORklHX1NORF9TVVBQT1JUX09MRF9BUEk9eQpDT05GSUdfU05E X1BST0NfRlM9eQojIENPTkZJR19TTkRfVkVSQk9TRV9QUk9DRlMgaXMgbm90IHNldAojIENP TkZJR19TTkRfVkVSQk9TRV9QUklOVEsgaXMgbm90IHNldApDT05GSUdfU05EX0NUTF9GQVNU X0xPT0tVUD15CiMgQ09ORklHX1NORF9ERUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9D VExfSU5QVVRfVkFMSURBVElPTiBpcyBub3Qgc2V0CkNPTkZJR19TTkRfVk1BU1RFUj15CkNP TkZJR19TTkRfRE1BX1NHQlVGPXkKQ09ORklHX1NORF9DVExfTEVEPXkKQ09ORklHX1NORF9T RVFVRU5DRVI9eQojIENPTkZJR19TTkRfU0VRX0RVTU1ZIGlzIG5vdCBzZXQKQ09ORklHX1NO RF9TRVFVRU5DRVJfT1NTPXkKQ09ORklHX1NORF9TRVFfTUlESV9FVkVOVD15CkNPTkZJR19T TkRfU0VRX01JREk9eQpDT05GSUdfU05EX1NFUV9VTVA9eQpDT05GSUdfU05EX1ZYX0xJQj15 CkNPTkZJR19TTkRfQUM5N19DT0RFQz15CiMgQ09ORklHX1NORF9EUklWRVJTIGlzIG5vdCBz ZXQKIyBDT05GSUdfU05EX1BDSSBpcyBub3Qgc2V0CgojCiMgSEQtQXVkaW8KIwpDT05GSUdf U05EX0hEQT15CkNPTkZJR19TTkRfSERBX0dFTkVSSUNfTEVEUz15CkNPTkZJR19TTkRfSERB X0hXREVQPXkKIyBDT05GSUdfU05EX0hEQV9SRUNPTkZJRyBpcyBub3Qgc2V0CkNPTkZJR19T TkRfSERBX0lOUFVUX0JFRVA9eQpDT05GSUdfU05EX0hEQV9JTlBVVF9CRUVQX01PREU9MQoj IENPTkZJR19TTkRfSERBX1BBVENIX0xPQURFUiBpcyBub3Qgc2V0CkNPTkZJR19TTkRfSERB X0NJUlJVU19TQ09ERUM9eQpDT05GSUdfU05EX0hEQV9DSVJSVVNfU0NPREVDX0tVTklUX1RF U1Q9eQpDT05GSUdfU05EX0hEQV9TQ09ERUNfQ1MzNUw0MT15CkNPTkZJR19TTkRfSERBX0NT X0RTUF9DT05UUk9MUz15CkNPTkZJR19TTkRfSERBX1NDT0RFQ19DT01QT05FTlQ9eQpDT05G SUdfU05EX0hEQV9TQ09ERUNfQ1MzNUw0MV9JMkM9eQpDT05GSUdfU05EX0hEQV9TQ09ERUNf Q1MzNUw1Nj15CkNPTkZJR19TTkRfSERBX1NDT0RFQ19DUzM1TDU2X0kyQz15CkNPTkZJR19T TkRfSERBX1NDT0RFQ19UQVMyNzgxX0kyQz15CkNPTkZJR19TTkRfSERBX0NPREVDX1JFQUxU RUs9eQojIENPTkZJR19TTkRfSERBX0NPREVDX0FOQUxPRyBpcyBub3Qgc2V0CiMgQ09ORklH X1NORF9IREFfQ09ERUNfU0lHTUFURUwgaXMgbm90IHNldApDT05GSUdfU05EX0hEQV9DT0RF Q19WSUE9eQpDT05GSUdfU05EX0hEQV9DT0RFQ19IRE1JPXkKQ09ORklHX1NORF9IREFfQ09E RUNfQ0lSUlVTPXkKIyBDT05GSUdfU05EX0hEQV9DT0RFQ19DUzg0MDkgaXMgbm90IHNldApD T05GSUdfU05EX0hEQV9DT0RFQ19DT05FWEFOVD15CiMgQ09ORklHX1NORF9IREFfQ09ERUNf U0VOQVJZVEVDSCBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9IREFfQ09ERUNfQ0EwMTEwIGlz IG5vdCBzZXQKQ09ORklHX1NORF9IREFfQ09ERUNfQ0EwMTMyPXkKIyBDT05GSUdfU05EX0hE QV9DT0RFQ19DQTAxMzJfRFNQIGlzIG5vdCBzZXQKIyBDT05GSUdfU05EX0hEQV9DT0RFQ19D TUVESUEgaXMgbm90IHNldAojIENPTkZJR19TTkRfSERBX0NPREVDX1NJMzA1NCBpcyBub3Qg c2V0CkNPTkZJR19TTkRfSERBX0dFTkVSSUM9eQojIGVuZCBvZiBIRC1BdWRpbwoKQ09ORklH X1NORF9IREFfQ09SRT15CkNPTkZJR19TTkRfSERBX0RTUF9MT0FERVI9eQpDT05GSUdfU05E X0hEQV9FWFRfQ09SRT15CkNPTkZJR19TTkRfSERBX1BSRUFMTE9DX1NJWkU9MApDT05GSUdf U05EX0lOVEVMX05ITFQ9eQpDT05GSUdfU05EX0lOVEVMX0RTUF9DT05GSUc9eQpDT05GSUdf U05EX0lOVEVMX1NPVU5EV0lSRV9BQ1BJPXkKQ09ORklHX1NORF9GSVJFV0lSRT15CkNPTkZJ R19TTkRfRklSRVdJUkVfTElCPXkKQ09ORklHX1NORF9ESUNFPXkKQ09ORklHX1NORF9PWEZX PXkKIyBDT05GSUdfU05EX0lTSUdIVCBpcyBub3Qgc2V0CkNPTkZJR19TTkRfRklSRVdPUktT PXkKIyBDT05GSUdfU05EX0JFQk9CIGlzIG5vdCBzZXQKQ09ORklHX1NORF9GSVJFV0lSRV9E SUdJMDBYPXkKQ09ORklHX1NORF9GSVJFV0lSRV9UQVNDQU09eQpDT05GSUdfU05EX0ZJUkVX SVJFX01PVFU9eQpDT05GSUdfU05EX0ZJUkVGQUNFPXkKQ09ORklHX1NORF9QQ01DSUE9eQpD T05GSUdfU05EX1ZYUE9DS0VUPXkKQ09ORklHX1NORF9QREFVRElPQ0Y9eQpDT05GSUdfU05E X1NPQz15CkNPTkZJR19TTkRfU09DX0FDOTdfQlVTPXkKQ09ORklHX1NORF9TT0NfR0VORVJJ Q19ETUFFTkdJTkVfUENNPXkKQ09ORklHX1NORF9TT0NfQ09NUFJFU1M9eQpDT05GSUdfU05E X1NPQ19UT1BPTE9HWT15CkNPTkZJR19TTkRfU09DX1RPUE9MT0dZX0JVSUxEPXkKQ09ORklH X1NORF9TT0NfVE9QT0xPR1lfS1VOSVRfVEVTVD15CkNPTkZJR19TTkRfU09DX0NBUkRfS1VO SVRfVEVTVD15CkNPTkZJR19TTkRfU09DX1VUSUxTX0tVTklUX1RFU1Q9eQpDT05GSUdfU05E X1NPQ19BQ1BJPXkKQ09ORklHX1NORF9TT0NfQURJPXkKIyBDT05GSUdfU05EX1NPQ19BRElf QVhJX0kyUyBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9TT0NfQURJX0FYSV9TUERJRiBpcyBu b3Qgc2V0CiMgQ09ORklHX1NORF9TT0NfQU1EX0FDUCBpcyBub3Qgc2V0CkNPTkZJR19TTkRf U09DX0FNRF9BQ1AzeD15CkNPTkZJR19TTkRfU09DX0FNRF9SRU5PSVI9eQpDT05GSUdfU05E X1NPQ19BTURfUkVOT0lSX01BQ0g9eQpDT05GSUdfU05EX1NPQ19BTURfQUNQNXg9eQpDT05G SUdfU05EX1NPQ19BTURfQUNQNng9eQpDT05GSUdfU05EX1NPQ19BTURfWUNfTUFDSD15CkNP TkZJR19TTkRfQU1EX0FDUF9DT05GSUc9eQojIENPTkZJR19TTkRfU09DX0FNRF9BQ1BfQ09N TU9OIGlzIG5vdCBzZXQKIyBDT05GSUdfU05EX1NPQ19BTURfUlBMX0FDUDZ4IGlzIG5vdCBz ZXQKIyBDT05GSUdfU05EX1NPQ19BTURfQUNQNjNfVE9QTEVWRUwgaXMgbm90IHNldApDT05G SUdfU05EX0FUTUVMX1NPQz15CkNPTkZJR19TTkRfQkNNNjNYWF9JMlNfV0hJU1RMRVI9eQpD T05GSUdfU05EX0RFU0lHTldBUkVfSTJTPXkKIyBDT05GSUdfU05EX0RFU0lHTldBUkVfUENN IGlzIG5vdCBzZXQKCiMKIyBTb0MgQXVkaW8gZm9yIEZyZWVzY2FsZSBDUFVzCiMKCiMKIyBD b21tb24gU29DIEF1ZGlvIG9wdGlvbnMgZm9yIEZyZWVzY2FsZSBDUFVzOgojCkNPTkZJR19T TkRfU09DX0ZTTF9BU1JDPXkKIyBDT05GSUdfU05EX1NPQ19GU0xfU0FJIGlzIG5vdCBzZXQK Q09ORklHX1NORF9TT0NfRlNMX0FVRE1JWD15CkNPTkZJR19TTkRfU09DX0ZTTF9TU0k9eQoj IENPTkZJR19TTkRfU09DX0ZTTF9TUERJRiBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9TT0Nf RlNMX0VTQUkgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19GU0xfTUlDRklMPXkKQ09ORklH X1NORF9TT0NfRlNMX0VBU1JDPXkKQ09ORklHX1NORF9TT0NfRlNMX1hDVlI9eQpDT05GSUdf U05EX1NPQ19GU0xfVVRJTFM9eQpDT05GSUdfU05EX1NPQ19JTVhfQVVETVVYPXkKIyBlbmQg b2YgU29DIEF1ZGlvIGZvciBGcmVlc2NhbGUgQ1BVcwoKQ09ORklHX1NORF9TT0NfQ0hWM19J MlM9eQojIENPTkZJR19TTkRfSTJTX0hJNjIxMF9JMlMgaXMgbm90IHNldAojIENPTkZJR19T TkRfU09DX0lNRyBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX0lOVEVMX1NTVF9UT1BMRVZF TD15CkNPTkZJR19TTkRfU09DX0lOVEVMX1NTVD15CiMgQ09ORklHX1NORF9TT0NfSU5URUxf Q0FUUFQgaXMgbm90IHNldApDT05GSUdfU05EX1NTVF9BVE9NX0hJRkkyX1BMQVRGT1JNPXkK Q09ORklHX1NORF9TU1RfQVRPTV9ISUZJMl9QTEFURk9STV9QQ0k9eQpDT05GSUdfU05EX1NT VF9BVE9NX0hJRkkyX1BMQVRGT1JNX0FDUEk9eQojIENPTkZJR19TTkRfU09DX0lOVEVMX1NL WUxBS0UgaXMgbm90IHNldAojIENPTkZJR19TTkRfU09DX0lOVEVMX1NLTCBpcyBub3Qgc2V0 CkNPTkZJR19TTkRfU09DX0lOVEVMX0FQTD15CkNPTkZJR19TTkRfU09DX0lOVEVMX0tCTD15 CkNPTkZJR19TTkRfU09DX0lOVEVMX0dMSz15CiMgQ09ORklHX1NORF9TT0NfSU5URUxfQ05M IGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfSU5URUxfQ0ZMPXkKIyBDT05GSUdfU05EX1NP Q19JTlRFTF9DTUxfSCBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9TT0NfSU5URUxfQ01MX0xQ IGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfSU5URUxfU0tZTEFLRV9GQU1JTFk9eQpDT05G SUdfU05EX1NPQ19JTlRFTF9TS1lMQUtFX1NTUF9DTEs9eQojIENPTkZJR19TTkRfU09DX0lO VEVMX1NLWUxBS0VfSERBVURJT19DT0RFQyBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX0lO VEVMX1NLWUxBS0VfQ09NTU9OPXkKQ09ORklHX1NORF9TT0NfQUNQSV9JTlRFTF9NQVRDSD15 CiMgQ09ORklHX1NORF9TT0NfSU5URUxfQVZTIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0Nf SU5URUxfTUFDSD15CiMgQ09ORklHX1NORF9TT0NfSU5URUxfVVNFUl9GUklFTkRMWV9MT05H X05BTUVTIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfSU5URUxfSERBX0RTUF9DT01NT049 eQpDT05GSUdfU05EX1NPQ19JTlRFTF9CWVRDUl9SVDU2NDBfTUFDSD15CkNPTkZJR19TTkRf U09DX0lOVEVMX0JZVENSX1JUNTY1MV9NQUNIPXkKQ09ORklHX1NORF9TT0NfSU5URUxfQ0hU X0JTV19SVDU2NzJfTUFDSD15CkNPTkZJR19TTkRfU09DX0lOVEVMX0NIVF9CU1dfUlQ1NjQ1 X01BQ0g9eQpDT05GSUdfU05EX1NPQ19JTlRFTF9DSFRfQlNXX01BWDk4MDkwX1RJX01BQ0g9 eQpDT05GSUdfU05EX1NPQ19JTlRFTF9DSFRfQlNXX05BVTg4MjRfTUFDSD15CkNPTkZJR19T TkRfU09DX0lOVEVMX0JZVF9DSFRfQ1gyMDcyWF9NQUNIPXkKQ09ORklHX1NORF9TT0NfSU5U RUxfQllUX0NIVF9EQTcyMTNfTUFDSD15CiMgQ09ORklHX1NORF9TT0NfSU5URUxfQllUX0NI VF9FUzgzMTZfTUFDSCBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX0lOVEVMX0JZVF9DSFRf Tk9DT0RFQ19NQUNIPXkKQ09ORklHX1NORF9TT0NfSU5URUxfREE3MjE5X01BWDk4MzU3QV9H RU5FUklDPXkKQ09ORklHX1NORF9TT0NfSU5URUxfQlhUX0RBNzIxOV9NQVg5ODM1N0FfTUFD SD15CkNPTkZJR19TTkRfU09DX0lOVEVMX0JYVF9SVDI5OF9NQUNIPXkKQ09ORklHX1NORF9T T0NfSU5URUxfS0JMX1JUNTY2M19NQVg5ODkyN19NQUNIPXkKQ09ORklHX1NORF9TT0NfSU5U RUxfS0JMX0RBNzIxOV9NQVg5ODM1N0FfTUFDSD15CkNPTkZJR19TTkRfU09DX0lOVEVMX0tC TF9EQTcyMTlfTUFYOTg5MjdfTUFDSD15CkNPTkZJR19TTkRfU09DX0lOVEVMX0tCTF9SVDU2 NjBfTUFDSD15CkNPTkZJR19TTkRfU09DX01US19CVENWU0Q9eQojIENPTkZJR19TTkRfU09D X1NPRl9UT1BMRVZFTCBpcyBub3Qgc2V0CgojCiMgU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMy IFNPQyBhdWRpbyBzdXBwb3J0CiMKIyBlbmQgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMy IFNPQyBhdWRpbyBzdXBwb3J0CgpDT05GSUdfU05EX1NPQ19YSUxJTlhfSTJTPXkKIyBDT05G SUdfU05EX1NPQ19YSUxJTlhfQVVESU9fRk9STUFUVEVSIGlzIG5vdCBzZXQKQ09ORklHX1NO RF9TT0NfWElMSU5YX1NQRElGPXkKIyBDT05GSUdfU05EX1NPQ19YVEZQR0FfSTJTIGlzIG5v dCBzZXQKQ09ORklHX1NORF9TT0NfSTJDX0FORF9TUEk9eQoKIwojIENPREVDIGRyaXZlcnMK IwpDT05GSUdfU05EX1NPQ19XTV9BRFNQPXkKQ09ORklHX1NORF9TT0NfQUM5N19DT0RFQz15 CkNPTkZJR19TTkRfU09DX0FEQVVfVVRJTFM9eQojIENPTkZJR19TTkRfU09DX0FEQVUxMzcy X0kyQyBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX0FEQVUxNzAxPXkKQ09ORklHX1NORF9T T0NfQURBVTE3WDE9eQpDT05GSUdfU05EX1NPQ19BREFVMTc2MT15CkNPTkZJR19TTkRfU09D X0FEQVUxNzYxX0kyQz15CkNPTkZJR19TTkRfU09DX0FEQVU3MDAyPXkKQ09ORklHX1NORF9T T0NfQURBVTcxMTg9eQpDT05GSUdfU05EX1NPQ19BREFVNzExOF9IVz15CiMgQ09ORklHX1NO RF9TT0NfQURBVTcxMThfSTJDIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfQUs0MTE4PXkK IyBDT05GSUdfU05EX1NPQ19BSzQzNzUgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19BSzQ0 NTg9eQpDT05GSUdfU05EX1NPQ19BSzQ1NTQ9eQpDT05GSUdfU05EX1NPQ19BSzQ2MTM9eQpD T05GSUdfU05EX1NPQ19BSzQ2MTk9eQpDT05GSUdfU05EX1NPQ19BSzQ2NDI9eQpDT05GSUdf U05EX1NPQ19BSzUzODY9eQojIENPTkZJR19TTkRfU09DX0FLNTU1OCBpcyBub3Qgc2V0CkNP TkZJR19TTkRfU09DX0FMQzU2MjM9eQojIENPTkZJR19TTkRfU09DX0FVRElPX0lJT19BVVgg aXMgbm90IHNldAojIENPTkZJR19TTkRfU09DX0FXODczOCBpcyBub3Qgc2V0CkNPTkZJR19T TkRfU09DX0FXODgzOTVfTElCPXkKQ09ORklHX1NORF9TT0NfQVc4ODM5NT15CkNPTkZJR19T TkRfU09DX0FXODgyNjE9eQpDT05GSUdfU05EX1NPQ19BVzg3MzkwPXkKQ09ORklHX1NORF9T T0NfQVc4ODM5OT15CkNPTkZJR19TTkRfU09DX0JEMjg2MjM9eQpDT05GSUdfU05EX1NPQ19C VF9TQ089eQpDT05GSUdfU05EX1NPQ19DSFYzX0NPREVDPXkKQ09ORklHX1NORF9TT0NfQ1Nf QU1QX0xJQj15CkNPTkZJR19TTkRfU09DX0NTX0FNUF9MSUJfVEVTVD15CkNPTkZJR19TTkRf U09DX0NTMzVMMzI9eQpDT05GSUdfU05EX1NPQ19DUzM1TDMzPXkKQ09ORklHX1NORF9TT0Nf Q1MzNUwzND15CkNPTkZJR19TTkRfU09DX0NTMzVMMzU9eQpDT05GSUdfU05EX1NPQ19DUzM1 TDM2PXkKQ09ORklHX1NORF9TT0NfQ1MzNUw0MV9MSUI9eQpDT05GSUdfU05EX1NPQ19DUzM1 TDQxPXkKQ09ORklHX1NORF9TT0NfQ1MzNUw0MV9JMkM9eQpDT05GSUdfU05EX1NPQ19DUzM1 TDQ1PXkKQ09ORklHX1NORF9TT0NfQ1MzNUw0NV9JMkM9eQpDT05GSUdfU05EX1NPQ19DUzM1 TDU2PXkKQ09ORklHX1NORF9TT0NfQ1MzNUw1Nl9TSEFSRUQ9eQpDT05GSUdfU05EX1NPQ19D UzM1TDU2X0kyQz15CiMgQ09ORklHX1NORF9TT0NfQ1MzNUw1Nl9TRFcgaXMgbm90IHNldAoj IENPTkZJR19TTkRfU09DX0NTNDBMNTAgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19DUzQy TDQyX0NPUkU9eQpDT05GSUdfU05EX1NPQ19DUzQyTDQyPXkKIyBDT05GSUdfU05EX1NPQ19D UzQyTDQyX1NEVyBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9TT0NfQ1M0Mkw0MyBpcyBub3Qg c2V0CkNPTkZJR19TTkRfU09DX0NTNDJMNTE9eQpDT05GSUdfU05EX1NPQ19DUzQyTDUxX0ky Qz15CkNPTkZJR19TTkRfU09DX0NTNDJMNTI9eQojIENPTkZJR19TTkRfU09DX0NTNDJMNTYg aXMgbm90IHNldAojIENPTkZJR19TTkRfU09DX0NTNDJMNzMgaXMgbm90IHNldApDT05GSUdf U05EX1NPQ19DUzQyTDgzPXkKQ09ORklHX1NORF9TT0NfQ1M0MjM0PXkKQ09ORklHX1NORF9T T0NfQ1M0MjY1PXkKQ09ORklHX1NORF9TT0NfQ1M0MjcwPXkKQ09ORklHX1NORF9TT0NfQ1M0 MjcxPXkKQ09ORklHX1NORF9TT0NfQ1M0MjcxX0kyQz15CkNPTkZJR19TTkRfU09DX0NTNDJY WDg9eQpDT05GSUdfU05EX1NPQ19DUzQyWFg4X0kyQz15CiMgQ09ORklHX1NORF9TT0NfQ1M0 MzEzMCBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX0NTNDM0MT15CkNPTkZJR19TTkRfU09D X0NTNDM0OT15CkNPTkZJR19TTkRfU09DX0NTNTNMMzA9eQojIENPTkZJR19TTkRfU09DX0NT NTMwWF9JMkMgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19DWDIwNzJYPXkKQ09ORklHX1NO RF9TT0NfREE3MjEzPXkKQ09ORklHX1NORF9TT0NfREE3MjE5PXkKQ09ORklHX1NORF9TT0Nf RE1JQz15CiMgQ09ORklHX1NORF9TT0NfRVM3MTM0IGlzIG5vdCBzZXQKIyBDT05GSUdfU05E X1NPQ19FUzcyNDEgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19FUzgzMTE9eQpDT05GSUdf U05EX1NPQ19FUzgzMTY9eQpDT05GSUdfU05EX1NPQ19FUzgzMjY9eQpDT05GSUdfU05EX1NP Q19FUzgzMjg9eQpDT05GSUdfU05EX1NPQ19FUzgzMjhfSTJDPXkKQ09ORklHX1NORF9TT0Nf R1RNNjAxPXkKQ09ORklHX1NORF9TT0NfSERBQ19IRE1JPXkKQ09ORklHX1NORF9TT0NfSERB Q19IREE9eQojIENPTkZJR19TTkRfU09DX0hEQSBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9T T0NfSUNTNDM0MzIgaXMgbm90IHNldAojIENPTkZJR19TTkRfU09DX01BWDk4MDg4IGlzIG5v dCBzZXQKQ09ORklHX1NORF9TT0NfTUFYOTgwOTA9eQpDT05GSUdfU05EX1NPQ19NQVg5ODM1 N0E9eQpDT05GSUdfU05EX1NPQ19NQVg5ODUwND15CkNPTkZJR19TTkRfU09DX01BWDk4Njc9 eQpDT05GSUdfU05EX1NPQ19NQVg5ODkyNz15CiMgQ09ORklHX1NORF9TT0NfTUFYOTg1MjAg aXMgbm90IHNldAojIENPTkZJR19TTkRfU09DX01BWDk4MzYzIGlzIG5vdCBzZXQKQ09ORklH X1NORF9TT0NfTUFYOTgzNzM9eQpDT05GSUdfU05EX1NPQ19NQVg5ODM3M19JMkM9eQpDT05G SUdfU05EX1NPQ19NQVg5ODM3M19TRFc9eQpDT05GSUdfU05EX1NPQ19NQVg5ODM4OD15CiMg Q09ORklHX1NORF9TT0NfTUFYOTgzOTAgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19NQVg5 ODM5Nj15CkNPTkZJR19TTkRfU09DX01BWDk4NjA9eQpDT05GSUdfU05EX1NPQ19NU004OTE2 X1dDRF9BTkFMT0c9eQpDT05GSUdfU05EX1NPQ19NU004OTE2X1dDRF9ESUdJVEFMPXkKIyBD T05GSUdfU05EX1NPQ19QQ00xNjgxIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfUENNMTc4 OT15CkNPTkZJR19TTkRfU09DX1BDTTE3ODlfSTJDPXkKQ09ORklHX1NORF9TT0NfUENNMTc5 WD15CkNPTkZJR19TTkRfU09DX1BDTTE3OVhfSTJDPXkKIyBDT05GSUdfU05EX1NPQ19QQ00x ODZYX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX1BDTTMwNjA9eQpDT05GSUdfU05E X1NPQ19QQ00zMDYwX0kyQz15CkNPTkZJR19TTkRfU09DX1BDTTMxNjhBPXkKQ09ORklHX1NO RF9TT0NfUENNMzE2OEFfSTJDPXkKQ09ORklHX1NORF9TT0NfUENNNTEwMkE9eQpDT05GSUdf U05EX1NPQ19QQ001MTJ4PXkKQ09ORklHX1NORF9TT0NfUENNNTEyeF9JMkM9eQojIENPTkZJ R19TTkRfU09DX1BDTTYyNDAgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19STDYyMzE9eQpD T05GSUdfU05EX1NPQ19STDYzNDdBPXkKQ09ORklHX1NORF9TT0NfUlQyOTg9eQpDT05GSUdf U05EX1NPQ19SVDEwMTdfU0RDQV9TRFc9eQpDT05GSUdfU05EX1NPQ19SVDEzMDhfU0RXPXkK Q09ORklHX1NORF9TT0NfUlQxMzE2X1NEVz15CkNPTkZJR19TTkRfU09DX1JUMTMxOF9TRFc9 eQojIENPTkZJR19TTkRfU09DX1JUMTMyMF9TRFcgaXMgbm90IHNldApDT05GSUdfU05EX1NP Q19SVDU2MTY9eQpDT05GSUdfU05EX1NPQ19SVDU2MzE9eQpDT05GSUdfU05EX1NPQ19SVDU2 NDA9eQpDT05GSUdfU05EX1NPQ19SVDU2NDU9eQpDT05GSUdfU05EX1NPQ19SVDU2NTE9eQoj IENPTkZJR19TTkRfU09DX1JUNTY1OSBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX1JUNTY2 MD15CkNPTkZJR19TTkRfU09DX1JUNTY2Mz15CkNPTkZJR19TTkRfU09DX1JUNTY3MD15CkNP TkZJR19TTkRfU09DX1JUNTY4Mj15CkNPTkZJR19TTkRfU09DX1JUNTY4Ml9TRFc9eQpDT05G SUdfU05EX1NPQ19SVDcwMD15CkNPTkZJR19TTkRfU09DX1JUNzAwX1NEVz15CkNPTkZJR19T TkRfU09DX1JUNzExPXkKQ09ORklHX1NORF9TT0NfUlQ3MTFfU0RXPXkKQ09ORklHX1NORF9T T0NfUlQ3MTFfU0RDQV9TRFc9eQpDT05GSUdfU05EX1NPQ19SVDcxMl9TRENBX1NEVz15CkNP TkZJR19TTkRfU09DX1JUNzEyX1NEQ0FfRE1JQ19TRFc9eQpDT05GSUdfU05EX1NPQ19SVDcy Ml9TRENBX1NEVz15CkNPTkZJR19TTkRfU09DX1JUNzE1PXkKQ09ORklHX1NORF9TT0NfUlQ3 MTVfU0RXPXkKQ09ORklHX1NORF9TT0NfUlQ3MTVfU0RDQV9TRFc9eQojIENPTkZJR19TTkRf U09DX1JUOTEyMCBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX1JUUTkxMjg9eQpDT05GSUdf U05EX1NPQ19TR1RMNTAwMD15CkNPTkZJR19TTkRfU09DX1NJNDc2WD15CkNPTkZJR19TTkRf U09DX1NJR01BRFNQPXkKQ09ORklHX1NORF9TT0NfU0lHTUFEU1BfSTJDPXkKQ09ORklHX1NO RF9TT0NfU0lHTUFEU1BfUkVHTUFQPXkKQ09ORklHX1NORF9TT0NfU0lNUExFX0FNUExJRklF Uj15CkNPTkZJR19TTkRfU09DX1NJTVBMRV9NVVg9eQojIENPTkZJR19TTkRfU09DX1NNQTEz MDMgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19TUERJRj15CiMgQ09ORklHX1NORF9TT0Nf U1JDNFhYWF9JMkMgaXMgbm90IHNldAojIENPTkZJR19TTkRfU09DX1NTTTIzMDUgaXMgbm90 IHNldApDT05GSUdfU05EX1NPQ19TU00yNTE4PXkKQ09ORklHX1NORF9TT0NfU1NNMjYwMj15 CkNPTkZJR19TTkRfU09DX1NTTTI2MDJfSTJDPXkKQ09ORklHX1NORF9TT0NfU1NNNDU2Nz15 CiMgQ09ORklHX1NORF9TT0NfU1RBMzJYIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfU1RB MzUwPXkKQ09ORklHX1NORF9TT0NfU1RJX1NBUz15CiMgQ09ORklHX1NORF9TT0NfVEFTMjU1 MiBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX1RBUzI1NjI9eQpDT05GSUdfU05EX1NPQ19U QVMyNzY0PXkKQ09ORklHX1NORF9TT0NfVEFTMjc3MD15CkNPTkZJR19TTkRfU09DX1RBUzI3 ODA9eQpDT05GSUdfU05EX1NPQ19UQVMyNzgxX0NPTUxJQj15CkNPTkZJR19TTkRfU09DX1RB UzI3ODFfRk1XTElCPXkKQ09ORklHX1NORF9TT0NfVEFTMjc4MV9JMkM9eQojIENPTkZJR19T TkRfU09DX1RBUzUwODYgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19UQVM1NzFYPXkKQ09O RklHX1NORF9TT0NfVEFTNTcyMD15CkNPTkZJR19TTkRfU09DX1RBUzU4MDVNPXkKQ09ORklH X1NORF9TT0NfVEFTNjQyND15CiMgQ09ORklHX1NORF9TT0NfVERBNzQxOSBpcyBub3Qgc2V0 CkNPTkZJR19TTkRfU09DX1RGQTk4Nzk9eQpDT05GSUdfU05EX1NPQ19URkE5ODlYPXkKQ09O RklHX1NORF9TT0NfVExWMzIwQURDM1hYWD15CiMgQ09ORklHX1NORF9TT0NfVExWMzIwQUlD MjNfSTJDIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfVExWMzIwQUlDMzFYWD15CkNPTkZJ R19TTkRfU09DX1RMVjMyMEFJQzMyWDQ9eQpDT05GSUdfU05EX1NPQ19UTFYzMjBBSUMzMlg0 X0kyQz15CkNPTkZJR19TTkRfU09DX1RMVjMyMEFJQzNYPXkKQ09ORklHX1NORF9TT0NfVExW MzIwQUlDM1hfSTJDPXkKQ09ORklHX1NORF9TT0NfVExWMzIwQURDWDE0MD15CkNPTkZJR19T TkRfU09DX1RTM0EyMjdFPXkKQ09ORklHX1NORF9TT0NfVFNDUzQyWFg9eQojIENPTkZJR19T TkRfU09DX1RTQ1M0NTQgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19VREExMzM0PXkKQ09O RklHX1NORF9TT0NfV0NEX0NMQVNTSD15CkNPTkZJR19TTkRfU09DX1dDRDkzMzU9eQpDT05G SUdfU05EX1NPQ19XQ0RfTUJIQz15CkNPTkZJR19TTkRfU09DX1dDRDkzNFg9eQpDT05GSUdf U05EX1NPQ19XQ0Q5MzdYPXkKQ09ORklHX1NORF9TT0NfV0NEOTM3WF9TRFc9eQpDT05GSUdf U05EX1NPQ19XQ0Q5MzhYPXkKQ09ORklHX1NORF9TT0NfV0NEOTM4WF9TRFc9eQojIENPTkZJ R19TTkRfU09DX1dDRDkzOVhfU0RXIGlzIG5vdCBzZXQKIyBDT05GSUdfU05EX1NPQ19XTTg1 MTAgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19XTTg1MjM9eQpDT05GSUdfU05EX1NPQ19X TTg1MjQ9eQpDT05GSUdfU05EX1NPQ19XTTg1ODA9eQpDT05GSUdfU05EX1NPQ19XTTg3MTE9 eQojIENPTkZJR19TTkRfU09DX1dNODcyOCBpcyBub3Qgc2V0CiMgQ09ORklHX1NORF9TT0Nf V004NzMxX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX1dNODczNz15CiMgQ09ORklH X1NORF9TT0NfV004NzQxIGlzIG5vdCBzZXQKQ09ORklHX1NORF9TT0NfV004NzUwPXkKQ09O RklHX1NORF9TT0NfV004NzUzPXkKQ09ORklHX1NORF9TT0NfV004Nzc2PXkKIyBDT05GSUdf U05EX1NPQ19XTTg3ODIgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19XTTg4MDQ9eQpDT05G SUdfU05EX1NPQ19XTTg4MDRfSTJDPXkKIyBDT05GSUdfU05EX1NPQ19XTTg5MDMgaXMgbm90 IHNldApDT05GSUdfU05EX1NPQ19XTTg5MDQ9eQpDT05GSUdfU05EX1NPQ19XTTg5NDA9eQpD T05GSUdfU05EX1NPQ19XTTg5NjA9eQpDT05GSUdfU05EX1NPQ19XTTg5NjE9eQpDT05GSUdf U05EX1NPQ19XTTg5NjI9eQpDT05GSUdfU05EX1NPQ19XTTg5NzQ9eQpDT05GSUdfU05EX1NP Q19XTTg5Nzg9eQpDT05GSUdfU05EX1NPQ19XTTg5ODU9eQpDT05GSUdfU05EX1NPQ19XU0E4 ODFYPXkKQ09ORklHX1NORF9TT0NfV1NBODgzWD15CkNPTkZJR19TTkRfU09DX1dTQTg4NFg9 eQojIENPTkZJR19TTkRfU09DX01BWDk3NTkgaXMgbm90IHNldApDT05GSUdfU05EX1NPQ19N VDYzNTE9eQpDT05GSUdfU05EX1NPQ19NVDYzNTg9eQojIENPTkZJR19TTkRfU09DX01UNjY2 MCBpcyBub3Qgc2V0CkNPTkZJR19TTkRfU09DX05BVTgzMTU9eQpDT05GSUdfU05EX1NPQ19O QVU4NTQwPXkKQ09ORklHX1NORF9TT0NfTkFVODgxMD15CkNPTkZJR19TTkRfU09DX05BVTg4 MjE9eQpDT05GSUdfU05EX1NPQ19OQVU4ODIyPXkKQ09ORklHX1NORF9TT0NfTkFVODgyND15 CkNPTkZJR19TTkRfU09DX1RQQTYxMzBBMj15CkNPTkZJR19TTkRfU09DX0xQQVNTX01BQ1JP X0NPTU1PTj15CkNPTkZJR19TTkRfU09DX0xQQVNTX1dTQV9NQUNSTz15CkNPTkZJR19TTkRf U09DX0xQQVNTX1ZBX01BQ1JPPXkKQ09ORklHX1NORF9TT0NfTFBBU1NfUlhfTUFDUk89eQpD T05GSUdfU05EX1NPQ19MUEFTU19UWF9NQUNSTz15CiMgZW5kIG9mIENPREVDIGRyaXZlcnMK CkNPTkZJR19TTkRfU0lNUExFX0NBUkRfVVRJTFM9eQpDT05GSUdfU05EX1NJTVBMRV9DQVJE PXkKQ09ORklHX1NORF9YODY9eQpDT05GSUdfU05EX1ZJUlRJTz15CkNPTkZJR19BQzk3X0JV Uz15CiMgQ09ORklHX0hJRF9TVVBQT1JUIGlzIG5vdCBzZXQKQ09ORklHX1VTQl9PSENJX0xJ VFRMRV9FTkRJQU49eQojIENPTkZJR19VU0JfU1VQUE9SVCBpcyBub3Qgc2V0CkNPTkZJR19N TUM9eQpDT05GSUdfTU1DX0JMT0NLPXkKQ09ORklHX01NQ19CTE9DS19NSU5PUlM9OApDT05G SUdfU0RJT19VQVJUPXkKQ09ORklHX01NQ19URVNUPXkKCiMKIyBNTUMvU0QvU0RJTyBIb3N0 IENvbnRyb2xsZXIgRHJpdmVycwojCiMgQ09ORklHX01NQ19ERUJVRyBpcyBub3Qgc2V0CiMg Q09ORklHX01NQ19TREhDSSBpcyBub3Qgc2V0CkNPTkZJR19NTUNfV0JTRD15CiMgQ09ORklH X01NQ19BTENPUiBpcyBub3Qgc2V0CkNPTkZJR19NTUNfVElGTV9TRD15CiMgQ09ORklHX01N Q19TRFJJQ09IX0NTIGlzIG5vdCBzZXQKQ09ORklHX01NQ19DQjcxMD15CkNPTkZJR19NTUNf VklBX1NETU1DPXkKQ09ORklHX01NQ19VU0RISTZST0wwPXkKQ09ORklHX01NQ19DUUhDST15 CkNPTkZJR19NTUNfSFNRPXkKQ09ORklHX01NQ19UT1NISUJBX1BDST15CiMgQ09ORklHX01N Q19NVEsgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX1VGU0hDRCBpcyBub3Qgc2V0CkNPTkZJ R19NRU1TVElDSz15CkNPTkZJR19NRU1TVElDS19ERUJVRz15CgojCiMgTWVtb3J5U3RpY2sg ZHJpdmVycwojCkNPTkZJR19NRU1TVElDS19VTlNBRkVfUkVTVU1FPXkKQ09ORklHX01TUFJP X0JMT0NLPXkKQ09ORklHX01TX0JMT0NLPXkKCiMKIyBNZW1vcnlTdGljayBIb3N0IENvbnRy b2xsZXIgRHJpdmVycwojCkNPTkZJR19NRU1TVElDS19USUZNX01TPXkKQ09ORklHX01FTVNU SUNLX0pNSUNST05fMzhYPXkKQ09ORklHX01FTVNUSUNLX1I1OTI9eQpDT05GSUdfTkVXX0xF RFM9eQpDT05GSUdfTEVEU19DTEFTUz15CkNPTkZJR19MRURTX0NMQVNTX0ZMQVNIPXkKIyBD T05GSUdfTEVEU19DTEFTU19NVUxUSUNPTE9SIGlzIG5vdCBzZXQKQ09ORklHX0xFRFNfQlJJ R0hUTkVTU19IV19DSEFOR0VEPXkKCiMKIyBMRUQgZHJpdmVycwojCiMgQ09ORklHX0xFRFNf ODhQTTg2MFggaXMgbm90IHNldApDT05GSUdfTEVEU19BUFU9eQpDT05GSUdfTEVEU19BVzIw MFhYPXkKQ09ORklHX0xFRFNfTE0zNTMwPXkKQ09ORklHX0xFRFNfTE0zNTMyPXkKQ09ORklH X0xFRFNfTE0zNTMzPXkKQ09ORklHX0xFRFNfTE0zNjQyPXkKIyBDT05GSUdfTEVEU19NVDYz MjMgaXMgbm90IHNldAojIENPTkZJR19MRURTX1BDQTk1MzIgaXMgbm90IHNldApDT05GSUdf TEVEU19HUElPPXkKQ09ORklHX0xFRFNfTFAzOTQ0PXkKQ09ORklHX0xFRFNfTFAzOTUyPXkK Q09ORklHX0xFRFNfUENBOTU1WD15CkNPTkZJR19MRURTX1BDQTk1NVhfR1BJTz15CkNPTkZJ R19MRURTX1BDQTk2M1g9eQojIENPTkZJR19MRURTX1BDQTk5NVggaXMgbm90IHNldApDT05G SUdfTEVEU19XTTgzNTA9eQpDT05GSUdfTEVEU19SRUdVTEFUT1I9eQpDT05GSUdfTEVEU19C RDI2MDZNVlY9eQpDT05GSUdfTEVEU19CRDI4MDI9eQpDT05GSUdfTEVEU19JTlRFTF9TUzQy MDA9eQpDT05GSUdfTEVEU19MVDM1OTM9eQpDT05GSUdfTEVEU19UQ0E2NTA3PXkKIyBDT05G SUdfTEVEU19UTEM1OTFYWCBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTUFYODk5NyBpcyBu b3Qgc2V0CkNPTkZJR19MRURTX0xNMzU1eD15CiMgQ09ORklHX0xFRFNfT1QyMDAgaXMgbm90 IHNldApDT05GSUdfTEVEU19JUzMxRkwzMTlYPXkKCiMKIyBMRUQgZHJpdmVyIGZvciBibGlu aygxKSBVU0IgUkdCIExFRCBpcyB1bmRlciBTcGVjaWFsIEhJRCBkcml2ZXJzIChISURfVEhJ TkdNKQojCkNPTkZJR19MRURTX0JMSU5LTT15CkNPTkZJR19MRURTX01MWENQTEQ9eQpDT05G SUdfTEVEU19NTFhSRUc9eQpDT05GSUdfTEVEU19VU0VSPXkKIyBDT05GSUdfTEVEU19OSUM3 OEJYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19MTTM2Mjc0IGlzIG5vdCBzZXQKQ09ORklH X0xFRFNfVFBTNjEwNVg9eQoKIwojIEZsYXNoIGFuZCBUb3JjaCBMRUQgZHJpdmVycwojCkNP TkZJR19MRURTX0FTMzY0NUE9eQpDT05GSUdfTEVEU19MTTM2MDFYPXkKIyBDT05GSUdfTEVE U19NVDYzNzBfRkxBU0ggaXMgbm90IHNldApDT05GSUdfTEVEU19SVDg1MTU9eQpDT05GSUdf TEVEU19TR00zMTQwPXkKCiMKIyBSR0IgTEVEIGRyaXZlcnMKIwoKIwojIExFRCBUcmlnZ2Vy cwojCkNPTkZJR19MRURTX1RSSUdHRVJTPXkKIyBDT05GSUdfTEVEU19UUklHR0VSX1RJTUVS IGlzIG5vdCBzZXQKQ09ORklHX0xFRFNfVFJJR0dFUl9PTkVTSE9UPXkKIyBDT05GSUdfTEVE U19UUklHR0VSX0RJU0sgaXMgbm90IHNldApDT05GSUdfTEVEU19UUklHR0VSX01URD15CkNP TkZJR19MRURTX1RSSUdHRVJfSEVBUlRCRUFUPXkKIyBDT05GSUdfTEVEU19UUklHR0VSX0JB Q0tMSUdIVCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX1RSSUdHRVJfQ1BVPXkKIyBDT05GSUdf TEVEU19UUklHR0VSX0FDVElWSVRZIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19UUklHR0VS X0dQSU8gaXMgbm90IHNldAojIENPTkZJR19MRURTX1RSSUdHRVJfREVGQVVMVF9PTiBpcyBu b3Qgc2V0CgojCiMgaXB0YWJsZXMgdHJpZ2dlciBpcyB1bmRlciBOZXRmaWx0ZXIgY29uZmln IChMRUQgdGFyZ2V0KQojCiMgQ09ORklHX0xFRFNfVFJJR0dFUl9UUkFOU0lFTlQgaXMgbm90 IHNldApDT05GSUdfTEVEU19UUklHR0VSX0NBTUVSQT15CkNPTkZJR19MRURTX1RSSUdHRVJf UEFOSUM9eQpDT05GSUdfTEVEU19UUklHR0VSX1BBVFRFUk49eQpDT05GSUdfTEVEU19UUklH R0VSX1RUWT15CkNPTkZJR19MRURTX1RSSUdHRVJfSU5QVVRfRVZFTlRTPXkKCiMKIyBTaW1w bGUgTEVEIGRyaXZlcnMKIwpDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDPXkKIyBD T05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0FQT0xMT0xBS0UgaXMgbm90IHNldAoj IENPTkZJR19MRURTX1NJRU1FTlNfU0lNQVRJQ19JUENfRjcxODhYIGlzIG5vdCBzZXQKQ09O RklHX0FDQ0VTU0lCSUxJVFk9eQojIENPTkZJR19BMTFZX0JSQUlMTEVfQ09OU09MRSBpcyBu b3Qgc2V0CgojCiMgU3BlYWt1cCBjb25zb2xlIHNwZWVjaAojCiMgQ09ORklHX1NQRUFLVVAg aXMgbm90IHNldAojIGVuZCBvZiBTcGVha3VwIGNvbnNvbGUgc3BlZWNoCgpDT05GSUdfRURB Q19BVE9NSUNfU0NSVUI9eQpDT05GSUdfRURBQ19TVVBQT1JUPXkKQ09ORklHX1JUQ19MSUI9 eQpDT05GSUdfUlRDX01DMTQ2ODE4X0xJQj15CkNPTkZJR19SVENfQ0xBU1M9eQojIENPTkZJ R19SVENfSENUT1NZUyBpcyBub3Qgc2V0CkNPTkZJR19SVENfU1lTVE9IQz15CkNPTkZJR19S VENfU1lTVE9IQ19ERVZJQ0U9InJ0YzAiCiMgQ09ORklHX1JUQ19ERUJVRyBpcyBub3Qgc2V0 CkNPTkZJR19SVENfTElCX0tVTklUX1RFU1Q9eQojIENPTkZJR19SVENfTlZNRU0gaXMgbm90 IHNldAoKIwojIFJUQyBpbnRlcmZhY2VzCiMKIyBDT05GSUdfUlRDX0lOVEZfU1lTRlMgaXMg bm90IHNldAojIENPTkZJR19SVENfSU5URl9QUk9DIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRD X0lOVEZfREVWIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9URVNUIGlzIG5vdCBzZXQK CiMKIyBJMkMgUlRDIGRyaXZlcnMKIwojIENPTkZJR19SVENfRFJWXzg4UE04NjBYIGlzIG5v dCBzZXQKQ09ORklHX1JUQ19EUlZfODhQTTgwWD15CkNPTkZJR19SVENfRFJWX0FCQjVaRVMz PXkKQ09ORklHX1JUQ19EUlZfQUJFT1o5PXkKQ09ORklHX1JUQ19EUlZfQUJYODBYPXkKQ09O RklHX1JUQ19EUlZfRFMxMzA3PXkKIyBDT05GSUdfUlRDX0RSVl9EUzEzMDdfQ0VOVFVSWSBp cyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxMzc0IGlzIG5vdCBzZXQKQ09ORklHX1JU Q19EUlZfRFMxNjcyPXkKIyBDT05GSUdfUlRDX0RSVl9NQVg2OTAwIGlzIG5vdCBzZXQKIyBD T05GSUdfUlRDX0RSVl9NQVg4OTA3IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTUFYODky NT15CkNPTkZJR19SVENfRFJWX01BWDg5OTc9eQojIENPTkZJR19SVENfRFJWX01BWDMxMzM1 IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfUlM1QzM3Mj15CkNPTkZJR19SVENfRFJWX0lT TDEyMDg9eQpDT05GSUdfUlRDX0RSVl9JU0wxMjAyMj15CiMgQ09ORklHX1JUQ19EUlZfWDEy MDUgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1BDRjg1MjMgaXMgbm90IHNldApDT05G SUdfUlRDX0RSVl9QQ0Y4NTA2Mz15CkNPTkZJR19SVENfRFJWX1BDRjg1MzYzPXkKQ09ORklH X1JUQ19EUlZfUENGODU2Mz15CkNPTkZJR19SVENfRFJWX1BDRjg1ODM9eQpDT05GSUdfUlRD X0RSVl9NNDFUODA9eQojIENPTkZJR19SVENfRFJWX000MVQ4MF9XRFQgaXMgbm90IHNldAoj IENPTkZJR19SVENfRFJWX0JRMzJLIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfUEFMTUFT PXkKIyBDT05GSUdfUlRDX0RSVl9UUFM2NTk0IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RS Vl9UUFM2NTkxMCBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX1JDNVQ1ODM9eQpDT05GSUdf UlRDX0RSVl9TMzUzOTBBPXkKIyBDT05GSUdfUlRDX0RSVl9GTTMxMzAgaXMgbm90IHNldApD T05GSUdfUlRDX0RSVl9SWDgwMTA9eQpDT05GSUdfUlRDX0RSVl9SWDgxMTE9eQojIENPTkZJ R19SVENfRFJWX1JYODU4MSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUlg4MDI1IGlz IG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfRU0zMDI3PXkKIyBDT05GSUdfUlRDX0RSVl9SVjMw MjggaXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SVjMwMzI9eQpDT05GSUdfUlRDX0RSVl9S Vjg4MDM9eQpDT05GSUdfUlRDX0RSVl9TRDMwNzg9eQoKIwojIFNQSSBSVEMgZHJpdmVycwoj CkNPTkZJR19SVENfSTJDX0FORF9TUEk9eQoKIwojIFNQSSBhbmQgSTJDIFJUQyBkcml2ZXJz CiMKQ09ORklHX1JUQ19EUlZfRFMzMjMyPXkKIyBDT05GSUdfUlRDX0RSVl9EUzMyMzJfSFdN T04gaXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9QQ0YyMTI3PXkKIyBDT05GSUdfUlRDX0RS Vl9SVjMwMjlDMiBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX1JYNjExMD15CgojCiMgUGxh dGZvcm0gUlRDIGRyaXZlcnMKIwpDT05GSUdfUlRDX0RSVl9DTU9TPXkKQ09ORklHX1JUQ19E UlZfRFMxMjg2PXkKIyBDT05GSUdfUlRDX0RSVl9EUzE1MTEgaXMgbm90IHNldAojIENPTkZJ R19SVENfRFJWX0RTMTU1MyBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0RTMTY4NV9GQU1J TFk9eQojIENPTkZJR19SVENfRFJWX0RTMTY4NSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19E UlZfRFMxNjg5IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfRFMxNzI4NT15CiMgQ09ORklH X1JUQ19EUlZfRFMxNzQ4NSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzg4NSBp cyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0RTMTc0Mj15CkNPTkZJR19SVENfRFJWX0RTMjQw ND15CkNPTkZJR19SVENfRFJWX0RBOTA1NT15CiMgQ09ORklHX1JUQ19EUlZfREE5MDYzIGlz IG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9TVEsxN1RBOCBpcyBub3Qgc2V0CkNPTkZJR19S VENfRFJWX000OFQ4Nj15CiMgQ09ORklHX1JUQ19EUlZfTTQ4VDM1IGlzIG5vdCBzZXQKQ09O RklHX1JUQ19EUlZfTTQ4VDU5PXkKQ09ORklHX1JUQ19EUlZfTVNNNjI0Mj15CkNPTkZJR19S VENfRFJWX1JQNUMwMT15CkNPTkZJR19SVENfRFJWX1dNODM1MD15CkNPTkZJR19SVENfRFJW X1BDRjUwNjMzPXkKCiMKIyBvbi1DUFUgUlRDIGRyaXZlcnMKIwojIENPTkZJR19SVENfRFJW X0ZUUlRDMDEwIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9NVDYzOTcgaXMgbm90IHNl dAoKIwojIEhJRCBTZW5zb3IgUlRDIGRyaXZlcnMKIwpDT05GSUdfUlRDX0RSVl9HT0xERklT SD15CkNPTkZJR19ETUFERVZJQ0VTPXkKIyBDT05GSUdfRE1BREVWSUNFU19ERUJVRyBpcyBu b3Qgc2V0CgojCiMgRE1BIERldmljZXMKIwpDT05GSUdfRE1BX0VOR0lORT15CkNPTkZJR19E TUFfVklSVFVBTF9DSEFOTkVMUz15CkNPTkZJR19ETUFfQUNQST15CiMgQ09ORklHX0FMVEVS QV9NU0dETUEgaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9JRE1BNjQgaXMgbm90IHNldApD T05GSUdfUENIX0RNQT15CiMgQ09ORklHX1BMWF9ETUEgaXMgbm90IHNldApDT05GSUdfVElN Ql9ETUE9eQpDT05GSUdfWElMSU5YX0RNQT15CkNPTkZJR19YSUxJTlhfWERNQT15CkNPTkZJ R19RQ09NX0hJRE1BX01HTVQ9eQojIENPTkZJR19RQ09NX0hJRE1BIGlzIG5vdCBzZXQKQ09O RklHX0RXX0RNQUNfQ09SRT15CkNPTkZJR19EV19ETUFDPXkKQ09ORklHX0RXX0RNQUNfUENJ PXkKIyBDT05GSUdfU0ZfUERNQSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVMX0xETUEgaXMg bm90IHNldAoKIwojIERNQSBDbGllbnRzCiMKQ09ORklHX0FTWU5DX1RYX0RNQT15CkNPTkZJ R19ETUFURVNUPXkKQ09ORklHX0RNQV9FTkdJTkVfUkFJRD15CgojCiMgRE1BQlVGIG9wdGlv bnMKIwojIENPTkZJR19TWU5DX0ZJTEUgaXMgbm90IHNldAojIENPTkZJR19VRE1BQlVGIGlz IG5vdCBzZXQKQ09ORklHX0RNQUJVRl9NT1ZFX05PVElGWT15CiMgQ09ORklHX0RNQUJVRl9E RUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX0RNQUJVRl9TRUxGVEVTVFMgaXMgbm90IHNldAoj IENPTkZJR19ETUFCVUZfSEVBUFMgaXMgbm90IHNldAojIENPTkZJR19ETUFCVUZfU1lTRlNf U1RBVFMgaXMgbm90IHNldAojIGVuZCBvZiBETUFCVUYgb3B0aW9ucwoKQ09ORklHX1VJTz15 CkNPTkZJR19VSU9fQ0lGPXkKQ09ORklHX1VJT19QRFJWX0dFTklSUT15CiMgQ09ORklHX1VJ T19ETUVNX0dFTklSUSBpcyBub3Qgc2V0CkNPTkZJR19VSU9fQUVDPXkKQ09ORklHX1VJT19T RVJDT1MzPXkKQ09ORklHX1VJT19QQ0lfR0VORVJJQz15CkNPTkZJR19VSU9fTkVUWD15CiMg Q09ORklHX1VJT19NRjYyNCBpcyBub3Qgc2V0CkNPTkZJR19WRklPPXkKQ09ORklHX1ZGSU9f R1JPVVA9eQpDT05GSUdfVkZJT19DT05UQUlORVI9eQpDT05GSUdfVkZJT19JT01NVV9UWVBF MT15CkNPTkZJR19WRklPX05PSU9NTVU9eQpDT05GSUdfVkZJT19WSVJRRkQ9eQpDT05GSUdf VkZJT19ERUJVR0ZTPXkKCiMKIyBWRklPIHN1cHBvcnQgZm9yIFBDSSBkZXZpY2VzCiMKQ09O RklHX1ZGSU9fUENJX0NPUkU9eQpDT05GSUdfVkZJT19QQ0lfTU1BUD15CkNPTkZJR19WRklP X1BDSV9JTlRYPXkKQ09ORklHX1ZGSU9fUENJPXkKQ09ORklHX1ZGSU9fUENJX1ZHQT15CkNP TkZJR19WRklPX1BDSV9JR0Q9eQpDT05GSUdfVklSVElPX1ZGSU9fUENJPXkKIyBlbmQgb2Yg VkZJTyBzdXBwb3J0IGZvciBQQ0kgZGV2aWNlcwoKQ09ORklHX1ZGSU9fTURFVj15CkNPTkZJ R19JUlFfQllQQVNTX01BTkFHRVI9eQojIENPTkZJR19WSVJUX0RSSVZFUlMgaXMgbm90IHNl dApDT05GSUdfVklSVElPX0FOQ0hPUj15CkNPTkZJR19WSVJUSU89eQpDT05GSUdfVklSVElP X1BDSV9MSUI9eQpDT05GSUdfVklSVElPX1BDSV9MSUJfTEVHQUNZPXkKQ09ORklHX1ZJUlRJ T19NRU5VPXkKQ09ORklHX1ZJUlRJT19QQ0k9eQpDT05GSUdfVklSVElPX1BDSV9BRE1JTl9M RUdBQ1k9eQpDT05GSUdfVklSVElPX1BDSV9MRUdBQ1k9eQpDT05GSUdfVklSVElPX0JBTExP T049eQpDT05GSUdfVklSVElPX0lOUFVUPXkKIyBDT05GSUdfVklSVElPX01NSU8gaXMgbm90 IHNldAojIENPTkZJR19WSVJUSU9fREVCVUcgaXMgbm90IHNldAojIENPTkZJR19WSE9TVF9N RU5VIGlzIG5vdCBzZXQKCiMKIyBNaWNyb3NvZnQgSHlwZXItViBndWVzdCBzdXBwb3J0CiMK IyBlbmQgb2YgTWljcm9zb2Z0IEh5cGVyLVYgZ3Vlc3Qgc3VwcG9ydAoKQ09ORklHX0dSRVlC VVM9eQpDT05GSUdfQ09NRURJPXkKQ09ORklHX0NPTUVESV9ERUJVRz15CkNPTkZJR19DT01F RElfREVGQVVMVF9CVUZfU0laRV9LQj0yMDQ4CkNPTkZJR19DT01FRElfREVGQVVMVF9CVUZf TUFYU0laRV9LQj0yMDQ4MAojIENPTkZJR19DT01FRElfTUlTQ19EUklWRVJTIGlzIG5vdCBz ZXQKIyBDT05GSUdfQ09NRURJX1BDSV9EUklWRVJTIGlzIG5vdCBzZXQKIyBDT05GSUdfQ09N RURJX1BDTUNJQV9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX0NPTUVESV84MjU1PXkKQ09O RklHX0NPTUVESV84MjU1X1NBPXkKQ09ORklHX0NPTUVESV9LQ09NRURJTElCPXkKQ09ORklH X0NPTUVESV9OSV9ST1VUSU5HPXkKQ09ORklHX0NPTUVESV9URVNUUz15CiMgQ09ORklHX0NP TUVESV9URVNUU19FWEFNUExFIGlzIG5vdCBzZXQKQ09ORklHX0NPTUVESV9URVNUU19OSV9S T1VURVM9eQpDT05GSUdfU1RBR0lORz15CkNPTkZJR19SVFM1MjA4PXkKCiMKIyBJSU8gc3Rh Z2luZyBkcml2ZXJzCiMKCiMKIyBBY2NlbGVyb21ldGVycwojCiMgZW5kIG9mIEFjY2VsZXJv bWV0ZXJzCgojCiMgQW5hbG9nIHRvIGRpZ2l0YWwgY29udmVydGVycwojCiMgZW5kIG9mIEFu YWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcnMKCiMKIyBBbmFsb2cgZGlnaXRhbCBiaS1kaXJl Y3Rpb24gY29udmVydGVycwojCiMgQ09ORklHX0FEVDczMTYgaXMgbm90IHNldAojIGVuZCBv ZiBBbmFsb2cgZGlnaXRhbCBiaS1kaXJlY3Rpb24gY29udmVydGVycwoKIwojIERpcmVjdCBE aWdpdGFsIFN5bnRoZXNpcwojCiMgZW5kIG9mIERpcmVjdCBEaWdpdGFsIFN5bnRoZXNpcwoK IwojIE5ldHdvcmsgQW5hbHl6ZXIsIEltcGVkYW5jZSBDb252ZXJ0ZXJzCiMKIyBDT05GSUdf QUQ1OTMzIGlzIG5vdCBzZXQKIyBlbmQgb2YgTmV0d29yayBBbmFseXplciwgSW1wZWRhbmNl IENvbnZlcnRlcnMKIyBlbmQgb2YgSUlPIHN0YWdpbmcgZHJpdmVycwoKQ09ORklHX0ZCX1NN NzUwPXkKIyBDT05GSUdfU1RBR0lOR19NRURJQSBpcyBub3Qgc2V0CkNPTkZJR19HUkVZQlVT X0FVRElPPXkKQ09ORklHX0dSRVlCVVNfQVVESU9fQVBCX0NPREVDPXkKQ09ORklHX0dSRVlC VVNfQk9PVFJPTT15CkNPTkZJR19HUkVZQlVTX0xJR0hUPXkKIyBDT05GSUdfR1JFWUJVU19M T0cgaXMgbm90IHNldAojIENPTkZJR19HUkVZQlVTX0xPT1BCQUNLIGlzIG5vdCBzZXQKIyBD T05GSUdfR1JFWUJVU19QT1dFUiBpcyBub3Qgc2V0CkNPTkZJR19HUkVZQlVTX1JBVz15CkNP TkZJR19HUkVZQlVTX1ZJQlJBVE9SPXkKQ09ORklHX0dSRVlCVVNfQlJJREdFRF9QSFk9eQpD T05GSUdfR1JFWUJVU19HUElPPXkKQ09ORklHX0dSRVlCVVNfSTJDPXkKIyBDT05GSUdfR1JF WUJVU19TRElPIGlzIG5vdCBzZXQKQ09ORklHX0dSRVlCVVNfVUFSVD15CkNPTkZJR19GSUVM REJVU19ERVY9eQpDT05GSUdfVk1FX0JVUz15CgojCiMgVk1FIEJyaWRnZSBEcml2ZXJzCiMK Q09ORklHX1ZNRV9UU0kxNDg9eQpDT05GSUdfVk1FX0ZBS0U9eQoKIwojIFZNRSBEZXZpY2Ug RHJpdmVycwojCkNPTkZJR19WTUVfVVNFUj15CkNPTkZJR19HT0xERklTSD15CkNPTkZJR19H T0xERklTSF9QSVBFPXkKIyBDT05GSUdfQ0hST01FX1BMQVRGT1JNUyBpcyBub3Qgc2V0CkNP TkZJR19DWk5JQ19QTEFURk9STVM9eQojIENPTkZJR19NRUxMQU5PWF9QTEFURk9STSBpcyBu b3Qgc2V0CkNPTkZJR19TVVJGQUNFX1BMQVRGT1JNUz15CiMgQ09ORklHX1NVUkZBQ0VfM19Q T1dFUl9PUFJFR0lPTiBpcyBub3Qgc2V0CkNPTkZJR19TVVJGQUNFX0dQRT15CiMgQ09ORklH X1NVUkZBQ0VfSE9UUExVRyBpcyBub3Qgc2V0CkNPTkZJR19TVVJGQUNFX1BSTzNfQlVUVE9O PXkKQ09ORklHX1g4Nl9QTEFURk9STV9ERVZJQ0VTPXkKQ09ORklHX0FDUElfV01JPXkKQ09O RklHX1dNSV9CTU9GPXkKQ09ORklHX0hVQVdFSV9XTUk9eQpDT05GSUdfTVhNX1dNST15CiMg Q09ORklHX05WSURJQV9XTUlfRUNfQkFDS0xJR0hUIGlzIG5vdCBzZXQKQ09ORklHX1hJQU9N SV9XTUk9eQpDT05GSUdfR0lHQUJZVEVfV01JPXkKIyBDT05GSUdfWU9HQUJPT0sgaXMgbm90 IHNldApDT05GSUdfQUNFUkhERj15CkNPTkZJR19BQ0VSX1dJUkVMRVNTPXkKIyBDT05GSUdf QU1EX1dCUkYgaXMgbm90IHNldAojIENPTkZJR19BRFZfU1dCVVRUT04gaXMgbm90IHNldAoj IENPTkZJR19BUFBMRV9HTVVYIGlzIG5vdCBzZXQKIyBDT05GSUdfQVNVU19MQVBUT1AgaXMg bm90IHNldAojIENPTkZJR19BU1VTX1dJUkVMRVNTIGlzIG5vdCBzZXQKIyBDT05GSUdfTUVS QUtJX01YMTAwIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9QTEFURk9STV9EUklWRVJTX0RFTEw9 eQojIENPTkZJR19BTElFTldBUkVfV01JIGlzIG5vdCBzZXQKQ09ORklHX0RDREJBUz15CiMg Q09ORklHX0RFTExfUkJVIGlzIG5vdCBzZXQKIyBDT05GSUdfREVMTF9TTUJJT1MgaXMgbm90 IHNldAojIENPTkZJR19ERUxMX1NNTzg4MDAgaXMgbm90IHNldApDT05GSUdfREVMTF9XTUlf QUlPPXkKQ09ORklHX0RFTExfV01JX0REVj15CiMgQ09ORklHX0RFTExfV01JX0xFRCBpcyBu b3Qgc2V0CkNPTkZJR19ERUxMX1dNSV9TWVNNQU49eQpDT05GSUdfRlVKSVRTVV9MQVBUT1A9 eQpDT05GSUdfRlVKSVRTVV9UQUJMRVQ9eQojIENPTkZJR19HUERfUE9DS0VUX0ZBTiBpcyBu b3Qgc2V0CkNPTkZJR19YODZfUExBVEZPUk1fRFJJVkVSU19IUD15CkNPTkZJR19IUF9XTUk9 eQpDT05GSUdfVEMxMTAwX1dNST15CkNPTkZJR19IUF9CSU9TQ0ZHPXkKQ09ORklHX1dJUkVM RVNTX0hPVEtFWT15CkNPTkZJR19JQk1fUlRMPXkKIyBDT05GSUdfTEVOT1ZPX1lNQyBpcyBu b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0hEQVBTPXkKQ09ORklHX1RISU5LUEFEX0xNST15CkNP TkZJR19JTlRFTF9BVE9NSVNQMl9QRFg4Nj15CkNPTkZJR19JTlRFTF9BVE9NSVNQMl9MRUQ9 eQojIENPTkZJR19JTlRFTF9TQVJfSU5UMTA5MiBpcyBub3Qgc2V0CkNPTkZJR19JTlRFTF9T S0xfSU5UMzQ3Mj15CkNPTkZJR19JTlRFTF9QTUNfQ09SRT15CkNPTkZJR19JTlRFTF9QTVRf Q0xBU1M9eQpDT05GSUdfSU5URUxfUE1UX1RFTEVNRVRSWT15CiMgQ09ORklHX0lOVEVMX1BN VF9DUkFTSExPRyBpcyBub3Qgc2V0CkNPTkZJR19JTlRFTF9XTUk9eQpDT05GSUdfSU5URUxf V01JX1NCTF9GV19VUERBVEU9eQpDT05GSUdfSU5URUxfV01JX1RIVU5ERVJCT0xUPXkKIyBD T05GSUdfSU5URUxfSElEX0VWRU5UIGlzIG5vdCBzZXQKQ09ORklHX0lOVEVMX1ZCVE49eQpD T05GSUdfSU5URUxfQlhUV0NfUE1JQ19UTVU9eQpDT05GSUdfSU5URUxfTVJGTERfUFdSQlRO PXkKQ09ORklHX0lOVEVMX1BVTklUX0lQQz15CkNPTkZJR19JTlRFTF9SU1Q9eQpDT05GSUdf SU5URUxfU01BUlRDT05ORUNUPXkKQ09ORklHX0lOVEVMX1ZTRUM9eQojIENPTkZJR19BQ1BJ X1FVSUNLU1RBUlQgaXMgbm90IHNldAojIENPTkZJR19NRUVHT1BBRF9BTlg3NDI4IGlzIG5v dCBzZXQKQ09ORklHX01TSV9FQz15CkNPTkZJR19NU0lfV01JPXkKQ09ORklHX01TSV9XTUlf UExBVEZPUk09eQpDT05GSUdfUENFTkdJTkVTX0FQVTI9eQojIENPTkZJR19CQVJDT19QNTBf R1BJTyBpcyBub3Qgc2V0CkNPTkZJR19TQU1TVU5HX0xBUFRPUD15CkNPTkZJR19TQU1TVU5H X1ExMD15CiMgQ09ORklHX0FDUElfVE9TSElCQSBpcyBub3Qgc2V0CiMgQ09ORklHX1RPU0hJ QkFfQlRfUkZLSUxMIGlzIG5vdCBzZXQKQ09ORklHX1RPU0hJQkFfSEFQUz15CkNPTkZJR19U T1NISUJBX1dNST15CkNPTkZJR19BQ1BJX0NNUEM9eQpDT05GSUdfTEdfTEFQVE9QPXkKQ09O RklHX1BBTkFTT05JQ19MQVBUT1A9eQpDT05GSUdfU1lTVEVNNzZfQUNQST15CiMgQ09ORklH X1RPUFNUQVJfTEFQVE9QIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX01VTFRJX0lOU1RB TlRJQVRFIGlzIG5vdCBzZXQKQ09ORklHX01MWF9QTEFURk9STT15CkNPTkZJR19JTlNQVVJf UExBVEZPUk1fUFJPRklMRT15CiMgQ09ORklHX0xFTk9WT19XTUlfQ0FNRVJBIGlzIG5vdCBz ZXQKQ09ORklHX0ZXX0FUVFJfQ0xBU1M9eQpDT05GSUdfSU5URUxfSVBTPXkKQ09ORklHX0lO VEVMX1NDVV9JUEM9eQpDT05GSUdfSU5URUxfU0NVPXkKQ09ORklHX0lOVEVMX1NDVV9QQ0k9 eQpDT05GSUdfSU5URUxfU0NVX1BMQVRGT1JNPXkKQ09ORklHX0lOVEVMX1NDVV9JUENfVVRJ TD15CkNPTkZJR19TSUVNRU5TX1NJTUFUSUNfSVBDPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJ Q19JUENfQkFUVD15CkNPTkZJR19TSUVNRU5TX1NJTUFUSUNfSVBDX0JBVFRfQVBPTExPTEFL RT15CiMgQ09ORklHX1dJTk1BVEVfRk0wN19LRVlTIGlzIG5vdCBzZXQKQ09ORklHX1NFTDMz NTBfUExBVEZPUk09eQpDT05GSUdfUDJTQj15CkNPTkZJR19IQVZFX0NMSz15CkNPTkZJR19I QVZFX0NMS19QUkVQQVJFPXkKQ09ORklHX0NPTU1PTl9DTEs9eQpDT05GSUdfQ09NTU9OX0NM S19NQVg5NDg1PXkKQ09ORklHX0NPTU1PTl9DTEtfU0k1MzQxPXkKIyBDT05GSUdfQ09NTU9O X0NMS19TSTUzNTEgaXMgbm90IHNldApDT05GSUdfQ09NTU9OX0NMS19TSTU0ND15CkNPTkZJ R19DT01NT05fQ0xLX0NEQ0U3MDY9eQojIENPTkZJR19DT01NT05fQ0xLX1RQUzY4NDcwIGlz IG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQ1MyMDAwX0NQPXkKQ09ORklHX0NMS19UV0w9 eQpDT05GSUdfQ0xLX1RXTDYwNDA9eQojIENPTkZJR19DT01NT05fQ0xLX1BBTE1BUyBpcyBu b3Qgc2V0CkNPTkZJR19YSUxJTlhfVkNVPXkKQ09ORklHX0NMS19LVU5JVF9URVNUPXkKQ09O RklHX0NMS19HQVRFX0tVTklUX1RFU1Q9eQpDT05GSUdfQ0xLX0ZEX0tVTklUX1RFU1Q9eQoj IENPTkZJR19IV1NQSU5MT0NLIGlzIG5vdCBzZXQKCiMKIyBDbG9jayBTb3VyY2UgZHJpdmVy cwojCkNPTkZJR19DTEtTUkNfSTgyNTM9eQpDT05GSUdfQ0xLRVZUX0k4MjUzPXkKQ09ORklH X0k4MjUzX0xPQ0s9eQpDT05GSUdfQ0xLQkxEX0k4MjUzPXkKIyBlbmQgb2YgQ2xvY2sgU291 cmNlIGRyaXZlcnMKCkNPTkZJR19NQUlMQk9YPXkKQ09ORklHX1BDQz15CiMgQ09ORklHX0FM VEVSQV9NQk9YIGlzIG5vdCBzZXQKQ09ORklHX0lPTU1VX0FQST15CiMgQ09ORklHX0lPTU1V X1NVUFBPUlQgaXMgbm90IHNldAoKIwojIFJlbW90ZXByb2MgZHJpdmVycwojCiMgQ09ORklH X1JFTU9URVBST0MgaXMgbm90IHNldAojIGVuZCBvZiBSZW1vdGVwcm9jIGRyaXZlcnMKCiMK IyBScG1zZyBkcml2ZXJzCiMKQ09ORklHX1JQTVNHPXkKQ09ORklHX1JQTVNHX0NUUkw9eQpD T05GSUdfUlBNU0dfTlM9eQpDT05GSUdfUlBNU0dfUUNPTV9HTElOSz15CkNPTkZJR19SUE1T R19RQ09NX0dMSU5LX1JQTT15CkNPTkZJR19SUE1TR19WSVJUSU89eQojIGVuZCBvZiBScG1z ZyBkcml2ZXJzCgpDT05GSUdfU09VTkRXSVJFPXkKCiMKIyBTb3VuZFdpcmUgRGV2aWNlcwoj CkNPTkZJR19TT1VORFdJUkVfQU1EPXkKQ09ORklHX1NPVU5EV0lSRV9DQURFTkNFPXkKQ09O RklHX1NPVU5EV0lSRV9JTlRFTD15CkNPTkZJR19TT1VORFdJUkVfUUNPTT15CkNPTkZJR19T T1VORFdJUkVfR0VORVJJQ19BTExPQ0FUSU9OPXkKCiMKIyBTT0MgKFN5c3RlbSBPbiBDaGlw KSBzcGVjaWZpYyBEcml2ZXJzCiMKCiMKIyBBbWxvZ2ljIFNvQyBkcml2ZXJzCiMKIyBlbmQg b2YgQW1sb2dpYyBTb0MgZHJpdmVycwoKIwojIEJyb2FkY29tIFNvQyBkcml2ZXJzCiMKIyBl bmQgb2YgQnJvYWRjb20gU29DIGRyaXZlcnMKCiMKIyBOWFAvRnJlZXNjYWxlIFFvcklRIFNv QyBkcml2ZXJzCiMKIyBlbmQgb2YgTlhQL0ZyZWVzY2FsZSBRb3JJUSBTb0MgZHJpdmVycwoK IwojIGZ1aml0c3UgU29DIGRyaXZlcnMKIwojIGVuZCBvZiBmdWppdHN1IFNvQyBkcml2ZXJz CgojCiMgaS5NWCBTb0MgZHJpdmVycwojCiMgZW5kIG9mIGkuTVggU29DIGRyaXZlcnMKCiMK IyBFbmFibGUgTGl0ZVggU29DIEJ1aWxkZXIgc3BlY2lmaWMgZHJpdmVycwojCiMgZW5kIG9m IEVuYWJsZSBMaXRlWCBTb0MgQnVpbGRlciBzcGVjaWZpYyBkcml2ZXJzCgpDT05GSUdfV1BD TTQ1MF9TT0M9eQoKIwojIFF1YWxjb21tIFNvQyBkcml2ZXJzCiMKQ09ORklHX1FDT01fUEJT PXkKIyBlbmQgb2YgUXVhbGNvbW0gU29DIGRyaXZlcnMKCiMgQ09ORklHX1NPQ19USSBpcyBu b3Qgc2V0CgojCiMgWGlsaW54IFNvQyBkcml2ZXJzCiMKIyBlbmQgb2YgWGlsaW54IFNvQyBk cml2ZXJzCiMgZW5kIG9mIFNPQyAoU3lzdGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMK CiMKIyBQTSBEb21haW5zCiMKCiMKIyBBbWxvZ2ljIFBNIERvbWFpbnMKIwojIGVuZCBvZiBB bWxvZ2ljIFBNIERvbWFpbnMKCiMKIyBCcm9hZGNvbSBQTSBEb21haW5zCiMKIyBlbmQgb2Yg QnJvYWRjb20gUE0gRG9tYWlucwoKIwojIGkuTVggUE0gRG9tYWlucwojCiMgZW5kIG9mIGku TVggUE0gRG9tYWlucwoKIwojIFF1YWxjb21tIFBNIERvbWFpbnMKIwojIGVuZCBvZiBRdWFs Y29tbSBQTSBEb21haW5zCiMgZW5kIG9mIFBNIERvbWFpbnMKCiMgQ09ORklHX1BNX0RFVkZS RVEgaXMgbm90IHNldApDT05GSUdfRVhUQ09OPXkKCiMKIyBFeHRjb24gRGV2aWNlIERyaXZl cnMKIwpDT05GSUdfRVhUQ09OX0FEQ19KQUNLPXkKIyBDT05GSUdfRVhUQ09OX0ZTQTk0ODAg aXMgbm90IHNldAojIENPTkZJR19FWFRDT05fR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19FWFRD T05fSU5URUxfSU5UMzQ5Nj15CiMgQ09ORklHX0VYVENPTl9JTlRFTF9NUkZMRCBpcyBub3Qg c2V0CiMgQ09ORklHX0VYVENPTl9MQzgyNDIwNlhBIGlzIG5vdCBzZXQKQ09ORklHX0VYVENP Tl9NQVgxNDU3Nz15CiMgQ09ORklHX0VYVENPTl9NQVgzMzU1IGlzIG5vdCBzZXQKQ09ORklH X0VYVENPTl9NQVg3NzY5Mz15CkNPTkZJR19FWFRDT05fTUFYODk5Nz15CkNPTkZJR19FWFRD T05fUEFMTUFTPXkKIyBDT05GSUdfRVhUQ09OX1BUTjUxNTAgaXMgbm90IHNldApDT05GSUdf RVhUQ09OX1JUODk3M0E9eQojIENPTkZJR19FWFRDT05fU001NTAyIGlzIG5vdCBzZXQKIyBD T05GSUdfRVhUQ09OX1VTQl9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTUVNT1JZIGlzIG5v dCBzZXQKQ09ORklHX0lJTz15CkNPTkZJR19JSU9fQlVGRkVSPXkKQ09ORklHX0lJT19CVUZG RVJfQ0I9eQpDT05GSUdfSUlPX0JVRkZFUl9ETUE9eQpDT05GSUdfSUlPX0JVRkZFUl9ETUFF TkdJTkU9eQojIENPTkZJR19JSU9fQlVGRkVSX0hXX0NPTlNVTUVSIGlzIG5vdCBzZXQKQ09O RklHX0lJT19LRklGT19CVUY9eQpDT05GSUdfSUlPX1RSSUdHRVJFRF9CVUZGRVI9eQpDT05G SUdfSUlPX0NPTkZJR0ZTPXkKQ09ORklHX0lJT19HVFNfSEVMUEVSPXkKQ09ORklHX0lJT19U UklHR0VSPXkKQ09ORklHX0lJT19DT05TVU1FUlNfUEVSX1RSSUdHRVI9MgpDT05GSUdfSUlP X1NXX0RFVklDRT15CkNPTkZJR19JSU9fU1dfVFJJR0dFUj15CkNPTkZJR19JSU9fVFJJR0dF UkVEX0VWRU5UPXkKCiMKIyBBY2NlbGVyb21ldGVycwojCkNPTkZJR19BRFhMMzEzPXkKQ09O RklHX0FEWEwzMTNfSTJDPXkKQ09ORklHX0FEWEwzNDU9eQpDT05GSUdfQURYTDM0NV9JMkM9 eQpDT05GSUdfQURYTDM1NT15CkNPTkZJR19BRFhMMzU1X0kyQz15CiMgQ09ORklHX0FEWEwz NjdfSTJDIGlzIG5vdCBzZXQKQ09ORklHX0FEWEwzNzI9eQpDT05GSUdfQURYTDM3Ml9JMkM9 eQpDT05GSUdfQk1BMTgwPXkKQ09ORklHX0JNQTQwMD15CkNPTkZJR19CTUE0MDBfSTJDPXkK Q09ORklHX0JNQzE1MF9BQ0NFTD15CkNPTkZJR19CTUMxNTBfQUNDRUxfSTJDPXkKIyBDT05G SUdfQk1JMDg4X0FDQ0VMIGlzIG5vdCBzZXQKQ09ORklHX0RBMjgwPXkKIyBDT05GSUdfREEz MTEgaXMgbm90IHNldAojIENPTkZJR19ETUFSRDA2IGlzIG5vdCBzZXQKQ09ORklHX0RNQVJE MDk9eQojIENPTkZJR19ETUFSRDEwIGlzIG5vdCBzZXQKQ09ORklHX0ZYTFM4OTYyQUY9eQpD T05GSUdfRlhMUzg5NjJBRl9JMkM9eQpDT05GSUdfSUlPX1NUX0FDQ0VMXzNBWElTPXkKIyBD T05GSUdfSUlPX1NUX0FDQ0VMX0kyQ18zQVhJUyBpcyBub3Qgc2V0CkNPTkZJR19JSU9fS1gw MjJBPXkKQ09ORklHX0lJT19LWDAyMkFfSTJDPXkKIyBDT05GSUdfS1hTRDkgaXMgbm90IHNl dAojIENPTkZJR19LWENKSzEwMTMgaXMgbm90IHNldAojIENPTkZJR19NQzMyMzAgaXMgbm90 IHNldApDT05GSUdfTU1BNzQ1NT15CkNPTkZJR19NTUE3NDU1X0kyQz15CkNPTkZJR19NTUE3 NjYwPXkKQ09ORklHX01NQTg0NTI9eQpDT05GSUdfTU1BOTU1MV9DT1JFPXkKQ09ORklHX01N QTk1NTE9eQpDT05GSUdfTU1BOTU1Mz15CkNPTkZJR19NU0EzMTE9eQpDT05GSUdfTVhDNDAw NT15CiMgQ09ORklHX01YQzYyNTUgaXMgbm90IHNldApDT05GSUdfU1RLODMxMj15CkNPTkZJ R19TVEs4QkE1MD15CiMgZW5kIG9mIEFjY2VsZXJvbWV0ZXJzCgojCiMgQW5hbG9nIHRvIGRp Z2l0YWwgY29udmVydGVycwojCiMgQ09ORklHX0FENzA5MVI1IGlzIG5vdCBzZXQKIyBDT05G SUdfQUQ3MjkxIGlzIG5vdCBzZXQKIyBDT05GSUdfQUQ3NjA2X0lGQUNFX1BBUkFMTEVMIGlz IG5vdCBzZXQKIyBDT05GSUdfQUQ3OTlYIGlzIG5vdCBzZXQKQ09ORklHX0FYUDIwWF9BREM9 eQpDT05GSUdfQVhQMjg4X0FEQz15CkNPTkZJR19DQzEwMDAxX0FEQz15CiMgQ09ORklHX0RB OTE1MF9HUEFEQyBpcyBub3Qgc2V0CkNPTkZJR19FTlZFTE9QRV9ERVRFQ1RPUj15CkNPTkZJ R19IWDcxMT15CkNPTkZJR19JTlRFTF9NUkZMRF9BREM9eQpDT05GSUdfTFRDMjMwOT15CkNP TkZJR19MVEMyNDcxPXkKIyBDT05GSUdfTFRDMjQ4NSBpcyBub3Qgc2V0CkNPTkZJR19MVEMy NDk3PXkKQ09ORklHX01BWDEzNjM9eQpDT05GSUdfTUFYMzQ0MDg9eQpDT05GSUdfTUFYOTYx MT15CkNPTkZJR19NQ1AzNDIyPXkKQ09ORklHX01FRElBVEVLX01UNjM1OV9BVVhBREM9eQpD T05GSUdfTUVESUFURUtfTVQ2MzYwX0FEQz15CkNPTkZJR19NRURJQVRFS19NVDYzNzBfQURD PXkKQ09ORklHX01FTl9aMTg4X0FEQz15CkNPTkZJR19NUDI2MjlfQURDPXkKQ09ORklHX05B VTc4MDI9eQpDT05GSUdfUEFDMTkzND15CkNPTkZJR19QQUxNQVNfR1BBREM9eQpDT05GSUdf UUNPTV9WQURDX0NPTU1PTj15CkNPTkZJR19RQ09NX1NQTUlfSUFEQz15CkNPTkZJR19RQ09N X1NQTUlfVkFEQz15CkNPTkZJR19RQ09NX1NQTUlfQURDNT15CiMgQ09ORklHX1JJQ0hURUtf UlRRNjA1NiBpcyBub3Qgc2V0CkNPTkZJR19TRF9BRENfTU9EVUxBVE9SPXkKIyBDT05GSUdf VElfQURDMDgxQyBpcyBub3Qgc2V0CiMgQ09ORklHX1RJX0FEUzEwMTUgaXMgbm90IHNldApD T05GSUdfVElfQURTMTExOT15CiMgQ09ORklHX1RJX0FEUzc5MjQgaXMgbm90IHNldAojIENP TkZJR19USV9BRFMxMTAwIGlzIG5vdCBzZXQKQ09ORklHX1RXTDQwMzBfTUFEQz15CiMgQ09O RklHX1RXTDYwMzBfR1BBREMgaXMgbm90IHNldApDT05GSUdfVkY2MTBfQURDPXkKIyBDT05G SUdfWElMSU5YX1hBREMgaXMgbm90IHNldAojIGVuZCBvZiBBbmFsb2cgdG8gZGlnaXRhbCBj b252ZXJ0ZXJzCgojCiMgQW5hbG9nIHRvIGRpZ2l0YWwgYW5kIGRpZ2l0YWwgdG8gYW5hbG9n IGNvbnZlcnRlcnMKIwojIGVuZCBvZiBBbmFsb2cgdG8gZGlnaXRhbCBhbmQgZGlnaXRhbCB0 byBhbmFsb2cgY29udmVydGVycwoKIwojIEFuYWxvZyBGcm9udCBFbmRzCiMKQ09ORklHX0lJ T19SRVNDQUxFPXkKIyBlbmQgb2YgQW5hbG9nIEZyb250IEVuZHMKCiMKIyBBbXBsaWZpZXJz CiMKQ09ORklHX0hNQzQyNT15CiMgZW5kIG9mIEFtcGxpZmllcnMKCiMKIyBDYXBhY2l0YW5j ZSB0byBkaWdpdGFsIGNvbnZlcnRlcnMKIwojIENPTkZJR19BRDcxNTAgaXMgbm90IHNldApD T05GSUdfQUQ3NzQ2PXkKIyBlbmQgb2YgQ2FwYWNpdGFuY2UgdG8gZGlnaXRhbCBjb252ZXJ0 ZXJzCgojCiMgQ2hlbWljYWwgU2Vuc29ycwojCiMgQ09ORklHX0FPU09OR19BR1MwMk1BIGlz IG5vdCBzZXQKQ09ORklHX0FUTEFTX1BIX1NFTlNPUj15CkNPTkZJR19BVExBU19FWk9fU0VO U09SPXkKQ09ORklHX0JNRTY4MD15CkNPTkZJR19CTUU2ODBfSTJDPXkKQ09ORklHX0NDUzgx MT15CkNPTkZJR19FTlMxNjA9eQpDT05GSUdfRU5TMTYwX0kyQz15CkNPTkZJR19JQVFDT1JF PXkKIyBDT05GSUdfU0NEMzBfQ09SRSBpcyBub3Qgc2V0CkNPTkZJR19TQ0Q0WD15CkNPTkZJ R19TRU5TSVJJT05fU0dQMzA9eQojIENPTkZJR19TRU5TSVJJT05fU0dQNDAgaXMgbm90IHNl dAojIENPTkZJR19TUFMzMF9JMkMgaXMgbm90IHNldApDT05GSUdfU0VOU0VBSVJfU1VOUklT RV9DTzI9eQojIENPTkZJR19WWjg5WCBpcyBub3Qgc2V0CiMgZW5kIG9mIENoZW1pY2FsIFNl bnNvcnMKCiMKIyBIaWQgU2Vuc29yIElJTyBDb21tb24KIwojIGVuZCBvZiBIaWQgU2Vuc29y IElJTyBDb21tb24KCkNPTkZJR19JSU9fSU5WX1NFTlNPUlNfVElNRVNUQU1QPXkKQ09ORklH X0lJT19NU19TRU5TT1JTX0kyQz15CgojCiMgSUlPIFNDTUkgU2Vuc29ycwojCiMgZW5kIG9m IElJTyBTQ01JIFNlbnNvcnMKCiMKIyBTU1AgU2Vuc29yIENvbW1vbgojCiMgZW5kIG9mIFNT UCBTZW5zb3IgQ29tbW9uCgpDT05GSUdfSUlPX1NUX1NFTlNPUlNfSTJDPXkKQ09ORklHX0lJ T19TVF9TRU5TT1JTX0NPUkU9eQoKIwojIERpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcnMK IwpDT05GSUdfQUQ1MDY0PXkKIyBDT05GSUdfQUQ1MzgwIGlzIG5vdCBzZXQKIyBDT05GSUdf QUQ1NDQ2IGlzIG5vdCBzZXQKQ09ORklHX0FENTU5MlJfQkFTRT15CkNPTkZJR19BRDU1OTNS PXkKIyBDT05GSUdfQUQ1Njk2X0kyQyBpcyBub3Qgc2V0CkNPTkZJR19EUE9UX0RBQz15CiMg Q09ORklHX0RTNDQyNCBpcyBub3Qgc2V0CkNPTkZJR19NNjIzMzI9eQpDT05GSUdfTUFYNTE3 PXkKQ09ORklHX01BWDU4MjE9eQpDT05GSUdfTUNQNDcyNT15CiMgQ09ORklHX01DUDQ3Mjgg aXMgbm90IHNldAojIENPTkZJR19USV9EQUM1NTcxIGlzIG5vdCBzZXQKQ09ORklHX1ZGNjEw X0RBQz15CiMgZW5kIG9mIERpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcnMKCiMKIyBJSU8g ZHVtbXkgZHJpdmVyCiMKIyBDT05GSUdfSUlPX1NJTVBMRV9EVU1NWSBpcyBub3Qgc2V0CiMg ZW5kIG9mIElJTyBkdW1teSBkcml2ZXIKCiMKIyBGaWx0ZXJzCiMKIyBlbmQgb2YgRmlsdGVy cwoKIwojIEZyZXF1ZW5jeSBTeW50aGVzaXplcnMgRERTL1BMTAojCgojCiMgQ2xvY2sgR2Vu ZXJhdG9yL0Rpc3RyaWJ1dGlvbgojCiMgZW5kIG9mIENsb2NrIEdlbmVyYXRvci9EaXN0cmli dXRpb24KCiMKIyBQaGFzZS1Mb2NrZWQgTG9vcCAoUExMKSBmcmVxdWVuY3kgc3ludGhlc2l6 ZXJzCiMKQ09ORklHX0FETUZNMjAwMD15CiMgZW5kIG9mIFBoYXNlLUxvY2tlZCBMb29wIChQ TEwpIGZyZXF1ZW5jeSBzeW50aGVzaXplcnMKIyBlbmQgb2YgRnJlcXVlbmN5IFN5bnRoZXNp emVycyBERFMvUExMCgojCiMgRGlnaXRhbCBneXJvc2NvcGUgc2Vuc29ycwojCkNPTkZJR19C TUcxNjA9eQpDT05GSUdfQk1HMTYwX0kyQz15CkNPTkZJR19GWEFTMjEwMDJDPXkKQ09ORklH X0ZYQVMyMTAwMkNfSTJDPXkKIyBDT05GSUdfTVBVMzA1MF9JMkMgaXMgbm90IHNldAojIENP TkZJR19JSU9fU1RfR1lST18zQVhJUyBpcyBub3Qgc2V0CiMgQ09ORklHX0lURzMyMDAgaXMg bm90IHNldAojIGVuZCBvZiBEaWdpdGFsIGd5cm9zY29wZSBzZW5zb3JzCgojCiMgSGVhbHRo IFNlbnNvcnMKIwoKIwojIEhlYXJ0IFJhdGUgTW9uaXRvcnMKIwpDT05GSUdfQUZFNDQwND15 CiMgQ09ORklHX01BWDMwMTAwIGlzIG5vdCBzZXQKIyBDT05GSUdfTUFYMzAxMDIgaXMgbm90 IHNldAojIGVuZCBvZiBIZWFydCBSYXRlIE1vbml0b3JzCiMgZW5kIG9mIEhlYWx0aCBTZW5z b3JzCgojCiMgSHVtaWRpdHkgc2Vuc29ycwojCkNPTkZJR19BTTIzMTU9eQpDT05GSUdfREhU MTE9eQpDT05GSUdfSERDMTAwWD15CkNPTkZJR19IREMyMDEwPXkKQ09ORklHX0hEQzMwMjA9 eQpDT05GSUdfSFRTMjIxPXkKQ09ORklHX0hUUzIyMV9JMkM9eQpDT05GSUdfSFRVMjE9eQpD T05GSUdfU0k3MDA1PXkKQ09ORklHX1NJNzAyMD15CiMgZW5kIG9mIEh1bWlkaXR5IHNlbnNv cnMKCiMKIyBJbmVydGlhbCBtZWFzdXJlbWVudCB1bml0cwojCkNPTkZJR19CTUkxNjA9eQpD T05GSUdfQk1JMTYwX0kyQz15CiMgQ09ORklHX0JNSTMyM19JMkMgaXMgbm90IHNldApDT05G SUdfQk9TQ0hfQk5PMDU1PXkKQ09ORklHX0JPU0NIX0JOTzA1NV9JMkM9eQpDT05GSUdfRlhP Uzg3MDA9eQpDT05GSUdfRlhPUzg3MDBfSTJDPXkKQ09ORklHX0tNWDYxPXkKQ09ORklHX0lO Vl9JQ000MjYwMD15CkNPTkZJR19JTlZfSUNNNDI2MDBfSTJDPXkKQ09ORklHX0lOVl9NUFU2 MDUwX0lJTz15CkNPTkZJR19JTlZfTVBVNjA1MF9JMkM9eQojIENPTkZJR19JSU9fU1RfTFNN NkRTWCBpcyBub3Qgc2V0CiMgQ09ORklHX0lJT19TVF9MU005RFMwIGlzIG5vdCBzZXQKIyBl bmQgb2YgSW5lcnRpYWwgbWVhc3VyZW1lbnQgdW5pdHMKCiMKIyBMaWdodCBzZW5zb3JzCiMK Q09ORklHX0FDUElfQUxTPXkKQ09ORklHX0FESkRfUzMxMT15CiMgQ09ORklHX0FEVVgxMDIw IGlzIG5vdCBzZXQKQ09ORklHX0FMMzAxMD15CkNPTkZJR19BTDMzMjBBPXkKQ09ORklHX0FQ RFM5MzAwPXkKIyBDT05GSUdfQVBEUzkzMDYgaXMgbm90IHNldApDT05GSUdfQVBEUzk5NjA9 eQpDT05GSUdfQVM3MzIxMT15CkNPTkZJR19CSDE3NTA9eQpDT05GSUdfQkgxNzgwPXkKIyBD T05GSUdfQ00zMjE4MSBpcyBub3Qgc2V0CkNPTkZJR19DTTMyMzI9eQpDT05GSUdfQ00zMzIz PXkKQ09ORklHX0NNMzYwNT15CiMgQ09ORklHX0NNMzY2NTEgaXMgbm90IHNldApDT05GSUdf R1AyQVAwMDI9eQojIENPTkZJR19HUDJBUDAyMEEwMEYgaXMgbm90IHNldApDT05GSUdfSVFT NjIxX0FMUz15CkNPTkZJR19TRU5TT1JTX0lTTDI5MDE4PXkKQ09ORklHX1NFTlNPUlNfSVNM MjkwMjg9eQpDT05GSUdfSVNMMjkxMjU9eQpDT05GSUdfSVNMNzY2ODI9eQpDT05GSUdfSlNB MTIxMj15CkNPTkZJR19ST0hNX0JVMjcwMDg9eQpDT05GSUdfUk9ITV9CVTI3MDM0PXkKIyBD T05GSUdfUlBSMDUyMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0xNMzUzMz15CkNPTkZJ R19MVFIzOTA9eQojIENPTkZJR19MVFI1MDEgaXMgbm90IHNldApDT05GSUdfTFRSRjIxNkE9 eQpDT05GSUdfTFYwMTA0Q1M9eQpDT05GSUdfTUFYNDQwMDA9eQpDT05GSUdfTUFYNDQwMDk9 eQojIENPTkZJR19OT0ExMzA1IGlzIG5vdCBzZXQKQ09ORklHX09QVDMwMDE9eQpDT05GSUdf T1BUNDAwMT15CkNPTkZJR19QQTEyMjAzMDAxPXkKQ09ORklHX1NJMTEzMz15CiMgQ09ORklH X1NJMTE0NSBpcyBub3Qgc2V0CkNPTkZJR19TVEszMzEwPXkKQ09ORklHX1NUX1VWSVMyNT15 CkNPTkZJR19TVF9VVklTMjVfSTJDPXkKIyBDT05GSUdfVENTMzQxNCBpcyBub3Qgc2V0CkNP TkZJR19UQ1MzNDcyPXkKQ09ORklHX1NFTlNPUlNfVFNMMjU2Mz15CkNPTkZJR19UU0wyNTgz PXkKQ09ORklHX1RTTDI1OTE9eQojIENPTkZJR19UU0wyNzcyIGlzIG5vdCBzZXQKIyBDT05G SUdfVFNMNDUzMSBpcyBub3Qgc2V0CkNPTkZJR19VUzUxODJEPXkKIyBDT05GSUdfVkNOTDQw MDAgaXMgbm90IHNldAojIENPTkZJR19WQ05MNDAzNSBpcyBub3Qgc2V0CkNPTkZJR19WRU1M NjAzMD15CkNPTkZJR19WRU1MNjA0MD15CkNPTkZJR19WRU1MNjA3MD15CiMgQ09ORklHX1ZF TUw2MDc1IGlzIG5vdCBzZXQKIyBDT05GSUdfVkw2MTgwIGlzIG5vdCBzZXQKIyBDT05GSUdf Wk9QVDIyMDEgaXMgbm90IHNldAojIGVuZCBvZiBMaWdodCBzZW5zb3JzCgojCiMgTWFnbmV0 b21ldGVyIHNlbnNvcnMKIwpDT05GSUdfQUs4OTc0PXkKIyBDT05GSUdfQUs4OTc1IGlzIG5v dCBzZXQKIyBDT05GSUdfQUswOTkxMSBpcyBub3Qgc2V0CkNPTkZJR19CTUMxNTBfTUFHTj15 CkNPTkZJR19CTUMxNTBfTUFHTl9JMkM9eQojIENPTkZJR19NQUczMTEwIGlzIG5vdCBzZXQK Q09ORklHX01NQzM1MjQwPXkKQ09ORklHX0lJT19TVF9NQUdOXzNBWElTPXkKQ09ORklHX0lJ T19TVF9NQUdOX0kyQ18zQVhJUz15CkNPTkZJR19TRU5TT1JTX0hNQzU4NDM9eQpDT05GSUdf U0VOU09SU19ITUM1ODQzX0kyQz15CiMgQ09ORklHX1NFTlNPUlNfUk0zMTAwX0kyQyBpcyBu b3Qgc2V0CkNPTkZJR19USV9UTUFHNTI3Mz15CiMgQ09ORklHX1lBTUFIQV9ZQVM1MzAgaXMg bm90IHNldAojIGVuZCBvZiBNYWduZXRvbWV0ZXIgc2Vuc29ycwoKIwojIE11bHRpcGxleGVy cwojCkNPTkZJR19JSU9fTVVYPXkKIyBlbmQgb2YgTXVsdGlwbGV4ZXJzCgojCiMgSW5jbGlu b21ldGVyIHNlbnNvcnMKIwojIGVuZCBvZiBJbmNsaW5vbWV0ZXIgc2Vuc29ycwoKIyBDT05G SUdfSUlPX0dUU19LVU5JVF9URVNUIGlzIG5vdCBzZXQKQ09ORklHX0lJT19SRVNDQUxFX0tV TklUX1RFU1Q9eQojIENPTkZJR19JSU9fRk9STUFUX0tVTklUX1RFU1QgaXMgbm90IHNldAoK IwojIFRyaWdnZXJzIC0gc3RhbmRhbG9uZQojCiMgQ09ORklHX0lJT19IUlRJTUVSX1RSSUdH RVIgaXMgbm90IHNldApDT05GSUdfSUlPX0lOVEVSUlVQVF9UUklHR0VSPXkKQ09ORklHX0lJ T19USUdIVExPT1BfVFJJR0dFUj15CkNPTkZJR19JSU9fU1lTRlNfVFJJR0dFUj15CiMgZW5k IG9mIFRyaWdnZXJzIC0gc3RhbmRhbG9uZQoKIwojIExpbmVhciBhbmQgYW5ndWxhciBwb3Np dGlvbiBzZW5zb3JzCiMKIyBDT05GSUdfSVFTNjI0X1BPUyBpcyBub3Qgc2V0CiMgZW5kIG9m IExpbmVhciBhbmQgYW5ndWxhciBwb3NpdGlvbiBzZW5zb3JzCgojCiMgRGlnaXRhbCBwb3Rl bnRpb21ldGVycwojCkNPTkZJR19BRDUxMTA9eQpDT05GSUdfQUQ1MjcyPXkKIyBDT05GSUdf RFMxODAzIGlzIG5vdCBzZXQKQ09ORklHX01BWDU0MzI9eQpDT05GSUdfTUNQNDAxOD15CkNP TkZJR19NQ1A0NTMxPXkKQ09ORklHX1RQTDAxMDI9eQojIGVuZCBvZiBEaWdpdGFsIHBvdGVu dGlvbWV0ZXJzCgojCiMgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCiMKIyBDT05GSUdfTE1QOTEw MDAgaXMgbm90IHNldAojIGVuZCBvZiBEaWdpdGFsIHBvdGVudGlvc3RhdHMKCiMKIyBQcmVz c3VyZSBzZW5zb3JzCiMKIyBDT05GSUdfQUJQMDYwTUcgaXMgbm90IHNldAojIENPTkZJR19S T0hNX0JNMTM5MCBpcyBub3Qgc2V0CkNPTkZJR19CTVAyODA9eQpDT05GSUdfQk1QMjgwX0ky Qz15CkNPTkZJR19ETEhMNjBEPXkKQ09ORklHX0RQUzMxMD15CkNPTkZJR19IUDAzPXkKIyBD T05GSUdfSFNDMDMwUEEgaXMgbm90IHNldApDT05GSUdfSUNQMTAxMDA9eQpDT05GSUdfTVBM MTE1PXkKQ09ORklHX01QTDExNV9JMkM9eQpDT05GSUdfTVBMMzExNT15CkNPTkZJR19NUFJM UzAwMjVQQT15CkNPTkZJR19NUFJMUzAwMjVQQV9JMkM9eQpDT05GSUdfTVM1NjExPXkKQ09O RklHX01TNTYxMV9JMkM9eQpDT05GSUdfTVM1NjM3PXkKIyBDT05GSUdfSUlPX1NUX1BSRVNT IGlzIG5vdCBzZXQKIyBDT05GSUdfVDU0MDMgaXMgbm90IHNldApDT05GSUdfSFAyMDZDPXkK Q09ORklHX1pQQTIzMjY9eQpDT05GSUdfWlBBMjMyNl9JMkM9eQojIGVuZCBvZiBQcmVzc3Vy ZSBzZW5zb3JzCgojCiMgTGlnaHRuaW5nIHNlbnNvcnMKIwojIGVuZCBvZiBMaWdodG5pbmcg c2Vuc29ycwoKIwojIFByb3hpbWl0eSBhbmQgZGlzdGFuY2Ugc2Vuc29ycwojCiMgQ09ORklH X0lSU0QyMDAgaXMgbm90IHNldAojIENPTkZJR19JU0wyOTUwMSBpcyBub3Qgc2V0CkNPTkZJ R19MSURBUl9MSVRFX1YyPXkKQ09ORklHX01CMTIzMj15CiMgQ09ORklHX1BJTkcgaXMgbm90 IHNldApDT05GSUdfUkZENzc0MDI9eQojIENPTkZJR19TUkYwNCBpcyBub3Qgc2V0CkNPTkZJ R19TWF9DT01NT049eQojIENPTkZJR19TWDkzMTAgaXMgbm90IHNldApDT05GSUdfU1g5MzI0 PXkKQ09ORklHX1NYOTM2MD15CiMgQ09ORklHX1NYOTUwMCBpcyBub3Qgc2V0CiMgQ09ORklH X1NSRjA4IGlzIG5vdCBzZXQKQ09ORklHX1ZDTkwzMDIwPXkKIyBDT05GSUdfVkw1M0wwWF9J MkMgaXMgbm90IHNldAojIGVuZCBvZiBQcm94aW1pdHkgYW5kIGRpc3RhbmNlIHNlbnNvcnMK CiMKIyBSZXNvbHZlciB0byBkaWdpdGFsIGNvbnZlcnRlcnMKIwojIGVuZCBvZiBSZXNvbHZl ciB0byBkaWdpdGFsIGNvbnZlcnRlcnMKCiMKIyBUZW1wZXJhdHVyZSBzZW5zb3JzCiMKQ09O RklHX0lRUzYyMEFUX1RFTVA9eQpDT05GSUdfTUxYOTA2MTQ9eQpDT05GSUdfTUxYOTA2MzI9 eQpDT05GSUdfTUxYOTA2MzU9eQpDT05GSUdfVE1QMDA2PXkKQ09ORklHX1RNUDAwNz15CiMg Q09ORklHX1RNUDExNyBpcyBub3Qgc2V0CkNPTkZJR19UU1lTMDE9eQpDT05GSUdfVFNZUzAy RD15CkNPTkZJR19NQVgzMDIwOD15CkNPTkZJR19NQ1A5NjAwPXkKIyBlbmQgb2YgVGVtcGVy YXR1cmUgc2Vuc29ycwoKQ09ORklHX05UQj15CkNPTkZJR19OVEJfSURUPXkKQ09ORklHX05U Ql9TV0lUQ0hURUM9eQpDT05GSUdfTlRCX1BJTkdQT05HPXkKQ09ORklHX05UQl9UT09MPXkK Q09ORklHX05UQl9QRVJGPXkKQ09ORklHX05UQl9UUkFOU1BPUlQ9eQojIENPTkZJR19QV00g aXMgbm90IHNldAoKIwojIElSUSBjaGlwIHN1cHBvcnQKIwpDT05GSUdfTEFOOTY2WF9PSUM9 eQojIGVuZCBvZiBJUlEgY2hpcCBzdXBwb3J0CgpDT05GSUdfSVBBQ0tfQlVTPXkKQ09ORklH X0JPQVJEX1RQQ0kyMDA9eQpDT05GSUdfU0VSSUFMX0lQT0NUQUw9eQojIENPTkZJR19SRVNF VF9DT05UUk9MTEVSIGlzIG5vdCBzZXQKCiMKIyBQSFkgU3Vic3lzdGVtCiMKQ09ORklHX0dF TkVSSUNfUEhZPXkKQ09ORklHX1BIWV9DQU5fVFJBTlNDRUlWRVI9eQoKIwojIFBIWSBkcml2 ZXJzIGZvciBCcm9hZGNvbSBwbGF0Zm9ybXMKIwojIENPTkZJR19CQ01fS09OQV9VU0IyX1BI WSBpcyBub3Qgc2V0CiMgZW5kIG9mIFBIWSBkcml2ZXJzIGZvciBCcm9hZGNvbSBwbGF0Zm9y bXMKCkNPTkZJR19QSFlfUFhBXzI4Tk1fSFNJQz15CiMgQ09ORklHX1BIWV9QWEFfMjhOTV9V U0IyIGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZX0lOVEVMX0xHTV9FTU1DIGlzIG5vdCBzZXQK IyBlbmQgb2YgUEhZIFN1YnN5c3RlbQoKQ09ORklHX1BPV0VSQ0FQPXkKQ09ORklHX0lOVEVM X1JBUExfQ09SRT15CkNPTkZJR19JTlRFTF9SQVBMPXkKQ09ORklHX0lETEVfSU5KRUNUPXkK Q09ORklHX01DQj15CkNPTkZJR19NQ0JfUENJPXkKQ09ORklHX01DQl9MUEM9eQoKIwojIFBl cmZvcm1hbmNlIG1vbml0b3Igc3VwcG9ydAojCiMgQ09ORklHX0RXQ19QQ0lFX1BNVSBpcyBu b3Qgc2V0CiMgZW5kIG9mIFBlcmZvcm1hbmNlIG1vbml0b3Igc3VwcG9ydAoKIyBDT05GSUdf UkFTIGlzIG5vdCBzZXQKQ09ORklHX1VTQjQ9eQojIENPTkZJR19VU0I0X0RFQlVHRlNfV1JJ VEUgaXMgbm90IHNldAojIENPTkZJR19VU0I0X0tVTklUX1RFU1QgaXMgbm90IHNldApDT05G SUdfVVNCNF9ETUFfVEVTVD15CgojCiMgQW5kcm9pZAojCkNPTkZJR19BTkRST0lEX0JJTkRF Ul9JUEM9eQojIENPTkZJR19BTkRST0lEX0JJTkRFUkZTIGlzIG5vdCBzZXQKQ09ORklHX0FO RFJPSURfQklOREVSX0RFVklDRVM9ImJpbmRlcixod2JpbmRlcix2bmRiaW5kZXIiCiMgQ09O RklHX0FORFJPSURfQklOREVSX0lQQ19TRUxGVEVTVCBpcyBub3Qgc2V0CiMgZW5kIG9mIEFu ZHJvaWQKCkNPTkZJR19EQVg9eQpDT05GSUdfREVWX0RBWD15CkNPTkZJR19OVk1FTT15CkNP TkZJR19OVk1FTV9TWVNGUz15CiMgQ09ORklHX05WTUVNX0xBWU9VVFMgaXMgbm90IHNldApD T05GSUdfTlZNRU1fUk1FTT15CkNPTkZJR19OVk1FTV9TUE1JX1NEQU09eQoKIwojIEhXIHRy YWNpbmcgc3VwcG9ydAojCiMgQ09ORklHX1NUTSBpcyBub3Qgc2V0CkNPTkZJR19JTlRFTF9U SD15CkNPTkZJR19JTlRFTF9USF9QQ0k9eQpDT05GSUdfSU5URUxfVEhfQUNQST15CkNPTkZJ R19JTlRFTF9USF9HVEg9eQpDT05GSUdfSU5URUxfVEhfTVNVPXkKIyBDT05GSUdfSU5URUxf VEhfUFRJIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5URUxfVEhfREVCVUcgaXMgbm90IHNldAoj IGVuZCBvZiBIVyB0cmFjaW5nIHN1cHBvcnQKCiMgQ09ORklHX0ZQR0EgaXMgbm90IHNldApD T05GSUdfVEVFPXkKQ09ORklHX01VTFRJUExFWEVSPXkKCiMKIyBNdWx0aXBsZXhlciBkcml2 ZXJzCiMKQ09ORklHX01VWF9BREc3OTJBPXkKIyBDT05GSUdfTVVYX0dQSU8gaXMgbm90IHNl dAojIGVuZCBvZiBNdWx0aXBsZXhlciBkcml2ZXJzCgpDT05GSUdfU0lPWD15CiMgQ09ORklH X1NJT1hfQlVTX0dQSU8gaXMgbm90IHNldApDT05GSUdfU0xJTUJVUz15CiMgQ09ORklHX1NM SU1fUUNPTV9DVFJMIGlzIG5vdCBzZXQKQ09ORklHX0lOVEVSQ09OTkVDVD15CkNPTkZJR19D T1VOVEVSPXkKQ09ORklHX0lOVEVMX1FFUD15CiMgQ09ORklHX0lOVEVSUlVQVF9DTlQgaXMg bm90IHNldAojIENPTkZJR19NT1NUIGlzIG5vdCBzZXQKQ09ORklHX1BFQ0k9eQpDT05GSUdf UEVDSV9DUFU9eQojIENPTkZJR19IVEUgaXMgbm90IHNldAojIGVuZCBvZiBEZXZpY2UgRHJp dmVycwoKIwojIEZpbGUgc3lzdGVtcwojCkNPTkZJR19EQ0FDSEVfV09SRF9BQ0NFU1M9eQoj IENPTkZJR19WQUxJREFURV9GU19QQVJTRVIgaXMgbm90IHNldApDT05GSUdfRlNfSU9NQVA9 eQpDT05GSUdfRlNfU1RBQ0s9eQpDT05GSUdfQlVGRkVSX0hFQUQ9eQpDT05GSUdfTEVHQUNZ X0RJUkVDVF9JTz15CkNPTkZJR19FWFQyX0ZTPXkKIyBDT05GSUdfRVhUMl9GU19YQVRUUiBp cyBub3Qgc2V0CiMgQ09ORklHX0VYVDNfRlMgaXMgbm90IHNldApDT05GSUdfRVhUNF9GUz15 CkNPTkZJR19FWFQ0X0ZTX1BPU0lYX0FDTD15CiMgQ09ORklHX0VYVDRfRlNfU0VDVVJJVFkg aXMgbm90IHNldAojIENPTkZJR19FWFQ0X0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0VYVDRf S1VOSVRfVEVTVFM9eQpDT05GSUdfSkJEMj15CkNPTkZJR19KQkQyX0RFQlVHPXkKQ09ORklH X0ZTX01CQ0FDSEU9eQpDT05GSUdfUkVJU0VSRlNfRlM9eQojIENPTkZJR19SRUlTRVJGU19D SEVDSyBpcyBub3Qgc2V0CiMgQ09ORklHX1JFSVNFUkZTX1BST0NfSU5GTyBpcyBub3Qgc2V0 CkNPTkZJR19SRUlTRVJGU19GU19YQVRUUj15CkNPTkZJR19SRUlTRVJGU19GU19QT1NJWF9B Q0w9eQpDT05GSUdfUkVJU0VSRlNfRlNfU0VDVVJJVFk9eQojIENPTkZJR19KRlNfRlMgaXMg bm90IHNldApDT05GSUdfWEZTX0ZTPXkKQ09ORklHX1hGU19TVVBQT1JUX1Y0PXkKQ09ORklH X1hGU19TVVBQT1JUX0FTQ0lJX0NJPXkKQ09ORklHX1hGU19RVU9UQT15CkNPTkZJR19YRlNf UE9TSVhfQUNMPXkKIyBDT05GSUdfWEZTX1JUIGlzIG5vdCBzZXQKIyBDT05GSUdfWEZTX09O TElORV9TQ1JVQiBpcyBub3Qgc2V0CkNPTkZJR19YRlNfREVCVUc9eQojIENPTkZJR19YRlNf REVCVUdfRVhQRU5TSVZFIGlzIG5vdCBzZXQKIyBDT05GSUdfWEZTX0FTU0VSVF9GQVRBTCBp cyBub3Qgc2V0CkNPTkZJR19HRlMyX0ZTPXkKIyBDT05GSUdfQlRSRlNfRlMgaXMgbm90IHNl dApDT05GSUdfTklMRlMyX0ZTPXkKIyBDT05GSUdfRjJGU19GUyBpcyBub3Qgc2V0CkNPTkZJ R19CQ0FDSEVGU19GUz15CiMgQ09ORklHX0JDQUNIRUZTX1FVT1RBIGlzIG5vdCBzZXQKIyBD T05GSUdfQkNBQ0hFRlNfRVJBU1VSRV9DT0RJTkcgaXMgbm90IHNldAojIENPTkZJR19CQ0FD SEVGU19QT1NJWF9BQ0wgaXMgbm90IHNldApDT05GSUdfQkNBQ0hFRlNfREVCVUc9eQojIENP TkZJR19CQ0FDSEVGU19URVNUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0JDQUNIRUZTX0xPQ0tf VElNRV9TVEFUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0JDQUNIRUZTX05PX0xBVEVOQ1lfQUND VCBpcyBub3Qgc2V0CiMgQ09ORklHX0JDQUNIRUZTX1NJWF9PUFRJTUlTVElDX1NQSU4gaXMg bm90IHNldApDT05GSUdfTUVBTl9BTkRfVkFSSUFOQ0VfVU5JVF9URVNUPXkKIyBDT05GSUdf Wk9ORUZTX0ZTIGlzIG5vdCBzZXQKQ09ORklHX0ZTX1BPU0lYX0FDTD15CkNPTkZJR19FWFBP UlRGUz15CkNPTkZJR19FWFBPUlRGU19CTE9DS19PUFM9eQpDT05GSUdfRklMRV9MT0NLSU5H PXkKIyBDT05GSUdfRlNfRU5DUllQVElPTiBpcyBub3Qgc2V0CkNPTkZJR19GU19WRVJJVFk9 eQpDT05GSUdfRlNfVkVSSVRZX0JVSUxUSU5fU0lHTkFUVVJFUz15CiMgQ09ORklHX0ROT1RJ RlkgaXMgbm90IHNldAojIENPTkZJR19JTk9USUZZX1VTRVIgaXMgbm90IHNldAojIENPTkZJ R19GQU5PVElGWSBpcyBub3Qgc2V0CkNPTkZJR19RVU9UQT15CkNPTkZJR19RVU9UQV9ERUJV Rz15CkNPTkZJR19RVU9UQV9UUkVFPXkKQ09ORklHX1FGTVRfVjE9eQpDT05GSUdfUUZNVF9W Mj15CkNPTkZJR19RVU9UQUNUTD15CiMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CkNP TkZJR19GVVNFX0ZTPXkKQ09ORklHX0NVU0U9eQpDT05GSUdfVklSVElPX0ZTPXkKQ09ORklH X0ZVU0VfUEFTU1RIUk9VR0g9eQpDT05GSUdfT1ZFUkxBWV9GUz15CkNPTkZJR19PVkVSTEFZ X0ZTX1JFRElSRUNUX0RJUj15CkNPTkZJR19PVkVSTEFZX0ZTX1JFRElSRUNUX0FMV0FZU19G T0xMT1c9eQpDT05GSUdfT1ZFUkxBWV9GU19JTkRFWD15CkNPTkZJR19PVkVSTEFZX0ZTX05G U19FWFBPUlQ9eQojIENPTkZJR19PVkVSTEFZX0ZTX01FVEFDT1BZIGlzIG5vdCBzZXQKIyBD T05GSUdfT1ZFUkxBWV9GU19ERUJVRyBpcyBub3Qgc2V0CgojCiMgQ2FjaGVzCiMKIyBlbmQg b2YgQ2FjaGVzCgojCiMgQ0QtUk9NL0RWRCBGaWxlc3lzdGVtcwojCkNPTkZJR19JU085NjYw X0ZTPXkKQ09ORklHX0pPTElFVD15CiMgQ09ORklHX1pJU09GUyBpcyBub3Qgc2V0CkNPTkZJ R19VREZfRlM9eQojIGVuZCBvZiBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCgojCiMgRE9TL0ZB VC9FWEZBVC9OVCBGaWxlc3lzdGVtcwojCiMgQ09ORklHX01TRE9TX0ZTIGlzIG5vdCBzZXQK IyBDT05GSUdfVkZBVF9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX0VYRkFUX0ZTIGlzIG5vdCBz ZXQKQ09ORklHX05URlMzX0ZTPXkKIyBDT05GSUdfTlRGUzNfTFpYX1hQUkVTUyBpcyBub3Qg c2V0CiMgQ09ORklHX05URlMzX0ZTX1BPU0lYX0FDTCBpcyBub3Qgc2V0CkNPTkZJR19OVEZT X0ZTPXkKIyBlbmQgb2YgRE9TL0ZBVC9FWEZBVC9OVCBGaWxlc3lzdGVtcwoKIwojIFBzZXVk byBmaWxlc3lzdGVtcwojCkNPTkZJR19QUk9DX0ZTPXkKIyBDT05GSUdfUFJPQ19LQ09SRSBp cyBub3Qgc2V0CkNPTkZJR19QUk9DX1NZU0NUTD15CkNPTkZJR19QUk9DX1BBR0VfTU9OSVRP Uj15CiMgQ09ORklHX1BST0NfQ0hJTERSRU4gaXMgbm90IHNldApDT05GSUdfUFJPQ19QSURf QVJDSF9TVEFUVVM9eQpDT05GSUdfS0VSTkZTPXkKQ09ORklHX1NZU0ZTPXkKQ09ORklHX1RN UEZTPXkKIyBDT05GSUdfVE1QRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKQ09ORklHX1RNUEZT X1hBVFRSPXkKQ09ORklHX1RNUEZTX1FVT1RBPXkKQ09ORklHX0hVR0VUTEJGUz15CkNPTkZJ R19IVUdFVExCX1BBR0U9eQpDT05GSUdfQ09ORklHRlNfRlM9eQojIENPTkZJR19FRklWQVJf RlMgaXMgbm90IHNldAojIGVuZCBvZiBQc2V1ZG8gZmlsZXN5c3RlbXMKCkNPTkZJR19NSVND X0ZJTEVTWVNURU1TPXkKIyBDT05GSUdfT1JBTkdFRlNfRlMgaXMgbm90IHNldApDT05GSUdf QURGU19GUz15CiMgQ09ORklHX0FERlNfRlNfUlcgaXMgbm90IHNldApDT05GSUdfQUZGU19G Uz15CkNPTkZJR19FQ1JZUFRfRlM9eQojIENPTkZJR19FQ1JZUFRfRlNfTUVTU0FHSU5HIGlz IG5vdCBzZXQKQ09ORklHX0hGU19GUz15CkNPTkZJR19IRlNQTFVTX0ZTPXkKIyBDT05GSUdf QkVGU19GUyBpcyBub3Qgc2V0CkNPTkZJR19CRlNfRlM9eQojIENPTkZJR19FRlNfRlMgaXMg bm90IHNldAojIENPTkZJR19KRkZTMl9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX1VCSUZTX0ZT IGlzIG5vdCBzZXQKQ09ORklHX0NSQU1GUz15CkNPTkZJR19DUkFNRlNfQkxPQ0tERVY9eQpD T05GSUdfQ1JBTUZTX01URD15CkNPTkZJR19TUVVBU0hGUz15CiMgQ09ORklHX1NRVUFTSEZT X0ZJTEVfQ0FDSEUgaXMgbm90IHNldApDT05GSUdfU1FVQVNIRlNfRklMRV9ESVJFQ1Q9eQpD T05GSUdfU1FVQVNIRlNfREVDT01QX1NJTkdMRT15CkNPTkZJR19TUVVBU0hGU19ERUNPTVBf TVVMVEk9eQpDT05GSUdfU1FVQVNIRlNfREVDT01QX01VTFRJX1BFUkNQVT15CkNPTkZJR19T UVVBU0hGU19DSE9JQ0VfREVDT01QX0JZX01PVU5UPXkKQ09ORklHX1NRVUFTSEZTX01PVU5U X0RFQ09NUF9USFJFQURTPXkKIyBDT05GSUdfU1FVQVNIRlNfWEFUVFIgaXMgbm90IHNldAoj IENPTkZJR19TUVVBU0hGU19aTElCIGlzIG5vdCBzZXQKQ09ORklHX1NRVUFTSEZTX0xaND15 CkNPTkZJR19TUVVBU0hGU19MWk89eQpDT05GSUdfU1FVQVNIRlNfWFo9eQojIENPTkZJR19T UVVBU0hGU19aU1REIGlzIG5vdCBzZXQKIyBDT05GSUdfU1FVQVNIRlNfNEtfREVWQkxLX1NJ WkUgaXMgbm90IHNldAojIENPTkZJR19TUVVBU0hGU19FTUJFRERFRCBpcyBub3Qgc2V0CkNP TkZJR19TUVVBU0hGU19GUkFHTUVOVF9DQUNIRV9TSVpFPTMKIyBDT05GSUdfVlhGU19GUyBp cyBub3Qgc2V0CkNPTkZJR19NSU5JWF9GUz15CkNPTkZJR19PTUZTX0ZTPXkKQ09ORklHX0hQ RlNfRlM9eQojIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldApDT05GSUdfUU5YNkZTX0ZT PXkKIyBDT05GSUdfUU5YNkZTX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfUk9NRlNfRlMg aXMgbm90IHNldApDT05GSUdfUFNUT1JFPXkKQ09ORklHX1BTVE9SRV9ERUZBVUxUX0tNU0df QllURVM9MTAyNDAKIyBDT05GSUdfUFNUT1JFX0NPTVBSRVNTIGlzIG5vdCBzZXQKQ09ORklH X1BTVE9SRV9DT05TT0xFPXkKQ09ORklHX1BTVE9SRV9QTVNHPXkKIyBDT05GSUdfUFNUT1JF X1JBTSBpcyBub3Qgc2V0CiMgQ09ORklHX1BTVE9SRV9CTEsgaXMgbm90IHNldAojIENPTkZJ R19TWVNWX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfVUZTX0ZTIGlzIG5vdCBzZXQKIyBDT05G SUdfRVJPRlNfRlMgaXMgbm90IHNldApDT05GSUdfTkxTPXkKQ09ORklHX05MU19ERUZBVUxU PSJpc284ODU5LTEiCkNPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKIyBDT05GSUdfTkxTX0NP REVQQUdFXzczNyBpcyBub3Qgc2V0CkNPTkZJR19OTFNfQ09ERVBBR0VfNzc1PXkKIyBDT05G SUdfTkxTX0NPREVQQUdFXzg1MCBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84 NTIgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg1NT15CkNPTkZJR19OTFNfQ09E RVBBR0VfODU3PXkKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MCBpcyBub3Qgc2V0CkNPTkZJ R19OTFNfQ09ERVBBR0VfODYxPXkKQ09ORklHX05MU19DT0RFUEFHRV84NjI9eQpDT05GSUdf TkxTX0NPREVQQUdFXzg2Mz15CkNPTkZJR19OTFNfQ09ERVBBR0VfODY0PXkKQ09ORklHX05M U19DT0RFUEFHRV84NjU9eQpDT05GSUdfTkxTX0NPREVQQUdFXzg2Nj15CiMgQ09ORklHX05M U19DT0RFUEFHRV84NjkgaXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfOTM2IGlz IG5vdCBzZXQKQ09ORklHX05MU19DT0RFUEFHRV85NTA9eQpDT05GSUdfTkxTX0NPREVQQUdF XzkzMj15CiMgQ09ORklHX05MU19DT0RFUEFHRV85NDkgaXMgbm90IHNldApDT05GSUdfTkxT X0NPREVQQUdFXzg3ND15CkNPTkZJR19OTFNfSVNPODg1OV84PXkKIyBDT05GSUdfTkxTX0NP REVQQUdFXzEyNTAgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzEyNTE9eQojIENP TkZJR19OTFNfQVNDSUkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMT15CkNPTkZJ R19OTFNfSVNPODg1OV8yPXkKIyBDT05GSUdfTkxTX0lTTzg4NTlfMyBpcyBub3Qgc2V0CkNP TkZJR19OTFNfSVNPODg1OV80PXkKQ09ORklHX05MU19JU084ODU5XzU9eQpDT05GSUdfTkxT X0lTTzg4NTlfNj15CkNPTkZJR19OTFNfSVNPODg1OV83PXkKQ09ORklHX05MU19JU084ODU5 Xzk9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTM9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTQ9eQpD T05GSUdfTkxTX0lTTzg4NTlfMTU9eQojIENPTkZJR19OTFNfS09JOF9SIGlzIG5vdCBzZXQK IyBDT05GSUdfTkxTX0tPSThfVSBpcyBub3Qgc2V0CkNPTkZJR19OTFNfTUFDX1JPTUFOPXkK IyBDT05GSUdfTkxTX01BQ19DRUxUSUMgaXMgbm90IHNldApDT05GSUdfTkxTX01BQ19DRU5U RVVSTz15CkNPTkZJR19OTFNfTUFDX0NST0FUSUFOPXkKQ09ORklHX05MU19NQUNfQ1lSSUxM SUM9eQojIENPTkZJR19OTFNfTUFDX0dBRUxJQyBpcyBub3Qgc2V0CkNPTkZJR19OTFNfTUFD X0dSRUVLPXkKIyBDT05GSUdfTkxTX01BQ19JQ0VMQU5EIGlzIG5vdCBzZXQKQ09ORklHX05M U19NQUNfSU5VSVQ9eQpDT05GSUdfTkxTX01BQ19ST01BTklBTj15CkNPTkZJR19OTFNfTUFD X1RVUktJU0g9eQpDT05GSUdfTkxTX1VURjg9eQpDT05GSUdfVU5JQ09ERT15CkNPTkZJR19V TklDT0RFX05PUk1BTElaQVRJT05fU0VMRlRFU1Q9eQpDT05GSUdfSU9fV1E9eQojIGVuZCBv ZiBGaWxlIHN5c3RlbXMKCiMKIyBTZWN1cml0eSBvcHRpb25zCiMKQ09ORklHX0tFWVM9eQoj IENPTkZJR19LRVlTX1JFUVVFU1RfQ0FDSEUgaXMgbm90IHNldApDT05GSUdfUEVSU0lTVEVO VF9LRVlSSU5HUz15CkNPTkZJR19CSUdfS0VZUz15CkNPTkZJR19UUlVTVEVEX0tFWVM9eQoj IENPTkZJR19UUlVTVEVEX0tFWVNfVFBNIGlzIG5vdCBzZXQKIyBDT05GSUdfVFJVU1RFRF9L RVlTX1RFRSBpcyBub3Qgc2V0CgojCiMgTm8gdHJ1c3Qgc291cmNlIHNlbGVjdGVkIQojCkNP TkZJR19FTkNSWVBURURfS0VZUz15CiMgQ09ORklHX1VTRVJfREVDUllQVEVEX0RBVEEgaXMg bm90IHNldAojIENPTkZJR19LRVlfREhfT1BFUkFUSU9OUyBpcyBub3Qgc2V0CkNPTkZJR19T RUNVUklUWV9ETUVTR19SRVNUUklDVD15CiMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQK IyBDT05GSUdfU0VDVVJJVFlGUyBpcyBub3Qgc2V0CkNPTkZJR19IQVJERU5FRF9VU0VSQ09Q WT15CkNPTkZJR19GT1JUSUZZX1NPVVJDRT15CiMgQ09ORklHX1NUQVRJQ19VU0VSTU9ERUhF TFBFUiBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX09G Rj15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX0ZPTExfRk9SQ0VfUFRSQUNFIGlzIG5v dCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfRk9MTF9GT1JDRV9BTEwgaXMgbm90 IHNldApDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfT1BFTl9SRUFEX09GRj15CiMgQ09ORklH X1BST0NfTUVNX1JFU1RSSUNUX09QRU5fUkVBRF9QVFJBQ0UgaXMgbm90IHNldAojIENPTkZJ R19QUk9DX01FTV9SRVNUUklDVF9PUEVOX1JFQURfQUxMIGlzIG5vdCBzZXQKIyBDT05GSUdf UFJPQ19NRU1fUkVTVFJJQ1RfT1BFTl9XUklURV9PRkYgaXMgbm90IHNldApDT05GSUdfUFJP Q19NRU1fUkVTVFJJQ1RfT1BFTl9XUklURV9QVFJBQ0U9eQojIENPTkZJR19QUk9DX01FTV9S RVNUUklDVF9PUEVOX1dSSVRFX0FMTCBpcyBub3Qgc2V0CiMgQ09ORklHX1BST0NfTUVNX1JF U1RSSUNUX1dSSVRFX09GRiBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX01FTV9SRVNUUklDVF9X UklURV9QVFJBQ0U9eQojIENPTkZJR19QUk9DX01FTV9SRVNUUklDVF9XUklURV9BTEwgaXMg bm90IHNldAojIENPTkZJR19JTUFfU0VDVVJFX0FORF9PUl9UUlVTVEVEX0JPT1QgaXMgbm90 IHNldApDT05GSUdfREVGQVVMVF9TRUNVUklUWV9EQUM9eQpDT05GSUdfTFNNPSJsYW5kbG9j ayxsb2NrZG93bix5YW1hLGxvYWRwaW4sc2FmZXNldGlkLGJwZiIKCiMKIyBLZXJuZWwgaGFy ZGVuaW5nIG9wdGlvbnMKIwoKIwojIE1lbW9yeSBpbml0aWFsaXphdGlvbgojCkNPTkZJR19D Q19IQVNfQVVUT19WQVJfSU5JVF9QQVRURVJOPXkKQ09ORklHX0NDX0hBU19BVVRPX1ZBUl9J TklUX1pFUk9fQkFSRT15CkNPTkZJR19DQ19IQVNfQVVUT19WQVJfSU5JVF9aRVJPPXkKIyBD T05GSUdfSU5JVF9TVEFDS19OT05FIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5JVF9TVEFDS19B TExfUEFUVEVSTiBpcyBub3Qgc2V0CkNPTkZJR19JTklUX1NUQUNLX0FMTF9aRVJPPXkKIyBD T05GSUdfSU5JVF9PTl9BTExPQ19ERUZBVUxUX09OIGlzIG5vdCBzZXQKQ09ORklHX0lOSVRf T05fRlJFRV9ERUZBVUxUX09OPXkKQ09ORklHX0NDX0hBU19aRVJPX0NBTExfVVNFRF9SRUdT PXkKQ09ORklHX1pFUk9fQ0FMTF9VU0VEX1JFR1M9eQojIGVuZCBvZiBNZW1vcnkgaW5pdGlh bGl6YXRpb24KCiMKIyBIYXJkZW5pbmcgb2Yga2VybmVsIGRhdGEgc3RydWN0dXJlcwojCkNP TkZJR19MSVNUX0hBUkRFTkVEPXkKIyBDT05GSUdfQlVHX09OX0RBVEFfQ09SUlVQVElPTiBp cyBub3Qgc2V0CiMgZW5kIG9mIEhhcmRlbmluZyBvZiBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVz CgpDT05GSUdfUkFORFNUUlVDVF9OT05FPXkKIyBlbmQgb2YgS2VybmVsIGhhcmRlbmluZyBv cHRpb25zCiMgZW5kIG9mIFNlY3VyaXR5IG9wdGlvbnMKCkNPTkZJR19YT1JfQkxPQ0tTPXkK Q09ORklHX0FTWU5DX0NPUkU9eQpDT05GSUdfQVNZTkNfTUVNQ1BZPXkKQ09ORklHX0FTWU5D X1hPUj15CkNPTkZJR19BU1lOQ19QUT15CkNPTkZJR19BU1lOQ19SQUlENl9SRUNPVj15CkNP TkZJR19DUllQVE89eQoKIwojIENyeXB0byBjb3JlIG9yIGhlbHBlcgojCkNPTkZJR19DUllQ VE9fQUxHQVBJPXkKQ09ORklHX0NSWVBUT19BTEdBUEkyPXkKQ09ORklHX0NSWVBUT19BRUFE PXkKQ09ORklHX0NSWVBUT19BRUFEMj15CkNPTkZJR19DUllQVE9fU0lHPXkKQ09ORklHX0NS WVBUT19TSUcyPXkKQ09ORklHX0NSWVBUT19TS0NJUEhFUj15CkNPTkZJR19DUllQVE9fU0tD SVBIRVIyPXkKQ09ORklHX0NSWVBUT19IQVNIPXkKQ09ORklHX0NSWVBUT19IQVNIMj15CkNP TkZJR19DUllQVE9fUk5HPXkKQ09ORklHX0NSWVBUT19STkcyPXkKQ09ORklHX0NSWVBUT19S TkdfREVGQVVMVD15CkNPTkZJR19DUllQVE9fQUtDSVBIRVIyPXkKQ09ORklHX0NSWVBUT19B S0NJUEhFUj15CkNPTkZJR19DUllQVE9fS1BQMj15CkNPTkZJR19DUllQVE9fS1BQPXkKQ09O RklHX0NSWVBUT19BQ09NUDI9eQpDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQpDT05GSUdfQ1JZ UFRPX01BTkFHRVIyPXkKQ09ORklHX0NSWVBUT19NQU5BR0VSX0RJU0FCTEVfVEVTVFM9eQpD T05GSUdfQ1JZUFRPX05VTEw9eQpDT05GSUdfQ1JZUFRPX05VTEwyPXkKIyBDT05GSUdfQ1JZ UFRPX1BDUllQVCBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fQ1JZUFREPXkKQ09ORklHX0NS WVBUT19BVVRIRU5DPXkKQ09ORklHX0NSWVBUT19TSU1EPXkKIyBlbmQgb2YgQ3J5cHRvIGNv cmUgb3IgaGVscGVyCgojCiMgUHVibGljLWtleSBjcnlwdG9ncmFwaHkKIwpDT05GSUdfQ1JZ UFRPX1JTQT15CkNPTkZJR19DUllQVE9fREg9eQpDT05GSUdfQ1JZUFRPX0RIX1JGQzc5MTlf R1JPVVBTPXkKQ09ORklHX0NSWVBUT19FQ0M9eQpDT05GSUdfQ1JZUFRPX0VDREg9eQpDT05G SUdfQ1JZUFRPX0VDRFNBPXkKQ09ORklHX0NSWVBUT19FQ1JEU0E9eQpDT05GSUdfQ1JZUFRP X0NVUlZFMjU1MTk9eQojIGVuZCBvZiBQdWJsaWMta2V5IGNyeXB0b2dyYXBoeQoKIwojIEJs b2NrIGNpcGhlcnMKIwpDT05GSUdfQ1JZUFRPX0FFUz15CiMgQ09ORklHX0NSWVBUT19BRVNf VEkgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0FSSUE9eQojIENPTkZJR19DUllQVE9fQkxP V0ZJU0ggaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0NBTUVMTElBPXkKQ09ORklHX0NSWVBU T19DQVNUX0NPTU1PTj15CkNPTkZJR19DUllQVE9fQ0FTVDU9eQpDT05GSUdfQ1JZUFRPX0NB U1Q2PXkKIyBDT05GSUdfQ1JZUFRPX0RFUyBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fRkNS WVBUPXkKQ09ORklHX0NSWVBUT19TRVJQRU5UPXkKQ09ORklHX0NSWVBUT19TTTQ9eQpDT05G SUdfQ1JZUFRPX1NNNF9HRU5FUklDPXkKQ09ORklHX0NSWVBUT19UV09GSVNIPXkKQ09ORklH X0NSWVBUT19UV09GSVNIX0NPTU1PTj15CiMgZW5kIG9mIEJsb2NrIGNpcGhlcnMKCiMKIyBM ZW5ndGgtcHJlc2VydmluZyBjaXBoZXJzIGFuZCBtb2RlcwojCkNPTkZJR19DUllQVE9fQURJ QU5UVU09eQpDT05GSUdfQ1JZUFRPX0NIQUNIQTIwPXkKQ09ORklHX0NSWVBUT19DQkM9eQpD T05GSUdfQ1JZUFRPX0NUUj15CiMgQ09ORklHX0NSWVBUT19DVFMgaXMgbm90IHNldApDT05G SUdfQ1JZUFRPX0VDQj15CiMgQ09ORklHX0NSWVBUT19IQ1RSMiBpcyBub3Qgc2V0CkNPTkZJ R19DUllQVE9fS0VZV1JBUD15CkNPTkZJR19DUllQVE9fTFJXPXkKQ09ORklHX0NSWVBUT19Q Q0JDPXkKQ09ORklHX0NSWVBUT19YVFM9eQpDT05GSUdfQ1JZUFRPX05IUE9MWTEzMDU9eQoj IGVuZCBvZiBMZW5ndGgtcHJlc2VydmluZyBjaXBoZXJzIGFuZCBtb2RlcwoKIwojIEFFQUQg KGF1dGhlbnRpY2F0ZWQgZW5jcnlwdGlvbiB3aXRoIGFzc29jaWF0ZWQgZGF0YSkgY2lwaGVy cwojCkNPTkZJR19DUllQVE9fQUVHSVMxMjg9eQpDT05GSUdfQ1JZUFRPX0NIQUNIQTIwUE9M WTEzMDU9eQojIENPTkZJR19DUllQVE9fQ0NNIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19H Q009eQpDT05GSUdfQ1JZUFRPX0dFTklWPXkKIyBDT05GSUdfQ1JZUFRPX1NFUUlWIGlzIG5v dCBzZXQKQ09ORklHX0NSWVBUT19FQ0hBSU5JVj15CkNPTkZJR19DUllQVE9fRVNTSVY9eQoj IGVuZCBvZiBBRUFEIChhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2l0aCBhc3NvY2lhdGVk IGRhdGEpIGNpcGhlcnMKCiMKIyBIYXNoZXMsIGRpZ2VzdHMsIGFuZCBNQUNzCiMKIyBDT05G SUdfQ1JZUFRPX0JMQUtFMkIgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0NNQUM9eQpDT05G SUdfQ1JZUFRPX0dIQVNIPXkKQ09ORklHX0NSWVBUT19ITUFDPXkKQ09ORklHX0NSWVBUT19N RDQ9eQpDT05GSUdfQ1JZUFRPX01ENT15CkNPTkZJR19DUllQVE9fTUlDSEFFTF9NSUM9eQpD T05GSUdfQ1JZUFRPX1BPTFkxMzA1PXkKQ09ORklHX0NSWVBUT19STUQxNjA9eQpDT05GSUdf Q1JZUFRPX1NIQTE9eQpDT05GSUdfQ1JZUFRPX1NIQTI1Nj15CkNPTkZJR19DUllQVE9fU0hB NTEyPXkKQ09ORklHX0NSWVBUT19TSEEzPXkKQ09ORklHX0NSWVBUT19TTTM9eQpDT05GSUdf Q1JZUFRPX1NNM19HRU5FUklDPXkKQ09ORklHX0NSWVBUT19TVFJFRUJPRz15CiMgQ09ORklH X0NSWVBUT19WTUFDIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBz ZXQKQ09ORklHX0NSWVBUT19YQ0JDPXkKQ09ORklHX0NSWVBUT19YWEhBU0g9eQojIGVuZCBv ZiBIYXNoZXMsIGRpZ2VzdHMsIGFuZCBNQUNzCgojCiMgQ1JDcyAoY3ljbGljIHJlZHVuZGFu Y3kgY2hlY2tzKQojCkNPTkZJR19DUllQVE9fQ1JDMzJDPXkKQ09ORklHX0NSWVBUT19DUkMz Mj15CkNPTkZJR19DUllQVE9fQ1JDVDEwRElGPXkKQ09ORklHX0NSWVBUT19DUkM2NF9ST0NL U09GVD15CiMgZW5kIG9mIENSQ3MgKGN5Y2xpYyByZWR1bmRhbmN5IGNoZWNrcykKCiMKIyBD b21wcmVzc2lvbgojCiMgQ09ORklHX0NSWVBUT19ERUZMQVRFIGlzIG5vdCBzZXQKQ09ORklH X0NSWVBUT19MWk89eQojIENPTkZJR19DUllQVE9fODQyIGlzIG5vdCBzZXQKQ09ORklHX0NS WVBUT19MWjQ9eQojIENPTkZJR19DUllQVE9fTFo0SEMgaXMgbm90IHNldApDT05GSUdfQ1JZ UFRPX1pTVEQ9eQojIGVuZCBvZiBDb21wcmVzc2lvbgoKIwojIFJhbmRvbSBudW1iZXIgZ2Vu ZXJhdGlvbgojCkNPTkZJR19DUllQVE9fQU5TSV9DUFJORz15CkNPTkZJR19DUllQVE9fRFJC R19NRU5VPXkKQ09ORklHX0NSWVBUT19EUkJHX0hNQUM9eQojIENPTkZJR19DUllQVE9fRFJC R19IQVNIIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19EUkJHX0NUUj15CkNPTkZJR19DUllQ VE9fRFJCRz15CkNPTkZJR19DUllQVE9fSklUVEVSRU5UUk9QWT15CkNPTkZJR19DUllQVE9f SklUVEVSRU5UUk9QWV9NRU1PUllfQkxPQ0tTPTY0CkNPTkZJR19DUllQVE9fSklUVEVSRU5U Uk9QWV9NRU1PUllfQkxPQ0tTSVpFPTMyCkNPTkZJR19DUllQVE9fSklUVEVSRU5UUk9QWV9P U1I9MQojIGVuZCBvZiBSYW5kb20gbnVtYmVyIGdlbmVyYXRpb24KCiMKIyBVc2Vyc3BhY2Ug aW50ZXJmYWNlCiMKIyBlbmQgb2YgVXNlcnNwYWNlIGludGVyZmFjZQoKQ09ORklHX0NSWVBU T19IQVNIX0lORk89eQoKIwojIEFjY2VsZXJhdGVkIENyeXB0b2dyYXBoaWMgQWxnb3JpdGht cyBmb3IgQ1BVICh4ODYpCiMKQ09ORklHX0NSWVBUT19BRVNfTklfSU5URUw9eQojIENPTkZJ R19DUllQVE9fU0VSUEVOVF9TU0UyXzU4NiBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fVFdP RklTSF81ODY9eQpDT05GSUdfQ1JZUFRPX0NSQzMyQ19JTlRFTD15CiMgQ09ORklHX0NSWVBU T19DUkMzMl9QQ0xNVUwgaXMgbm90IHNldAojIGVuZCBvZiBBY2NlbGVyYXRlZCBDcnlwdG9n cmFwaGljIEFsZ29yaXRobXMgZm9yIENQVSAoeDg2KQoKIyBDT05GSUdfQ1JZUFRPX0hXIGlz IG5vdCBzZXQKQ09ORklHX0FTWU1NRVRSSUNfS0VZX1RZUEU9eQpDT05GSUdfQVNZTU1FVFJJ Q19QVUJMSUNfS0VZX1NVQlRZUEU9eQpDT05GSUdfWDUwOV9DRVJUSUZJQ0FURV9QQVJTRVI9 eQpDT05GSUdfUEtDUzhfUFJJVkFURV9LRVlfUEFSU0VSPXkKQ09ORklHX1BLQ1M3X01FU1NB R0VfUEFSU0VSPXkKQ09ORklHX1BLQ1M3X1RFU1RfS0VZPXkKIyBDT05GSUdfU0lHTkVEX1BF X0ZJTEVfVkVSSUZJQ0FUSU9OIGlzIG5vdCBzZXQKQ09ORklHX0ZJUFNfU0lHTkFUVVJFX1NF TEZURVNUPXkKQ09ORklHX0ZJUFNfU0lHTkFUVVJFX1NFTEZURVNUX1JTQT15CkNPTkZJR19G SVBTX1NJR05BVFVSRV9TRUxGVEVTVF9FQ0RTQT15CgojCiMgQ2VydGlmaWNhdGVzIGZvciBz aWduYXR1cmUgY2hlY2tpbmcKIwpDT05GSUdfU1lTVEVNX1RSVVNURURfS0VZUklORz15CkNP TkZJR19TWVNURU1fVFJVU1RFRF9LRVlTPSIiCiMgQ09ORklHX1NZU1RFTV9FWFRSQV9DRVJU SUZJQ0FURSBpcyBub3Qgc2V0CkNPTkZJR19TRUNPTkRBUllfVFJVU1RFRF9LRVlSSU5HPXkK Q09ORklHX1NFQ09OREFSWV9UUlVTVEVEX0tFWVJJTkdfU0lHTkVEX0JZX0JVSUxUSU49eQoj IENPTkZJR19TWVNURU1fQkxBQ0tMSVNUX0tFWVJJTkcgaXMgbm90IHNldAojIGVuZCBvZiBD ZXJ0aWZpY2F0ZXMgZm9yIHNpZ25hdHVyZSBjaGVja2luZwoKQ09ORklHX0JJTkFSWV9QUklO VEY9eQoKIwojIExpYnJhcnkgcm91dGluZXMKIwpDT05GSUdfUkFJRDZfUFE9eQojIENPTkZJ R19SQUlENl9QUV9CRU5DSE1BUksgaXMgbm90IHNldApDT05GSUdfTElORUFSX1JBTkdFUz15 CiMgQ09ORklHX1BBQ0tJTkcgaXMgbm90IHNldApDT05GSUdfQklUUkVWRVJTRT15CkNPTkZJ R19HRU5FUklDX1NUUk5DUFlfRlJPTV9VU0VSPXkKQ09ORklHX0dFTkVSSUNfU1RSTkxFTl9V U0VSPXkKIyBDT05GSUdfQ09SRElDIGlzIG5vdCBzZXQKQ09ORklHX1BSSU1FX05VTUJFUlM9 eQpDT05GSUdfUkFUSU9OQUw9eQpDT05GSUdfR0VORVJJQ19JT01BUD15CkNPTkZJR19BUkNI X0hBU19GQVNUX01VTFRJUExJRVI9eQpDT05GSUdfQVJDSF9VU0VfU1lNX0FOTk9UQVRJT05T PXkKCiMKIyBDcnlwdG8gbGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19DUllQVE9fTElCX1VU SUxTPXkKQ09ORklHX0NSWVBUT19MSUJfQUVTPXkKQ09ORklHX0NSWVBUT19MSUJfQUVTQ0ZC PXkKQ09ORklHX0NSWVBUT19MSUJfR0YxMjhNVUw9eQpDT05GSUdfQ1JZUFRPX0xJQl9CTEFL RTJTX0dFTkVSSUM9eQpDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEFfR0VORVJJQz15CkNPTkZJ R19DUllQVE9fTElCX0NIQUNIQT15CkNPTkZJR19DUllQVE9fTElCX0NVUlZFMjU1MTlfR0VO RVJJQz15CiMgQ09ORklHX0NSWVBUT19MSUJfQ1VSVkUyNTUxOSBpcyBub3Qgc2V0CkNPTkZJ R19DUllQVE9fTElCX1BPTFkxMzA1X1JTSVpFPTEKQ09ORklHX0NSWVBUT19MSUJfUE9MWTEz MDVfR0VORVJJQz15CkNPTkZJR19DUllQVE9fTElCX1BPTFkxMzA1PXkKQ09ORklHX0NSWVBU T19MSUJfQ0hBQ0hBMjBQT0xZMTMwNT15CkNPTkZJR19DUllQVE9fTElCX1NIQTE9eQpDT05G SUdfQ1JZUFRPX0xJQl9TSEEyNTY9eQojIGVuZCBvZiBDcnlwdG8gbGlicmFyeSByb3V0aW5l cwoKQ09ORklHX0NSQ19DQ0lUVD15CkNPTkZJR19DUkMxNj15CkNPTkZJR19DUkNfVDEwRElG PXkKQ09ORklHX0NSQzY0X1JPQ0tTT0ZUPXkKQ09ORklHX0NSQ19JVFVfVD15CkNPTkZJR19D UkMzMj15CkNPTkZJR19DUkMzMl9TRUxGVEVTVD15CiMgQ09ORklHX0NSQzMyX1NMSUNFQlk4 IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JDMzJfU0xJQ0VCWTQgaXMgbm90IHNldApDT05GSUdf Q1JDMzJfU0FSV0FURT15CiMgQ09ORklHX0NSQzMyX0JJVCBpcyBub3Qgc2V0CkNPTkZJR19D UkM2ND15CkNPTkZJR19DUkM0PXkKQ09ORklHX0NSQzc9eQpDT05GSUdfTElCQ1JDMzJDPXkK Q09ORklHX0NSQzg9eQpDT05GSUdfWFhIQVNIPXkKIyBDT05GSUdfUkFORE9NMzJfU0VMRlRF U1QgaXMgbm90IHNldApDT05GSUdfWkxJQl9JTkZMQVRFPXkKQ09ORklHX1pMSUJfREVGTEFU RT15CkNPTkZJR19MWk9fQ09NUFJFU1M9eQpDT05GSUdfTFpPX0RFQ09NUFJFU1M9eQpDT05G SUdfTFo0X0NPTVBSRVNTPXkKQ09ORklHX0xaNEhDX0NPTVBSRVNTPXkKQ09ORklHX0xaNF9E RUNPTVBSRVNTPXkKQ09ORklHX1pTVERfQ09NTU9OPXkKQ09ORklHX1pTVERfQ09NUFJFU1M9 eQpDT05GSUdfWlNURF9ERUNPTVBSRVNTPXkKQ09ORklHX1haX0RFQz15CkNPTkZJR19YWl9E RUNfWDg2PXkKQ09ORklHX1haX0RFQ19QT1dFUlBDPXkKQ09ORklHX1haX0RFQ19BUk09eQpD T05GSUdfWFpfREVDX0FSTVRIVU1CPXkKQ09ORklHX1haX0RFQ19TUEFSQz15CkNPTkZJR19Y Wl9ERUNfTUlDUk9MWk1BPXkKQ09ORklHX1haX0RFQ19CQ0o9eQpDT05GSUdfWFpfREVDX1RF U1Q9eQpDT05GSUdfR0VORVJJQ19BTExPQ0FUT1I9eQpDT05GSUdfUkVFRF9TT0xPTU9OPXkK Q09ORklHX1JFRURfU09MT01PTl9ERUM4PXkKQ09ORklHX1JFRURfU09MT01PTl9ERUMxNj15 CkNPTkZJR19CQ0g9eQpDT05GSUdfSU5URVJWQUxfVFJFRT15CkNPTkZJR19YQVJSQVlfTVVM VEk9eQpDT05GSUdfQVNTT0NJQVRJVkVfQVJSQVk9eQpDT05GSUdfQ0xPU1VSRVM9eQpDT05G SUdfSEFTX0lPTUVNPXkKQ09ORklHX0hBU19JT1BPUlQ9eQpDT05GSUdfSEFTX0lPUE9SVF9N QVA9eQpDT05GSUdfSEFTX0RNQT15CkNPTkZJR19ORUVEX1NHX0RNQV9MRU5HVEg9eQpDT05G SUdfTkVFRF9ETUFfTUFQX1NUQVRFPXkKQ09ORklHX0RNQV9ORUVEX1NZTkM9eQpDT05GSUdf RE1BX0FQSV9ERUJVRz15CiMgQ09ORklHX0RNQV9BUElfREVCVUdfU0cgaXMgbm90IHNldApD T05GSUdfRE1BX01BUF9CRU5DSE1BUks9eQpDT05GSUdfU0dMX0FMTE9DPXkKQ09ORklHX0dM T0I9eQpDT05GSUdfR0xPQl9TRUxGVEVTVD15CkNPTkZJR19DTFpfVEFCPXkKQ09ORklHX0lS UV9QT0xMPXkKQ09ORklHX01QSUxJQj15CkNPTkZJR19PSURfUkVHSVNUUlk9eQpDT05GSUdf VUNTMl9TVFJJTkc9eQpDT05GSUdfSEFWRV9HRU5FUklDX1ZEU089eQpDT05GSUdfR0VORVJJ Q19HRVRUSU1FT0ZEQVk9eQpDT05GSUdfR0VORVJJQ19WRFNPXzMyPXkKQ09ORklHX0dFTkVS SUNfVkRTT19USU1FX05TPXkKQ09ORklHX0dFTkVSSUNfVkRTT19PVkVSRkxPV19QUk9URUNU PXkKQ09ORklHX0ZPTlRfU1VQUE9SVD15CkNPTkZJR19GT05UXzh4MTY9eQpDT05GSUdfRk9O VF9BVVRPU0VMRUNUPXkKQ09ORklHX1NHX1BPT0w9eQpDT05GSUdfQVJDSF9IQVNfQ1BVX0NB Q0hFX0lOVkFMSURBVEVfTUVNUkVHSU9OPXkKQ09ORklHX0FSQ0hfU1RBQ0tXQUxLPXkKQ09O RklHX1NUQUNLREVQT1Q9eQpDT05GSUdfU1RBQ0tERVBPVF9BTFdBWVNfSU5JVD15CkNPTkZJ R19TVEFDS0RFUE9UX01BWF9GUkFNRVM9NjQKQ09ORklHX1NCSVRNQVA9eQpDT05GSUdfTFdR X1RFU1Q9eQojIGVuZCBvZiBMaWJyYXJ5IHJvdXRpbmVzCgpDT05GSUdfRklSTVdBUkVfVEFC TEU9eQoKIwojIEtlcm5lbCBoYWNraW5nCiMKCiMKIyBwcmludGsgYW5kIGRtZXNnIG9wdGlv bnMKIwpDT05GSUdfUFJJTlRLX1RJTUU9eQojIENPTkZJR19QUklOVEtfQ0FMTEVSIGlzIG5v dCBzZXQKIyBDT05GSUdfU1RBQ0tUUkFDRV9CVUlMRF9JRCBpcyBub3Qgc2V0CkNPTkZJR19D T05TT0xFX0xPR0xFVkVMX0RFRkFVTFQ9NwpDT05GSUdfQ09OU09MRV9MT0dMRVZFTF9RVUlF VD00CkNPTkZJR19NRVNTQUdFX0xPR0xFVkVMX0RFRkFVTFQ9NAojIENPTkZJR19EWU5BTUlD X0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfRFlOQU1JQ19ERUJVR19DT1JFIGlzIG5vdCBz ZXQKQ09ORklHX1NZTUJPTElDX0VSUk5BTUU9eQpDT05GSUdfREVCVUdfQlVHVkVSQk9TRT15 CiMgZW5kIG9mIHByaW50ayBhbmQgZG1lc2cgb3B0aW9ucwoKIyBDT05GSUdfREVCVUdfS0VS TkVMIGlzIG5vdCBzZXQKCiMKIyBDb21waWxlLXRpbWUgY2hlY2tzIGFuZCBjb21waWxlciBv cHRpb25zCiMKQ09ORklHX0FTX0hBU19OT05fQ09OU1RfVUxFQjEyOD15CkNPTkZJR19GUkFN RV9XQVJOPTEwMjQKQ09ORklHX1NUUklQX0FTTV9TWU1TPXkKQ09ORklHX0hFQURFUlNfSU5T VEFMTD15CiMgQ09ORklHX0RFQlVHX1NFQ1RJT05fTUlTTUFUQ0ggaXMgbm90IHNldApDT05G SUdfU0VDVElPTl9NSVNNQVRDSF9XQVJOX09OTFk9eQpDT05GSUdfQVJDSF9XQU5UX0ZSQU1F X1BPSU5URVJTPXkKQ09ORklHX0ZSQU1FX1BPSU5URVI9eQojIGVuZCBvZiBDb21waWxlLXRp bWUgY2hlY2tzIGFuZCBjb21waWxlciBvcHRpb25zCgojCiMgR2VuZXJpYyBLZXJuZWwgRGVi dWdnaW5nIEluc3RydW1lbnRzCiMKQ09ORklHX01BR0lDX1NZU1JRPXkKQ09ORklHX01BR0lD X1NZU1JRX0RFRkFVTFRfRU5BQkxFPTB4MQojIENPTkZJR19NQUdJQ19TWVNSUV9TRVJJQUwg aXMgbm90IHNldApDT05GSUdfREVCVUdfRlM9eQojIENPTkZJR19ERUJVR19GU19BTExPV19B TEwgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19GU19ESVNBTExPV19NT1VOVCBpcyBub3Qg c2V0CkNPTkZJR19ERUJVR19GU19BTExPV19OT05FPXkKQ09ORklHX0hBVkVfQVJDSF9LR0RC PXkKQ09ORklHX0FSQ0hfSEFTX1VCU0FOPXkKIyBDT05GSUdfVUJTQU4gaXMgbm90IHNldApD T05GSUdfSEFWRV9LQ1NBTl9DT01QSUxFUj15CiMgZW5kIG9mIEdlbmVyaWMgS2VybmVsIERl YnVnZ2luZyBJbnN0cnVtZW50cwoKIwojIE5ldHdvcmtpbmcgRGVidWdnaW5nCiMKIyBlbmQg b2YgTmV0d29ya2luZyBEZWJ1Z2dpbmcKCiMKIyBNZW1vcnkgRGVidWdnaW5nCiMKQ09ORklH X1BBR0VfRVhURU5TSU9OPXkKQ09ORklHX1NMVUJfREVCVUc9eQpDT05GSUdfU0xVQl9ERUJV R19PTj15CiMgQ09ORklHX1BBR0VfUE9JU09OSU5HIGlzIG5vdCBzZXQKQ09ORklHX0RFQlVH X1JPREFUQV9URVNUPXkKQ09ORklHX0FSQ0hfSEFTX0RFQlVHX1dYPXkKIyBDT05GSUdfREVC VUdfV1ggaXMgbm90IHNldApDT05GSUdfR0VORVJJQ19QVERVTVA9eQpDT05GSUdfUFREVU1Q X0NPUkU9eQpDT05GSUdfSEFWRV9ERUJVR19LTUVNTEVBSz15CkNPTkZJR19TSFJJTktFUl9E RUJVRz15CkNPTkZJR19BUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFPXkKIyBDT05GSUdfREVC VUdfVk1fUEdUQUJMRSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19ERUJVR19WSVJUVUFM PXkKQ09ORklHX0RFQlVHX01FTU9SWV9JTklUPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS01B UF9MT0NBTF9GT1JDRV9NQVA9eQpDT05GSUdfSEFWRV9ERUJVR19TVEFDS09WRVJGTE9XPXkK IyBDT05GSUdfTUVNX0FMTE9DX1BST0ZJTElORyBpcyBub3Qgc2V0CkNPTkZJR19DQ19IQVNf S0FTQU5fR0VORVJJQz15CkNPTkZJR19DQ19IQVNfV09SS0lOR19OT1NBTklUSVpFX0FERFJF U1M9eQpDT05GSUdfSEFWRV9BUkNIX0tGRU5DRT15CiMgQ09ORklHX0tGRU5DRSBpcyBub3Qg c2V0CiMgZW5kIG9mIE1lbW9yeSBEZWJ1Z2dpbmcKCiMKIyBEZWJ1ZyBPb3BzLCBMb2NrdXBz IGFuZCBIYW5ncwojCiMgQ09ORklHX1BBTklDX09OX09PUFMgaXMgbm90IHNldApDT05GSUdf UEFOSUNfT05fT09QU19WQUxVRT0wCkNPTkZJR19QQU5JQ19USU1FT1VUPTAKQ09ORklHX0hB VkVfSEFSRExPQ0tVUF9ERVRFQ1RPUl9CVUREWT15CiMgZW5kIG9mIERlYnVnIE9vcHMsIExv Y2t1cHMgYW5kIEhhbmdzCgojCiMgU2NoZWR1bGVyIERlYnVnZ2luZwojCiMgQ09ORklHX1ND SEVEU1RBVFMgaXMgbm90IHNldAojIGVuZCBvZiBTY2hlZHVsZXIgRGVidWdnaW5nCgojIENP TkZJR19ERUJVR19USU1FS0VFUElORyBpcyBub3Qgc2V0CgojCiMgTG9jayBEZWJ1Z2dpbmcg KHNwaW5sb2NrcywgbXV0ZXhlcywgZXRjLi4uKQojCkNPTkZJR19MT0NLX0RFQlVHR0lOR19T VVBQT1JUPXkKQ09ORklHX1dXX01VVEVYX1NFTEZURVNUPXkKIyBlbmQgb2YgTG9jayBEZWJ1 Z2dpbmcgKHNwaW5sb2NrcywgbXV0ZXhlcywgZXRjLi4uKQoKIyBDT05GSUdfREVCVUdfSVJR RkxBR1MgaXMgbm90IHNldApDT05GSUdfU1RBQ0tUUkFDRT15CkNPTkZJR19XQVJOX0FMTF9V TlNFRURFRF9SQU5ET009eQoKIwojIERlYnVnIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMKIwoj IENPTkZJR19ERUJVR19DTE9TVVJFUyBpcyBub3Qgc2V0CiMgZW5kIG9mIERlYnVnIGtlcm5l bCBkYXRhIHN0cnVjdHVyZXMKCiMKIyBSQ1UgRGVidWdnaW5nCiMKQ09ORklHX1JDVV9DUFVf U1RBTExfVElNRU9VVD0yMQpDT05GSUdfUkNVX0VYUF9DUFVfU1RBTExfVElNRU9VVD0wCiMg Q09ORklHX1JDVV9DUFVfU1RBTExfQ1BVVElNRSBpcyBub3Qgc2V0CiMgZW5kIG9mIFJDVSBE ZWJ1Z2dpbmcKCkNPTkZJR19VU0VSX1NUQUNLVFJBQ0VfU1VQUE9SVD15CkNPTkZJR19IQVZF X1JFVEhPT0s9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9UUkFDRVI9eQpDT05GSUdfSEFWRV9G VU5DVElPTl9HUkFQSF9UUkFDRVI9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9HUkFQSF9SRVRW QUw9eQpDT05GSUdfSEFWRV9EWU5BTUlDX0ZUUkFDRT15CkNPTkZJR19IQVZFX0RZTkFNSUNf RlRSQUNFX1dJVEhfUkVHUz15CkNPTkZJR19IQVZFX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElS RUNUX0NBTExTPXkKQ09ORklHX0hBVkVfRFlOQU1JQ19GVFJBQ0VfTk9fUEFUQ0hBQkxFPXkK Q09ORklHX0hBVkVfRlRSQUNFX01DT1VOVF9SRUNPUkQ9eQpDT05GSUdfSEFWRV9TWVNDQUxM X1RSQUNFUE9JTlRTPXkKQ09ORklHX0hBVkVfQ19SRUNPUkRNQ09VTlQ9eQpDT05GSUdfSEFW RV9CVUlMRFRJTUVfTUNPVU5UX1NPUlQ9eQpDT05GSUdfVFJBQ0lOR19TVVBQT1JUPXkKIyBD T05GSUdfRlRSQUNFIGlzIG5vdCBzZXQKQ09ORklHX1BST1ZJREVfT0hDSTEzOTRfRE1BX0lO SVQ9eQpDT05GSUdfU0FNUExFUz15CiMgQ09ORklHX1NBTVBMRV9BVVhESVNQTEFZIGlzIG5v dCBzZXQKQ09ORklHX1NBTVBMRV9LT0JKRUNUPXkKQ09ORklHX1NBTVBMRV9ISURSQVc9eQpD T05GSUdfU0FNUExFX0xBTkRMT0NLPXkKIyBDT05GSUdfU0FNUExFX1BJREZEIGlzIG5vdCBz ZXQKIyBDT05GSUdfU0FNUExFX1RJTUVSIGlzIG5vdCBzZXQKQ09ORklHX1NBTVBMRV9VSElE PXkKQ09ORklHX1NBTVBMRV9WRklPX01ERVZfTVRUWT15CkNPTkZJR19TQU1QTEVfVkZJT19N REVWX01EUFk9eQpDT05GSUdfU0FNUExFX1ZGSU9fTURFVl9NRFBZX0ZCPXkKQ09ORklHX1NB TVBMRV9WRklPX01ERVZfTUJPQ0hTPXkKIyBDT05GSUdfU0FNUExFX0FORFJPSURfQklOREVS RlMgaXMgbm90IHNldApDT05GSUdfU0FNUExFX1ZGUz15CiMgQ09ORklHX1NBTVBMRV9UUFM2 NTk0X1BGU00gaXMgbm90IHNldApDT05GSUdfU0FNUExFX1dBVENIRE9HPXkKIyBDT05GSUdf U0FNUExFX1dBVENIX1FVRVVFIGlzIG5vdCBzZXQKQ09ORklHX1NBTVBMRV9DR1JPVVA9eQpD T05GSUdfQVJDSF9IQVNfREVWTUVNX0lTX0FMTE9XRUQ9eQojIENPTkZJR19TVFJJQ1RfREVW TUVNIGlzIG5vdCBzZXQKCiMKIyB4ODYgRGVidWdnaW5nCiMKQ09ORklHX0VBUkxZX1BSSU5U S19VU0I9eQpDT05GSUdfWDg2X1ZFUkJPU0VfQk9PVFVQPXkKQ09ORklHX0VBUkxZX1BSSU5U Sz15CkNPTkZJR19FQVJMWV9QUklOVEtfREJHUD15CkNPTkZJR19FQVJMWV9QUklOVEtfVVNC X1hEQkM9eQpDT05GSUdfRUZJX1BHVF9EVU1QPXkKQ09ORklHX0hBVkVfTU1JT1RSQUNFX1NV UFBPUlQ9eQojIENPTkZJR19JT19ERUxBWV8wWDgwIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9f REVMQVlfMFhFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0lPX0RFTEFZX1VERUxBWSBpcyBub3Qg c2V0CkNPTkZJR19JT19ERUxBWV9OT05FPXkKQ09ORklHX1BVTklUX0FUT01fREVCVUc9eQpD T05GSUdfVU5XSU5ERVJfRlJBTUVfUE9JTlRFUj15CiMgZW5kIG9mIHg4NiBEZWJ1Z2dpbmcK CiMKIyBLZXJuZWwgVGVzdGluZyBhbmQgQ292ZXJhZ2UKIwpDT05GSUdfS1VOSVQ9eQojIENP TkZJR19LVU5JVF9ERUJVR0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfS1VOSVRfVEVTVCBpcyBu b3Qgc2V0CkNPTkZJR19LVU5JVF9FWEFNUExFX1RFU1Q9eQojIENPTkZJR19LVU5JVF9BTExf VEVTVFMgaXMgbm90IHNldAojIENPTkZJR19LVU5JVF9ERUZBVUxUX0VOQUJMRUQgaXMgbm90 IHNldApDT05GSUdfQ0NfSEFTX1NBTkNPVl9UUkFDRV9QQz15CkNPTkZJR19SVU5USU1FX1RF U1RJTkdfTUVOVT15CkNPTkZJR19URVNUX0RIUlk9eQpDT05GSUdfTEtEVE09eQpDT05GSUdf Q1BVTUFTS19LVU5JVF9URVNUPXkKQ09ORklHX1RFU1RfTElTVF9TT1JUPXkKQ09ORklHX1RF U1RfU09SVD15CiMgQ09ORklHX1RFU1RfSU9WX0lURVIgaXMgbm90IHNldApDT05GSUdfQVRP TUlDNjRfU0VMRlRFU1Q9eQojIENPTkZJR19BU1lOQ19SQUlENl9URVNUIGlzIG5vdCBzZXQK IyBDT05GSUdfVEVTVF9IRVhEVU1QIGlzIG5vdCBzZXQKQ09ORklHX1NUUklOR19LVU5JVF9U RVNUPXkKIyBDT05GSUdfU1RSSU5HX0hFTFBFUlNfS1VOSVRfVEVTVCBpcyBub3Qgc2V0CiMg Q09ORklHX1RFU1RfS1NUUlRPWCBpcyBub3Qgc2V0CkNPTkZJR19URVNUX1BSSU5URj15CkNP TkZJR19URVNUX1NDQU5GPXkKQ09ORklHX1RFU1RfQklUTUFQPXkKIyBDT05GSUdfVEVTVF9V VUlEIGlzIG5vdCBzZXQKQ09ORklHX1RFU1RfWEFSUkFZPXkKQ09ORklHX1RFU1RfTUFQTEVf VFJFRT15CkNPTkZJR19URVNUX1JIQVNIVEFCTEU9eQpDT05GSUdfVEVTVF9JREE9eQpDT05G SUdfVEVTVF9CSVRPUFM9eQpDT05GSUdfRklORF9CSVRfQkVOQ0hNQVJLPXkKIyBDT05GSUdf VEVTVF9GSVJNV0FSRSBpcyBub3Qgc2V0CkNPTkZJR19URVNUX1NZU0NUTD15CiMgQ09ORklH X0JJVEZJRUxEX0tVTklUIGlzIG5vdCBzZXQKQ09ORklHX0NIRUNLU1VNX0tVTklUPXkKQ09O RklHX0hBU0hfS1VOSVRfVEVTVD15CiMgQ09ORklHX1JFU09VUkNFX0tVTklUX1RFU1QgaXMg bm90IHNldApDT05GSUdfU1lTQ1RMX0tVTklUX1RFU1Q9eQojIENPTkZJR19MSVNUX0tVTklU X1RFU1QgaXMgbm90IHNldAojIENPTkZJR19IQVNIVEFCTEVfS1VOSVRfVEVTVCBpcyBub3Qg c2V0CkNPTkZJR19MSU5FQVJfUkFOR0VTX1RFU1Q9eQpDT05GSUdfQ01ETElORV9LVU5JVF9U RVNUPXkKIyBDT05GSUdfQklUU19URVNUIGlzIG5vdCBzZXQKQ09ORklHX1NMVUJfS1VOSVRf VEVTVD15CkNPTkZJR19SQVRJT05BTF9LVU5JVF9URVNUPXkKIyBDT05GSUdfTUVNQ1BZX0tV TklUX1RFU1QgaXMgbm90IHNldAojIENPTkZJR19JU19TSUdORURfVFlQRV9LVU5JVF9URVNU IGlzIG5vdCBzZXQKQ09ORklHX09WRVJGTE9XX0tVTklUX1RFU1Q9eQojIENPTkZJR19TVEFD S0lOSVRfS1VOSVRfVEVTVCBpcyBub3Qgc2V0CiMgQ09ORklHX0ZPUlRJRllfS1VOSVRfVEVT VCBpcyBub3Qgc2V0CkNPTkZJR19IV19CUkVBS1BPSU5UX0tVTklUX1RFU1Q9eQpDT05GSUdf U0lQSEFTSF9LVU5JVF9URVNUPXkKIyBDT05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVCBpcyBu b3Qgc2V0CkNPTkZJR19URVNUX1VERUxBWT15CkNPTkZJR19URVNUX01FTUNBVF9QPXkKIyBD T05GSUdfVEVTVF9NRU1JTklUIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUkVFX1BBR0VT IGlzIG5vdCBzZXQKQ09ORklHX1RFU1RfRlBVPXkKQ09ORklHX1RFU1RfQ0xPQ0tTT1VSQ0Vf V0FUQ0hET0c9eQpDT05GSUdfQVJDSF9VU0VfTUVNVEVTVD15CiMgQ09ORklHX01FTVRFU1Qg aXMgbm90IHNldAojIGVuZCBvZiBLZXJuZWwgVGVzdGluZyBhbmQgQ292ZXJhZ2UKCiMKIyBS dXN0IGhhY2tpbmcKIwojIGVuZCBvZiBSdXN0IGhhY2tpbmcKIyBlbmQgb2YgS2VybmVsIGhh Y2tpbmcK --------------7RQm7x3v8VP8OKBUALlH80RD-- . From: Jeff Johnson Date: Tue, 9 Jul 2024 14:39:11 -0700 Subject: [PATCH v2] HID: add more missing MODULE_DESCRIPTION() macros X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20240709-md-drivers-hid-v2-1-67faf2f2ec90@quicinc.com> To: Jiri Kosina , Benjamin Tissoires CC: , , "Jeff Johnson" Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272841 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail make allmodconfig && make W=1 C=1 reports: WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-holtek-mouse.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-ite.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-kensington.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-keytouch.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-kye.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lcpower.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lenovo.o WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-winwing.o Add the missing invocations of the MODULE_DESCRIPTION() macro. Signed-off-by: Jeff Johnson --- The missing MODULE_DESCRIPTION() macros in drivers/hid were supposed to be fixed by: https://lore.kernel.org/all/20240604-md-hid-misc-v1-1-4f9560796f3c@quicinc.com/ I somehow failed to include some of the fixes, and I subsequently sent: https://lore.kernel.org/all/20240606-md-drivers-hid-v1-1-d6a5120b94cb@quicinc.com/ But then I confused myself and thought that second patch wasn't needed: https://lore.kernel.org/all/c777aad9-3b0a-43d3-9e6b-1e1807df61a8@quicinc.com/ But then realized it was actually needed: https://lore.kernel.org/all/50c97718-b304-4eb5-9bb0-53ff32ccf185@quicinc.com/ Since it hasn't landed in linux-next, posting a renamed version so that it can hopefully be picked up in time for the 6.11 merge window. --- Changes in v2: - Modified the subject to differentiate it from the original patch - Link to v1: https://lore.kernel.org/r/20240606-md-drivers-hid-v1-1-d6a5120b94cb@quicinc.com --- drivers/hid/hid-holtek-mouse.c | 1 + drivers/hid/hid-ite.c | 1 + drivers/hid/hid-kensington.c | 1 + drivers/hid/hid-keytouch.c | 1 + drivers/hid/hid-kye.c | 1 + drivers/hid/hid-lcpower.c | 1 + drivers/hid/hid-lenovo.c | 1 + drivers/hid/hid-winwing.c | 1 + 8 files changed, 8 insertions(+) diff --git a/drivers/hid/hid-holtek-mouse.c b/drivers/hid/hid-holtek-mouse.c index 7c907939bfae..343730c28e2d 100644 --- a/drivers/hid/hid-holtek-mouse.c +++ b/drivers/hid/hid-holtek-mouse.c @@ -110,4 +110,5 @@ static struct hid_driver holtek_mouse_driver = { }; module_hid_driver(holtek_mouse_driver); +MODULE_DESCRIPTION("HID driver for Holtek gaming mice"); MODULE_LICENSE("GPL"); diff --git a/drivers/hid/hid-ite.c b/drivers/hid/hid-ite.c index 75ebfcf31889..6a7281bc27c9 100644 --- a/drivers/hid/hid-ite.c +++ b/drivers/hid/hid-ite.c @@ -141,4 +141,5 @@ static struct hid_driver ite_driver = { module_hid_driver(ite_driver); MODULE_AUTHOR("Hans de Goede "); +MODULE_DESCRIPTION("HID driver for some ITE \"special\" devices"); MODULE_LICENSE("GPL"); diff --git a/drivers/hid/hid-kensington.c b/drivers/hid/hid-kensington.c index b31f7f431a3f..99e79b42047c 100644 --- a/drivers/hid/hid-kensington.c +++ b/drivers/hid/hid-kensington.c @@ -46,4 +46,5 @@ static struct hid_driver ks_driver = { }; module_hid_driver(ks_driver); +MODULE_DESCRIPTION("HID driver for Kensigton Slimblade Trackball"); MODULE_LICENSE("GPL"); diff --git a/drivers/hid/hid-keytouch.c b/drivers/hid/hid-keytouch.c index 73bf8642dfe3..a972943baaea 100644 --- a/drivers/hid/hid-keytouch.c +++ b/drivers/hid/hid-keytouch.c @@ -48,5 +48,6 @@ static struct hid_driver keytouch_driver = { }; module_hid_driver(keytouch_driver); +MODULE_DESCRIPTION("HID driver for Keytouch devices not fully compliant with HID standard"); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Jiri Kosina"); diff --git a/drivers/hid/hid-kye.c b/drivers/hid/hid-kye.c index 70ceb9437332..ca2ba3da2458 100644 --- a/drivers/hid/hid-kye.c +++ b/drivers/hid/hid-kye.c @@ -671,4 +671,5 @@ static struct hid_driver kye_driver = { }; module_hid_driver(kye_driver); +MODULE_DESCRIPTION("HID driver for Kye/Genius devices not fully compliant with HID standard"); MODULE_LICENSE("GPL"); diff --git a/drivers/hid/hid-lcpower.c b/drivers/hid/hid-lcpower.c index 8acd3ee5ada5..58953d11ded7 100644 --- a/drivers/hid/hid-lcpower.c +++ b/drivers/hid/hid-lcpower.c @@ -53,4 +53,5 @@ static struct hid_driver ts_driver = { }; module_hid_driver(ts_driver); +MODULE_DESCRIPTION("HID driver for LC Power Model RC1000MCE"); MODULE_LICENSE("GPL"); diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c index e6b2ae68b8fb..e5e72aa5260a 100644 --- a/drivers/hid/hid-lenovo.c +++ b/drivers/hid/hid-lenovo.c @@ -1442,4 +1442,5 @@ static struct hid_driver lenovo_driver = { }; module_hid_driver(lenovo_driver); +MODULE_DESCRIPTION("HID driver for IBM/Lenovo"); MODULE_LICENSE("GPL"); diff --git a/drivers/hid/hid-winwing.c b/drivers/hid/hid-winwing.c index 0e224d1a6466..10a5d87ccb96 100644 --- a/drivers/hid/hid-winwing.c +++ b/drivers/hid/hid-winwing.c @@ -223,4 +223,5 @@ static struct hid_driver winwing_driver = { }; module_hid_driver(winwing_driver); +MODULE_DESCRIPTION("HID driver for WinWing Orion 2 throttle"); MODULE_LICENSE("GPL"); --- base-commit: 34afb82a3c67f869267a26f593b6f8fc6bf35905 change-id: 20240606-md-drivers-hid-42e9f9c85cd9 . Message-ID: <3bab8580-c01a-4183-94af-ba3193c94c0e@gmail.com> Date: Tue, 9 Jul 2024 23:42:49 +0200 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Language: en-US To: Linux Kernel Mailing List Cc: Ian Abbott , H Hartley Sweeten , Michael Hennerich , Peter Rosin , linux-i2c@vger.kernel.org, York Sun From: Mirsad Todorovac Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_drivers/comedi/drivers/tests/=2E?= =?UTF-8?B?Li9uaV9zdGMuaDoxMTQwOjM1OiBlcnJvcjog4oCYcmFuZ2VfbmlfRV9hb19leHQ=?= =?UTF-8?Q?=E2=80=99_defined_but_not_used_=5B-Werror=3Dunused-const-variable?= =?UTF-8?B?PV0=?= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272844 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Dear all, On the linux-next vanilla next-20240709 tree, I have attempted the seed KCONFIG_SEED=0xEE7AB52F which was known from before to trigger various errors in compile and build process. Though this might seem as contributing to channel noise, Linux refuses to build this config, treating warnings as errors, using this build line: $ time nice make W=1 -k -j 36 |& tee ../err-next-20230709-01a.log; date As I know that the Chief Penguin doesn't like warnings, but I am also aware that there are plenty left, there seems to be more tedious work ahead to make the compilers happy. The compiler output is: In file included from drivers/comedi/drivers/tests/ni_routes_test.c:22: drivers/comedi/drivers/tests/../ni_stc.h:1140:35: error: ‘range_ni_E_ao_ext’ defined but not used [-Werror=unused-const-variable=] 1140 | static const struct comedi_lrange range_ni_E_ao_ext; | ^~~~~~~~~~~~~~~~~ drivers/i2c/muxes/i2c-mux-ltc4306.c:200:34: error: ‘ltc4306_of_match’ defined but not used [-Werror=unused-const-variable=] 200 | static const struct of_device_id ltc4306_of_match[] = { | ^~~~~~~~~~~~~~~~ drivers/i2c/muxes/i2c-mux-reg.c:242:34: error: ‘i2c_mux_reg_of_match’ defined but not used [-Werror=unused-const-variable=] 242 | static const struct of_device_id i2c_mux_reg_of_match[] = { | ^~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors cc1: all warnings being treated as errors ------------------------------------------------------------------ 1139 → 1140 static const struct comedi_lrange range_ni_E_ao_ext; 1141 ------------------------------------------------------------------ 199 → 200 static const struct of_device_id ltc4306_of_match[] = { 201 { .compatible = "lltc,ltc4305", .data = &chips[ltc_4305] }, ------------------------------------------------------------------ 239 i2c_put_adapter(muxc->parent); 240 } 241 → 242 static const struct of_device_id i2c_mux_reg_of_match[] = { 243 { .compatible = "i2c-mux-reg", }, 244 {}, 245 }; ------------------------------------------------------------------ These are just unused variables, so to repeat I might be adding to the noise, but in certain configs they prevent build success. Hope this helps. Best regards, Mirsad Todorovac . Date: Tue, 9 Jul 2024 16:57:09 -0500 From: Andrew Halaney To: nm@ti.com, vigneshr@ti.com, kristo@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, vkoul@kernel.org, kishon@kernel.org, sjakhade@cadence.com, rogerq@kernel.org, thomas.richard@bootlin.com, theo.lebrun@bootlin.com, make24@iscas.ac.cn, linux-phy@lists.infradead.org, s-vadapalli@ti.com, mranostay@ti.com Subject: [BUG] k3-j784s4-evm/phy-cadence-torrent: Shared reset using exclusive API Message-ID: X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272854 Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-devicetree Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Hi, Running linux-next on a k3-j784s4-evm I got this splat: [ 4.846253] ------------[ cut here ]------------ [ 4.846266] WARNING: CPU: 4 PID: 308 at drivers/reset/core.c:792 __reset_control_get_internal+0x128/0x160 [ 4.846288] Modules linked in: ti_am335x_adc(+) phy_cadence_torrent(+) can_dev snd_soc_ti_udma snd_soc_j721e_evm snd_soc_pcm3168a_i2c drm_kms_helper rtc_tps6594(+) tps6594_regulator(+) mc at24 kfifo_buf tps6594_pfsm(+) tps6594_esm gpio_regmap snd_soc_pcm3168a snd_soc_ti_edma ti_k3_r5_remoteproc k3_j72xx_bandgap ti_j721e_ufs snd_soc_ti_sdma ti_k3_dsp_remoteproc cdns3_ti drm backlight phy_can_transceiver omap_mailbox tps6594_i2c tps6594_core phy_j721e_wiz ti_am335x_tscadc sa2ul authenc rti_wdt fuse ipv6 [ 4.846336] CPU: 4 UID: 0 PID: 308 Comm: systemd-udevd Not tainted 6.10.0-rc6-next-20240703 #72 [ 4.846342] Hardware name: ti,j784s4-evm Texas Instruments J784S4 EVM/Texas Instruments J784S4 EVM, BIOS 2024.01-rc3 01/01/2024 [ 4.846345] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 4.846349] pc : __reset_control_get_internal+0x128/0x160 [ 4.846354] lr : __of_reset_control_get+0x4e0/0x528 [ 4.846359] sp : ffff8000858b3400 [ 4.846360] x29: ffff8000858b3400 x28: 0000000000000001 x27: ffff000f7c00fa98 [ 4.846365] x26: 0000000000000001 x25: ffff80008324d330 x24: ffff00080aecd2a8 [ 4.846370] x23: 0000000000000001 x22: 0000000000000000 x21: 0000000000000004 [ 4.846374] x20: ffff00080aecd288 x19: fffffffffffffff0 x18: 00000000000001d0 [ 4.846379] x17: 0000000000000230 x16: 00000000000000bc x15: ffff00080a630000 [ 4.846383] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000004 [ 4.846387] x11: 0000000000000000 x10: 0000000000000005 x9 : 0000000000000000 [ 4.846391] x8 : ffff00080741f4c8 x7 : 00736c6c65632d74 x6 : 00000080236d626f [ 4.846396] x5 : 6f626d2300000000 x4 : 0000000080000000 x3 : 0000000000000001 [ 4.846400] x2 : 0000000000000000 x1 : 0000000000000004 x0 : ffff00080aecd288 [ 4.846405] Call trace: [ 4.846407] __reset_control_get_internal+0x128/0x160 [ 4.846413] __of_reset_control_get+0x4e0/0x528 [ 4.846418] of_reset_control_array_get+0xa4/0x1f8 [ 4.846423] cdns_torrent_phy_probe+0xbc8/0x1068 [phy_cadence_torrent] [ 4.846445] platform_probe+0xb4/0xe8 [ 4.846456] really_probe+0x134/0x2e0 [ 4.846460] __driver_probe_device+0xac/0x140 [ 4.846464] driver_probe_device+0x48/0x210 [ 4.846468] __driver_attach+0xe8/0x1b8 [ 4.846472] bus_for_each_dev+0xf8/0x158 [ 4.846475] driver_attach+0x30/0x48 [ 4.846480] bus_add_driver+0x160/0x280 [ 4.846483] driver_register+0x74/0x118 [ 4.846486] __platform_driver_register+0x30/0x48 [ 4.846491] init_module+0x2c/0xff8 [phy_cadence_torrent] [ 4.846501] do_one_initcall+0xd0/0x2e0 [ 4.846509] do_init_module+0x60/0x210 [ 4.846515] load_module+0x14f4/0x1768 [ 4.846519] __arm64_sys_finit_module+0x21c/0x2c0 [ 4.846522] invoke_syscall+0x4c/0x118 [ 4.846529] el0_svc_common+0x8c/0xf0 [ 4.846534] do_el0_svc+0x28/0x40 [ 4.846538] el0_svc+0x34/0x80 [ 4.846548] el0t_64_sync_handler+0x84/0x100 [ 4.846553] el0t_64_sync+0x190/0x198 [ 4.846557] ---[ end trace 0000000000000000 ]--- [ 4.846577] cdns-torrent-phy 5060000.serdes: phy@0: failed to get reset this is because the devicetree has two[0][1] consumers of the same reset: &serdes0 { status = "okay"; serdes0_pcie1_link: phy@0 { reg = <0>; cdns,num-lanes = <4>; #phy-cells = <0>; cdns,phy-type = ; resets = <&serdes_wiz0 1>, <&serdes_wiz0 2>, <&serdes_wiz0 3>, <&serdes_wiz0 4>; }; }; ... &serdes0 { status = "okay"; serdes0_usb_link: phy@3 { reg = <3>; cdns,num-lanes = <1>; #phy-cells = <0>; cdns,phy-type = ; resets = <&serdes_wiz0 4>; }; }; phy-cadence-torrent (the serdes0 consumer here) uses the exclusive consumer API[2], so this blows up. Is the problem here that one of the above devicetree nodes is using the wrong reset, or does the driver need to look into using the shared API? I'm not sure where to find the reset definitions for the IP here unfortunately, so I'm hoping someone can help confirm if those are correct or not. Total aside, I think we should put the above dts snippet into one &serdes0 reference for readability sake. I'd post the patch but I'm hoping to get the above answered first in order to clean that up before shuffling things around for readability sake. [0] pcie serdes0_pcie1_link: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts?h=next-20240703#n1398 [1] usb serdes0_usb_link: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm64/boot/dts/ti/k3-j784s4-evm.dts?h=next-20240703#n1270 [2] phy-cadence-torrent reset usage: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/phy/cadence/phy-cadence-torrent.c?h=next-20240703#n2878 Thanks, Andrew . From: Thorsten Blum To: rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Thorsten Blum Subject: [RESEND PATCH] ring-buffer: Use vma_pages() helper function Date: Tue, 9 Jul 2024 23:56:58 +0200 Message-ID: <20240709215657.322071-2-thorsten.blum@toblux.com> X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1272855 Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-trace-kernel Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail Use the vma_pages() helper function and fix the following Coccinelle/coccicheck warning reported by vma_pages.cocci: WARNING: Consider using vma_pages helper on vma Rename the local variable vma_pages accordingly. Signed-off-by: Thorsten Blum --- kernel/trace/ring_buffer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 28853966aa9a..473ba56b889b 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -6226,7 +6226,7 @@ static int __rb_inc_dec_mapped(struct ring_buffer_per_cpu *cpu_buffer, static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer, struct vm_area_struct *vma) { - unsigned long nr_subbufs, nr_pages, vma_pages, pgoff = vma->vm_pgoff; + unsigned long nr_subbufs, nr_pages, nr_vma_pages, pgoff = vma->vm_pgoff; unsigned int subbuf_pages, subbuf_order; struct page **pages; int p = 0, s = 0; @@ -6252,11 +6252,11 @@ static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer, nr_subbufs = cpu_buffer->nr_pages + 1; /* + reader-subbuf */ nr_pages = ((nr_subbufs) << subbuf_order) - pgoff + 1; /* + meta-page */ - vma_pages = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; - if (!vma_pages || vma_pages > nr_pages) + nr_vma_pages = vma_pages(vma); + if (!nr_vma_pages || nr_vma_pages > nr_pages) return -EINVAL; - nr_pages = vma_pages; + nr_pages = nr_vma_pages; pages = kcalloc(nr_pages, sizeof(*pages), GFP_KERNEL); if (!pages) -- 2.45.2 .