-no-shutdown \
-boot menu=on \
-usb \
--tpmdev passthrough,id=tpm-tpm0,path=/dev/tpm0,\
-cancel-path=/sys/class/misc/tpm0/device/cancel \
+-tpmdev passthrough,id=tpm-tpm0,path=/dev/fdset/0,cancel-path=/dev/fdset/1 \
+-add-fd set=0,fd=1730 \
+-add-fd set=1,fd=1731 \
-device tpm-crb,tpmdev=tpm-tpm0,id=tpm0 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
-no-shutdown \
-boot menu=on \
-usb \
--tpmdev passthrough,id=tpm-tpm0,path=/dev/tpm0,\
-cancel-path=/sys/class/misc/tpm0/device/cancel \
+-tpmdev passthrough,id=tpm-tpm0,path=/dev/fdset/0,cancel-path=/dev/fdset/1 \
+-add-fd set=0,fd=1730 \
+-add-fd set=1,fd=1731 \
-device tpm-tis,tpmdev=tpm-tpm0,id=tpm0 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
static void (*real_virCommandPassFD)(virCommandPtr cmd, int fd, unsigned int flags);
-static const int testCommandPassSafeFDs[] = { -1 };
+static const int testCommandPassSafeFDs[] = { 1730, 1731 };
void
virCommandPassFD(virCommandPtr cmd,
abort();
return 1729;
}
+
+
+int
+qemuBuildTPMOpenBackendFDs(const char *tpmdev ATTRIBUTE_UNUSED,
+ const char *cancel_path ATTRIBUTE_UNUSED,
+ int *tpmfd,
+ int *cancelfd)
+{
+ if (fcntl(1730, F_GETFD) != -1 ||
+ fcntl(1731, F_GETFD) != -1)
+ abort();
+
+ *tpmfd = 1730;
+ *cancelfd = 1731;
+ return 0;
+}
QEMU_CAPS_KVM);
DO_TEST("tpm-passthrough",
+ QEMU_CAPS_ADD_FD,
QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, QEMU_CAPS_DEVICE_TPM_TIS);
DO_TEST("tpm-passthrough-crb",
+ QEMU_CAPS_ADD_FD,
QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, QEMU_CAPS_DEVICE_TPM_CRB);
DO_TEST_PARSE_ERROR("tpm-no-backend-invalid",
QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, QEMU_CAPS_DEVICE_TPM_TIS);