EFI and OF both support firmware regions which may be in use during loading.
+unsigned
+grub_relocator_firmware_overlaps (grub_phys_addr_t target, grub_size_t size)
+{
+ grub_efi_uintn_t mmapsize = 0, desc_size = 0;
+ grub_efi_uint32_t descriptor_version = 0;
+ grub_efi_memory_descriptor_t *descs = NULL;
+ grub_efi_uintn_t key;
+ int overlap = 0;
+ grub_efi_memory_descriptor_t *desc;
+
+ grub_efi_get_memory_map (&mmapsize, NULL,&key,&desc_size,
+ &descriptor_version);
+ grub_efi_get_memory_map (&mmapsize, descs,&key,&desc_size,
+ &descriptor_version);
+
+
adjust_limits (rel,&min_addr,&max_addr, target, target);
+ if (avoid_firmware)
+ {
+#if GRUB_RELOCATOR_HAVE_FIRMWARE_REQUESTS
+ if (grub_relocator_firmware_overlaps(target, size))
+
+ return grub_error(GRUB_ERR_BAD_ARGUMENT, "target overlaps with
firmware");
+#endif
+ }
+