All of lore.kernel.org
 help / color / mirror / Atom feed
* [tip:x86/urgent 3/3] arch/x86//kernel/cpu/mcheck/mce.c:601:52: note: in expansion of macro 'BIT'
@ 2017-11-16 11:47 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2017-11-16 11:47 UTC (permalink / raw)
  To: Tony Luck
  Cc: kbuild-all, linux-kernel, tipbuild, Thomas Gleixner, Borislav Petkov

[-- Attachment #1: Type: text/plain, Size: 3093 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/urgent
head:   f1a041552c403949ab3c0902c1030c3a3d186ec1
commit: f1a041552c403949ab3c0902c1030c3a3d186ec1 [3/3] x86/mm, mm/hwpoison: Don't unconditionally unmap kernel 1: 1 pages
config: i386-randconfig-x001-201746 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
        git checkout f1a041552c403949ab3c0902c1030c3a3d186ec1
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/kernel.h:11:0,
                    from include/asm-generic/bug.h:16,
                    from arch/x86/include/asm/bug.h:82,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:12,
                    from arch/x86//kernel/cpu/mcheck/mce.c:13:
   arch/x86//kernel/cpu/mcheck/mce.c: In function 'mce_unmap_kpfn':
   include/linux/bitops.h:7:24: warning: left shift count >= width of type [-Wshift-count-overflow]
    #define BIT(nr)   (1UL << (nr))
                           ^
>> arch/x86//kernel/cpu/mcheck/mce.c:601:52: note: in expansion of macro 'BIT'
     decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
                                                       ^~~

vim +/BIT +601 arch/x86//kernel/cpu/mcheck/mce.c

   573	
   574	/*
   575	 * Unmap this page from the kernel 1:1 mappings to make sure we don't log
   576	 * more errors because of speculative access to the page.
   577	 *
   578	 * We would like to just call:
   579	 *	set_memory_np((unsigned long)pfn_to_kaddr(pfn), 1);
   580	 *
   581	 * but doing that would radically increase the odds of a speculative access
   582	 * to the poison page because we'd have the virtual address of the kernel
   583	 * 1:1 mapping sitting around in registers.
   584	 * Instead we get tricky.  We create a non-canonical address that looks
   585	 * just like the one we want, but has bit 63 flipped.  This relies on
   586	 * set_memory_np() not checking whether we passed a legal address.
   587	 */
   588	static void mce_unmap_kpfn(unsigned long pfn)
   589	{
   590		unsigned long decoy_addr;
   591	
   592		/*
   593		 * Build time check to see if we have a spare virtual bit. Don't
   594		 * want to leave this until run time because most developers don't
   595		 * have a system that can exercise this code path. This will only
   596		 * become a problem if/when we move beyond 5-level page tables.
   597		 *
   598		 * Hard code "9" here because cpp doesn't grok ilog2(PTRS_PER_PGD)
   599		 */
   600	#if PGDIR_SHIFT + 9 < 63
 > 601		decoy_addr = (pfn << PAGE_SHIFT) + (PAGE_OFFSET ^ BIT(63));
   602	#else
   603	#error "No unused virtual bit available"
   604	#endif
   605	
   606		if (set_memory_np(decoy_addr, 1))
   607			pr_warn("Could not invalidate pfn=0x%lx from 1:1 map\n", pfn);
   608	}
   609	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 28672 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2017-11-16 11:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-16 11:47 [tip:x86/urgent 3/3] arch/x86//kernel/cpu/mcheck/mce.c:601:52: note: in expansion of macro 'BIT' kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.