diff --git a/ksm.service b/ksm.service
deleted file mode 100644
index 42d67d9..0000000
--- a/ksm.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=Kernel Samepage Merging
-ConditionPathExists=/sys/kernel/mm/ksm
-ConditionVirtualization=no
-
-[Service]
-Type=oneshot
-RemainAfterExit=yes
-EnvironmentFile=-/etc/sysconfig/ksm
-ExecStart=/usr/libexec/ksmctl start
-ExecStop=/usr/libexec/ksmctl stop
-
-[Install]
-WantedBy=multi-user.target
diff --git a/ksm.sysconfig b/ksm.sysconfig
deleted file mode 100644
index d99656d..0000000
--- a/ksm.sysconfig
+++ /dev/null
@@ -1,4 +0,0 @@
-# The maximum number of unswappable kernel pages
-# which may be allocated by ksm (0 for unlimited)
-# If unset, defaults to half of total memory
-# KSM_MAX_KERNEL_PAGES=
diff --git a/ksmctl.c b/ksmctl.c
deleted file mode 100644
index af39591..0000000
--- a/ksmctl.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Start/stop KSM, for systemd.
- * Copyright (C) 2009, 2011 Red Hat, Inc.
- * Written by Paolo Bonzini <pbonzini@redhat.com>.
- * Based on the original sysvinit script by Dan Kenigsberg <danken@redhat.com>
- * This file is distributed under the GNU General Public License, version 2
- * or later.  */
-
-#include <unistd.h>
-#include <stdio.h>
-#include <limits.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define KSM_MAX_KERNEL_PAGES_FILE "/sys/kernel/mm/ksm/max_kernel_pages"
-#define KSM_RUN_FILE		  "/sys/kernel/mm/ksm/run"
-
-char *program_name;
-
-int usage(void)
-{
-	fprintf(stderr, "Usage: %s {start|stop}\n", program_name);
-	return 1;
-}
-
-int write_value(uint64_t value, char *filename)
-{
-	FILE *fp;
-	if (!(fp = fopen(filename, "w")) ||
-	    fprintf(fp, "%llu\n", (unsigned long long) value) == EOF ||
-	    fflush(fp) == EOF ||
-	    fclose(fp) == EOF)
-		return 1;
-
-	return 0;
-}
-
-uint64_t ksm_max_kernel_pages()
-{
-	char *var = getenv("KSM_MAX_KERNEL_PAGES");
-	char *endptr;
-	uint64_t value;
-	if (var && *var) {
-		value = strtoll(var, &endptr, 0);
-		if (value < LLONG_MAX && !*endptr)
-			return value;
-	}
-	/* Unless KSM_MAX_KERNEL_PAGES is set, let KSM munch up to half of
-	 * total memory.  */
-	return sysconf(_SC_PHYS_PAGES) / 2;
-}
-
-int start(void)
-{
-	if (access(KSM_MAX_KERNEL_PAGES_FILE, R_OK) >= 0)
-		write_value(ksm_max_kernel_pages(), KSM_MAX_KERNEL_PAGES_FILE);
-	return write_value(1, KSM_RUN_FILE);
-}
-
-int stop(void)
-{
-	return write_value(0, KSM_RUN_FILE);
-}
-
-int main(int argc, char **argv)
-{
-	program_name = argv[0];
-	if (argc < 2) {
-		return usage();
-	} else if (!strcmp(argv[1], "start")) {
-		return start();
-	} else if (!strcmp(argv[1], "stop")) {
-		return stop();
-	} else {
-		return usage();
-	}
-}
diff --git a/ksmtuned b/ksmtuned
deleted file mode 100644
index 7bc5743..0000000
--- a/ksmtuned
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2009 Red Hat, Inc. and/or its affiliates.
-# Released under the GPL
-#
-# Author:      Dan Kenigsberg <danken@redhat.com>
-#
-# ksmtuned - a simple script that controls whether (and with what vigor) ksm
-# should search for duplicated pages.
-#
-# starts ksm when memory commited to qemu processes exceeds a threshold, and
-# make ksm work harder and harder untill memory load falls below that
-# threshold.
-#
-# send SIGUSR1 to this process right after a new qemu process is started, or
-# following its death, to retune ksm accordingly
-#
-# needs testing and ironing. contact danken@redhat.com if something breaks.
-
-if [ -f /etc/ksmtuned.conf ]; then
-    . /etc/ksmtuned.conf
-fi
-
-debug() {
-    if [ -n "$DEBUG" ]; then
-        s="`/bin/date`: $*"
-        [ -n "$LOGFILE" ] && echo "$s" >> "$LOGFILE" || echo "$s"
-    fi
-}
-
-
-KSM_MONITOR_INTERVAL=${KSM_MONITOR_INTERVAL:-60}
-KSM_NPAGES_BOOST=${KSM_NPAGES_BOOST:-300}
-KSM_NPAGES_DECAY=${KSM_NPAGES_DECAY:--50}
-
-KSM_NPAGES_MIN=${KSM_NPAGES_MIN:-64}
-KSM_NPAGES_MAX=${KSM_NPAGES_MAX:-1250}
-# millisecond sleep between ksm scans for 16Gb server. Smaller servers sleep
-# more, bigger sleep less.
-KSM_SLEEP_MSEC=${KSM_SLEEP_MSEC:-10}
-
-KSM_THRES_COEF=${KSM_THRES_COEF:-20}
-KSM_THRES_CONST=${KSM_THRES_CONST:-2048}
-
-total=`awk '/^MemTotal:/ {print $2}' /proc/meminfo`
-debug total $total
-
-npages=0
-sleep=$[KSM_SLEEP_MSEC * 16 * 1024 * 1024 / total]
-[ $sleep -le 10 ] && sleep=10
-debug sleep $sleep
-thres=$[total * KSM_THRES_COEF / 100]
-if [ $KSM_THRES_CONST -gt $thres ]; then
-    thres=$KSM_THRES_CONST
-fi
-debug thres $thres
-
-KSMCTL () {
-    case x$1 in
-        xstop)
-            echo 0 > /sys/kernel/mm/ksm/run
-            ;;
-        xstart)
-            echo $2 > /sys/kernel/mm/ksm/pages_to_scan
-            echo $3 > /sys/kernel/mm/ksm/sleep_millisecs
-            echo 1 > /sys/kernel/mm/ksm/run
-            ;;
-    esac
-}
-
-committed_memory () {
-    # calculate how much memory is committed to running qemu processes
-    local pidlist
-    pidlist=$(pgrep -d ' ' -- '^qemu(-(kvm|system-.+)|:.{1,11})$')
-    if [ -n "$pidlist" ]; then
-        ps -p "$pidlist" -o rsz=
-    fi | awk '{ sum += $1 }; END { print 0+sum }'
-}
-
-free_memory () {
-    awk '/^(MemFree|Buffers|Cached):/ {free += $2}; END {print free}' \
-                /proc/meminfo
-}
-
-increase_npages() {
-    local delta
-    delta=${1:-0}
-    npages=$[npages + delta]
-    if [ $npages -lt $KSM_NPAGES_MIN ]; then
-        npages=$KSM_NPAGES_MIN
-    elif [ $npages -gt $KSM_NPAGES_MAX ]; then
-        npages=$KSM_NPAGES_MAX
-    fi
-    echo $npages
-}
-
-
-adjust () {
-    local free committed
-    free=`free_memory`
-    committed=`committed_memory`
-    debug committed $committed free $free
-    if [ $[committed + thres] -lt $total -a $free -gt $thres ]; then
-        KSMCTL stop
-        debug "$[committed + thres] < $total and free > $thres, stop ksm"
-        return 1
-    fi
-    debug "$[committed + thres] > $total, start ksm"
-    if [ $free -lt $thres ]; then
-        npages=`increase_npages $KSM_NPAGES_BOOST`
-        debug "$free < $thres, boost"
-    else
-        npages=`increase_npages $KSM_NPAGES_DECAY`
-        debug "$free > $thres, decay"
-    fi
-    KSMCTL start $npages $sleep
-    debug "KSMCTL start $npages $sleep"
-    return 0
-}
-
-function nothing () {
-    :
-}
-
-loop () {
-    trap nothing SIGUSR1
-    while true
-    do
-        sleep $KSM_MONITOR_INTERVAL &
-        wait $!
-        adjust
-    done
-}
-
-PIDFILE=${PIDFILE-/var/run/ksmtune.pid}
-if touch "$PIDFILE"; then
-  loop &
-  echo $! > "$PIDFILE"
-fi
diff --git a/ksmtuned.conf b/ksmtuned.conf
deleted file mode 100644
index fc4518c..0000000
--- a/ksmtuned.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# Configuration file for ksmtuned.
-
-# How long ksmtuned should sleep between tuning adjustments
-# KSM_MONITOR_INTERVAL=60
-
-# Millisecond sleep between ksm scans for 16Gb server.
-# Smaller servers sleep more, bigger sleep less.
-# KSM_SLEEP_MSEC=10
-
-# KSM_NPAGES_BOOST=300
-# KSM_NPAGES_DECAY=-50
-# KSM_NPAGES_MIN=64
-# KSM_NPAGES_MAX=1250
-
-# KSM_THRES_COEF=20
-# KSM_THRES_CONST=2048
-
-# uncomment the following if you want ksmtuned debug info
-
-# LOGFILE=/var/log/ksmtuned
-# DEBUG=1
diff --git a/ksmtuned.service b/ksmtuned.service
deleted file mode 100644
index 09dffa1..0000000
--- a/ksmtuned.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=Kernel Samepage Merging (KSM) Tuning Daemon
-After=ksm.service
-Requires=ksm.service
-ConditionVirtualization=no
-
-[Service]
-ExecStart=/usr/sbin/ksmtuned
-ExecReload=/bin/kill -USR1 $MAINPID
-Type=forking
-
-[Install]
-WantedBy=multi-user.target
diff --git a/qemu.spec b/qemu.spec
index 311f16a..fd40e56 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -112,13 +112,6 @@ URL: http://www.qemu.org/
 
 Source0: http://wiki.qemu-project.org/download/%{name}-%{version}%{?rcstr}.tar.xz
 
-# KSM control scripts
-Source4: ksm.service
-Source5: ksm.sysconfig
-Source6: ksmctl.c
-Source7: ksmtuned.service
-Source8: ksmtuned
-Source9: ksmtuned.conf
 # guest agent service
 Source10: qemu-guest-agent.service
 Source17: qemu-ga.sysconfig
@@ -316,17 +309,6 @@ Requires(postun): systemd-units
 This package provides the common files needed by all QEMU targets
 
 
-%package -n ksm
-Summary: Kernel Samepage Merging services
-Requires(post): systemd-units
-Requires(postun): systemd-units
-%description -n ksm
-Kernel Samepage Merging (KSM) is a memory-saving de-duplication feature,
-that merges anonymous (private) pages (not pagecache ones).
-
-This package provides service files for disabling and tuning KSM.
-
-
 %package guest-agent
 Summary: QEMU guest agent
 Requires(post): systemd-units
@@ -942,8 +924,6 @@ make V=1 %{?_smp_mflags} $buildldflags
 popd
 %endif
 
-gcc %{_sourcedir}/ksmctl.c $RPM_OPT_FLAGS $RPM_LD_FLAGS -o ksmctl
-
 
 %install
 
@@ -954,14 +934,6 @@ mkdir -p %{buildroot}%{_udevdir}
 mkdir -p %{buildroot}%{_unitdir}
 mkdir -p %{buildroot}%{_sysconfdir}/qemu
 
