Hi Hans, On 2018-05-11 10:11, Hans Verkuil wrote: > On 05/11/18 17:08, Brad Love wrote: >> Hi Hans, >> >> >> On 2018-05-11 09:41, Hans Verkuil wrote: >>> Hi Brad, >>> >>> On 04/26/18 19:19, Brad Love wrote: >>>> config-mycompat.h is for overriding macros which are incorrectly >>>> enabled on certain kernels by the build system. The file should be >>>> left empty, unless build errors are encountered for a kernel. The >>>> file is removed by distclean, therefore should be externally >>>> sourced, before the build process starts, when required. >>>> >>>> In standard operation the file is empty, but if a particular kernel has >>>> incorrectly enabled options defined this allows them to be undefined. >>> Can you give an example where this will be used? >>> >>> FYI: I've committed patches 1-6, but I don't quite understand when this patch >>> is needed. >>> >>> With "for overriding macros which are incorrectly enabled on certain kernels" >>> do you mean when distros do backports of features from later kernels? >>> >>> Regards, >>> >>> Hans >> >> Apologies if I was not very clear. Yes, this is for use in >> kernels/distros whose maintainers have integrated various backports, and >> which the media_build system does not pick up on for whatever reason. At >> that point there are options defined in config-compat.h, which enable >> backports in compat.h, but which already exist in the target kernel. >> >> For example, on the device I'm working on right now, in kernel 3.10, I >> have to supply the following three options in config-mycompat.h or >> modify the tree and stuff them right into the top of compat.h: >> >> #undef NEED_WRITEL_RELAXED >> #undef NEED_PM_RUNTIME_GET >> #undef NEED_PFN_TO_PHYS >> >> >> The above disables those three media_build backports and allows >> everything to build. It seems there is quite often at least one backport >> I must disable, and some target kernels require multiple backports disabled. > OK, that's what I thought. Can you post a v2 of this patch with this explanation > included? Both in the commit log and in the compat.h comment. > > That should make it clear what the purpose of this file is. > > Regards, > > Hans Will do now. > >> Cheers, >> >> Brad >> >> >> >>>> Signed-off-by: Brad Love <brad@xxxxxxxxxxxxxxxx> >>>> --- >>>> v4l/Makefile | 3 ++- >>>> v4l/compat.h | 7 +++++++ >>>> 2 files changed, 9 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/v4l/Makefile b/v4l/Makefile >>>> index 270a624..ee18d11 100644 >>>> --- a/v4l/Makefile >>>> +++ b/v4l/Makefile >>>> @@ -273,6 +273,7 @@ links:: >>>> @find ../linux/drivers/misc -name '*.[ch]' -type f -print0 | xargs -0n 255 ln -sf --target-directory=. >>>> >>>> config-compat.h:: $(obj)/.version .myconfig scripts/make_config_compat.pl >>>> + -touch $(obj)/config-mycompat.h >>>> perl scripts/make_config_compat.pl $(SRCDIR) $(obj)/.myconfig $(obj)/config-compat.h >>>> >>>> kernel-links makelinks:: >>>> @@ -298,7 +299,7 @@ clean:: >>>> distclean:: clean >>>> -rm -f .version .*.o.flags .*.o.d *.mod.gcno Makefile.media \ >>>> Kconfig Kconfig.kern .config .config.cmd .myconfig \ >>>> - .kconfig.dep >>>> + .kconfig.dep config-mycompat.h >>>> -rm -rf .tmp_versions .tmp*.ver .tmp*.o .*.gcno .cache.mk >>>> -rm -f scripts/lxdialog scripts/kconfig >>>> @find .. -name '*.orig' -exec rm '{}' \; >>>> diff --git a/v4l/compat.h b/v4l/compat.h >>>> index 87ce401..db48fdf 100644 >>>> --- a/v4l/compat.h >>>> +++ b/v4l/compat.h >>>> @@ -8,6 +8,13 @@ >>>> #include <linux/version.h> >>>> >>>> #include "config-compat.h" >>>> +/* config-mycompat.h is for overriding #defines which >>>> + * are incorrectly enabled on certain kernels. The file >>>> + * should be left empty, unless build errors are encountered >>>> + * for a kernel. The file is removed by distclean, therefore >>>> + * should be externally sourced, before compilation, when required. >>>> + */ >>>> +#include "config-mycompat.h" >>>> >>>> #ifndef SZ_512 >>>> #define SZ_512 0x00000200 >>>> >>