Initial commit
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
SUMMARY = "ME time sync"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit obmc-phosphor-systemd
|
||||
|
||||
RDEPENDS:${PN} += "bash"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
SRC_URI += "file://me-time-sync.sh"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${S}/me-time-sync.sh ${D}${bindir}/me-time-sync.sh
|
||||
}
|
||||
|
||||
SYSTEMD_SERVICE:${PN} += "me-time-sync.service"
|
||||
@@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=Sync time from ME
|
||||
Wants=ipmb.service
|
||||
After=ipmb.service
|
||||
|
||||
#ipmb may not ready for communication when
|
||||
#me-time-sync start, add some retry
|
||||
[Service]
|
||||
Type=simple
|
||||
Restart=always
|
||||
StartLimitInterval=90
|
||||
StartLimitBurst=5
|
||||
ExecStart=/usr/bin/me-time-sync.sh
|
||||
RemainAfterExit=yes
|
||||
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Get time from ME via ipmb
|
||||
# The last 4 bytes are the epoch time, e.g.
|
||||
# (iyyyyay) 0 11 0 72 0 4 18 169 82 95
|
||||
ret=$(busctl call xyz.openbmc_project.Ipmi.Channel.Ipmb "/xyz/openbmc_project/Ipmi/Channel/Ipmb" org.openbmc.Ipmb sendRequest yyyyay 0x01 0x0a 0x00 0x48 0)
|
||||
|
||||
IFS=' ' read -r -a a <<< "${ret}"
|
||||
|
||||
if [ "${a[1]}" -ne 0 ]
|
||||
then
|
||||
echo "Failed to get time from ME: ${ret}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
t0=$((a[7]))
|
||||
t1=$((a[8]*256))
|
||||
t2=$((a[9]*256*256))
|
||||
t3=$((a[10]*256*256*256))
|
||||
t=$((t0+t1+t2+t3))
|
||||
echo "Setting date to ${t}"
|
||||
|
||||
date -s @${t}
|
||||
Reference in New Issue
Block a user