On 05/18/16 16:09, El-Haj-Mahmoud, Samer wrote:
> Thanks Laszlo!
> 
> I missed that thread.
> 
> I did not participate in the original design either (where is the original 
> design anyway? Is it public on the EDK2 list)?

Probably on the closed USWG mailing list, and/or attached to (similarly
closed) Mantis tickets, as ECR documents.

According to the Mantis changelog at the beginning of the UEFI spec
v2.6, the relevant tickets are:

1268 RAM Disk UEFI Device Path Node
1466 UEFI Ram disk protocol

https://mantis.uefi.org/mantis/view.php?id=1268
https://mantis.uefi.org/mantis/view.php?id=1466

... Yep, I can see some docs attached to those. Log in to Mantis and
peruse them. :)

Thanks
Laszlo

> Feng,
> 
> Do you mind if I submit a patch to update the HII to support allocating 
> Reserved memory RAM Disks? This will help a lot in troubleshooting.
> 
> Thanks,
> --Samer
> 
> 
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Laszlo 
> Ersek
> Sent: Wednesday, May 18, 2016 9:04 AM
> To: El-Haj-Mahmoud, Samer <samer.el-haj-mahm...@hpe.com>; Andrew Fish 
> <af...@apple.com>; Foster, Matthew I <matthew.i.fos...@intel.com>
> Cc: edk2-devel@lists.01.org <edk2-de...@ml01.01.org>
> Subject: Re: [edk2] Using the Shell to launch a kernel using a RAMDISK
> 
> 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:edk2-devel-boun...@lists.01.org] On Behalf Of 
>> Laszlo Ersek
>> Sent: Wednesday, May 18, 2016 4:39 AM
>> To: Andrew Fish <af...@apple.com>; Foster, Matthew I 
>> <matthew.i.fos...@intel.com>
>> Cc: edk2-devel@lists.01.org <edk2-de...@ml01.01.org>
>> 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 
>>>> <matthew.i.fos...@intel.com> 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
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel
>>
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to