From: John Johnson <john.g.johnson@oracle.com>
To: qemu-devel@nongnu.org
Subject: [RFC v3 18/19] vfio-user: pci reset
Date: Mon, 8 Nov 2021 16:46:46 -0800 [thread overview]
Message-ID: <8ae17fad576ba004ca6623830d5de1e3f72e5478.1636057885.git.john.g.johnson@oracle.com> (raw)
In-Reply-To: <cover.1636057885.git.john.g.johnson@oracle.com>
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
---
hw/vfio/user.h | 1 +
hw/vfio/pci.c | 15 +++++++++++++++
hw/vfio/user.c | 12 ++++++++++++
3 files changed, 28 insertions(+)
diff --git a/hw/vfio/user.h b/hw/vfio/user.h
index e6c1091..7504681 100644
--- a/hw/vfio/user.h
+++ b/hw/vfio/user.h
@@ -88,6 +88,7 @@ void vfio_user_send_reply(VFIOProxy *proxy, VFIOUserHdr *hdr, int size);
void vfio_user_send_error(VFIOProxy *proxy, VFIOUserHdr *hdr, int error);
void vfio_user_putfds(VFIOUserMsg *msg);
int vfio_user_validate_version(VFIODevice *vbasedev, Error **errp);
+void vfio_user_reset(VFIOProxy *proxy);
extern VFIODevIO vfio_dev_io_sock;
extern VFIOContIO vfio_cont_io_sock;
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 877e3e3..ccb2563 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -3792,6 +3792,20 @@ static void vfio_user_instance_finalize(Object *obj)
}
}
+static void vfio_user_pci_reset(DeviceState *dev)
+{
+ VFIOPCIDevice *vdev = VFIO_PCI_BASE(dev);
+ VFIODevice *vbasedev = &vdev->vbasedev;
+
+ vfio_pci_pre_reset(vdev);
+
+ if (vbasedev->reset_works) {
+ vfio_user_reset(vbasedev->proxy);
+ }
+
+ vfio_pci_post_reset(vdev);
+}
+
static Property vfio_user_pci_dev_properties[] = {
DEFINE_PROP_STRING("socket", VFIOUserPCIDevice, sock_name),
DEFINE_PROP_BOOL("secure-dma", VFIOUserPCIDevice, secure_dma, false),
@@ -3805,6 +3819,7 @@ static void vfio_user_pci_dev_class_init(ObjectClass *klass, void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
PCIDeviceClass *pdc = PCI_DEVICE_CLASS(klass);
+ dc->reset = vfio_user_pci_reset;
device_class_set_props(dc, vfio_user_pci_dev_properties);
dc->desc = "VFIO over socket PCI device assignment";
pdc->realize = vfio_user_pci_realize;
diff --git a/hw/vfio/user.c b/hw/vfio/user.c
index 2f3eac8..76d0706 100644
--- a/hw/vfio/user.c
+++ b/hw/vfio/user.c
@@ -1386,6 +1386,18 @@ static int vfio_user_region_write(VFIOProxy *proxy, uint8_t index, off_t offset,
return ret;
}
+void vfio_user_reset(VFIOProxy *proxy)
+{
+ VFIOUserHdr msg;
+
+ vfio_user_request_msg(&msg, VFIO_USER_DEVICE_RESET, sizeof(msg), 0);
+
+ vfio_user_send_wait(proxy, &msg, NULL, 0, false);
+ if (msg.flags & VFIO_USER_ERROR) {
+ error_printf("reset reply error %d\n", msg.error_reply);
+ }
+}
+
/*
* Socket-based io_ops
--
1.8.3.1
next prev parent reply other threads:[~2021-11-09 0:56 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-09 0:46 [RFC v3 00/19] vfio-user client John Johnson
2021-11-09 0:46 ` [RFC v3 01/19] vfio-user: introduce vfio-user protocol specification John Johnson
2021-11-09 0:46 ` [RFC v3 02/19] vfio-user: add VFIO base abstract class John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:47 ` John Johnson
2021-11-09 0:46 ` [RFC v3 03/19] Add container IO ops vector John Johnson
2021-11-09 0:46 ` [RFC v3 04/19] Add device " John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:48 ` John Johnson
2021-11-09 0:46 ` [RFC v3 05/19] Add validation " John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:48 ` John Johnson
2021-11-09 0:46 ` [RFC v3 06/19] vfio-user: Define type vfio_user_pci_dev_info John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:49 ` John Johnson
2021-11-09 0:46 ` [RFC v3 07/19] vfio-user: connect vfio proxy to remote server John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:49 ` John Johnson
2021-11-09 0:46 ` [RFC v3 08/19] vfio-user: define socket receive functions John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:49 ` John Johnson
2021-11-09 0:46 ` [RFC v3 09/19] vfio-user: define socket send functions John Johnson
2021-11-09 0:46 ` [RFC v3 10/19] vfio-user: get device info John Johnson
2021-11-09 0:46 ` [RFC v3 11/19] vfio-user: get region info John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:50 ` John Johnson
2021-11-09 0:46 ` [RFC v3 12/19] vfio-user: region read/write John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:50 ` John Johnson
2021-11-09 0:46 ` [RFC v3 13/19] vfio-user: pci_user_realize PCI setup John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:50 ` John Johnson
2021-11-09 0:46 ` [RFC v3 14/19] vfio-user: get and set IRQs John Johnson
2021-11-09 0:46 ` [RFC v3 15/19] vfio-user: proxy container connect/disconnect John Johnson
2021-11-09 0:46 ` [RFC v3 16/19] vfio-user: dma map/unmap operations John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:50 ` John Johnson
2021-11-09 0:46 ` [RFC v3 17/19] vfio-user: dma read/write operations John Johnson
2021-11-09 0:46 ` John Johnson [this message]
2021-11-09 0:46 ` [RFC v3 19/19] vfio-user: migration support John Johnson
2021-11-19 22:42 ` Alex Williamson
2021-12-07 7:50 ` John Johnson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8ae17fad576ba004ca6623830d5de1e3f72e5478.1636057885.git.john.g.johnson@oracle.com \
--to=john.g.johnson@oracle.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).