mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
PCI: hv: Add a Hyper-V PCI interface driver for software backchannel interface
This interface driver is a helper driver allows other drivers to have a common interface with the Hyper-V PCI frontend driver. Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e5d2f910cf
commit
348dd93e40
7 changed files with 108 additions and 11 deletions
|
@ -1579,18 +1579,32 @@ hv_pkt_iter_next(struct vmbus_channel *channel,
|
|||
pkt = hv_pkt_iter_next(channel, pkt))
|
||||
|
||||
/*
|
||||
* Functions for passing data between SR-IOV PF and VF drivers. The VF driver
|
||||
* Interface for passing data between SR-IOV PF and VF drivers. The VF driver
|
||||
* sends requests to read and write blocks. Each block must be 128 bytes or
|
||||
* smaller. Optionally, the VF driver can register a callback function which
|
||||
* will be invoked when the host says that one or more of the first 64 block
|
||||
* IDs is "invalid" which means that the VF driver should reread them.
|
||||
*/
|
||||
#define HV_CONFIG_BLOCK_SIZE_MAX 128
|
||||
int hv_read_config_block(struct pci_dev *dev, void *buf, unsigned int buf_len,
|
||||
unsigned int block_id, unsigned int *bytes_returned);
|
||||
int hv_write_config_block(struct pci_dev *dev, void *buf, unsigned int len,
|
||||
unsigned int block_id);
|
||||
int hv_register_block_invalidate(struct pci_dev *dev, void *context,
|
||||
void (*block_invalidate)(void *context,
|
||||
u64 block_mask));
|
||||
|
||||
int hyperv_read_cfg_blk(struct pci_dev *dev, void *buf, unsigned int buf_len,
|
||||
unsigned int block_id, unsigned int *bytes_returned);
|
||||
int hyperv_write_cfg_blk(struct pci_dev *dev, void *buf, unsigned int len,
|
||||
unsigned int block_id);
|
||||
int hyperv_reg_block_invalidate(struct pci_dev *dev, void *context,
|
||||
void (*block_invalidate)(void *context,
|
||||
u64 block_mask));
|
||||
|
||||
struct hyperv_pci_block_ops {
|
||||
int (*read_block)(struct pci_dev *dev, void *buf, unsigned int buf_len,
|
||||
unsigned int block_id, unsigned int *bytes_returned);
|
||||
int (*write_block)(struct pci_dev *dev, void *buf, unsigned int len,
|
||||
unsigned int block_id);
|
||||
int (*reg_blk_invalidate)(struct pci_dev *dev, void *context,
|
||||
void (*block_invalidate)(void *context,
|
||||
u64 block_mask));
|
||||
};
|
||||
|
||||
extern struct hyperv_pci_block_ops hvpci_block_ops;
|
||||
|
||||
#endif /* _HYPERV_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue