Hi, ENV_IS_NOWHERE=y when it should not be, on make starfive_visionfive2_defconfig. I guess that riscv is forgotten in some of the logic there. TL;DR the env is supposed to save in SPI flash as the defconfig provides (but then also ENV_IS_NOWHERE=y appears ? strange).
There is missing the AXP15060 power regulation in u-boot needed for SDCard and networking. As it is happens to work for some variants and not others, and not always. The AXP15060 driver exists in mainline Linux as a variant of AXP20x and there are corresponding devicetree entries of the StarFive JH7110-based VisionFive2 variants queued up (ref: *1 Patchwork series 806238). Milk-V Mars CM Lite variant ships with a hack substituting GPIO22 MIPI_PWR_EN in dts (what would be GPIO62 SDIO0_RSTN_GPIO62) as a trick to get mmc0 doing something. I don't understand the details of why it works just that it was there in the SDK git repo change log and I see results. There's a possibility this was actually changed in how it is routed on the Mars CM Lite PCB but I find it would be more likely this is just some kind of hack. ^1: https://patchwork.kernel.org/project/linux-riscv/list/?series=806238&state=%2A&archive=both The other notable vendor Milk-V Mars hacks are to specify an eeprom 24c02 as compatible on the Mars CM Lite board instead of the 24c04 what is on the StarFive VisionFive 2. I can't find references to this anymore in mainline Linux, was it abstracted in some way that should be also done for u-boot? Finally there is possibly a 2GB RAM version of the Milk-V Mars which conflicts the StarFive VisionFive2 dts assumptions of at least 4GB RAM. I note some adjustments to the linux,cma dts node accordingly from vendor SDK. I failed to reproduce the vendor SDK build and this is my best guess from that SDK git repo commit log notes.