All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Gleb Natapov <gleb@redhat.com>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	kbuild test robot <fengguang.wu@intel.com>
Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu
Date: Tue, 11 Dec 2012 16:04:55 +0800	[thread overview]
Message-ID: <50C6E927.9040605@cn.fujitsu.com> (raw)
In-Reply-To: <20121210203014.GB2402@amt.cnet>

于 2012年12月11日 04:30, Marcelo Tosatti 写道:
> 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 comparison expression (different address spaces)
>>
>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>> Signed-off-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
>> ---
>>  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/kexec.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
>>  
>> -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))
>>  
>>  #endif /* __ASSEMBLY__ */
>>  
>> 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) = NULL;
>> +void __rcu (*crash_vmclear_loaded_vmcss)(void) = NULL;
> 
> Isnt this (__rcu AS tag) sufficient? After all, sparse is complaining
> 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 warning
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_operation )( ... )
arch/x86/kernel/crash.c:49:30:    got void ( [noderef] *<noident> )( ... )
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_operation )( ... )
arch/x86/kernel/crash.c:49:30:    got void ( [noderef] *<noident> )( ... )

So I made the #define to cast its type.

If you have any suggestion, that'll be helpful.

Thanks
Zhang Yanfei

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
	Gleb Natapov <gleb@redhat.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	kbuild test robot <fengguang.wu@intel.com>
Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu
Date: Tue, 11 Dec 2012 16:04:55 +0800	[thread overview]
Message-ID: <50C6E927.9040605@cn.fujitsu.com> (raw)
In-Reply-To: <20121210203014.GB2402@amt.cnet>

于 2012年12月11日 04:30, Marcelo Tosatti 写道:
> 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 comparison expression (different address spaces)
>>
>> Reported-by: kbuild test robot <fengguang.wu@intel.com>
>> Signed-off-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
>> ---
>>  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/kexec.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
>>  
>> -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))
>>  
>>  #endif /* __ASSEMBLY__ */
>>  
>> 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) = NULL;
>> +void __rcu (*crash_vmclear_loaded_vmcss)(void) = NULL;
> 
> Isnt this (__rcu AS tag) sufficient? After all, sparse is complaining
> 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 warning
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_operation )( ... )
arch/x86/kernel/crash.c:49:30:    got void ( [noderef] *<noident> )( ... )
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_operation )( ... )
arch/x86/kernel/crash.c:49:30:    got void ( [noderef] *<noident> )( ... )

So I made the #define to cast its type.

If you have any suggestion, that'll be helpful.

Thanks
Zhang Yanfei

  reply	other threads:[~2012-12-11  8:07 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-07  5:40 [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu Zhang Yanfei
2012-12-07  5:40 ` Zhang Yanfei
2012-12-10 20:30 ` Marcelo Tosatti
2012-12-10 20:30   ` Marcelo Tosatti
2012-12-11  8:04   ` Zhang Yanfei [this message]
2012-12-11  8:04     ` Zhang Yanfei
2012-12-11  8:10     ` Gleb Natapov
2012-12-11  8:10       ` Gleb Natapov
2012-12-11  8:10       ` Gleb Natapov
2012-12-11  9:09       ` Zhang Yanfei
2012-12-11  9:09         ` Zhang Yanfei
2012-12-11  9:11 ` [PATCH] [RESEND] " Zhang Yanfei
2012-12-11  9:11   ` Zhang Yanfei
2012-12-11 21:55   ` Marcelo Tosatti
2012-12-11 21:55     ` Marcelo Tosatti
2012-12-11 21:55     ` Marcelo Tosatti

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=50C6E927.9040605@cn.fujitsu.com \
    --to=zhangyanfei@cn.fujitsu.com \
    --cc=ebiederm@xmission.com \
    --cc=fengguang.wu@intel.com \
    --cc=gleb@redhat.com \
    --cc=kexec@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.