mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 19:23:54 +01:00 
			
		
		
		
	OvmfPkg: introduce virtio-scsi driver
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> [jordan.l.justen@intel.com: fix build for VS2012] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13867 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		
							parent
							
								
									c8c2e4d613
								
							
						
					
					
						commit
						37078a63b1
					
				
							
								
								
									
										100
									
								
								OvmfPkg/Include/IndustryStandard/VirtioScsi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								OvmfPkg/Include/IndustryStandard/VirtioScsi.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,100 @@ | ||||
| /** @file
 | ||||
| 
 | ||||
|   Virtio SCSI Host Device specific type and macro definitions corresponding to | ||||
|   the virtio-0.9.5 specification. | ||||
| 
 | ||||
|   Copyright (C) 2012, Red Hat, Inc. | ||||
| 
 | ||||
|   This program and the accompanying materials are licensed and made available | ||||
|   under the terms and conditions of the BSD License which accompanies this | ||||
|   distribution. The full text of the license may be found at | ||||
|   http://opensource.org/licenses/bsd-license.php
 | ||||
| 
 | ||||
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT | ||||
|   WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| 
 | ||||
| **/ | ||||
| 
 | ||||
| #ifndef _VIRTIO_SCSI_H_ | ||||
| #define _VIRTIO_SCSI_H_ | ||||
| 
 | ||||
| #include <IndustryStandard/Virtio.h> | ||||
| 
 | ||||
| 
 | ||||
| //
 | ||||
| // virtio-0.9.5, Appendix I: SCSI Host Device
 | ||||
| //
 | ||||
| #pragma pack(1) | ||||
| typedef struct { | ||||
|   VIRTIO_HDR Generic; | ||||
|   UINT32     VhdrNumQueues; | ||||
|   UINT32     VhdrSegMax; | ||||
|   UINT32     VhdrMaxSectors; | ||||
|   UINT32     VhdrCmdPerLun; | ||||
|   UINT32     VhdrEventInfoSize; | ||||
|   UINT32     VhdrSenseSize; | ||||
|   UINT32     VhdrCdbSize; | ||||
|   UINT16     VhdrMaxChannel; | ||||
|   UINT16     VhdrMaxTarget; | ||||
|   UINT32     VhdrMaxLun; | ||||
| } VSCSI_HDR; | ||||
| #pragma pack() | ||||
| 
 | ||||
| #define OFFSET_OF_VSCSI(Field) OFFSET_OF (VSCSI_HDR, Field) | ||||
| #define SIZE_OF_VSCSI(Field)   (sizeof ((VSCSI_HDR *) 0)->Field) | ||||
| 
 | ||||
| #define VIRTIO_SCSI_F_INOUT   BIT0 | ||||
| #define VIRTIO_SCSI_F_HOTPLUG BIT1 | ||||
| 
 | ||||
| //
 | ||||
| // We expect these maximum sizes from the host. Also we force the CdbLength and
 | ||||
| // SenseDataLength parameters of EFI_EXT_SCSI_PASS_THRU_PROTOCOL.PassThru() not
 | ||||
| // to exceed these limits. See UEFI 2.3.1 errata C 14.7.
 | ||||
| //
 | ||||
| #define VIRTIO_SCSI_CDB_SIZE   32 | ||||
| #define VIRTIO_SCSI_SENSE_SIZE 96 | ||||
| 
 | ||||
| //
 | ||||
| // We pass the dynamically sized buffers ("dataout", "datain") in separate ring
 | ||||
| // descriptors.
 | ||||
| //
 | ||||
| #pragma pack(1) | ||||
| typedef struct { | ||||
|   UINT8  Lun[8]; | ||||
|   UINT64 Id; | ||||
|   UINT8  TaskAttr; | ||||
|   UINT8  Prio; | ||||
|   UINT8  Crn; | ||||
|   UINT8  Cdb[VIRTIO_SCSI_CDB_SIZE]; | ||||
| } VIRTIO_SCSI_REQ; | ||||
| 
 | ||||
