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.leshche...@oracle.com> > Reviewed-by: Laszlo Ersek <ler...@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-