From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (NAM04-BN8-obe.outbound.protection.outlook.com [40.107.100.88]) by mx.groups.io with SMTP id smtpd.web11.49046.1689017022695589507 for ; Mon, 10 Jul 2023 12:23:43 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@amd.com header.s=selector1 header.b=OlnHiofB; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: amd.com, ip: 40.107.100.88, mailfrom: brit.chesley@amd.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HXKtcrWDZBHi5uFkx/Ff7Ws2Ang0TDEKESj8ADZ/OL3JGxhzFIN+uapVBHdh5+wa+RRA98YKNb0GZhEVNdBtEeF0uyDqJiibigf7MVSciUrry2JAozL0sMFMs3z1RyeTuCG/2tyY2CEd9vjTOKCVcdYlTnxx2P08YlJCbI5CZe3HASVrouB5tC6U6i9zuKCnE9Z2EPl0ZvjWQsLQQRfEDBv7zWdEfI4fO7HLggE7VZ2Wb8NecPxBM6sdcoQVzH7Xnlqcmvz+iTS9/8/gvifSuW5+ap6P1eSjlRmrhVJ6pMvtsNvlomkBXv5qv2fe2CTMGhto4Yq/1rdAjFgqI5cmiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=j9ZB+YNSLArc66Nvsf0WWhY1+SLBssxBsaQP4q6F0Q8=; b=CDbhuBYy3snU/LCDOPPxQid8lvelY8dHlClAdN1/r8nJV9YEaCCGCAHnYa8QbtXi1XWAGgb2RY2yoLgqCH8f0trxCynqtVRO621FwwHSF3bgzfqz/MpeXlvUNTG1KQwpz4PDyDPMfXSNF0bjafAo+3sXIVpZGVLMMOTnlxzayouJq3J/ja8WJ8kSCbIkKfIAusWcwnbfbhzCVXeepoEnG1cCNMclVIzudcSi91MDO/MbGtZPoi+KsbxGrOzphhkI9SnoopKVNvaaZA+aygnksOxFPYtpIyuIs5cmYRJ8UnvwtWFtluYBjSz7pYC/ZuGqDu+zlx6dfRFfZyyMxzXGqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j9ZB+YNSLArc66Nvsf0WWhY1+SLBssxBsaQP4q6F0Q8=; b=OlnHiofBaEQQ+cuIfLEz0udLOHwMv2kXnSIM+b3hXqUqCLsizuyFblGqdNwcMXtHibmYk6Q6PHNxlOMBZ8DLf51fUflo1b468MR7XaJ+JWMSoQwbci1T9dEwPdXKOmv8ipBTvpKHucgVtvDcZZ7zSeO4o/dZt9eKSBLMDJPbVs4= Received: from MW4PR04CA0074.namprd04.prod.outlook.com (2603:10b6:303:6b::19) by SA1PR12MB5658.namprd12.prod.outlook.com (2603:10b6:806:235::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Mon, 10 Jul 2023 19:23:39 +0000 Received: from CO1NAM11FT084.eop-nam11.prod.protection.outlook.com (2603:10b6:303:6b:cafe::5a) by MW4PR04CA0074.outlook.office365.com (2603:10b6:303:6b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6565.31 via Frontend Transport; Mon, 10 Jul 2023 19:23:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CO1NAM11FT084.mail.protection.outlook.com (10.13.174.194) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6588.19 via Frontend Transport; Mon, 10 Jul 2023 19:23:38 +0000 Received: from aus-g8-bchesley.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 10 Jul 2023 14:23:37 -0500 From: brit.chesley@amd.com To: CC: Abner Chang , Isaac Oram , Abdul Lateef Attar , Nickle Wang Subject: [edk2-platforms][PATCH v1 1/1] ManageabilityPkg: Ipmi Get/Set Boot Options Date: Mon, 10 Jul 2023 14:23:23 -0500 Message-ID: <20230710192323.32-1-Brit.Chesley@amd.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Return-Path: Brit.Chesley@amd.com X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT084:EE_|SA1PR12MB5658:EE_ X-MS-Office365-Filtering-Correlation-Id: 87a83144-cd1c-43ef-99f9-08db817b29f3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7O/r3fLJAZ/j0KssSFsaSJlimKMiSnrR9nopXwp8WstqsD42UXAKwl157sCAQUbcQLe79ugejngi0Fv+KMlAjReUvxw3GZthnOuw3G7lFnNJbMqPe5La1p6b8oRIcYHWBi3JFkIAavNyAnzfAyY07AIOc5Ba2nbz83+iZOvHIzL0nyemG9VRwQb1xSImhQELQ/uNqHDHtLJZLlofdFLO+E5ou+5HC+7NhQ0qkKJpU6/z3RlbN4CWpvkPuoCyVFY8fni7bGDCLp25IkySmoAx1AdWl4KT4QL9xeupeOxaNzHn7CWRRxA2od2b6+O0ZQCSTCwg82BRSFrskK0A+WH4EtpcXaMk81/lYANYqAX620FleLsfBUeZsCs5aDjafvX4adXUwu7BwcS35b/vIpNI3C26d7Mg3n4AeBYgpwhOBDyJN2hy7e4PGcvOB8ctnOoal5nrXhqt8N7BlLX4iVPqokp90R3zsmkdx7CwBUtiAV0ld7Sa6h7SCYTH10ZHaUDQRxoQFUkOCPs+xdnHkXCriaTjQCNkofZhPlsPftCO93xFjFate7n4CoUU5FGEUpbQ4HWulG4ITf+E04sYBVOc6wlgUWfoeLZitRVdoK2DJeWCmYJgA0J/jqoypWRsL3M5wJlzBy3TN3FwlLW9G8cXou3IbSfevlw+DtMrH/cLqwhmmYQUUzj5eyBzGquTaxFJIUI5vMKoDR/MX6kYUwrp/RpqVPDuIivp/dgx647hs78jcBrKZfkIdiCObAF9Yarrt003EdP+cxWe95XdwCVDRA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230028)(4636009)(346002)(39860400002)(376002)(396003)(136003)(451199021)(40470700004)(46966006)(36840700001)(5660300002)(478600001)(6666004)(82740400003)(1076003)(36860700001)(16526019)(2616005)(26005)(186003)(54906003)(81166007)(70586007)(426003)(86362001)(356005)(83380400001)(336012)(6916009)(70206006)(7696005)(47076005)(316002)(4326008)(8676002)(40460700003)(41300700001)(2906002)(2876002)(40480700001)(8936002)(36756003)(82310400005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2023 19:23:38.6285 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 87a83144-cd1c-43ef-99f9-08db817b29f3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT084.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB5658 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain From: Brit Chesley BZ #: 4455. Support parameter selectors for IPMI Get/Set boot options. The size of the response data is now dependent on the parameter selector, rather than being fixed. Cc: Abner Chang Cc: Isaac Oram Cc: Abdul Lateef Attar Cc: Nickle Wang Signed-off-by: Brit Chesley --- .../IpmiCommandLibNetFnChassis.c | 124 ++++++++++++++---- 1 file changed, 102 insertions(+), 22 deletions(-) diff --git a/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLi= bNetFnChassis.c b/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiComm= andLibNetFnChassis.c index 0c40ad20b98a..01682f55b36d 100644 --- a/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLibNetFnC= hassis.c +++ b/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLibNetFnC= hassis.c @@ -152,17 +152,58 @@ IpmiSetSystemBootOptions ( ) { EFI_STATUS Status; - UINT32 DataSize; - - DataSize =3D sizeof (*BootOptionsResponse); - Status =3D IpmiSubmitCommand ( - IPMI_NETFN_CHASSIS, - IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS, - (VOID *)BootOptionsRequest, - sizeof (*BootOptionsRequest), - (VOID *)BootOptionsResponse, - &DataSize - ); + UINT32 RequestDataSize; + UINT32 ResponseDataSize; + + ResponseDataSize =3D sizeof (*BootOptionsResponse); + RequestDataSize =3D sizeof (*BootOptionsRequest); + + switch (BootOptionsRequest->ParameterValid.Bits.ParameterSelector) { + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECTOR: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6)= ; + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX: + RequestDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7)= ; + break; + + default: + return EFI_INVALID_PARAMETER; + break; + } + + Status =3D IpmiSubmitCommand ( + IPMI_NETFN_CHASSIS, + IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS, + (VOID *)BootOptionsRequest, + RequestDataSize, + (VOID *)BootOptionsResponse, + &ResponseDataSize + ); return Status; } =20 @@ -184,16 +225,55 @@ IpmiGetSystemBootOptions ( ) { EFI_STATUS Status; - UINT32 DataSize; - - DataSize =3D sizeof (*BootOptionsResponse); - Status =3D IpmiSubmitCommand ( - IPMI_NETFN_CHASSIS, - IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS, - (VOID *)BootOptionsRequest, - sizeof (*BootOptionsRequest), - (VOID *)BootOptionsResponse, - &DataSize - ); + UINT32 ResponseDataSize; + + ResponseDataSize =3D sizeof (*BootOptionsResponse); + + switch (BootOptionsRequest->ParameterSelector.Bits.ParameterSelector) { + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECTOR: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6= ); + break; + + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX: + ResponseDataSize +=3D sizeof (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7= ); + break; + + default: + return EFI_INVALID_PARAMETER; + break; + } + + Status =3D IpmiSubmitCommand ( + IPMI_NETFN_CHASSIS, + IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS, + (VOID *)BootOptionsRequest, + sizeof (*BootOptionsRequest), + (VOID *)BootOptionsResponse, + &ResponseDataSize + ); return Status; } --=20 2.36.1