%3Ch1%3ELinux%20%E5%86%85%E6%A0%B8%20LockDep%20%E6%AD%BB%E9%94%81%E6%A3%80%E6%B5%8B%E5%BC%95%E6%93%8E%E6%B7%B1%E5%BA%A6%E5%AE%9E%E6%88%98%EF%BC%9A%E4%BB%8E%E5%8E%9F%E7%90%86%E5%88%B0%E7%94%9F%E4%BA%A7%E7%BA%A7%20Bug%20%E7%8C%8E%E6%9D%80%3C%2Fh1%3E%0A%0A%3Cblockquote%3E%0A%3Cp%3E%E5%9C%A8%E5%A4%9A%E7%BA%BF%E7%A8%8B%E4%B8%8E%E4%B8%AD%E6%96%AD%E4%B8%8A%E4%B8%8B%E6%96%87%E4%BA%A4%E7%BB%87%E7%9A%84%E5%86%85%E6%A0%B8%E4%B8%96%E7%95%8C%E9%87%8C%EF%BC%8C%E9%94%81%E6%98%AF%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E5%90%8C%E6%AD%A5%E5%8E%9F%E8%AF%AD%E3%80%82%E4%BD%86%E5%AE%83%E4%B9%9F%E6%98%AF%E6%9C%80%E8%87%B4%E5%91%BD%E7%9A%84%20Bug%20%E6%BA%90%E5%A4%B4%E4%B9%8B%E4%B8%80%E3%80%82LockDep%20%E6%98%AF%20Linux%20%E5%86%85%E6%A0%B8%E5%86%85%E7%BD%AE%E7%9A%84%E8%BF%90%E8%A1%8C%E6%97%B6%E6%AD%BB%E9%94%81%E6%A3%80%E6%B5%8B%E5%BC%95%E6%93%8E%EF%BC%8C%E5%AE%83%E8%83%BD%E5%9C%A8%E5%BC%80%E5%8F%91%2F%E6%B5%8B%E8%AF%95%E9%98%B6%E6%AE%B5%E4%BB%A5%E6%8E%A5%E8%BF%91%200%20%E8%AF%AF%E6%8A%A5%E7%8E%87%E5%8F%91%E7%8E%B0%E7%A8%8B%E5%BA%8F%E4%B8%AD%E6%BD%9C%E5%9C%A8%E7%9A%84%E6%AD%BB%E9%94%81%E8%B7%AF%E5%BE%84%E2%80%94%E2%80%94%E5%8D%B3%E4%BE%BF%E8%BF%99%E4%BA%9B%E8%B7%AF%E5%BE%84%E5%9C%A8%E6%B5%8B%E8%AF%95%E4%B8%AD%E4%BB%8E%E6%9C%AA%E8%A2%AB%E6%89%A7%E8%A1%8C%E5%88%B0%E3%80%82%E6%9C%AC%E6%96%87%20LockDep%20%E6%A0%B8%E5%BF%83%E5%8E%9F%E7%90%86%E5%87%BA%E5%8F%91%EF%BC%8C%E7%BB%93%E5%90%88%E7%9C%9F%E5%AE%9E%E7%9A%84%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%20Bug%20%E6%A1%88%E4%BE%8B%EF%BC%8C%E7%B3%BB%E7%BB%9F%E8%AE%B2%E8%A7%A3%E5%85%B6%E4%BE%9D%E8%B5%96%E5%9B%BE%E6%A8%A1%E5%9E%8B%E3%80%816%20%E5%A4%A7%E6%AD%BB%E9%94%81%E5%9C%BA%E6%99%AF%E6%A3%80%E6%B5%8B%E3%80%81lockdep%20splat%20%E6%8A%A5%E5%91%8A%E8%A7%A3%E8%AF%BB%E6%96%B9%E6%B3%95%EF%BC%8C%E4%BB%A5%E5%8F%8A%E9%94%81%E7%B1%BB%E6%B3%A8%E8%A7%A3%E7%9A%84%E5%AE%9E%E6%88%98%E6%8A%80%E5%B7%A7%E3%80%82%3C%2Fp%3E%0A%3C%2Fblockquote%3E%0A%0A%3Ch2%3E%E4%B8%80%E3%80%81%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%20LockDep%3C%2Fh2%3E%0A%0A%3Cp%3E%E5%86%85%E6%A0%B8%E4%BB%A3%E7%A0%81%E6%AF%8F%E5%A4%A9%E9%83%BD%E5%9C%A8%E4%B8%8E%E8%87%AA%E6%97%8B%E9%94%81%E3%80%81%E4%BA%92%E6%96%A5%E9%94%81%E3%80%81%E8%AF%BB%E5%86%99%E9%94%81%E6%89%93%E4%BA%A4%E9%81%93%E3%80%82%E4%B8%80%E4%B8%AA%E5%85%B8%E5%9E%8B%E7%9A%84%E5%9D%97%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E4%BC%9A%E6%B6%89%E5%8F%8A%20%3Ccode%3Erequest_queue%3C%2Fcode%3E%E3%80%81%3Ccode%3Erequest%3C%2Fcode%3E%E3%80%81%3Ccode%3Ebdev%3C%2Fcode%3E%20%E7%AD%89%E5%A4%9A%E4%B8%AA%E5%B1%82%E6%AC%A1%E7%9A%84%E9%94%81%EF%BC%9B%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE%E6%A0%88%E7%9A%84%E9%94%81%E4%BE%9D%E8%B5%96%E9%93%BE%E5%BE%80%E5%BE%80%E6%A8%AA%E8%B7%A8%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86%E3%80%81%E8%BD%AF%E4%B8%AD%E6%96%AD%E3%80%81%E7%94%A8%E6%88%B7%E6%80%81%20syscall%20%E4%B8%89%E4%B8%AA%E4%B8%8A%E4%B8%8B%E6%96%87%E3%80%82%3C%2Fp%3E%0A%0A%3Cp%3E%E4%BC%A0%E7%BB%9F%E8%B0%83%E8%AF%95%E6%AD%BB%E9%94%81%E7%9A%84%E6%96%B9%E6%B3%95%E2%80%94%E2%80%94%3Ccode%3Eprintk%3C%2Fcode%3E%E3%80%81%3Ccode%3Egdb%3C%2Fcode%3E%20%E5%8D%95%E6%AD%A5%E3%80%81%E6%A0%B8%E5%BF%83%E8%BD%AC%E5%82%A8%E2%80%94%E2%80%94%E7%BB%9F%E7%BB%9F%E6%92%9E%E5%A2%99%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cul%3E%0A%3Cli%3E%3Cstrong%3E%E6%AD%BB%E9%94%81%E6%98%AF%E8%B7%AF%E5%BE%84%E6%95%8F%E6%84%9F%E7%9A%84%3C%2Fstrong%3E%EF%BC%9A%E6%9F%90%E4%BA%9B%E7%BB%84%E5%90%88%E5%8F%AA%E5%9C%A8%E7%89%B9%E5%AE%9A%E7%9A%84%E4%B8%AD%E6%96%AD%E6%97%B6%E5%BA%8F%E4%B8%8B%E6%89%8D%E8%A7%A6%E5%8F%91%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E6%AD%BB%E9%94%81%20Bug%20%E5%85%B7%E6%9C%89%E6%A6%82%E7%8E%87%E6%80%A7%3C%2Fstrong%3E%EF%BC%9A%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95%E4%B9%9F%E6%9C%AA%E5%BF%85%E8%83%BD%E5%A4%8D%E7%8E%B0%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E6%A0%B8%E5%BF%83%E8%BD%AC%E5%82%A8%E6%97%A0%E5%9B%A0%E6%9E%9C%E5%85%B3%E7%B3%BB%E4%BF%A1%E6%81%AF%3C%2Fstrong%3E%EF%BC%9A%E4%BD%A0%E5%8F%AA%E7%9F%A5%E9%81%93%E6%9F%90%E4%B8%AA%E7%BA%BF%E7%A8%8B%E5%8D%A1%E4%BD%8F%E4%BA%86%EF%BC%8C%E4%BD%86%E4%B8%8D%E7%9F%A5%E9%81%93%E5%AE%83%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8D%A1%E4%BD%8F%E3%80%82%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cp%3ELockDep%20%E7%9A%84%E7%AD%94%E6%A1%88%E6%98%AF%EF%BC%9A%3Cstrong%3E%E5%9C%A8%E6%AF%8F%E6%AC%A1%E7%9C%9F%E5%AE%9E%E5%8A%A0%E9%94%81%E6%97%B6%EF%BC%8C%E5%AE%9E%E6%97%B6%E6%9E%84%E5%BB%BA%E5%B9%B6%E9%AA%8C%E8%AF%81%E4%B8%80%E4%B8%AA%E2%80%9C%E9%94%81%E8%8E%B7%E5%8F%96%E9%A1%BA%E5%BA%8F%E5%9B%BE%E2%80%9D%E3%80%82%E9%81%8D%E5%8E%86%E6%AF%8F%E4%B8%80%E6%9D%A1%E5%8F%AF%E8%83%BD%E7%9A%84%E5%89%8D%E5%90%91%E8%BE%B9%EF%BC%8C%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%BD%A2%E6%88%90%E4%BA%86%E7%8E%AF%E3%80%82%E5%8F%AA%E8%A6%81%E7%8E%AF%E5%BD%A2%E6%88%90%EF%BC%8C%E5%B0%B1%E5%BD%93%E5%9C%BA%E6%8A%A5%E8%AD%A6%E3%80%82%3C%2Fstrong%3E%3C%2Fp%3E%0A%0A%3Cp%3E%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80%EF%BC%9A%E5%8D%B3%E4%BD%BF%E6%9F%90%E6%9D%A1%E6%AD%BB%E9%94%81%E8%B7%AF%E5%BE%84%E5%9C%A8%E6%B5%8B%E8%AF%95%E4%B8%AD%E4%BB%8E%E6%9C%AA%E6%89%A7%E8%A1%8C%EF%BC%8C%E4%BD%86%E5%8F%AA%E8%A6%81%E9%94%81%E8%8E%B7%E5%8F%96%E9%A1%BA%E5%BA%8F%E5%9B%BE%E4%B8%AD%E5%87%BA%E7%8E%B0%E4%BA%86%E7%9F%9B%E7%9B%BE%EF%BC%88%E7%BA%BF%E7%A8%8B%20A%20%E5%8E%86%E5%8F%B2%E4%B8%8A%E5%85%88%E6%8B%BF%20L1%20%E5%86%8D%E6%8B%BF%20L2%EF%BC%8C%E6%9F%90%E5%A4%84%E5%8F%88%E5%85%88%E6%8B%BF%20L2%20%E5%86%8D%E6%8B%BF%20L1%EF%BC%89%EF%BC%8CLockDep%20%E5%B0%B1%E8%83%BD%E5%9C%A8%E7%9F%9B%E7%9B%BE%E4%BA%A7%E7%94%9F%E7%9A%84%E7%9E%AC%E9%97%B4%E6%8A%93%E4%BD%8F%E5%AE%83%E3%80%82%3C%2Fp%3E%0A%0A%3Ch2%3E%E4%BA%8C%E3%80%81LockDep%20%E7%9A%84%E6%A0%B8%E5%BF%83%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%3C%2Fh2%3E%0A%0A%3Ch3%3E2.1%20Lock%20Class%20vs.%20Lock%20Instance%3C%2Fh3%3E%0A%0A%3Cp%3ELockDep%20%E8%B7%9F%E8%B8%AA%E7%9A%84%E6%98%AF%3Cstrong%3E%E9%94%81%E7%B1%BB%EF%BC%88lock%20class%EF%BC%89%3C%2Fstrong%3E%EF%BC%8C%E8%80%8C%E9%9D%9E%E5%8D%95%E7%8B%AC%E7%9A%84%E9%94%81%E5%AE%9E%E4%BE%8B%E3%80%82%E6%89%80%E6%9C%89%E7%94%B1%E5%90%8C%E4%B8%80%20%3Ccode%3Espinlock_t%3C%2Fcode%3E%20%E6%88%96%20%3Ccode%3Emutex%3C%2Fcode%3E%20%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E9%94%81%E5%AE%9E%E4%BE%8B%E5%B1%9E%E4%BA%8E%E5%90%8C%E4%B8%80%E4%B8%AA%E9%94%81%E7%B1%BB%E3%80%82%3C%2Fp%3E%0A%0A%3Cp%3E%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E5%B7%A7%E5%A6%99%E7%9A%84%E6%8A%BD%E8%B1%A1%EF%BC%9A%E5%AE%83%E5%A4%A7%E5%B9%85%E5%87%8F%E5%B0%91%E5%9B%BE%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9%E6%95%B0%E9%87%8F%EF%BC%88%E4%B8%80%E4%B8%AA%E6%A8%A1%E5%9D%97%E9%87%8C%E5%8F%AF%E8%83%BD%E6%9C%89%E4%B8%8A%E5%8D%83%E4%B8%AA%20%3Ccode%3Emutex%3C%2Fcode%3E%EF%BC%8C%E4%BD%86%E5%8F%AA%E6%9C%89%E5%87%A0%E4%B8%AA%20lock%20class%EF%BC%89%EF%BC%8C%E5%90%8C%E6%97%B6%E5%8F%88%E4%B8%8D%E5%A4%B1%E7%B2%BE%E5%BA%A6%E2%80%94%E2%80%94%E5%9B%A0%E4%B8%BA%E6%AD%BB%E9%94%81%E6%9C%AC%E8%B4%A8%E4%B8%8A%E5%8F%91%E7%94%9F%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%B1%BB%E4%B9%8B%E9%97%B4%E7%9A%84%E8%8E%B7%E5%8F%96%E9%A1%BA%E5%BA%8F%E4%B8%8A%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%2F%2F%20%E5%86%85%E6%A0%B8%E6%BA%90%E7%A0%81%20include%2Flinux%2Flockdep.h%20%E6%A0%B8%E5%BF%83%E7%BB%93%E6%9E%84%0Astruct%20lock_class%20%7B%0A%20%20%20%20struct%20hash_list%20%20%20%20%20%20%20%20hash_entry%3B%0A%20%20%20%20struct%20list_head%20%20%20%20%20%20%20%20lock_entry%3B%0A%20%20%20%20struct%20list_head%20%20%20%20%20%20%20%20locks_after%3B%20%20%20%2F%2F%20%E4%BE%9D%E8%B5%96%E5%9B%BE%EF%BC%9A%E6%AD%A4%E7%B1%BB%E4%B9%8B%E5%90%8E%E9%9C%80%E8%A6%81%E8%8E%B7%E5%8F%96%E7%9A%84%E9%94%81%0A%20%20%20%20struct%20list_head%20%20%20%20%20%20%20%20locks_before%3B%20%20%2F%2F%20%E4%BE%9D%E8%B5%96%E5%9B%BE%EF%BC%9A%E6%AD%A4%E7%B1%BB%E4%B9%8B%E5%89%8D%E5%B7%B2%E8%A2%AB%E8%8E%B7%E5%8F%96%E7%9A%84%E9%94%81%0A%20%20%20%20%2F%2F%20...%0A%20%20%20%20const%20char%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Aname%3B%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E9%94%81%E7%B1%BB%E5%90%8D%E7%A7%B0%0A%20%20%20%20unsigned%20long%20%20%20%20%20%20%20%20%20%20%20key%3B%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20%E5%AE%9E%E4%BE%8B%E5%8C%BA%E5%88%86%20key%0A%7D%3B%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E2.2%20%E9%94%81%E9%93%BE%EF%BC%88Lock%20Chain%EF%BC%89%3C%2Fh3%3E%0A%0A%3Cp%3E%E6%AF%8F%E5%BD%93%E7%BA%BF%E7%A8%8B%E6%88%90%E5%8A%9F%E8%8E%B7%E5%8F%96%E4%B8%80%E4%B8%AA%E9%94%81%EF%BC%8CLockDep%20%E5%B0%B1%E7%94%9F%E6%88%90%E4%B8%80%E4%B8%AA%3Cstrong%3E%E9%94%81%E9%93%BE%3C%2Fstrong%3E%EF%BC%8C%E8%AE%B0%E5%BD%95%E2%80%9C%E5%BD%93%E5%89%8D%E6%8C%81%E9%94%81%E4%B8%8A%E4%B8%8B%E6%96%87%E4%B8%8B%EF%BC%8C%E4%B8%8A%E4%B8%80%E6%AC%A1%E6%8C%81%E9%94%81%E7%9A%84%E7%B1%BB%E2%80%9D%E3%80%82%E9%94%81%E9%93%BE%E7%9A%84%E6%A0%B8%E5%BF%83%E5%AD%97%E6%AE%B5%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3Estruct%20lock_chain%20%7B%0A%20%20%20%20u16%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20depth%3B%20%20%20%20%20%20%20%20%20%2F%2F%20%E9%94%81%E9%93%BE%E6%B7%B1%E5%BA%A6%0A%20%20%20%20u16%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20max_lockdep_depth%3B%0A%20%20%20%20unsigned%20long%20%20%20%20%20%20%20%20%20%20%20chain_key%3B%20%20%20%20%20%2F%2F%20%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E8%BF%99%E6%9D%A1%E9%93%BE%0A%20%20%20%20struct%20lock_class%20%20%20%20%20%20%20%2Achain_hlock%3B%20%20%2F%2F%20%E5%BD%93%E5%89%8D%E9%94%81%E7%B1%BB%0A%20%20%20%20struct%20lock_chain%20%20%20%20%20%20%20%2Aprev_chain%3B%20%20%20%2F%2F%20%E5%89%8D%E4%B8%80%E6%9D%A1%E9%93%BE%0A%7D%3B%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E2.3%20%E4%BE%9D%E8%B5%96%E5%9B%BE%E6%9E%84%E5%BB%BA%3C%2Fh3%3E%0A%0A%3Cp%3ELockDep%20%E7%9A%84%E4%BE%9D%E8%B5%96%E5%9B%BE%E6%98%AF%E4%B8%80%E4%B8%AA%3Cstrong%3E%E6%9C%89%E5%90%91%E5%9B%BE%3C%2Fstrong%3E%EF%BC%8C%E8%8A%82%E7%82%B9%E6%98%AF%20lock%20class%EF%BC%8C%E8%BE%B9%E6%98%AF%E8%8E%B7%E5%8F%96%E9%A1%BA%E5%BA%8F%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cul%3E%0A%3Cli%3E%E7%BA%BF%E7%A8%8B%E6%8C%81%E9%94%81%20%3Cstrong%3EL1%3C%2Fstrong%3E%20%E6%97%B6%E5%8F%88%E8%8E%B7%E5%8F%96%E4%BA%86%20%3Cstrong%3EL2%3C%2Fstrong%3E%20%E2%86%92%20%E6%B7%BB%E5%8A%A0%E8%BE%B9%20L1%20%E2%86%92%20L2%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%E5%BD%93%E6%96%B0%E7%9A%84%E8%BE%B9%20%28A%20%E2%86%92%20B%29%20%E5%8A%A0%E5%85%A5%E6%97%B6%EF%BC%8CLockDep%20%E6%89%A7%E8%A1%8C%E4%BB%8E%20B%20%E5%87%BA%E5%8F%91%E7%9A%84%E5%89%8D%E5%90%91%20DFS%EF%BC%8C%E8%8B%A5%E6%90%9C%E7%B4%A2%E5%9B%9E%E5%88%B0%20A%EF%BC%8C%E5%88%99%E8%AF%B4%E6%98%8E%E5%9B%BE%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%8E%AF%20%E2%86%92%20%E6%AD%BB%E9%94%81%E3%80%82%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cp%3E%E5%85%B3%E9%94%AE%E7%BA%A6%E6%9D%9F%EF%BC%9A%3Cstrong%3E%E8%BE%B9%E7%9A%84%E9%AA%8C%E8%AF%81%E6%98%AF%E2%80%9C%E5%8D%B3%E6%97%B6%E2%80%9D%E7%9A%84%3C%2Fstrong%3E%E3%80%82%E5%8A%A0%E9%94%81%E6%93%8D%E4%BD%9C%E4%BC%9A%E8%A2%AB%20lockdep%20%E8%AE%B0%E5%BD%95%E3%80%81%E9%AA%8C%E8%AF%81%E3%80%81%E5%86%8D%E6%89%A7%E8%A1%8C%E2%80%94%E2%80%94%E4%BB%BB%E4%BD%95%E9%A1%BA%E5%BA%8F%E7%9F%9B%E7%9B%BE%E5%BD%93%E5%9C%BA%E8%A7%A6%E5%8F%91%20splat%EF%BC%8C%E4%B8%8D%E4%BC%9A%E7%AD%89%E5%88%B0%E7%9C%9F%E6%AD%A3%E6%AD%BB%E9%94%81%E6%97%B6%E6%89%8D%E6%8A%A5%E5%91%8A%E3%80%82%3C%2Fp%3E%0A%0A%3Ch2%3E%E4%B8%89%E3%80%81%E5%85%AD%E5%A4%A7%E6%AD%BB%E9%94%81%E5%9C%BA%E6%99%AF%E7%9A%84%E6%A3%80%E6%B5%8B%E5%8E%9F%E7%90%86%3C%2Fh2%3E%0A%0A%3Cp%3ELockDep%20%E8%83%BD%E8%AF%86%E5%88%AB%206%20%E5%A4%A7%E7%B1%BB%E6%AD%BB%E9%94%81%E5%9C%BA%E6%99%AF%EF%BC%9A%3C%2Fp%3E%0A%0A%3Ch3%3E%E5%9C%BA%E6%99%AF%201%EF%BC%9A%E7%BB%8F%E5%85%B8%20AB-BA%20%E6%AD%BB%E9%94%81%3C%2Fh3%3E%0A%0A%3Cp%3E%E6%9C%80%E5%B8%B8%E8%A7%81%E4%B9%9F%E6%98%AF%E6%9C%80%E5%AE%B9%E6%98%93%E7%96%8F%E5%BF%BD%E7%9A%84%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A%2F%2F%20%E6%A8%A1%E5%9D%97%20A%0Aspin_lock%28%26lock_a%29%3B%0Aspin_lock%28%26lock_b%29%3B%20%20%20%2F%2F%20A%3A%20a%20%E2%86%92%20b%0Aspin_unlock%28%26lock_b%29%3B%0Aspin_unlock%28%26lock_a%29%3B%0A%0A%2F%2F%20%E6%A8%A1%E5%9D%97%20B%0Aspin_lock%28%26lock_b%29%3B%0Aspin_lock%28%26lock_a%29%3B%20%20%20%2F%2F%20B%3A%20b%20%E2%86%92%20a%EF%BC%8C%E4%B8%8E%20A%20%E7%9F%9B%E7%9B%BE%EF%BC%81%0Aspin_unlock%28%26lock_a%29%3B%0Aspin_unlock%28%26lock_b%29%3B%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Cp%3E%E5%BD%93%E6%A8%A1%E5%9D%97%20B%20%E9%87%8C%20%3Ccode%3Espin_lock%28%26lock_a%29%3C%2Fcode%3E%20%E6%89%A7%E8%A1%8C%E6%97%B6%EF%BC%8CLockDep%20%E4%BC%9A%E5%8F%91%E7%8E%B0%EF%BC%9A%E5%8E%86%E5%8F%B2%E4%B8%8A%E5%B7%B2%E7%BB%8F%E8%AE%B0%E5%BD%95%E8%BF%87%20a%20%E2%86%92%20b%20%E7%9A%84%E5%85%B3%E7%B3%BB%EF%BC%8C%E7%8E%B0%E5%9C%A8%E5%87%BA%E7%8E%B0%20b%20%E2%86%92%20a%EF%BC%8C%E5%9B%BE%E4%B8%AD%E5%BD%A2%E6%88%90%E7%8E%AF%E3%80%82%E7%AB%8B%E5%8D%B3%20splat%E3%80%82%3C%2Fp%3E%0A%0A%3Ch3%3E%E5%9C%BA%E6%99%AF%202%EF%BC%9A%E4%B8%AD%E6%96%AD%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8F%8D%E8%BD%AC%3C%2Fh3%3E%0A%0A%3Cp%3E%E5%9C%A8%20process%20context%20%E5%85%B3%E4%B8%AD%E6%96%AD%E8%8E%B7%E5%8F%96%E7%9A%84%E9%94%81%EF%BC%8C%E8%8B%A5%E4%B9%9F%E5%9C%A8%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86%E5%87%BD%E6%95%B0%E4%B8%AD%E8%8E%B7%E5%8F%96%EF%BC%8C%E4%BC%9A%E4%BA%A7%E7%94%9F%20IRQ-safe%20%E5%8F%8D%E8%BD%AC%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A%2F%2F%20process%20context%0Aspin_lock_irqsave%28%26lock_outer%2C%20flags%29%3B%0Aspin_lock%28%26lock_inner%29%3B%0Aspin_unlock%28%26lock_inner%29%3B%0Aspin_unlock_irqrestore%28%26lock_outer%2C%20flags%29%3B%0A%0A%2F%2F%20%E4%B8%AD%E6%96%AD%E5%A4%84%E7%90%86%E5%87%BD%E6%95%B0%0Aspin_lock%28%26lock_inner%29%3B%20%20%20%2F%2F%20%E5%8D%B1%E9%99%A9%EF%BC%81%0Aspin_lock%28%26lock_outer%29%3B%20%20%20%2F%2F%20LockDep%20%E6%A3%80%E6%B5%8B%E5%88%B0%E5%8F%8D%E8%BD%AC%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Cp%3ELockDep%20%E5%B0%86%22%E9%94%81%20%2B%20%E4%B8%AD%E6%96%AD%E7%8A%B6%E6%80%81%22%E8%A7%86%E4%B8%BA%E4%B8%80%E4%B8%AA%E7%BB%B4%E5%BA%A6%E7%9A%84%20lock%20class%E3%80%82%E5%BD%93%E4%B8%8D%E5%B8%A6%20%3Ccode%3E_irqsave%3C%2Fcode%3E%20%E8%8E%B7%E5%8F%96%E7%9A%84%E9%94%81%E5%87%BA%E7%8E%B0%E5%9C%A8%E4%B8%AD%E6%96%AD%E4%B8%8A%E4%B8%8B%E6%96%87%E4%B8%AD%E6%97%B6%EF%BC%8C%E5%AE%83%E8%A2%AB%E6%A0%87%E8%AE%B0%E4%B8%BA%20hardirq-safe%EF%BC%9B%E4%B8%80%E6%97%A6%E6%9C%89%E4%BA%BA%E5%9C%A8%E8%BF%9B%E7%A8%8B%E4%B8%8A%E4%B8%8B%E6%96%87%E5%85%B3%E4%B8%AD%E6%96%AD%E5%90%8E%E8%8E%B7%E5%8F%96%E8%AF%A5%E9%94%81%EF%BC%8CLockDep%20%E6%A3%80%E6%B5%8B%E5%88%B0%E5%8F%8D%E8%BD%AC%E2%80%94%E2%80%94%E5%9B%A0%E4%B8%BA%E4%B8%AD%E6%96%AD%E5%8F%AF%E8%83%BD%E5%8F%91%E7%94%9F%E5%9C%A8%20process%20context%20%E6%8C%81%E6%9C%89%20lock_inner%20%E6%97%B6%EF%BC%8C%E5%90%8C%E6%97%B6%E6%83%B3%E8%8E%B7%E5%8F%96%20lock_outer%E3%80%82%3C%2Fp%3E%0A%0A%3Ch3%3E%E5%9C%BA%E6%99%AF%203%EF%BC%9A%E8%AF%BB%E5%86%99%E9%94%81%E5%8F%8D%E8%BD%AC%EF%BC%88Read-Write%20Lock%20Inversion%EF%BC%89%3C%2Fh3%3E%0A%0A%3Cp%3E%E8%AF%BB%E5%86%99%E9%94%81%E7%9A%84%E7%89%B9%E6%AE%8A%E8%AF%AD%E4%B9%89%EF%BC%88%E8%AF%BB%E5%85%B1%E4%BA%AB%E3%80%81%E5%86%99%E7%8B%AC%E5%8D%A0%EF%BC%89%E5%9C%A8%20lockdep%20%E4%B8%AD%E8%A2%AB%E5%BB%BA%E6%A8%A1%E4%B8%BA%E7%8B%AC%E7%AB%8B%E7%9A%84%E9%94%81%E7%B1%BB%E3%80%82%E4%B8%8D%E5%90%8C%E6%83%85%E6%99%AF%E4%B8%8B%EF%BC%88%E5%86%99%E2%86%92%E5%86%99%E3%80%81%E8%AF%BB%E2%86%92%E5%86%99%E3%80%81%E5%86%99%E2%86%92%20read%20%E9%80%92%E5%BD%92%EF%BC%89%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BE%9D%E8%B5%96%E6%96%B9%E5%90%91%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0A%2F%2F%20%E7%BA%BF%E7%A8%8B%201%3A%20%E6%8C%81%E6%9C%89%E5%86%99%E9%94%81%EF%BC%8C%E5%8F%88%E8%8E%B7%E5%8F%96%E5%8F%A6%E4%B8%80%E6%8A%8A%E8%AF%BB%E9%94%81%0Awrite_lock%28%26rwlock_a%29%3B%20%20%20%20%20%2F%2F%20%E5%86%99%E8%8E%B7%E5%BE%97%20rwlock_a%0Aread_lock%28%26rwlock_b%29%3B%20%20%20%20%20%20%2F%2F%20%E8%AF%BB%E8%8E%B7%E5%BE%97%20rwlock_b%0A%2F%2F%20...%0Awrite_unlock%28%26rwlock_a%29%3B%0Aread_unlock%28%26rwlock_b%29%3B%0A%0A%2F%2F%20%E7%BA%BF%E7%A8%8B%202%EF%BC%9A%E5%8F%8D%E8%BD%AC%E8%B7%AF%E5%BE%84%0Awrite_lock%28%26rwlock_b%29%3B%20%20%20%20%20%2F%2F%20%E5%86%99%E8%8E%B7%E5%BE%97%20rwlock_b%0Aread_lock%28%26rwlock_a%29%3B%20%20%20%20%20%20%2F%2F%20%E8%AF%BB%E8%8E%B7%E5%BE%97%20rwlock_a%20%E2%80%94%E2%80%94%20lockdep%20splat%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Cp%3ELockDep%20%E6%A0%B9%E6%8D%AE%22%E5%86%99%22%E6%AF%94%22%E8%AF%BB%22%E6%9B%B4%E4%B8%A5%E6%A0%BC%E7%9A%84%E7%89%B9%E6%80%A7%EF%BC%8C%E6%8E%A8%E6%96%AD%E4%B8%A4%E6%9D%A1%E9%94%81%E9%93%BE%E7%9A%84%E5%8F%8D%E8%BD%AC%E3%80%82%3C%2Fp%3E%0A%0A%3Ch3%3E%E5%9C%BA%E6%99%AF%204%EF%BC%9A%E9%80%92%E5%BD%92%E6%AD%BB%E9%94%81%3C%2Fh3%3E%0A%0A%3Cp%3E%E5%90%8C%E4%B8%80%E4%B8%AA%E9%94%81%E8%A2%AB%E5%90%8C%E4%B8%80%E7%BA%BF%E7%A8%8B%E9%87%8D%E5%85%A5%E4%B8%A4%E6%AC%A1%EF%BC%8C%E7%AC%AC%E4%BA%8C%E6%AC%A1%E5%B0%86%E6%AD%BB%E9%94%81%E3%80%82LockDep%20%E9%80%9A%E8%BF%87%20%3Ccode%3Elock_acquire%28%29%3C%2Fcode%3E%20%E6%A3%80%E6%9F%A5%E5%BD%93%E5%89%8D%E7%BA%BF%E7%A8%8B%E7%9A%84%20held_locks%20%E9%93%BE%E8%A1%A8%EF%BC%8C%E8%8B%A5%E7%9B%AE%E6%A0%87%E9%94%81%E7%B1%BB%E5%B7%B2%E5%87%BA%E7%8E%B0%E5%9C%A8%E5%BD%93%E5%89%8D%E6%8C%81%E6%9C%89%E9%94%81%E9%93%BE%E4%B8%AD%EF%BC%8C%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%20splat%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Aspin_lock%28%26lock_x%29%3B%0Aspin_lock%28%26lock_x%29%3B%20%20%20%2F%2F%20%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%20recursion%20%E8%AD%A6%E5%91%8A%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E%E5%9C%BA%E6%99%AF%205%EF%BC%9A%E8%B0%83%E5%BA%A6%E5%99%A8%E4%B8%AD%E7%9A%84%E9%94%81%E7%A6%81%E6%AD%A2%3C%2Fh3%3E%0A%0A%3Cp%3E%E5%86%85%E6%A0%B8%E7%A6%81%E6%AD%A2%E5%9C%A8%E6%8C%81%E6%9C%89%E6%9F%90%E4%BA%9B%E9%94%81%E6%97%B6%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8%20%3Ccode%3Eschedule%28%29%3C%2Fcode%3E%EF%BC%88%E5%A6%82%E6%8C%81%E6%9C%89%E8%87%AA%E6%97%8B%E9%94%81%E3%80%81%E6%8C%81%E6%9C%89%20RCU%20read%20lock%20%E7%AD%89%EF%BC%89%E3%80%82LockDep%20%E8%B7%9F%E8%B8%AA%E6%8C%81%E9%94%81%E6%97%B6%E6%98%AF%E5%90%A6%E8%BF%9B%E5%85%A5%20might_sleep%20%E4%B8%8A%E4%B8%8B%E6%96%87%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Aspin_lock%28%26lock_x%29%3B%0Akmalloc%28GFP_KERNEL%29%3B%20%20%2F%2F%20%E5%8F%AF%E8%83%BD%E7%9D%A1%E7%9C%A0%EF%BC%8CLockDep%20splat%0Aspin_unlock%28%26lock_x%29%3B%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E%E5%9C%BA%E6%99%AF%206%EF%BC%9A%E9%87%8A%E6%94%BE%E9%A1%BA%E5%BA%8F%E4%B8%8E%E5%88%9D%E5%A7%8B%E5%8C%96%E4%B8%8D%E4%B8%80%E8%87%B4%3C%2Fh3%3E%0A%0A%3Cp%3E%E9%87%8A%E6%94%BE%E9%94%81%E7%9A%84%E9%A1%BA%E5%BA%8F%E5%BA%94%E8%AF%A5%E4%B8%8E%E8%8E%B7%E5%8F%96%E7%9A%84%E9%A1%BA%E5%BA%8F%E7%9B%B8%E5%8F%8D%EF%BC%8CLockDep%20%E7%A1%AE%E4%BF%9D%E8%BF%99%E4%B8%80%E7%82%B9%E3%80%82%E5%A6%82%E6%9E%9C%E9%87%8A%E6%94%BE%E7%9A%84%E9%94%81%E4%B8%8D%E6%98%AF%E6%9C%80%E8%BF%91%E8%8E%B7%E5%8F%96%E7%9A%84%E9%94%81%EF%BC%88LIFO%20%E9%A1%BA%E5%BA%8F%E8%A2%AB%E7%A0%B4%E5%9D%8F%EF%BC%89%EF%BC%8C%E6%88%96%E5%B0%86%E6%9C%AA%E6%8C%81%E6%9C%89%E7%9A%84%E9%94%81%E9%87%8A%E6%94%BE%EF%BC%8CLockDep%20%E5%9D%87%E4%BC%9A%E6%8D%95%E8%8E%B7%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Aspin_lock%28%26lock_a%29%3B%0Aspin_lock%28%26lock_b%29%3B%0Aspin_unlock%28%26lock_a%29%3B%20%20%20%2F%2F%20%E9%94%99%E8%AF%AF%EF%BC%9A%E5%BA%94%E8%AF%A5%E5%85%88%E9%87%8A%E6%94%BE%20b%0Aspin_unlock%28%26lock_b%29%3B%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch2%3E%E5%9B%9B%E3%80%81%E7%9C%9F%E5%AE%9E%E7%94%9F%E4%BA%A7%E7%BA%A7%E6%A1%88%E4%BE%8B%EF%BC%9A%E5%A4%9A%E9%98%9F%E5%88%97%E5%9D%97%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E7%9A%84%E6%AD%BB%E9%94%81%E4%BF%AE%E5%A4%8D%3C%2Fh2%3E%0A%0A%3Cp%3E%E4%B8%8B%E9%9D%A2%E8%BF%98%E5%8E%9F%E4%B8%80%E4%B8%AA%E7%9C%9F%E5%AE%9E%E7%9A%84%E5%86%85%E6%A0%B8%E6%A8%A1%E5%9D%97%20Bug%EF%BC%8C%E5%B1%95%E7%A4%BA%20LockDep%20%E7%9A%84%20splat%20%E6%8A%A5%E5%91%8A%E8%A7%A3%E8%AF%BB%E6%96%B9%E6%B3%95%E3%80%82%3C%2Fp%3E%0A%0A%3Ch3%3E4.1%20%E6%A8%A1%E5%9D%97%E8%AE%BE%E8%AE%A1%3C%2Fh3%3E%0A%0A%3Cp%3E%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8C%96%E7%9A%84%E5%A4%9A%E9%98%9F%E5%88%97%E5%AD%97%E7%AC%A6%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%EF%BC%8C%E5%8C%85%E5%90%AB%E4%B8%A4%E4%B8%AA%E5%B1%82%E6%AC%A1%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cul%3E%0A%3Cli%3E%3Cstrong%3E%E9%98%9F%E5%88%97%E5%B1%82%3C%2Fstrong%3E%EF%BC%9A%E6%AF%8F%E4%B8%AA%E9%98%9F%E5%88%97%E6%8C%81%E6%9C%89%20%3Ccode%3Equeue_lock%3C%2Fcode%3E%20%E4%BF%9D%E6%8A%A4%20pending%20list%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E8%AE%BE%E5%A4%87%E5%B1%82%3C%2Fstrong%3E%EF%BC%9A%E6%8C%81%E6%9C%89%20%3Ccode%3Edev_lock%3C%2Fcode%3E%20%E7%AE%A1%E7%90%86%E9%98%9F%E5%88%97%E9%9B%86%E5%90%88%E3%80%82%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Astruct%20my_dev%20%7B%0A%20%20%20%20spinlock_t%20dev_lock%3B%0A%20%20%20%20struct%20list_head%20queues%3B%0A%7D%3B%0A%0Astruct%20my_queue%20%7B%0A%20%20%20%20spinlock_t%20queue_lock%3B%0A%20%20%20%20struct%20list_head%20pending%3B%0A%20%20%20%20struct%20my_dev%20%2Adev%3B%0A%7D%3B%0A%0A%2F%2F%20%E6%93%8D%E4%BD%9C%201%EF%BC%9Aenqueue%20%E6%95%B0%E6%8D%AE%E5%88%B0%E6%9F%90%E4%B8%AA%E9%98%9F%E5%88%97%0Avoid%20enqueue%28struct%20my_queue%20%2Aq%2C%20struct%20req%20%2Ar%29%0A%7B%0A%20%20%20%20spin_lock%28%26q-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20list_add_tail%28%26r-%26gt%3Blist%2C%20%26q-%26gt%3Bpending%29%3B%0A%20%20%20%20spin_unlock%28%26q-%26gt%3Bqueue_lock%29%3B%0A%7D%0A%0A%2F%2F%20%E6%93%8D%E4%BD%9C%202%EF%BC%9A%E8%AE%BE%E5%A4%87%E5%85%A8%E5%B1%80%20flush%EF%BC%88%E9%81%8D%E5%8E%86%E6%89%80%E6%9C%89%E9%98%9F%E5%88%97%E5%B9%B6%E5%A4%84%E7%90%86%20pending%EF%BC%89%0Avoid%20flush_dev%28struct%20my_dev%20%2Adev%29%0A%7B%0A%20%20%20%20struct%20my_queue%20%2Aq%3B%0A%20%20%20%20spin_lock%28%26dev-%26gt%3Bdev_lock%29%3B%0A%20%20%20%20list_for_each_entry%28q%2C%20%26dev-%26gt%3Bqueues%2C%20node%29%20%7B%0A%20%20%20%20%20%20%20%20spin_lock%28%26q-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%20%20%20%20process_pending%28q%29%3B%20%20%20%2F%2F%20%E9%95%BF%E6%97%B6%E9%97%B4%E6%8C%81%E6%9C%89%0A%20%20%20%20%20%20%20%20spin_unlock%28%26q-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20spin_unlock%28%26dev-%26gt%3Bdev_lock%29%3B%0A%7D%0A%0A%2F%2F%20%E6%93%8D%E4%BD%9C%203%EF%BC%9A%E5%B0%86%E8%AF%B7%E6%B1%82%20A%20%E4%BB%8E%E9%98%9F%E5%88%97%201%20%E8%BF%81%E7%A7%BB%E5%88%B0%E9%98%9F%E5%88%97%202%0Avoid%20migrate%28struct%20req%20%2Ar%2C%20struct%20my_queue%20%2Adst%29%0A%7B%0A%20%20%20%20spin_lock%28%26r-%26gt%3Bq-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20list_del%28%26r-%26gt%3Blist%29%3B%0A%20%20%20%20spin_unlock%28%26r-%26gt%3Bq-%26gt%3Bqueue_lock%29%3B%0A%0A%20%20%20%20spin_lock%28%26dst-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20list_add_tail%28%26r-%26gt%3Blist%2C%20%26dst-%26gt%3Bpending%29%3B%0A%20%20%20%20spin_unlock%28%26dst-%26gt%3Bqueue_lock%29%3B%0A%7D%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E4.2%20LockDep%20%E6%8A%A5%E5%91%8A%3C%2Fh3%3E%0A%0A%3Cp%3E%E5%8A%A0%E8%BD%BD%E6%A8%A1%E5%9D%97%E5%B9%B6%E8%A7%A6%E5%8F%91%20flush%2Bmigrate%20%E5%B9%B6%E5%8F%91%E5%90%8E%EF%BC%8CLockDep%20%E6%8A%A5%E5%91%8A%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%3E%0A%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%0A%5B%20INFO%3A%20possible%20circular%20locking%20dependency%20detected%20%5D%0A6.8.0-rc5-lockdep%20%231%20Not%20tainted%0A------------------------------------------------------%0Amigration%2F0%2F15%20is%20trying%20to%20acquire%20lock%3A%0Affff8881003a50c0%20%28%26q2-%26gt%3Bqueue_lock%29%7B%2B.%2B.%7D-%7B2%3A2%7D%2C%20at%3A%20migrate%2B0x42%2F0xc0%20%5Bmy_lockdep%5D%0A%0Abut%20task%20is%20already%20holding%20lock%3A%0Affff8881003a4e80%20%28%26q1-%26gt%3Bqueue_lock%29%7B%2B.%2B.%7D-%7B2%3A2%7D%2C%20at%3A%20migrate%2B0x1a%2F0xc0%20%5Bmy_lockdep%5D%0A%0Awhich%20lock%20already%20depends%20on%20the%20other%20lock%2C%20and%20new%20lock%20would%20create%20a%20circular%20dependency.%0A%0Aother%20info%20that%20might%20help%20us%20debug%20this%3A%0A%0A%20Possible%20unsafe%20locking%20sequence%3A%0A%0A%20%20%20%20%20%20%20CPU0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20CPU1%0A%20%20%20%20%20%20%20----%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20----%0A%20%20lock%28%26q2-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lock%28%26dev-%26gt%3Bdev_lock%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lock%28%26q1-%26gt%3Bqueue_lock%29%3B%0A%20%20lock%28%26dev-%26gt%3Bdev_lock%29%3B%0A%0A%2A%2A%2A%20DEADLOCK%20%2A%2A%2A%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E4.3%20%E4%BF%AE%E5%A4%8D%E6%96%B9%E6%A1%88%3C%2Fh3%3E%0A%0A%3Cp%3E%E6%A0%B8%E5%BF%83%E9%97%AE%E9%A2%98%E6%98%AF%20%3Ccode%3Eflush_dev%3C%2Fcode%3E%20%E5%9C%A8%E6%8C%81%E6%9C%89%20%3Ccode%3Edev_lock%3C%2Fcode%3E%20%E6%97%B6%E5%8E%BB%E8%8E%B7%E5%8F%96%20%3Ccode%3Equeue_lock%3C%2Fcode%3E%EF%BC%8C%E8%80%8C%20%3Ccode%3Emigrate%3C%2Fcode%3E%20%E5%9C%A8%E9%87%8A%E6%94%BE%20%3Ccode%3Equeue_lock%3C%2Fcode%3E%20%E5%90%8E%E5%8F%88%E5%8E%BB%E8%8E%B7%E5%8F%96%20%3Ccode%3Edev_lock%3C%2Fcode%3E%E3%80%82%E4%B8%A4%E8%80%85%E4%BA%A4%E5%8F%89%E5%BD%A2%E6%88%90%E7%8E%AF%E3%80%82%3C%2Fp%3E%0A%0A%3Cp%3E%E4%BF%AE%E5%A4%8D%E6%96%B9%E6%B3%95%EF%BC%9A%3Cstrong%3E%E7%BB%9F%E4%B8%80%E9%94%81%E8%8E%B7%E5%8F%96%E9%A1%BA%E5%BA%8F%3C%2Fstrong%3E%E2%80%94%E2%80%94%E8%BF%81%E7%A7%BB%E6%93%8D%E4%BD%9C%E6%94%B9%E9%80%A0%E4%B8%BA%22%E5%85%88%E8%8E%B7%E5%8F%96%E6%BA%90%E5%92%8C%E7%9B%AE%E6%A0%87%E7%9A%84%20queue_lock%EF%BC%8C%E5%86%8D%E8%8E%B7%E5%8F%96%20dev_lock%22%E3%80%82%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Avoid%20migrate_fixed%28struct%20req%20%2Ar%2C%20struct%20my_queue%20%2Adst%29%0A%7B%0A%20%20%20%20struct%20my_queue%20%2Asrc%20%3D%20r-%26gt%3Bq%3B%0A%0A%20%20%20%20%2F%2F%20%E7%BB%9F%E4%B8%80%E6%8C%89%E5%9C%B0%E5%9D%80%E9%A1%BA%E5%BA%8F%E8%8E%B7%E5%8F%96%20queue_lock%EF%BC%8C%E9%81%BF%E5%85%8D%20AB-BA%0A%20%20%20%20if%20%28src%20%26lt%3B%20dst%29%20%7B%0A%20%20%20%20%20%20%20%20spin_lock%28%26src-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%20%20%20%20spin_lock%28%26dst-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20spin_lock%28%26dst-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%20%20%20%20spin_lock%28%26src-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20spin_lock%28%26src-%26gt%3Bdev-%26gt%3Bdev_lock%29%3B%0A%0A%20%20%20%20list_del%28%26r-%26gt%3Blist%29%3B%0A%20%20%20%20r-%26gt%3Bq%20%3D%20dst%3B%0A%20%20%20%20list_add_tail%28%26r-%26gt%3Blist%2C%20%26dst-%26gt%3Bpending%29%3B%0A%0A%20%20%20%20spin_unlock%28%26src-%26gt%3Bdev-%26gt%3Bdev_lock%29%3B%0A%20%20%20%20spin_unlock%28%26dst-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20spin_unlock%28%26src-%26gt%3Bqueue_lock%29%3B%0A%7D%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Cp%3E%E5%90%8C%E6%97%B6%E5%9C%A8%20%3Ccode%3Eflush_dev%3C%2Fcode%3E%20%E4%B8%AD%E4%B9%9F%E6%8C%89%E5%9C%B0%E5%9D%80%E9%A1%BA%E5%BA%8F%E9%81%8D%E5%8E%86%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Avoid%20flush_dev_fixed%28struct%20my_dev%20%2Adev%29%0A%7B%0A%20%20%20%20struct%20my_queue%20%2Aq%3B%0A%20%20%20%20spin_lock%28%26dev-%26gt%3Bdev_lock%29%3B%0A%20%20%20%20list_for_each_entry%28q%2C%20%26dev-%26gt%3Bqueues%2C%20node%29%20%7B%0A%20%20%20%20%20%20%20%20spin_lock_nested%28%26q-%26gt%3Bqueue_lock%2C%20SINGLE_DEPTH_NESTING%29%3B%0A%20%20%20%20%20%20%20%20process_pending%28q%29%3B%0A%20%20%20%20%20%20%20%20spin_unlock%28%26q-%26gt%3Bqueue_lock%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20spin_unlock%28%26dev-%26gt%3Bdev_lock%29%3B%0A%7D%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Cp%3ELockDep%20%E4%B8%8D%E5%86%8D%20splat%E3%80%82%3C%2Fp%3E%0A%0A%3Ch2%3E%E4%BA%94%E3%80%81LockDep%20%E9%80%89%E9%A1%B9%E4%B8%8E%E7%94%9F%E4%BA%A7%E4%BD%BF%E7%94%A8%E5%BB%BA%E8%AE%AE%3C%2Fh2%3E%0A%0A%3Ch3%3E5.1%20%E7%BC%96%E8%AF%91%E6%9C%9F%E9%85%8D%E7%BD%AE%3C%2Fh3%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-kconfig%22%3E%0ACONFIG_PROVE_LOCKING%3Dy%20%20%20%20%20%20%20%20%20%20%23%20%E5%90%AF%E7%94%A8%20LockDep%0ACONFIG_LOCK_STAT%3Dy%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20%E9%94%81%E7%BB%9F%E8%AE%A1%E4%BF%A1%E6%81%AF%0ACONFIG_DEBUG_LOCK_API%20SELFTEST%3Dy%20%23%20%E8%87%AA%E6%B5%8B%E8%AF%95%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E5.2%20%E8%BF%90%E8%A1%8C%E6%97%B6%E7%94%A8%20sysctl%20%E8%B0%83%E6%95%B4%3C%2Fh3%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-bash%22%3E%0A%23%20%E8%AE%BE%E7%BD%AE%20LockDep%20%E6%9C%80%E5%A4%A7%E9%94%81%E9%93%BE%E8%BF%BD%E8%B8%AA%E6%B7%B1%E5%BA%A6%EF%BC%88%E9%BB%98%E8%AE%A4%2048%EF%BC%89%0Aecho%2064%20%26gt%3B%20%2Fproc%2Fsys%2Flockdep_depth%0A%0A%23%20%E5%85%B3%E9%97%AD%20LockDep%EF%BC%88%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%E5%AF%B9%E6%AF%94%EF%BC%89%0Aecho%200%20%26gt%3B%20%2Fproc%2Fsys%2Flockdep%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E5.3%20%E5%B8%B8%E8%A7%81%E9%99%B7%E9%98%B1%EF%BC%9A%E8%99%9A%E5%81%87%E8%AD%A6%E5%91%8A%E7%9A%84%E5%A4%84%E7%90%86%3C%2Fh3%3E%0A%0A%3Cp%3ELockDep%20%E8%99%BD%E5%BC%BA%E5%A4%A7%EF%BC%8C%E4%BD%86%E5%81%B6%E6%9C%89%E8%99%9A%E5%81%87%E8%AD%A6%E5%91%8A%E3%80%82%E5%B8%B8%E8%A7%81%E5%A4%84%E7%90%86%E5%8A%9E%E6%B3%95%EF%BC%9A%3C%2Fp%3E%0A%0A%3Ctable%3E%3Cthead%3E%3Ctr%3E%0A%3Cth%3E%E6%83%85%E5%86%B5%3C%2Fth%3E%0A%3Cth%3E%E5%A4%84%E7%90%86%3C%2Fth%3E%0A%3C%2Ftr%3E%3C%2Fthead%3E%3Ctbody%3E%0A%3Ctr%3E%0A%3Ctd%3E%E4%B8%8D%E5%90%8C%E9%94%81%E5%AE%9E%E4%BE%8B%E7%9A%84%E7%9C%9F%E5%AE%9E%E5%B1%9E%E6%80%A7%E4%B8%8D%E5%90%8C%EF%BC%88%E5%A6%82%E4%B8%8D%E5%90%8C%E5%B1%82%E7%BA%A7%E7%9A%84%20%3Ccode%3Emutex%3C%2Fcode%3E%EF%BC%89%3C%2Ftd%3E%0A%3Ctd%3E%E7%94%A8%20%3Ccode%3Elockdep_set_class%28%29%3C%2Fcode%3E%20%E5%88%86%E8%AE%BE%E4%B8%8D%E5%90%8C%E9%94%81%E7%B1%BB%3C%2Ftd%3E%0A%3C%2Ftr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E9%80%92%E5%BD%92%E9%94%81%EF%BC%88%E5%90%8C%E4%B8%80%E9%94%81%E7%B1%BB%E5%85%81%E8%AE%B8%E9%87%8D%E5%85%A5%EF%BC%89%3C%2Ftd%3E%0A%3Ctd%3E%E4%BD%BF%E7%94%A8%20%3Ccode%3Emutex_lock_nested%28%29%3C%2Fcode%3E%20%2F%20%3Ccode%3Espin_lock_nested%28%29%3C%2Fcode%3E%20%E6%8C%87%E5%AE%9A%20subclass%3C%2Ftd%3E%0A%3C%2Ftr%3E%0A%3Ctr%3E%0A%3Ctd%3E%E5%B7%B2%E7%9F%A5%E5%AE%89%E5%85%A8%E4%BD%86%E4%BB%A5%20lockdep%20%E6%97%A0%E6%B3%95%E6%8E%A8%E7%90%86%E7%9A%84%E7%BB%84%E5%90%88%3C%2Ftd%3E%0A%3Ctd%3E%3Ccode%3Elockdep_off%28%29%3C%2Fcode%3E%2F%3Ccode%3Elockdep_on%28%29%3C%2Fcode%3E%EF%BC%88%E6%85%8E%E7%94%A8%EF%BC%89%3C%2Ftd%3E%0A%3C%2Ftr%3E%0A%0A%3C%2Ftbody%3E%3C%2Ftable%3E%0A%3Cp%3E%E7%A4%BA%E4%BE%8B%EF%BC%9A%E4%B8%BA%E4%B8%8D%E5%90%8C%E5%B1%82%E7%BA%A7%E7%9A%84%20mutex%20%E5%8C%BA%E5%88%86%E9%94%81%E7%B1%BB%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-c%22%3E%0Astatic%20struct%20lock_class_key%20percpu_mutex_key%3B%0A%0Avoid%20init_device%28struct%20device%20%2Adev%29%0A%7B%0A%20%20%20%20mutex_init%28%26dev-%26gt%3Block%29%3B%0A%20%20%20%20lockdep_set_class%28%26dev-%26gt%3Block%2C%20%26percpu_mutex_key%29%3B%0A%7D%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Ch3%3E5.4%20LockDep%20%E7%9A%84%E5%B7%B2%E7%9F%A5%E5%B1%80%E9%99%90%3C%2Fh3%3E%0A%0A%3Col%3E%0A%3Cli%3E%3Cstrong%3E%E4%B8%8D%E8%B7%9F%E8%B8%AA%E6%9D%A1%E4%BB%B6%E5%88%86%E6%94%AF%E5%86%85%E7%9A%84%E9%94%81%E7%8A%B6%E6%80%81%3C%2Fstrong%3E%EF%BC%9ALockDep%20%E5%A4%84%E7%90%86%E7%9A%84%E6%98%AF%20history-based%EF%BC%8C%E6%AF%8F%E6%9D%A1%E6%9C%89%E5%90%91%E8%BE%B9%E9%83%BD%E5%8F%AF%E8%83%BD%E8%A2%AB%E6%A0%87%E6%B3%A8%E4%B8%BA%E4%BE%9D%E8%B5%96%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E5%AF%B9%20eBPF%20%E5%86%85%E6%A0%B8%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%94%81%E5%AE%9A%E8%B7%9F%E8%B8%AA%E5%9F%BA%E6%9C%AC%E7%BC%BA%E5%A4%B1%3C%2Fstrong%3E%EF%BC%9A%E5%BD%93%20BPF%20map%20spinlock%20%E4%B8%8E%E7%94%A8%E6%88%B7%E6%80%81%E9%94%81%E7%BB%84%E5%90%88%E6%97%B6%EF%BC%8CLockDep%20%E6%97%A0%E8%83%BD%E4%B8%BA%E5%8A%9B%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3ERust%20%E5%86%85%E6%A0%B8%E4%BB%A3%E7%A0%81%E7%9A%84%20%3Ccode%3EMutex%3C%2Fcode%3E%E3%80%81%3Ccode%3ESpinLock%3C%2Fcode%3E%3C%2Fstrong%3E%EF%BC%9A%E7%9B%AE%E5%89%8D%E9%80%9A%E8%BF%87%20%3Ccode%3Elockdep_set_class%28%29%3C%2Fcode%3E%20%E6%98%BE%E5%BC%8F%E6%A0%87%E6%B3%A8%EF%BC%8C%E8%A6%86%E7%9B%96%E7%8E%87%E6%9C%89%E9%99%90%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E6%80%A7%E8%83%BD%E5%BC%80%E9%94%80%3C%2Fstrong%3E%EF%BC%9ALockDep%20%E5%BC%80%E5%90%AF%E5%90%8E%EF%BC%8C%E5%86%85%E6%A0%B8%E6%95%B4%E4%BD%93%E6%80%A7%E8%83%BD%E4%B8%8B%E9%99%8D%E7%BA%A6%2010%25-40%25%EF%BC%8C%E4%BB%85%E5%BB%BA%E8%AE%AE%E5%9C%A8%E5%BC%80%E5%8F%91%2FCI%20%E7%8E%AF%E5%A2%83%E5%90%AF%E7%94%A8%E3%80%82%3C%2Fli%3E%0A%3C%2Fol%3E%0A%0A%3Ch2%3E%E5%85%AD%E3%80%81LockDep%20%E4%B8%8E%20Rust%20%E5%86%85%E6%A0%B8%E9%94%81%E7%9A%84%E6%95%B4%E5%90%88%3C%2Fh2%3E%0A%0A%3Cp%3E%E9%9A%8F%E7%9D%80%20Rust-for-Linux%20%E7%9A%84%E5%8F%91%E5%B1%95%EF%BC%8CRust%20%3Ccode%3Ekernel%3A%3Async%3A%3AMutex%3C%2Fcode%3E%20%E5%92%8C%20%3Ccode%3Ekernel%3A%3Async%3A%3ASpinLock%3C%2Fcode%3E%20%E9%83%BD%E9%80%9A%E8%BF%87%20FFI%20%E5%8C%85%E8%A3%B9%E5%86%85%E6%A0%B8%E5%8E%9F%E7%94%9F%E9%94%81%E3%80%82LockDep%20%E7%9A%84%E9%9B%86%E6%88%90%E4%BD%BF%E7%94%A8%20%3Ccode%3Elockdep_set_class%28%29%3C%2Fcode%3E%20%E5%AE%9E%E7%8E%B0%EF%BC%9A%3C%2Fp%3E%0A%0A%3Cpre%3E%3Ccode%20class%3D%22language-rust%22%3E%0A%2F%2F%20drivers%2Flockdep_test.rs%0A%0Ause%20kernel%3A%3Async%3A%3AMutex%3B%0Ause%20kernel%3A%3Alock_class%3A%3ALockClassKey%3B%0A%0Astatic%20MY_LOCK_KEY%3A%20LockClassKey%20%3D%20LockClassKey%3A%3Anew%28%29%3B%0A%0Astruct%20MyState%20%7B%0A%20%20%20%20data%3A%20Mutex%26lt%3Bu32%26gt%3B%2C%0A%7D%0A%0Aimpl%20MyState%20%7B%0A%20%20%20%20fn%20new%28%29%20-%26gt%3B%20Self%20%7B%0A%20%20%20%20%20%20%20%20let%20mut%20state%20%3D%20MyState%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20data%3A%20Mutex%3A%3Anew%280%2C%20%26MY_LOCK_KEY%29%2C%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20state%0A%20%20%20%20%7D%0A%7D%0A%3C%2Fcode%3E%3C%2Fpre%3E%0A%0A%3Cp%3E%E5%BD%93%E4%B8%80%E4%B8%AA%20Rust-coded%20%E6%A8%A1%E5%9D%97%E4%B8%8E%20C-coded%20%E6%A8%A1%E5%9D%97%E5%8F%91%E7%94%9F%E9%94%81%E5%8F%8D%E8%BD%AC%E6%97%B6%EF%BC%8CLockDep%20%E8%83%BD%E8%B7%A8%E8%AF%AD%E8%A8%80%E6%8D%95%E8%8E%B7%E5%B9%B6%E7%94%9F%E6%88%90%E5%8C%85%E5%90%AB%E5%8F%8C%E6%96%B9%E6%A0%88%E5%B8%A7%E7%9A%84%20splat%20%E6%8A%A5%E5%91%8A%E3%80%82LockDep%20%E7%9A%84%E7%8E%AF%E6%A3%80%E6%B5%8B%E7%AE%97%E6%B3%95%E6%98%AF%E8%AF%AD%E8%A8%80%E6%97%A0%E5%85%B3%E7%9A%84%E2%80%94%E2%80%94%E5%AE%83%E4%BE%9D%E8%B5%96%20lock%20class%20%E7%9A%84%E5%94%AF%E4%B8%80%E6%80%A7%E3%80%82%3C%2Fp%3E%0A%0A%3Ch2%3E%E4%B8%83%E3%80%81%E6%80%BB%E7%BB%93%3C%2Fh2%3E%0A%0A%3Cp%3ELockDep%20%E6%98%AF%20Linux%20%E5%86%85%E6%A0%B8%E6%8F%90%E4%BE%9B%E7%9A%84%E6%9C%80%E5%BC%BA%E9%9D%99%E6%80%81%2B%E5%8A%A8%E6%80%81%E9%94%81%E5%88%86%E6%9E%90%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%AE%83%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BB%B7%E5%80%BC%E5%9C%A8%E4%BA%8E%3Cstrong%3E%E6%8A%8A%E6%AD%BB%E9%94%81%E6%B6%88%E7%81%AD%E5%9C%A8%E5%BC%80%E5%8F%91%E9%98%B6%E6%AE%B5%3C%2Fstrong%3E%E3%80%82%E9%80%9A%E8%BF%87%E4%BE%9D%E8%B5%96%E5%9B%BE%E7%9A%84%E5%8D%B3%E6%97%B6%E7%8E%AF%E6%A3%80%E6%B5%8B%EF%BC%8C%E7%A8%8B%E5%BA%8F%E5%91%98%E4%B8%8D%E5%BF%85%E7%AD%89%E5%88%B0%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%8F%91%E7%94%9F%E4%B8%A5%E9%87%8D%E6%95%85%E9%9A%9C%E6%89%8D%E6%8B%BF%E5%88%B0%E4%BA%8B%E6%95%85%E7%8E%B0%E5%9C%BA%E3%80%82%3C%2Fp%3E%0A%0A%3Cp%3E%3Cstrong%3E%E5%B7%A5%E7%A8%8B%E5%B8%88%E7%9A%84%E6%88%90%E9%95%BF%E8%B7%AF%E5%BE%84%3C%2Fstrong%3E%E5%BB%BA%E8%AE%AE%E4%BB%8E%E4%BB%A5%E4%B8%8B%E4%B8%89%E6%AD%A5%E8%B5%B0%EF%BC%9A%3C%2Fp%3E%0A%0A%3Col%3E%0A%3Cli%3E%3Cstrong%3E%E5%85%88%E4%BC%9A%E8%AF%BB%20splat%3C%2Fstrong%3E%EF%BC%9A%E6%8B%BF%E5%88%B0%E4%B8%80%E4%BB%BD%20LockDep%20%E6%8A%A5%E5%91%8A%E5%90%8E%EF%BC%8C%E8%83%BD%E5%AE%9A%E4%BD%8D%E6%8C%81%E9%94%81%E8%B7%AF%E5%BE%84%E3%80%81%E5%8C%BA%E5%88%86%E7%9B%B4%E6%8E%A5%E5%86%B2%E7%AA%81%E4%B8%8E%E5%8F%8D%E5%90%91%E4%BE%9D%E8%B5%96%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E5%86%8D%E4%BC%9A%E6%8E%92%E5%81%87%E9%98%B3%3C%2Fstrong%3E%EF%BC%9A%E4%BD%BF%E7%94%A8%20%3Ccode%3Elockdep_set_class%28%29%3C%2Fcode%3E%E3%80%81%3Ccode%3E%2A_nested%28%29%3C%2Fcode%3E%20%E7%AD%89%E6%89%8B%E6%AE%B5%E5%8C%BA%E5%88%86%E4%B8%8D%E5%90%8C%E5%B1%9E%E6%80%A7%E7%9A%84%E9%94%81%E5%AE%9E%E4%BE%8B%E3%80%82%3C%2Fli%3E%0A%3Cli%3E%3Cstrong%3E%E6%9C%80%E7%BB%88%E5%AD%A6%E4%BC%9A%E6%9E%90%E6%9E%84%3C%2Fstrong%3E%EF%BC%9A%E5%9C%A8%E6%A8%A1%E5%9D%97%E8%AE%BE%E8%AE%A1%E5%88%9D%E6%9C%9F%E5%B0%B1%E8%A7%84%E5%88%92%E5%A5%BD%E9%94%81%E5%B1%82%E7%BA%A7%EF%BC%88%E4%BE%8B%E5%A6%82%20%22dev_lock%20%E6%B0%B8%E8%BF%9C%E5%9C%A8%20queue_lock%20%E4%B9%8B%E4%B8%8A%22%EF%BC%89%EF%BC%8C%E5%B9%B6%E9%9B%86%E6%88%90%E5%88%B0%20CI%20lockdep%20%E8%87%AA%E6%A3%80%E4%B8%AD%E3%80%82%3C%2Fli%3E%0A%3C%2Fol%3E%0A%0A%3Cp%3E%3Ccode%3E-Werror%3C%2Fcode%3E%20%E5%BF%85%E9%A1%BB%E6%AD%BB%EF%BC%9FLockDep%20%E5%91%8A%E8%AF%89%E4%BD%A0%EF%BC%9A%E5%B8%A6%E4%B8%8A%20%3Ccode%3E-Werror-lockdep%3C%2Fcode%3E%E3%80%82%E8%AE%A9%20CI%20%E6%9B%BF%E4%BD%A0%E5%AE%88%E5%8D%AB%E9%94%81%E9%A1%BA%E5%BA%8F%E3%80%82%3C%2Fp%3E%0A%0A%3Cblockquote%3E%0A%3Cp%3E%3Cstrong%3E%E5%85%B3%E9%94%AE%20takeaway%3C%2Fstrong%3E%EF%BC%9ALockDep%20%E4%B8%8D%E6%98%AF%E6%B5%8B%E8%AF%95%E8%A6%86%E7%9B%96%E7%8E%87%E7%9A%84%E6%9B%BF%E4%BB%A3%E5%93%81%EF%BC%8C%E8%80%8C%E6%98%AF%E5%AF%B9%E9%94%81%E4%BE%9D%E8%B5%96%E9%A1%BA%E5%BA%8F%E7%9A%84%E5%BD%A2%E5%BC%8F%E5%8C%96%E8%AF%81%E6%98%8E%E2%80%94%E2%80%94%E5%AE%83%E8%BF%BD%E8%B8%AA%E7%9A%84%E6%98%AF%22%E9%94%81%E8%8E%B7%E5%8F%96%E7%9A%84%E5%81%8F%E5%BA%8F%E5%85%B3%E7%B3%BB%22%E8%80%8C%E9%9D%9E%22%E4%BB%A3%E7%A0%81%E8%B7%AF%E5%BE%84%E7%9A%84%E6%89%A7%E8%A1%8C%E6%AC%A1%E6%95%B0%22%E3%80%82%E8%BF%99%E7%A7%8D%22%E7%8A%B6%E6%80%81%E7%A9%BA%E9%97%B4%E6%8E%A2%E7%B4%A2%22%E5%BC%8F%E7%9A%84%E6%A3%80%E6%B5%8B%E6%80%9D%E8%B7%AF%EF%BC%8C%E6%98%AF%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91%E8%80%85%E5%BF%85%E4%BF%AE%E8%AF%BE%E3%80%82%3C%2Fp%3E%0A%3C%2Fblockquote%3E

发表评论 取消回复