On 05/18/16 15:48, El-Haj-Mahmoud, Samer wrote:
> Does it make sense to update the RAM Disk HII (at
> \MdeModulePkg\Universal\Disk\RamDiskDxe) to allow creating a RAM Disk
> of Type Reserved, for this kind of testing?

That's exactly what I suggested in

http://thread.gmane.org/gmane.comp.bios.edk2.devel/10766/focus=10770

Namely,

> [...] I think this question should be exposed with a checkbox on the
> form: "will you want to boot from this RAM disk?" And then the answer
> to that question should determine the type of memory the RAM disk is
> allocated from.

but it was not approved; Feng said later in the thread,

> [...] For those ramdisk created from Ramdisk HII, the original
> design intention is only for boot time use.

I had not participated in the design, so I didn't question it.

Thanks
Laszlo

> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of Laszlo 
> Ersek
> Sent: Wednesday, May 18, 2016 4:39 AM
> To: Andrew Fish <[email protected]>; Foster, Matthew I 
> <[email protected]>
> Cc: [email protected] <[email protected]>
> Subject: Re: [edk2] Using the Shell to launch a kernel using a RAMDISK
> 
> On 05/18/16 01:16, Andrew Fish wrote:
>>
>>> On May 17, 2016, at 4:08 PM, Foster, Matthew I <[email protected]> 
>>> wrote:
>>>
>>> Thanks Ersek,
>>>
>>
>> Laszlo... 
> 
> That's right, thanks Andrew :)
> 
>>> I did change my code to match what you have here as far as the 
>>> allocation. I did some more debugging and registered up a callback in 
>>> exit boot services, and did an integrity check of the memory I 
>>> previously allocated and put the ramdisk in. I checked the memory 
>>> right before I call loadimage (to launch the kernel), and then again 
>>> I check in the callback during exit boot services. So some point 
>>> between the memory actually does get changed. So it might be 
>>> something happening during exit boot services.
>>>
>>> Just a question, after allocating that memory as you mentioned below, 
>>> other code should not be able to allocate and use that same address 
>>> range right?
>>
>> The EFI Memory Map is well defined and you can read about it in 
>> Section 6.2 Memory Allocation Services.
> 
> Yeah, once allocated (and not freed), those pages should never be handed out 
> to any other agent calling gBS->AllocatePool() or gBS->AllocatePages().
> 
> The memory corruption issue is very interesting. I have faced similar 
> earlier, several times. I've developed methods for trying to dealing with it 
> ("develop methods" is a fancy expression for just a few basic ideas, of 
> course :))
> 
> - The integrity check you mention. Since we are not talking about a malicious 
> attacker, just (likely) a genuine bug somewhere, the
> CalculateCrc32() boot service is usually helpful in pointing out corruption.
> 
> - CRC32 can also be computed on a set of smaller blocks, not just the entire 
> image. I usually don't try to keep the CRCs in an array (for later 
> comparison) -- instead I dump the CRCs to the debug log, and compare the 
> values (before vs. after) with text processing utilities.
> 
> - Once you managed to narrow down the location of the corruption a little 
> bit, you can hexdump the entire block, and compare its before / after 
> contents.
> 
> - Occasionally it can help to look at the ASCII representation of the 
> differring blocks. For example, many structures in edk2 start with a 32-bit 
> or 64-bit signature (see the SIGNATURE_32 and SIGNATURE_64 macros), and the 
> signature is usually an abbreviation of English words in ASCII. If you find 
> some signatures, you might be able to deduce where they come from (IOW, the 
> nature of the data discloses the origin of the data).
> 
> [snip]
> 
> Thanks
> Laszlo
> _______________________________________________
> 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

Reply via email to