self.assertEqual(X86_START16_DATA, data[:len(X86_START16_DATA)])
def _RunMicrocodeTest(self, dts_fname, nodtb_data):
+ """Handle running a test for insertion of microcode
+
+ Args:
+ dts_fname: Name of test .dts file
+ nodtb_data: Data that we expect in the first section
+
+ Returns:
+ Tuple:
+ Contents of first region (U-Boot or SPL)
+ Position and size components of microcode pointer, as inserted
+ in the above (two 4-byte words)
+ """
data = self._DoReadFile(dts_fname, True)
# Now check the device tree has no microcode
- second = data[len(nodtb_data):]
+ dtb_with_ucode = data[len(nodtb_data):]
+ fdt_len = self.GetFdtLen(dtb_with_ucode)
+ ucode_content = dtb_with_ucode[fdt_len:]
+ ucode_pos = len(nodtb_data) + fdt_len
fname = tools.GetOutputFilename('test.dtb')
with open(fname, 'wb') as fd:
- fd.write(second)
+ fd.write(dtb_with_ucode)
dtb = fdt.FdtScan(fname)
ucode = dtb.GetNode('/microcode')
self.assertTrue(ucode)
for node in ucode.subnodes:
self.assertFalse(node.props.get('data'))
- fdt_len = self.GetFdtLen(second)
- third = second[fdt_len:]
-
# Check that the microcode appears immediately after the Fdt
# This matches the concatenation of the data properties in
# the /microcode/update@xxx nodes in 34_x86_ucode.dts.
ucode_data = struct.pack('>4L', 0x12345678, 0x12345679, 0xabcd0000,
0x78235609)
- self.assertEqual(ucode_data, third[:len(ucode_data)])
- ucode_pos = len(nodtb_data) + fdt_len
+ self.assertEqual(ucode_data, ucode_content[:len(ucode_data)])
# Check that the microcode pointer was inserted. It should match the
# expected position and size