* Linux header upgrade (Peter)
* firmware.json definition (Laszlo) * IPMI migration fix (Corey) * QOM improvements (Alexey, Philippe, me) * Memory API cleanups (Jay, me, Tristan, Peter) * WHPX fixes and improvements (Lucian) * Chardev fixes (Marc-André) * IOMMU documentation improvements (Peter) * Coverity fixes (Peter, Philippe) * Include cleanup (Philippe) * -clock deprecation (Thomas) * Disable -sandbox unless CONFIG_SECCOMP (Yi Min Zhao) * Configurability improvements (me) -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAlsRd2UUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroPG8Qf+M85E8xAQ/bhs90tAymuXkUUsTIFF uI76K8eM0K3b2B+vGckxh1gyN5O3GQaMEDL7vITfqbX+EOH5U2lv8V9JRzf2YvbG Zahjd4pOCYzR0b9JENA1r5U/J8RntNrBNXlKmGTaXOaw9VCXlZyvgVd9CE3z/e2M 0jSXMBdF4LB3UzECI24Va8ejJxdSiJcqXA2j3J+pJFxI698i+Z5eBBKnRdo5TVe5 jl0TYEsbS6CLwhmbLXmt3Qhq+ocZn7YH9X3HjkHEdqDUeYWyT9jwUpa7OHFrIEKC ikWm9er4YDzG/vOC0dqwKbShFzuTpTJuMz5Mj4v8JjM/iQQFrp4afjcW2g== =RS/B -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging * Linux header upgrade (Peter) * firmware.json definition (Laszlo) * IPMI migration fix (Corey) * QOM improvements (Alexey, Philippe, me) * Memory API cleanups (Jay, me, Tristan, Peter) * WHPX fixes and improvements (Lucian) * Chardev fixes (Marc-André) * IOMMU documentation improvements (Peter) * Coverity fixes (Peter, Philippe) * Include cleanup (Philippe) * -clock deprecation (Thomas) * Disable -sandbox unless CONFIG_SECCOMP (Yi Min Zhao) * Configurability improvements (me) # gpg: Signature made Fri 01 Jun 2018 17:42:13 BST # gpg: using RSA key BFFBD25F78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini/tags/for-upstream: (56 commits) hw: make virtio devices configurable via default-configs/ hw: allow compiling out SCSI memory: Make operations using MemoryRegionIoeventfd struct pass by pointer. char: Remove unwanted crlf conversion qdev: Remove DeviceClass::init() and ::exit() qdev: Simplify the SysBusDeviceClass::init path hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init target/i386/kvm.c: Remove compatibility shim for KVM_HINTS_REALTIME Update Linux headers to 4.17-rc6 target/i386/kvm.c: Handle renaming of KVM_HINTS_DEDICATED scripts/update-linux-headers: Handle kernel license no longer being one file scripts/update-linux-headers: Handle __aligned_u64 virtio-gpu-3d: Define VIRTIO_GPU_CAPSET_VIRGL2 elsewhere gdbstub: Prevent fd leakage docs/interop: add "firmware.json" ipmi: Use proper struct reference for KCS vmstate vmstate: Add a VSTRUCT type tcg: remove softfloat from --disable-tcg builds qemu-options: Mark the non-functional -clock option as deprecated ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
afd76ffba9
215 changed files with 1713 additions and 901 deletions
|
|
@ -747,29 +747,6 @@ void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
|
|||
uint64_t size,
|
||||
Error **errp);
|
||||
|
||||
/**
|
||||
* memory_region_init_reservation: Initialize a memory region that reserves
|
||||
* I/O space.
|
||||
*
|
||||
* A reservation region primariy serves debugging purposes. It claims I/O
|
||||
* space that is not supposed to be handled by QEMU itself. Any access via
|
||||
* the memory API will cause an abort().
|
||||
* This function is deprecated. Use memory_region_init_io() with NULL
|
||||
* callbacks instead.
|
||||
*
|
||||
* @mr: the #MemoryRegion to be initialized
|
||||
* @owner: the object that tracks the region's reference count
|
||||
* @name: used for debugging; not visible to the user or ABI
|
||||
* @size: size of the region.
|
||||
*/
|
||||
static inline void memory_region_init_reservation(MemoryRegion *mr,
|
||||
Object *owner,
|
||||
const char *name,
|
||||
uint64_t size)
|
||||
{
|
||||
memory_region_init_io(mr, owner, NULL, mr, name, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* memory_region_init_iommu: Initialize a memory region of a custom type
|
||||
* that translates addresses
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@
|
|||
#include "hw/ide/ahci.h"
|
||||
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "exec/address-spaces.h"
|
||||
|
||||
|
||||
#define AW_A10_PIC_REG_BASE 0x01c20400
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
#define BCM2835_PERIPHERALS_H
|
||||
|
||||
#include "qemu-common.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/char/bcm2835_aux.h"
|
||||
#include "hw/display/bcm2835_fb.h"
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
#ifndef QEMU_DEVICES_H
|
||||
#define QEMU_DEVICES_H
|
||||
|
||||
#include "hw/irq.h"
|
||||
|
||||
/* ??? Not all users of this file can include cpu-common.h. */
|
||||
struct MemoryRegion;
|
||||
|
||||
/* Devices that have nowhere better to go. */
|
||||
|
||||
#include "hw/hw.h"
|
||||
|
||||
/* smc91c111.c */
|
||||
void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
#define BCM2835_FB_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "ui/console.h"
|
||||
|
||||
#define TYPE_BCM2835_FB "bcm2835-fb"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
#define BCM2835_DMA_H
|
||||
|
||||
#include "qemu-common.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "hw/sysbus.h"
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
|
|
@ -28,9 +28,6 @@ typedef struct I2CSlave I2CSlave;
|
|||
typedef struct I2CSlaveClass {
|
||||
DeviceClass parent_class;
|
||||
|
||||
/* Callbacks provided by the device. */
|
||||
int (*init)(I2CSlave *dev);
|
||||
|
||||
/* Master to slave. Returns non-zero for a NAK, 0 for success. */
|
||||
int (*send)(I2CSlave *s, uint8_t data);
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@
|
|||
typedef struct SMBusDeviceClass
|
||||
{
|
||||
I2CSlaveClass parent_class;
|
||||
int (*init)(SMBusDevice *dev);
|
||||
void (*quick_cmd)(SMBusDevice *dev, uint8_t read);
|
||||
void (*send_byte)(SMBusDevice *dev, uint8_t val);
|
||||
uint8_t (*receive_byte)(SMBusDevice *dev);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
#include "bcm2835_mbox_defs.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "exec/address-spaces.h"
|
||||
|
||||
#define TYPE_BCM2835_MBOX "bcm2835-mbox"
|
||||
#define BCM2835_MBOX(obj) \
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
#define BCM2835_PROPERTY_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "net/net.h"
|
||||
#include "hw/display/bcm2835_fb.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
#ifndef MIPS_ITU_H
|
||||
#define MIPS_ITU_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
|
||||
#define TYPE_MIPS_ITU "mips-itu"
|
||||
#define MIPS_ITU(obj) OBJECT_CHECK(MIPSITUState, (obj), TYPE_MIPS_ITU)
|
||||
|
||||
|
|
|
|||
|
|
@ -29,8 +29,6 @@ typedef enum DeviceCategory {
|
|||
DEVICE_CATEGORY_MAX
|
||||
} DeviceCategory;
|
||||
|
||||
typedef int (*qdev_initfn)(DeviceState *dev);
|
||||
typedef int (*qdev_event)(DeviceState *dev);
|
||||
typedef void (*DeviceRealize)(DeviceState *dev, Error **errp);
|
||||
typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp);
|
||||
typedef void (*DeviceReset)(DeviceState *dev);
|
||||
|
|
@ -43,13 +41,9 @@ struct VMStateDescription;
|
|||
* DeviceClass:
|
||||
* @props: Properties accessing state fields.
|
||||
* @realize: Callback function invoked when the #DeviceState:realized
|
||||
* property is changed to %true. The default invokes @init if not %NULL.
|
||||
* property is changed to %true.
|
||||
* @unrealize: Callback function invoked when the #DeviceState:realized
|
||||
* property is changed to %false.
|
||||
* @init: Callback function invoked when the #DeviceState::realized property
|
||||
* is changed to %true. Deprecated, new types inheriting directly from
|
||||
* TYPE_DEVICE should use @realize instead, new leaf types should consult
|
||||
* their respective parent type.
|
||||
* @hotpluggable: indicates if #DeviceClass is hotpluggable, available
|
||||
* as readonly "hotpluggable" property of #DeviceState instance
|
||||
*
|
||||
|
|
@ -73,19 +67,15 @@ struct VMStateDescription;
|
|||
* object_initialize() in their own #TypeInfo.instance_init and forward the
|
||||
* realization events appropriately.
|
||||
*
|
||||
* The @init callback is considered private to a particular bus implementation
|
||||
* (immediate abstract child types of TYPE_DEVICE). Derived leaf types set an
|
||||
* "init" callback on their parent class instead.
|
||||
*
|
||||
* Any type may override the @realize and/or @unrealize callbacks but needs
|
||||
* to call the parent type's implementation if keeping their functionality
|
||||
* is desired. Refer to QOM documentation for further discussion and examples.
|
||||
*
|
||||
* <note>
|
||||
* <para>
|
||||
* If a type derived directly from TYPE_DEVICE implements @realize, it does
|
||||
* not need to implement @init and therefore does not need to store and call
|
||||
* #DeviceClass' default @realize callback.
|
||||
* Since TYPE_DEVICE doesn't implement @realize and @unrealize, types
|
||||
* derived directly from it need not call their parent's @realize and
|
||||
* @unrealize.
|
||||
* For other types consult the documentation and implementation of the
|
||||
* respective parent types.
|
||||
* </para>
|
||||
|
|
@ -124,8 +114,6 @@ typedef struct DeviceClass {
|
|||
const struct VMStateDescription *vmsd;
|
||||
|
||||
/* Private to qdev / bus. */
|
||||
qdev_initfn init; /* TODO remove, once users are converted to realize */
|
||||
qdev_event exit; /* TODO remove, once users are converted to unrealize */
|
||||
const char *bus_type;
|
||||
} DeviceClass;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
#include "qemu-common.h"
|
||||
#include "hw/irq.h"
|
||||
#include "exec/address-spaces.h"
|
||||
|
||||
typedef unsigned char intc_enum;
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
#define HW_VFIO_VFIO_COMMON_H
|
||||
|
||||
#include "qemu-common.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "exec/memory.h"
|
||||
#include "qemu/queue.h"
|
||||
#include "qemu/notify.h"
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
#include "hw/virtio/virtio.h"
|
||||
#include "hw/virtio/virtio-bus.h"
|
||||
#include "exec/address-spaces.h"
|
||||
|
||||
#if defined(TARGET_PPC64) || defined(TARGET_ARM)
|
||||
#define LEGACY_VIRTIO_IS_BIENDIAN 1
|
||||
|
|
|
|||
|
|
@ -21,6 +21,12 @@
|
|||
#include "qemu/log.h"
|
||||
|
||||
#include "standard-headers/linux/virtio_gpu.h"
|
||||
|
||||
/* Not yet(?) defined in standard-headers, remove when possible */
|
||||
#ifndef VIRTIO_GPU_CAPSET_VIRGL2
|
||||
#define VIRTIO_GPU_CAPSET_VIRGL2 2
|
||||
#endif
|
||||
|
||||
#define TYPE_VIRTIO_GPU "virtio-gpu-device"
|
||||
#define VIRTIO_GPU(obj) \
|
||||
OBJECT_CHECK(VirtIOGPU, (obj), TYPE_VIRTIO_GPU)
|
||||
|
|
|
|||
|
|
@ -143,6 +143,11 @@ enum VMStateFlags {
|
|||
* to determine the number of entries in the array. Only valid in
|
||||
* combination with one of VMS_VARRAY*. */
|
||||
VMS_MULTIPLY_ELEMENTS = 0x4000,
|
||||
|
||||
/* A structure field that is like VMS_STRUCT, but uses
|
||||
* VMStateField.struct_version_id to tell which version of the
|
||||
* structure we are referencing to use. */
|
||||
VMS_VSTRUCT = 0x8000,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
|
|
@ -167,6 +172,7 @@ struct VMStateField {
|
|||
enum VMStateFlags flags;
|
||||
const VMStateDescription *vmsd;
|
||||
int version_id;
|
||||
int struct_version_id;
|
||||
bool (*field_exists)(void *opaque, int version_id);
|
||||
};
|
||||
|
||||
|
|
@ -248,6 +254,25 @@ extern const VMStateInfo vmstate_info_qtailq;
|
|||
vmstate_offset_array(_state, _field, uint8_t, \
|
||||
sizeof(typeof_field(_state, _field)))
|
||||
|
||||
/* In the macros below, if there is a _version, that means the macro's
|
||||
* field will be processed only if the version being received is >=
|
||||
* the _version specified. In general, if you add a new field, you
|
||||
* would increment the structure's version and put that version
|
||||
* number into the new field so it would only be processed with the
|
||||
* new version.
|
||||
*
|
||||
* In particular, for VMSTATE_STRUCT() and friends the _version does
|
||||
* *NOT* pick the version of the sub-structure. It works just as
|
||||
* specified above. The version of the top-level structure received
|
||||
* is passed down to all sub-structures. This means that the
|
||||
* sub-structures must have version that are compatible with all the
|
||||
* structures that use them.
|
||||
*
|
||||
* If you want to specify the version of the sub-structure, use
|
||||
* VMSTATE_VSTRUCT(), which allows the specific sub-structure version
|
||||
* to be directly specified.
|
||||
*/
|
||||
|
||||
#define VMSTATE_SINGLE_TEST(_field, _state, _test, _version, _info, _type) { \
|
||||
.name = (stringify(_field)), \
|
||||
.version_id = (_version), \
|
||||
|
|
@ -395,6 +420,17 @@ extern const VMStateInfo vmstate_info_qtailq;
|
|||
.offset = offsetof(_state, _field), \
|
||||
}
|
||||
|
||||
#define VMSTATE_VSTRUCT_TEST(_field, _state, _test, _version, _vmsd, _type, _struct_version) { \
|
||||
.name = (stringify(_field)), \
|
||||
.version_id = (_version), \
|
||||
.struct_version_id = (_struct_version), \
|
||||
.field_exists = (_test), \
|
||||
.vmsd = &(_vmsd), \
|
||||
.size = sizeof(_type), \
|
||||
.flags = VMS_VSTRUCT, \
|
||||
.offset = vmstate_offset_value(_state, _field, _type), \
|
||||
}
|
||||
|
||||
#define VMSTATE_STRUCT_TEST(_field, _state, _test, _version, _vmsd, _type) { \
|
||||
.name = (stringify(_field)), \
|
||||
.version_id = (_version), \
|
||||
|
|
@ -712,6 +748,13 @@ extern const VMStateInfo vmstate_info_qtailq;
|
|||
#define VMSTATE_SINGLE(_field, _state, _version, _info, _type) \
|
||||
VMSTATE_SINGLE_TEST(_field, _state, NULL, _version, _info, _type)
|
||||
|
||||
#define VMSTATE_VSTRUCT(_field, _state, _vmsd, _type, _struct_version)\
|
||||
VMSTATE_VSTRUCT_TEST(_field, _state, NULL, 0, _vmsd, _type, _struct_version)
|
||||
|
||||
#define VMSTATE_VSTRUCT_V(_field, _state, _version, _vmsd, _type, _struct_version) \
|
||||
VMSTATE_VSTRUCT_TEST(_field, _state, NULL, _version, _vmsd, _type, \
|
||||
_struct_version)
|
||||
|
||||
#define VMSTATE_STRUCT(_field, _state, _version, _vmsd, _type) \
|
||||
VMSTATE_STRUCT_TEST(_field, _state, NULL, _version, _vmsd, _type)
|
||||
|
||||
|
|
@ -1003,6 +1046,8 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
|
|||
void *opaque, int version_id);
|
||||
int vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque, QJSON *vmdesc);
|
||||
int vmstate_save_state_v(QEMUFile *f, const VMStateDescription *vmsd,
|
||||
void *opaque, QJSON *vmdesc, int version_id);
|
||||
|
||||
bool vmstate_save_needed(const VMStateDescription *vmsd, void *opaque);
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
/* this is a temporary placeholder until kvm_para.h stops including it */
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
#define KVM_FEATURE_PV_TLB_FLUSH 9
|
||||
#define KVM_FEATURE_ASYNC_PF_VMEXIT 10
|
||||
|
||||
#define KVM_HINTS_DEDICATED 0
|
||||
#define KVM_HINTS_REALTIME 0
|
||||
|
||||
/* The last 8 bits are used to indicate how to interpret the flags field
|
||||
* in pvclock structure. If no bits are set, all flags are ignored.
|
||||
|
|
|
|||
|
|
@ -217,10 +217,14 @@ struct ethtool_value {
|
|||
uint32_t data;
|
||||
};
|
||||
|
||||
#define PFC_STORM_PREVENTION_AUTO 0xffff
|
||||
#define PFC_STORM_PREVENTION_DISABLE 0
|
||||
|
||||
enum tunable_id {
|
||||
ETHTOOL_ID_UNSPEC,
|
||||
ETHTOOL_RX_COPYBREAK,
|
||||
ETHTOOL_TX_COPYBREAK,
|
||||
ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
|
||||
/*
|
||||
* Add your fresh new tubale attribute above and remember to update
|
||||
* tunable_strings[] in net/core/ethtool.c
|
||||
|
|
@ -914,12 +918,15 @@ static inline uint64_t ethtool_get_flow_spec_ring_vf(uint64_t ring_cookie)
|
|||
* @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW
|
||||
* @data: Command-dependent value
|
||||
* @fs: Flow classification rule
|
||||
* @rss_context: RSS context to be affected
|
||||
* @rule_cnt: Number of rules to be affected
|
||||
* @rule_locs: Array of used rule locations
|
||||
*
|
||||
* For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating
|
||||
* the fields included in the flow hash, e.g. %RXH_IP_SRC. The following
|
||||
* structure fields must not be used.
|
||||
* structure fields must not be used, except that if @flow_type includes
|
||||
* the %FLOW_RSS flag, then @rss_context determines which RSS context to
|
||||
* act on.
|
||||
*
|
||||
* For %ETHTOOL_GRXRINGS, @data is set to the number of RX rings/queues
|
||||
* on return.
|
||||
|
|
@ -931,7 +938,9 @@ static inline uint64_t ethtool_get_flow_spec_ring_vf(uint64_t ring_cookie)
|
|||
* set in @data then special location values should not be used.
|
||||
*
|
||||
* For %ETHTOOL_GRXCLSRULE, @fs.@location specifies the location of an
|
||||
* existing rule on entry and @fs contains the rule on return.
|
||||
* existing rule on entry and @fs contains the rule on return; if
|
||||
* @fs.@flow_type includes the %FLOW_RSS flag, then @rss_context is
|
||||
* filled with the RSS context ID associated with the rule.
|
||||
*
|
||||
* For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
|
||||
* user buffer for @rule_locs on entry. On return, @data is the size
|
||||
|
|
@ -942,7 +951,11 @@ static inline uint64_t ethtool_get_flow_spec_ring_vf(uint64_t ring_cookie)
|
|||
* For %ETHTOOL_SRXCLSRLINS, @fs specifies the rule to add or update.
|
||||
* @fs.@location either specifies the location to use or is a special
|
||||
* location value with %RX_CLS_LOC_SPECIAL flag set. On return,
|
||||
* @fs.@location is the actual rule location.
|
||||
* @fs.@location is the actual rule location. If @fs.@flow_type
|
||||
* includes the %FLOW_RSS flag, @rss_context is the RSS context ID to
|
||||
* use for flow spreading traffic which matches this rule. The value
|
||||
* from the rxfh indirection table will be added to @fs.@ring_cookie
|
||||
* to choose which ring to deliver to.
|
||||
*
|
||||
* For %ETHTOOL_SRXCLSRLDEL, @fs.@location specifies the location of an
|
||||
* existing rule on entry.
|
||||
|
|
@ -963,7 +976,10 @@ struct ethtool_rxnfc {
|
|||
uint32_t flow_type;
|
||||
uint64_t data;
|
||||
struct ethtool_rx_flow_spec fs;
|
||||
uint32_t rule_cnt;
|
||||
union {
|
||||
uint32_t rule_cnt;
|
||||
uint32_t rss_context;
|
||||
};
|
||||
uint32_t rule_locs[0];
|
||||
};
|
||||
|
||||
|
|
@ -990,7 +1006,11 @@ struct ethtool_rxfh_indir {
|
|||
/**
|
||||
* struct ethtool_rxfh - command to get/set RX flow hash indir or/and hash key.
|
||||
* @cmd: Specific command number - %ETHTOOL_GRSSH or %ETHTOOL_SRSSH
|
||||
* @rss_context: RSS context identifier.
|
||||
* @rss_context: RSS context identifier. Context 0 is the default for normal
|
||||
* traffic; other contexts can be referenced as the destination for RX flow
|
||||
* classification rules. %ETH_RXFH_CONTEXT_ALLOC is used with command
|
||||
* %ETHTOOL_SRSSH to allocate a new RSS context; on return this field will
|
||||
* contain the ID of the newly allocated context.
|
||||
* @indir_size: On entry, the array size of the user buffer for the
|
||||
* indirection table, which may be zero, or (for %ETHTOOL_SRSSH),
|
||||
* %ETH_RXFH_INDIR_NO_CHANGE. On return from %ETHTOOL_GRSSH,
|
||||
|
|
@ -1009,7 +1029,8 @@ struct ethtool_rxfh_indir {
|
|||
* size should be returned. For %ETHTOOL_SRSSH, an @indir_size of
|
||||
* %ETH_RXFH_INDIR_NO_CHANGE means that indir table setting is not requested
|
||||
* and a @indir_size of zero means the indir table should be reset to default
|
||||
* values. An hfunc of zero means that hash function setting is not requested.
|
||||
* values (if @rss_context == 0) or that the RSS context should be deleted.
|
||||
* An hfunc of zero means that hash function setting is not requested.
|
||||
*/
|
||||
struct ethtool_rxfh {
|
||||
uint32_t cmd;
|
||||
|
|
@ -1021,6 +1042,7 @@ struct ethtool_rxfh {
|
|||
uint32_t rsvd32;
|
||||
uint32_t rss_config[0];
|
||||
};
|
||||
#define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
|
||||
#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
|
||||
|
||||
/**
|
||||
|
|
@ -1635,6 +1657,8 @@ static inline int ethtool_validate_duplex(uint8_t duplex)
|
|||
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
|
||||
#define FLOW_EXT 0x80000000
|
||||
#define FLOW_MAC_EXT 0x40000000
|
||||
/* Flag to enable RSS spreading of traffic matching rule (nfc only) */
|
||||
#define FLOW_RSS 0x20000000
|
||||
|
||||
/* L3-L4 network traffic flow hash options */
|
||||
#define RXH_L2DA (1 << 1)
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ struct input_event {
|
|||
#define input_event_sec time.tv_sec
|
||||
#define input_event_usec time.tv_usec
|
||||
#else
|
||||
__kernel_ulong_t __sec;
|
||||
__kernel_ulong_t __usec;
|
||||
unsigned long __sec;
|
||||
unsigned long __usec;
|
||||
#define input_event_sec __sec
|
||||
#define input_event_usec __usec
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -520,6 +520,7 @@
|
|||
#define PCI_EXP_LNKCAP_SLS_2_5GB 0x00000001 /* LNKCAP2 SLS Vector bit 0 */
|
||||
#define PCI_EXP_LNKCAP_SLS_5_0GB 0x00000002 /* LNKCAP2 SLS Vector bit 1 */
|
||||
#define PCI_EXP_LNKCAP_SLS_8_0GB 0x00000003 /* LNKCAP2 SLS Vector bit 2 */
|
||||
#define PCI_EXP_LNKCAP_SLS_16_0GB 0x00000004 /* LNKCAP2 SLS Vector bit 3 */
|
||||
#define PCI_EXP_LNKCAP_MLW 0x000003f0 /* Maximum Link Width */
|
||||
#define PCI_EXP_LNKCAP_ASPMS 0x00000c00 /* ASPM Support */
|
||||
#define PCI_EXP_LNKCAP_L0SEL 0x00007000 /* L0s Exit Latency */
|
||||
|
|
@ -547,6 +548,7 @@
|
|||
#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */
|
||||
#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */
|
||||
#define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003 /* Current Link Speed 8.0GT/s */
|
||||
#define PCI_EXP_LNKSTA_CLS_16_0GB 0x0004 /* Current Link Speed 16.0GT/s */
|
||||
#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */
|
||||
#define PCI_EXP_LNKSTA_NLW_X1 0x0010 /* Current Link Width x1 */
|
||||
#define PCI_EXP_LNKSTA_NLW_X2 0x0020 /* Current Link Width x2 */
|
||||
|
|
@ -648,8 +650,9 @@
|
|||
#define PCI_CAP_EXP_RC_ENDPOINT_SIZEOF_V2 44 /* v2 endpoints without link end here */
|
||||
#define PCI_EXP_LNKCAP2 44 /* Link Capabilities 2 */
|
||||
#define PCI_EXP_LNKCAP2_SLS_2_5GB 0x00000002 /* Supported Speed 2.5GT/s */
|
||||
#define PCI_EXP_LNKCAP2_SLS_5_0GB 0x00000004 /* Supported Speed 5.0GT/s */
|
||||
#define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008 /* Supported Speed 8.0GT/s */
|
||||
#define PCI_EXP_LNKCAP2_SLS_5_0GB 0x00000004 /* Supported Speed 5GT/s */
|
||||
#define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008 /* Supported Speed 8GT/s */
|
||||
#define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010 /* Supported Speed 16GT/s */
|
||||
#define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100 /* Crosslink supported */
|
||||
#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */
|
||||
#define PCI_EXP_LNKSTA2 50 /* Link Status 2 */
|
||||
|
|
|
|||
|
|
@ -57,6 +57,21 @@ struct virtio_balloon_config {
|
|||
#define VIRTIO_BALLOON_S_HTLB_PGFAIL 9 /* Hugetlb page allocation failures */
|
||||
#define VIRTIO_BALLOON_S_NR 10
|
||||
|
||||
#define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "swap-out", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "major-faults", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "free-memory", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "total-memory", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \
|
||||
VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
|
||||
}
|
||||
|
||||
#define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
|
||||
|
||||
/*
|
||||
* Memory statistics structure.
|
||||
* Driver fills an array of these structures and passes to device.
|
||||
|
|
|
|||
|
|
@ -260,7 +260,6 @@ struct virtio_gpu_cmd_submit {
|
|||
};
|
||||
|
||||
#define VIRTIO_GPU_CAPSET_VIRGL 1
|
||||
#define VIRTIO_GPU_CAPSET_VIRGL2 2
|
||||
|
||||
/* VIRTIO_GPU_CMD_GET_CAPSET_INFO */
|
||||
struct virtio_gpu_get_capset_info {
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ struct pvrdma_alloc_pd_resp {
|
|||
};
|
||||
|
||||
struct pvrdma_create_cq {
|
||||
uint64_t buf_addr;
|
||||
uint64_t __attribute__((aligned(8))) buf_addr;
|
||||
uint32_t buf_size;
|
||||
uint32_t reserved;
|
||||
};
|
||||
|
|
@ -154,13 +154,13 @@ struct pvrdma_create_cq_resp {
|
|||
};
|
||||
|
||||
struct pvrdma_resize_cq {
|
||||
uint64_t buf_addr;
|
||||
uint64_t __attribute__((aligned(8))) buf_addr;
|
||||
uint32_t buf_size;
|
||||
uint32_t reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_create_srq {
|
||||
uint64_t buf_addr;
|
||||
uint64_t __attribute__((aligned(8))) buf_addr;
|
||||
uint32_t buf_size;
|
||||
uint32_t reserved;
|
||||
};
|
||||
|
|
@ -171,25 +171,25 @@ struct pvrdma_create_srq_resp {
|
|||
};
|
||||
|
||||
struct pvrdma_create_qp {
|
||||
uint64_t rbuf_addr;
|
||||
uint64_t sbuf_addr;
|
||||
uint64_t __attribute__((aligned(8))) rbuf_addr;
|
||||
uint64_t __attribute__((aligned(8))) sbuf_addr;
|
||||
uint32_t rbuf_size;
|
||||
uint32_t sbuf_size;
|
||||
uint64_t qp_addr;
|
||||
uint64_t __attribute__((aligned(8))) qp_addr;
|
||||
};
|
||||
|
||||
/* PVRDMA masked atomic compare and swap */
|
||||
struct pvrdma_ex_cmp_swap {
|
||||
uint64_t swap_val;
|
||||
uint64_t compare_val;
|
||||
uint64_t swap_mask;
|
||||
uint64_t compare_mask;
|
||||
uint64_t __attribute__((aligned(8))) swap_val;
|
||||
uint64_t __attribute__((aligned(8))) compare_val;
|
||||
uint64_t __attribute__((aligned(8))) swap_mask;
|
||||
uint64_t __attribute__((aligned(8))) compare_mask;
|
||||
};
|
||||
|
||||
/* PVRDMA masked atomic fetch and add */
|
||||
struct pvrdma_ex_fetch_add {
|
||||
uint64_t add_val;
|
||||
uint64_t field_boundary;
|
||||
uint64_t __attribute__((aligned(8))) add_val;
|
||||
uint64_t __attribute__((aligned(8))) field_boundary;
|
||||
};
|
||||
|
||||
/* PVRDMA address vector. */
|
||||
|
|
@ -207,14 +207,14 @@ struct pvrdma_av {
|
|||
|
||||
/* PVRDMA scatter/gather entry */
|
||||
struct pvrdma_sge {
|
||||
uint64_t addr;
|
||||
uint64_t __attribute__((aligned(8))) addr;
|
||||
uint32_t length;
|
||||
uint32_t lkey;
|
||||
};
|
||||
|
||||
/* PVRDMA receive queue work request */
|
||||
struct pvrdma_rq_wqe_hdr {
|
||||
uint64_t wr_id; /* wr id */
|
||||
uint64_t __attribute__((aligned(8))) wr_id; /* wr id */
|
||||
uint32_t num_sge; /* size of s/g array */
|
||||
uint32_t total_len; /* reserved */
|
||||
};
|
||||
|
|
@ -222,7 +222,7 @@ struct pvrdma_rq_wqe_hdr {
|
|||
|
||||
/* PVRDMA send queue work request */
|
||||
struct pvrdma_sq_wqe_hdr {
|
||||
uint64_t wr_id; /* wr id */
|
||||
uint64_t __attribute__((aligned(8))) wr_id; /* wr id */
|
||||
uint32_t num_sge; /* size of s/g array */
|
||||
uint32_t total_len; /* reserved */
|
||||
uint32_t opcode; /* operation type */
|
||||
|
|
@ -234,19 +234,19 @@ struct pvrdma_sq_wqe_hdr {
|
|||
uint32_t reserved;
|
||||
union {
|
||||
struct {
|
||||
uint64_t remote_addr;
|
||||
uint64_t __attribute__((aligned(8))) remote_addr;
|
||||
uint32_t rkey;
|
||||
uint8_t reserved[4];
|
||||
} rdma;
|
||||
struct {
|
||||
uint64_t remote_addr;
|
||||
uint64_t compare_add;
|
||||
uint64_t swap;
|
||||
uint64_t __attribute__((aligned(8))) remote_addr;
|
||||
uint64_t __attribute__((aligned(8))) compare_add;
|
||||
uint64_t __attribute__((aligned(8))) swap;
|
||||
uint32_t rkey;
|
||||
uint32_t reserved;
|
||||
} atomic;
|
||||
struct {
|
||||
uint64_t remote_addr;
|
||||
uint64_t __attribute__((aligned(8))) remote_addr;
|
||||
uint32_t log_arg_sz;
|
||||
uint32_t rkey;
|
||||
union {
|
||||
|
|
@ -255,13 +255,14 @@ struct pvrdma_sq_wqe_hdr {
|
|||
} wr_data;
|
||||
} masked_atomics;
|
||||
struct {
|
||||
uint64_t iova_start;
|
||||
uint64_t pl_pdir_dma;
|
||||
uint64_t __attribute__((aligned(8))) iova_start;
|
||||
uint64_t __attribute__((aligned(8))) pl_pdir_dma;
|
||||
uint32_t page_shift;
|
||||
uint32_t page_list_len;
|
||||
uint32_t length;
|
||||
uint32_t access_flags;
|
||||
uint32_t rkey;
|
||||
uint32_t reserved;
|
||||
} fast_reg;
|
||||
struct {
|
||||
uint32_t remote_qpn;
|
||||
|
|
@ -274,8 +275,8 @@ struct pvrdma_sq_wqe_hdr {
|
|||
|
||||
/* Completion queue element. */
|
||||
struct pvrdma_cqe {
|
||||
uint64_t wr_id;
|
||||
uint64_t qp;
|
||||
uint64_t __attribute__((aligned(8))) wr_id;
|
||||
uint64_t __attribute__((aligned(8))) qp;
|
||||
uint32_t opcode;
|
||||
uint32_t status;
|
||||
uint32_t byte_len;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue