Skip to content

Commit 6327fbb

Browse files
committed
integrate HAL
Signed-off-by: Daniil Klimuk <[email protected]>
1 parent 6df9a3c commit 6327fbb

File tree

11 files changed

+174
-169
lines changed

11 files changed

+174
-169
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ install:
1111
install -m 0755 include/dts-environment.sh $(DESTDIR)$(SBINDIR)
1212
install -m 0755 include/dts-functions.sh $(DESTDIR)$(SBINDIR)
1313
install -m 0755 include/dts-subscription.sh $(DESTDIR)$(SBINDIR)
14+
install -m 0755 include/hal/dts-hal.sh $(DESTDIR)$(SBINDIR)
15+
install -m 0755 include/hal/common-mock-func.sh $(DESTDIR)$(SBINDIR)
1416

1517
install -m 0755 scripts/cloud_list $(DESTDIR)$(SBINDIR)
1618
install -m 0755 scripts/dasharo-deploy $(DESTDIR)$(SBINDIR)

include/dts-environment.sh

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
# SPDX-License-Identifier: Apache-2.0
66

77
# shellcheck disable=SC2034
8+
# shellcheck source=../include/hal/dts-hal.sh
9+
source $DTS_HAL
810

911
# Text colors:
1012
NORMAL='\033[0m'
@@ -50,15 +52,15 @@ VERBOSE_OPT="V"
5052
VERBOSE_OPT_LOW="$(echo $VERBOSE_OPT | awk '{print tolower($0)}')"
5153

5254
# Hardware variables:
53-
SYSTEM_VENDOR="${SYSTEM_VENDOR:-$(dmidecode -s system-manufacturer)}"
54-
SYSTEM_MODEL="${SYSTEM_MODEL:-$(dmidecode -s system-product-name)}"
55-
BOARD_VENDOR="${BOARD_VENDOR:-$(dmidecode -s system-manufacturer)}"
56-
BOARD_MODEL="${BOARD_MODEL:-$(dmidecode -s baseboard-product-name)}"
57-
CPU_VERSION="$(dmidecode -s processor-version)"
55+
SYSTEM_VENDOR="${SYSTEM_VENDOR:-$($DMIDECODE -s system-manufacturer)}"
56+
SYSTEM_MODEL="${SYSTEM_MODEL:-$($DMIDECODE -s system-product-name)}"
57+
BOARD_VENDOR="${BOARD_VENDOR:-$($DMIDECODE -s system-manufacturer)}"
58+
BOARD_MODEL="${BOARD_MODEL:-$($DMIDECODE -s baseboard-product-name)}"
59+
CPU_VERSION="$($DMIDECODE -s processor-version)"
5860

5961
# Firmware variables
60-
BIOS_VENDOR="${BIOS_VENDOR:-$(dmidecode -s bios-vendor)}"
61-
BIOS_VERSION="${BIOS_VERSION:-$(dmidecode -s bios-version)}"
62+
BIOS_VENDOR="${BIOS_VENDOR:-$($DMIDECODE -s bios-vendor)}"
63+
BIOS_VERSION="${BIOS_VERSION:-$($DMIDECODE -s bios-version)}"
6264
DASHARO_VERSION="$(echo $BIOS_VERSION | cut -d ' ' -f 3 | tr -d 'v')"
6365
DASHARO_FLAVOR="$(echo $BIOS_VERSION | cut -d ' ' -f 1,2)"
6466

@@ -91,17 +93,15 @@ FLASH_INFO_FILE="/tmp/flash_info"
9193
OS_VERSION_FILE="/etc/os-release"
9294
KEYS_DIR="/tmp/devkeys"
9395

94-
# Paths to system commands
95-
CMD_POWEROFF="/sbin/poweroff"
96-
CMD_REBOOT="/sbin/reboot"
97-
CMD_SHELL="/bin/bash"
96+
# Paths to system commands:
97+
SHELL="bash"
98+
99+
# Paths to DTS commands:
98100
CMD_DASHARO_HCL_REPORT="/usr/sbin/dasharo-hcl-report"
99101
CMD_NCMENU="/usr/sbin/novacustom_menu"
100102
CMD_DASHARO_DEPLOY="/usr/sbin/dasharo-deploy"
101103
CMD_CLOUD_LIST="/usr/sbin/cloud_list"
102104
CMD_EC_TRANSITION="/usr/sbin/ec_transition"
103-
DASHARO_ECTOOL="${DASHARO_ECTOOL:-dasharo_ectool}"
104-
FLASHROM="${FLASHROM:-flashrom}"
105105

106106
# Configuration variables declaration and default values (see dts-functions.sh/
107107
# board_config function for more inf.):

include/dts-functions.sh

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
source $DTS_ENV
1010
# shellcheck source=../include/dts-subscription.sh
1111
source $DTS_SUBS
12+
# shellcheck source=../include/hal/dts-hal.sh
13+
source $DTS_HAL
1214

