diff --git a/.gitignore b/.gitignore
index 359611c..99fe941 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/tuna-0.16.tar.xz
+SOURCES/tuna-0.17.tar.xz
diff --git a/.tuna.metadata b/.tuna.metadata
index d0a8076..88e8cd7 100644
--- a/.tuna.metadata
+++ b/.tuna.metadata
@@ -1 +1 @@
-634c59ed06f7e638412e0e4832cf811c432a767b SOURCES/tuna-0.16.tar.xz
+9bde1e92e09277efcb13ee5808baa1632ae815cb SOURCES/tuna-0.17.tar.xz
diff --git a/SOURCES/tuna-Add-distinction-between-spread-and-move-to-erro.patch b/SOURCES/tuna-Add-distinction-between-spread-and-move-to-erro.patch
deleted file mode 100644
index da88748..0000000
--- a/SOURCES/tuna-Add-distinction-between-spread-and-move-to-erro.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c9d2fc624905cd0af96ee9f84317d562a042fe14 Mon Sep 17 00:00:00 2001
-From: Leah Leshchinsky <lleshchi@redhat.com>
-Date: Wed, 6 Oct 2021 13:21:50 -0400
-Subject: [PATCH] tuna: Add distinction between --spread and --move to error
- message
-
-Currently, the command `tuna --cpus=CPU-LIST --spread` generates an
-error with the warning "tuna: --move requires a list of threads/irqs!".
-Similarly, when the command `tuna --threads=THREAD-LIST --spread` is
-run, it generates the warning "tuna: --move requires a cpu list!".
-
-This can be confusing to the user, especially with commands that use both
-the "--spread" and "--move" flags. The warning should specify "--spread"
-when that is the source of the error.
-
-Check whether the argument is a move or spread and update the warning
-string accordingly.
-
-Signed-off-by: Leah Leshchinsky <lleshchi@redhat.com>
----
- tuna-cmd.py | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/tuna-cmd.py b/tuna-cmd.py
-index 8617966..8dfad9e 100755
---- a/tuna-cmd.py
-+++ b/tuna-cmd.py
-@@ -633,15 +633,14 @@ def main():
-         elif o in ("-n", "--show_sockets"):
-             show_sockets = True
-         elif o in ("-m", "--move", "-x", "--spread"):
-+            spread = o in ("-x", "--spread")
-             if not cpu_list:
--                print("tuna: --move " + _("requires a cpu list!"))
-+                print("tuna: %s " % ("--spread" if spread else "--move") + _("requires a cpu list!"))
-                 sys.exit(2)
-             if not (thread_list or irq_list):
--                print("tuna: --move " + _("requires a list of threads/irqs!"))
-+                print("tuna: %s " % ("--spread" if spread else "--move") + _("requires a list of threads/irqs!"))
-                 sys.exit(2)
- 
--            spread = o in ("-x", "--spread")
--
-             if thread_list:
-                 tuna.move_threads_to_cpu(cpu_list, thread_list, spread=spread)
- 
--- 
-2.27.0
-
diff --git a/SOURCES/tuna-Fix-ModuleNotFoundError.patch b/SOURCES/tuna-Fix-ModuleNotFoundError.patch
new file mode 100644
index 0000000..7b5cc20
--- /dev/null
+++ b/SOURCES/tuna-Fix-ModuleNotFoundError.patch
@@ -0,0 +1,35 @@
+From 7684169d22af5379d2f466730c450afc92e80da8 Mon Sep 17 00:00:00 2001
+From: John Kacur <jkacur@redhat.com>
+Date: Tue, 11 Jan 2022 16:58:58 -0500
+Subject: [PATCH] tuna: Fix ModuleNotFoundError
+
+commit 43b434867514934593ada5aa8ea448ef6a1778f9 fixed the problem with
+relative imports but unfortunately created a new problem with installed
+tuna
+
+This fixes the original problem and also fixes the ModuleNotFoundError
+in an installed (not running from git) version of tuna.
+
+Signed-off-by: John Kacur <jkacur@redhat.com>
+---
+ tuna/tuna.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tuna/tuna.py b/tuna/tuna.py
+index 98a1725598dd..8fb42121e2e4 100755
+--- a/tuna/tuna.py
++++ b/tuna/tuna.py
+@@ -12,8 +12,8 @@ import platform
+ import ethtool
+ import procfs
+ from procfs import utilist
+-import help
+-import tuna_sched
++from tuna import help
++from tuna import tuna_sched
+ 
+ try:
+     fntable
+-- 
+2.27.0
+
diff --git a/SOURCES/tuna-Fix-tuna-displays-incorrect-cpu-affinity-when-c.patch b/SOURCES/tuna-Fix-tuna-displays-incorrect-cpu-affinity-when-c.patch
deleted file mode 100644
index d2a04eb..0000000
--- a/SOURCES/tuna-Fix-tuna-displays-incorrect-cpu-affinity-when-c.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 6e43ce523e7b403cc4f5e94c988d8811d2053e0f Mon Sep 17 00:00:00 2001
-From: John Kacur <jkacur@redhat.com>
-Date: Tue, 14 Dec 2021 14:59:50 -0500
-Subject: [PATCH] tuna: Fix tuna displays incorrect cpu affinity when cpu is
- offlined
-
-If we create a process and query it's affinity, both taskset and tuna
-display the same result, but if we then disable a processor, tuna
-displays the wrong affinity, as below.
-
-[jkacur@fionn tuna]$ sha1sum /dev/zero &
-[1] 10640
-[jkacur@fionn tuna]$ taskset -p 10640
-pid 10640's current affinity mask: fff
-[jkacur@fionn tuna]$ su -c './tuna-cmd.py -t sha1sum -P'
-Password:
-                      thread       ctxt_switches
-    pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
-  10640  OTHER     0    0xfff         0          423         sha1sum
-[jkacur@fionn tuna]$ su -c 'chcpu -d 5'
-Password:
-CPU 5 disabled
-[jkacur@fionn tuna]$ taskset -p 10640
-pid 10640's current affinity mask: fdf
-[jkacur@fionn tuna]$ su -c './tuna-cmd.py -t sha1sum -P'
-Password:
-                      thread       ctxt_switches
-    pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
-  10640  OTHER     0    0x7df         0          919         sha1sum
-
-The reason for this is that after tuna gets the affinity for the
-process, when it converts this to a hex value, it passes the number of
-enabled processors to hexbitmask in procfs, when what we really need is
-the number of processors including disabled ones.
-
-Fix this by querrying SC_NPROCESSORS_CONF and passing that value to
-hexbitmask.
-
-Signed-off-by: John Kacur <jkacur@redhat.com>
----
- tuna-cmd.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tuna-cmd.py b/tuna-cmd.py
-index d209a2e89493..7e33a128d676 100755
---- a/tuna-cmd.py
-+++ b/tuna-cmd.py
-@@ -199,7 +199,9 @@ def format_affinity(affinity):
-     if len(affinity) <= 4:
-         return ",".join(str(a) for a in affinity)
- 
--    return ",".join(str(hex(a)) for a in procfs.hexbitmask(affinity, get_nr_cpus()))
-+    # We need the number of cpus on a system, including disabled ones
-+    ncpus = os.sysconf('SC_NPROCESSORS_CONF')
-+    return ",".join(str(hex(a)) for a in procfs.hexbitmask(affinity, ncpus))
- 
- 
- def ps_show_thread(pid, affect_children, ps, has_ctxt_switch_info, sock_inodes,
--- 
-2.31.1
-
diff --git a/SOURCES/tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch b/SOURCES/tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch
deleted file mode 100644
index e983ecc..0000000
--- a/SOURCES/tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 532739e58bc36df820a1742489c744e7589221d0 Mon Sep 17 00:00:00 2001
-From: John Kacur <jkacur@redhat.com>
-Date: Wed, 10 Nov 2021 15:58:44 -0500
-Subject: [PATCH] tuna: Make it clear that include and isolate affects IRQs in
- help
-
-Make it clear in the online help (-h) and in the manpage
-that
--i --isolate
--I --include
-
-affects IRQs as well as threads
-
-Signed-off-by: John Kacur <jkacur@redhat.com>
----
- docs/tuna.8 | 4 ++--
- tuna-cmd.py | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/docs/tuna.8 b/docs/tuna.8
-index b6431be5e117..bd6299b5a771 100644
---- a/docs/tuna.8
-+++ b/docs/tuna.8
-@@ -26,10 +26,10 @@ Apply changes described in profile
- List preloaded profiles
- .TP
- \fB\-i\fR, \fB\-\-isolate\fR
--Move all threads away from CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR.
-+Move all allowed threads and IRQs away from CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR.
- .TP
- \fB\-I\fR, \fB\-\-include\fR
--Allow all threads to run on CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR.
-+Allow all allowed threads and IRQs to run on CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR.
- .TP
- \fB\-m\fR, \fB\-\-move\fR
- Move selected entities to CPU\-LIST. Requires \fB\-c\fR and either \fB-t\fR or \fB-q\fR.
-diff --git a/tuna-cmd.py b/tuna-cmd.py
-index 46ce86efa036..d209a2e89493 100755
---- a/tuna-cmd.py
-+++ b/tuna-cmd.py
-@@ -63,9 +63,9 @@ def usage():
-                  _('Explicitly disable usage of perf in GUI for process view')))
-     print(fmt % ('-f, --filter',
-                  _('Display filter the selected entities')))
--    print(fmt % ('-i, --isolate',               _('Move all threads away from %(cpulist)s') %
-+    print(fmt % ('-i, --isolate',               _('Move all allowed threads and IRQs away from %(cpulist)s') %
-                  {"cpulist": _('CPU-LIST')}))
--    print(fmt % ('-I, --include',               _('Allow all threads to run on %(cpulist)s') %
-+    print(fmt % ('-I, --include',               _('Allow all allowed threads and IRQs to run on %(cpulist)s') %
-                  {"cpulist": _('CPU-LIST')}))
-     print(fmt % ('-K, --no_kthreads',
-                  _('Operations will not affect kernel threads')))
--- 
-2.31.1
-
diff --git a/SOURCES/tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch b/SOURCES/tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch
deleted file mode 100644
index 1f3c408..0000000
--- a/SOURCES/tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 1dd72d9db74b063c8dd96f13701a14e299abc325 Mon Sep 17 00:00:00 2001
-From: John Kacur <jkacur@redhat.com>
-Date: Thu, 28 Oct 2021 00:50:12 -0400
-Subject: [PATCH 1/2] tuna: Print warning if setting affinity results in EBUSY
- and continue
-
-When trying to isolate a CPU, if a device uses SCHED_DEADLINE and admission
-control is enabled, setting the affinity will result in the error EBUSY.
-
-tuna should print a warning that this pid could not be moved, and
-continue.
-
-The user can either ignore the warning or use other measures to isolate
-the cpu such as booting with isolcpus or turning off admission control
-and rerunning the tuna isolate command and then turning admission
-control back on.
-
-Signed-off-by: John Kacur <jkacur@redhat.com>
----
- tuna/tuna.py | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/tuna/tuna.py b/tuna/tuna.py
-index 591206d9b4e1..f25eb3d10923 100755
---- a/tuna/tuna.py
-+++ b/tuna/tuna.py
-@@ -360,6 +360,10 @@ def isolate_cpus(cpus, nr_cpus):
-                 if err.args[0] == errno.EINVAL:
-                     print("Function:", fname, ",", err.strerror, file=sys.stderr)
-                     sys.exit(2)
-+                if err.args[0] == errno.EBUSY:
-+                    comm = ps[pid].stat["comm"]
-+                    print(f'Warning: Unable to isolate pid {pid} [{comm}]')
-+                    continue
-                 raise err
- 
-         if "threads" not in ps[pid]:
--- 
-2.31.1
-
diff --git a/SPECS/tuna.spec b/SPECS/tuna.spec
index 9e1ad4e..061a2f7 100644
--- a/SPECS/tuna.spec
+++ b/SPECS/tuna.spec
@@ -1,6 +1,6 @@
 Name: tuna
-Version: 0.16
-Release: 6%{?dist}
+Version: 0.17
+Release: 2%{?dist}
 License: GPLv2
 Summary: Application tuning GUI & command line utility
 URL: https://git.kernel.org/pub/scm/utils/tuna/tuna.git
@@ -14,10 +14,7 @@ Requires: python3-linux-procfs >= 0.6
 # Requires: python-inet_diag
 
 # Patches
-Patch1: tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch 
-Patch2: tuna-Add-distinction-between-spread-and-move-to-erro.patch
-Patch3: tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch
-Patch4: tuna-Fix-tuna-displays-incorrect-cpu-affinity-when-c.patch
+Patch1: tuna-Fix-ModuleNotFoundError.patch
 
 %description
 Provides interface for changing scheduler and IRQ tunables, at whole CPU and at
@@ -31,9 +28,6 @@ installed.
 %prep
 %setup -q
 %patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
 
 %build
 %py3_build
@@ -75,6 +69,14 @@ done
 %{_datadir}/polkit-1/actions/org.tuna.policy
 
 %changelog
+* Thu Jan 13 2022 Leah Leshchinsky <lleshchi@redhat.com> - 0.17-2
+- Fix ModuleNotFoundError
+Resolves: rhbz#2012307
+
+* Tue Jan 11 2022 Leah Leshchinsky <lleshchi@redhat.com> - 0.17-1
+- Rebase to upstream version 0.17
+Resolves: rhbz#2012307
+
 * Tue Dec 14 2021 John Kacur <jkacur@redhat.com> - 0.16-6
 - Display correct cpu-affinity when a cpu is disabled
 Resolves: rhbz#2032460