Samer, I am ok to add an item/option to allow user choose ramdisk memory type. But I don't know how to organize the form to show that straightforwardly, for example, how to add an item for those chosen by File Explorer. Look forward to see your patch:)
Thanks Feng -----Original Message----- From: El-Haj-Mahmoud, Samer [mailto:samer.el-haj-mahm...@hpe.com] Sent: Wednesday, May 18, 2016 10:10 PM To: Laszlo Ersek <ler...@redhat.com>; Andrew Fish <af...@apple.com>; Foster, Matthew I <matthew.i.fos...@intel.com>; Tian, Feng <feng.t...@intel.com> Cc: edk2-devel@lists.01.org <edk2-de...@ml01.01.org>; El-Haj-Mahmoud, Samer <samer.el-haj-mahm...@hpe.com> Subject: RE: [edk2] Using the Shell to launch a kernel using a RAMDISK 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)? 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