* unless restricted on specific platforms (e.g. 30-bit on Raspberry Pi 4).
   * In such case, ZONE_DMA32 covers the rest of the 32-bit addressable memory,
   * otherwise it is empty.
 + *
 + * Memory reservation for crash kernel either done early or deferred
 + * depending on DMA memory zones configs (ZONE_DMA) --
 + *
 + * In absence of ZONE_DMA configs arm64_dma_phys_limit initialized
 + * here instead of max_zone_phys().  This lets early reservation of
 + * crash kernel memory which has a dependency on arm64_dma_phys_limit.
 + * Reserving memory early for crash kernel allows linear creation of block
 + * mappings (greater than page-granularity) for all the memory bank rangs.
 + * In this scheme a comparatively quicker boot is observed.
 + *
 + * If ZONE_DMA configs are defined, crash kernel memory reservation
 + * is delayed until DMA zone memory range size initilazation performed in
 + * zone_sizes_init().  The defer is necessary to steer clear of DMA zone
 + * memory range to avoid overlap allocation.  So crash kernel memory boundaries
 + * are not known when mapping all bank memory ranges, which otherwise means
 + * not possible to exclude crash kernel range from creating block mappings
 + * so page-granularity mappings are created for the entire memory range.
 + * Hence a slightly slower boot is observed.
 + *
 + * Note: Page-granularity mapppings are necessary for crash kernel memory
 + * range for shrinking its size via /sys/kernel/kexec_crash_size interface.
   */
 -phys_addr_t arm64_dma_phys_limit __ro_after_init;
 +#if IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32)
 +phys_addr_t __ro_after_init arm64_dma_phys_limit;
 +#else
 +phys_addr_t __ro_after_init arm64_dma_phys_limit = PHYS_MASK + 1;
 +#endif
  
- #ifdef CONFIG_KEXEC_CORE
  /*
   * reserve_crashkernel() - reserves memory for crash kernel
   *
 
  
  #ifndef __ASSEMBLY__
  
 +#if defined(CONFIG_DEBUG_INFO_BTF) && defined(CONFIG_PAHOLE_HAS_BTF_TAG) && \
 +      __has_attribute(btf_type_tag)
 +# define BTF_TYPE_TAG(value) __attribute__((btf_type_tag(#value)))
 +#else
 +# define BTF_TYPE_TAG(value) /* nothing */
 +#endif
 +
+ /* sparse defines __CHECKER__; see Documentation/dev-tools/sparse.rst */
  #ifdef __CHECKER__
  /* address spaces */
  # define __kernel     __attribute__((address_space(0)))
 
        depends on !DEBUG_INFO_SPLIT && !DEBUG_INFO_REDUCED
        depends on !GCC_PLUGIN_RANDSTRUCT || COMPILE_TEST
        depends on BPF_SYSCALL
 -      depends on !DEBUG_INFO_DWARF5
++      depends on !DEBUG_INFO_DWARF5 || PAHOLE_VERSION >= 121
        help
          Generate deduplicated BTF type information from DWARF debug info.
          Turning this on expects presence of pahole tool, which will convert