From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
Julien Grall <julien@xen.org>, Wei Liu <wl@xen.org>,
Paul Durrant <paul@xen.org>,
George Dunlap <George.Dunlap@eu.citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Ian Jackson <ian.jackson@citrix.com>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2 5/7] x86: generalize padding field handling
Date: Tue, 14 Jul 2020 16:29:48 +0200 [thread overview]
Message-ID: <20200714142948.GK7191@Air-de-Roger> (raw)
In-Reply-To: <83274416-2812-53c9-f8cb-23ebdf73782e@suse.com>
On Wed, Jul 01, 2020 at 12:27:37PM +0200, Jan Beulich wrote:
> The original intention was to ignore padding fields, but the pattern
> matched only ones whose names started with an underscore. Also match
> fields whose names are in line with the C spec by not having a leading
> underscore. (Note that the leading ^ in the sed regexps was pointless
> and hence get dropped.)
>
> This requires adjusting some vNUMA macros, to avoid triggering
> "enumeration value ... not handled in switch" warnings, which - due to
> -Werror - would cause the build to fail. (I have to admit that I find
> these padding fields odd, when translation of the containing structure
> is needed anyway.)
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> While for translation macros skipping padding fields pretty surely is a
> reasonable thing to do, we may want to consider not ignoring them when
> generating checking macros.
>
> --- a/xen/common/compat/memory.c
> +++ b/xen/common/compat/memory.c
> @@ -354,10 +354,13 @@ int compat_memory_op(unsigned int cmd, X
> return -EFAULT;
>
> #define XLAT_vnuma_topology_info_HNDL_vdistance_h(_d_, _s_) \
> + case XLAT_vnuma_topology_info_vdistance_pad: \
> guest_from_compat_handle((_d_)->vdistance.h, (_s_)->vdistance.h)
> #define XLAT_vnuma_topology_info_HNDL_vcpu_to_vnode_h(_d_, _s_) \
> + case XLAT_vnuma_topology_info_vcpu_to_vnode_pad: \
> guest_from_compat_handle((_d_)->vcpu_to_vnode.h, (_s_)->vcpu_to_vnode.h)
> #define XLAT_vnuma_topology_info_HNDL_vmemrange_h(_d_, _s_) \
> + case XLAT_vnuma_topology_info_vmemrange_pad: \
> guest_from_compat_handle((_d_)->vmemrange.h, (_s_)->vmemrange.h)
I find this quite ugly, would it be better to just handle them with a
default case in the XLAT_ macros?
AFAICT it will also set (_d_)->vmemrange.h twice?
>
> XLAT_vnuma_topology_info(nat.vnuma, &cmp.vnuma);
> --- a/xen/tools/get-fields.sh
> +++ b/xen/tools/get-fields.sh
> @@ -218,7 +218,7 @@ for line in sys.stdin.readlines():
> fi
> ;;
> [\,\;])
> - if [ $level = 2 -a -n "$(echo $id | $SED 's,^_pad[[:digit:]]*,,')" ]
> + if [ $level = 2 -a -n "$(echo $id | $SED 's,_\?pad[[:digit:]]*,,')" ]
> then
> if [ $kind = union ]
> then
> @@ -347,7 +347,7 @@ build_body ()
> fi
> ;;
> [\,\;])
> - if [ $level = 2 -a -n "$(echo $id | $SED 's,^_pad[[:digit:]]*,,')" ]
> + if [ $level = 2 -a -n "$(echo $id | $SED 's,_\?pad[[:digit:]]*,,')" ]
> then
> if [ -z "$array" -a -z "$array_type" ]
> then
> @@ -437,7 +437,7 @@ check_field ()
> id=$token
> ;;
> [\,\;])
> - if [ $level = 2 -a -n "$(echo $id | $SED 's,^_pad[[:digit:]]*,,')" ]
> + if [ $level = 2 -a -n "$(echo $id | $SED 's,_\?pad[[:digit:]]*,,')" ]
> then
> check_field $1 $2 $3.$id "$fields"
> test "$token" != ";" || fields= id=
> @@ -491,7 +491,7 @@ build_check ()
> test $level != 2 -o $arrlvl != 1 || id=$token
> ;;
> [\,\;])
> - if [ $level = 2 -a -n "$(echo $id | $SED 's,^_pad[[:digit:]]*,,')" ]
> + if [ $level = 2 -a -n "$(echo $id | $SED 's,_\?pad[[:digit:]]*,,')" ]
> then
> check_field $kind $1 $id "$fields"
> test "$token" != ";" || fields= id=
I have to admit I'm not overly happy with this level of repetition
(not that you introduce it here), but I would prefer to have the
regexp in a single place if possible, it's easy to miss instances
IMO.
Thanks.
next prev parent reply other threads:[~2020-07-14 14:30 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-01 10:22 [PATCH v2 0/7] x86: compat header generation and checking adjustments Jan Beulich
2020-07-01 10:25 ` [PATCH v2 1/7] x86: fix compat header generation Jan Beulich
2020-07-01 16:10 ` Roger Pau Monné
2020-07-01 16:17 ` Jan Beulich
2020-07-15 8:43 ` Roger Pau Monné
2020-07-15 8:56 ` Jan Beulich
2020-07-01 10:25 ` [PATCH v2 2/7] x86/mce: add compat struct checking for XEN_MC_inject_v2 Jan Beulich
2020-07-14 10:24 ` Roger Pau Monné
2020-07-14 11:44 ` Jan Beulich
2020-07-14 14:30 ` Roger Pau Monné
2020-07-01 10:26 ` [PATCH v2 3/7] x86/mce: bring hypercall subop compat checking in sync again Jan Beulich
2020-07-14 11:19 ` Roger Pau Monné
2020-07-14 11:47 ` Jan Beulich
2020-07-14 14:31 ` Roger Pau Monné
2020-07-15 6:27 ` Jan Beulich
2020-07-14 14:32 ` Roger Pau Monné
2020-07-01 10:27 ` [PATCH v2 4/7] x86/dmop: add compat struct checking for XEN_DMOP_map_mem_type_to_ioreq_server Jan Beulich
2020-07-14 11:19 ` Roger Pau Monné
2020-07-01 10:27 ` [PATCH v2 5/7] x86: generalize padding field handling Jan Beulich
2020-07-14 14:29 ` Roger Pau Monné [this message]
2020-07-15 6:36 ` Jan Beulich
2020-07-15 8:34 ` Roger Pau Monné
2020-07-15 8:47 ` Jan Beulich
2020-07-01 10:28 ` [PATCH v2 6/7] flask: drop dead compat translation code Jan Beulich
2020-07-14 14:58 ` Roger Pau Monné
2020-07-15 6:42 ` Jan Beulich
2020-07-15 8:41 ` Roger Pau Monné
2020-07-15 8:52 ` Jan Beulich
2020-07-15 10:08 ` Roger Pau Monné
2020-07-01 10:28 ` [PATCH v2 7/7] x86: only generate compat headers actually needed Jan Beulich
2020-07-14 15:03 ` Roger Pau Monné
2020-07-15 6:47 ` Jan Beulich
2020-07-02 7:34 ` [PATCH v2 0/7] x86: compat header generation and checking adjustments Paul Durrant
2020-07-02 7:42 ` 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=20200714142948.GK7191@Air-de-Roger \
--to=roger.pau@citrix.com \
--cc=George.Dunlap@eu.citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=ian.jackson@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=paul@xen.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).