| typedef struct { | ||||
|   UINT32 SenseLen; | ||||
|   UINT32 Residual; | ||||
|   UINT16 StatusQualifier; | ||||
|   UINT8  Status; | ||||
|   UINT8  Response; | ||||
|   UINT8  Sense[VIRTIO_SCSI_SENSE_SIZE]; | ||||
| } VIRTIO_SCSI_RESP; | ||||
| #pragma pack() | ||||
| 
 | ||||
| //
 | ||||
| // selector of first virtio queue usable for request transfer
 | ||||
| //
 | ||||
| #define VIRTIO_SCSI_REQUEST_QUEUE 2 | ||||
| 
 | ||||
| //
 | ||||
| // host response codes
 | ||||
| //
 | ||||
| #define VIRTIO_SCSI_S_OK                0 | ||||
| #define VIRTIO_SCSI_S_OVERRUN           1 | ||||
| #define VIRTIO_SCSI_S_ABORTED           2 | ||||
| #define VIRTIO_SCSI_S_BAD_TARGET        3 | ||||
| #define VIRTIO_SCSI_S_RESET             4 | ||||
| #define VIRTIO_SCSI_S_BUSY              5 | ||||
| #define VIRTIO_SCSI_S_TRANSPORT_FAILURE 6 | ||||
| #define VIRTIO_SCSI_S_TARGET_FAILURE    7 | ||||
| #define VIRTIO_SCSI_S_NEXUS_FAILURE     8 | ||||
| #define VIRTIO_SCSI_S_FAILURE           9 | ||||
| 
 | ||||
| #endif // _VIRTIO_SCSI_H_
 | ||||
| @ -53,6 +53,17 @@ | ||||
|   #  to PIIX4 function 3 offset 0x40-0x43 bits [15:6]. | ||||
|   gUefiOvmfPkgTokenSpaceGuid.PcdAcpiPmBaseAddress|0xB000|UINT16|5 | ||||
| 
 | ||||
|   ## When VirtioScsiDxe is instantiated for a HBA, the numbers of targets and | ||||
|   #  LUNs are retrieved from the host during virtio-scsi setup. | ||||
|   #  MdeModulePkg/Bus/Scsi/ScsiBusDxe then scans all MaxTarget * MaxLun | ||||
|   #  possible devices. This can take extremely long, for example with | ||||
|   #  MaxTarget=255 and MaxLun=16383. The *inclusive* constants below limit | ||||
|   #  MaxTarget and MaxLun, independently, should the host report higher values, | ||||
|   #  so that scanning the number of devices given by their product is still | ||||
|   #  acceptably fast. | ||||
|   gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxTargetLimit|31|UINT16|6 | ||||
|   gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxLunLimit|7|UINT32|7 | ||||
| 
 | ||||
| [PcdsDynamic, PcdsDynamicEx] | ||||
|   gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2 | ||||
| 
 | ||||
|  | ||||
| @ -409,6 +409,7 @@ | ||||
| 
 | ||||
