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

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
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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
+8 −1
Original line number Diff line number Diff line
@@ -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 \
+11 −3
Original line number Diff line number Diff line
@@ -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