Re: Seabios incompatible with Linux 2.6.26 host?

Pierre Riteau
2010-02-09T22:49:17Z

On 8 févr. 2010, at 13:21, Avi Kivity wrote:

> On 02/08/2010 01:13 PM, Jan Kiszka wrote:
>>>
>>> I confirm that this exception does not happen with kvm-kmod-2.6.33-rc6.
>>>
>>> However, after I run and stop a guest VM just executing the bios sequence (no disk/CD image attached), I get this kind of errors on the host when untar a small archive (less than 1MB, about 300 files):
>>>
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.073865] Bad page state in process 'gzip'
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.073867] page:ffffe200040c4638 flags:0x020000000000001c mapping:0000000000000000 mapcount:0 count:0
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.102991] Trying to fix it up, but a reboot is needed
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.102992] Backtrace:
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.129821] Pid: 3559, comm: gzip Tainted: P 2.6.26-2-amd64 #1
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.143267]
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.143268] Call Trace:
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.156024] [<ffffffff8022f0d2>] hrtick_set+0x88/0xf7
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.167250] [<ffffffff8027504d>] bad_page+0x6b/0x95
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.179879] [<ffffffff80276482>] get_page_from_freelist+0x3e1/0x606
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.195345] [<ffffffff80276929>] __alloc_pages_internal+0xd6/0x3bf
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.210580] [<ffffffff80281707>] handle_mm_fault+0x244/0x867
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.223694] [<ffffffff8027313a>] filemap_fault+0x1c2/0x33c
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.237948] [<ffffffff80221fbc>] do_page_fault+0x5d8/0x9c8
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.251793] [<ffffffff8042a599>] error_exit+0x0/0x60
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.265754] [<ffffffff80270df1>] file_read_actor+0x52/0x125
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.278595] [<ffffffff802764fb>] get_page_from_freelist+0x45a/0x606
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.294022] [<ffffffff80272c03>] generic_file_aio_read+0x29e/0x4ae
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.309319] [<ffffffff8029ae47>] do_sync_read+0xc9/0x10c
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.322816] [<ffffffff80246221>] autoremove_wake_function+0x0/0x2e
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.338051] [<ffffffff80221fbc>] do_page_fault+0x5d8/0x9c8
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.351919] [<ffffffff8029b638>] vfs_read+0xaa/0x152
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.366108] [<ffffffff8029ba19>] sys_read+0x45/0x6e
>>> Feb 8 12:00:32 paraquad-7 kernel: [ 200.378750] [<ffffffff8020beca>] system_call_after_swapgs+0x8a/0x8f
>>>
>>>
>> Haven't seen this before. Can you reproduce it with
>>
>> a) kvm-kmod-2.6.32.7?

Same problem with this version loaded in the 2.6.26 kernel.

>> b) a host kernel>= 2.6.27?
>>
>
> Good guess - perhaps we are busted without mmu notifiers. For b), please ensure CONFIG_MMU_NOTIFIER is enabled in the host kernel configuration.

Very good guess indeed!
2.6.27 with KVM enabled (so CONFIG_MMU_NOTIFIER=y) and kvm-kmod-2.6.33-rc6 works OK.
2.6.27 with KVM disabled (so CONFIG_MMU_NOTIFIER is also disabled) and kvm-kmod-2.6.33-rc6 shows the Bad page state errors.

--
Pierre Riteau -- PhD student, Myriads team, IRISA, Rennes, France