mirror of https://github.com/acidanthera/audk.git
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
|
@ -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].
|
# to PIIX4 function 3 offset 0x40-0x43 bits [15:6].
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdAcpiPmBaseAddress|0xB000|UINT16|5
|
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]
|
[PcdsDynamic, PcdsDynamicEx]
|
||||||
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
|
gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
|
||||||
|
|
||||||
|
|
|
@ -409,6 +409,7 @@
|
||||||
|
|
||||||
OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
||||||
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
|
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
||||||
|
|
|
@ -181,6 +181,7 @@ INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
||||||
|
|
||||||
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
||||||
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
|
INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
||||||
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
||||||
|
|
||||||
|
|
|
@ -416,6 +416,7 @@
|
||||||
|
|
||||||
OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
||||||
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
|
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
||||||
|
|
|
@ -181,6 +181,7 @@ INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
||||||
|
|
||||||
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
||||||
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
|
INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
||||||
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
||||||
|
|
||||||
|
|
|
@ -414,6 +414,7 @@
|
||||||
|
|
||||||
OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
||||||
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
|
OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
PlatformFvbLib|OvmfPkg/Library/EmuVariableFvbLib/EmuVariableFvbLib.inf
|
||||||
|
|
|
@ -181,6 +181,7 @@ INF PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe.inf
|
||||||
|
|
||||||
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
INF OvmfPkg/BlockMmioToBlockIoDxe/BlockIo.inf
|
||||||
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
INF OvmfPkg/VirtioBlkDxe/VirtioBlk.inf
|
||||||
|
INF OvmfPkg/VirtioScsiDxe/VirtioScsi.inf
|
||||||
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
|
||||||
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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_
|
|
@ -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…
Reference in New Issue