1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-10-13 22:10:23 +02:00
Michał Iwanicki 2a092bbef7 Fail immediately when trying to write/erase wp regions
This patch introduces chipset-level protections and adds checks that
abort writing to flash if any of the requested regions are
write-protected by chip, dynamically by a chipset, or are defined as
read-only.

This change is done so it's harder for user to brick his own platform.
Information about read-only regions can easily be missed as flashrom
can output a lot of information on screen. Even if you notice you might
not know if one of the regions you requested falls inside read-only
range, especially if using different names for those regions.
If you are flashing multiple regions or ones that partially overlap with
read-only parts then that could result in flashrom failing in the
middle leaving you in unknown state.

This patch was tested with multiple combinations of
unprotected/protected regions:

- dummy programmer

```sh
flashrom -p dummy:hwwp=yes,emulate=S25FL128L --wp-enable \
  --wp-range 0x00040000,0x00fc0000 \
  -l <(echo '00000000:0004ffff part1') -i part1 -E
```

- internal programmer on Protectli VP6670 with Dasharo UEFI firmware
with locked BIOS boot medium (PR0, part of bios region)

```sh
flashrom -p internal --ifd -i me -i bios -w test.rom
```

Normal reads and flashing non-protected regions was also tested.

Change-Id: Ia0dd847923e20ff0081ceae68984369e98952c2f
Signed-off-by: Michał Iwanicki <michal.iwanicki@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/89222
Reviewed-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
2025-09-30 00:13:45 +00:00
2024-08-12 00:09:12 +00:00
2025-07-03 05:45:38 +00:00
2025-07-03 05:45:38 +00:00
2025-07-03 05:45:38 +00:00
2023-03-28 00:36:36 +00:00
2025-09-28 08:25:39 +00:00
2025-07-03 05:45:38 +00:00
2025-07-03 05:45:38 +00:00
2024-08-22 01:22:27 +00:00
2025-07-03 05:45:38 +00:00
2025-02-24 06:50:19 +00:00
2025-01-08 11:35:47 +00:00
2025-07-03 05:45:38 +00:00
2025-07-03 05:45:38 +00:00
2025-07-03 05:45:38 +00:00
2019-07-31 08:26:59 +00:00
2025-07-03 05:45:38 +00:00

flashrom README
===============

flashrom is a utility for detecting, reading, writing, verifying and erasing
flash chips. It is often used to flash BIOS/EFI/coreboot/firmware images
in-system using a supported mainboard, but it also supports flashing of network
cards (NICs), SATA controller cards, and other external devices which can
program flash chips.

It supports a wide range of flash chips (most commonly found in SOIC8, DIP8,
SOIC16, WSON8, PLCC32, DIP32, TSOP32, and TSOP40 packages), which use various
protocols such as LPC, FWH, parallel flash, or SPI.

Do not use flashrom on laptops (yet)! The embedded controller (EC) present in
many laptops might interact badly with any attempts to communicate with the
flash chip and may brick your laptop.

Please make a backup of your flash chip before writing to it.

Please see the flashrom(8) manpage :doc:`classic_cli_manpage`.

The list of platforms that package flashrom can be found on `repology.org <https://repology.org/project/flashrom/versions>`_.

Information about recent releases can be found in :doc:`/release_notes/index`.

Building / installing / packaging
---------------------------------

flashrom is built with **meson**. TLDR:

::

    meson setup builddir
    meson compile -C builddir
    meson test -C builddir
    meson install -C builddir

For full detailed instructions, follow the information in
:doc:`dev_guide/building_from_source`.

If you are interested in development, have a look at :doc:`dev_guide/development_guide`.

Contact
-------

The official flashrom website is:

  https://www.flashrom.org/

For available contact methods see :doc:`contact`
Description
No description provided
Readme 70 MiB
Languages
C 90.2%
Rust 5%
Shell 2%
Makefile 1.6%
Meson 1.2%