From: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
To: Meelis Roos <mroos@linux.ee>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel list <linux-kernel@vger.kernel.org>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: 3.13: BUG: unable to handle kernel paging request at 00000000b4343e88
Date: Wed, 05 Feb 2014 18:00:17 +0100 [thread overview]
Message-ID: <52F26E21.8000101@linux.vnet.ibm.com> (raw)
In-Reply-To: <52EBC65C.5020404@linux.vnet.ibm.com>
On 31.01.2014 16:50, Peter Oberparleiter wrote:
> On 29.01.2014 21:44, Meelis Roos wrote:
>>>> I do not get very far - it still crashes on startuo. PNG attached.
>>>
>>> I tried to reproduce this behavior a couple of times with no success.
>>> Could you post your kernel configuration? I've also modified the
>>> debugging patch to ensure that the gcov_info structure passed to
>>> gcov_init() is no longer accessed beyond displaying the first 64
>>> bytes. If you could apply this and send dmesg output, this might
>>> hopefully provide a clue as to why the kernel cannot handle these
>>> data structures correctly.
>>
>> This patch makes it boot. dmesg and config are below.
>
> Using your config I was able to reproduce the crash and locate the
> cause. Commit d61931d89b, "x86: Add optimized popcnt variants" adds
> option -fcall-saved-rdi to the compile flags of lib/hweight.c when
> compiling for x86_64. Together with options --coverage and -O2, this
> results in a broken constructor being generated by GCC for this object
> file which in turn causes __gcov_init() to overwrite random memory
> locations (a mutex in your case).
Could you give this patch a try? It is a variation of the approach
proposed in the discussion mentioned earlier and fixes the problem
on my system.
--
diff -Naurp a/arch/x86/include/asm/arch_hweight.h b/arch/x86/include/asm/arch_hweight.h
--- a/arch/x86/include/asm/arch_hweight.h
+++ b/arch/x86/include/asm/arch_hweight.h
@@ -25,9 +25,18 @@ static inline unsigned int __arch_hweigh
{
unsigned int res = 0;
+#ifdef CONFIG_X86_32
asm (ALTERNATIVE("call __sw_hweight32", POPCNT32, X86_FEATURE_POPCNT)
: "="REG_OUT (res)
: REG_IN (w));
+#else
+ /* Tell gcc that %rdi is clobbered as an input operand */
+ unsigned long dummy;
+
+ asm (ALTERNATIVE("call __sw_hweight32", POPCNT32, X86_FEATURE_POPCNT)
+ : "="REG_OUT (res), "=D" (dummy)
+ : REG_IN (w));
+#endif /* CONFIG_X86_32 */
return res;
}
@@ -50,8 +59,11 @@ static inline unsigned long __arch_hweig
return __arch_hweight32((u32)w) +
__arch_hweight32((u32)(w >> 32));
#else
+ /* Tell gcc that %rdi is clobbered as an input operand */
+ unsigned long dummy;
+
asm (ALTERNATIVE("call __sw_hweight64", POPCNT64, X86_FEATURE_POPCNT)
- : "="REG_OUT (res)
+ : "="REG_OUT (res), "=D" (dummy)
: REG_IN (w));
#endif /* CONFIG_X86_32 */
diff -Naurp a/arch/x86/Kconfig b/arch/x86/Kconfig
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -254,7 +254,7 @@ config X86_32_LAZY_GS
config ARCH_HWEIGHT_CFLAGS
string
default "-fcall-saved-ecx -fcall-saved-edx" if X86_32
- default "-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64
+ default "-fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11" if X86_64
config ARCH_SUPPORTS_UPROBES
def_bool y
next prev parent reply other threads:[~2014-02-05 17:00 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-21 10:34 3.13: BUG: unable to handle kernel paging request at 00000000b4343e88 Meelis Roos
2014-01-21 22:10 ` Andrew Morton
2014-01-22 15:33 ` Meelis Roos
2014-01-24 13:47 ` Peter Oberparleiter
2014-01-24 20:54 ` Meelis Roos
2014-01-27 15:53 ` Peter Oberparleiter
2014-01-28 6:33 ` Meelis Roos
2014-01-29 15:05 ` Peter Oberparleiter
[not found] ` <alpine.SOC.1.00.1401292242390.12718@math.ut.ee>
2014-01-31 15:50 ` Peter Oberparleiter
2014-02-05 17:00 ` Peter Oberparleiter [this message]
2014-02-05 17:36 ` H. Peter Anvin
2014-02-06 14:58 ` Peter Oberparleiter
2014-02-06 15:18 ` [tip:x86/urgent] x86, hweight: Fix BUG when booting with CONFIG_GCOV_PROFILE_ALL=y tip-bot for Peter Oberparleiter
2014-02-06 6:19 ` 3.13: BUG: unable to handle kernel paging request at 00000000b4343e88 Meelis Roos
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52F26E21.8000101@linux.vnet.ibm.com \
--to=oberpar@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mroos@linux.ee \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.