cpu/intel/microcode: Add helper functions to get microcode info

Add 4 helper functions to get microcode info.
* get_current_microcode_rev
	return the the version of the currently running microcode.
* get_microcode_rev
	extract microcode revision from the given patch.
* get_microcode_size
	extract microcode size from the given patch.
* get_microcode_checksum
	extract checksum from the given patch.

The simpler thing would be to just move the struct microcode
to microcode.h so that the structure members can be dereferenced.
To encapsulate the structure details added the helper functions.

This information will be used in future to compare microcodes for update.

Change-Id: I67a08ba40b393874d8cc17363fefe21e2ea904f3
Signed-off-by: Rizwan Qureshi <rizwan.qureshi@intel.com>
Reviewed-on: https://review.coreboot.org/27365
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Rizwan Qureshi 2018-07-02 21:12:40 +05:30 committed by Patrick Georgi
parent 2276d4f4a8
commit 0d3915714c
2 changed files with 29 additions and 0 deletions

View File

@ -113,6 +113,26 @@ void intel_microcode_load_unlocked(const void *microcode_patch)
#endif #endif
} }
uint32_t get_current_microcode_rev(void)
{
return read_microcode_rev();
}
uint32_t get_microcode_rev(const void *microcode)
{
return ((struct microcode *)microcode)->rev;
}
uint32_t get_microcode_size(const void *microcode)
{
return ((struct microcode *)microcode)->total_size;
}
uint32_t get_microcode_checksum(const void *microcode)
{
return ((struct microcode *)microcode)->cksum;
}
const void *intel_microcode_find(void) const void *intel_microcode_find(void)
{ {
const struct microcode *ucode_updates; const struct microcode *ucode_updates;

View File

@ -31,4 +31,13 @@ void intel_microcode_load_unlocked(const void *microcode_patch);
* required, will skip microcode update if true. */ * required, will skip microcode update if true. */
int soc_skip_ucode_update(u32 currrent_patch_id, u32 new_patch_id); int soc_skip_ucode_update(u32 currrent_patch_id, u32 new_patch_id);
/* return the the version of the currently running microcode */
uint32_t get_current_microcode_rev(void);
/* extract microcode revision from the given patch */
uint32_t get_microcode_rev(const void *microcode);
/* extract microcode size from the given patch */
uint32_t get_microcode_size(const void *microcode);
/* extract checksum from the given patch */
uint32_t get_microcode_checksum(const void *microcode);
#endif #endif