2024-04-09 14:33:14

by Dmitry Baryshkov

[permalink] [raw]
Subject: [PATCH] drm/msm/gen_header: allow skipping the validation

We don't need to run the validation of the XML files if we are just
compiling the kernel. Skip the validation unless the user enables
corresponding Kconfig option. This removes a warning from gen_header.py
about lxml being not installed.

Reported-by: Stephen Rothwell <[email protected]>
Closes: https://lore.kernel.org/all/[email protected]/
Signed-off-by: Dmitry Baryshkov <[email protected]>
---
drivers/gpu/drm/msm/Kconfig | 8 ++++++++
drivers/gpu/drm/msm/Makefile | 9 ++++++++-
drivers/gpu/drm/msm/registers/gen_header.py | 14 +++++++++++---
3 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig
index f202f26adab2..4c9bf237d4a2 100644
--- a/drivers/gpu/drm/msm/Kconfig
+++ b/drivers/gpu/drm/msm/Kconfig
@@ -54,6 +54,14 @@ config DRM_MSM_GPU_SUDO
Only use this if you are a driver developer. This should *not*
be enabled for production kernels. If unsure, say N.

+config DRM_MSM_VALIDATE_XML
+ bool "Validate XML register files against schema"
+ depends on DRM_MSM && EXPERT
+ depends on $(success,$(PYTHON3) -c "import lxml")
+ help
+ Validate XML files with register definitions against rules-fd schema.
+ This option is mostly targeting DRM MSM developers. If unsure, say N.
+
config DRM_MSM_MDSS
bool
depends on DRM_MSM
diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index c861de58286c..718968717ad5 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -156,8 +156,15 @@ msm-y += $(adreno-y) $(msm-display-y)

obj-$(CONFIG_DRM_MSM) += msm.o

+ifeq (y,$(CONFIG_DRM_MSM_VALIDATE_XML))
+ headergen-opts += --validate
+else
+ headergen-opts += --no-validate
+endif
+
quiet_cmd_headergen = GENHDR $@
- cmd_headergen = mkdir -p $(obj)/generated && $(PYTHON3) $(srctree)/$(src)/registers/gen_header.py --rnn $(srctree)/$(src)/registers --xml $< c-defines > $@
+ cmd_headergen = mkdir -p $(obj)/generated && $(PYTHON3) $(srctree)/$(src)/registers/gen_header.py \
+ $(headergen-opts) --rnn $(srctree)/$(src)/registers --xml $< c-defines > $@

$(obj)/generated/%.xml.h: $(src)/registers/adreno/%.xml \
$(src)/registers/adreno/adreno_common.xml \
diff --git a/drivers/gpu/drm/msm/registers/gen_header.py b/drivers/gpu/drm/msm/registers/gen_header.py
index 9b2842d4a354..192123cf7976 100644
--- a/drivers/gpu/drm/msm/registers/gen_header.py
+++ b/drivers/gpu/drm/msm/registers/gen_header.py
@@ -538,6 +538,9 @@ class Parser(object):
self.variants.add(reg.domain)

def do_validate(self, schemafile):
+ if self.validate == False:
+ return
+
try:
from lxml import etree

@@ -567,7 +570,10 @@ class Parser(object):
if not xmlschema.validate(xml_doc):
error_str = str(xmlschema.error_log.filter_from_errors()[0])
raise self.error("Schema validation failed for: " + filename + "\n" + error_str)
- except ImportError:
+ except ImportError as e:
+ if self.validate:
+ raise e
+
print("lxml not found, skipping validation", file=sys.stderr)

def do_parse(self, filename):
@@ -586,9 +592,10 @@ class Parser(object):
self.stack.pop()
file.close()

- def parse(self, rnn_path, filename):
+ def parse(self, rnn_path, filename, validate):
self.path = rnn_path
self.stack = []
+ self.validate = validate
self.do_parse(filename)

def parse_reg(self, attrs, bit_size):
@@ -853,7 +860,7 @@ def dump_c(args, guard, func):
p = Parser()

try:
- p.parse(args.rnn, args.xml)
+ p.parse(args.rnn, args.xml, args.validate)
except Error as e:
print(e, file=sys.stderr)
exit(1)
@@ -941,6 +948,7 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument('--rnn', type=str, required=True)
parser.add_argument('--xml', type=str, required=True)
+ parser.add_argument('--validate', action=argparse.BooleanOptionalAction)

