All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony PERARD <anthony.perard@vates.tech>
To: Jan Beulich <jbeulich@suse.com>
Cc: "Nicola Vetrini" <nicola.vetrini@bugseng.com>,
	"Simone Ballarin" <simone.ballarin@bugseng.com>,
	consulting@bugseng.com, sstabellini@kernel.org,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>, "Wei Liu" <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH v3 05/16] xen/x86: address violations of MISRA C:2012 Directive 4.10
Date: Wed, 26 Jun 2024 13:38:19 +0000	[thread overview]
Message-ID: <ZnwZycQ3mU21cSpd@l14> (raw)
In-Reply-To: <0c88d86e-f226-4225-b723-a6662fcd5bef@suse.com>

On Wed, Jun 26, 2024 at 12:31:42PM +0200, Jan Beulich wrote:
> On 26.06.2024 12:25, Nicola Vetrini wrote:
> > On 2024-06-26 11:26, Jan Beulich wrote:
> >> On 26.06.2024 11:20, Nicola Vetrini wrote:
> >>> On 2024-06-26 11:06, Jan Beulich wrote:
> >>>> On 25.06.2024 21:31, Nicola Vetrini wrote:
> >>>>> On 2024-03-12 09:16, Jan Beulich wrote:
> >>>>>> On 11.03.2024 09:59, Simone Ballarin wrote:
> >>>>>>> --- a/xen/arch/x86/Makefile
> >>>>>>> +++ b/xen/arch/x86/Makefile
> >>>>>>> @@ -258,18 +258,20 @@ $(obj)/asm-macros.i: CFLAGS-y += -P
> >>>>>>>  $(objtree)/arch/x86/include/asm/asm-macros.h: $(obj)/asm-macros.i
> >>>>>>> $(src)/Makefile
> >>>>>>>  	$(call filechk,asm-macros.h)
> >>>>>>>
> >>>>>>> +ARCHDIR = $(shell echo $(SRCARCH) | tr a-z A-Z)
> >>>>>>
> >>>>>> This wants to use :=, I think - there's no reason to invoke the 
> >>>>>> shell
> >>>>>> ...
> >>>>>
> >>>>> I agree on this
> >>>>>
> >>>>>>
> >>>>>>>  define filechk_asm-macros.h
> >>>>>>> +    echo '#ifndef ASM_$(ARCHDIR)_ASM_MACROS_H'; \
> >>>>>>> +    echo '#define ASM_$(ARCHDIR)_ASM_MACROS_H'; \
> >>>>>>>      echo '#if 0'; \
> >>>>>>>      echo '.if 0'; \
> >>>>>>>      echo '#endif'; \
> >>>>>>> -    echo '#ifndef __ASM_MACROS_H__'; \
> >>>>>>> -    echo '#define __ASM_MACROS_H__'; \
> >>>>>>>      echo 'asm ( ".include \"$@\"" );'; \
> >>>>>>> -    echo '#endif /* __ASM_MACROS_H__ */'; \
> >>>>>>>      echo '#if 0'; \
> >>>>>>>      echo '.endif'; \
> >>>>>>>      cat $<; \
> >>>>>>> -    echo '#endif'
> >>>>>>> +    echo '#endif'; \
> >>>>>>> +    echo '#endif /* ASM_$(ARCHDIR)_ASM_MACROS_H */'
> >>>>>>>  endef
> >>>>>>
> >>>>>> ... three times while expanding this macro. Alternatively (to avoid
> >>>>>> an unnecessary shell invocation when this macro is never expanded 
> >>>>>> at
> >>>>>> all) a shell variable inside the "define" above would want
> >>>>>> introducing.
> >>>>>> Whether this 2nd approach is better depends on whether we 
> >>>>>> anticipate
> >>>>>> further uses of ARCHDIR.
> >>>>>
> >>>>> However here I'm not entirely sure about the meaning of this latter
> >>>>> proposal.
> >>>>> My proposal is the following:
> >>>>>
> >>>>> ARCHDIR := $(shell echo $(SRCARCH) | tr a-z A-Z)
> >>>>>
> >>>>> in a suitably generic place (such as Kbuild.include or maybe
> >>>>> xen/Makefile) as you suggested in subsequent patches that reused 
> >>>>> this
> >>>>> pattern.
> >>>>
> >>>> If $(ARCHDIR) is going to be used elsewhere, then what you suggest is
> >>>> fine.
> >>>> My "whether" in the earlier reply specifically left open for
> >>>> clarification
> >>>> what the intentions with the variable are. The alternative I had
> >>>> described
> >>>> makes sense only when $(ARCHDIR) would only ever be used inside the
> >>>> filechk_asm-macros.h macro.
> >>>
> >>> Yes, the intention is to reuse $(ARCHDIR) in the formation of other
> >>> places, as you can tell from the fact that subsequent patches 
> >>> replicate
> >>> the same pattern. This is going to save some duplication.
> >>> The only matter left then is whether xen/Makefile (around line 250, 
> >>> just
> >>> after setting SRCARCH) would be better, or Kbuild.include. To me the
> >>> former place seems more natural, but I'm not totally sure.
> >>
> >> Depends on where all the intended uses are. If they're all in 
> >> xen/Makefile,
> >> then having the macro just there is of course sufficient. Whereas when 
> >> it's
> >> needed elsewhere, instead of exporting putting it in Kbuild.include 
> >> would
> >> seem more natural / desirable to me.
> >>
> > 
> > The places where this would be used are these:
> > file: target (or define)
> > xen/build.mk: arch/$(SRCARCH)/include/asm/asm-offsets.h: asm-offsets.s
> > xen/include/Makefile: define cmd_xlat_h
> > xen/arch/x86/Makefile: define filechk_asm-macros.h
> > 
> > The only issue that comes to my mind (it may not be one at all) is that 
> > SRCARCH is defined and exported in xen/Makefile after including 
> > Kbuild.include, so it would need to be defined after SRCARCH is 
> > assigned:
> > 
> > include scripts/Kbuild.include
> > 
> > # Don't break if the build process wasn't called from the top level
> > # we need XEN_TARGET_ARCH to generate the proper config
> > include $(XEN_ROOT)/Config.mk
> > 
> > # Set ARCH/SRCARCH appropriately.
> > 
> > ARCH := $(XEN_TARGET_ARCH)
> > SRCARCH := $(shell echo $(ARCH) | \
> >      sed -e 's/x86.*/x86/' -e 's/arm\(32\|64\)/arm/g' \
> >          -e 's/riscv.*/riscv/g' -e 's/ppc.*/ppc/g')
> > export ARCH SRCARCH
> > 
> > Am I missing something?
> 
> In that case the alternatives are exporting or using = rather than := in
> Kbuild.include, i.e. other than initially requested. Personally I dislike
> exporting to a fair degree, but I'm not sure which one's better in this
> case. Cc-ing Anthony for possible input.

