Fix initrd LZ4 OOM: use page-level allocation instead of kmalloc
initrd_init used kmalloc() to allocate the decompression buffer for
LZ4-compressed initrd images. The kernel buddy heap is only 8 MB, so
a 4 MB allocation (the default content size) can easily fail due to
fragmentation from earlier allocations, producing:
[HEAP] OOM: kmalloc failed.
[INITRD] OOM decompressing LZ4 (
4194304 bytes)
This was especially likely with custom initrd images compressed with
lz4 -1 or -9, which can declare larger content sizes.
Replace kmalloc(orig_sz) with initrd_alloc_pages(), which allocates
individual physical pages via pmm_alloc_page() and maps them into a
dedicated virtual region (0xD0800000, above the 8MB heap). This
bypasses the buddy allocator entirely, using the physical memory
manager directly. On OOM, already-mapped pages are rolled back.
Both LZ4 Frame and legacy LZ4B paths are updated.