MR33 gets soft-bricked in snapshots

Apparently the kernel is getting too big, and u-boot just won't boot it and get stuck at "Starting kernel ...". I checked with various compile options, those are the results:

Not OK:
tar xOf mr33-snapshot.bin "sysupgrade-meraki_mr33/kernel" | wc -c
4506256
tar xOf openwrt-ipq40xx-generic-meraki_mr33-squashfs-sysupgrade.bin "sysupgrade-meraki_mr33/kernel" | wc -c
4235768
tar xOf openwrt-ipq40xx-generic-meraki_mr33-squashfs-sysupgrade.bin "sysupgrade-meraki_mr33/kernel" | wc -c
4315308
tar xOf openwrt-ipq40xx-generic-meraki_mr33-squashfs-sysupgrade.bin "sysupgrade-meraki_mr33/kernel" | wc -c
4233388 
OK:
tar xOf openwrt-ipq40xx-generic-meraki_mr33-squashfs-sysupgrade.bin "sysupgrade-meraki_mr33/kernel" | wc -c
3498660
tar xOf openwrt-22.03.3-ipq40xx-generic-meraki_mr33-squashfs-sysupgrade.bin "sysupgrade-meraki_mr33/kernel" | wc -c
4036932

I don't know what the "magic threshold" is when it stops working, but a 4.5 MB kernel seems extremely large anyways, especially since stuff like eMMC and USB is compiled in which isn't needed for this device at all. Maybe we need to start splitting the subtargets based on the flash type to produce smaller images again?

At least some kind of safeguard should be put in place to detect images that are too large, somewhere between 4233388 and 4036932 seems to be the limit.

Obviously I can't rule out that some of the compile-options I changed influences this, but so far it seems to be a size issue.

Actually there seems to be some other issue: I disabled USB and eMMC and got down to 3821256, however it doesn't boot, so I enabled those and then I got it to boot by optimizing for size instead of performance, not sure why though. Disabling USB and optimizing for size works, disabling USB and optimizing for speed doesn't work (even though it's just 3903504 Bytes).