42 lines
1.6 KiB
Plaintext
42 lines
1.6 KiB
Plaintext
|
|
# Copyright (c) 2021 The Chromium OS Authors. All rights reserved.
|
||
|
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
|
# found in the LICENSE file.
|
||
|
|
|
||
|
|
AUTHOR = "ChromeOS Team"
|
||
|
|
NAME = "firmware_CheckEOPState"
|
||
|
|
PURPOSE = "Ensure that firmware told ME that the boot process is complete."
|
||
|
|
ATTRIBUTES = "suite:faft_bios_ro_qual, suite:faft_bios_rw_qual"
|
||
|
|
CRITERIA = "Fail if ME on Tiger Lake or later is not in post-boot state"
|
||
|
|
TIME = "SHORT"
|
||
|
|
TEST_CATEGORY = "Security"
|
||
|
|
TEST_CLASS = "firmware"
|
||
|
|
TEST_TYPE = "client"
|
||
|
|
PY_VERSION = 3
|
||
|
|
|
||
|
|
DOC = """
|
||
|
|
Intel x86 CPUs come with a Management Engine (going by more complicated
|
||
|
|
names sometimes, look for ME, CSE or CSME) that coordinates various
|
||
|
|
tasks during boot and after.
|
||
|
|
|
||
|
|
That coprocessor needs to know when the boot process is complete so
|
||
|
|
it can reject privileged boot-only requests until next reboot.
|
||
|
|
|
||
|
|
This test PASSES if the ME reports that it's in Post-Boot State.
|
||
|
|
|
||
|
|
This test FAILS if any of the following is true:
|
||
|
|
- The Intel microarchitecture isn't defined in client/bin/utils.py
|
||
|
|
- The ME reports it's not in Post-Boot State. This is the main condition.
|
||
|
|
- The ME's firmware supports a sufficiently new protocol but returns
|
||
|
|
failure to execute the query, failure to understand the query, responded
|
||
|
|
to a different query or returns an unexpectedly formatted response.
|
||
|
|
- The kernel doesn't provide a /dev/mei0 device even though we expect
|
||
|
|
it to be there.
|
||
|
|
|
||
|
|
This test reports NA if any of the following is true:
|
||
|
|
- The test is executed on non-Intel CPUs (e.g. AMD or ARM)
|
||
|
|
- The ME reports an old protocol version where we can't query the
|
||
|
|
state. (At least Sky Lake-E and older)
|
||
|
|
"""
|
||
|
|
|
||
|
|
job.run_test('firmware_CheckEOPState')
|