hv: search additional argument when parsing seed from ABL

Due to ABL design change, it will reword the "dev_sec_info.param_addr="
to "ABL.svnseed" in command line.

Tracked-On: #2611
Signed-off-by: Qi Yadong <yadong.qi@intel.com>
Acked-by: Zhu Bing <bing.zhu@intel.com>
This commit is contained in:
Qi Yadong 2019-02-25 02:33:23 +00:00 committed by wenlingz
parent f5504e8077
commit 3f0ff2ec43
1 changed files with 15 additions and 6 deletions

View File

@ -22,7 +22,11 @@ struct dev_sec_info {
struct abl_seed_info seed_list[ABL_SEED_LIST_MAX]; struct abl_seed_info seed_list[ABL_SEED_LIST_MAX];
}; };
static const char *dev_sec_info_arg = "dev_sec_info.param_addr="; static const char *abl_seed_arg[] = {
"ABL.svnseed=",
"dev_sec_info.param_addr=",
NULL
};
static void parse_seed_list_abl(void *param_addr) static void parse_seed_list_abl(void *param_addr)
{ {
@ -100,16 +104,21 @@ static void parse_seed_list_abl(void *param_addr)
*/ */
bool abl_seed_parse(struct acrn_vm *vm, char *cmdline, char *out_arg, uint32_t out_len) bool abl_seed_parse(struct acrn_vm *vm, char *cmdline, char *out_arg, uint32_t out_len)
{ {
char *arg, *arg_end; char *arg = NULL, *arg_end;
char *param; char *param;
void *param_addr; void *param_addr;
uint32_t len; uint32_t len = 0U, i;
bool parse_success = false; bool parse_success = false;
if (cmdline != NULL) { if (cmdline != NULL) {
len = strnlen_s(dev_sec_info_arg, MEM_1K); for (i = 0U; abl_seed_arg[i] != NULL; i++) {
arg = strstr_s((const char *)cmdline, MEM_2K, dev_sec_info_arg, len); len = strnlen_s(abl_seed_arg[i], MEM_1K);
arg = strstr_s((const char *)cmdline, MEM_2K, abl_seed_arg[i], len);
if (arg != NULL) {
break;
}
}
if (arg != NULL) { if (arg != NULL) {
param = arg + len; param = arg + len;
@ -129,7 +138,7 @@ bool abl_seed_parse(struct acrn_vm *vm, char *cmdline, char *out_arg, uint32_t o
/* Convert the param_addr to SOS GPA and copy to caller */ /* Convert the param_addr to SOS GPA and copy to caller */
if (out_arg != NULL) { if (out_arg != NULL) {
snprintf(out_arg, out_len, "%s0x%X ", snprintf(out_arg, out_len, "%s0x%X ",
dev_sec_info_arg, hva2gpa(vm, param_addr)); abl_seed_arg[i], hva2gpa(vm, param_addr));
} }
parse_success = true; parse_success = true;