public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Star Zeng <star.zeng@intel.com>
To: edk2-devel@lists.01.org
Cc: Star Zeng <star.zeng@intel.com>,
	Jian J Wang <jian.j.wang@intel.com>, Hao Wu <hao.a.wu@intel.com>
Subject: [PATCH V3 01/17] MdeModulePkg Variable: Add some missing changes for 9b18845
Date: Tue, 15 Jan 2019 18:29:23 +0800	[thread overview]
Message-ID: <1547548179-42552-2-git-send-email-star.zeng@intel.com> (raw)
In-Reply-To: <1547548179-42552-1-git-send-email-star.zeng@intel.com>

To improve performance 9b18845a4b4cd1d2cf004cbc1cadf8a93ccb37ea
changed the code which read from physical MMIO address to read
from memory cache, but it missed some places that could be updated
the same away for performance optimization.

The patch updates these places as supplementary.

I found them when updating code for
https://bugzilla.tianocore.org/show_bug.cgi?id=1323
Merge EmuVariable and Real variable driver.

Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c    | 12 +++++-------
 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c |  6 +++---
 2 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
index 443cf07144a1..99d487adac9e 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
@@ -16,7 +16,7 @@
   VariableServiceSetVariable() should also check authenticate data to avoid buffer overflow,
   integer overflow. It should also check attribute to avoid authentication bypass.
 
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
 (C) Copyright 2015-2018 Hewlett Packard Enterprise Development LP<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
