From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:4864:20::542; helo=mail-ed1-x542.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0D1A12119FF5E for ; Thu, 3 Jan 2019 10:28:50 -0800 (PST) Received: by mail-ed1-x542.google.com with SMTP id d39so29769552edb.12 for ; Thu, 03 Jan 2019 10:28:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=CubxXDvEJc6rp4nHxHA+4wRQW0hwe7y565WkdgXTCJ0=; b=ATU3uCHiRwLBuwKfrrJtEh57Jy/wFH0+uTZVGIdBeb3FmaEk5Cd37XyKXzktNn6ziA BcbZv2uEObJxIgTKG8cVCDJ0jAepo4K/nBhAEd0zxcGWSqJG0ez2DuDkI1ZU5ggjFt8I kNuNJGajY1I8l5K49Z56P9ulrnvU9s5h8OBeY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=CubxXDvEJc6rp4nHxHA+4wRQW0hwe7y565WkdgXTCJ0=; b=T5qTjE1fnXwpDIENzB0tt2JiYraCYIBKUz2RkuyB5rcJspRANMZHWyEvVG+UCGHUYl rl6G/ruUdyzdboY6ZELkZSk/G4dGd51QpO7o588nabv1CTSO33f8HABD5GK8Y/67SuAg EbrLt04wah3cF4GFW+ljQrx3OmANyWvvMHUrQ1VJOrkmEsHeYDwz1Gax5QSWPimMa3Bq HhYlcWxLFR/gQh12/FJpwfj4XBjhhduEPExOb2xy8dbvJaOWf0zpbKn6vuJju+JD4JO3 rLnAxU79pVexaNLkkB+R5ueVG+tutxKXbT+xJ60ZLtaXJ44E3g0vGg9wbXeAQ/mGq/3t geBg== X-Gm-Message-State: AA+aEWZYbrjNiWgIYbXfI5WGLjFVQOFE0AbHxcO630RbWEXDWS8p1bkA ZWxYm5VvmtIUxPmupjwDyYaqEOSJcRUEBw== X-Google-Smtp-Source: AFSGD/XMtNXWCtWl8gmNGjIB0Ko11McU7/FBc+g5GZ9azQG8jKcleAZVvKQ/nrlx2pefeTc1p6L+1A== X-Received: by 2002:a50:9977:: with SMTP id l52mr41453673edb.277.1546540127497; Thu, 03 Jan 2019 10:28:47 -0800 (PST) Received: from dogfood.home ([2a01:cb1d:112:6f00:704e:c241:dc88:597d]) by smtp.gmail.com with ESMTPSA id a11sm25707206edc.28.2019.01.03.10.28.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 03 Jan 2019 10:28:46 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Cc: Ard Biesheuvel , Laszlo Ersek , Leif Lindholm , Michael D Kinney , Liming Gao , Jian J Wang , Hao Wu , Jagadeesh Ujja , Achin Gupta , Thomas Panakamattam Abraham , Sami Mujawar Date: Thu, 3 Jan 2019 19:28:18 +0100 Message-Id: <20190103182825.32231-1-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.17.1 Subject: [PATCH 0/6] implement standalone MM versions of the variable runtime drivers X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jan 2019 18:28:51 -0000 This series proposed an alternative approach to the series sent out by Jagadeesh [0]. In particular, it gets rid of the InMm() calls and the special PCD, as well as some other if() conditionals. The primary difference is that this series defines and implements MmServicesTableLib in such a way that the traditional SMM drivers can use it as well. This is appropriate, considering that the PI spec has rebranded traditional SMM as one implementation of the generic MM framework. Patch #1 is based on Jagadeesh's patch, and introduces the MmServicesTableLib library class, but for all SMM flavours, not only for standalone MM. Patch #2 implements MmServicesTableLib for traditional SMM implementations. Patch #3 refactors FaultTolerantWriteDxe so that the parts of the SMM driver that invoke boot services are separated from the core SMM pieces. Patch #4 implements FaultTolerantWriteSmm for the standalone MM environment. Patches #5 and #6 do the same, respectively, for the variable runtime driver. This approach minimizes the delta, and thus the maintenance burden, between the traditional SMM and standalone MM drivers, while not resorting to runtime checks or other conditionals in the code to implement logic that should be decided at build time. Note that this series only covers part of the work contributed by Jagadeesh. This series focuses on the MdePkg and MdeModulePkg changes that affect shared code. Cc: Laszlo Ersek Cc: Leif Lindholm Cc: Michael D Kinney Cc: Liming Gao Cc: Jian J Wang Cc: Hao Wu Cc: Jagadeesh Ujja Cc: Achin Gupta Cc: Thomas Panakamattam Abraham Cc: Sami Mujawar Ard Biesheuvel (5): MdePkg: implement MmServicesTableLib based on traditional SMM MdeModulePkg/FaultTolerantWriteDxe: factor out boot service accesses MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version MdeModulePkg/VariableRuntimeDxe: factor out boot service accesses MdeModulePkg/VariableRuntimeDxe: implement standalone MM version Jagadeesh Ujja (1): MdePkg/Include: add MmServicesTableLib header file MdeModulePkg/MdeModulePkg.dsc | 1 + .../FaultTolerantWrite.h | 22 ++- .../FaultTolerantWriteDxe.c | 31 ++++ .../FaultTolerantWriteSmm.c | 54 +++---- .../FaultTolerantWriteSmm.inf | 5 +- .../FaultTolerantWriteSmmCommon.h | 31 ++++ .../FaultTolerantWriteSmmDxe.c | 1 + .../FaultTolerantWriteStandaloneMm.c | 70 +++++++++ .../FaultTolerantWriteStandaloneMm.inf | 90 ++++++++++++ .../FaultTolerantWriteTraditionalMm.c | 94 ++++++++++++ .../UpdateWorkingBlock.c | 10 +- .../Variable/RuntimeDxe/TcgMorLockSmm.c | 18 +-- .../Universal/Variable/RuntimeDxe/Variable.h | 50 +++++++ .../Variable/RuntimeDxe/VariableSmm.c | 59 +++----- .../Variable/RuntimeDxe/VariableSmm.inf | 5 +- .../RuntimeDxe/VariableStandaloneMm.c | 69 +++++++++ .../RuntimeDxe/VariableStandaloneMm.inf | 135 ++++++++++++++++++ .../RuntimeDxe/VariableTraditionalMm.c | 114 +++++++++++++++ MdePkg/Include/Library/MmServicesTableLib.h | 25 ++++ .../MmServicesTableLib/MmServicesTableLib.c | 63 ++++++++ .../MmServicesTableLib/MmServicesTableLib.inf | 45 ++++++ .../MmServicesTableLib/MmServicesTableLib.uni | 22 +++ MdePkg/MdePkg.dec | 4 + MdePkg/MdePkg.dsc | 1 + 24 files changed, 916 insertions(+), 103 deletions(-) create mode 100644 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.c create mode 100644 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf create mode 100644 MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteTraditionalMm.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableTraditionalMm.c create mode 100644 MdePkg/Include/Library/MmServicesTableLib.h create mode 100644 MdePkg/Library/MmServicesTableLib/MmServicesTableLib.c create mode 100644 MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf create mode 100644 MdePkg/Library/MmServicesTableLib/MmServicesTableLib.uni -- 2.17.1