public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Tuan Phan" <tphan@ventanamicro.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: devel@edk2.groups.io, michael.d.kinney@intel.com,
	gaoliming@byosoft.com.cn,  zhiguang.liu@intel.com,
	sunilvl@ventanamicro.com, git@danielschaefer.me,
	 andrei.warkentin@intel.com
Subject: Re: [edk2-devel] [PATCH 5/7] OvmfPkg/VirtNorFlashDxe: Not add memory space if it exists
Date: Thu, 25 May 2023 07:44:06 -0700	[thread overview]
Message-ID: <CABYABGS+xXFJy77H5wUZjPyioAeDz4iDv-pb8-ezFEmPKxgW6g@mail.gmail.com> (raw)
In-Reply-To: <CAMj1kXHyes6p+Q3J4Td3CYUda0=pw=CTmNTdf+-5ed9ccv1-4w@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4192 bytes --]

On Thu, May 25, 2023 at 7:27 AM Ard Biesheuvel <ardb@kernel.org> wrote:

> On Wed, 24 May 2023 at 20:13, Tuan Phan <tphan@ventanamicro.com> wrote:
> >
> >
> >
> > On Mon, Mar 6, 2023 at 9:53 AM Ard Biesheuvel <ardb@kernel.org> wrote:
> >>
> >> On Mon, 6 Mar 2023 at 18:33, Tuan Phan <tphan@ventanamicro.com> wrote:
> >> >
> >> > The flash base address can be added to GCD before this driver run.
> >> > So only add it if it has not been done.
> >> >
> >>
> >> How do you end up in this situation?
> >>
> >> You cannot skip this registration, as it is required to get the region
> >> marked as EFI_MEMORY_RUNTIME, and without that, EFI variables will be
> >> broken when running under the OS.
> >
> >
> > Ard,
> > The patch only skips AddMemorySpace if it is already done in the early
> SEC phase for RiscV platform.
> > The EFI_MEMORY_RUNTIME always be set in the next line with
> SetMemorySpaceAttributes.
> >
>
> So how does the SEC phase create GCD regions to begin with?
>
> This really sounds like there is a problem elsewhere tbh.
>

The SEC phase just simply adds that region to the memory hob with
BuildResourceDescriptorHob.
Agree, the problem is VariableRuntimeDxe.efi accessing the region before
this VirtNorFlashDxe starts so when
MMU enabled, edk2 will hang due to page fault exception.

>
>
> >>
> >> > Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
> >> > ---
> >> >  OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c | 25
> +++++++++++++++--------
> >> >  1 file changed, 16 insertions(+), 9 deletions(-)
> >> >
> >> > diff --git a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c
> b/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c
> >> > index f9a41f6aab0f..8875824f3333 100644
> >> > --- a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c
> >> > +++ b/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c
> >> > @@ -372,10 +372,11 @@ NorFlashFvbInitialize (
> >> >    IN NOR_FLASH_INSTANCE  *Instance
> >> >    )
> >> >  {
> >> > -  EFI_STATUS     Status;
> >> > -  UINT32         FvbNumLba;
> >> > -  EFI_BOOT_MODE  BootMode;
> >> > -  UINTN          RuntimeMmioRegionSize;
> >> > +  EFI_STATUS                      Status;
> >> > +  UINT32                          FvbNumLba;
> >> > +  EFI_BOOT_MODE                   BootMode;
> >> > +  UINTN                           RuntimeMmioRegionSize;
> >> > +  EFI_GCD_MEMORY_SPACE_DESCRIPTOR Desc;
> >> >
> >> >    DEBUG ((DEBUG_BLKIO, "NorFlashFvbInitialize\n"));
> >> >    ASSERT ((Instance != NULL));
> >> > @@ -390,13 +391,19 @@ NorFlashFvbInitialize (
> >> >    //       is written as the base of the flash region (ie:
> Instance->DeviceBaseAddress)
> >> >    RuntimeMmioRegionSize = (Instance->RegionBaseAddress -
> Instance->DeviceBaseAddress) + Instance->Size;
> >> >
> >> > -  Status = gDS->AddMemorySpace (
> >> > -                  EfiGcdMemoryTypeMemoryMappedIo,
> >> > +  Status = gDS->GetMemorySpaceDescriptor (
> >> >                    Instance->DeviceBaseAddress,
> >> > -                  RuntimeMmioRegionSize,
> >> > -                  EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
> >> > +                  &Desc
> >> >                    );
> >> > -  ASSERT_EFI_ERROR (Status);
> >> > +  if (Status == EFI_NOT_FOUND) {
> >> > +    Status = gDS->AddMemorySpace (
> >> > +                    EfiGcdMemoryTypeMemoryMappedIo,
> >> > +                    Instance->DeviceBaseAddress,
> >> > +                    RuntimeMmioRegionSize,
> >> > +                    EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
> >> > +                    );
> >> > +    ASSERT_EFI_ERROR (Status);
> >> > +  }
> >> >
> >> >    Status = gDS->SetMemorySpaceAttributes (
> >> >                    Instance->DeviceBaseAddress,
> >> > --
> >> > 2.25.1
> >> >
> >> >
> >> >
> >> > ------------
> >> > Groups.io Links: You receive all messages sent to this group.
> >> > View/Reply Online (#100754):
> https://edk2.groups.io/g/devel/message/100754
> >> > Mute This Topic: https://groups.io/mt/97430554/1131722
> >> > Group Owner: devel+owner@edk2.groups.io
> >> > Unsubscribe: https://edk2.groups.io/g/devel/unsub [ardb@kernel.org]
> >> > ------------
> >> >
> >> >
> >
> > 
>

[-- Attachment #2: Type: text/html, Size: 6505 bytes --]

  reply	other threads:[~2023-05-25 14:44 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-06 17:33 [PATCH 0/7] RISC-V: Add MMU support Tuan Phan
2023-03-06 17:33 ` [PATCH 1/7] MdePkg/BaseLib: RISC-V: Support getting satp register value Tuan Phan
2023-03-06 17:33 ` [PATCH 2/7] MdePkg/Register: RISC-V: Add satp mode bits shift definition Tuan Phan
2023-03-06 17:33 ` [PATCH 3/7] UefiCpuPkg: RISC-V: Support MMU with SV39/48/57 mode Tuan Phan
2023-03-06 17:33 ` [PATCH 4/7] OvmfPkg/RiscVVirt: VirtNorFlashPlatformLib: Fix wrong flash size Tuan Phan
2023-03-06 17:33 ` [PATCH 5/7] OvmfPkg/VirtNorFlashDxe: Not add memory space if it exists Tuan Phan
2023-03-06 17:53   ` [edk2-devel] " Ard Biesheuvel
2023-05-24 18:13     ` Tuan Phan
2023-05-25 14:27       ` Ard Biesheuvel
2023-05-25 14:44         ` Tuan Phan [this message]
2023-03-06 17:33 ` [PATCH 6/7] OvmfPkg/RiscVVirt: SEC: Add IO memory resource hob for platform devices Tuan Phan
2023-03-06 17:33 ` [PATCH 7/7] OvmfPkg/RiscVVirt: Enable MMU with SV39 mode Tuan Phan
2023-03-09  0:46   ` Andrei Warkentin
2023-03-09 19:19 ` [PATCH 0/7] RISC-V: Add MMU support Tuan Phan
2023-03-09 21:34   ` Andrei Warkentin
2023-03-10 22:20     ` Tuan Phan

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=CABYABGS+xXFJy77H5wUZjPyioAeDz4iDv-pb8-ezFEmPKxgW6g@mail.gmail.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