1315
### Color functions:
1416
function echo_green() {
@@ -53,7 +55,7 @@ check_if_ac() {
5355
fi
5456

5557
while true; do
56-
ac_status=$(cat ${_ac_file})
58+
ac_status=$($FSREAD_TOOL check_if_ac_mock cat ${_ac_file})
5759

5860
if [ "$ac_status" -eq 1 ]; then
5961
echo "AC adapter is connected. Continuing with firmware update."
@@ -121,28 +123,28 @@ it5570_i2ec() {
121123
# TODO: Use /dev/port instead of iotools
122124

123125
# Address high byte
124-
iotools io_write8 0x2e 0x2e
125-
iotools io_write8 0x2f 0x11
126-
iotools io_write8 0x2e 0x2f
127-
iotools io_write8 0x2f $(($2>>8 & 0xff))
126+
$IOTOOLS io_write8 0x2e 0x2e
127+
$IOTOOLS io_write8 0x2f 0x11
128+
$IOTOOLS io_write8 0x2e 0x2f
129+
$IOTOOLS io_write8 0x2f $(($2>>8 & 0xff))
128130

129131
# Address low byte
130-
iotools io_write8 0x2e 0x2e
131-
iotools io_write8 0x2f 0x10
132-
iotools io_write8 0x2e 0x2f
133-
iotools io_write8 0x2f $(($2 & 0xff))
132+
$IOTOOLS io_write8 0x2e 0x2e
133+
$IOTOOLS io_write8 0x2f 0x10
134+
$IOTOOLS io_write8 0x2e 0x2f
135+
$IOTOOLS io_write8 0x2f $(($2 & 0xff))
134136

135137
# Data
136-
iotools io_write8 0x2e 0x2e
137-
iotools io_write8 0x2f 0x12
138-
iotools io_write8 0x2e 0x2f
138+
$IOTOOLS io_write8 0x2e 0x2e
139+
$IOTOOLS io_write8 0x2f 0x12
140+
$IOTOOLS io_write8 0x2e 0x2f
139141

140142
case $1 in
141143
"r")
142-
iotools io_read8 0x2f
144+
$IOTOOLS io_read8 0x2f
143145
;;
144146
"w")
145-
iotools io_write8 0x2f "$3"
147+
$IOTOOLS io_write8 0x2f "$3"
146148
;;
147149
esac
148150
}
@@ -356,11 +358,11 @@ board_config() {
356358
"V54x_6x_TU")
357359
# Dasharo 0.9.0-rc10 and higher have board model in baseboard-version
358360
if check_if_dasharo && compare_versions "$DASHARO_VERSION" 0.9.0-rc10; then
359-
BOARD_MODEL="$(dmidecode -s baseboard-version)"
360-
elif ! dasharo_ectool info 2>/dev/null; then
361+
BOARD_MODEL="$($DMIDECODE -s baseboard-version)"
362+
elif ! $DASHARO_ECTOOL novacustom_check_sys_model_mock info 2>/dev/null; then
361363
ask_for_model V540TU V560TU
362364
else
363-
BOARD_MODEL=$(dasharo_ectool info | grep "board:" |
365+
BOARD_MODEL=$($DASHARO_ECTOOL novacustom_check_sys_model_mock info | grep "board:" |
364366
sed -r 's|.*novacustom/(.*)|\1|' | awk '{print toupper($1)}')
365367
fi
366368

@@ -394,7 +396,7 @@ board_config() {
394396
;;
395397
"V5xTNC_TND_TNE")
396398
if check_if_dasharo; then
397-
BOARD_MODEL="$(dmidecode -s baseboard-version)"
399+
BOARD_MODEL="$($DMIDECODE -s baseboard-version)"
398400
else
399401
ask_for_model V540TNx V560TNx
400402
fi
@@ -718,7 +720,7 @@ board_config() {
718720
}
719721

720722
check_flash_lock() {
721-
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} > /tmp/check_flash_lock 2> /tmp/check_flash_lock.err
723+
$FLASHROM check_flash_lock_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} > /tmp/check_flash_lock 2> /tmp/check_flash_lock.err
722724
# Check in flashrom output if lock is enabled
723725
grep -q 'PR0: Warning:.* is read-only\|SMM protection is enabled' /tmp/check_flash_lock.err
724726
if [ $? -eq 0 ]; then
@@ -731,22 +733,22 @@ check_flash_lock() {
731733

732734
check_flash_chip() {
733735
echo "Gathering flash chip and chipset information..."
734-
$FLASHROM -p "$PROGRAMMER_BIOS" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
736+
$FLASHROM flash_chip_name_mock -p "$PROGRAMMER_BIOS" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
735737
if [ $? -eq 0 ]; then
736738
echo -n "Flash information: "
737739
tail -n1 "$FLASH_INFO_FILE"
738-
FLASH_CHIP_SIZE=$(($($FLASHROM -p "$PROGRAMMER_BIOS" --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
740+
FLASH_CHIP_SIZE=$(($($FLASHROM flash_chip_size_mock -p "$PROGRAMMER_BIOS" --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
739741
echo -n "Flash size: "
740742
echo ${FLASH_CHIP_SIZE}M
741743
else
742744
for flash_name in $FLASH_CHIP_LIST
743745
do
744-
$FLASHROM -p "$PROGRAMMER_BIOS" -c "$flash_name" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
746+
$FLASHROM flash_chip_name_mock -p "$PROGRAMMER_BIOS" -c "$flash_name" --flash-name >> "$FLASH_INFO_FILE" 2>> "$ERR_LOG_FILE"
745747
if [ $? -eq 0 ]; then
746748
echo "Chipset found"
747749
tail -n1 "$FLASH_INFO_FILE"
748750
FLASH_CHIP_SELECT="-c ${flash_name}"
749-
FLASH_CHIP_SIZE=$(($($FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
751+
FLASH_CHIP_SIZE=$(($($FLASHROM flash_chip_size_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} --flash-size 2>> /dev/null | tail -n1) / 1024 / 1024))
750752
echo "Chipset size"
751753
echo ${FLASH_CHIP_SIZE}M
752754
break
@@ -900,7 +902,7 @@ verify_artifacts() {
900902

901903
check_intel_regions() {
902904

903-
FLASH_REGIONS=$($FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} 2>&1)
905+
FLASH_REGIONS=$($FLASHROM check_intel_regions_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} 2>&1)
904906
BOARD_HAS_FD_REGION=0
905907
BOARD_FD_REGION_RW=0
906908
BOARD_HAS_ME_REGION=0
@@ -928,7 +930,7 @@ check_blobs_in_binary() {
928930

929931
# If there is no descriptor, there is no ME as well, so skip the check
930932
if [ $BOARD_HAS_FD_REGION -ne 0 ]; then
931-
ME_OFFSET=$(ifdtool -d $1 2> /dev/null | grep "Flash Region 2 (Intel ME):" | sed 's/Flash Region 2 (Intel ME)\://' |awk '{print $1;}')
933+
ME_OFFSET=$($IFDTOOL check_blobs_in_binary_mock -d $1 2> /dev/null | grep "Flash Region 2 (Intel ME):" | sed 's/Flash Region 2 (Intel ME)\://' | awk '{print $1;}')
932934
# Check for IFD signature at offset 0 (old descriptors)
933935
if [ "$(tail -c +0 $1|head -c 4|xxd -ps)" == "5aa5f00f" ]; then
934936
BINARY_HAS_FD=1
@@ -958,11 +960,8 @@ check_if_me_disabled() {
958960
return
959961
fi
960962

961-
# Check if HECI present
962-
# FIXME: what if HECI is not device 16.0?
963-
if [ -d /sys/class/pci_bus/0000:00/device/0000:00:16.0 ]; then
964-
# Check ME Current Operation Mode at offset 0x40 bits 19:16
965-
ME_OPMODE="$(setpci -s 00:16.0 42.B 2> /dev/null | cut -c2-)"
963+
if check_if_heci_present; then
964+
ME_OPMODE="$(check_me_op_mode)"
966965
if [ $ME_OPMODE == "0" ]; then
967966
echo "ME is not disabled" >> $ERR_LOG_FILE
968967
return
@@ -997,8 +996,8 @@ check_if_me_disabled() {
997996
fi
998997
else
999998
# If we are running coreboot, check for status in logs
1000-
cbmem -1 | grep -q "ME is disabled" && ME_DISABLED=1 && return # HECI (soft) disabled
1001-
cbmem -1 | grep -q "ME is HAP disabled" && ME_DISABLED=1 && return # HAP disabled
999+
$CBMEM check_if_me_disabled_mock -1 | grep -q "ME is disabled" && ME_DISABLED=1 && return # HECI (soft) disabled
1000+
$CBMEM check_if_me_disabled_mock -1 | grep -q "ME is HAP disabled" && ME_DISABLED=1 && return # HAP disabled
10021001
# TODO: If proprietary BIOS, then also try to check SMBIOS for ME FWSTS
10031002
# BTW we could do the same in coreboot, expose FWSTS in SMBIOS before it
10041003
# gets disabled
@@ -1043,10 +1042,10 @@ set_flashrom_update_params() {
10431042
# We need to read whole binary (or BIOS region), otherwise cbfstool will
10441043
# return different attributes for CBFS regions
10451044
echo "Checking flash layout."
1046-
$FLASHROM -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_UPDATE} -r /tmp/bios.bin > /dev/null 2>&1
1045+
$FLASHROM check_flash_layout_mock -p "$PROGRAMMER_BIOS" ${FLASH_CHIP_SELECT} ${FLASHROM_ADD_OPT_UPDATE} -r /tmp/bios.bin > /dev/null 2>&1
10471046
if [ $? -eq 0 ] && [ -f "/tmp/bios.bin" ]; then
1048-
BOARD_FMAP_LAYOUT=$(cbfstool /tmp/bios.bin layout -w 2> /dev/null)
1049-
BINARY_FMAP_LAYOUT=$(cbfstool $1 layout -w 2> /dev/null)
1047+
BOARD_FMAP_LAYOUT=$($CBFSTOOL layout_mock /tmp/bios.bin layout -w 2> /dev/null)
1048+
BINARY_FMAP_LAYOUT=$($CBFSTOOL layout_mock $1 layout -w 2> /dev/null)
10501049
diff <(echo "$BOARD_FMAP_LAYOUT") <(echo "$BINARY_FMAP_LAYOUT") > /dev/null 2>&1
10511050
# If layout is identical, perform standard update using FMAP only
10521051
if [ $? -eq 0 ]; then
@@ -1183,7 +1182,7 @@ handle_fw_switching() {
11831182
esac
11841183
done
11851184
fi
1186-
elif [ ! -v DPP_IS_LOGGED ] && [ "$DASHARO_FLAVOR" == "Dasharo (coreboot+heads)" ]; then
1185+
elif [ -z "$DPP_IS_LOGGED" ] && [ "$DASHARO_FLAVOR" == "Dasharo (coreboot+heads)" ]; then
11871186
# Not logged with DPP and we are on heads, offer switch back
11881187
compare_versions $DASHARO_VERSION $HEADS_REL_VER_DPP
11891188
if [ $? -eq 1 ]; then
@@ -1251,7 +1250,7 @@ You can find more info about HCL in docs.dasharo.com/glossary\r"
12511250
show_ram_inf() {
12521251
# Get the data:
12531252
local data=""
1254-
data=$(dmidecode)
1253+
data=$($DMIDECODE)
12551254

12561255
# Initialize an empty array to store the extracted values:
12571256
local -a memory_devices_array
@@ -1548,19 +1547,19 @@ footer_options(){
15481547
send_dts_logs
15491548
set +x
15501549
unset VERBOSE_ACTIVE
1551-
${CMD_SHELL}
1550+
${SHELL}
15521551

15531552
# If in submenu before going to shell - return to main menu after exiting
15541553
# shell:
15551554
unset DPP_SUBMENU_ACTIVE
15561555
;;
15571556
"${POWEROFF_OPT_UP}" | "${POWEROFF_OPT_LOW}")
15581557
send_dts_logs
1559-
${CMD_POWEROFF}
1558+
${POWEROFF}
15601559
;;
15611560
"${REBOOT_OPT_UP}" | "${REBOOT_OPT_LOW}")
15621561
send_dts_logs
1563-
${CMD_REBOOT}
1562+
${REBOOT}
15641563
;;
15651564
"${SEND_LOGS_OPT}" | "${SEND_LOGS_OPT_LOW}")
15661565
if [ "${SEND_LOGS_ACTIVE}" == "true" ]; then

include/dts-subscription.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ check_for_dasharo_firmware() {
3333
TEST_LOGS_URL="https://cloud.3mdeb.com/index.php/s/${CLOUDSEND_LOGS_URL}/authenticate/showShare"
3434

3535
# If board_config function has not set firmware links - exit with warning:
36-
if [ ! -v BIOS_LINK_DPP ] && [ ! -v HEADS_LINK_DPP ] && [ ! -v BIOS_LINK_DPP_SEABIOS ]; then
36+
if [ -z "$BIOS_LINK_DPP" ] && [ -z "$HEADS_LINK_DPP" ] && [ -z "$BIOS_LINK_DPP_SEABIOS" ] && [ -z "$BIOS_LINK_DPP_CAP" ]; then
3737
print_warning "There is no Dasharo Firmware available for your platform."
3838
return 1
3939
fi

include/hal/common-mock-func.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ dasharo_ectool_update_ec_firmware_mock(){
5959
# TODO
6060
}
6161

62-
dasharo_ectool_novacustom_check_sys_model_mock(){
62+
novacustom_check_sys_model_mock(){
6363
# TODO
6464
}
6565

include/hal/dts-hal.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@
3030
# shellcheck source=./dts-hal-common.sh
3131
source $DTS_ENV
3232
# shellcheck source=./dts-hal-common.sh
33-
source $DTS_HAL_COMMON
34-
source $DTS_HAL_PLAT
33+
source $DTS_MOCK_COMMON
3534

3635
# Set tools wrappers:
3736
DASHARO_ECTOOL="tool_wrapper dasharo_ectool"

0 commit comments

Comments
 (0)