|   OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf | ||||
|   OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | ||||
|   OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | ||||
|   OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { | ||||
|     <LibraryClasses> | ||||
|       PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf | ||||
|  | ||||
| @ -181,6 +181,7 @@ INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf | ||||
| 
 | ||||
| INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf | ||||
| INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | ||||
| INF  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | ||||
| INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf | ||||
| INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf | ||||
| 
 | ||||
|  | ||||
| @ -416,6 +416,7 @@ | ||||
| 
 | ||||
|   OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf | ||||
|   OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | ||||
|   OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | ||||
|   OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { | ||||
|     <LibraryClasses> | ||||
|       PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf | ||||
|  | ||||
| @ -181,6 +181,7 @@ INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf | ||||
| 
 | ||||
| INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf | ||||
| INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | ||||
| INF  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | ||||
| INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf | ||||
| INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf | ||||
| 
 | ||||
|  | ||||
| @ -414,6 +414,7 @@ | ||||
| 
 | ||||
|   OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf | ||||
|   OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | ||||
|   OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | ||||
|   OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { | ||||
|     <LibraryClasses> | ||||
|       PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf | ||||
|  | ||||
| @ -181,6 +181,7 @@ INF  PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf | ||||
| 
 | ||||
| INF  OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf | ||||
| INF  OvmfPkg/VirtioBlkDxe/VirtioBlk.inf | ||||
| INF  OvmfPkg/VirtioScsiDxe/VirtioScsi.inf | ||||
| INF  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf | ||||
| INF  MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1275
									
								
								OvmfPkg/VirtioScsiDxe/VirtioScsi.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1275
									
								
								OvmfPkg/VirtioScsiDxe/VirtioScsi.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										209
									
								
								OvmfPkg/VirtioScsiDxe/VirtioScsi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								OvmfPkg/VirtioScsiDxe/VirtioScsi.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,209 @@ | ||||
| /** @file
 | ||||
| 
 | ||||
|   Internal definitions for the virtio-scsi driver, which produces Extended SCSI | ||||
|   Pass Thru Protocol instances for virtio-scsi devices. | ||||
| 
 | ||||
|   Copyright (C) 2012, Red Hat, Inc. | ||||
| 
 | ||||
|   This program and the accompanying materials are licensed and made available | ||||
|   under the terms and conditions of the BSD License which accompanies this | ||||
|   distribution. The full text of the license may be found at | ||||
|   http://opensource.org/licenses/bsd-license.php
 | ||||
| 
 | ||||
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT | ||||
|   WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| 
 | ||||
| **/ | ||||
| 
 | ||||
| #ifndef _VIRTIO_SCSI_DXE_H_ | ||||
| #define _VIRTIO_SCSI_DXE_H_ | ||||
| 
 | ||||
| #include <Protocol/ComponentName.h> | ||||
| #include <Protocol/DriverBinding.h> | ||||
| #include <Protocol/PciIo.h> | ||||
| #include <Protocol/ScsiPassThruExt.h> | ||||
| 
 | ||||
| #include <IndustryStandard/Virtio.h> | ||||
| 
 | ||||
| 
 | ||||
| //
 | ||||
| // This driver supports 2-byte target identifiers and 4-byte LUN identifiers.
 | ||||
| //
 | ||||
| // EFI_EXT_SCSI_PASS_THRU_PROTOCOL provides TARGET_MAX_BYTES bytes for target
 | ||||
| // identification, and 8 bytes for LUN identification.
 | ||||
| //
 | ||||
| // EFI_EXT_SCSI_PASS_THRU_MODE.AdapterId is also a target identifier,
 | ||||
| // consisting of 4 bytes. Make sure TARGET_MAX_BYTES can accomodate both
 | ||||
| // AdapterId and our target identifiers.
 | ||||
| //
 | ||||
| #if TARGET_MAX_BYTES < 4 | ||||
| #  error "virtio-scsi requires TARGET_MAX_BYTES >= 4" | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| #define VSCSI_SIG SIGNATURE_32 ('V', 'S', 'C', 'S') | ||||
| 
 | ||||
| typedef struct { | ||||
|   //
 | ||||
|   // Parts of this structure are initialized / torn down in various functions
 | ||||
|   // at various call depths. The table to the right should make it easier to
 | ||||
|   // track them.
 | ||||
|   //
 | ||||
|   //                              field                     init function       init depth
 | ||||
|   //                              ----------------------    ------------------  ----------
 | ||||
|   UINT32                          Signature;             // DriverBindingStart  0
 | ||||
|   EFI_PCI_IO_PROTOCOL             *PciIo;                // DriverBindingStart  0
 | ||||
|   UINT64                          OriginalPciAttributes; // DriverBindingStart  0
 | ||||
|   BOOLEAN                         InOutSupported;        // VirtioScsiInit      1
 | ||||
|   UINT16                          MaxTarget;             // VirtioScsiInit      1
 | ||||
|   UINT32                          MaxLun;                // VirtioScsiInit      1
 | ||||
|   UINT32                          MaxSectors;            // VirtioScsiInit      1
 | ||||
|   VRING                           Ring;                  // VirtioRingInit      2
 | ||||
|   EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru;              // VirtioScsiInit      1
 | ||||
|   EFI_EXT_SCSI_PASS_THRU_MODE     PassThruMode;          // VirtioScsiInit      1
 | ||||
| } VSCSI_DEV; | ||||
| 
 | ||||
| #define VIRTIO_SCSI_FROM_PASS_THRU(PassThruPointer) \ | ||||
|         CR (PassThruPointer, VSCSI_DEV, PassThru, VSCSI_SIG) | ||||
| 
 | ||||
| 
 | ||||
| //
 | ||||
| // Probe, start and stop functions of this driver, called by the DXE core for
 | ||||
| // specific devices.
 | ||||
| //
 | ||||
| // The following specifications document these interfaces:
 | ||||
| // - Driver Writer's Guide for UEFI 2.3.1 v1.01, 9 Driver Binding Protocol
 | ||||
| // - UEFI Spec 2.3.1 + Errata C, 10.1 EFI Driver Binding Protocol
 | ||||
| //
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiDriverBindingSupported ( | ||||
|   IN EFI_DRIVER_BINDING_PROTOCOL *This, | ||||
|   IN EFI_HANDLE                  DeviceHandle, | ||||
|   IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiDriverBindingStart ( | ||||
|   IN EFI_DRIVER_BINDING_PROTOCOL *This, | ||||
|   IN EFI_HANDLE                  DeviceHandle, | ||||
|   IN EFI_DEVICE_PATH_PROTOCOL    *RemainingDevicePath | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiDriverBindingStop ( | ||||
|   IN EFI_DRIVER_BINDING_PROTOCOL *This, | ||||
|   IN EFI_HANDLE                  DeviceHandle, | ||||
|   IN UINTN                       NumberOfChildren, | ||||
|   IN EFI_HANDLE                  *ChildHandleBuffer | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| //
 | ||||
| // The next seven functions implement EFI_EXT_SCSI_PASS_THRU_PROTOCOL
 | ||||
| // for the virtio-scsi HBA. Refer to UEFI Spec 2.3.1 + Errata C, sections
 | ||||
| // - 14.1 SCSI Driver Model Overview,
 | ||||
| // - 14.7 Extended SCSI Pass Thru Protocol.
 | ||||
| //
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiPassThru ( | ||||
|   IN     EFI_EXT_SCSI_PASS_THRU_PROTOCOL            *This, | ||||
|   IN     UINT8                                      *Target, | ||||
|   IN     UINT64                                     Lun, | ||||
|   IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, | ||||
|   IN     EFI_EVENT                                  Event   OPTIONAL | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiGetNextTargetLun ( | ||||
|   IN     EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, | ||||
|   IN OUT UINT8                           **Target, | ||||
|   IN OUT UINT64                          *Lun | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiBuildDevicePath ( | ||||
|   IN     EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, | ||||
|   IN     UINT8                           *Target, | ||||
|   IN     UINT64                          Lun, | ||||
|   IN OUT EFI_DEVICE_PATH_PROTOCOL        **DevicePath | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiGetTargetLun ( | ||||
|   IN  EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, | ||||
|   IN  EFI_DEVICE_PATH_PROTOCOL        *DevicePath, | ||||
|   OUT UINT8                           **Target, | ||||
|   OUT UINT64                          *Lun | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiResetChannel ( | ||||
|   IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiResetTargetLun ( | ||||
|   IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, | ||||
|   IN UINT8                           *Target, | ||||
|   IN UINT64                          Lun | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiGetNextTarget ( | ||||
|   IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, | ||||
|   IN OUT UINT8                       **Target | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| //
 | ||||
| // The purpose of the following scaffolding (EFI_COMPONENT_NAME_PROTOCOL and
 | ||||
| // EFI_COMPONENT_NAME2_PROTOCOL implementation) is to format the driver's name
 | ||||
| // in English, for display on standard console devices. This is recommended for
 | ||||
| // UEFI drivers that follow the UEFI Driver Model. Refer to the Driver Writer's
 | ||||
| // Guide for UEFI 2.3.1 v1.01, 11 UEFI Driver and Controller Names.
 | ||||
| //
 | ||||
| // Device type names ("Virtio SCSI Host Device") are not formatted because the
 | ||||
| // driver supports only that device type. Therefore the driver name suffices
 | ||||
| // for unambiguous identification.
 | ||||
| //
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiGetDriverName ( | ||||
|   IN  EFI_COMPONENT_NAME_PROTOCOL *This, | ||||
|   IN  CHAR8                       *Language, | ||||
|   OUT CHAR16                      **DriverName | ||||
|   ); | ||||
| 
 | ||||
| 
 | ||||
| EFI_STATUS | ||||
| EFIAPI | ||||
| VirtioScsiGetDeviceName ( | ||||
|   IN  EFI_COMPONENT_NAME_PROTOCOL *This, | ||||
|   IN  EFI_HANDLE                  DeviceHandle, | ||||
|   IN  EFI_HANDLE                  ChildHandle, | ||||
|   IN  CHAR8                       *Language, | ||||
|   OUT CHAR16                      **ControllerName | ||||
|   ); | ||||
| 
 | ||||
| #endif // _VIRTIO_SCSI_DXE_H_
 | ||||
							
								
								
									
										47
									
								
								OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| ## @file | ||||
| # This driver produces Extended SCSI Pass Thru Protocol instances for | ||||
| # virtio-scsi devices. | ||||
| # | ||||
| # Copyright (C) 2012, Red Hat, Inc. | ||||
| # | ||||
| # This program and the accompanying materials are licensed and made available | ||||
| # under the terms and conditions of the BSD License which accompanies this | ||||
| # distribution. The full text of the license may be found at | ||||
| # http://opensource.org/licenses/bsd-license.php | ||||
| # | ||||
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT | ||||
| # WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | ||||
| # | ||||
| ## | ||||
| 
 | ||||
| [Defines] | ||||
|   INF_VERSION                    = 0x00010005 | ||||
|   BASE_NAME                      = VirtioScsiDxe | ||||
|   FILE_GUID                      = FAB5D4F4-83C0-4AAF-8480-442D11DF6CEA | ||||
|   MODULE_TYPE                    = UEFI_DRIVER | ||||
|   VERSION_STRING                 = 1.0 | ||||
|   ENTRY_POINT                    = VirtioScsiEntryPoint | ||||
| 
 | ||||
| [Sources] | ||||
|   VirtioScsi.c | ||||
| 
 | ||||
| [Packages] | ||||
|   MdePkg/MdePkg.dec | ||||
|   OvmfPkg/OvmfPkg.dec | ||||
| 
 | ||||
| [LibraryClasses] | ||||
|   BaseMemoryLib | ||||
|   DebugLib | ||||
|   MemoryAllocationLib | ||||
|   UefiBootServicesTableLib | ||||
|   UefiDriverEntryPoint | ||||
|   UefiLib | ||||
|   VirtioLib | ||||
| 
 | ||||
| [Protocols] | ||||
|   gEfiExtScsiPassThruProtocolGuid  ## BY_START | ||||
|   gEfiPciIoProtocolGuid            ## TO_START | ||||
| 
 | ||||
| [Pcd] | ||||
|   gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxTargetLimit ## CONSUMES | ||||
|   gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxLunLimit    ## CONSUMES | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user