Hi Ard, Just a polite poke that Sughosh had posted the patches as I had described below here [1] & here [2]. Please let us know what you think.
cheers, Achin [1] https://lists.01.org/pipermail/edk2-devel/2018-October/031377.html [2] https://lists.01.org/pipermail/edk2-devel/2018-October/031384.html On Wed, Oct 24, 2018 at 08:05:22AM -0300, Ard Biesheuvel wrote: > On 24 October 2018 at 05:22, Achin Gupta <[email protected]> wrote: > > Hi Ard, > > > > Please see CIL.. > > > > FYI I will be on leave until 5th of November, so I will get to this > once I get back. > > -- > Ard. > > > On Fri, Aug 24, 2018 at 03:55:29PM +0100, Ard Biesheuvel wrote: > >> On 21 August 2018 at 07:50, Sughosh Ganu <[email protected]> wrote: > >> > hi Ard, > >> > > >> > On Tue July 23, 2018 at 11:03PM +0530, Supreeth Venkatesh wrote: > >> >> > >> >> On Sat, 2018-07-21 at 20:06 +0900, Ard Biesheuvel wrote: > >> >> > On 20 July 2018 at 21:38, Sughosh Ganu <[email protected]> wrote: > >> >> > > > >> >> > > From: Achin Gupta <[email protected]> > >> >> > > > >> >> > > The Standalone MM drivers runs in S-EL0 in AArch64 on ARM Standard > >> >> > > Platforms and is deployed during SEC phase. The memory allocated to > >> >> > > the Standalone MM drivers should be marked as RO+X. > >> >> > > > >> >> > > During PE/COFF Image section parsing, this patch implements extra > >> >> > > action "UpdatePeCoffPermissions" to request the privileged firmware > >> >> > > in > >> >> > > EL3 to update the permissions. > >> >> > > > >> >> > > Contributed-under: TianoCore Contribution Agreement 1.1 > >> >> > > Signed-off-by: Sughosh Ganu <[email protected]> > >> >> > Apologies for bringing this up only now, but I don't think I was ever > >> >> > cc'ed on these patches. > >> >> > > >> >> Apologies if you have missed it. But I am pretty sure it was part of > >> >> earlier large patch-set on which you and leif were copied, as it was > >> >> part of ArmPkg. > >> >> > > >> >> > We are relying on a debug hook in the PE/COFF loader to ensure that > >> >> > we > >> >> > don't end up with memory that is both writable and executable in the > >> >> > secure world. Do we really think that is a good idea? > >> >> > > >> >> > (I know this code was derived from a proof of concept that I did > >> >> > years > >> >> > ago, but that was just a PoC) > >> >> I think we need a little bit more details on what is your suggestion? > >> >> > >> >> A little bit background here: This code runs in S-EL0 and Request gets > >> >> sent to secure world SPM to ensure that the region permissions are > >> >> updated correctly via the "ArmMmuStandaloneMmCoreLib" SVC - > >> >> ARM_SVC_ID_SP_SET_MEM_ATTRIBUTES_AARCH64. > >> >> > >> >> DebugPeCoffExtraActionLib is just used to extract image region > >> >> information, but the region permission > >> >> update request is sent to secure world for validation. > >> >> > >> >> With the above explanation, can you provide an insight into what was > >> >> your thinking? > >> >> Do you want us to create a separate library and call it > >> >> as PeCoffExtraActionLib to avoid the "Debug" word though it is a hook > >> >> to PeCoffExtraActionLib in MdePkg or do we want to create this library > >> >> in a separate package (may be in MdePkg?) or something totally > >> >> different. > >> > > >> > Supreeth had replied to your comments on the patch. Can you please > >> > check this. If you feel that this needs to be implemented differently, > >> > can you please suggest it to us. Thanks. > >> > > >> > >> My point is that such a fundamental action that needs to occur while > >> loading the PE/COFF image should not be hooked into the loader this > >> way. > > > > Based upon our discussion at the Linaro Connect, we investigated leveraging > > the > > DXE Image Protection support [1] in Standalone MM (StMM). Amongst other > > challenges, there is a chicken and egg problem. I will try and explain. > > > > DXE Memory protection has dependencies that cannot be fulfilled in StMM. A > > non-exhaustive list is: > > > > 1. Dependency on CPU_ARCH protocol > > 2. Dependency on Loaded Image patch protocol > > 3. Dependency on Boot services > > > > There is an inherent assumption that this support will never be used in > > SMM. Furthermore, in StMM, permissions are changed when the StMM drivers are > > first dispatched. A dependency on a driver to change the permissions is the > > chicken and egg. So we need a library. > > > > One option is to introduce a memory protection library in StMM i.e. a > > library > > interface like StandaloneMmImageProtect(). This function will be called from > > generic code after the PE-COFF loader has loaded and relocated the StMM > > driver > > image. However, this support is not required on x86. They will have to > > include a > > NULL library implementation. This would be in addition to the NULL > > PeCoffExtraActionLib they already include through MdePkg.dsc. > > > > I am hesitant to take this approach in the absence of a requirement on x86. > > At > > the same time, the current approach of leveraging the > > DebugPeCoffExtraActionLib > > in ArmPkg does not make sense either. > > > > IMO, the better approach would be to add a AArch64 specific > > StandaloneMmPeCoffExtraActionLib in the StandaloneMmPkg. Memory protection > > will > > be implemented in the relocation hook. There will be no impact on x86 or the > > ArmPkg. If in future there is a requirement to support this feature on x86 > > as > > well, then a separate library could be implemented. > > > > Please let us know if this sounds reasonable to you. Sughosh will be > > posting the > > patches with this approach in a bit to aid the discussion. > > > > Cheers, > > Achin > > > > [1] MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c > > > >> _______________________________________________ > >> edk2-devel mailing list > >> [email protected] > >> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

