WHR-300HP2N(MT7620A)が二台あり片方がremoteでのupdateに失敗します。コンソールを見てみたところflashの書き込みが上手くいっていないです。
dtsのFlashの最後のほうに1Mのpartitionを作ってカーネルをビルドしてイメージを作り焼いてテストしてみます。
dd if=/dev/random of=/tmp/abc bs=1m count=1
dd if=/dev/abc of=/dev/flash/spi0s.test obs=64k conv=osync
md5 /tmp/abc /dev/flash/spi0s.test
やはりハッシュ値が異なります。
コードはsys/dev/flash/mx25l.cです。
上手くいくほうはs25fl064で、失敗するほうがw25q64でした。
このモデルでは以前上手くいっていた様な記憶があり、NYC*BUG dmesgdをながめていてFlashが違うことにきがつきました。
コードを見るとw25q64にはFL_ERASE_4Kが指定されています。
どうもFL_ERASE_4Kが正常に動いていないようなので、FL_NONEにしてみたところ問題が解消しました。
そもそもSPI Flash的には64Kがデフォルトで4KはオプションなのでFreeBSDでは4Kのサポートは必要ないと思います。
FL_ERASE_4Kのフラグはかなり前からあって、それを有効にしたのが以下の修正のようです。ちゃんとテストしたのかはなはだ疑問です。