From patchwork Fri Dec 13 03:33:35 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Hu X-Patchwork-Id: 300869 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 035782C00A0 for ; Fri, 13 Dec 2013 14:33:46 +1100 (EST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1VrJVY-0005OA-Ue; Fri, 13 Dec 2013 03:33:44 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1VrJVV-0005O5-6F for fwts-devel@lists.ubuntu.com; Fri, 13 Dec 2013 03:33:41 +0000 Received: from [175.41.48.77] (helo=canonical.com) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1VrJVU-00041k-IJ; Fri, 13 Dec 2013 03:33:41 +0000 From: Ivan Hu To: fwts-devel@lists.ubuntu.com Subject: [PATCH 1/3] uefi: uefidump: add the Media Protocol subtype-5 support on media device path type for uefidump (LP: #1260147) Date: Fri, 13 Dec 2013 11:33:35 +0800 Message-Id: <1386905615-24217-1-git-send-email-ivan.hu@canonical.com> X-Mailer: git-send-email 1.7.9.5 X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: fwts-devel-bounces@lists.ubuntu.com Add the Media Protocol subtype 5 support on media device path follow the section 9.3.6.5 on UEFI spec2.4. Signed-off-by: Ivan Hu Acked-by: Colin Ian King Acked-by: Alex Hung --- src/lib/include/fwts_uefi.h | 5 +++++ src/uefi/uefidump/uefidump.c | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/lib/include/fwts_uefi.h b/src/lib/include/fwts_uefi.h index eed96f7..e59e9e1 100644 --- a/src/lib/include/fwts_uefi.h +++ b/src/lib/include/fwts_uefi.h @@ -463,6 +463,11 @@ typedef struct { typedef struct { fwts_uefi_dev_path dev_path; + fwts_uefi_guid protocol_guid; +} __attribute__((packed)) fwts_media_protocol_dev_path; + +typedef struct { + fwts_uefi_dev_path dev_path; uint16_t device_type; uint16_t status_flags; char description[0]; diff --git a/src/uefi/uefidump/uefidump.c b/src/uefi/uefidump/uefidump.c index d389551..e333603 100644 --- a/src/uefi/uefidump/uefidump.c +++ b/src/uefi/uefidump/uefidump.c @@ -466,6 +466,18 @@ static char *uefidump_build_dev_path(char *path, fwts_uefi_dev_path *dev_path, c } break; case FWTS_UEFI_PROTOCOL_DEVICE_PATH_SUBTYPE: + if (dev_path_len >= sizeof(fwts_media_protocol_dev_path)) { + fwts_media_protocol_dev_path *m = (fwts_media_protocol_dev_path *)dev_path; + path = uefidump_vprintf(path, "\\MEDIAPROTOCOL(" + "%08" PRIx32 "-%04" PRIx16 "-%04" PRIx16 "-" + "%02" PRIx8 "-%02" PRIx8 "-" + "%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 ")", + m->protocol_guid.info1, m->protocol_guid.info2, m->protocol_guid.info3, + m->protocol_guid.info4[0], m->protocol_guid.info4[1], m->protocol_guid.info4[2], + m->protocol_guid.info4[3], m->protocol_guid.info4[4], m->protocol_guid.info4[5], + m->protocol_guid.info4[6], m->protocol_guid.info4[7]); + } + break; default: path = uefidump_vprintf(path, "\\Unknown-MEDIA-DEV-PATH(0x%" PRIx8 ")", dev_path->subtype); break;