Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753653AbdIDMlK (ORCPT ); Mon, 4 Sep 2017 08:41:10 -0400 Received: from prv-mh.provo.novell.com ([137.65.248.74]:43721 "EHLO prv-mh.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753618AbdIDMlJ (ORCPT ); Mon, 4 Sep 2017 08:41:09 -0400 Message-Id: <59AD66020200007800177273@prv-mh.provo.novell.com> X-Mailer: Novell GroupWise Internet Agent 14.2.2 Date: Mon, 04 Sep 2017 06:41:06 -0600 From: "Jan Beulich" To: "Andrew Cooper" Cc: , "Nicolas Iooss" , "Boris Ostrovsky" , "Juergen Gross" , Subject: Re: [Xen-devel] [PATCH 1/1] x86/xen: fix section of xen_init_time_ops() in header References: <20170903083857.1336-1-nicolas.iooss_linux@m4x.org> <59AD43DC02000078001770FD@prv-mh.provo.novell.com> In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2219 Lines: 52 >>> On 04.09.17 at 12:35, wrote: > On 04/09/17 11:15, Jan Beulich wrote: >>>>> On 04.09.17 at 10:17, wrote: >>> On 03/09/17 10:38, Nicolas Iooss wrote: >>>> Commit d162809f85b4 ("xen/x86: Do not call xen_init_time_ops() until >>>> shared_info is initialized") moved xen_init_time_ops() from __init to >>>> __ref without updating xen-ops.h accordingly. Fix this. >>>> >>>> Fixes: d162809f85b4 ("xen/x86: Do not call xen_init_time_ops() until >>>> shared_info is initialized") >>>> Signed-off-by: Nicolas Iooss >>>> --- >>>> arch/x86/xen/xen-ops.h | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h >>>> index 0d5004477db6..b2a5d48a2c2a 100644 >>>> --- a/arch/x86/xen/xen-ops.h >>>> +++ b/arch/x86/xen/xen-ops.h >>>> @@ -69,7 +69,7 @@ void xen_setup_runstate_info(int cpu); >>>> void xen_teardown_timer(int cpu); >>>> u64 xen_clocksource_read(void); >>>> void xen_setup_cpu_clockevents(void); >>>> -void __init xen_init_time_ops(void); >>>> +void __ref xen_init_time_ops(void); >>>> void __init xen_hvm_init_time_ops(void); >>> When correcting this could you please modify the prototypes to comply to >>> the intended form as noted in include/linux/init.h (the __ref or __init >>> annotations should be just before the ending semicolon)? >> Why would these annotations be kept on the declarations anyway? >> Attributes affecting code/data placement generally belong on the >> definitions only. > > Because: > > a) That’s what the coding style says, and > > b) So various static analysis can be done (e.g. sparse) on an individual > translation unit basis. > > > Your objection to having annotations on declarations is why I've never > got around to adding sparse to the hypervisor build. Would you mind educating me what use these annotations can be for static analysis? If they're useful in headers, I would stop objecting to them being added there, but I'd then demand for them to never be present on non-static definitions (unless there are attributes where the compiler requires them to be repeated, but I think all attributes are cumulative). Jan