mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 00:36:31 +00:00 
			
		
		
		
	https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
 | 
						|
  Virtio SCSI Host Device specific type and macro definitions corresponding to
 | 
						|
  the virtio-0.9.5 specification.
 | 
						|
 | 
						|
  Copyright (C) 2012, Red Hat, Inc.
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#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 {
 | 
						|
  UINT32     NumQueues;
 | 
						|
  UINT32     SegMax;
 | 
						|
  UINT32     MaxSectors;
 | 
						|
  UINT32     CmdPerLun;
 | 
						|
  UINT32     EventInfoSize;
 | 
						|
  UINT32     SenseSize;
 | 
						|
  UINT32     CdbSize;
 | 
						|
  UINT16     MaxChannel;
 | 
						|
  UINT16     MaxTarget;
 | 
						|
  UINT32     MaxLun;
 | 
						|
} VIRTIO_SCSI_CONFIG;
 | 
						|
#pragma pack()
 | 
						|
 | 
						|
#define OFFSET_OF_VSCSI(Field) OFFSET_OF (VIRTIO_SCSI_CONFIG, Field)
 | 
						|
#define SIZE_OF_VSCSI(Field)   (sizeof ((VIRTIO_SCSI_CONFIG *) 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_
 |