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]>
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
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