None. The name is missleading anyway, it would suggest to me that it
contain a directory, but that's wrong.

Another thing that suboptimal, use make to call a shell to generate a
string that is going to be later use in shell context. How about just
doing the work in that later shell context?

Something like:

 define filechk_asm-macros.h
+    guard=$$(echo ASM_${SRCARCH}_ASM_MACROS_H | tr a-z A-Z); \
+    echo "#ifndef $$guard"; \
+    echo "#define $$guard"; \
     echo '#if 0'; \
     echo '.if 0'; \

Or, instead of having to write the name of the file down, we could
use a name that is already registered in a variable:

 define filechk_asm-macros.h
+    guard=$$(echo $@ | tr a-z/.- A-Z_); \
+    echo "#ifndef $$guard"; \
+    echo "#define $$guard"; \
     echo '#if 0'; \
     echo '.if 0'; \

This produces:
    #ifndef ARCH_X86_INCLUDE_ASM_ASM_MACROS_H
    #define ARCH_X86_INCLUDE_ASM_ASM_MACROS_H
    #if 0
    .if 0

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


  reply	other threads:[~2024-06-26 13:38 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-11  8:59 [XEN PATCH v3 00/16] xen: address violation of MISRA C:2012 Directive 4.10 Simone Ballarin
2024-03-11  8:59 ` [XEN PATCH v3 01/16] misra: add deviation for headers that explicitly avoid guards Simone Ballarin
2024-03-11 10:02   ` Jan Beulich
2024-03-14 22:55     ` Stefano Stabellini
2024-03-15  6:59       ` Jan Beulich
2024-03-16  0:34         ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 02/16] misra: modify deviations for empty and generated headers Simone Ballarin
2024-03-14 22:57   ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 03/16] misra: add deviations for direct inclusion guards Simone Ballarin
2024-03-11 10:08   ` Jan Beulich
2024-03-11 12:00     ` Simone Ballarin
2024-03-11 13:56       ` Jan Beulich
2024-03-11 14:14         ` Simone Ballarin
2024-03-14 22:59           ` Stefano Stabellini
2024-03-15  9:19             ` Jan Beulich
2024-03-16  0:43               ` Stefano Stabellini
2024-03-18  8:06                 ` Jan Beulich
2024-03-19  3:34                   ` Stefano Stabellini
2024-03-19  7:45                     ` Jan Beulich
2024-06-25 19:17                       ` Nicola Vetrini
2024-03-11  8:59 ` [XEN PATCH v3 04/16] xen/arm: address violations of MISRA C:2012 Directive 4.10 Simone Ballarin
2024-03-11 10:10   ` Jan Beulich
2024-03-11 12:07     ` Simone Ballarin
2024-03-11 14:00       ` Jan Beulich
2024-03-11  8:59 ` [XEN PATCH v3 05/16] xen/x86: " Simone Ballarin
2024-03-12  8:16   ` Jan Beulich
2024-06-25 19:31     ` Nicola Vetrini
2024-06-26  8:20       ` Jan Beulich
2024-06-26  8:31         ` Nicola Vetrini
2024-06-26  9:06       ` Jan Beulich
2024-06-26  9:20         ` Nicola Vetrini
2024-06-26  9:26           ` Jan Beulich
2024-06-26 10:25             ` Nicola Vetrini
2024-06-26 10:31               ` Jan Beulich
2024-06-26 13:38                 ` Anthony PERARD [this message]
2024-06-26 14:24                   ` Nicola Vetrini
2024-03-11  8:59 ` [XEN PATCH v3 06/16] x86/EFI: " Simone Ballarin
2024-03-14 23:02   ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 07/16] xen/common: " Simone Ballarin
2024-03-14 23:03   ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 08/16] xen/efi: " Simone Ballarin
2024-03-14 23:04   ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 09/16] xen: " Simone Ballarin
2024-03-12  8:21   ` Jan Beulich
2024-03-12 10:22   ` Julien Grall
2024-03-14 23:07   ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 10/16] x86/asm: " Simone Ballarin
2024-03-12  8:32   ` Jan Beulich
2024-03-11  8:59 ` [XEN PATCH v3 11/16] xen/arm: " Simone Ballarin
2024-03-14 23:12   ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 12/16] xen: " Simone Ballarin
2024-03-12 14:44   ` Jan Beulich
2024-03-11  8:59 ` [XEN PATCH v3 13/16] xen: add deviations for MISRA C.2012 " Simone Ballarin
2024-03-12 14:58   ` Jan Beulich
2024-03-11  8:59 ` [XEN PATCH v3 14/16] xen/x86: address violations of MISRA C:2012 " Simone Ballarin
2024-03-12 15:54   ` Jan Beulich
2024-03-14 23:19     ` Stefano Stabellini
2024-03-11  8:59 ` [XEN PATCH v3 15/16] x86/mtrr: " Simone Ballarin
2024-03-12 15:55   ` Jan Beulich
2024-03-14 13:00   ` Jan Beulich
2024-03-11  8:59 ` [XEN PATCH v3 16/16] xen/lz4: " Simone Ballarin
2024-03-12 15:56   ` Jan Beulich
2024-03-11  9:59 ` [XEN PATCH v3 00/16] xen: address violation " Jan Beulich
2024-03-11 11:41   ` Simone Ballarin
2024-03-11 13:27     ` Jan Beulich

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=ZnwZycQ3mU21cSpd@l14 \
    --to=anthony.perard@vates.tech \
    --cc=andrew.cooper3@citrix.com \
    --cc=consulting@bugseng.com \
    --cc=jbeulich@suse.com \
    --cc=nicola.vetrini@bugseng.com \
    --cc=roger.pau@citrix.com \
    --cc=simone.ballarin@bugseng.com \
    --cc=sstabellini@kernel.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    /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.