Ao Zhong has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/48010 )
Change subject: doc/mb/hp/z220_sff.md: Add some information
......................................................................
doc/mb/hp/z220_sff.md: Add some information
Added some test results about this mainboard and the way to disable
SPI flash write protection.
Signed-off-by: Ao Zhong <hacc1225(a)gmail.com>
Change-Id: I3ec61557c9c800db66b3b7db78ea6120c109d84a
---
M Documentation/mainboard/hp/z220_sff.md
A Documentation/mainboard/hp/z220_sff_pin1.jpg
A Documentation/mainboard/hp/z220_sff_pin2.jpg
3 files changed, 43 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/10/48010/1
diff --git a/Documentation/mainboard/hp/z220_sff.md b/Documentation/mainboard/hp/z220_sff.md
index 0dfa653..7ebe446 100644
--- a/Documentation/mainboard/hp/z220_sff.md
+++ b/Documentation/mainboard/hp/z220_sff.md
@@ -11,6 +11,35 @@
- Advanced LED control
- Advanced power configuration in S3
+## Working
+
+- USB 3.0 and USB 2.0
+- S3 suspend/resume (Tested with Arch Linux 2020.11.25 and resume with power button)
+- SATA
+- Onboard audio
+- Front headphone jack
+- Rear headphone jack
+- Internal audio speaker
+- Onboard network (Working with Gigabit Ethernet Firmware blob)
+- PCIe x16 Gen3 (Tested with Nvidia Quadro 600)
+- PCIe x4 Gen2 / x16 connector (Tested with WD SN550 SSD)
+- Boot from NVMe SSD (Tested with Tianocore, M.2-to-PCIe adapter and WD SN550 SSD)
+- CPU Temp sensors (Tested with lm-sensors in Arch Linux)
+- Native raminit (Tested with Xeon-E3 1240v2, 4x4G Hynix ECC DDR3 RAM)
+- Automatic fan control
+- 1x PCIe GPU in PCIe x16 Gen3 slot (Tested with Nvidia Quadro 600)
+- using `me_cleaner`
+- using `flashrom`
+
+## Untested
+
+- Integrated graphics
+- PS/2 port
+- TPM
+- Parallel port
+- PCI slot
+- PCIe x1 gen2 slot
+
## Flashing coreboot
```eval_rst
@@ -39,6 +68,20 @@
The SPI flash can be accessed using [flashrom].
+When you flash from stock firmware, you may need to short ME/AMT flash override pins to make the whole SPI flash accessible.
+
+**Position of ME/AMT flash override pins**
+
+![][z220_sff_pin1]
+
+[z220_sff_pin1]: z220_sff_pin1.jpg
+
+**Closeup view of ME/AMT flash override pins**
+
+![][z220_sff_pin2]
+
+[z220_sff_pin2]: z220_sff_pin2.jpg
+
### External programming
External programming with an SPI adapter and [flashrom] does work, but it powers the
diff --git a/Documentation/mainboard/hp/z220_sff_pin1.jpg b/Documentation/mainboard/hp/z220_sff_pin1.jpg
new file mode 100644
index 0000000..b20a475
--- /dev/null
+++ b/Documentation/mainboard/hp/z220_sff_pin1.jpg
Binary files differ
diff --git a/Documentation/mainboard/hp/z220_sff_pin2.jpg b/Documentation/mainboard/hp/z220_sff_pin2.jpg
new file mode 100644
index 0000000..dfe8ad5
--- /dev/null
+++ b/Documentation/mainboard/hp/z220_sff_pin2.jpg
Binary files differ
--
To view, visit https://review.coreboot.org/c/coreboot/+/48010
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I3ec61557c9c800db66b3b7db78ea6120c109d84a
Gerrit-Change-Number: 48010
Gerrit-PatchSet: 1
Gerrit-Owner: Ao Zhong <hacc1225(a)gmail.com>
Gerrit-MessageType: newchange
Patrick Rudolph has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/36539 )
Change subject: [WIP]Documentation: Add Intel microcode update mechanism
......................................................................
[WIP]Documentation: Add Intel microcode update mechanism
Document microcode updates and how secure microcode updates are done in
GNU/Linux.
Propose how to do microcode updates in coreboot.
Change-Id: I78350fc81cb0de7b0b2d9cbd8537e6b3815916c0
Signed-off-by: Patrick Rudolph <siro(a)das-labor.org>
---
M Documentation/soc/intel/index.md
A Documentation/soc/intel/microcode/index.md
2 files changed, 111 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/39/36539/1
diff --git a/Documentation/soc/intel/index.md b/Documentation/soc/intel/index.md
index f30ff9a..1cf8548 100644
--- a/Documentation/soc/intel/index.md
+++ b/Documentation/soc/intel/index.md
@@ -2,6 +2,10 @@
This section contains documentation about coreboot on specific Intel SOCs.
+## Common
+
+- [Microcode updates](microcode/index.md)
+
## Platforms
- [Common code development strategy](code_development_model/code_development_model.md)
diff --git a/Documentation/soc/intel/microcode/index.md b/Documentation/soc/intel/microcode/index.md
new file mode 100644
index 0000000..b7f5949
--- /dev/null
+++ b/Documentation/soc/intel/microcode/index.md
@@ -0,0 +1,107 @@
+# Microcode updates on Intel CPUs
+
+## What are microcodes?
+
+```eval_rst
+Microcode is a computer hardware technique that interposes a layer of
+organisation between the CPU hardware and the programmer-visible
+instruction set architecture of the computer. [#1]_
+```
+
+In coreboot the microcode updates are stored in files in the CBFS and
+are used to update the CPU microcode at runtime using a special instruction.
+
+## How does a microcode update look like?
+
+The microcode update is a binary provided by Intel consisting out of
+a header and data.
+The header holds the processor signature for which the update is
+intented and additional metadata.
+For detailed information check the [Intel SDM] 253668-060US Chapter 9.11.1
+
+## When are mirocode updates done?
+
+Microcode updates are stored in the CPU's SRAM and thus needs to be loaded
+after a hard reset. However loading microcode updates is done multiple times
+in coreboot's boot sequence.
+
+On some CPUs it's neccessary to do an microcode update before:
+* Cache-As-RAM is enabled
+* Legacy Intel TXT FIT boot is run
+* MultiProcessor-Init is run
+
+On some CPUs it's neccessary to do an microcode update after:
+* SMM setup was done
+* SGX setup was done
+
+## How to do microcode updates?
+
+The following chapter is based multiple sources and testing due to lack of clear
+documentation.
+
+In order to safely update microcode on any generation the GNU/Linux kernel
+"late loading mechanism" takes a conservative approach and obeys the following
+rules:
+
+```eval_rst
+* All physical CPU cores must be updated with the same microcode version [#2]_
+* Caches need to be flushed on certain CPUs prior to microcode update [#3]_
+* The sibling thread must be idle while a microcode update is ongoing [#4]_
+* All other APs on the same package should be idle (or in Wait-for-SIPI) [#5]_
+* The microcode update is done sequentially [#6]_
+```
+
+The downside of this approach is that it's very slow.
+
+It seems to be possible to run microcode updates in parallel on APs on specific
+CPUs.
+
+## How to do microcode updates in coreboot ramstage?
+
+*TBD*
+
+Proposal:
+1. Run microcode update sequential by default
+2. Flush caches in non CAR environment before running a microcode update
+3. Switch to parallel microcode update after extensive testing (10000 boot cycles)
+
+For parallel microcde update:
+1. On Intel HT enabled CPUs spinlock the slibing thread of a logical core
+2. On Intel HT enabled CPUs only update one thread of a physical core
+3. Synchronize microcode loading. This will make sure no other computational work
+ is being done while an update occurs (thus no Wait-for-SIPI).
+
+## Intel Hyper-Threading enabled CPUs
+
+```eval_rst
+According to Intel SDM a Hyper-Threading enabled core shares the microcode unit
+between the logical CPU cores [#4]_. Intel NetBurst CPUs must not attempt to
+update the microcode on both logical cores at the same time, this is safe for
+newer CPU generations.
+```
+
+## Where to obtain the microcode updates?
+
+The microcode update files can be found on Intel's [Github Microcode].
+
+## References
+- [Wikipedia microcode]
+- [Github Microcode]
+- [Intel SDM]
+
+-------------
+```eval_rst
+.. [#1] Kent, Allen; Williams, James G. (April 5, 1993). `Encyclopedia of Computer Science and Technology: Volume 28 <http://https://books.google.com/books?id=EjWV8J8CQEYC>`_
+.. [#2] `Intel SDM Document 253668-060US`_ Chapter 9.11.6.3 "Update in a System Supporting Intel Hyper-Threading Technology"
+.. [#3] GNU/Linux commit by Ashok Raj `<https://lore.kernel.org/patchwork/patch/890717/>`_
+.. [#4] `Intel SDM Document 253668-060US`_ Chapter 8.8.5 "Microcode Update Resources"
+.. [#5] GNU/Linux commit by Ashok Raj `<https://lore.kernel.org/patchwork/patch/890713/>`_
+.. [#6] `Intel SDM Document 253668-060US`_ Chapter 9.11.6.3 "Update in a System Supporting Intel Hyper-Threading Technology"
+
+.. _Intel SDM Document 253668-060US: https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-…
+
+```
+
+[Wikipedia microcode]: https://en.wikipedia.org/wiki/Microcode
+[Github Microcode]: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files
+[Intel SDM]: https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-…
--
To view, visit https://review.coreboot.org/c/coreboot/+/36539
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I78350fc81cb0de7b0b2d9cbd8537e6b3815916c0
Gerrit-Change-Number: 36539
Gerrit-PatchSet: 1
Gerrit-Owner: Patrick Rudolph <siro(a)das-labor.org>
Gerrit-MessageType: newchange