From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TOefu-0001AP-Bh for kexec@lists.infradead.org; Thu, 18 Oct 2012 01:13:27 +0000 Message-ID: <507F5762.3060208@cn.fujitsu.com> Date: Thu, 18 Oct 2012 09:12:02 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH 0/3] x86: clear vmcss on all cpus when doing kdump if necessary References: <5077BB7B.4030203@cn.fujitsu.com> <507C2F18.8080904@redhat.com> <507E17C0.9070305@cn.fujitsu.com> <507E8575.4040908@redhat.com> In-Reply-To: <507E8575.4040908@redhat.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: kexec-bounces@lists.infradead.org Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Avi Kivity Cc: x86@kernel.org, "kvm@vger.kernel.org" , linux-doc@vger.kernel.org, "Hao, Xudong" , mtosatti@redhat.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, "Nakajima, Jun" 5LqOIDIwMTLlubQxMOaciDE35pelIDE4OjE2LCBBdmkgS2l2aXR5IOWGmemBkzoKPiBPbiAxMC8x Ny8yMDEyIDA0OjI4IEFNLCBaaGFuZyBZYW5mZWkgd3JvdGU6Cj4+IOS6jiAyMDEy5bm0MTDmnIgx NeaXpSAyMzo0MywgQXZpIEtpdml0eSDlhpnpgZM6Cj4+PiBPbiAxMC8xMi8yMDEyIDA4OjQwIEFN LCBaaGFuZyBZYW5mZWkgd3JvdGU6Cj4+Pj4gQ3VycmVudGx5LCBrZHVtcCBqdXN0IG1ha2VzIGFs bCB0aGUgbG9naWNhbCBwcm9jZXNzb3JzIGxlYXZlIFZNWCBvcGVyYXRpb24gYnkKPj4+PiBleGVj dXRpbmcgVk1YT0ZGIGluc3RydWN0aW9uLCBzbyBhbnkgVk1DU3MgYWN0aXZlIG9uIHRoZSBsb2dp Y2FsIHByb2Nlc3NvcnMgbWF5Cj4+Pj4gYmUgY29ycnVwdGVkLiBCdXQsIHNvbWV0aW1lcywgd2Ug bmVlZCB0aGUgVk1DU3MgdG8gZGVidWcgZ3Vlc3QgaW1hZ2VzIGNvbnRhaW5lZAo+Pj4+IGluIHRo ZSBob3N0IHZtY29yZS4gVG8gcHJldmVudCB0aGUgY29ycnVwdGlvbiwgd2Ugc2hvdWxkIFZNQ0xF QVIgdGhlIFZNQ1NzIGJlZm9yZQo+Pj4+IGV4ZWN1dGluZyB0aGUgVk1YT0ZGIGluc3RydWN0aW9u Lgo+Pj4KPj4+IEhvdyBoYXZlIHlvdSB2ZXJpZmllZCB0aGF0IFZNWE9GRiBkb2Vzbid0IGZsdXNo IGNhY2hlZCBWTUNTcyBhbHJlYWR5Pwo+Pj4KPj4KPj4gSSB0cmllZCBzb21lIHRlc3RzLCBmb3Ig ZXhhbXBsZSwgSSBtYWRlIGNvcGllcyBmb3IgZXZlcnkgdm1jcywgYW5kIGluIHRoZSBrZHVtcAo+ PiBwYXRoLCBJIGJhY2tlZCB1cCBhbGwgdGhlIGxvYWRlZCB2bWNzIGludG8gdGhlIGNvcGllcyBi ZWZvcmUgdm14b2ZmLgo+PiBBZnRlciBnZW5lcmF0aW5nIHRoZSB2bWNvcmUsIEkgcmV0cmlldmUg dGhlIHZtY3NzIGFuZCB0aGVpciBjb3BpZXMsIGFuZCBjb21wYXJlIHRoZW0sCj4+IG5vIGRpZmZl cmVuY2VzLgo+Pgo+PiBBbm90aGVyIHRlc3QgaXMgdXNpbmcgVk1DTEVBUiB0byBjbGVhciBhbGwg dGhlIGxvYWRlZCB2bWNzIGJlZm9yZSBWTVhPRkYsCj4+IGFuZCBjb21wYXJlIHRoZSB2bWNzcyBh bmQgdGhlaXIgY29waWVzLCB0aGVyZSBhcmUgaW5kZWVkIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhl Cj4+IHZtY3MgYW5kIGl0cyBjb3B5Lgo+Pgo+PiBJIGtub3cgdGhlIHRlc3RzIG1heSBiZSBub3Qg c28gY29udmluY2luZywgZm9yIGV4YW1wbGUsIEkgdXNlZCBtZW1jcHkgdG8gYmFjayB1cAo+PiB0 aGUgdm1jc3MgYW5kIGl0IGlzIGFuIG9yZGluYXJ5IG1lbW9yeSBvcGVyYXRpb24uIEJ1dCB0byBl bnN1cmUgdGhlIG5vbi1jb3JydXB0aW9uCj4+IG9mIHRoZSB2bWNzcyBpbiB0aGUgdm1jb3JlLCBJ IHRoaW5rIHdlIHNob3VsZCBWTUNMRUFSIHRoZSB2bWNzcyBiZWZvcmUgVk1YT0ZGIGp1c3QKPj4g YXMgdGhlIEludGVsIHNwZWMgc2F5cy4KPiAKPiBTb3JyeSwgSSB3YXMgdW5jbGVhciAtLSBJIHdh cyByZWZlcnJpbmcgdG8gdGhlIHNwZWMsIEkgd2Fzbid0IHN1cmUKPiB3aGV0aGVyIFZNWE9GRiBp cyBkZWZpbmVkIHRvIGZsdXNoIFZNQ1NlcyBvciB3aGV0aGVyIGl0IGp1c3QgaW52YWxpZGF0ZXMK PiBvbi1jaGlwIGNhY2hlcyBzbyB0aGF0IGl0IHdvbid0IGZsdXNoIHRoZW0gb3V0IGluIHRoZSBm dXR1cmUsIGNvcnJ1cHRpbmcKPiBtZW1vcnkuICBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBh Y3R1YWwgYmVoYXZpb3VyIGFzIGl0IG1heSBjaGFuZ2UKPiB3aXRoIGZ1dHVyZSB2ZXJzaW9uLgo+ IAo+IENvcHlpbmcgc29tZSBJbnRlbCBmb2xrLCBtYXliZSB0aGV5IGNhbiBjbGFyaWZ5IGl0Lgo+ IAoKWWVzLCB0aGUgSW50ZWwgc3BlYyBzYXlzICJtYXkgYmUiIGFib3V0IHRoZSBWTUNTLWNvcnJ1 cHRpb24gdGhpbmcuIEZyb20KY2hhcHRlciAyNC4xMC4xIGluIEludGVswq4gNjQgYW5kIElBLTMy IEFyY2hpdGVjdHVyZXMgU29mdHdhcmUgRGV2ZWxvcGVy4oCZcwpNYW51YWwgVm9sdW1lIDNDOlN5 c3RlbSBQcm9ncmFtbWluZyBHdWlkZSwgUGFydCAzLCB0aGVyZSBpcyB0aGUgZGVzY3JpcHRpb246 CgoiSWYgYSBsb2dpY2FsIHByb2Nlc3NvciBsZWF2ZXMgVk1YIG9wZXJhdGlvbiwgYW55IFZNQ1Nz IGFjdGl2ZSBvbiB0aGF0IGxvZ2ljYWwKcHJvY2Vzc29yIG1heSBiZSBjb3JydXB0ZWQgKHNlZSBi ZWxvdykuIFRvIHByZXZlbnQgc3VjaCBjb3JydXB0aW9uIG9mIGEgVk1DUyB0aGF0Cm1heSBiZSB1 c2VkIGVpdGhlciBhZnRlciBhIHJldHVybiB0byBWTVggb3BlcmF0aW9uIG9yIG9uIGFub3RoZXIg bG9naWNhbCBwcm9jZXNzb3IsCnNvZnR3YXJlIHNob3VsZCBWTUNMRUFSIHRoYXQgVk1DUyBiZWZv cmUgZXhlY3V0aW5nIHRoZSBWTVhPRkYgaW5zdHJ1Y3Rpb24gb3IKcmVtb3ZpbmcgcG93ZXIgZnJv bSB0aGUgcHJvY2Vzc29yIChlLmcuLCBhcyBwYXJ0IG9mIGEgdHJhbnNpdGlvbiB0byB0aGUgUzMg YW5kIFM0CnBvd2VyIHN0YXRlcykuIgoKT3VyIHB1cnBvc2UgaXMgdG8gbWFrZSBzdXJlIHRoZSBW TUNTcyBpbiB0aGUgdm1jb3JlIGFyZSB1cGRhdGVkIGFuZCBub24tY29ycnVwdGVkLiBTbwphY2Nv cmRpbmcgdG8gdGhlIGRlc2NyaXB0aW9uIGFib3ZlLCBubyBtYXR0ZXIgd2hldGhlciBWTVhPRkYg aXMgZGVmaW5lZCB0byBmbHVzaApWTUNTcyBvciB3aGV0aGVyIGl0IGp1c3QgaW52YWxpZGF0ZXMg b24tY2hpcCBjYWNoZXMsIHdlJ2QgYmV0dGVyIFZNQ0xFQVIgdGhlClZNQ1NzIGJlZm9yZSBleGVj dXRpbmcgdGhlIFZNWE9GRi4KClRoYW5rcwpaaGFuZyBZYW5mZWkKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0Bs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8va2V4ZWMK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhang Yanfei Subject: Re: [PATCH 0/3] x86: clear vmcss on all cpus when doing kdump if necessary Date: Thu, 18 Oct 2012 09:12:02 +0800 Message-ID: <507F5762.3060208@cn.fujitsu.com> References: <5077BB7B.4030203@cn.fujitsu.com> <507C2F18.8080904@redhat.com> <507E17C0.9070305@cn.fujitsu.com> <507E8575.4040908@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: x86@kernel.org, kexec@lists.infradead.org, linux-doc@vger.kernel.org, mtosatti@redhat.com, linux-kernel@vger.kernel.org, "kvm@vger.kernel.org" , "Hao, Xudong" , "Nakajima, Jun" To: Avi Kivity Return-path: In-Reply-To: <507E8575.4040908@redhat.com> Sender: linux-doc-owner@vger.kernel.org List-Id: kvm.vger.kernel.org =E4=BA=8E 2012=E5=B9=B410=E6=9C=8817=E6=97=A5 18:16, Avi Kivity =E5=86=99= =E9=81=93: > On 10/17/2012 04:28 AM, Zhang Yanfei wrote: >> =E4=BA=8E 2012=E5=B9=B410=E6=9C=8815=E6=97=A5 23:43, Avi Kivity =E5=86= =99=E9=81=93: >>> On 10/12/2012 08:40 AM, Zhang Yanfei wrote: >>>> Currently, kdump just makes all the logical processors leave VMX o= peration by >>>> executing VMXOFF instruction, so any VMCSs active on the logical p= rocessors may >>>> be corrupted. But, sometimes, we need the VMCSs to debug guest ima= ges contained >>>> in the host vmcore. To prevent the corruption, we should VMCLEAR t= he VMCSs before >>>> executing the VMXOFF instruction. >>> >>> How have you verified that VMXOFF doesn't flush cached VMCSs alread= y? >>> >> >> I tried some tests, for example, I made copies for every vmcs, and i= n the kdump >> path, I backed up all the loaded vmcs into the copies before vmxoff. >> After generating the vmcore, I retrieve the vmcss and their copies, = and compare them, >> no differences. >> >> Another test is using VMCLEAR to clear all the loaded vmcs before VM= XOFF, >> and compare the vmcss and their copies, there are indeed differences= between the >> vmcs and its copy. >> >> I know the tests may be not so convincing, for example, I used memcp= y to back up >> the vmcss and it is an ordinary memory operation. But to ensure the = non-corruption >> of the vmcss in the vmcore, I think we should VMCLEAR the vmcss befo= re VMXOFF just >> as the Intel spec says. >=20 > Sorry, I was unclear -- I was referring to the spec, I wasn't sure > whether VMXOFF is defined to flush VMCSes or whether it just invalida= tes > on-chip caches so that it won't flush them out in the future, corrupt= ing > memory. We don't want to depend on actual behaviour as it may change > with future version. >=20 > Copying some Intel folk, maybe they can clarify it. >=20 Yes, the Intel spec says "may be" about the VMCS-corruption thing. From chapter 24.10.1 in Intel=C2=AE 64 and IA-32 Architectures Software Deve= loper=E2=80=99s Manual Volume 3C:System Programming Guide, Part 3, there is the descrip= tion: "If a logical processor leaves VMX operation, any VMCSs active on that = logical processor may be corrupted (see below). To prevent such corruption of a= VMCS that may be used either after a return to VMX operation or on another logica= l processor, software should VMCLEAR that VMCS before executing the VMXOFF instructi= on or removing power from the processor (e.g., as part of a transition to the= S3 and S4 power states)." Our purpose is to make sure the VMCSs in the vmcore are updated and non= -corrupted. So according to the description above, no matter whether VMXOFF is defined= to flush VMCSs or whether it just invalidates on-chip caches, we'd better VMCLEA= R the VMCSs before executing the VMXOFF. Thanks Zhang Yanfei