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 <sfr@canb.auug.org.au> Closes: https://lore.kernel.org/all/20240409120108.2303d0bd@canb.auug.org.au/ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Patchwork: https://patchwork.freedesktop.org/patch/592558/ Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
parent
69b79e8075
commit
b587f413ca
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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()
|
||||
subparsers.required = True
|
||||
|
Loading…
x
Reference in New Issue
Block a user