efi_loader: store DT in EFI_RUNTIME_SERVICES_DATA memory
The device tree is needed at runtime. So we have to store it in EFI_RUNTIME_SERVICES_DATA memory. The UEFI spec recommends to store all configuration tables in EFI_RUNTIME_SERVICES_DATA memory. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
		
							parent
							
								
									8218f7b5fc
								
							
						
					
					
						commit
						17ff6f02f5
					
				|  | @ -103,11 +103,11 @@ static void *copy_fdt(void *fdt) | |||
| 
 | ||||
| 	/* Safe fdt location is at 128MB */ | ||||
| 	new_fdt_addr = fdt_ram_start + (128 * 1024 * 1024) + fdt_size; | ||||
| 	if (efi_allocate_pages(1, EFI_BOOT_SERVICES_DATA, fdt_pages, | ||||
| 	if (efi_allocate_pages(1, EFI_RUNTIME_SERVICES_DATA, fdt_pages, | ||||
| 			       &new_fdt_addr) != EFI_SUCCESS) { | ||||
| 		/* If we can't put it there, put it somewhere */ | ||||
| 		new_fdt_addr = (ulong)memalign(EFI_PAGE_SIZE, fdt_size); | ||||
| 		if (efi_allocate_pages(1, EFI_BOOT_SERVICES_DATA, fdt_pages, | ||||
| 		if (efi_allocate_pages(1, EFI_RUNTIME_SERVICES_DATA, fdt_pages, | ||||
| 				       &new_fdt_addr) != EFI_SUCCESS) { | ||||
| 			printf("ERROR: Failed to reserve space for FDT\n"); | ||||
| 			return NULL; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue