aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorThanos Makatos <thanos.makatos@nutanix.com>2021-07-12 09:20:54 +0100
committerGitHub <noreply@github.com>2021-07-12 09:20:54 +0100
commitf44091db918d54211cb43683b091c61a6177d450 (patch)
treec15a7fbeaec11ad86bc77a5e4ed141e1348d239c /lib
parentb5164c73125ab4bbb6e3e7742efbeb358e85e872 (diff)
downloadlibvfio-user-f44091db918d54211cb43683b091c61a6177d450.zip
libvfio-user-f44091db918d54211cb43683b091c61a6177d450.tar.gz
libvfio-user-f44091db918d54211cb43683b091c61a6177d450.tar.bz2
basic write support for PXLC, PXSC, PXRS, and PXSC2 (#575)
Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com> Reviewed-by: John Levon <john.levon@nutanix.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/pci_caps.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/pci_caps.c b/lib/pci_caps.c
index d7d312f..ec0dbd8 100644
--- a/lib/pci_caps.c
+++ b/lib/pci_caps.c
@@ -292,6 +292,30 @@ handle_px_pxdc_write(vfu_ctx_t *vfu_ctx, struct pxcap *px,
return 0;
}
+/* TODO implement */
+static int
+handle_px_pxlc_write(vfu_ctx_t *vfu_ctx UNUSED, struct pxcap *px UNUSED,
+ const union pxlc *const p UNUSED)
+{
+ return 0;
+}
+
+/* TODO implement */
+static int
+handle_px_pxsc_write(vfu_ctx_t *vfu_ctx UNUSED, struct pxcap *px UNUSED,
+ const struct pxsc *const p UNUSED)
+{
+ return 0;
+}
+
+/* TODO implement */
+static int
+handle_px_pxrc_write(vfu_ctx_t *vfu_ctx UNUSED, struct pxcap *px UNUSED,
+ const struct pxrc *const p UNUSED)
+{
+ return 0;
+}
+
static int
handle_px_pxdc2_write(vfu_ctx_t *vfu_ctx, struct pxcap *px,
const union pxdc2 *const p)
@@ -327,10 +351,18 @@ handle_px_write_2_bytes(vfu_ctx_t *vfu_ctx, struct pxcap *px, char *buf,
switch (off) {
case offsetof(struct pxcap, pxdc):
return handle_px_pxdc_write(vfu_ctx, px, (union pxdc *)buf);
+ case offsetof(struct pxcap, pxlc):
+ return handle_px_pxlc_write(vfu_ctx, px, (union pxlc *)buf);
+ case offsetof(struct pxcap, pxsc):
+ return handle_px_pxsc_write(vfu_ctx, px, (struct pxsc *)buf);
+ case offsetof(struct pxcap, pxrc):
+ return handle_px_pxrc_write(vfu_ctx, px, (struct pxrc *)buf);
case offsetof(struct pxcap, pxdc2):
return handle_px_pxdc2_write(vfu_ctx, px, (union pxdc2 *)buf);
case offsetof(struct pxcap, pxlc2):
return handle_px_pxlc2_write(vfu_ctx, px, (struct pxlc2 *)buf);
+ case offsetof(struct pxcap, pxsc2): /* RsvdZ */
+ return 0;
}
return ERROR_INT(EINVAL);
}