Message ID | 20240503-fd-fix-lxml-v2-1-f80a60ce21a1@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/msm/gen_header: allow skipping the validation | expand |
On 5/3/2024 11:15 AM, 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 <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> > --- > 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(-) > Looks reasonable to me, only developers need to worry about or fix the xml files Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Hi, On Fri, May 3, 2024 at 11:15 AM Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote: > > @@ -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) FWIW, the above (argparse.BooleanOptionalAction) appears to be a python 3.9 thing. My own build environment happens to have python3 default to python 3.8 and thus I get a build error related to this. I have no idea what the kernel usually assumes for a baseline, but others might get build errors too. I don't even see python listed in: https://docs.kernel.org/process/changes.html ...in any case, if it's easy to change this to not require python3.9 that would at least help for my build environment. :-P -Doug
On 5/8/2024 3:41 PM, Doug Anderson wrote: > Hi, > > On Fri, May 3, 2024 at 11:15 AM Dmitry Baryshkov > <dmitry.baryshkov@linaro.org> wrote: >> >> @@ -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) > > FWIW, the above (argparse.BooleanOptionalAction) appears to be a > python 3.9 thing. My own build environment happens to have python3 > default to python 3.8 and thus I get a build error related to this. I > have no idea what the kernel usually assumes for a baseline, but > others might get build errors too. I don't even see python listed in: > > https://docs.kernel.org/process/changes.html > > ...in any case, if it's easy to change this to not require python3.9 > that would at least help for my build environment. :-P > Yes, I had posted this y'day as I also ran into this https://patchwork.freedesktop.org/patch/593057/ > -Doug
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 90d5c2991d05..fc3bfdc991d2 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() subparsers.required = True
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> --- 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(-)