I see a difference in the way 4.4 handles initrd images for linux payloads versus the way it is done in head. With 4.4 my Linux kernel can not find the external initrd, so it is necessary to build it as part of the kernel. With head it works fine.
It looks like 4.4 is adding the initrd as a separate section named "(empty)" with type "null" and the kernel can't find it:
performing operation on 'COREBOOT' region... Name Offset Type Size cbfs master header 0x0 cbfs header 32 cpu_microcode_blob.bin 0x80 microcode 22528 cmos.default 0x5900 cmos_default 256 cmos_layout.bin 0x5a40 cmos_layout 1948 fallback/dsdt.aml 0x6240 raw 13847 (empty) 0x98c0 null 26264 fallback/romstage 0xff80 stage 74020 (empty) 0x22140 null 56664 mrc.cache 0x2fec0 mrc_cache 65536 fallback/ramstage 0x3ff00 stage 84790 fallback/payload 0x54a80 payload 1618769 (empty) 0x1dfe40 null 2226328 bootblock 0x3ff700 bootblock 1952
While in head it is bundling them together into the payload region (3.9 MB == bzImage + initrd.img) -- the kernel can find the image and use it:
Performing operation on 'COREBOOT' region... Name Offset Type Size cbfs master header 0x0 cbfs header 32 fallback/romstage 0x80 stage 14620 cpu_microcode_blob.bin 0x3a00 microcode 22528 fallback/ramstage 0x9280 stage 43781 cmos_layout.bin 0x13dc0 cmos_layout 1948 fallback/dsdt.aml 0x145c0 raw 4021 fallback/payload 0x155c0 payload 3906169 (empty) 0x3cf080 null 199256 bootblock 0x3ffb00 bootblock 960
I don't see any changes in the util/cbfstool/cbfs-payload-linux.c file between these two versions. Is there something else that changed?