From: Gleb Natapov <gleb@redhat.com>
To: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Marcelo Tosatti <mtosatti@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 10:10:24 +0200 [thread overview]
Message-ID: <20121211081024.GC11016@redhat.com> (raw)
In-Reply-To: <50C6E927.9040605@cn.fujitsu.com>
On Tue, Dec 11, 2012 at 04:04:55PM +0800, Zhang Yanfei wrote:
> 于 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.
>
Try to use typedef.
--
Gleb.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Gleb Natapov <gleb-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Zhang Yanfei <zhangyanfei-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
Cc: "kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Marcelo Tosatti
<mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
"kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Eric W. Biederman"
<ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>,
kbuild test robot
<fengguang.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: Re: [PATCH] x86/kexec: crash_vmclear_local_vmcss needs __rcu
Date: Tue, 11 Dec 2012 10:10:24 +0200 [thread overview]
Message-ID: <20121211081024.GC11016@redhat.com> (raw)
In-Reply-To: <50C6E927.9040605-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
On Tue, Dec 11, 2012 at 04:04:55PM +0800, Zhang Yanfei wrote:
> 于 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.
>
Try to use typedef.
--
Gleb.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Gleb Natapov <gleb@redhat.com>
To: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
"Eric W. Biederman" <ebiederm@xmission.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 10:10:24 +0200 [thread overview]
Message-ID: <20121211081024.GC11016@redhat.com> (raw)
In-Reply-To: <50C6E927.9040605@cn.fujitsu.com>
On Tue, Dec 11, 2012 at 04:04:55PM +0800, Zhang Yanfei wrote:
> 于 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.
>
Try to use typedef.
--
Gleb.
next prev parent reply other threads:[~2012-12-11 8:10 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
2012-12-11 8:04 ` Zhang Yanfei
2012-12-11 8:10 ` Gleb Natapov [this message]
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=20121211081024.GC11016@redhat.com \
--to=gleb@redhat.com \
--cc=ebiederm@xmission.com \
--cc=fengguang.wu@intel.com \
--cc=kexec@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=zhangyanfei@cn.fujitsu.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.