On Thu, Feb 12, 2015 at 02:56:51PM +0000, Ard Biesheuvel wrote: > On 12 February 2015 at 22:47, Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx> wrote: > > On Thu, 12 Feb, at 06:39:46PM, Ard Biesheuvel wrote: > >> > >> I don't see how doing a single allocation could result in a single > >> free region to be split into more than 1 occupied region + 2 free > >> regions. > >> So no, I don't think it is ... > > > > I don't think that's a guarantee we can make, nor is it something we > > should rely upon. > > > > Please explain the user-visible failure that this patch fixes. Does your > > machine refuse to boot? > > I am running UEFI under QEMU and Xen primarily at the moment, and > experimenting with various build options in Tianocore, One of the > options is preallocating and freeing blocks of various memory types, > in a way that should result in the final number of distinct regions to > be much lower. It could result however in a free memory region to be > carved up in three instead of two, and that is a failure I have seen > occur. The simple answer is that the machine will fail to boot, beause the efi_get_memory_map helper will give up after one go, and propagate the error. The arm-stub will give up when the error is encountered. > > Why is the 'goto again' loop insufficient in > > handling this scenario? > > > > Yes, that should solve it as well, so if you prefer I reinstate that, > I can respin the patch. There is a theoretical possibility that it > would take more than just one more iteration, but that is highly > unlikely and it should still always complete. Please reinstate the loop. It will make this far less fragile. Thanks, Mark. -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html