linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: kvm@vger.kernel.org, kexec@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/4] Export offsets of VMCS fields as note information for kdump
Date: Wed, 18 Apr 2012 15:13:43 +0300	[thread overview]
Message-ID: <4F8EAFF7.2040505@redhat.com> (raw)
In-Reply-To: <4F8D9F20.9050507@codemonkey.ws>

On 04/17/2012 07:49 PM, Anthony Liguori wrote:
> On 04/17/2012 02:44 AM, Avi Kivity wrote:
>> On 04/11/2012 04:39 AM, zhangyanfei wrote:
>>> This patch set exports offsets of VMCS fields as note information for
>>> kdump. We call it VMCSINFO. The purpose of VMCSINFO is to retrieve
>>> runtime state of guest machine image, such as registers, in host
>>> machine's crash dump as VMCS format. The problem is that VMCS
>>> internal is hidden by Intel in its specification. So, we reverse
>>> engineering it in the way implemented in this patch set. Please note
>>> that this processing never affects any existing kvm logic. The
>>> VMCSINFO is exported via sysfs to kexec-tools just like VMCOREINFO.
>>>
>>> Here is an example:
>>> Processor: Intel(R) Core(TM)2 Duo CPU     E7500  @ 2.93GHz
>>>
>>> $cat /sys/kernel/vmcsinfo
>>> 1cba8c0 2000
>>>
>>> crash>  rd -p 1cba8c0 1000
>>>           1cba8c0:  0000127b00000009 53434d5600000000  
>>> ....{.......VMCS
>>>           1cba8d0:  000000004f464e49 4e4f495349564552  
>>> INFO....REVISION
>>>           1cba8e0:  49460a643d44495f 5f4e495028444c45  
>>> _ID=d.FIELD(PIN_
>>>           1cba8f0:  4d565f4445534142 4f435f434558455f  
>>> BASED_VM_EXEC_CO
>>>           1cba900:  303d294c4f52544e 0a30383130343831  
>>> NTROL)=01840180.
>>>           1cba910:  504328444c454946 5f44455341425f55  
>>> FIELD(CPU_BASED_
>>>           1cba920:  5f434558455f4d56 294c4f52544e4f43  
>>> VM_EXEC_CONTROL)
>>>           1cba930:  393130343931303d 28444c4549460a30  
>>> =01940190.FIELD(
>>>           1cba940:  5241444e4f434553 4558455f4d565f59  
>>> SECONDARY_VM_EXE
>>>           1cba950:  4f52544e4f435f43 30346566303d294c  
>>> C_CONTROL)=0fe40
>>>           1cba960:  4c4549460a306566 4958455f4d562844  
>>> fe0.FIELD(VM_EXI
>>>           1cba970:  4f52544e4f435f54 346531303d29534c  
>>> T_CONTROLS)=01e4
>>>           1cba980:  4549460a30653130 4e455f4d5628444c  
>>> 01e0.FIELD(VM_EN
>>>           1cba990:  544e4f435f595254 33303d29534c4f52  
>>> TRY_CONTROLS)=03
>>>           1cba9a0:  460a303133303431 45554728444c4549  
>>> 140310.FIELD(GUE
>>>           1cba9b0:  45535f53455f5453 3d29524f5443454c  
>>> ST_ES_SELECTOR)=
>>>           1cba9c0:  4549460a30303530 545345554728444c  
>>> 0500.FIELD(GUEST
>>>           1cba9d0:  454c45535f53435f 35303d29524f5443  
>>> _CS_SELECTOR)=05
>>>           ......
>>>
>>> TODO:
>>>    1. In kexec-tools, get VMCSINFO via sysfs and dump it as note
>>> information
>>>       into vmcore.
>>>    2. Dump VMCS region of each guest vcpu and VMCSINFO into
>>> qemu-process
>>>       core file. To do this, we will modify kernel core dumper, gdb
>>> gcore
>>>       and crash gcore.
>>>    3. Dump guest image from the qemu-process core file into a vmcore.
>>>
>>
>> Taking a step back, can you describe the problem scenario you're fixing
>> here?
>
> Note that assuming that VMCS fields map to offsets within memory is
> not guaranteed to work for future processors.
>
> There is no guarantee that fields won't be compressed or stored with
> inverted bit ordering.
>

Right; they're also not required to be in memory at all - the processor
can cache them, even for VMCSs that are not active at this time. 
Running VMXOFF at panic time can fix that, but you have to broadcast it
to all processors, probably using NMI...

Still, some information is better than nothing.  What I doubt is whether
that information will ever be used.

-- 
error compiling committee.c: too many arguments to function


  reply	other threads:[~2012-04-18 12:13 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-11  1:39 [PATCH 0/4] Export offsets of VMCS fields as note information for kdump zhangyanfei
2012-04-11  1:49 ` [PATCH 1/4] x86: Add helper variables and functions to hold VMCSINFO zhangyanfei
2012-04-11  1:50 ` [PATCH 2/4] KVM: VMX: Add functions to fill VMCSINFO zhangyanfei
2012-04-11  8:48   ` Avi Kivity
2012-04-11 10:34     ` zhangyanfei
2012-04-11 11:41       ` Avi Kivity
2012-04-11  1:57 ` [PATCH 3/4] ksysfs: export VMCSINFO via sysfs zhangyanfei
2012-04-12 23:00   ` Greg KH
2012-04-17  1:52     ` zhangyanfei
2012-04-17  2:30       ` Greg KH
2012-04-11  1:58 ` [PATCH 4/4] kexec: Add crash_save_vmcsinfo to update VMCSINFO zhangyanfei
2012-04-11  8:56 ` [PATCH 0/4] Export offsets of VMCS fields as note information for kdump Avi Kivity
2012-04-11 10:12   ` zhangyanfei
2012-04-11 11:15     ` Avi Kivity
2012-04-11 10:21 ` Joerg Roedel
2012-04-11 10:49   ` Avi Kivity
2012-04-11 10:59   ` zhangyanfei
2012-04-17  7:44 ` Avi Kivity
2012-04-17 10:51   ` zhangyanfei
2012-04-17 10:59     ` Avi Kivity
2012-04-17 11:25       ` Wen Congyang
2012-04-17 13:04         ` Avi Kivity
2012-04-18  7:30       ` zhangyanfei
2012-04-18  8:24         ` Avi Kivity
2012-04-18  9:49           ` zhangyanfei
2012-04-18 11:56             ` Avi Kivity
2012-04-19 10:36               ` HATAYAMA Daisuke
2012-04-19 10:42                 ` Avi Kivity
2012-04-19 11:27                   ` HATAYAMA Daisuke
2012-04-19 11:31                     ` Avi Kivity
2012-04-19 12:01                       ` HATAYAMA Daisuke
2012-04-19 12:08                         ` Avi Kivity
2012-04-20 10:11                           ` HATAYAMA Daisuke
2012-04-22  9:58                             ` Avi Kivity
2012-04-22 10:33                               ` Gleb Natapov
2012-04-22 10:57                                 ` Avi Kivity
2012-04-17 16:49   ` Anthony Liguori
2012-04-18 12:13     ` Avi Kivity [this message]
2012-04-18 13:47       ` Nadav Har'El
2012-04-18 14:06         ` Avi Kivity

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=4F8EAFF7.2040505@redhat.com \
    --to=avi@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=kexec@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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).