diff --git a/.ahci.metadata b/.ahci.metadata
new file mode 100644
index 0000000..392f47a
--- /dev/null
+++ b/.ahci.metadata
@@ -0,0 +1 @@
+04dda836b9a32c212fbb36adbab588e48cdd432a SOURCES/ahci-327_RH1.tar.bz2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5835824
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/ahci-327_RH1.tar.bz2
diff --git a/README.md b/README.md
deleted file mode 100644
index 98f42b4..0000000
--- a/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-The master branch has no content
-
-Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
-If you find this file in a distro specific branch, it means that no content has been checked in yet
diff --git a/SOURCES/ahci.files b/SOURCES/ahci.files
new file mode 100644
index 0000000..b96db47
--- /dev/null
+++ b/SOURCES/ahci.files
@@ -0,0 +1,4 @@
+%defattr(644,root,root,755)
+/lib/modules/%2-%1
+/etc/depmod.d/ahci.conf
+/usr/share/doc/kmod-ahci/greylist.txt
diff --git a/SOURCES/ahci.patch b/SOURCES/ahci.patch
new file mode 100644
index 0000000..bf76edb
--- /dev/null
+++ b/SOURCES/ahci.patch
@@ -0,0 +1,25 @@
+From 10f22191928b109c06bae7c9792fe3ed171939ab Mon Sep 17 00:00:00 2001
+From: Nanda Kishore Chinnaram <nanda@localhost.localdomain>
+Date: Thu, 5 Nov 2015 16:04:43 +0530
+Subject: [PATCH] Add PCI ids of Intel Sunrise Point-H SATA Controller S232/236
+
+Signed-off-by: Nanda Kishore Chinnaram <nanda_kishore_chinna@dell.com>
+---
+ drivers/ata/ahci.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
+index a466602..3d274f2 100644
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -332,6 +332,8 @@ static const struct pci_device_id ahci_pci_tbl[] = {
+ 	{ PCI_VDEVICE(INTEL, 0xa105), board_ahci }, /* Sunrise Point-H RAID */
+ 	{ PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H RAID */
+ 	{ PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */
++	{ PCI_VDEVICE(INTEL, 0xa106), board_ahci }, /* Sunrise Point-H RAID */
++	{ PCI_VDEVICE(INTEL, 0xa102), board_ahci }, /* Sunrise Point-H AHCI */
+ 
+ 	/* JMicron 360/1/3/5/6, match class to avoid IDE function */
+ 	{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
+-- 
+2.4.3
diff --git a/SOURCES/depmodconf b/SOURCES/depmodconf
new file mode 100755
index 0000000..d54ed63
--- /dev/null
+++ b/SOURCES/depmodconf
@@ -0,0 +1,10 @@
+#!/bin/bash
+VAR=${2}
+MAJOR=` echo $VAR | cut -f 1 -d "-" `
+VAR=${VAR##$MAJOR"-"}
+MINOR=` echo $VAR | cut -f 1 -d "." `
+kver=$MAJOR-$MINOR.*
+find $3 -name '*.ko' | sed 's|^.*/\([^/]*\)\.ko$|\1|' | sort -u | \
+while read -r module; do
+	echo "override $module $kver weak-updates/$1"
+done
diff --git a/SOURCES/find-provides.ksyms b/SOURCES/find-provides.ksyms
new file mode 100755
index 0000000..38899cd
--- /dev/null
+++ b/SOURCES/find-provides.ksyms
@@ -0,0 +1,11 @@
+#!/bin/bash
+filelist=$(sed "s/['\"]/\\\&/g")
+kolist=$(echo $filelist | tr '[:blank:]' \\n | grep -E '/lib/modules/.+\.ko$')
+echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/redhat/find-provides.ksyms
+
+for module in $kolist; do
+	modname=$(echo $module | sed 's|^.*/\([^/]*\)\.ko$|\1|')
+	if [ "$modname" != "$1" ]; then
+		echo "kmod-$modname = $2"
+	fi
+done | sort -u
diff --git a/SOURCES/find-requires.ksyms b/SOURCES/find-requires.ksyms
new file mode 100755
index 0000000..db86dd8
--- /dev/null
+++ b/SOURCES/find-requires.ksyms
@@ -0,0 +1,65 @@
+#! /bin/bash
+
+IFS=$'\n'
+
+all_provides() {
+    nm "$@" \
+    | sed -r -ne 's:^([0-9a-f]+) A __crc_(.+):\1\t\2:p' \
+    | sort -k2 -u
+}
+
+all_requires() {
+    for module in "$@"; do
+        set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q)
+        /sbin/modprobe --dump-modversions "$module" \
+        | awk --non-decimal-data '
+            BEGIN { FS = "\t" ; OFS = "\t" }
+            {printf("0x%08x\t%s\n", $1, $2)}' \
+        | sed -r -e 's:$:\t'"$1"':'
+    done \
+    | sort -k2 -u
+}
+
+rm -rf /tmp/krava
+
+if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then
+    cat > /dev/null
+    exit 0
+fi
+
+modules=($(grep -E '/lib/modules/.+\.ko$'))
+
+if [ ${#modules[@]} -gt 0 ]; then
+    kernel=$(/sbin/modinfo -F vermagic "${modules[0]}" | sed -e 's: .*::' -e q)
+
+    # get all that kernel provides
+    symvers=$(mktemp -t ${0##*/}.XXXXX)
+    cat /usr/src/kernels/$kernel/Module.symvers | awk '
+        BEGIN { FS = "\t" ; OFS = "\t" }
+        { print $2 "\t" $1 }
+    ' \
+    | sed -r -e 's:$:\t'"$1"':' \
+    | sort -u -k2 > $symvers
+
+    # get all that we demands
+    reqs=$(mktemp -t ${0##*/}.XXXXX)
+    join -t $'\t' -j 2 -v 1 \
+            <(all_requires "${modules[@]}") \
+            <(all_provides "${modules[@]}") \
+    | sort -u -k2 > $reqs
+
+    # get kernel dependencies - kernel(symbol) = 0xHEX
+    join -t $'\t' -j2 -o 1.1 1.2 $symvers $reqs \
+    | sort -u \
+    | awk '
+    { FS = "\t" ; OFS = "\t" }
+            { print "kernel(" $1 ") = " $2 }
+    '
+
+    # get module dependencies - ksym(symbol) = 0xHEX
+    join -t $'\t' -j2 -v2 $symvers $reqs \
+    | sort -u | awk '
+    { FS = "\t" ; OFS = "\t" }
+            { print "ksym(" $2 ") = " $1 }
+    '
+fi
diff --git a/SOURCES/kmodtool b/SOURCES/kmodtool
new file mode 100755
index 0000000..2b55385
--- /dev/null
+++ b/SOURCES/kmodtool
@@ -0,0 +1,315 @@
+#!/bin/bash
+
+# kmodtool - Helper script for building kernel module RPMs
+#            An original version appeared in Fedora. This version is
+#            generally called only by the %kernel_module_package RPM macro
+#            during the process of building Driver Update Packages (which
+#            are also known as "kmods" in the Fedora community).
+#
+# Copyright (c) 2003-2010 Ville Skyttä <ville.skytta@iki.fi>,
+#                         Thorsten Leemhuis <fedora@leemhuis.info>
+#                         Jon Masters <jcm@redhat.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+# Changelog:
+#
+#            2010/07/28 - Add fixes for filelists in line with LF standard
+#			- Remove now defunct "framepointer" kernel variant
+#			- Change version to "rhel7-rh1" as a consequence.
+#
+#            2010/01/10 - Simplified for RHEL6. We are working on upstream
+#                         moving to a newer format and in any case do not
+#                         need to retain support for really old systems.
+
+shopt -s extglob
+
+myprog="kmodtool"
+myver="rhel7-rh1"
+knownvariants=@(debug|kdump)
+kmod_name=
+kver=
+verrel=
+variant=
+
+get_kernel_release ()
+{
+  if [[ -z $1 ]]; then
+    uname -r
+    return
+  fi
+  local arch=$(arch)
+  local verrel=${1%.$arch}
+  local verprefix=${verrel%.*}
+  local versuffix=${verrel#$verprefix}
+  verrel=$(ls -Ud /usr/src/kernels/$verprefix*$versuffix.$arch | sort -V | tail -n 1)
+  verrel=${verrel##*/}
+  [[ -z $verrel ]] && verrel=$1.$arch
+  echo "$verrel"
+}
+
+get_verrel ()
+{
+  verrel=$(get_kernel_release "$1")
+  verrel=${verrel%%$knownvariants}
+}
+
+print_verrel ()
+{
+  get_verrel $@
+  echo "${verrel}"
+}
+
+get_verrel_for_deps ()
+{
+  verrel_dep=${1:-$(uname -r)}
+  verrel_dep=${verrel_dep%%$knownvariants}
+  # TODO: rpmtemplate should be called with %{kernel_version}, not %{kverrel}
+  # begin hack (remove z-stream subversion)
+  local verprefix=${verrel_dep%-*}
+  local versuffix=${verrel_dep##*-}
+  local verinfix=${versuffix%.*.*}
+  versuffix=${versuffix#$verinfix}
+  verinfix=${verinfix%%.*}
+  verrel_dep=$verprefix-$verinfix$versuffix
+  # end hack
+}
+
+get_variant ()
+{
+  get_verrel $@
+  variant=$(get_kernel_release "$1")
+  variant=${variant##$verrel}
+  variant=${variant:-'""'}
+}
+
+print_variant ()
+{
+  get_variant $@
+  echo "${variant}"
+}
+
+get_filelist() {
+	local IFS=$'\n'
+	filelist=($(cat))
+
+	if [ ${#filelist[@]} -gt 0 ];
+	then
+		for ((n = 0; n < ${#filelist[@]}; n++));
+		do
+			line="${filelist[n]}"
+			line=$(echo "$line" \
+				| sed -e "s/%verrel/$verrel/g" \
+				| sed -e "s/%variant/$variant/g" \
+				| sed -e "s/%dashvariant/$dashvariant/g" \
+				| sed -e "s/%dotvariant/$dotvariant/g" \
+				| sed -e "s/\.%1/$dotvariant/g" \
+				| sed -e "s/\-%1/$dotvariant/g" \
+				| sed -e "s/%2/$verrel/g")
+			echo "$line"
+		done
+	else
+		echo "%defattr(644,root,root,755)"
+		echo "/lib/modules/${verrel}${dotvariant}"
+	fi
+}
+	
+
+get_rpmtemplate ()
+{
+    local variant="${1}"
+    local dashvariant="${variant:+-${variant}}"
+    local dotvariant="${variant:+.${variant}}"
+
+    echo "%package       -n kmod-${kmod_name}${dashvariant}"
+
+    if [ -z "$kmod_provides_summary" ]; then
+        echo "Summary:          ${kmod_name} kernel module(s)"
+    fi
+
+    if [ -z "$kmod_provides_group" ]; then
+        echo "Group:            System Environment/Kernel"
+    fi
+
+    if [ ! -z "$kmod_version" ]; then
+        echo "Version: %{kmod_version}"
+    fi
+
+    if [ ! -z "$kmod_release" ]; then
+        echo "Release: %{kmod_release}"
+    fi
+    
+    # Turn of the internal dep generator so we will use the kmod scripts.
+    echo "%global _use_internal_dependency_generator 0"
+    cat <<EOF
+Provides:         kernel-modules = ${verrel_dep}${dotvariant}
+Provides:         ${kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release}
+Requires(post):   /usr/sbin/depmod
+Requires(postun): /usr/sbin/depmod
+EOF
+
+    if [ "yes" != "$nobuildreqs" ]
+    then
+        echo "BuildRequires: kernel${dashvariant}-devel"
+    fi
+
+    if [ "" != "$override_preamble" ]
+    then
+        cat "$override_preamble"
+    fi
+
+cat <<EOF
+%description   -n kmod-${kmod_name}${dashvariant}
+This package provides the ${kmod_name} kernel modules built for
+the Linux kernel ${verrel}${dotvariant} for the %{_target_cpu}
+family of processors.
+EOF
+
+##############################################################################
+## The following are not part of this script directly, they are scripts     ##
+## that will be executed by RPM during various stages of package processing ##
+##############################################################################
+
+cat <<EOF
+%post          -n kmod-${kmod_name}${dashvariant}
+if [ -e "/boot/System.map-${verrel}${dotvariant}" ]; then
+    /usr/sbin/depmod -aeF "/boot/System.map-${verrel}${dotvariant}" "${verrel}${dotvariant}" > /dev/null || :
+fi
+
+modules=( \$(find /lib/modules/${verrel}${dotvariant}/extra/${kmod_name} | grep '\.ko$') )
+if [ -x "/sbin/weak-modules" ]; then
+    printf '%s\n' "\${modules[@]}" \
+    | /sbin/weak-modules --add-modules
+fi
+EOF
+
+cat <<EOF
+%preun         -n kmod-${kmod_name}${dashvariant}
+rpm -ql kmod-${kmod_name}${dashvariant}-%{kmod_version}-%{kmod_release}.$(arch) | grep '\.ko$' > /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
+EOF
+        
+cat <<EOF
+%postun        -n kmod-${kmod_name}${dashvariant}
+if [ -e "/boot/System.map-${verrel}${dotvariant}" ]; then
+    /usr/sbin/depmod -aeF "/boot/System.map-${verrel}${dotvariant}" "${verrel}${dotvariant}" > /dev/null || :
+fi
+
+modules=( \$(cat /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules) )
+rm /var/run/rpm-kmod-${kmod_name}${dashvariant}-modules
+if [ -x "/sbin/weak-modules" ]; then
+    printf '%s\n' "\${modules[@]}" \
+    | /sbin/weak-modules --remove-modules
+fi
+EOF
+
+echo "%files         -n kmod-${kmod_name}${dashvariant}"
+
+if [ "" == "$override_filelist" ];
+then
+    echo "%defattr(644,root,root,755)"
+    echo "/lib/modules/${verrel}${dotvariant}"
+else
+    cat "$override_filelist" | get_filelist
+fi
+}
+
+print_rpmtemplate ()
+{
+  kmod_name="${1}"
+  shift
+  kver="${1}"
+  get_verrel "${1}"
+  get_verrel_for_deps "${1}"
+  shift
+  if [ -z "${kmod_name}" ] ; then
+    echo "Please provide the kmodule-name as first parameter." >&2
+    exit 2
+  elif [ -z "${kver}" ] ; then
+    echo "Please provide the kver as second parameter." >&2
+    exit 2
+  elif [ -z "${verrel}" ] ; then
+    echo "Couldn't find out the verrel." >&2
+    exit 2
+  fi
+  
+  for variant in "$@" ; do
+      if [ "default" == "$variant" ];
+      then
+            get_rpmtemplate ""
+      else
+            get_rpmtemplate "${variant}"
+      fi
+  done
+}
+
+usage ()
+{
+  cat <<EOF
+You called: ${invocation}
+
+Usage: ${myprog} <command> <option>+
+ Commands:
+  verrel <uname>                               
+    - Get "base" version-release.
+  variant <uname>                               
+    - Get variant from uname.
+  rpmtemplate <mainpgkname> <uname> <variants> 
+    - Return a template for use in a source RPM
+  version  
+    - Output version number and exit.
+EOF
+}
+
+invocation="$(basename ${0}) $@"
+while [ "${1}" ] ; do
+  case "${1}" in
+    verrel)
+      shift
+      print_verrel $@
+      exit $?
+      ;;
+    variant)
+      shift
+      print_variant $@
+      exit $?
+      ;;
+    rpmtemplate)
+      shift
+      print_rpmtemplate "$@"
+      exit $?
+      ;;
+    version)
+      echo "${myprog} ${myver}"
+      exit 0
+      ;;
+    *)
+      echo "Error: Unknown option '${1}'." >&2
+      usage >&2
+      exit 2
+      ;;
+  esac
+done
+
+# Local variables:
+# mode: sh
+# sh-indentation: 2
+# indent-tabs-mode: nil
+# End:
+# ex: ts=2 sw=2 et
diff --git a/SPECS/ahci.spec b/SPECS/ahci.spec
new file mode 100644
index 0000000..634c6b0
--- /dev/null
+++ b/SPECS/ahci.spec
@@ -0,0 +1,106 @@
+%define kmod_name		ahci
+%define kmod_driver_version	327_RH1
+%define kmod_rpm_release	1
+%define kmod_git_hash		56e5a4be8d72a1b9cdfc1bae411c16c2c870fd3e
+%define kmod_kernel_version	3.10.0-327.el7
+%define kernel_version		3.10.0-327.el7
+%define kmod_kbuild_dir		drivers/ata
+
+
+%{!?dist: %define dist .el7}
+
+Source0:	%{kmod_name}-%{kmod_driver_version}.tar.bz2
+Source1:	%{kmod_name}.files
+Source2:	depmodconf
+Source3:	find-requires.ksyms
+Source4:	find-provides.ksyms
+Source5:	kmodtool
+
+Patch0:		ahci.patch
+
+%define __find_requires %_sourcedir/find-requires.ksyms
+%define __find_provides %_sourcedir/find-provides.ksyms %{kmod_name} %{?epoch:%{epoch}:}%{version}-%{release}
+
+Name:		%{kmod_name}
+Version:	%{kmod_driver_version}
+Release:	%{kmod_rpm_release}%{?dist}
+Summary:	%{kmod_name} kernel module
+
+Group:		System/Kernel
+License:	GPLv2
+URL:		http://www.kernel.org/
+BuildRoot:	%(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+BuildRequires:	%kernel_module_package_buildreqs
+ExclusiveArch:  x86_64
+
+
+# Build only for standard kernel variant(s); for debug packages, append "debug"
+# after "default" (separated by space)
+%kernel_module_package -s %{SOURCE5} -f %{SOURCE1}  default
+
+%description
+%{kmod_name} - driver update
+
+%prep
+%setup
+%patch0 -p1
+set -- *
+mkdir source
+mv "$@" source/
+mkdir obj
+
+%build
+for flavor in %flavors_to_build; do
+	rm -rf obj/$flavor
+	cp -r source obj/$flavor
+
+	# update symvers file if existing
+	symvers=source/Module.symvers-%{_target_cpu}
+	if [ -e $symvers ]; then
+		cp $symvers obj/$flavor/%{kmod_kbuild_dir}/Module.symvers
+	fi
+
+	make -C %{kernel_source $flavor} M=$PWD/obj/$flavor/%{kmod_kbuild_dir} \
+		NOSTDINC_FLAGS="-I $PWD/obj/$flavor/include"
+
+	# mark modules executable so that strip-to-file can strip them
+	find obj/$flavor/%{kmod_kbuild_dir} -name "*.ko" -type f -exec chmod u+x '{}' +
+done
+
+%{SOURCE2} %{name} %{kmod_kernel_version} obj > source/depmod.conf
+
+greylist=source/symbols.greylist-%{_target_cpu}
+if [ -f $greylist ]; then
+	cp $greylist source/symbols.greylist
+else
+	touch source/symbols.greylist
+fi
+
+if [ -d source/firmware ]; then
+	make -C source/firmware
+fi
+
+%install
+export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
+export INSTALL_MOD_DIR=extra/%{name}
+for flavor in %flavors_to_build ; do
+	make -C %{kernel_source $flavor} modules_install \
+		M=$PWD/obj/$flavor/%{kmod_kbuild_dir}
+	# Cleanup unnecessary kernel-generated module dependency files.
+	find $INSTALL_MOD_PATH/lib/modules -iname 'modules.*' -exec rm {} \;
+done
+
+install -m 644 -D source/depmod.conf $RPM_BUILD_ROOT/etc/depmod.d/%{kmod_name}.conf
+install -m 644 -D source/symbols.greylist $RPM_BUILD_ROOT/usr/share/doc/kmod-%{kmod_name}/greylist.txt
+
+if [ -d source/firmware ]; then
+	make -C source/firmware INSTALL_PATH=$RPM_BUILD_ROOT INSTALL_DIR=updates install
+fi
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%changelog
+* Fri Nov 06 2015 Petr Oros <poros@redhat.com> 327_RH1 1
+- Resolves: #1289098
+- ahci DUP module