From nobody Sat Apr 20 08:25:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+61762+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+61762+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1593310613; cv=none; d=zohomail.com; s=zohoarc; b=je2ilWdIxfjzTGAFyHwkcFr1jVRqHkQOpuapjfWLFG6AOCvvbYLh47zvvrjVv/ZwonfPdCT0u576lF7WcVqpGZksog4RZcLEMNt12KIvXP1nU2zQ1RGrfyDf9zFvlkFB2jVbJCqh0+zuK6qwqGz0uBXYYrjtKHCxsO42Gg9Er14= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1593310613; h=Cc:Date:From:List-Id:List-Unsubscribe:Message-ID:Reply-To:Sender:Subject:To; bh=1Y17OW/St37Zn0ipJEp8VVlwkMpEpVyvd9f7fIMvKXo=; b=X9LgIJ1z8umAbycS8PvEfG+1nmgvxRXjDtJsgpkfk0oaIopPEeWcbvhDu+WWK0RZTtyl/m+G+7z8//JSxPstOaO7sggFSgy2l3lKesGwOm2ctTfUbcxpwrjMfm+X9NJpkoosCNY0Kktz6cRqsdplq11u9hjLYEV0bqvRl6QRi0I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+61762+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1593310613008754.2118882607292; Sat, 27 Jun 2020 19:16:53 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id mqSlYY1788612xQoZPfPGRvM; Sat, 27 Jun 2020 19:16:52 -0700 X-Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.21344.1593310611768465618 for ; Sat, 27 Jun 2020 19:16:51 -0700 IronPort-SDR: eMkmS1nkw5h2nNDm99h3mtNZ4awOBGMJLSQ853B76bK9Icsl8k2u3rJOUwbpAP3BVHXwcZm9Qq FNH5aIC8jKKg== X-IronPort-AV: E=McAfee;i="6000,8403,9665"; a="163788256" X-IronPort-AV: E=Sophos;i="5.75,289,1589266800"; d="scan'208";a="163788256" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jun 2020 19:16:51 -0700 IronPort-SDR: rt6Ajh3Yz2MRZLiUNaDc8FXj9lDrX8FSFQ7+9TzQwPa/Hlrm+bSlX+bmXJK7JpHDCuuej/jpG/ LZw/DrWVskaw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,290,1589266800"; d="scan'208";a="424456211" X-Received: from unknown (HELO shwdeOpenPSI114.ccr.corp.intel.com) ([10.239.157.145]) by orsmga004.jf.intel.com with ESMTP; 27 Jun 2020 19:16:49 -0700 From: "Dandan Bi" To: devel@edk2.groups.io Cc: Liming Gao , Eric Dong , Laszlo Ersek Subject: [edk2-devel] [patch V2] MdeModulePkg/DisplayEngine: Add Debug message to show mismatch menu info Date: Sun, 28 Jun 2020 10:16:39 +0800 Message-Id: <20200628021639.13828-1-dandan.bi@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,dandan.bi@intel.com X-Gm-Message-State: 6ypgmQ3sf2ZWyaR9JgrCz9Lhx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1593310612; bh=acE57CIAFMQTq4wsM5ih3UnNbPsR6i5lnch5wTutZVs=; h=Cc:Date:From:Reply-To:Subject:To; b=le09fHQ0rTSSSNdJWkWf7w8P5xSoa6VbtWlKQyg1o4j6e8/IpwgogelBXp/qhW69WB1 +WkdK1bSXolHe6YVnOep5ZxJ8WqZfPNjLhc3kc2xjjnkbBHY+IM7dpLVQLczHX7HirVi6 qhgpEJtkHccFCNW2FKTjEN5EXYIAmXGDCJc= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2326 Currently when meet mismatch case for one-of and ordered-list menu, just show a popup window to indicate mismatch, no more info for debugging. This patch is to add more debug message about mismatch menu info which is helpful to debug. Cc: Liming Gao Cc: Eric Dong Cc: Laszlo Ersek Signed-off-by: Dandan Bi Reviewed-by: Eric Dong --- v2: 1) Refine debug message info. 2) Use gEfiCallerBaseName.to replace hard code "DisplayEngine" 3) Handle question and option value based on value type. .../DisplayEngineDxe/ProcessOptions.c | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c b/Mde= ModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c index e7306f6d04..c02e36a63a 100644 --- a/MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c +++ b/MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c @@ -911,10 +911,120 @@ PasswordProcess ( FreePool (StringPtr); =20 return Status; } =20 +/** + Print some debug message about mismatched menu info. + + @param MenuOption The MenuOption for this Question. + +**/ +VOID +PrintMismatchMenuInfo ( + IN UI_MENU_OPTION *MenuOption +) +{ + CHAR16 *FormTitleStr; + CHAR16 *FormSetTitleStr; + CHAR16 *OneOfOptionStr; + CHAR16 *QuestionName; + LIST_ENTRY *Link; + FORM_DISPLAY_ENGINE_STATEMENT *Question; + EFI_IFR_ORDERED_LIST *OrderList; + UINT8 Index; + EFI_HII_VALUE HiiValue; + EFI_HII_VALUE *QuestionValue; + DISPLAY_QUESTION_OPTION *Option; + UINT8 *ValueArray; + UINT8 ValueType; + EFI_IFR_FORM_SET *FormsetBuffer; + UINTN FormsetBufferSize; + + Question =3D MenuOption->ThisTag; + HiiGetFormSetFromHiiHandle (gFormData->HiiHandle, &FormsetBuffer, &Forms= etBufferSize); + + FormSetTitleStr =3D GetToken (FormsetBuffer->FormSetTitle, gFormData->Hi= iHandle); + FormTitleStr =3D GetToken (gFormData->FormTitle, gFormData->HiiHandle); + + DEBUG ((DEBUG_ERROR, "\n[%a]: Mismatch Formset : Formset Guid =3D %g,= FormSet title =3D %s\n", gEfiCallerBaseName, &gFormData->FormSetGuid, For= mSetTitleStr)); + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Form : FormId =3D %d, Form t= itle =3D %s.\n", gEfiCallerBaseName, gFormData->FormId, FormTitleStr)); + + if (Question->OpCode->OpCode =3D=3D EFI_IFR_ORDERED_LIST_OP) { + QuestionName =3D GetToken (((EFI_IFR_ORDERED_LIST*)MenuOption->ThisTag= ->OpCode)->Question.Header.Prompt, gFormData->HiiHandle); + Link =3D GetFirstNode (&Question->OptionListHead); + Option =3D DISPLAY_QUESTION_OPTION_FROM_LINK (Link); + ValueType =3D Option->OptionOpCode->Type; + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Error : OrderedList value in= the array doesn't match with option value.\n", gEfiCallerBaseName)); + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OrderedList: Name =3D %s.\n", gEf= iCallerBaseName, QuestionName)); + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OrderedList: OrderedList array va= lue :\n", gEfiCallerBaseName)); + + OrderList =3D (EFI_IFR_ORDERED_LIST *) Question->OpCode; + for (Index =3D 0; Index < OrderList->MaxContainers; Index++) { + ValueArray =3D Question->CurrentValue.Buffer; + HiiValue.Value.u64 =3D GetArrayData (ValueArray, ValueType, Index); + DEBUG ((DEBUG_ERROR, " Value[%= d] =3D%ld.\n", Index, HiiValue.Value.u64)); + } + } else if (Question->OpCode->OpCode =3D=3D EFI_IFR_ONE_OF_OP) { + QuestionName =3D GetToken (((EFI_IFR_ONE_OF*)MenuOption->ThisTag->OpCo= de)->Question.Header.Prompt, gFormData->HiiHandle); + QuestionValue =3D &Question->CurrentValue; + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Error : OneOf value doesn't = match with option value.\n", gEfiCallerBaseName)); + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OneOf : Name =3D %s.\n", gEf= iCallerBaseName, QuestionName)); + switch (QuestionValue->Type) { + case EFI_IFR_TYPE_NUM_SIZE_64: + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OneOf : OneOf value =3D = %ld.\n",gEfiCallerBaseName, QuestionValue->Value.u64)); + break; + + case EFI_IFR_TYPE_NUM_SIZE_32: + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OneOf : OneOf value =3D = %d.\n",gEfiCallerBaseName, QuestionValue->Value.u32)); + break; + + case EFI_IFR_TYPE_NUM_SIZE_16: + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OneOf : OneOf value =3D = %d.\n",gEfiCallerBaseName, QuestionValue->Value.u16)); + break; + + case EFI_IFR_TYPE_NUM_SIZE_8: + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch OneOf : OneOf value =3D = %d.\n",gEfiCallerBaseName, QuestionValue->Value.u8)); + break; + + default: + ASSERT (FALSE); + break; + } + } + + Index =3D 0; + Link =3D GetFirstNode (&Question->OptionListHead); + while (!IsNull (&Question->OptionListHead, Link)) { + Option =3D DISPLAY_QUESTION_OPTION_FROM_LINK (Link); + OneOfOptionStr =3D GetToken (Option->OptionOpCode->Option, gFormData->= HiiHandle); + switch (Option->OptionOpCode->Type) { + case EFI_IFR_TYPE_NUM_SIZE_64: + DEBUG ((DEBUG_ERROR, "[%a]: Option %d : Option Value = =3D %ld, Option Name =3D %s.\n",gEfiCallerBaseName, Index, Option->OptionO= pCode->Value.u64, OneOfOptionStr)); + break; + + case EFI_IFR_TYPE_NUM_SIZE_32: + DEBUG ((DEBUG_ERROR, "[%a]: Option %d : Option Value = =3D %d, Option Name =3D %s.\n",gEfiCallerBaseName, Index, Option->OptionOp= Code->Value.u32, OneOfOptionStr)); + break; + + case EFI_IFR_TYPE_NUM_SIZE_16: + DEBUG ((DEBUG_ERROR, "[%a]: Option %d : Option Value = =3D %d, Option Name =3D %s.\n",gEfiCallerBaseName, Index, Option->OptionOp= Code->Value.u16, OneOfOptionStr)); + break; + + case EFI_IFR_TYPE_NUM_SIZE_8: + DEBUG ((DEBUG_ERROR, "[%a]: Option %d : Option Value = =3D %d, Option Name =3D %s.\n",gEfiCallerBaseName, Index, Option->OptionOp= Code->Value.u8, OneOfOptionStr)); + break; + + default: + ASSERT (FALSE); + break; + } + Link =3D GetNextNode (&Question->OptionListHead, Link); + Index++; + } +} + /** Process a Question's Option (whether selected or un-selected). =20 @param MenuOption The MenuOption for this Question. @param Selected TRUE: if Question is selected. @@ -1010,10 +1120,15 @@ ProcessOptions ( break; } =20 OneOfOption =3D ValueToOption (Question, &HiiValue); if (OneOfOption =3D=3D NULL) { + // + // Print debug msg for the mistach menu. + // + PrintMismatchMenuInfo (MenuOption); + if (SkipErrorValue) { // // Just try to get the option string, skip the value which not= has option. // continue; @@ -1082,10 +1197,15 @@ ProcessOptions ( =20 if (FindArrayData (ValueArray, ValueType, OneOfOption->OptionOpCod= e->Value.u64, NULL)) { continue; } =20 + // + // Print debug msg for the mistach menu. + // + PrintMismatchMenuInfo (MenuOption); + if (SkipErrorValue) { // // Not report error, just get the correct option string info. // Character[0] =3D LEFT_ONEOF_DELIMITER; @@ -1152,10 +1272,15 @@ ProcessOptions ( *OptionString =3D AllocateZeroPool (BufferSize); ASSERT (*OptionString); =20 OneOfOption =3D ValueToOption (Question, QuestionValue); if (OneOfOption =3D=3D NULL) { + // + // Print debug msg for the mistach menu. + // + PrintMismatchMenuInfo (MenuOption); + if (SkipErrorValue) { // // Not report error, just get the correct option string info. // Link =3D GetFirstNode (&Question->OptionListHead); --=20 2.18.0.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61762): https://edk2.groups.io/g/devel/message/61762 Mute This Topic: https://groups.io/mt/75164473/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-