--- 7.4 mandatory-y
 
-       mandatory-y is essentially used by include/uapi/asm-generic/Kbuild.asm
-       to define the minimum set of headers that must be exported in
-       include/asm.
+       mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild.asm
+       to define the minimum set of ASM headers that all architectures must have.
+
+       This works like optional generic-y. If a mandatory header is missing
+       in arch/$(ARCH)/include/(uapi/)/asm, Kbuild will automatically generate
+       a wrapper of the asm-generic one.
 
        The convention is to list one subdir per line and
        preferably in alphabetic order.
 
 
 include scripts/Kbuild.include
 
+# If arch does not implement mandatory headers, fallback to asm-generic ones.
+mandatory-y := $(filter-out $(generated-y), $(mandatory-y))
+generic-y   += $(foreach f, $(mandatory-y), $(if $(wildcard $(srctree)/$(src)/$(f)),,$(f)))
+
 generic-y   := $(addprefix $(obj)/, $(generic-y))
 generated-y := $(addprefix $(obj)/, $(generated-y))
 
 
 all-files     := $(header-files) $(genhdr-files)
 output-files  := $(addprefix $(installdir)/, $(all-files))
 
-ifneq ($(mandatory-y),)
-missing       := $(filter-out $(all-files),$(mandatory-y))
-ifneq ($(missing),)
-$(error Some mandatory headers ($(missing)) are missing in $(obj))
-endif
-endif
-
 # Work out what needs to be removed
 oldheaders    := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
 unwanted      := $(filter-out $(all-files),$(oldheaders))