CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Alex Shi CC: "Kirill A. Shutemov" CC: Andrew Morton CC: Linux Memory Management List tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 61556703b610a104de324e4f061dc6cf7b218b46 commit: b6769834aac1d467fa1c71277d15688efcbb4d76 mm/thp: narrow lru locking date: 7 weeks ago :::::: branch date: 2 days ago :::::: commit date: 7 weeks ago config: arm64-randconfig-s032-20210205 (attached as .config) compiler: aarch64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-215-g0fb77bb6-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b6769834aac1d467fa1c71277d15688efcbb4d76 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout b6769834aac1d467fa1c71277d15688efcbb4d76 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot "sparse warnings: (new ones prefixed by >>)" mm/huge_memory.c:1640:20: sparse: sparse: context imbalance in 'madvise_free_huge_pmd' - unexpected unlock mm/huge_memory.c:1677:28: sparse: sparse: context imbalance in 'zap_huge_pmd' - unexpected unlock mm/huge_memory.c:1787:28: sparse: sparse: context imbalance in 'move_huge_pmd' - unexpected unlock mm/huge_memory.c:1891:20: sparse: sparse: context imbalance in 'change_huge_pmd' - unexpected unlock mm/huge_memory.c:1901:12: sparse: sparse: context imbalance in '__pmd_trans_huge_lock' - wrong count at exit mm/huge_memory.c: note: in included file (through include/linux/irqflags.h, include/linux/spinlock.h, include/linux/mmzone.h, ...): >> arch/arm64/include/asm/irqflags.h:37:9: sparse: sparse: context imbalance in '__split_huge_page' - different lock contexts for basic block >> arch/arm64/include/asm/irqflags.h:37:9: sparse: sparse: context imbalance in 'split_huge_page_to_list' - different lock contexts for basic block vim +/__split_huge_page +37 arch/arm64/include/asm/irqflags.h fb9bd7d6df81dd Marc Zyngier 2012-03-05 12 65be7a1b799f11 James Morse 2017-11-02 13 /* 65be7a1b799f11 James Morse 2017-11-02 14 * Aarch64 has flags for masking: Debug, Asynchronous (serror), Interrupts and 65be7a1b799f11 James Morse 2017-11-02 15 * FIQ exceptions, in the 'daif' register. We mask and unmask them in 'dai' 65be7a1b799f11 James Morse 2017-11-02 16 * order: 65be7a1b799f11 James Morse 2017-11-02 17 * Masking debug exceptions causes all other exceptions to be masked too/ 65be7a1b799f11 James Morse 2017-11-02 18 * Masking SError masks irq, but not debug exceptions. Masking irqs has no 65be7a1b799f11 James Morse 2017-11-02 19 * side effects for other flags. Keeping to this order makes it easier for 65be7a1b799f11 James Morse 2017-11-02 20 * entry.S to know which exceptions should be unmasked. 65be7a1b799f11 James Morse 2017-11-02 21 * 65be7a1b799f11 James Morse 2017-11-02 22 * FIQ is never expected, but we mask it when we disable debug exceptions, and 65be7a1b799f11 James Morse 2017-11-02 23 * unmask it at all other times. 65be7a1b799f11 James Morse 2017-11-02 24 */ 65be7a1b799f11 James Morse 2017-11-02 25 fb9bd7d6df81dd Marc Zyngier 2012-03-05 26 /* fb9bd7d6df81dd Marc Zyngier 2012-03-05 27 * CPU interrupt mask handling. fb9bd7d6df81dd Marc Zyngier 2012-03-05 28 */ fb9bd7d6df81dd Marc Zyngier 2012-03-05 29 static inline void arch_local_irq_enable(void) fb9bd7d6df81dd Marc Zyngier 2012-03-05 30 { 48ce8f80f5901f Julien Thierry 2019-06-11 31 if (system_has_prio_mask_debugging()) { 48ce8f80f5901f Julien Thierry 2019-06-11 32 u32 pmr = read_sysreg_s(SYS_ICC_PMR_EL1); 48ce8f80f5901f Julien Thierry 2019-06-11 33 48ce8f80f5901f Julien Thierry 2019-06-11 34 WARN_ON_ONCE(pmr != GIC_PRIO_IRQON && pmr != GIC_PRIO_IRQOFF); 48ce8f80f5901f Julien Thierry 2019-06-11 35 } 48ce8f80f5901f Julien Thierry 2019-06-11 36 4a503217ce37e1 Julien Thierry 2019-01-31 @37 asm volatile(ALTERNATIVE( f226650494c6aa Marc Zyngier 2019-10-02 38 "msr daifclr, #2 // arch_local_irq_enable", f226650494c6aa Marc Zyngier 2019-10-02 39 __msr_s(SYS_ICC_PMR_EL1, "%0"), 4a503217ce37e1 Julien Thierry 2019-01-31 40 ARM64_HAS_IRQ_PRIO_MASKING) fb9bd7d6df81dd Marc Zyngier 2012-03-05 41 : a80554fc36ba41 Julien Thierry 2019-02-08 42 : "r" ((unsigned long) GIC_PRIO_IRQON) fb9bd7d6df81dd Marc Zyngier 2012-03-05 43 : "memory"); f226650494c6aa Marc Zyngier 2019-10-02 44 f226650494c6aa Marc Zyngier 2019-10-02 45 pmr_sync(); fb9bd7d6df81dd Marc Zyngier 2012-03-05 46 } fb9bd7d6df81dd Marc Zyngier 2012-03-05 47 :::::: The code at line 37 was first introduced by commit :::::: 4a503217ce37e1f4f3d9b681bbcbbac103776bf1 arm64: irqflags: Use ICC_PMR_EL1 for interrupt masking :::::: TO: Julien Thierry :::::: CC: Catalin Marinas --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org