Board:lenovo/x60/Installation: Difference between revisions

From coreboot
Jump to navigation Jump to search
(Adding question to cover gaping hole in instructions)
m (Making question uppercase)
Line 8: Line 8:
#: Because the chipset locks down the available commands that flashrom can send to the flash chip, you need to change the flashrom source in a way that is not suitable to upstream.
#: Because the chipset locks down the available commands that flashrom can send to the flash chip, you need to change the flashrom source in a way that is not suitable to upstream.
#: Optionally, you can also copy the existing definition first as it is done in [http://patchwork.coreboot.org/patch/3621/ this patch] but it is not necessary.
#: Optionally, you can also copy the existing definition first as it is done in [http://patchwork.coreboot.org/patch/3621/ this patch] but it is not necessary.
#* Find the definition of your flash chip in flashrom's flashchips.c ''[How do you determine what your flash chip is? --rah]''
#* Find the definition of your flash chip in flashrom's flashchips.c ''[HOW DO YOU DETERMINE WHAT YOUR FLASH CHIP IS? --rah]''
#* Change the .probe field to probe_spi_res1
#* Change the .probe field to probe_spi_res1
#* Modify .model_id field to the RES1 ID given in the datasheet of the flash chip
#* Modify .model_id field to the RES1 ID given in the datasheet of the flash chip

Revision as of 17:49, 15 August 2012

Lenovo X60, X60s, T60 and T60p flashing instructions.

These Lenovo laptops have a register that must be flipped before coreboot can be flashed. Detailed instructions follow.

You will need: the flashrom source, a small patch for it, and the bucts utility.

  1. Patch flashrom to use RES1 SPI identification and spi_chip_write1 for your flash chip, as well as change the flash chip model id to fit the RES1 command.
    Because the chipset locks down the available commands that flashrom can send to the flash chip, you need to change the flashrom source in a way that is not suitable to upstream.
    Optionally, you can also copy the existing definition first as it is done in this patch but it is not necessary.
    • Find the definition of your flash chip in flashrom's flashchips.c [HOW DO YOU DETERMINE WHAT YOUR FLASH CHIP IS? --rah]
    • Change the .probe field to probe_spi_res1
    • Modify .model_id field to the RES1 ID given in the datasheet of the flash chip
    • Change the .write field to spi_chip_write1
  2. Run flashrom -p internal:laptop=force_I_want_a_brick -r factory.bin
    This step is IMPORTANT since the factory BIOS in your machine is tied to your particular system board (or "planar" in IBM FRU terms) with a unique ID not present in factory BIOS updates.
  3. Run dd if=coreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x10000] count=64k
  4. Run dd if=coreboot.rom bs=1 skip=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k | hexdump
    Verify that the complete range is filled with ff bytes before proceeding! The above command must output:
    0000000 ffff ffff ffff ffff ffff ffff ffff ffff
    *
    0010000
    If this is not the case, the coreboot image needs to be rebuilt with the second-to-last 64kbyte block unused.
  5. Run dd if=top64k.bin of=coreboot.rom bs=1 seek=$[$(stat -c %s coreboot.rom) - 0x20000] count=64k conv=notrunc
  6. Run bucts 1
  7. Run flashrom -p internal:laptop=force_I_want_a_brick -w coreboot.rom
    This will be slow, and shall generate an erase error at e.g. 0x1f0000 when working with a 2 Mbyte flash chip.
  8. Power cycle the machine, now starting with coreboot
  9. Undo the flashrom patch, so that you have a stock flashrom
  10. Run bucts 0
  11. Run flashrom -p internal:laptop=force_I_want_a_brick -w coreboot.rom.
    This will successfully overwrite the entire flash chip, including the last 64k that were write protected with the factory BIOS.


These instructions were gleaned from the following mailing list threads: http://thread.gmane.org/gmane.linux.bios/69354 http://thread.gmane.org/gmane.linux.bios.flashrom/575