From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Rini Date: Mon, 23 May 2016 18:13:55 -0400 Subject: [U-Boot] malloc: improve memalign fragmentation fix In-Reply-To: <1461621342-4757-1-git-send-email-swarren@wwwdotorg.org> References: <1461621342-4757-1-git-send-email-swarren@wwwdotorg.org> Message-ID: <20160523221355.GF7650@bill-the-cat> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, Apr 25, 2016 at 03:55:42PM -0600, Stephen Warren wrote: > From: Stephen Warren > > Commit 4f144a416469 "malloc: work around some memalign fragmentation > issues" enhanced memalign() so that it can succeed in more cases where > heap fragmentation is present. However, it did not solve as many cases > as it could. This patch enhances the code to cover more cases. > > The alignment code works by allocating more space than the user requests, > then adjusting the returned pointer to achieve alignment. In general, one > must allocate "alignment" bytes more than the user requested in order to > guarantee that alignment is possible. This is what the original code does. > The previous enhancement attempted a second allocation if the padded > allocation failed, and succeeded if that allocation just happened to be > aligned; a fluke that happened often in practice. There are still cases > where this could fail, yet where it is still possible to honor the user's > allocation request. In particular, if the heap contains a free region that > is large enough for the user's request, and for leading padding to ensure > alignment, but has no or little space for any trailing padding. In this > case, we can make a third(!) allocation attempt after calculating exactly > the size of the leading padding required to achieve alignment, which is > the minimal over-allocation needed for the overall memalign() operation to > succeed if the third and second allocations end up at the same location. > > This patch isn't checkpatch-clean, since it conforms to the existing > coding style in dlmalloc.c, which is different to the rest of U-Boot. > > Signed-off-by: Stephen Warren > Reviewed-by: Tom Rini Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: