#include "virstring.h"
#include "virerror.h"
+#include "viralloc.h"
+#include "virfile.h"
#include "virtpm.h"
#define VIR_FROM_THIS VIR_FROM_NONE
{
char *path = NULL;
const char *dev;
+ const char *prefix[] = {"misc/", "tpm/"};
+ size_t i;
if (devpath) {
dev = strrchr(devpath, '/');
if (dev) {
dev++;
- if (virAsprintf(&path, "/sys/class/misc/%s/device/cancel",
- dev) < 0)
- goto cleanup;
+ for (i = 0; i < ARRAY_CARDINALITY(prefix); i++) {
+ if (virAsprintf(&path, "/sys/class/%s%s/device/cancel",
+ prefix[i], dev) < 0)
+ goto cleanup;
+
+ if (virFileExists(path))
+ break;
+
+ VIR_FREE(path);
+ }
+ if (!path)
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("No usable sysfs TPM cancel file could be "
+ "found"));
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("TPM device path %s is invalid"), devpath);
#include "virnuma.h"
#include "virmock.h"
#include "virutil.h"
+#include "virstring.h"
+#include "virtpm.h"
#include <time.h>
#include <unistd.h>
+#define VIR_FROM_THIS VIR_FROM_NONE
+
long virGetSystemPageSize(void)
{
return 4096;
return node >= 0 && node <= virNumaGetMaxNode();
}
#endif /* WITH_NUMACTL && HAVE_NUMA_BITMASK_ISBITSET */
+
+char *
+virTPMCreateCancelPath(const char *devpath)
+{
+ char *path;
+ (void)devpath;
+
+ ignore_value(VIR_STRDUP(path, "/sys/class/misc/tpm0/device/cancel"));
+
+ return path;
+}