mirror of https://github.com/acidanthera/audk.git
OvmfPkg/RiscVVirt: Check "no-map" and mark EfiReservedMemoryType
OpenSBI now marks PMP regions with "no-map" attribute. So, remove the workaround and add the ReservedMemory only when no-map is set so that it follows DT spec. Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Andrei Warkentin <andrei.warkentin@intel.com> Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> Reviewed-by: Ranbir Singh <rsingh@ventanamicro.com>
This commit is contained in:
parent
c6b512962e
commit
7427dd3fc0
|
@ -141,21 +141,10 @@ GetNumCells (
|
||||||
|
|
||||||
/** Mark reserved memory ranges in the EFI memory map
|
/** Mark reserved memory ranges in the EFI memory map
|
||||||
|
|
||||||
The M-mode firmware ranges should not be used by the
|
* As per DT spec v0.4 Section 3.5.4,
|
||||||
EDK2/OS. These ranges are passed via device tree using reserved
|
* "Reserved regions with the no-map property must be listed in the
|
||||||
memory nodes. Parse the DT and mark those ranges as of
|
* memory map with type EfiReservedMemoryType. All other reserved
|
||||||
type EfiReservedMemoryType.
|
* regions must be listed with type EfiBootServicesData."
|
||||||
|
|
||||||
NOTE: Device Tree spec section 3.5.4 says reserved memory regions
|
|
||||||
without no-map property should be installed as EfiBootServicesData.
|
|
||||||
As per UEFI spec, memory of type EfiBootServicesData can be used
|
|
||||||
by the OS after ExitBootServices().
|
|
||||||
This is not an issue for DT since OS can parse the DT also along
|
|
||||||
with EFI memory map and avoid using these ranges. But with ACPI,
|
|
||||||
there is no such mechanisms possible.
|
|
||||||
Since EDK2 needs to support both DT and ACPI, we are deviating
|
|
||||||
from the DT spec and marking all reserved memory ranges as
|
|
||||||
EfiReservedMemoryType itself irrespective of no-map.
|
|
||||||
|
|
||||||
@param FdtPointer Pointer to FDT
|
@param FdtPointer Pointer to FDT
|
||||||
|
|
||||||
|
@ -228,11 +217,19 @@ AddReservedMemoryMap (
|
||||||
Size
|
Size
|
||||||
));
|
));
|
||||||
|
|
||||||
BuildMemoryAllocationHob (
|
if (fdt_getprop (FdtPointer, SubNode, "no-map", &Len)) {
|
||||||
Addr,
|
BuildMemoryAllocationHob (
|
||||||
Size,
|
Addr,
|
||||||
EfiReservedMemoryType
|
Size,
|
||||||
);
|
EfiReservedMemoryType
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
BuildMemoryAllocationHob (
|
||||||
|
Addr,
|
||||||
|
Size,
|
||||||
|
EfiBootServicesData
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue