diff --git a/.gitignore b/.gitignore
index f2fcc56..f7322e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/tuned-2.14.0.tar.gz
+SOURCES/tuned-2.15.0-rc.1.tar.gz
diff --git a/.tuned.metadata b/.tuned.metadata
index 0d3e106..be313dd 100644
--- a/.tuned.metadata
+++ b/.tuned.metadata
@@ -1 +1 @@
-53140aba44d956fac19c37c2c0052835c1fdd7e9 SOURCES/tuned-2.14.0.tar.gz
+e55481c01a4b4c70ceaaa46baceda700964b202a SOURCES/tuned-2.15.0-rc.1.tar.gz
diff --git a/SOURCES/tuned-2.14.0-amd-performance-regression-fix.patch b/SOURCES/tuned-2.14.0-amd-performance-regression-fix.patch
deleted file mode 100644
index e51870e..0000000
--- a/SOURCES/tuned-2.14.0-amd-performance-regression-fix.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From f511ad5d48f4f2ae3b2616463bc3a17bae5bdb90 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
-Date: Tue, 30 Jun 2020 15:39:18 +0200
-Subject: [PATCH] throughput-performance: fix performance regression on AMD
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It turned out that disablement of the numa_balancing could result in
-upto 20% performance drop on some loads.
-
-Related: rhbz#1746957
-
-Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
----
- profiles/throughput-performance/tuned.conf | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/profiles/throughput-performance/tuned.conf b/profiles/throughput-performance/tuned.conf
-index f1a6f1a..3cc6fd1 100644
---- a/profiles/throughput-performance/tuned.conf
-+++ b/profiles/throughput-performance/tuned.conf
-@@ -85,4 +85,3 @@ type=sysctl
- uname_regex=x86_64
- cpuinfo_regex=${amd_cpuinfo_regex}
- kernel.sched_migration_cost_ns=5000000
--kernel.numa_balancing=0
--- 
-2.25.4
-
diff --git a/SOURCES/tuned-2.14.0-scheduler-isolated-cores-cgroups-fix.patch b/SOURCES/tuned-2.14.0-scheduler-isolated-cores-cgroups-fix.patch
deleted file mode 100644
index d839c51..0000000
--- a/SOURCES/tuned-2.14.0-scheduler-isolated-cores-cgroups-fix.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From daf02c380515b42db06d9f743070af5ab248a414 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
-Date: Fri, 3 Jul 2020 12:17:03 +0200
-Subject: [PATCH] scheduler: fix isolated_cores to work with cgroups
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It seems cpuset.cpus needs to be initialized before writing to tasks.
-
-Related: rhbz#1784648
-
-Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
----
- tuned/plugins/plugin_scheduler.py | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/tuned/plugins/plugin_scheduler.py b/tuned/plugins/plugin_scheduler.py
-index 745ee4a..9ad9f54 100644
---- a/tuned/plugins/plugin_scheduler.py
-+++ b/tuned/plugins/plugin_scheduler.py
-@@ -106,6 +106,7 @@ class SchedulerPlugin(base.Plugin):
- 		# calculated by isolated_cores setter
- 		self._affinity = None
- 
-+		self._cgroup_affinity_initialized = False
- 		self._cgroup = None
- 		self._cgroups = collections.OrderedDict([(self._sanitize_cgroup_path(option[7:]), self._variables.expand(affinity))
- 			for option, affinity in instance.options.items() if option[:7] == "cgroup." and len(option) > 7])
-@@ -478,11 +479,14 @@ class SchedulerPlugin(base.Plugin):
- 			log.error("Unable to set affinity '%s' for cgroup '%s'" % (affinity, cgroup))
- 
- 	def _cgroup_set_affinity(self):
-+		if self._cgroup_affinity_initialized:
-+			return
- 		log.debug("Setting cgroups affinities")
- 		if self._affinity is not None and self._cgroup is not None and not self._cgroup in self._cgroups:
- 			self._cgroup_set_affinity_one(self._cgroup, self._affinity, backup = True)
- 		for cg in self._cgroups.items():
- 			self._cgroup_set_affinity_one(cg[0], cg[1], backup = True)
-+		self._cgroup_affinity_initialized = True
- 
- 	def _cgroup_restore_affinity(self):
- 		log.debug("Restoring cgroups affinities")
-@@ -920,6 +924,7 @@ class SchedulerPlugin(base.Plugin):
- 			return self._verify_all_irq_affinity(affinity, ignore_missing)
- 		elif enabling:
- 			if self._cgroup:
-+				self._cgroup_set_affinity()
- 				ps_affinity = "cgroup.%s" % self._cgroup
- 			else:
- 				ps_affinity = affinity
--- 
-2.25.4
-
diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec
index 5c755a8..fe258ed 100644
--- a/SPECS/tuned.spec
+++ b/SPECS/tuned.spec
@@ -25,16 +25,16 @@
 %endif
 %endif
 