@@ -262,13 +262,12 @@ UpdateVariableStore (
   UINT8                       *CurrBuffer;
   EFI_LBA                     LbaNumber;
   UINTN                       Size;
-  EFI_FIRMWARE_VOLUME_HEADER  *FwVolHeader;
   VARIABLE_STORE_HEADER       *VolatileBase;
   EFI_PHYSICAL_ADDRESS        FvVolHdr;
   EFI_PHYSICAL_ADDRESS        DataPtr;
   EFI_STATUS                  Status;
 
-  FwVolHeader = NULL;
+  FvVolHdr    = 0;
   DataPtr     = DataPtrIndex;
 
   //
@@ -281,7 +280,6 @@ UpdateVariableStore (
     Status = Fvb->GetPhysicalAddress(Fvb, &FvVolHdr);
     ASSERT_EFI_ERROR (Status);
 
-    FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) ((UINTN) FvVolHdr);
     //
     // Data Pointer should point to the actual Address where data is to be
     // written.
@@ -290,7 +288,7 @@ UpdateVariableStore (
       DataPtr += mVariableModuleGlobal->VariableGlobal.NonVolatileVariableBase;
     }
 
-    if ((DataPtr + DataSize) > ((EFI_PHYSICAL_ADDRESS) (UINTN) ((UINT8 *) FwVolHeader + FwVolHeader->FvLength))) {
+    if ((DataPtr + DataSize) > (FvVolHdr + mNvFvHeaderCache->FvLength)) {
       return EFI_OUT_OF_RESOURCES;
     }
   } else {
@@ -317,7 +315,7 @@ UpdateVariableStore (
   //
   // If we are here we are dealing with Non-Volatile Variables.
   //
-  LinearOffset  = (UINTN) FwVolHeader;
+  LinearOffset  = (UINTN) FvVolHdr;
   CurrWritePtr  = (UINTN) DataPtr;
   CurrWriteSize = DataSize;
   CurrBuffer    = Buffer;
@@ -2739,7 +2737,7 @@ UpdateVariable (
       }
     }
 
-    State = Variable->CurrPtr->State;
+    State = CacheVariable->CurrPtr->State;
     State &= VAR_DELETED;
 
     Status = UpdateVariableStore (
diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
index 23186176be75..f7185df3a7eb 100644
--- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
+++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c
@@ -3,7 +3,7 @@
   and volatile storage space and install variable architecture protocol.
 
 Copyright (C) 2013, Red Hat, Inc.
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
 (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
@@ -402,8 +402,8 @@ FtwNotificationEvent (
   //
   // Mark the variable storage region of the FLASH as RUNTIME.
   //
-  VariableStoreBase   = NvStorageVariableBase + (((EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)(NvStorageVariableBase))->HeaderLength);
-  VariableStoreLength = ((VARIABLE_STORE_HEADER *)(UINTN)VariableStoreBase)->Size;
+  VariableStoreBase   = NvStorageVariableBase + mNvFvHeaderCache->HeaderLength;
+  VariableStoreLength = mNvVariableCache->Size;
   BaseAddress = VariableStoreBase & (~EFI_PAGE_MASK);
   Length      = VariableStoreLength + (VariableStoreBase - BaseAddress);
   Length      = (Length + EFI_PAGE_SIZE - 1) & (~EFI_PAGE_MASK);
-- 
2.7.0.windows.1



  reply	other threads:[~2019-01-15 10:29 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-15 10:29 [PATCH V3 00/17] Merge EmuVariable and Real variable driver Star Zeng
2019-01-15 10:29 ` Star Zeng [this message]
2019-01-15 10:29 ` [PATCH V3 02/17] MdeModulePkg Variable: Abstract InitRealNonVolatileVariableStore Star Zeng
2019-01-15 10:29 ` [PATCH V3 03/17] MdeModulePkg Variable: Move "extern XXX" to Variable.h Star Zeng
2019-01-16  7:28   ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 04/17] MdeModulePkg Variable: Not get NV PCD in VariableWriteServiceInitialize Star Zeng
2019-01-16  7:28   ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 05/17] MdeModulePkg Variable: Abstract VariableWriteServiceInitializeDxe/Smm Star Zeng
2019-01-15 10:29 ` [PATCH V3 06/17] MdeModulePkg Variable: Remove CacheOffset in UpdateVariable() Star Zeng
2019-01-15 10:29 ` [PATCH V3 07/17] MdeModulePkg Variable: type case VolatileBase to UINTN directly Star Zeng
2019-01-15 10:29 ` [PATCH V3 08/17] MdeModulePkg: Add PcdEmuVariableNvModeEnable in dec Star Zeng
2019-01-15 10:29 ` [PATCH V3 09/17] MdeModulePkg: Refine description a little for PcdEmuVariableNvStoreReserved Star Zeng
2019-01-16  7:28   ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 10/17] MdeModulePkg Variable: Add emulated variable NV mode support Star Zeng
2019-01-16  7:28   ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 11/17] MdeModulePkg VariablePei: Don't check BOOT_IN_RECOVERY_MODE Star Zeng
2019-01-16  7:28   ` Wu, Hao A
2019-01-15 10:29 ` [PATCH V3 12/17] ArmVirtXen: Use merged variable driver for emulated NV mode Star Zeng
2019-01-16 12:58   ` Ard Biesheuvel
2019-01-15 10:29 ` [PATCH V3 13/17] ArmVirtXen: Link VarCheckUefiLib NULL class library instance Star Zeng
2019-01-16 12:58   ` Ard Biesheuvel
2019-01-15 10:29 ` [PATCH V3 14/17] BeagleBoardPkg: Use merged variable driver for emulated NV mode Star Zeng
2019-01-15 11:35   ` Leif Lindholm
2019-01-15 10:29 ` [PATCH V3 15/17] QuarkMin: " Star Zeng
2019-01-16 17:46   ` Kinney, Michael D
2019-01-16 17:55   ` Steele, Kelly
2019-01-15 10:29 ` [PATCH V3 16/17] CorebootPayloadPkg: " Star Zeng
2019-01-16  5:22   ` You, Benjamin
2019-01-15 10:29 ` [PATCH V3 17/17] MdeModulePkg: Remove EmuVariableRuntimeDxe Star Zeng
2019-01-16  7:29   ` Wu, Hao A
2019-01-16  3:01 ` [PATCH V3 00/17] Merge EmuVariable and Real variable driver Wang, Jian J
2019-01-16  7:40 ` Wu, Hao A

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1547548179-42552-2-git-send-email-star.zeng@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox