Dear Toan,
I tried as your suggestion: flashed an 8 MB Intel-provided image, read back from SPI chip right after flashing, got a 16 MB file (since SPI chip is 16 MB size). The first 8 MB of 2 files are exactly the same. So, flashing should work fine.
that's your problem right there. The last 128kB of the SPI flash will be mapped to the End ot 1MB, there the CPU will start executing. In your case, that's not the IBB / coreboot, but zeros (ok, maybe 0xFFs).
You have to rebuild your image for the correct flash size.
Have fun, Goetz.