Commit b587f413 authored by Dmitry Baryshkov's avatar Dmitry Baryshkov Committed by Rob Clark

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: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Closes: https://lore.kernel.org/all/20240409120108.2303d0bd@canb.auug.org.au/Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/592558/Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
parent 69b79e80
...@@ -54,6 +54,14 @@ config DRM_MSM_GPU_SUDO ...@@ -54,6 +54,14 @@ config DRM_MSM_GPU_SUDO
Only use this if you are a driver developer. This should *not* Only use this if you are a driver developer. This should *not*
be enabled for production kernels. If unsure, say N. 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 config DRM_MSM_MDSS
bool bool
depends on DRM_MSM depends on DRM_MSM
......
...@@ -156,8 +156,15 @@ msm-y += $(adreno-y) $(msm-display-y) ...@@ -156,8 +156,15 @@ msm-y += $(adreno-y) $(msm-display-y)
obj-$(CONFIG_DRM_MSM) += msm.o 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 $@ 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 \ $(obj)/generated/%.xml.h: $(src)/registers/adreno/%.xml \
$(src)/registers/adreno/adreno_common.xml \ $(src)/registers/adreno/adreno_common.xml \
......
...@@ -538,6 +538,9 @@ class Parser(object): ...@@ -538,6 +538,9 @@ class Parser(object):
self.variants.add(reg.domain) self.variants.add(reg.domain)
def do_validate(self, schemafile): def do_validate(self, schemafile):
if self.validate == False:
return
try: try:
from lxml import etree from lxml import etree
...@@ -567,7 +570,10 @@ class Parser(object): ...@@ -567,7 +570,10 @@ class Parser(object):
if not xmlschema.validate(xml_doc): if not xmlschema.validate(xml_doc):
error_str = str(xmlschema.error_log.filter_from_errors()[0]) error_str = str(xmlschema.error_log.filter_from_errors()[0])
raise self.error("Schema validation failed for: " + filename + "\n" + error_str) 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) print("lxml not found, skipping validation", file=sys.stderr)
def do_parse(self, filename): def do_parse(self, filename):
...@@ -586,9 +592,10 @@ class Parser(object): ...@@ -586,9 +592,10 @@ class Parser(object):
self.stack.pop() self.stack.pop()
file.close() file.close()
def parse(self, rnn_path, filename): def parse(self, rnn_path, filename, validate):
self.path = rnn_path self.path = rnn_path
self.stack = [] self.stack = []
self.validate = validate
self.do_parse(filename) self.do_parse(filename)
def parse_reg(self, attrs, bit_size): def parse_reg(self, attrs, bit_size):
...@@ -853,7 +860,7 @@ def dump_c(args, guard, func): ...@@ -853,7 +860,7 @@ def dump_c(args, guard, func):
p = Parser() p = Parser()
try: try:
p.parse(args.rnn, args.xml) p.parse(args.rnn, args.xml, args.validate)
except Error as e: except Error as e:
print(e, file=sys.stderr) print(e, file=sys.stderr)
exit(1) exit(1)
...@@ -941,6 +948,7 @@ def main(): ...@@ -941,6 +948,7 @@ def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--rnn', type=str, required=True) parser.add_argument('--rnn', type=str, required=True)
parser.add_argument('--xml', type=str, required=True) parser.add_argument('--xml', type=str, required=True)
parser.add_argument('--validate', action=argparse.BooleanOptionalAction)
subparsers = parser.add_subparsers() subparsers = parser.add_subparsers()
subparsers.required = True subparsers.required = True
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment