diff options
author | Swapnil Ingle <swapnil.ingle@nutanix.com> | 2021-05-25 15:25:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-25 15:25:35 +0200 |
commit | 405f2ffc3125d44c7fde31fe2bb9b312746eb4e1 (patch) | |
tree | e2ab2e95b859e71010a574815ba0664a35b02789 /lib | |
parent | f74a146a6b93f7bd366853739d8ec0dfc9c4a48f (diff) | |
download | libvfio-user-405f2ffc3125d44c7fde31fe2bb9b312746eb4e1.zip libvfio-user-405f2ffc3125d44c7fde31fe2bb9b312746eb4e1.tar.gz libvfio-user-405f2ffc3125d44c7fde31fe2bb9b312746eb4e1.tar.bz2 |
Handle support of PCI FLR capability (#517)
* Handle support of PCI FLR capability
If device supports FLR cap then call vfu_reset_cb_t when FLR is
initiated by client.
Signed-off-by: Swapnil Ingle <swapnil.ingle@nutanix.com>
Reviewed-by: John Levon <john.levon@nutanix.com>
Reviewed-by: Thanos Makatos <thanos.makatos@nutanix.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pci_caps.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/pci_caps.c b/lib/pci_caps.c index 550d373..b00b9b8 100644 --- a/lib/pci_caps.c +++ b/lib/pci_caps.c @@ -277,8 +277,16 @@ handle_px_pxdc_write(vfu_ctx_t *vfu_ctx, struct pxcap *px, } if (p->iflr) { - vfu_log(vfu_ctx, LOG_DEBUG, - "initiate function level reset"); + if (px->pxdcap.flrc == 0) { + vfu_log(vfu_ctx, LOG_ERR, "FLR capability is not supported"); + return ERROR_INT(EINVAL); + } + if (vfu_ctx->reset != NULL) { + vfu_log(vfu_ctx, LOG_DEBUG, "initiate function level reset"); + return vfu_ctx->reset(vfu_ctx, VFU_RESET_PCI_FLR); + } else { + vfu_log(vfu_ctx, LOG_ERR, "FLR callback is not implemented"); + } } return 0; |