subparsers = parser.add_subparsers(required=True)


---
base-commit: ab556156cafa24ec7de9e89bc18fa15637c21a59
change-id: 20240409-fd-fix-lxml-eecc6949f64e

Best regards,
--
Dmitry Baryshkov <[email protected]>



2024-05-03 16:48:22

by Nathan Chancellor

[permalink] [raw]
Subject: Re: [PATCH] drm/msm/gen_header: allow skipping the validation

Hi Dmitry,

On Tue, Apr 09, 2024 at 05:22:54PM +0300, Dmitry Baryshkov wrote:
> We don't need to run the validation of the XML files if we are just
> compiling the kernel. Skip the validation unless the user enables
> corresponding Kconfig option. This removes a warning from gen_header.py
> about lxml being not installed.
>
> Reported-by: Stephen Rothwell <[email protected]>
> Closes: https://lore.kernel.org/all/[email protected]/
> Signed-off-by: Dmitry Baryshkov <[email protected]>
> ---
> drivers/gpu/drm/msm/Kconfig | 8 ++++++++
> drivers/gpu/drm/msm/Makefile | 9 ++++++++-
> drivers/gpu/drm/msm/registers/gen_header.py | 14 +++++++++++---
> 3 files changed, 27 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig
> index f202f26adab2..4c9bf237d4a2 100644
> --- a/drivers/gpu/drm/msm/Kconfig
> +++ b/drivers/gpu/drm/msm/Kconfig
> @@ -54,6 +54,14 @@ config DRM_MSM_GPU_SUDO
> Only use this if you are a driver developer. This should *not*
> be enabled for production kernels. If unsure, say N.
>
> +config DRM_MSM_VALIDATE_XML
> + bool "Validate XML register files against schema"
> + depends on DRM_MSM && EXPERT
> + depends on $(success,$(PYTHON3) -c "import lxml")
> + help
> + Validate XML files with register definitions against rules-fd schema.
> + This option is mostly targeting DRM MSM developers. If unsure, say N.

Is this change going to be applied? I have gotten a little tired of
seeing "lxml not found, skipping validation" in all of my builds :)

Cheers,
Nathan

2024-05-03 20:58:41

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH] drm/msm/gen_header: allow skipping the validation

On Fri, May 03, 2024 at 09:48:12AM -0700, Nathan Chancellor wrote:
> Hi Dmitry,
>
> On Tue, Apr 09, 2024 at 05:22:54PM +0300, Dmitry Baryshkov wrote:
> > We don't need to run the validation of the XML files if we are just
> > compiling the kernel. Skip the validation unless the user enables
> > corresponding Kconfig option. This removes a warning from gen_header.py
> > about lxml being not installed.
> >
> > Reported-by: Stephen Rothwell <[email protected]>
> > Closes: https://lore.kernel.org/all/[email protected]/
> > Signed-off-by: Dmitry Baryshkov <[email protected]>
> > ---
> > drivers/gpu/drm/msm/Kconfig | 8 ++++++++
> > drivers/gpu/drm/msm/Makefile | 9 ++++++++-
> > drivers/gpu/drm/msm/registers/gen_header.py | 14 +++++++++++---
> > 3 files changed, 27 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig
> > index f202f26adab2..4c9bf237d4a2 100644
> > --- a/drivers/gpu/drm/msm/Kconfig
> > +++ b/drivers/gpu/drm/msm/Kconfig
> > @@ -54,6 +54,14 @@ config DRM_MSM_GPU_SUDO
> > Only use this if you are a driver developer. This should *not*
> > be enabled for production kernels. If unsure, say N.
> >
> > +config DRM_MSM_VALIDATE_XML
> > + bool "Validate XML register files against schema"
> > + depends on DRM_MSM && EXPERT
> > + depends on $(success,$(PYTHON3) -c "import lxml")
> > + help
> > + Validate XML files with register definitions against rules-fd schema.
> > + This option is mostly targeting DRM MSM developers. If unsure, say N.
>
> Is this change going to be applied? I have gotten a little tired of
> seeing "lxml not found, skipping validation" in all of my builds :)
>
I've posted v2, including CI changes. The plan is to get it merged
before the drm/msm pull request.

--
With best wishes
Dmitry