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 1TiLsP-0002La-6W for kexec@lists.infradead.org; Tue, 11 Dec 2012 09:11:47 +0000 Message-ID: <50C6F84D.7010701@cn.fujitsu.com> Date: Tue, 11 Dec 2012 17:09:33 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu References: <50C18168.305@cn.fujitsu.com> <20121210203014.GB2402@amt.cnet> <50C6E927.9040605@cn.fujitsu.com> <20121211081024.GC11016@redhat.com> In-Reply-To: <20121211081024.GC11016@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: Gleb Natapov Cc: "kvm@vger.kernel.org" , Marcelo Tosatti , "kexec@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "Eric W. Biederman" , kbuild test robot 5LqOIDIwMTLlubQxMuaciDEx5pelIDE2OjEwLCBHbGViIE5hdGFwb3Yg5YaZ6YGTOgo+IE9uIFR1 ZSwgRGVjIDExLCAyMDEyIGF0IDA0OjA0OjU1UE0gKzA4MDAsIFpoYW5nIFlhbmZlaSB3cm90ZToK Pj4g5LqOIDIwMTLlubQxMuaciDEx5pelIDA0OjMwLCBNYXJjZWxvIFRvc2F0dGkg5YaZ6YGTOgo+ Pj4gT24gRnJpLCBEZWMgMDcsIDIwMTIgYXQgMDE6NDA6NTZQTSArMDgwMCwgWmhhbmcgWWFuZmVp IHdyb3RlOgo+Pj4+IFRoaXMgcmVtb3ZlcyB0aGUgc3BhcnNlIHdhcm5pbmc6Cj4+Pj4gYXJjaC94 ODYva2VybmVsL2NyYXNoLmM6NDk6MzI6IHNwYXJzZTogaW5jb21wYXRpYmxlIHR5cGVzIGluIGNv bXBhcmlzb24gZXhwcmVzc2lvbiAoZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzKQo+Pj4+Cj4+Pj4g UmVwb3J0ZWQtYnk6IGtidWlsZCB0ZXN0IHJvYm90IDxmZW5nZ3Vhbmcud3VAaW50ZWwuY29tPgo+ Pj4+IFNpZ25lZC1vZmYtYnk6IFpoYW5nIFlhbmZlaSA8emhhbmd5YW5mZWlAY24uZnVqaXRzdS5j b20+Cj4+Pj4gLS0tCj4+Pj4gIGFyY2gveDg2L2luY2x1ZGUvYXNtL2tleGVjLmggfCAgICA0ICsr Ky0KPj4+PiAgYXJjaC94ODYva2VybmVsL2NyYXNoLmMgICAgICB8ICAgIDQgKystLQo+Pj4+ICAy IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+ IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rZXhlYy5oIGIvYXJjaC94ODYvaW5j bHVkZS9hc20va2V4ZWMuaAo+Pj4+IGluZGV4IDI4ZmVlYmEuLjE2ODgyY2QgMTAwNjQ0Cj4+Pj4g LS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va2V4ZWMuaAo+Pj4+ICsrKyBiL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2tleGVjLmgKPj4+PiBAQCAtMTYzLDcgKzE2Myw5IEBAIHN0cnVjdCBraW1hZ2Vf YXJjaCB7Cj4+Pj4gIH07Cj4+Pj4gICNlbmRpZgo+Pj4+ICAKPj4+PiAtZXh0ZXJuIHZvaWQgKCpj cmFzaF92bWNsZWFyX2xvYWRlZF92bWNzcykodm9pZCk7Cj4+Pj4gK2V4dGVybiB2b2lkIF9fcmN1 ICgqY3Jhc2hfdm1jbGVhcl9sb2FkZWRfdm1jc3MpKHZvaWQpOwo+Pj4+ICsjZGVmaW5lIHZtY2xl YXJfZnVuY19yY3Uodm1jbGVhcl9mdW5jKSBcCj4+Pj4gKwkoKHZvaWQgKCopKHZvaWQpKSByY3Vf ZGVyZWZlcmVuY2Uodm1jbGVhcl9mdW5jKSkKPj4+PiAgCj4+Pj4gICNlbmRpZiAvKiBfX0FTU0VN QkxZX18gKi8KPj4+PiAgCj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcmFzaC5j IGIvYXJjaC94ODYva2VybmVsL2NyYXNoLmMKPj4+PiBpbmRleCAyZjZiOGU4Li41MGNlMWQ2IDEw MDY0NAo+Pj4+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcmFzaC5jCj4+Pj4gKysrIGIvYXJjaC94 ODYva2VybmVsL2NyYXNoLmMKPj4+PiBAQCAtMzgsNyArMzgsNyBAQCBpbnQgaW5fY3Jhc2hfa2V4 ZWM7Cj4+Pj4gICAqCj4+Pj4gICAqIHByb3RlY3RlZCBieSByY3UuCj4+Pj4gICAqLwo+Pj4+IC12 b2lkICgqY3Jhc2hfdm1jbGVhcl9sb2FkZWRfdm1jc3MpKHZvaWQpID0gTlVMTDsKPj4+PiArdm9p ZCBfX3JjdSAoKmNyYXNoX3ZtY2xlYXJfbG9hZGVkX3ZtY3NzKSh2b2lkKSA9IE5VTEw7Cj4+Pgo+ Pj4gSXNudCB0aGlzIChfX3JjdSBBUyB0YWcpIHN1ZmZpY2llbnQ/IEFmdGVyIGFsbCwgc3BhcnNl IGlzIGNvbXBsYWluaW5nCj4+PiBhYm91dCBuYW1lc3BhY2VzLgo+Pj4KPj4+IENyZWF0aW5nIGEg I2RlZmluZSB0byBjYXN0IHNlZW1zIGV4Y2Vzc2l2ZS4KPj4+Cj4+Pgo+Pgo+PiBJIGFtIG5vdCB2 ZXJ5IGZhbWlsaWFyIHdpdGggdGhlIHJjdS4KPj4gQWRkaW5nIF9fcmN1IHRhZyBjb3VsZCBzb2x2 ZSB0aGUgcHJvYmxlbS4gQnV0IGl0IGltcG9ydGVkIGFub3RoZXIgd2FybmluZwo+PiB3aGVuIEkg dHJ5IHRvIGFzc2lnbiByY3VfZGVyZWZlcmVuY2UoY3Jhc2hfdm1jbGVhcl9sb2FkZWRfdm1jc3Mp IHRvCj4+IGRvX3ZtY2xlYXJfb3BlcmF0aW9uOgo+Pgo+PiBhcmNoL3g4Ni9rZXJuZWwvY3Jhc2gu Yzo0OTozMDogd2FybmluZzogaW5jb3JyZWN0IHR5cGUgaW4gYXNzaWdubWVudCAoZGlmZmVyZW50 IG1vZGlmaWVycykKPj4gYXJjaC94ODYva2VybmVsL2NyYXNoLmM6NDk6MzA6ICAgIGV4cGVjdGVk IHZvaWQgKCAqZG9fdm1jbGVhcl9vcGVyYXRpb24gKSggLi4uICkKPj4gYXJjaC94ODYva2VybmVs L2NyYXNoLmM6NDk6MzA6ICAgIGdvdCB2b2lkICggW25vZGVyZWZdICo8bm9pZGVudD4gKSggLi4u ICkKPj4gYXJjaC94ODYva2VybmVsL2NyYXNoLmM6NDk6MzA6IHdhcm5pbmc6IGluY29ycmVjdCB0 eXBlIGluIGFzc2lnbm1lbnQgKGRpZmZlcmVudCBtb2RpZmllcnMpCj4+IGFyY2gveDg2L2tlcm5l bC9jcmFzaC5jOjQ5OjMwOiAgICBleHBlY3RlZCB2b2lkICggKmRvX3ZtY2xlYXJfb3BlcmF0aW9u ICkoIC4uLiApCj4+IGFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjQ5OjMwOiAgICBnb3Qgdm9pZCAo IFtub2RlcmVmXSAqPG5vaWRlbnQ+ICkoIC4uLiApCj4+Cj4+IFNvIEkgbWFkZSB0aGUgI2RlZmlu ZSB0byBjYXN0IGl0cyB0eXBlLgo+Pgo+PiBJZiB5b3UgaGF2ZSBhbnkgc3VnZ2VzdGlvbiwgdGhh dCdsbCBiZSBoZWxwZnVsLgo+Pgo+IFRyeSB0byB1c2UgdHlwZWRlZi4KPiAKClRoYW5rcy4gdHlw ZWRlZiB3b3Jrcy4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwprZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhang Yanfei Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu Date: Tue, 11 Dec 2012 17:09:33 +0800 Message-ID: <50C6F84D.7010701@cn.fujitsu.com> References: <50C18168.305@cn.fujitsu.com> <20121210203014.GB2402@amt.cnet> <50C6E927.9040605@cn.fujitsu.com> <20121211081024.GC11016@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Marcelo Tosatti , "Eric W. Biederman" , "kvm@vger.kernel.org" , "kexec@lists.infradead.org" , "linux-kernel@vger.kernel.org" , kbuild test robot To: Gleb Natapov Return-path: In-Reply-To: <20121211081024.GC11016@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org =E4=BA=8E 2012=E5=B9=B412=E6=9C=8811=E6=97=A5 16:10, Gleb Natapov =E5=86= =99=E9=81=93: > On Tue, Dec 11, 2012 at 04:04:55PM +0800, Zhang Yanfei wrote: >> =E4=BA=8E 2012=E5=B9=B412=E6=9C=8811=E6=97=A5 04:30, Marcelo Tosatti= =E5=86=99=E9=81=93: >>> On Fri, Dec 07, 2012 at 01:40:56PM +0800, Zhang Yanfei wrote: >>>> This removes the sparse warning: >>>> arch/x86/kernel/crash.c:49:32: sparse: incompatible types in compa= rison expression (different address spaces) >>>> >>>> Reported-by: kbuild test robot >>>> Signed-off-by: Zhang Yanfei >>>> --- >>>> arch/x86/include/asm/kexec.h | 4 +++- >>>> arch/x86/kernel/crash.c | 4 ++-- >>>> 2 files changed, 5 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/arch/x86/include/asm/kexec.h b/arch/x86/include/asm/k= exec.h >>>> index 28feeba..16882cd 100644 >>>> --- a/arch/x86/include/asm/kexec.h >>>> +++ b/arch/x86/include/asm/kexec.h >>>> @@ -163,7 +163,9 @@ struct kimage_arch { >>>> }; >>>> #endif >>>> =20 >>>> -extern void (*crash_vmclear_loaded_vmcss)(void); >>>> +extern void __rcu (*crash_vmclear_loaded_vmcss)(void); >>>> +#define vmclear_func_rcu(vmclear_func) \ >>>> + ((void (*)(void)) rcu_dereference(vmclear_func)) >>>> =20 >>>> #endif /* __ASSEMBLY__ */ >>>> =20 >>>> diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c >>>> index 2f6b8e8..50ce1d6 100644 >>>> --- a/arch/x86/kernel/crash.c >>>> +++ b/arch/x86/kernel/crash.c >>>> @@ -38,7 +38,7 @@ int in_crash_kexec; >>>> * >>>> * protected by rcu. >>>> */ >>>> -void (*crash_vmclear_loaded_vmcss)(void) =3D NULL; >>>> +void __rcu (*crash_vmclear_loaded_vmcss)(void) =3D NULL; >>> >>> Isnt this (__rcu AS tag) sufficient? After all, sparse is complaini= ng >>> about namespaces. >>> >>> Creating a #define to cast seems excessive. >>> >>> >> >> I am not very familiar with the rcu. >> Adding __rcu tag could solve the problem. But it imported another wa= rning >> when I try to assign rcu_dereference(crash_vmclear_loaded_vmcss) to >> do_vmclear_operation: >> >> arch/x86/kernel/crash.c:49:30: warning: incorrect type in assignment= (different modifiers) >> arch/x86/kernel/crash.c:49:30: expected void ( *do_vmclear_operat= ion )( ... ) >> arch/x86/kernel/crash.c:49:30: got void ( [noderef] * )(= ... ) >> arch/x86/kernel/crash.c:49:30: warning: incorrect type in assignment= (different modifiers) >> arch/x86/kernel/crash.c:49:30: expected void ( *do_vmclear_operat= ion )( ... ) >> arch/x86/kernel/crash.c:49:30: got void ( [noderef] * )(= ... ) >> >> So I made the #define to cast its type. >> >> If you have any suggestion, that'll be helpful. >> > Try to use typedef. >=20 Thanks. typedef works.