Add rtentsk plugin support.

See: https://github.com/redhat-performance/tuned/pull/289

--- a/profiles/realtime-virtual-guest/script.sh
+++ b/profiles/realtime-virtual-guest/script.sh
@@ -5,7 +5,6 @@
 KTIMER_LOCKLESS_FILE=/sys/kernel/ktimer_lockless_check
 
 start() {
-    systemctl start rt-entsk
     if [ -f $KTIMER_LOCKLESS_FILE ]; then
         echo 1 > $KTIMER_LOCKLESS_FILE
     fi
@@ -13,8 +12,7 @@ start() {
 }
 
 stop() {
-    systemctl stop rt-entsk
-    return "$?"
+    return 0
 }
 
 verify() {
diff --git a/profiles/realtime-virtual-host/script.sh b/profiles/realtime-virtual-host/script.sh
index a11dac75..030f2b07 100755
--- a/profiles/realtime-virtual-host/script.sh
+++ b/profiles/realtime-virtual-host/script.sh
@@ -9,8 +9,6 @@ start() {
 
     disable_ksm
 
-    systemctl start rt-entsk
-
     if [ -f $KTIMER_LOCKLESS_FILE ]; then
         echo 1 > $KTIMER_LOCKLESS_FILE
     fi
@@ -23,7 +21,6 @@ stop() {
         teardown_kvm_mod_low_latency
         enable_ksm
     fi
-    systemctl stop rt-entsk
     return "$?"
 }
 
diff --git a/profiles/realtime/tuned.conf b/profiles/realtime/tuned.conf
index cd998b79..8eed36ea 100644
--- a/profiles/realtime/tuned.conf
+++ b/profiles/realtime/tuned.conf
@@ -58,3 +58,5 @@ script = ${i:PROFILE_DIR}/script.sh
 
 [scheduler]
 isolated_cores=${isolated_cores}
+
+[rtentsk]
diff --git a/tuned/plugins/plugin_rtentsk.py b/tuned/plugins/plugin_rtentsk.py
new file mode 100644
index 00000000..22d873fb
--- /dev/null
+++ b/tuned/plugins/plugin_rtentsk.py
@@ -0,0 +1,36 @@
+from . import base
+from .decorators import *
+import tuned.logs
+from tuned.utils.commands import commands
+import glob
+import socket
+import time
+
+log = tuned.logs.get()
+
+class RTENTSKPlugin(base.Plugin):
+	"""
+	Plugin for avoiding interruptions due to static key IPIs due
+        to opening socket with timestamping enabled (by opening a
+        socket ourselves the static key is kept enabled).
+	"""
+
+	def _instance_init(self, instance):
+		instance._has_static_tuning = True
+		instance._has_dynamic_tuning = False
+
+		# SO_TIMESTAMP nor SOF_TIMESTAMPING_OPT_TX_SWHW is defined by
+		# the socket class
+
+		SO_TIMESTAMP = 29 # see include/uapi/asm-generic/socket.h
+		#define SO_TIMESTAMP 0x4012 # parisc!
+		SOF_TIMESTAMPING_OPT_TX_SWHW = (1<<14) # see include/uapi/linux/net_tstamp.h
+
+		s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
+		s.setsockopt(socket.SOL_SOCKET, SO_TIMESTAMP, SOF_TIMESTAMPING_OPT_TX_SWHW)
+		self.rtentsk_socket = s
+		log.info("opened SOF_TIMESTAMPING_OPT_TX_SWHW socket")
+
+	def _instance_cleanup(self, instance):
+		s = self.rtentsk_socket
+		s.close()
