summaryrefslogtreecommitdiff
path: root/usr/src/lib
diff options
context:
space:
mode:
authorHans Rosenfeld <hans.rosenfeld@joyent.com>2017-12-19 17:31:28 +0100
committerPatrick Mooney <pmooney@pfmooney.com>2018-03-05 21:04:13 +0000
commit4854aef507655bd094943da0db30a1a493c4c97a (patch)
treec8286f89cb309ea7d52a3c02f9b7e9d503abddd5 /usr/src/lib
parent0aebb1a717eb0d01fb3bad7889984fdfcba97451 (diff)
downloadillumos-joyent-4854aef507655bd094943da0db30a1a493c4c97a.tar.gz
OS-6674 port bhyve pci-passthru to illumos
Reviewed by: John Levon <john.levon@joyent.com> Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com> Approved by: Jerry Jelinek <jerry.jelinek@joyent.com>
Diffstat (limited to 'usr/src/lib')
-rw-r--r--usr/src/lib/libvmmapi/common/mapfile-vers1
-rw-r--r--usr/src/lib/libvmmapi/common/vmmapi.c20
-rw-r--r--usr/src/lib/libvmmapi/common/vmmapi.h2
3 files changed, 23 insertions, 0 deletions
diff --git a/usr/src/lib/libvmmapi/common/mapfile-vers b/usr/src/lib/libvmmapi/common/mapfile-vers
index f69738f50a..d8797736ba 100644
--- a/usr/src/lib/libvmmapi/common/mapfile-vers
+++ b/usr/src/lib/libvmmapi/common/mapfile-vers
@@ -60,6 +60,7 @@ SYMBOL_VERSION ILLUMOSprivate {
vm_get_lowmem_size;
vm_get_memflags;
vm_get_memseg;
+ vm_get_pptdev_limits;
vm_get_register;
vm_get_seg_desc;
vm_get_stat_desc;
diff --git a/usr/src/lib/libvmmapi/common/vmmapi.c b/usr/src/lib/libvmmapi/common/vmmapi.c
index 0bb42db98f..a40a93578a 100644
--- a/usr/src/lib/libvmmapi/common/vmmapi.c
+++ b/usr/src/lib/libvmmapi/common/vmmapi.c
@@ -997,6 +997,26 @@ vm_setup_pptdev_msix(struct vmctx *ctx, int vcpu, int bus, int slot, int func,
return ioctl(ctx->fd, VM_PPTDEV_MSIX, &pptmsix);
}
+int
+vm_get_pptdev_limits(struct vmctx *ctx, int bus, int slot, int func,
+ int *msi_limit, int *msix_limit)
+{
+ struct vm_pptdev_limits pptlimits;
+ int error;
+
+ bzero(&pptlimits, sizeof (pptlimits));
+ pptlimits.bus = bus;
+ pptlimits.slot = slot;
+ pptlimits.func = func;
+
+ error = ioctl(ctx->fd, VM_GET_PPTDEV_LIMITS, &pptlimits);
+
+ *msi_limit = pptlimits.msi_limit;
+ *msix_limit = pptlimits.msix_limit;
+
+ return (error);
+}
+
uint64_t *
vm_get_stats(struct vmctx *ctx, int vcpu, struct timeval *ret_tv,
int *ret_entries)
diff --git a/usr/src/lib/libvmmapi/common/vmmapi.h b/usr/src/lib/libvmmapi/common/vmmapi.h
index f5a1e954d5..77ab2bc935 100644
--- a/usr/src/lib/libvmmapi/common/vmmapi.h
+++ b/usr/src/lib/libvmmapi/common/vmmapi.h
@@ -171,6 +171,8 @@ int vm_setup_pptdev_msi(struct vmctx *ctx, int vcpu, int bus, int slot,
int vm_setup_pptdev_msix(struct vmctx *ctx, int vcpu, int bus, int slot,
int func, int idx, uint64_t addr, uint64_t msg,
uint32_t vector_control);
+int vm_get_pptdev_limits(struct vmctx *ctx, int bus, int slot, int func,
+ int *msi_limit, int *msix_limit);
int vm_get_intinfo(struct vmctx *ctx, int vcpu, uint64_t *i1, uint64_t *i2);
int vm_set_intinfo(struct vmctx *ctx, int vcpu, uint64_t exit_intinfo);