summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr
diff options
context:
space:
mode:
authorEd Tanous <ed.tanous@intel.com>2019-08-19 21:16:19 +0300
committerEd Tanous <ed@tanous.net>2019-08-20 18:56:17 +0300
commit35e295e2a161fcf146ea031de53431b2888521fa (patch)
treea0c78943fef5c085f371aaa840d46edecc1f2e95 /meta-openbmc-mods/meta-common/recipes-intel/intel-pfr
parent9856ac69064742544fafad307d3ee4544385ffa2 (diff)
downloadopenbmc-35e295e2a161fcf146ea031de53431b2888521fa.tar.xz
Sync to internal 8-19-2019
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-intel/intel-pfr')
-rwxr-xr-xmeta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/blocksignbin58104 -> 0 bytes
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/bmc_config.xml1
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfm_config.xml1
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image-manifest.json63
-rwxr-xr-xmeta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image.py201
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_manifest.json120
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-blocksign-native.bb20
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-pfr-manager_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/obmc-intel-pfr-image-native.bb15
9 files changed, 282 insertions, 141 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/blocksign b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/blocksign
deleted file mode 100755
index 69d51d2ba..000000000
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/blocksign
+++ /dev/null
Binary files differ
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/bmc_config.xml b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/bmc_config.xml
index 89c3d30ca..9e7d3f82d 100644
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/bmc_config.xml
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/bmc_config.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file for Block Sign Tool -->
<blocksign>
+ <version>1</version>
<!-- Block 0 -->
<block0>
<magic>0xB6EAFD19</magic>
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfm_config.xml b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfm_config.xml
index 215fe8783..78c816191 100644
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfm_config.xml
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfm_config.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML file for Block Sign Tool -->
<blocksign>
+ <version>1</version>
<!-- Block 0 -->
<block0>
<magic>0xB6EAFD19</magic>
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image-manifest.json b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image-manifest.json
deleted file mode 100644
index 7890aa700..000000000
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image-manifest.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "image-parts": [{
- "name": "u-boot",
- "index": 0,
- "offset": "0",
- "size": "0x80000",
- "prot_mask": 31,
- "pfm": 1,
- "hash": 1,
- "compress": 1
- },
- {
- "name": "pfm",
- "index": 1,
- "offset": "0x80000",
- "size": "0x20000",
- "prot_mask": 31,
- "pfm": 1,
- "hash": 0,
- "compress": 0
- },
- {
- "name": "u-boot-env",
- "index": 2,
- "offset": "0xa0000",
- "size": "0x20000",
- "prot_mask": 29,
- "pfm": 1,
- "hash": 0,
- "compress": 0
- },
- {
- "name": "sofs",
- "index": 3,
- "offset": "0xc0000",
- "size": "0x200000",
- "prot_mask": 29,
- "pfm": 1,
- "hash": 0,
- "compress": 0
- },
- {
- "name": "rwfs",
- "index": 4,
- "offset": "0x2c0000",
- "size": "0x840000",
- "prot_mask": 29,
- "pfm": 1,
- "hash": 0,
- "compress": 0
- },
- {
- "name": "fit-image-a",
- "index": 5,
- "offset": "0xb00000",
- "size": "0x1f00000",
- "prot_mask": 31,
- "pfm": 1,
- "hash": 1,
- "compress": 1
- }
- ]
-} \ No newline at end of file
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image.py b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image.py
index e1a23c172..5cda38b79 100755
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image.py
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_image.py
@@ -14,11 +14,9 @@
# TODO: figure out if active and recovery actually have different sigs
# TODO: build hashmap from payload manifest
# TODO: figure out exact struct layout for PFR metadata
-
import os, hashlib, struct, json, sys, subprocess, mmap, io, array, binascii, copy, shutil, re
from array import array
from binascii import unhexlify
-from six import b, print_, binary_type
from hashlib import sha1, sha256, sha512
from shutil import copyfile
# Flash Map
@@ -38,18 +36,20 @@ from shutil import copyfile
# TODO: The below defines should go to manifest files.
# Keeping it here hard coded for now.
# The pages to be skipped for HASH and PBC
-# Pages: 0x80 to 0xaff - starting PFM region until fit-image
+# Pages: 0x80 to 0x9f - starting PFM region until end of pfm
# Pages: 0x2a00 to 0x7FFF - starting RC-image until end of flash
-EXCLUDE_PAGES =[[0x80, 0xaff],[0x2a00,0x7fff]]
+EXCLUDE_PAGES =[[0x80, 0x9f],[0x2a00,0x7fff]]
# SPI PFM globals
PFM_OFFSET = 0x80000
PFM_SPI = 0x1
+PFM_I2C = 0x2
SHA256 = 0x1
SHA256_SIZE = 32
PFM_DEF_SIZE = 16
PFM_SPI_SIZE_DEF = 16 # 16 bytes of SPI PFM
PFM_SPI_SIZE_HASH = 32 # 32 bytes of SPI region HASH
+PFM_I2C_SIZE = 40 # 40 bytes of i2c rules region in PFM
PAGE_SIZE = 0x1000 # 4KB size of page
@@ -62,23 +62,32 @@ def load_manifest(fname):
class pfm_spi(object):
def __init__(self, prot_mask, start_addr, end_addr, hash, hash_pres):
- self.pfm = PFM_SPI
- self.prot_mask = prot_mask
- self.hash_pres = hash_pres
+ self.spi_pfm = PFM_SPI
+ self.spi_prot_mask = prot_mask
+ self.spi_hash_pres = hash_pres
if hash_pres == 1:
self.spi_hash = hash
- self.pfm_rsvd = 0xffffffff #b'\xff'*4
- self.start_addr = start_addr
- self.end_addr = end_addr
+ self.spi_pfm_rsvd = 0xffffffff # b'\xff'*4
+ self.spi_start_addr = start_addr
+ self.spi_end_addr = end_addr
+
+class pfm_i2c(object):
+ def __init__(self, bus_id, rule_id, address, cmd_map):
+ self.i2c_pfm = PFM_I2C
+ self.i2c_pfm_rsvd = 0xffffffff # b'\xff'*4
+ self.i2c_bus_id = bus_id
+ self.i2c_rule_id = rule_id
+ self.i2c_address = address
+ self.i2c_cmd_whitelist = cmd_map
class pfr_bmc_image(object):
-# json_file, update_file
- def __init__(self, manifest, update_file, build_ver, build_num, build_hash):
+# json_file, firmware_file
+ def __init__(self, manifest, firmware_file, build_ver, build_num, build_hash):
self.manifest = load_manifest(manifest)
- self.update_file = update_file
+ self.firmware_file = firmware_file
self.build_version = build_ver
self.build_number = build_num
self.build_hash = build_hash
@@ -111,6 +120,26 @@ class pfr_bmc_image(object):
# fill in the calculated data
self.hash_and_map()
+ self.i2c_rules = []
+ for i in self.manifest['i2c-rules']:
+ # the json should have in the order- bus-id, rule-id, address, size and cmd-whitelist
+ self.i2c_rules.append((i['bus-id'], i['rule-id'], i['address'], i['cmd-whitelist']))
+ print(self.i2c_rules)
+
+ # I2C rules PFM array
+ self.pfm_i2c_rules = []
+
+ # Generate the i2c rules
+ self.build_i2c_rules()
+
+ # Generate PFM region binary - pfm.bin
+ self.build_pfm()
+ print("PFM build done")
+
+ # Generate PBC region - pbc.bin
+ self.pbc_hdr()
+ print("PBC build done")
+
def hash_compress_regions(self, p, upd):
# JSON format as below
@@ -134,41 +163,44 @@ class pfr_bmc_image(object):
# 1 page is 4KB
page = start_addr >> 12
- if hash_flag == 1:
- with open(self.update_file, "rb") as f:
- f.seek(start_addr)
- skip = False
- # HASH for the region
+ with open(self.firmware_file, "rb") as f:
+ f.seek(start_addr)
+ skip = False
+
+ if hash_flag == 1:
hash_dgst = hashlib.sha256()
- for chunk in iter(lambda: f.read(self.page_size), b''):
- chunk_len = len(chunk)
- if chunk_len != self.page_size:
- chunk = b''.join([chunk, b'\xff' * (self.page_size - chunk_len)])
-
- for p in EXCLUDE_PAGES:
- if (page >= p[0]) and (page <= p[1]):
- print("Exclude page={}".format(page))
- skip = True
- break
-
- if not skip:
- # add to the hash
+
+ for chunk in iter(lambda: f.read(self.page_size), b''):
+ chunk_len = len(chunk)
+ if chunk_len != self.page_size:
+ chunk = b''.join([chunk, b'\xff' * (self.page_size - chunk_len)])
+
+ for p in EXCLUDE_PAGES:
+ if (page >= p[0]) and (page <= p[1]):
+ #print("Exclude page={}".format(page))
+ skip = True
+ break
+
+ if not skip:
+ # add to the hash
+ if hash_flag == 1:
+ # HASH for the region
self.act_dgst.update(chunk)
hash_dgst.update(chunk)
- self.pbc_erase_bitmap[page >> 3] |= 1 << (7- (page % 8)) # Big endian bit map
- if compress == 1:
- # add to the pbc map
- if chunk != self.empty:
- print("compressed page ={}".format(page))
- upd.write(chunk)
- self.pbc_comp_bitmap[page >> 3] |= 1 << (7- (page % 8)) # Big Endian bit map
- self.pbc_comp_payload += chunk_len # compressed payload bytes
+ if compress == 1:
+ self.pbc_erase_bitmap[page >> 3] |= 1 << (7- (page % 8)) # Big endian bit map
+ # add to the pbc map
+ if chunk != self.empty:
+ #print("compressed page ={}".format(page))
+ upd.write(chunk)
+ self.pbc_comp_bitmap[page >> 3] |= 1 << (7- (page % 8)) # Big Endian bit map
+ self.pbc_comp_payload += chunk_len # compressed payload bytes
- page += 1
+ page += 1
- if (page * self.page_size) >= (size + start_addr):
- break
+ if (page * self.page_size) >= (size + start_addr):
+ break
if pfm_flag == 1:
self.pfm_bytes += PFM_SPI_SIZE_DEF
@@ -185,24 +217,43 @@ class pfr_bmc_image(object):
# append to SPI regions in PFM
self.pfm_spi_regions.append(pfm_spi(pfm_prot_mask, start_addr, (start_addr+size), hash, hash_pres))
+ def add_i2c_rules(self, i):
+ bus_id = i[0] # I2C Bus number
+ rule_id = i[1] # I2C rule number
+ addr = i[2] # I2C device address
+ cmds = i[3] # I2C white listed commands for which i2c write to be allowed
+ whitelist_map = bytearray(32)
+
+ self.pfm_bytes += PFM_I2C_SIZE # add upto PFM size
+
+ for c in cmds:
+ if c == "all":
+ for i in range(32):
+ whitelist_map[i] = 0xff
+ break
+ else:
+ idx = int(c,16) / 8 # index in the 32 bytes of white list i2c cmds
+ bit = int(c,16) % 8 # bit position to set
+ whitelist_map[idx] |= (1 << bit)
+
+ # append to I2C rules in PFM
+ self.pfm_i2c_rules.append(pfm_i2c(bus_id, rule_id, addr, whitelist_map))
+
+ def build_i2c_rules(self):
+ for i in self.i2c_rules:
+ print(i[0], i[1], i[2], i[3])
+ self.add_i2c_rules(i)
+
def hash_and_map(self):
# have copy of the update file for appending with PFR meta and compression
- copyfile(self.update_file, self.pfr_rom_file)
+ copyfile(self.firmware_file, self.pfr_rom_file)
with open("bmc_compressed.bin", "wb+") as upd:
for p in self.image_parts:
#filename, index, offset, size, protection.
print(p[0], p[1], p[2], p[3], p[4])
self.hash_compress_regions(p, upd)
- # Generate PFM region binary - pfm.bin
- self.build_pfm()
- print("PFM build done")
-
- # Generate PBC region - pbc.bin
- self.pbc_hdr()
- print("PBC build done")
-
def pbc_hdr(self):
'''
typedef struct {
@@ -244,30 +295,34 @@ class pfr_bmc_image(object):
'''
typedef struct {
uint32_t tag; /* PFM_HDR_TAG above, no terminating null */
- uint8_t sec_revision; /* SVN- security revision of associated image data */
+ uint8_t SVN; /* SVN- security revision of associated image data */
+ uint8_t bkc; /* bkc */
uint8_t pfm_ver_major; /* PFM revision */
uint8_t pfm_ver_minor;
+ uint8_t reserved0[4];
uint8_t build_num;
uint8_t build_hash[3];
- uint8_t reserved0; /* reserved */
+ uint8_t reserved1[12]; /* reserved */
uint32_t pfm_length; /* PFM size in bytes */
pfm_spi pfm_spi[2]; /* PFM SPI regions - u-boot & fit-image */
pfm_smbus pfm_smbus[4]; /* defined smbus rules for PSUs and HSBP */
} __attribute__((packed)) pfm_hdr;
'''
names = [
- 'tag', 'sec_rev', 'pfm_ver_major', 'pfm_ver_minor', 'build_num', 'build_hash1', 'build_hash2', 'build_hash3', 'resvd0', 'pfm_len',
+ 'tag', 'sec_rev', 'bkc', 'pfm_ver_major', 'pfm_ver_minor', 'resvd0', 'build_num', 'build_hash1', 'build_hash2', 'build_hash3', 'resvd1', 'pfm_len',
]
parts = {
'tag': struct.pack("<I", 0x02b3ce1d),
'sec_rev': struct.pack('<B', self.sec_rev),
+ 'bkc': struct.pack('<B', 0x01),
'pfm_ver_major': struct.pack('<B', ((int(self.build_version) >> 8) & 0xff)),
'pfm_ver_minor': struct.pack('<B', (int(self.build_version) & 0x00ff)),
+ 'resvd0': b'\xff'* 4,
'build_num': struct.pack('<B', int(self.build_number,16)),
- 'build_hash1': struct.pack('<B', int(self.build_hash) & 0xff),
- 'build_hash2': struct.pack('<B', (int(self.build_hash) >> 8) & 0xff),
- 'build_hash3': struct.pack('<B', (int(self.build_hash) >> 16) & 0xff),
- 'resvd0': b'\xff'* 1,
+ 'build_hash1': struct.pack('<B', (int(self.build_hash) & 0xff)),
+ 'build_hash2': struct.pack('<B', ((int(self.build_hash) >> 8) & 0xff)),
+ 'build_hash3': struct.pack('<B', ((int(self.build_hash) >> 16) & 0xff)),
+ 'resvd1': b'\xff'* 12,
'pfm_len': ''
}
@@ -280,32 +335,40 @@ class pfr_bmc_image(object):
with open("pfm.bin", "wb+") as f:
f.write(b''.join([parts[n] for n in names]))
for i in self.pfm_spi_regions:
- f.write(struct.pack('b', int(i.pfm)))
- f.write(struct.pack('b', int(i.prot_mask)))
- f.write(struct.pack('h', int(i.hash_pres)))
- f.write(struct.pack('<I', int(i.pfm_rsvd)))
- f.write(struct.pack('<I', int(i.start_addr)))
- f.write(struct.pack('<I', int(i.end_addr)))
-
- if i.hash_pres == 1:
+ f.write(struct.pack('<B', int(i.spi_pfm)))
+ f.write(struct.pack('<B', int(i.spi_prot_mask)))
+ f.write(struct.pack('<h', int(i.spi_hash_pres)))
+ f.write(struct.pack('<I', int(i.spi_pfm_rsvd)))
+ f.write(struct.pack('<I', int(i.spi_start_addr)))
+ f.write(struct.pack('<I', int(i.spi_end_addr)))
+
+ if i.spi_hash_pres == 1:
f.write(i.spi_hash.decode('hex'))
+ for r in self.pfm_i2c_rules:
+ f.write(struct.pack('<B', int(r.i2c_pfm)))
+ f.write(struct.pack('<I', int(r.i2c_pfm_rsvd)))
+ f.write(struct.pack('<B', int(r.i2c_bus_id)))
+ f.write(struct.pack('<B', int(r.i2c_rule_id)))
+ f.write(struct.pack('<B', int(r.i2c_address, 16)))
+ f.write(r.i2c_cmd_whitelist)
+
# write the padding bytes at the end
f.write(b'\xff' * padding_bytes)
def main():
if len(sys.argv) != 6: #< pfr_image.py manifest.json> <update.bin> <build_version> <build_number> <build_hash>
- print('usage: {} <manifest.json> <update.bin> <build_version> <build_number> <build_hash>'.format(sys.argv[0]))
+ print('usage: {} <manifest.json> <firmware.bin> <build_version> <build_number> <build_hash>'.format(sys.argv[0]))
return
json_file = sys.argv[1]
- update_file = sys.argv[2]
+ firmware_file = sys.argv[2]
build_ver = sys.argv[3]
build_num = sys.argv[4]
build_hash = sys.argv[5]
# function to generate BMC PFM, PBC header and BMC compressed image
- pfr_bmc_image(json_file, update_file, build_ver, build_num, build_hash)
+ pfr_bmc_image(json_file, firmware_file, build_ver, build_num, build_hash)
if __name__ == '__main__':
main()
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_manifest.json b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_manifest.json
new file mode 100644
index 000000000..adea41eab
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/files/pfr_manifest.json
@@ -0,0 +1,120 @@
+{
+ "image-parts": [{
+ "name": "u-boot",
+ "index": 0,
+ "offset": "0",
+ "size": "0x80000",
+ "prot_mask": 29,
+ "pfm": 1,
+ "hash": 1,
+ "compress": 1
+ },
+ {
+ "name": "pfm",
+ "index": 1,
+ "offset": "0x80000",
+ "size": "0x20000",
+ "prot_mask": 0,
+ "pfm": 1,
+ "hash": 0,
+ "compress": 0
+ },
+ {
+ "name": "u-boot-env",
+ "index": 2,
+ "offset": "0xa0000",
+ "size": "0x20000",
+ "prot_mask": 31,
+ "pfm": 1,
+ "hash": 0,
+ "compress": 1
+ },
+ {
+ "name": "sofs",
+ "index": 3,
+ "offset": "0xc0000",
+ "size": "0x200000",
+ "prot_mask": 31,
+ "pfm": 1,
+ "hash": 0,
+ "compress": 1
+ },
+ {
+ "name": "rwfs",
+ "index": 4,
+ "offset": "0x2c0000",
+ "size": "0x840000",
+ "prot_mask": 31,
+ "pfm": 1,
+ "hash": 0,
+ "compress": 1
+ },
+ {
+ "name": "fit-image-a",
+ "index": 5,
+ "offset": "0xb00000",
+ "size": "0x1f00000",
+ "prot_mask": 29,
+ "pfm": 1,
+ "hash": 1,
+ "compress": 1
+ },
+ {
+ "name": "rc-image",
+ "index": 6,
+ "offset": "0x2a00000",
+ "size": "0x2000000",
+ "prot_mask": 0,
+ "pfm": 1,
+ "hash": 0,
+ "compress": 0
+ },
+ {
+ "name": "image-stg",
+ "index": 7,
+ "offset": "0x4a00000",
+ "size": "0x3600000",
+ "prot_mask": 3,
+ "pfm": 1,
+ "hash": 0,
+ "compress": 0
+ }
+ ],
+ "i2c-rules": [{
+ "bus-id": 5,
+ "rule-id": 1,
+ "address": "0xD0",
+ "cmd-whitelist": ["0x00", "0x01", "0x02", "0x03", "0x04", "0x09", "0x0A", "0x0B", "0x0C", "0x0D", "0x0E", "0x0F",
+ "0x10", "0x13", "0x17", "0x1B", "0x1C", "0x1D", "0x02", "0x021", "0x22", "0x23", "0x25", "0x30",
+ "0x31", "0x32", "0x33", "0x035", "0x36", "0x37", "0x38", "0x39", "0x3A", "0x3B", "0x3C", "0x3D"]
+ },
+ {
+ "bus-id": 5,
+ "rule-id": 2,
+ "address": "0xD6",
+ "cmd-whitelist": ["0x00", "0x01", "0x02", "0x03", "0x04", "0x09", "0x0A", "0x0B", "0x0C", "0x0D", "0x0E", "0x0F",
+ "0x10", "0x13", "0x17", "0x1B", "0x1C", "0x1D", "0x02", "0x021", "0x22", "0x23", "0x25", "0x30",
+ "0x31", "0x32", "0x33", "0x035", "0x36", "0x37", "0x38", "0x39", "0x3A", "0x3B", "0x3C", "0x3D"]
+ },
+ {
+ "bus-id": 8,
+ "rule-id": 3,
+ "address": "0xB0",
+ "cmd-whitelist": ["0x03", "0x05", "0x06", "0x19", "0x1A", "0x30", "0x3A", "0x3B", "0x3C", "0x3D", "0x3E", "0x3F",
+ "0x79", "0x7A", "0x7B", "0x7C", "0x7D", "0x7E", "0x7F", "0x81", "0x82", "0x86", "0x87", "0x88",
+ "0x89", "0x8C", "0x8D", "0x8E", "0x8F", "0x90", "0x91", "0x92", "0x93", "0x94", "0x95", "0x96",
+ "0x97", "0x98", "0x9A", "0xA6", "0xA7", "0xD0", "0xD3", "0xD4", "0xD5", "0xD6", "0xD7", "0xD8",
+ "0xD9", "0xDC", "0xDD", "0xDE", "0xDE"]
+ },
+ {
+ "bus-id": 8,
+ "rule-id": 4,
+ "address": "0xB2",
+ "cmd-whitelist": ["0x03", "0x05", "0x06", "0x19", "0x1A", "0x30", "0x3A", "0x3B", "0x3C", "0x3D", "0x3E", "0x3F",
+ "0x79", "0x7A", "0x7B", "0x7C", "0x7D", "0x7E", "0x7F", "0x81", "0x82", "0x86", "0x87", "0x88",
+ "0x89", "0x8C", "0x8D", "0x8E", "0x8F", "0x90", "0x91", "0x92", "0x93", "0x94", "0x95", "0x96",
+ "0x97", "0x98", "0x9A", "0xA6", "0xA7", "0xD0", "0xD3", "0xD4", "0xD5", "0xD6", "0xD7", "0xD8",
+ "0xD9", "0xDC", "0xDD", "0xDE", "0xDE"]
+ }
+ ]
+}
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-blocksign-native.bb b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-blocksign-native.bb
new file mode 100644
index 000000000..12394dd91
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-blocksign-native.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Intel Blocksign tool for PFR image"
+DESCRIPTION = "Image signing tool for BMC PFR image"
+
+inherit native cmake
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${INTELBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658"
+
+DEPENDS = "openssl-native libxml2-native "
+
+SRC_URI = "git://git@github.com/Intel-BMC/blocksign;protocol=ssh"
+
+SRCREV = "60d76db038a0d85851098b13451246abb0d876ed"
+
+S = "${WORKDIR}/git/"
+
+do_install_append() {
+ install -d ${STAGING_DIR}/intel-pfr-files
+ install -m 775 ${B}/blocksign ${STAGING_DIR}/intel-pfr-files
+}
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-pfr-manager_git.bb b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-pfr-manager_git.bb
index ebebe43bb..96bfec0a8 100644
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-pfr-manager_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/intel-pfr-manager_git.bb
@@ -9,7 +9,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://git@github.com/Intel-BMC/provingground.git;protocol=ssh"
-SRCREV = "4611d8dcba0c0dc92156bbafdb50607aaff122ab"
+SRCREV = "226ca2842e0a14ad56b4ebeedfd82ac2ea7e145e"
inherit cmake systemd
SYSTEMD_SERVICE_${PN} = "xyz.openbmc_project.Intel.PFR.Manager.service"
diff --git a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/obmc-intel-pfr-image-native.bb b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/obmc-intel-pfr-image-native.bb
index ee2cc3934..307fe1829 100644
--- a/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/obmc-intel-pfr-image-native.bb
+++ b/meta-openbmc-mods/meta-common/recipes-intel/intel-pfr/obmc-intel-pfr-image-native.bb
@@ -9,11 +9,11 @@ inherit native
PFR_KEY_NAME ?= "pfr-dev-key"
PFR_SIGN_UTIL ?= "blocksign"
+DEPENDS += " intel-blocksign-native"
SRC_URI = " \
- file://pfr_image-manifest.json \
+ file://pfr_manifest.json \
file://pfr_image.py \
- file://blocksign \
file://pfm_config.xml \
file://bmc_config.xml \
file://csk_prv.pem \
@@ -26,13 +26,12 @@ do_install() {
bbplain "Copying the intel pfr image generation scripts and image signing keys"
install -d ${STAGING_DIR}/intel-pfr-files
- install -m 400 ${WORKDIR}/pfr_image-manifest.json ${STAGING_DIR}/intel-pfr-files
- install -m 775 ${WORKDIR}/blocksign ${STAGING_DIR}/intel-pfr-files
+ install -m 400 ${WORKDIR}/pfr_manifest.json ${STAGING_DIR}/intel-pfr-files
install -m 400 ${WORKDIR}/pfm_config.xml ${STAGING_DIR}/intel-pfr-files
install -m 400 ${WORKDIR}/bmc_config.xml ${STAGING_DIR}/intel-pfr-files
install -m 775 ${WORKDIR}/pfr_image.py ${STAGING_DIR}/intel-pfr-files
- install -m 400 ${WORKDIR}/csk_prv.pem ${STAGING_DIR}/intel-pfr-files/
- install -m 400 ${WORKDIR}/csk_pub.pem ${STAGING_DIR}/intel-pfr-files/
- install -m 400 ${WORKDIR}/rk_pub.pem ${STAGING_DIR}/intel-pfr-files/
- install -m 400 ${WORKDIR}/rk_prv.pem ${STAGING_DIR}/intel-pfr-files/
+ install -m 400 ${WORKDIR}/csk_prv.pem ${STAGING_DIR}/intel-pfr-files
+ install -m 400 ${WORKDIR}/csk_pub.pem ${STAGING_DIR}/intel-pfr-files
+ install -m 400 ${WORKDIR}/rk_pub.pem ${STAGING_DIR}/intel-pfr-files
+ install -m 400 ${WORKDIR}/rk_prv.pem ${STAGING_DIR}/intel-pfr-files
}