RE: [Xen-devel] [PATCH 1/2] xen/mce: Add mcelog support for Xenplatform

From: Liu, Jinsong
Date: Fri Jun 08 2012 - 05:27:23 EST


Konrad Rzeszutek Wilk wrote:
> On Thu, Jun 07, 2012 at 06:45:39AM +0000, Liu, Jinsong wrote:
>> Konrad Rzeszutek Wilk wrote:
>>> On Thu, May 31, 2012 at 12:57:44PM +0000, Liu, Jinsong wrote:
>>>>> From 1a7951d6ca01d7f2c9dd2bdb6de5f8e7fdcb8bbd Mon Sep 17 00:00:00
>>>>> 2001
>>>> From: root <root@xxxxxxxxxxxxxxxxxxxxxx>
>>>> Date: Fri, 1 Jun 2012 03:12:51 +0800
>>>> Subject: [PATCH 1/2] xen/mce: Add mcelog support for Xen platform
>>>>
>>>> When MCA error occurs, it would be handled by Xen hypervisor first,
>>>> and then the error information would be sent to initial domain for
>>>> logging.
>>>>
>>>> This patch gets error information from Xen hypervisor and convert
>>>> Xen format error into Linux format mcelog. This logic is basically
>>>> self-contained, not touching other kernel components.
>>>>
>>>> By using tools like mcelog tool users could read specific error
>>>> information, like what they did under native Linux.
>>>>
>>>> To test follow directions outlined in
>>>> Documentation/acpi/apei/einj.txt
>>>
>>> [ 53.264610] switch: port 1(eth0) entered forwarding state
>>> [ 1058.051938] BUG: sleeping function called from invalid context at
>>> /home/konrad/linux/include/linux/kernel.h:199 [ 1058.052066]
>>> in_atomic(): 1, irqs_disabled(): 0, pid: 4552, name: mcelog [
>>> 1058.052130] Pid: 4552, comm: mcelog Tainted: G O
>>> 3.5.0-rc1upstream-00041-ga16e594-dirty #2 [ 1058.052235] Call Trace:
>>> [ 1058.052291] [<ffffffff8109ad9a>] __might_sleep+0xda/0x100 [
>>> 1058.052349] [<ffffffff8132a55b>] xen_mce_chrdev_read+0xab/0x140 [
>>> 1058.052408] [<ffffffff81148d85>] vfs_read+0xc5/0x190 [
>>> 1058.052461] [<ffffffff81148f4c>] sys_read+0x4c/0x90 [ 1058.052515]
>>> [<ffffffff815bdd79>] system_call_fastpath+0x16/0x1
>>>
>>> ?
>>
>> I will debug it. Would you tell me the steps to reproduce the bug,
>> and your .config file?
>
>
> # echo 0x00000008 > error_type
> # echo 1 > error_inject
> (XEN) CMCI: send CMCI to DOM0 through virq
> [ 214.207962] BUG: sleeping function called from invalid context at
> /home/konradinux/kernel.h:199 [ 214.208129] in_atomic(): 1,
> irqs_disabled(): 0, pid: 4581, name: mcelog [ 214.208242] Pid: 4581,
> comm: mcelog Tainted: G O
> 3.5.0-rc1upstream-00003-g149000b-dirty #1 # [ 214.208384] Call
> Trace: [ 214.208490] [<ffffffff8109ad9a>] __might_sleep+0xda/0x100
> [ 214.208606] [<ffffffff81329b0b>] xen_mce_chrdev_read+0xab/0x140 [
> 214.208715] [<ffffffff81148945>] vfs_read+0xc5/0x190 [ 214.208816]
> [<ffffffff81148b0c>] sys_read+0x4c/0x90 [ 214.208923]
> [<ffffffff815bd039>] system_call_fastpath+0x16/0x1b
>

Thanks! it caused by copy_to_user (might sleep) in an atomic spinlock context.
Send patch to fix it later, draft test OK.

Regards,
Jinsong--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/