mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 03:03:46 +01:00 
			
		
		
		
	OvmfPkg/VmgExitLib: Set the SwScratch valid bit for MMIO events
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3008 All fields that are set in the GHCB should have their associated bit in the GHCB ValidBitmap field set. Add support to set the bit for the scratch area field (SwScratch). Fixes: c45f678a1ea2080344e125dc55b14e4b9f98483d Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Message-Id: <45ccb63c2dadd834e2c47bf10c9e59c6766d7eb6.1604685192.git.thomas.lendacky@amd.com>
This commit is contained in:
		
							parent
							
								
									8d9698ecf8
								
							
						
					
					
						commit
						12a0c11e81
					
				| @ -664,6 +664,7 @@ MmioExit ( | |||||||
|     CopyMem (Ghcb->SharedBuffer, &InstructionData->Ext.RegData, Bytes); |     CopyMem (Ghcb->SharedBuffer, &InstructionData->Ext.RegData, Bytes); | ||||||
| 
 | 
 | ||||||
|     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; |     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; | ||||||
|  |     VmgSetOffsetValid (Ghcb, GhcbSwScratch); | ||||||
|     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_WRITE, ExitInfo1, ExitInfo2); |     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_WRITE, ExitInfo1, ExitInfo2); | ||||||
|     if (Status != 0) { |     if (Status != 0) { | ||||||
|       return Status; |       return Status; | ||||||
| @ -693,6 +694,7 @@ MmioExit ( | |||||||
|     CopyMem (Ghcb->SharedBuffer, InstructionData->Immediate, Bytes); |     CopyMem (Ghcb->SharedBuffer, InstructionData->Immediate, Bytes); | ||||||
| 
 | 
 | ||||||
|     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; |     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; | ||||||
|  |     VmgSetOffsetValid (Ghcb, GhcbSwScratch); | ||||||
|     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_WRITE, ExitInfo1, ExitInfo2); |     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_WRITE, ExitInfo1, ExitInfo2); | ||||||
|     if (Status != 0) { |     if (Status != 0) { | ||||||
|       return Status; |       return Status; | ||||||
| @ -725,6 +727,7 @@ MmioExit ( | |||||||
|     ExitInfo2 = Bytes; |     ExitInfo2 = Bytes; | ||||||
| 
 | 
 | ||||||
|     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; |     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; | ||||||
|  |     VmgSetOffsetValid (Ghcb, GhcbSwScratch); | ||||||
|     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2); |     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2); | ||||||
|     if (Status != 0) { |     if (Status != 0) { | ||||||
|       return Status; |       return Status; | ||||||
| @ -755,6 +758,7 @@ MmioExit ( | |||||||
|     ExitInfo2 = Bytes; |     ExitInfo2 = Bytes; | ||||||
| 
 | 
 | ||||||
|     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; |     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; | ||||||
|  |     VmgSetOffsetValid (Ghcb, GhcbSwScratch); | ||||||
|     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2); |     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2); | ||||||
|     if (Status != 0) { |     if (Status != 0) { | ||||||
|       return Status; |       return Status; | ||||||
| @ -780,6 +784,7 @@ MmioExit ( | |||||||
|     ExitInfo2 = Bytes; |     ExitInfo2 = Bytes; | ||||||
| 
 | 
 | ||||||
|     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; |     Ghcb->SaveArea.SwScratch = (UINT64) Ghcb->SharedBuffer; | ||||||
|  |     VmgSetOffsetValid (Ghcb, GhcbSwScratch); | ||||||
|     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2); |     Status = VmgExit (Ghcb, SVM_EXIT_MMIO_READ, ExitInfo1, ExitInfo2); | ||||||
|     if (Status != 0) { |     if (Status != 0) { | ||||||
|       return Status; |       return Status; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user