From: Peter Lieven <pl@dlhnet.de>
To: Jan Kiszka <jan.kiszka@siemens.com>
Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org,
Gleb Natapov <gleb@redhat.com>
Subject: Re: race between kvm-kmod-3.0 and kvm-kmod-3.3 // was: race condition in qemu-kvm-1.0.1
Date: Thu, 28 Jun 2012 11:38:46 +0200 [thread overview]
Message-ID: <4FEC2626.90402@dlhnet.de> (raw)
In-Reply-To: <4FEC2475.4030202@dlhnet.de>
does anyone know whats that here in handle_mmio?
/* hack: Red Hat 7.1 generates these weird accesses. */
if ((addr > 0xa0000-4 && addr <= 0xa0000) && kvm_run->mmio.len == 3)
return 0;
thanks,
peter
On 28.06.2012 11:31, Peter Lieven wrote:
> On 28.06.2012 11:21, Jan Kiszka wrote:
>> On 2012-06-28 11:11, Peter Lieven wrote:
>>> On 27.06.2012 18:54, Jan Kiszka wrote:
>>>> On 2012-06-27 17:39, Peter Lieven wrote:
>>>>> Hi all,
>>>>>
>>>>> i debugged this further and found out that kvm-kmod-3.0 is working
>>>>> with
>>>>> qemu-kvm-1.0.1 while kvm-kmod-3.3 and kvm-kmod-3.4 are not. What is
>>>>> working as well is kvm-kmod-3.4 with an old userspace
>>>>> (qemu-kvm-0.13.0).
>>>>> Has anyone a clue which new KVM feature could cause this if a vcpu
>>>>> is in
>>>>> an infinite loop?
>>>> Before accusing kvm-kmod ;), can you check if the effect is visible
>>>> with
>>>> an original Linux 3.3.x or 3.4.x kernel as well?
>>> sorry, i should have been more specific. maybe I also misunderstood
>>> sth.
>>> I was believing that kvm-kmod-3.0 is basically what is in vanialla
>>> kernel
>>> 3.0. If I use the ubuntu kernel from ubuntu oneiric (3.0.0) it
>>> works, if
>>> I use
>>> a self-compiled kvm-kmod-3.3/3.4 with that kernel it doesn't.
>>> however, maybe we don't have to dig to deep - see below.
>> kvm-kmod wraps and patches things to make the kvm code from 3.3/3.4
>> working on an older kernel. This step may introduce bugs of its own.
>> Therefore my suggestion to use a "real" 3.x kernel to exclude that risk
>> first of all.
>>
>>>> Then, bisection the change in qemu-kvm that apparently resolved the
>>>> issue would be interesting.
>>>>
>>>> If we have to dig deeper, tracing [1] the lockup would likely be
>>>> helpful
>>>> (all events of the qemu process, not just KVM related ones: trace-cmd
>>>> record -e all qemu-system-x86_64 ...).
>>> that here is bascially whats going on:
>>>
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> read
>>> len 3 gpa 0xa0000 val 0x10ff
>>> qemu-kvm-1.0-2506 [010] 60996.908000: vcpu_match_mmio: gva
>>> 0xa0000 gpa 0xa0000 Read GPA
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> unsatisfied-read len 1 gpa 0xa0000 val 0x0
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_userspace_exit:
>>> reason
>>> KVM_EXIT_MMIO (6)
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> read len 3 gpa 0xa0000 val 0x10ff
>>> qemu-kvm-1.0-2506 [010] 60996.908000: vcpu_match_mmio: gva
>>> 0xa0000 gpa 0xa0000 Read GPA
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> unsatisfied-read len 1 gpa 0xa0000 val 0x0
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_userspace_exit:
>>> reason
>>> KVM_EXIT_MMIO (6)
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> read len 3 gpa 0xa0000 val 0x10ff
>>> qemu-kvm-1.0-2506 [010] 60996.908000: vcpu_match_mmio: gva
>>> 0xa0000 gpa 0xa0000 Read GPA
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> unsatisfied-read len 1 gpa 0xa0000 val 0x0
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_userspace_exit:
>>> reason
>>> KVM_EXIT_MMIO (6)
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> read len 3 gpa 0xa0000 val 0x10ff
>>> qemu-kvm-1.0-2506 [010] 60996.908000: vcpu_match_mmio: gva
>>> 0xa0000 gpa 0xa0000 Read GPA
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_mmio: mmio
>>> unsatisfied-read len 1 gpa 0xa0000 val 0x0
>>> qemu-kvm-1.0-2506 [010] 60996.908000: kvm_userspace_exit:
>>> reason
>>> KVM_EXIT_MMIO (6)
>>>
>>> its doing that forever. this is tracing the kvm module. doing the
>>> qemu-system-x86_64 trace is a bit compilcated, but
>>> maybe this is already sufficient. otherwise i will of course gather
>>> this
>>> info as well.
>> That's only tracing KVM event, and it's tracing when things went wrong
>> already. We may need a full trace (-e all) specifically for the period
>> when this pattern above started.
> i will do that. maybe i should explain that the vcpu is executing
> garbage when this above starts. its basically booting from an empty
> harddisk.
>
> if i understand correctly qemu-kvm loops in kvm_cpu_exec(CPUState *env);
>
> maybe the time to handle the monitor/qmp connection is just to short.
> if i understand furhter correctly, it can only handle monitor connections
> while qemu-kvm is executing kvm_vcpu_ioctl(env, KVM_RUN, 0); or am i
> wrong here? the time spend in this state might be rather short.
>
> my concern is not that the machine hangs, just the the hypervisor is
> unresponsive
> and its impossible to reset or quit gracefully. the only way to get
> the hypervisor
> ended is via SIGKILL.
>
> thanks
> peter
next prev parent reply other threads:[~2012-06-28 9:38 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-27 15:39 race between kvm-kmod-3.0 and kvm-kmod-3.3 // was: race condition in qemu-kvm-1.0.1 Peter Lieven
2012-06-27 16:54 ` Jan Kiszka
2012-06-28 9:11 ` Peter Lieven
2012-06-28 9:21 ` Jan Kiszka
2012-06-28 9:31 ` Peter Lieven
2012-06-28 9:38 ` Peter Lieven [this message]
2012-07-02 15:05 ` Avi Kivity
2012-07-02 15:57 ` Peter Lieven
2012-07-03 13:01 ` Peter Lieven
2012-07-03 13:13 ` Avi Kivity
2012-07-03 13:15 ` Peter Lieven
2012-07-03 13:25 ` Avi Kivity
2012-07-04 14:57 ` Peter Lieven
2012-07-04 23:12 ` Peter Lieven
2012-07-05 6:48 ` Xiao Guangrong
2012-06-28 9:39 ` Jan Kiszka
2012-06-28 10:13 ` Peter Lieven
2012-06-28 10:34 ` Peter Lieven
2012-07-05 8:51 ` Xiao Guangrong
2012-07-05 12:42 ` Peter Lieven
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=4FEC2626.90402@dlhnet.de \
--to=pl@dlhnet.de \
--cc=gleb@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).