On 2016-03-14 05:53:23, Laszlo Ersek wrote: > These header files are intentionally minimal, and intentionally kept apart > from the VirtIo 0.9.5 headers. > > Cc: Ard Biesheuvel <[email protected]> > Cc: Jordan Justen <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <[email protected]> > --- > OvmfPkg/Include/IndustryStandard/Virtio10.h | 81 ++++++++++++++++++++ > OvmfPkg/Include/IndustryStandard/Virtio10Net.h | 31 ++++++++ > 2 files changed, 112 insertions(+) > > diff --git a/OvmfPkg/Include/IndustryStandard/Virtio10.h > b/OvmfPkg/Include/IndustryStandard/Virtio10.h > new file mode 100644 > index 000000000000..722475c4ea55 > --- /dev/null > +++ b/OvmfPkg/Include/IndustryStandard/Virtio10.h > @@ -0,0 +1,81 @@ > +/** @file > + Definitions from the VirtIo 1.0 specification (csprd05). > + > + Copyright (C) 2016, 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_1_0_H_ > +#define _VIRTIO_1_0_H_ > + > +#include <Base.h> > + > +// > +// Structures for parsing the VirtIo 1.0 specific PCI capabilities from the > +// config space > +// > +#pragma pack (1) > +typedef struct { > + UINT8 CapId; // Capability identifier (generic) > + UINT8 CapNext; // Link to next capability (generic) > +} VIRTIO_PCI_CAP_LINK; > + > +typedef struct { > + UINT8 ConfigType; // Identifies the specific VirtIo 1.0 config structure > + UINT8 Bar; // The BAR that contains the structure > + UINT8 Padding[3]; > + UINT32 Offset; // Offset within Bar until the start of the structure > + UINT32 Length; // Length of the structure > +} VIRTIO_PCI_CAP; > +#pragma pack () > + > +// > +// Values for the VIRTIO_PCI_CAP.ConfigType field > +// > +#define VIRTIO_PCI_CAP_COMMON_CFG 1 // Common configuration > +#define VIRTIO_PCI_CAP_NOTIFY_CFG 2 // Notifications > +#define VIRTIO_PCI_CAP_DEVICE_CFG 4 // Device specific configuration > + > +// > +// Structure pointed-to by Bar and Offset in VIRTIO_PCI_CAP when ConfigType > is > +// VIRTIO_PCI_CAP_COMMON_CFG > +// > +#pragma pack (1) > +typedef struct { > + UINT32 DeviceFeatureSelect; > + UINT32 DeviceFeature; > + UINT32 DriverFeatureSelect; > + UINT32 DriverFeature; > + UINT16 MsixConfig; > + UINT16 NumQueues; > + UINT8 DeviceStatus; > + UINT8 ConfigGeneration; > + UINT16 QueueSelect; > + UINT16 QueueSize; > + UINT16 QueueMsixVector; > + UINT16 QueueEnable; > + UINT16 QueueNotifyOff; > + UINT64 QueueDesc; > + UINT64 QueueAvail; > + UINT64 QueueUsed; > +} VIRTIO_PCI_COMMON_CFG; > +#pragma pack () > + > +// > +// VirtIo 1.0 device status bits > +// > +#define VSTAT_FEATURES_OK BIT3 > + > +// > +// VirtIo 1.0 reserved (device-independent) feature bits > +// > +#define VIRTIO_F_VERSION_1 BIT32 > + > +#endif // _VIRTIO_1_0_H_ > diff --git a/OvmfPkg/Include/IndustryStandard/Virtio10Net.h > b/OvmfPkg/Include/IndustryStandard/Virtio10Net.h > new file mode 100644 > index 000000000000..2befc661dc62 > --- /dev/null > +++ b/OvmfPkg/Include/IndustryStandard/Virtio10Net.h > @@ -0,0 +1,31 @@ > +/** @file > + Definitions from the VirtIo 1.0 specification (csprd05), specifically for > the > + network device. > + > + Copyright (C) 2016, 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_1_0_NET_H_ > +#define _VIRTIO_1_0_NET_H_ > + > +#include <IndustryStandard/VirtioNet.h> > + > +// > +// VirtIo 1.0 packet header > +// > +#pragma pack (1) > +typedef struct { > + VIRTIO_NET_REQ Legacy;
This naming seems a bit unfortunate. I thought the nested version structures seemed a bit strange for edk2. Then I took a look at EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE vs EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE. What are your thoughts? -Jordan > + UINT16 NumBuffers; > +} VIRTIO_1_0_NET_REQ; > +#pragma pack () > + > +#endif // _VIRTIO_1_0_NET_H_ > -- > 1.8.3.1 > > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

