diff --git a/Makefile b/Makefile index 08761efed..c2c387e3a 100644 --- a/Makefile +++ b/Makefile @@ -284,15 +284,19 @@ clean mrproper: $(Q) $(MAKE) $(build)=crit $@ .PHONY: clean mrproper +clean-dummy_amdgpu_plugin: + $(Q) $(MAKE) -C plugins/amdgpu clean +.PHONY: clean dummy_amdgpu_plugin + clean-top: $(Q) $(MAKE) -C Documentation clean $(Q) $(MAKE) $(build)=test/compel clean $(Q) $(RM) .gitid .PHONY: clean-top -clean: clean-top +clean: clean-top clean-dummy_amdgpu_plugin -mrproper-top: clean-top +mrproper-top: clean-top clean-dummy_amdgpu_plugin $(Q) $(RM) $(CONFIG_HEADER) $(Q) $(RM) $(VERSION_HEADER) $(Q) $(RM) $(COMPEL_VERSION_HEADER) @@ -320,6 +324,10 @@ test: zdtm $(Q) $(MAKE) -C test .PHONY: test +dummy_amdgpu_plugin: + $(Q) $(MAKE) -C plugins/amdgpu all +.PHONY: dummy_amdgpu_plugin + # # Generating tar requires tag matched CRIU_VERSION. # If not found then simply use GIT's describe with diff --git a/Makefile.install b/Makefile.install index 3987bcc6f..52e8c06da 100644 --- a/Makefile.install +++ b/Makefile.install @@ -7,6 +7,7 @@ MANDIR ?= $(PREFIX)/share/man INCLUDEDIR ?= $(PREFIX)/include LIBEXECDIR ?= $(PREFIX)/libexec RUNDIR ?= /run +PLUGINDIR ?= /var/lib/criu # # For recent Debian/Ubuntu with multiarch support. @@ -26,7 +27,7 @@ endif LIBDIR ?= $(PREFIX)/lib export PREFIX BINDIR SBINDIR MANDIR RUNDIR -export LIBDIR INCLUDEDIR LIBEXECDIR +export LIBDIR INCLUDEDIR LIBEXECDIR PLUGINDIR install-man: $(Q) $(MAKE) -C Documentation install @@ -40,6 +41,10 @@ install-criu: criu $(Q) $(MAKE) $(build)=criu install .PHONY: install-criu +install-dummy_amdgpu_plugin: dummy_amdgpu_plugin + $(Q) $(MAKE) -C plugins/amdgpu install +.PHONY: install-dummy_amdgpu_plugin + install-compel: $(compel-install-targets) $(Q) $(MAKE) $(build)=compel install $(Q) $(MAKE) $(build)=compel/plugins install @@ -54,4 +59,5 @@ uninstall: $(Q) $(MAKE) $(build)=criu $@ $(Q) $(MAKE) $(build)=compel $@ $(Q) $(MAKE) $(build)=compel/plugins $@ + $(Q) $(MAKE) -C plugins/amdgpu $@ .PHONY: uninstall diff --git a/plugins/amdgpu/Makefile b/plugins/amdgpu/Makefile new file mode 100644 index 000000000..45a9ec611 --- /dev/null +++ b/plugins/amdgpu/Makefile @@ -0,0 +1,13 @@ +all: dummy_plugin.so + +dummy_plugin.so: dummy_plugin.c + gcc -g -Werror -D _GNU_SOURCE -Wall -shared -nostartfiles dummy_plugin.c -o dummy_plugin.so -iquote ../../../criu/include -iquote ../../criu/include -fPIC + +clean: + $(Q) $(RM) dummy_plugin.so +install: + $(Q) mkdir -p $(PLUGINDIR) + $(Q) install -m 644 dummy_plugin.so $(PLUGINDIR) + +uninstall: + $(Q) $(RM) $(PLUGINDIR)/dummy_plugin.so diff --git a/plugins/amdgpu/dummy_plugin.c b/plugins/amdgpu/dummy_plugin.c new file mode 100644 index 000000000..872276095 --- /dev/null +++ b/plugins/amdgpu/dummy_plugin.c @@ -0,0 +1,36 @@ +#include + +#include "criu-log.h" +#include "criu-plugin.h" + +int dummy_plugin_handle_device_vma(int fd, const struct stat *stat) +{ + pr_info("dummy_plugin: Inside %s for fd = %d\n", __func__, fd); + /* let criu report failure for the unsupported mapping */ + return -ENOTSUP; +} +CR_PLUGIN_REGISTER_HOOK(CR_PLUGIN_HOOK__HANDLE_DEVICE_VMA, dummy_plugin_handle_device_vma) + +int dummy_plugin_resume_devices_late(int target_pid) +{ + pr_info("dummy_plugin: Inside %s for target pid = %d\n", __func__, target_pid); + return -ENOTSUP; +} +CR_PLUGIN_REGISTER_HOOK(CR_PLUGIN_HOOK__RESUME_DEVICES_LATE, dummy_plugin_resume_devices_late) + +/* + * return 0 if no match found + * return -1 for error or -ENOTSUP. + * return 1 if vmap map must be adjusted. + */ +int dummy_plugin_update_vmamap(const char *old_path, char *new_path, const uint64_t addr, const uint64_t old_offset, + uint64_t *new_offset) +{ + uint64_t temp = 100; + + *new_offset = temp; + pr_info("dummy_plugin: old_pgoff= 0x%lu new_pgoff = 0x%lx old_path = %s new_path = %s addr = 0x%lu\n", + old_offset, *new_offset, old_path, new_path, addr); + return -ENOTSUP; +} +CR_PLUGIN_REGISTER_HOOK(CR_PLUGIN_HOOK__UPDATE_VMA_MAP, dummy_plugin_update_vmamap)