Skip to content

Commit b587f41

Browse files
lumagrobclark
authored andcommitted
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>
1 parent 69b79e8 commit b587f41

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

drivers/gpu/drm/msm/Kconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@ config DRM_MSM_GPU_SUDO
5454
Only use this if you are a driver developer. This should *not*
5555
be enabled for production kernels. If unsure, say N.
5656

57+
config DRM_MSM_VALIDATE_XML
58+
bool "Validate XML register files against schema"
59+
depends on DRM_MSM && EXPERT
60+
depends on $(success,$(PYTHON3) -c "import lxml")
61+
help
62+
Validate XML files with register definitions against rules-fd schema.
63+
This option is mostly targeting DRM MSM developers. If unsure, say N.
64+
5765
config DRM_MSM_MDSS
5866
bool
5967
depends on DRM_MSM

drivers/gpu/drm/msm/Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,15 @@ msm-y += $(adreno-y) $(msm-display-y)
156156

157157
obj-$(CONFIG_DRM_MSM) += msm.o
158158

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

162169
$(obj)/generated/%.xml.h: $(src)/registers/adreno/%.xml \
163170
$(src)/registers/adreno/adreno_common.xml \

drivers/gpu/drm/msm/registers/gen_header.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,9 @@ def add_all_usages(self, reg, usages):
538538
self.variants.add(reg.domain)
539539

540540
def do_validate(self, schemafile):
541+
if self.validate == False:
542+
return
543+
541544
try:
542545
from lxml import etree
543546

@@ -567,7 +570,10 @@ def do_validate(self, schemafile):
567570
if not xmlschema.validate(xml_doc):
568571
error_str = str(xmlschema.error_log.filter_from_errors()[0])
569572
raise self.error("Schema validation failed for: " + filename + "\n" + error_str)
570-
except ImportError:
573+
except ImportError as e:
574+
if self.validate:
575+
raise e
576+
571577
print("lxml not found, skipping validation", file=sys.stderr)
572578

573579
def do_parse(self, filename):
@@ -586,9 +592,10 @@ def do_parse(self, filename):
586592
self.stack.pop()
587593
file.close()
588594

589-
def parse(self, rnn_path, filename):
595+
def parse(self, rnn_path, filename, validate):
590596
self.path = rnn_path
591597
self.stack = []
598+
self.validate = validate
592599
self.do_parse(filename)
593600

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

855862
try:
856-
p.parse(args.rnn, args.xml)
863+
p.parse(args.rnn, args.xml, args.validate)
857864
except Error as e:
858865
print(e, file=sys.stderr)
859866
exit(1)
@@ -941,6 +948,7 @@ def main():
941948
parser = argparse.ArgumentParser()
942949
parser.add_argument('--rnn', type=str, required=True)
943950
parser.add_argument('--xml', type=str, required=True)
951+
parser.add_argument('--validate', action=argparse.BooleanOptionalAction)
944952

945953
subparsers = parser.add_subparsers()
946954
subparsers.required = True

0 commit comments

Comments
 (0)