On 04/24/20 19:59, Nikita Leshenko wrote:
> This causes the device to forget about the reply frame. We allocated the
> reply frame in EfiBootServicesData type memory, and code executing after
> ExitBootServices() is permitted to overwrite it.
>
> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2390
> Signed-off-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
> ---
> OvmfPkg/MptScsiDxe/MptScsi.c | 33 ++++++++++++++++++++++++++++++++-
> 1 file changed, 32 insertions(+), 1 deletion(-)
Thanks for the update, my R-b stands.
Laszlo
>
> diff --git a/OvmfPkg/MptScsiDxe/MptScsi.c b/OvmfPkg/MptScsiDxe/MptScsi.c
> index 9cb5088bfbf9..d8649cf45541 100644
> --- a/OvmfPkg/MptScsiDxe/MptScsi.c
> +++ b/OvmfPkg/MptScsiDxe/MptScsi.c
> @@ -57,6 +57,7 @@ typedef struct {
> UINT32 StallPerPollUsec;
> EFI_PCI_IO_PROTOCOL *PciIo;
> UINT64 OriginalPciAttributes;
> + EFI_EVENT ExitBoot;
> MPT_SCSI_DMA_BUFFER *Dma;
> EFI_PHYSICAL_ADDRESS DmaPhysical;
> VOID *DmaMapping;
> @@ -750,6 +751,20 @@ MptScsiResetChannel (
> return EFI_UNSUPPORTED;
> }
>
> +STATIC
> +VOID
> +EFIAPI
> +MptScsiExitBoot (
> + IN EFI_EVENT Event,
> + IN VOID *Context
> + )
> +{
> + MPT_SCSI_DEV *Dev;
> +
> + Dev = Context;
> + DEBUG ((DEBUG_VERBOSE, "%a: Context=0x%p\n", __FUNCTION__, Context));
> + MptScsiReset (Dev);
> +}
> STATIC
> EFI_STATUS
> EFIAPI
> @@ -943,6 +958,17 @@ MptScsiControllerStart (
> goto Unmap;
> }
>
> + Status = gBS->CreateEvent (
> + EVT_SIGNAL_EXIT_BOOT_SERVICES,
> + TPL_CALLBACK,
> + &MptScsiExitBoot,
> + Dev,
> + &Dev->ExitBoot
> + );
> + if (EFI_ERROR (Status)) {
> + goto UninitDev;
> + }
> +
> //
> // Host adapter channel, doesn't exist
> //
> @@ -967,11 +993,14 @@ MptScsiControllerStart (
> &Dev->PassThru
> );
> if (EFI_ERROR (Status)) {
> - goto UninitDev;
> + goto CloseExitBoot;
> }
>
> return EFI_SUCCESS;
>
> +CloseExitBoot:
> + gBS->CloseEvent (Dev->ExitBoot);
> +
> UninitDev:
> MptScsiReset (Dev);
>
> @@ -1047,6 +1076,8 @@ MptScsiControllerStop (
> return Status;
> }
>
> + gBS->CloseEvent (Dev->ExitBoot);
> +
> MptScsiReset (Dev);
>
> Dev->PciIo->Unmap (
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#58427): https://edk2.groups.io/g/devel/message/58427
Mute This Topic: https://groups.io/mt/73247274/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-