-install -D -p -m 0644 %{_sourcedir}/ksm.service %{buildroot}%{_unitdir}
-install -D -p -m 0644 %{_sourcedir}/ksm.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/ksm
-install -D -p -m 0755 ksmctl %{buildroot}%{_libexecdir}/ksmctl
-
-install -D -p -m 0644 %{_sourcedir}/ksmtuned.service %{buildroot}%{_unitdir}
-install -D -p -m 0755 %{_sourcedir}/ksmtuned %{buildroot}%{_sbindir}/ksmtuned
-install -D -p -m 0644 %{_sourcedir}/ksmtuned.conf %{buildroot}%{_sysconfdir}/ksmtuned.conf
-
 # Install qemu-guest-agent service and udev rules
 install -m 0644 %{_sourcedir}/qemu-guest-agent.service %{buildroot}%{_unitdir}
 install -m 0644 %{_sourcedir}/qemu-ga.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/qemu-ga
@@ -1157,17 +1129,6 @@ getent passwd qemu >/dev/null || \
     -c "qemu user" qemu
 
 
-%post -n ksm
-%systemd_post ksm.service
-%systemd_post ksmtuned.service
-%preun -n ksm
-%systemd_preun ksm.service
-%systemd_preun ksmtuned.service
-%postun -n ksm
-%systemd_postun_with_restart ksm.service
-%systemd_postun_with_restart ksmtuned.service
-
-
 %post user-binfmt
 /bin/systemctl --system try-restart systemd-binfmt.service &>/dev/null || :
 %postun user-binfmt
@@ -1250,15 +1211,6 @@ getent passwd qemu >/dev/null || \
 %dir %{_libdir}/qemu
 
 
-%files -n ksm
-%{_libexecdir}/ksmctl
-%{_sbindir}/ksmtuned
-%{_unitdir}/ksmtuned.service
-%{_unitdir}/ksm.service
-%config(noreplace) %{_sysconfdir}/ksmtuned.conf
-%config(noreplace) %{_sysconfdir}/sysconfig/ksm
-
-
 %files guest-agent
 %{_bindir}/qemu-ga
 %{_mandir}/man8/qemu-ga.8*