General Description
===================

This document describes VMWare PVSCSI device interface specification.
Created by Dmitry Fleytman (dmitry@daynix.com), Daynix Computing LTD.
Based on source code of PVSCSI Linux driver from kernel 3.0.4

PVSCSI Device Interface Overview
================================

The interface is based on memory area shared between hypervisor and VM.
Memory area is obtained by driver as device IO memory resource of
PVSCSI_MEM_SPACE_SIZE length.
The shared memory consists of registers area and rings area.
The registers area is used to raise hypervisor interrupts and issue device
commands. The rings area is used to transfer data descriptors and SCSI
commands from VM to hypervisor and to transfer messages produced by
hypervisor to VM. Data itself is transferred via virtual scatter-gather DMA.

PVSCSI Device Registers
=======================

The length of the registers area is 1 page (PVSCSI_MEM_SPACE_COMMAND_NUM_PAGES).
The structure of the registers area is described by the PVSCSIRegOffset enum.
There are registers to issue device command (with optional short data),
issue device interrupt, control interrupts masking.

PVSCSI Device Rings
===================

There are three rings in shared memory:

    1. Request ring (struct PVSCSIRingReqDesc *req_ring)
        - ring for OS to device requests
    2. Completion ring (struct PVSCSIRingCmpDesc *cmp_ring)
        - ring for device request completions
    3. Message ring (struct PVSCSIRingMsgDesc *msg_ring)
        - ring for messages from device.
       This ring is optional and the guest might not configure it.
There is a control area (struct PVSCSIRingsState *rings_state) used to control
rings operation.

PVSCSI Device to Host Interrupts
================================
There are following interrupt types supported by PVSCSI device:
    1. Completion interrupts (completion ring notifications):
        PVSCSI_INTR_CMPL_0
        PVSCSI_INTR_CMPL_1
    2. Message interrupts (message ring notifications):
        PVSCSI_INTR_MSG_0
        PVSCSI_INTR_MSG_1

Interrupts are controlled via PVSCSI_REG_OFFSET_INTR_MASK register
Bit set means interrupt enabled, bit cleared - disabled

Interrupt modes supported are legacy, MSI and MSI-X
In case of legacy interrupts, register PVSCSI_REG_OFFSET_INTR_STATUS
is used to check which interrupt has arrived.  Interrupts are
acknowledged when the corresponding bit is written to the interrupt
status register.

PVSCSI Device Operation Sequences
=================================

1. Startup sequence:
    a. Issue PVSCSI_CMD_ADAPTER_RESET command;
    aa. Windows driver reads interrupt status register here;
    b. Issue PVSCSI_CMD_SETUP_MSG_RING command with no additional data,
       check status and disable device messages if error returned;
       (Omitted if device messages disabled by driver configuration)
    c. Issue PVSCSI_CMD_SETUP_RINGS command, provide rings configuration
       as struct PVSCSICmdDescSetupRings;
    d. Issue PVSCSI_CMD_SETUP_MSG_RING command again, provide
       rings configuration as struct PVSCSICmdDescSetupMsgRing;
    e. Unmask completion and message (if device messages enabled) interrupts.

2. Shutdown sequences
    a. Mask interrupts;
    b. Flush request ring using PVSCSI_REG_OFFSET_KICK_NON_RW_IO;
    c. Issue PVSCSI_CMD_ADAPTER_RESET command.

3. Send request
    a. Fill next free request ring descriptor;
    b. Issue PVSCSI_REG_OFFSET_KICK_RW_IO for R/W operations;
       or PVSCSI_REG_OFFSET_KICK_NON_RW_IO for other operations.

4. Abort command
    a. Issue PVSCSI_CMD_ABORT_CMD command;

5. Request completion processing
    a. Upon completion interrupt arrival process completion
       and message (if enabled) rings.
