mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00

Tested Mainboards: OK: - ASRock A780FullHD http://www.flashrom.org/pipermail/flashrom/2012-July/009599.html - ASRock 880G Pro3 http://www.flashrom.org/pipermail/flashrom/2012-July/009492.html - ASRock N61P-S http://www.flashrom.org/pipermail/flashrom/2012-May/009316.html - ASUS M2N68-VM http://www.flashrom.org/pipermail/flashrom/2012-May/009334.html - ASUS M3N78 PRO http://www.flashrom.org/pipermail/flashrom/2012-July/009519.html - ASUS M4N68T V2 http://www.flashrom.org/pipermail/flashrom/2012-May/009277.html - ASUS M5A78L-M LX reported by clavile on IRC - ASUS P8P67 PRO (rev. 3.0) http://www.flashrom.org/pipermail/flashrom/2012-April/009188.html - ASUS P8Z68-V reported by Kano on IRC http://paste.flashrom.org/view.php?id=1232 - ASUS SABERTOOTH 990FX http://paste.flashrom.org/view.php?id=1214 - Dell Inspiron 1420 http://www.flashrom.org/pipermail/flashrom/2012-May/009196.html - ECS GF8200A http://www.flashrom.org/pipermail/flashrom/2012-May/009256.html - GIGABYTE GA-H61M-D2H-USB3 http://www.flashrom.org/pipermail/flashrom/2012-May/009333.html - MSI MS-7250 (K9N SLI (rev 2.1)) http://www.flashrom.org/pipermail/flashrom/2012-June/009436.html - MSI MS-7676 (Z68MA-G45 (B3)) http://www.flashrom.org/pipermail/flashrom/2012-June/009424.html - Palit N61S http://www.flashrom.org/pipermail/flashrom/2012-May/009212.html NOT OK: - ASRock H61M-ITX http://www.flashrom.org/pipermail/flashrom/2012-May/009224.html - Dell Latitude E6520 http://www.flashrom.org/pipermail/flashrom/2012-May/009197.html - Dell Vostro 3700 http://www.flashrom.org/pipermail/flashrom/2012-May/009197.html - Intel DH61AG http://www.flashrom.org/pipermail/flashrom/2012-June/009417.html - Intel DQ965GF http://www.flashrom.org/pipermail/flashrom/2012-May/009295.html - HP/Compaq 8100 Elite CMT PC (304Bh) http://paste.flashrom.org/view.php?id=1182 - HP Z400 Workstation (0AE4h) http://www.flashrom.org/pipermail/flashrom/2012-June/009350.html - Supermicro X9DR3-F http://www.flashrom.org/pipermail/flashrom/2012-June/009422.html Tested flash chips: - mark AMIC A25L032 as TEST_OK_PREW (+PREW) http://www.flashrom.org/pipermail/flashrom/2012-June/009363.html - mark Atmel AT25DF321A as TEST_OK_PREW (+REW) http://www.flashrom.org/pipermail/flashrom/2012-July/009492.html - mark Atmel AT26DF161 as TEST_OK_PR (+PR) http://www.flashrom.org/pipermail/flashrom/2012-June/009350.html - mark Eon EN25QH16 as TEST_OK_PR (+PR) http://www.flashrom.org/pipermail/flashrom/2012-July/009566.html - mark SST SST39VF010 as TEST_OK_PREW (+W) http://www.flashrom.org/pipermail/flashrom/2012-June/009425.html - mark ST M25P64 as TEST_OK_PREW (+PREW) http://www.flashrom.org/pipermail/flashrom/2012-May/009332.html Tested chipset enables: - Intel 3420 http://www.flashrom.org/pipermail/flashrom/2012-May/009332.html - Add board enable for ASUS P5GD2-X lspci: http://paste.flashrom.org/view.php?id=1234 write: http://paste.flashrom.org/view.php?id=1240 Miscellaneous - Reorder some boards in print.c. - Remove broken abit URLs. - Whitespace changes. - Fix the maximum number of southbridge straps in the ICH descriptor structs. - Refine documentation regarding ICH region lock bits. - Demote verbosity of ICH Opcode reprogramming to -VV. - Exclude Pony-SPI for DOS targets (missing serial support). Corresponding to flashrom svn r1554. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
111 lines
6.3 KiB
Plaintext
111 lines
6.3 KiB
Plaintext
= BBAR on ICH8 =
|
|
There is no sign of BBAR (BIOS Base Address Configuration Register) in the
|
|
public datasheet (or specification update) of the ICH8. Also, the offset of
|
|
that register has changed between ICH7 (SPIBAR + 50h) and ICH9 (SPIBAR +
|
|
A0h), so we have no clue if or where it is on ICH8. Out current policy is to
|
|
not touch it at all and assume/hope it is 0.
|
|
|
|
= Accesses beyond region bounds in descriptor mode =
|
|
Intel's flash image tool will always expand the last region so that it covers
|
|
the whole flash chip, but some boards ship with a different configuration.
|
|
It seems that in descriptor mode all addresses outside the used regions can not
|
|
be accessed whatsoever. This is not specified anywhere publicly as far as we
|
|
could tell. flashrom does not handle this explicitly yet. It will just fail
|
|
when trying to touch an address outside of any region.
|
|
See also http://www.flashrom.org/pipermail/flashrom/2011-August/007606.html
|
|
|
|
= (Un)locking the ME region =
|
|
If the ME region is locked by the FRAP register in descriptor mode, the host
|
|
software is not allowed to read or write any address inside that region.
|
|
Although the chipset datasheets specify that "[t]he contents of this register
|
|
are that of the Flash Descriptor" [PANTHER], this is not entirely true.
|
|
The firmware has to fill at least some of the registers involved. It is not
|
|
known when they become read-only or any other details, but there is at least
|
|
one HM67-based board, that provides an user-changeable setting in the firmware
|
|
user interface to enable ME region updates that lead to a FRAP content that is
|
|
not equal to the descriptor region bits [NC9B].
|
|
|
|
There are different ways to unlock access:
|
|
|
|
- A pin strap: Flash Descriptor Security Override Strap (as indicated by the
|
|
Flash Descriptor Override Pin Strap Status (FDOPSS) in HSFS. That pin is
|
|
probably not accessible to end users on consumer boards (every Intel doc i
|
|
have seen stresses that this is for debugging in manufacturing only and
|
|
should not be available for end users).
|
|
The ME indicates this in bits [19:16] (Operation Mode) in the HFS register of
|
|
the HECI/MEI PCI device by setting them to 4 (SECOVR_JMPR) [MODE_CTRL].
|
|
|
|
- Intel Management Engine BIOS Extension (MEBx) Disable
|
|
This option may be available to end users on some boards usually accessible
|
|
by hitting ctrl+p after BIOS POST. Quote: "'Disabling' the Intel ME does not
|
|
really disable it: it causes the Intel ME code to be halted at an early stage
|
|
of the Intel ME's booting so that the system has no traffic originating from
|
|
the Intel ME on any of the buses." [MEBX] The ME indicates this in
|
|
bits [19:16] (Operation Mode) in the HFS register of the HECI/MEI PCI device
|
|
by setting them to 3 (Soft Temporary Disable) [MODE_CTRL].
|
|
|
|
- Previous to Ibex Peak/5 Series chipsets removing the DIMM from slot (or
|
|
channel?) #0 disables the ME completely, which may give the host access to
|
|
the ME region.
|
|
|
|
- HMRFPO (Host ME Region Flash Protection Override) Enable MEI command
|
|
This is the most interesting one because it allows to temporarily disable
|
|
the ME region protection by software. The ME indicates this in bits [19:16]
|
|
(Operation Mode) in the HFS register of the HECI/MEI PCI device by setting
|
|
them to 5 (SECOVER_MEI_MSG) [MODE_CTRL].
|
|
|
|
== MEI/HECI ==
|
|
Communication between the host software and the different services provided by
|
|
the ME is done via a packet-based protocol that uses MMIO transfers to one or
|
|
more virtual PCI devices. Upon this layer there exist various services that can
|
|
be used to read out hardware management values (e.g. temperatures, fan speeds
|
|
etc.). The lower levels of that protocol are well documented:
|
|
The locations/offsets of the PCI MMIO registers are noted in the chipset
|
|
datasheets. The actually communication is documented in a whitepaper [DCMI] and
|
|
an outdated as well as a current Linux kernel implementation (currently in
|
|
staging/ exist [KERNEL]. There exists a patch that re-implements this in user
|
|
space (as part of flashrom).
|
|
|
|
== Problems ==
|
|
The problem is that only very few higher level protocols are documented publicly,
|
|
especially the bunch of messages that contain the HMRFPO commands is probably
|
|
well protected and only documented in ME-specific docs and the BIOS writer's
|
|
guides. We are aware of a few leaked documents though that give us a few hints
|
|
about it, but nothing substantial regarding its implementation.
|
|
|
|
The documents are somewhat contradicting each other in various points which
|
|
might be due to factual changes in process of time or due to the different
|
|
capabilities of the ME firmwares, example:
|
|
|
|
Intel's Flash Programming Tool (FPT) "automatically stops ME writing to SPI
|
|
ME Region, to prevent both writing at the same time, causing data corruption." [ME8]
|
|
|
|
"FPT is not HMRFPO-capable, so needs [the help of the FDOPS pin] HDA_SDO if
|
|
used to update the ME Region." [SPS]
|
|
|
|
When looking at the various ME firmware editions (and different chipsets), things
|
|
get very unclear. Some docs say that HMRFPO needs to be sent before End-of-POST
|
|
(EOP), others say that the ME region can be updated in the field or that some
|
|
vendor tools use it for updates. This needs to be investigated further before
|
|
drawing any conclusion.
|
|
|
|
[PANTHER] Intel 7 Series Chipset Family Platform Controller Hub (PCH) Datasheet
|
|
Document Number: 326776, April 2012, page 857
|
|
[NC9B] Jetway NC9B flashrom v0.9.5.2-r1517 log with ME region unlocked.
|
|
NB: "FRAP 0e0f" vs. "FLMSTR1 0a0b".
|
|
http://paste.flashrom.org/view.php?id=1215
|
|
[MODE_CTRL] Client Platform Enabling Tour: Platform Software
|
|
Document Number: 439167, Revision 1.2, page 52
|
|
[MEBX] Intel Management Engine BIOS Extension (MEBX) User's Guide
|
|
Revision 1.2, Section 3.1 and 3.5
|
|
[DCMI] DCMI Host Interface Specification
|
|
Revision 1.0
|
|
[KERNEL] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/staging/mei;hb=HEAD
|
|
[SPI_PROG] Ibex Peak SPI Programming Guide
|
|
Document Number: 403598, Revision 1.3, page 79
|
|
[ME8] Manufacturing with Intel Management Engine (ME) Firmware 8.X on Intel 7 Series
|
|
Revision 2.0, page 59
|
|
[SPS] Manufacturing with Intel Management Engine (ME) on Intel C600 Series Chipset 1
|
|
for Romley Server 2 Platforms using Server Platform Services (SPS) Firmware
|
|
Revision 2.2, page 51
|