-#%%global prerelease rc
-#%%global prereleasenum 1
+%global prerelease rc
+%global prereleasenum 1
 
 %global prerel1 %{?prerelease:.%{prerelease}%{prereleasenum}}
 %global prerel2 %{?prerelease:-%{prerelease}.%{prereleasenum}}
 
 Summary: A dynamic adaptive system tuning daemon
 Name: tuned
-Version: 2.14.0
-Release: 3%{?prerel1}%{?dist}
+Version: 2.15.0
+Release: 0.1%{?prerel1}%{?dist}
 License: GPLv2+
 Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz
 # RHEL-8 specific recommend.conf:
@@ -57,26 +57,24 @@ Requires: %{_py}-schedutils, %{_py}-linux-procfs, %{_py}-perf
 BuildRequires: python3-dbus, python3-gobject-base
 Requires: python3-dbus, python3-gobject-base
 %if 0%{?fedora} > 22 || 0%{?rhel} > 7
-Recommends: python3-dmidecode
+Recommends: dmidecode
 %endif
 %else
 # BuildRequires for 'make test'
 BuildRequires: dbus-python, pygobject3-base
 Requires: dbus-python, pygobject3-base
-%if 0%{?fedora} > 22 || 0%{?rhel} > 7
-Recommends: python-dmidecode
-%endif
 %endif
-Requires: virt-what, ethtool, gawk, hdparm
+Requires: virt-what, ethtool, gawk
 Requires: util-linux, dbus, polkit
 %if 0%{?fedora} > 22 || 0%{?rhel} > 7
+Recommends: dmidecode
+Recommends: hdparm
 Recommends: kernel-tools
+Recommends: kmod
 %endif
 %if 0%{?rhel} > 7
 Requires: python3-syspurpose
 %endif
-Patch0: tuned-2.14.0-amd-performance-regression-fix.patch
-Patch1: tuned-2.14.0-scheduler-isolated-cores-cgroups-fix.patch
 
 %description
 The tuned package contains a daemon that tunes system settings dynamically.
@@ -186,11 +184,6 @@ Requires: %{name} = %{version}
 Requires: %{name}-profiles-realtime = %{version}
 Requires: tuna
 Requires: nmap-ncat
-%if 0%{?rhel} == 7
-Requires: qemu-kvm-tools-rhev
-%else
-Recommends: tuned-profiles-nfv-host-bin
-%endif
 
 %description profiles-nfv-host
 Additional tuned profile(s) targeted to Network Function Virtualization (NFV) host.
@@ -227,17 +220,26 @@ Requires: %{name} = %{version}
 Additional tuned profiles mainly for backward compatibility with tuned 1.0.
 It can be also used to fine tune your system for specific scenarios.
 
+%package profiles-postgresql
+Summary: Additional tuned profile(s) targeted to PostgreSQL server loads
+Requires: %{name} = %{version}
+
+%description profiles-postgresql
+Additional tuned profile(s) targeted to PostgreSQL server loads.
+
 %prep
 %setup -q -n %{name}-%{version}%{?prerel2}
 
-%patch0 -p1
-%patch1 -p1
-
 # Replace the upstream recommend.conf with a RHEL-8-specific one
 rm -f recommend.conf
 cp -p %{SOURCE1} recommend.conf
 
 %build
+# Docs cannot be generated on RHEL now due to missing asciidoctor dependency
+# asciidoc doesn't seem to be compatible
+%if ! 0%{?rhel}
+make html %{make_python_arg}
+%endif
 
 %install
 make install DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg}
@@ -245,6 +247,11 @@ make install DESTDIR=%{buildroot} DOCDIR=%{docdir} %{make_python_arg}
 sed -i 's/\(dynamic_tuning[ \t]*=[ \t]*\).*/\10/' %{buildroot}%{_sysconfdir}/tuned/tuned-main.conf
 %endif
 
+%if ! 0%{?rhel}
+# manual
+make install-html DESTDIR=%{buildroot} DOCDIR=%{docdir}
+%endif
+
 # conditional support for grub2, grub2 is not available on all architectures
 # and tuned is noarch package, thus the following hack is needed
 mkdir -p %{buildroot}%{_datadir}/tuned/grub2
@@ -261,8 +268,13 @@ touch %{buildroot}%{_sysconfdir}/modprobe.d/kvm.rt.tuned.conf
 # validate desktop file
 desktop-file-validate %{buildroot}%{_datadir}/applications/tuned-gui.desktop
 
+# Run tests on RHEL > 7 or non RHEL
+# We cannot run tests on RHEL-7 because there is no python-mock package and
+# python-2.7 doesn't have mock built-in
+%if 0%{?rhel} > 7 || ! 0%{?rhel}
 %check
-make test
+make test %{make_python_arg}
+%endif
 
 %post
 %systemd_post tuned.service
@@ -309,11 +321,18 @@ if [ "$1" == 0 ]; then
   then
     for f in /boot/loader/entries/$MACHINE_ID-*.conf
     do
-      if [ -f "$f" -a "${f: -12}" != "-rescue.conf" ]
+      # Skip non-files and rescue entries
+      if [ ! -f "$f" -o "${f: -12}" == "-rescue.conf" ]
+      then
+        continue
+      fi
+      # Skip boom managed entries
+      if [[ "$f" =~ \w*-[0-9a-f]{7,}-.*-.*.conf ]]
       then
-        sed -i '/^\s*options\s\+.*\$tuned_params/ s/\s\+\$tuned_params\b//g' "$f" &>/dev/null || :
-        sed -i '/^\s*initrd\s\+.*\$tuned_initrd/ s/\s\+\$tuned_initrd\b//g' "$f" &>/dev/null || :
+        continue
       fi
+      sed -i '/^\s*options\s\+.*\$tuned_params/ s/\s\+\$tuned_params\b//g' "$f" &>/dev/null || :
+      sed -i '/^\s*initrd\s\+.*\$tuned_initrd/ s/\s\+\$tuned_initrd\b//g' "$f" &>/dev/null || :
     done
   fi
 fi
@@ -372,6 +391,7 @@ fi
 %exclude %{_prefix}/lib/tuned/realtime-virtual-host
 %exclude %{_prefix}/lib/tuned/cpu-partitioning
 %exclude %{_prefix}/lib/tuned/spectrumscale-ece
+%exclude %{_prefix}/lib/tuned/postgresql
 %{_prefix}/lib/tuned
 %dir %{_sysconfdir}/tuned
 %dir %{_sysconfdir}/tuned/recommend.d
@@ -485,7 +505,33 @@ fi
 %{_prefix}/lib/tuned/spindown-disk
 %{_mandir}/man7/tuned-profiles-compat.7*
 
+%files profiles-postgresql
+%{_prefix}/lib/tuned/postgresql
+%{_mandir}/man7/tuned-profiles-postgresql.7*
+
 %changelog
+* Tue Dec  1 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.15.0-0.1.rc1
+- new release
+  - rebased tuned to latest upstream
+    resolves: rhbz#1874052
+  - added plugin service for linux services control
+    resolves: rhbz#1869991
+  - scheduler: added default_irq_smp_affinity option
+    resolves: rhbz#1896348
+  - bootloader: skip boom managed BLS snippets
+    resolves: rhbz#1901532
+  - scheduler: added perf_process_fork option to enable processing of fork
+    resolves: rhbz#1894610
+  - scheduler: added perf_mmap_pages option to set perf buffer size
+    resolves: rhbz#1890219
+  - bootloader: fixed cmdline duplication with BLS and grub2-mkconfig
+    resolves: rhbz#1777874
+
+* Thu Oct  1 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-4
+- realtime-virtual-host: remove lapic advancement calculation and
+  related qemu-kvm-tools-rhev requirement
+  Resolves: rhbz#1845717
+
 * Fri Jul  3 2020 Jaroslav Škarvada <jskarvad@redhat.com> - 2.14.0-3
 - scheduler: fixed isolated_cores to work with cgroups
   related: rhbz#1784648