fa8e191ddc9728c9e06319894a902d0c935e49e5..589f80727d4f249b37e7efb9b80388f79ddc1014
2017-02-14 Johnny Hughes
i686 mods; c7-plus mods
589f80 diff | tree
2017-02-14 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
b103d1 diff | tree
2016-12-07 Johnny Hughes
i686 mods
ef002e diff | tree
2016-12-06 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
535d2a diff | tree
2016-12-06 Johnny Hughes
i686 mods
f55531 diff | tree
2016-11-04 hughesjr
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
74ee54 diff | tree
2016-10-24 Johnny Hughes
i686 mods
742bd8 diff | tree
2016-10-24 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
739d9b diff | tree
2016-10-10 Johnny Hughes
1686 mods
190885 diff | tree
2016-10-10 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
51872b diff | tree
2016-09-18 Johnny Hughes
add i686 patches
ec8573 diff | tree
2016-09-18 Johnny Hughes
roll in i386 updates
40ab46 diff | tree
2016-09-18 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
adb4df diff | tree
2016-08-18 Johnny Hughes
roll in i386 updates
6845c4 diff | tree
2016-08-18 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
f0094e diff | tree
2016-08-02 Johnny Hughes
apply i386 patches
a0676b diff | tree
2016-08-02 Johnny Hughes
Roll in i386 Mods
7a5d70 diff | tree
2016-08-02 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
cac84b diff | tree
2016-06-23 Johnny Hughes
Roll in i386 Mods
105329 diff | tree
2016-06-23 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
0d8f6d diff | tree
2016-05-13 Johnny Hughes
roll in i386 mods
745079 diff | tree
2016-05-13 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
73995e diff | tree
2016-03-31 Johnny Hughes
Roll in i386 Mods
cc214f diff | tree
2016-03-31 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
605ae7 diff | tree
2016-02-17 Johnny Hughes
Roll in i686 Mods
1caf23 diff | tree
2016-02-17 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
e8c67e diff | tree
2016-02-11 Johnny Hughes
32 bit fixes provided by Marcus Sundberg (adamel)
8d15a7 diff | tree
2016-01-25 Johnny Hughes
Roll in i686 Mods
f970bd diff | tree
2016-01-25 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
bdef2f diff | tree
2016-01-05 Johnny Hughes
add i686 config files
180733 diff | tree
2016-01-05 Johnny Hughes
Roll in i686 Mods
0c911f diff | tree
2016-01-05 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
380fe1 diff | tree
2015-12-11 Johnny Hughes
new i686 mods for 7.1511
bd6ab2 diff | tree
2015-12-11 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
5ec7a7 diff | tree
2015-12-04 Johnny Hughes
new i686 mods for 7.1511
ba4f69 diff | tree
2015-11-21 Johnny Hughes
modify ignorewarning patch for the new kernel branch
b98821 diff | tree
2015-11-21 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
0c230a diff | tree
2015-11-03 Johnny Hughes
roll in i686 mods
61f3c8 diff | tree
2015-11-03 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
f33794 diff | tree
2015-09-30 Johnny Hughes
roll in i686 mods
c3024e diff | tree
2015-09-30 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
7129fd diff | tree
2015-08-06 Johnny Hughes
rollin i686 mods
56a396 diff | tree
2015-08-06 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
f015a8 diff | tree
2015-07-09 Johnny Hughes
roll in i686 mods
25cab7 diff | tree
2015-07-09 Johnny Hughes
Merge remote-tracking branch 'origin/c7-i686' into c7-i686
e12f7e diff | tree
2014-12-24 Johnny Hughes
update changelog
3b81cf diff | tree
2014-12-24 Johnny Hughes
New Sources for i686
ebfa72 diff | tree
2014-12-24 Johnny Hughes
kernel spec changes
1dae74 diff | tree
16 files added
2 files modified
7790 ■■■■■ changed files
SOURCES/addmissing.patch 27 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-fix-ecryptfs-error-bug7369.patch 31 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-fix-em28xx-cards-bug8285.patch 25 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch 45 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch 76 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-pci-fix-regression-mlx4-bug12277.patch 47 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-reiserfs-fix-redefine-error.patch 25 ●●●●● patch | view | raw | blame | history
SOURCES/centos-linux-3.10-support-MacBookPro-bug10447.patch 466 ●●●●● patch | view | raw | blame | history
SOURCES/clear-32bit-Werror-warnings.patch 27 ●●●●● patch | view | raw | blame | history
SOURCES/cpufreq.patch 394 ●●●●● patch | view | raw | blame | history
SOURCES/i386-audit-stop-scri-stack-frame.patch 31 ●●●●● patch | view | raw | blame | history
SOURCES/kernel-3.10.0-i686.config 5866 ●●●●● patch | view | raw | blame | history
SOURCES/kernel-3.10.0-x86_64.config 151 ●●●● patch | view | raw | blame | history
SOURCES/morefixes.patch 84 ●●●●● patch | view | raw | blame | history
SOURCES/removejiffies.patch 12 ●●●●● patch | view | raw | blame | history
SOURCES/undorhirqstat.patch 84 ●●●●● patch | view | raw | blame | history
SOURCES/upstream-32bit-fixes.patch 224 ●●●●● patch | view | raw | blame | history
SPECS/kernel.spec 175 ●●●● patch | view | raw | blame | history
SOURCES/addmissing.patch
New file
@@ -0,0 +1,27 @@
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/ptrace.h.addmissing linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/ptrace.h
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/ptrace.h.addmissing    2015-10-29 16:56:51.000000000 -0400
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/ptrace.h    2015-11-21 23:33:16.430036291 -0500
@@ -109,6 +109,23 @@ static inline int user_mode_vm(struct pt
 #endif
 }
+/*
+ * This is the fastest way to check whether regs come from user space.
+ * It is unsafe if regs might come from vm86 mode, though -- in vm86
+ * mode, all bits of CS and SS are completely under the user's control.
+ * The CPU considers vm86 mode to be CPL 3 regardless of CS and SS.
+ *
+ * Do NOT use this function unless you have already ruled out the
+ * possibility that regs came from vm86 mode.
+ *
+ * We check for RPL != 0 instead of RPL == 3 because we don't use rings
+ * 1 or 2 and this is more efficient.
+ */
+static inline int user_mode_ignore_vm86(struct pt_regs *regs)
+{
+    return (regs->cs & SEGMENT_RPL_MASK) != 0;
+}
+
 static inline int v8086_mode(struct pt_regs *regs)
 {
 #ifdef CONFIG_X86_32
SOURCES/centos-linux-3.10-fix-ecryptfs-error-bug7369.patch
New file
@@ -0,0 +1,31 @@
https://bugs.centos.org/view.php?id=7369
http://kozlex.blogspot.com/2015/05/building-ecryptfs-on-redhat-7_19.html
To fix ecryptfs and build it in the kernel follow is the partial fix:
This is a fix that will not be proposed to upstream cause it is not
compatible with other kernels; instead it is a patch to make ecryptfs
work on Rhel7 only.
--- a/fs/ecryptfs/main.c    2015-03-06 13:45:38.000000000 -0800
+++ b/fs/ecryptfs/main.c    2015-07-02 14:46:37.000000000 -0700
@@ -500,6 +500,7 @@ static struct dentry *ecryptfs_mount(str
     struct path path;
     uid_t check_ruid;
     int rc;
+    int *s_stack_depth;
     sbi = kmem_cache_zalloc(ecryptfs_sb_info_cache, GFP_KERNEL);
     if (!sbi) {
@@ -567,10 +568,10 @@ static struct dentry *ecryptfs_mount(str
     s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
     s->s_blocksize = path.dentry->d_sb->s_blocksize;
     s->s_magic = ECRYPTFS_SUPER_MAGIC;
-    s->s_stack_depth = path.dentry->d_sb->s_stack_depth + 1;
+    s_stack_depth = get_s_stack_depth(path.dentry->d_sb);
     rc = -EINVAL;
-    if (s->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
+    if ( *s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
         pr_err("eCryptfs: maximum fs stacking depth exceeded\n");
         goto out_free;
     }
SOURCES/centos-linux-3.10-fix-em28xx-cards-bug8285.patch
New file
@@ -0,0 +1,25 @@
centosplus kernel patch (bug#8285)
Reported by armada:
DVB-T Receiver "Terratec Cinergy Hybrid T USB XS" not working
My problem is exactly the same as described in
http://linuxtv.org/pipermail/linux-dvb/2014-May/032967.html [^]
This post also has a patch which solved the problem for me.
The em28xx driver causes the :
em2882/3 #0: /2: dvb frontend not attached. Can't attach xc3028
Changing the USB_DEVICE(0x0ccd, 0x0042) from driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS to EM2880_BOARD_TERRATEC_HYBRID_XS solved the problem.
--- a/drivers/media/usb/em28xx/em28xx-cards.c    2015-01-29 15:15:53.000000000 -0800
+++ b/drivers/media/usb/em28xx/em28xx-cards.c    2015-03-07 08:50:38.737699310 -0800
@@ -2091,7 +2091,7 @@ struct usb_device_id em28xx_id_table[] =
     { USB_DEVICE(0x0ccd, 0x005e),
             .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS },
     { USB_DEVICE(0x0ccd, 0x0042),
-            .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS },
+            .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS },
     { USB_DEVICE(0x0ccd, 0x0043),
             .driver_info = EM2870_BOARD_TERRATEC_XS },
     { USB_DEVICE(0x0ccd, 0x008e),    /* Cinergy HTC USB XS Rev. 1 */
SOURCES/centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch
New file
@@ -0,0 +1,45 @@
CentOS-7 patch: Allow non-LogiTech remote to work with a generic wireless
keyboard reciever that sends LogiTech scancodes.
CentOSplus bug: 0005780
Submitted by: Alex Timm <alextimm@msn.com>
LIRCD and devinput driver connected to the HOLTEK USB Keyboard remote reciever,
connected on /dev/input/eventx, was not reading the scancodes that should be
found in drivers/hid/lg.c.  The following patch adds the scan codes to
hid-input.c as they were in centos/centosplus 5.
Applied by: Akemi Yagi <toracat@centos.org>
--- a/drivers/hid/hid-input.c   2009-12-02 21:51:21.000000000 -0600
+++ b/drivers/hid/hid-input.c   2012-06-20 15:20:04.000000000 -0500
@@ -886,7 +886,28 @@ static void hidinput_configure_usage(str
         goto ignore;
     case HID_UP_LOGIVENDOR:
-        goto ignore;
+        set_bit(EV_REP, input->evbit);
+        switch(usage->hid & HID_USAGE) {
+        case 0x004: map_key_clear(KEY_AGAIN);           break;
+        case 0x00d: map_key_clear(KEY_HOME);            break;
+        case 0x024: map_key_clear(KEY_SHUFFLE);         break;
+        case 0x025: map_key_clear(KEY_TV);              break;
+        case 0x026: map_key_clear(KEY_MENU);            break;
+        case 0x031: map_key_clear(KEY_AUDIO);           break;
+        case 0x032: map_key_clear(KEY_TEXT);            break;
+        case 0x033: map_key_clear(KEY_LAST);            break;
+        case 0x047: map_key_clear(KEY_MP3);             break;
+        case 0x048: map_key_clear(KEY_DVD);             break;
+        case 0x049: map_key_clear(KEY_MEDIA);           break;
+        case 0x04a: map_key_clear(KEY_VIDEO);           break;
+        case 0x04b: map_key_clear(KEY_ANGLE);           break;
+        case 0x04c: map_key_clear(KEY_LANGUAGE);        break;
+        case 0x04d: map_key_clear(KEY_SUBTITLE);        break;
+        case 0x051: map_key_clear(KEY_RED);             break;
+        case 0x052: map_key_clear(KEY_CLOSE);           break;
+        default:    goto ignore;
+        }
+        break;
     case HID_UP_PID:
         switch (usage->hid & HID_USAGE) {
SOURCES/centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch
New file
@@ -0,0 +1,76 @@
centosplus patch [bug#12653]
commit    f60439bc21e3337429838e477903214f5bd8277f
ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths
When I was adding the code for enabling VLAN promiscuous mode with SR-IOV
enabled I had inadvertently left the VLNCTRL.VFE bit unchanged as I has
assumed there was code in another path that was setting it when we enabled
SR-IOV.  This wasn't the case and as a result we were just disabling VLAN
filtering for all the VFs apparently.
Also the previous patches were always clearing CFIEN which was always set
to 0 by the hardware anyway so I am dropping the redundant bit clearing.
Fixes: 16369564915a ("ixgbe: Add support for VLAN promiscuous with SR-IOV")
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Applied-by: Akemi Yagi <toracat@centos.org>
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c    2016-11-16 09:52:06.000000000 -0800
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c    2017-01-14 07:54:51.280709835 -0800
@@ -4066,6 +4066,8 @@ static void ixgbe_vlan_promisc_enable(st
     struct ixgbe_hw *hw = &adapter->hw;
     u32 vlnctrl, i;
+    vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
+
     switch (hw->mac.type) {
     case ixgbe_mac_82599EB:
     case ixgbe_mac_X540:
@@ -4078,8 +4080,7 @@ static void ixgbe_vlan_promisc_enable(st
         /* fall through */
     case ixgbe_mac_82598EB:
         /* legacy case, we can just disable VLAN filtering */
-        vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
-        vlnctrl &= ~(IXGBE_VLNCTRL_VFE | IXGBE_VLNCTRL_CFIEN);
+        vlnctrl &= ~IXGBE_VLNCTRL_VFE;
         IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
         return;
     }
@@ -4091,6 +4092,10 @@ static void ixgbe_vlan_promisc_enable(st
     /* Set flag so we don't redo unnecessary work */
     adapter->flags2 |= IXGBE_FLAG2_VLAN_PROMISC;
+    /* For VMDq and SR-IOV we must leave VLAN filtering enabled */
+    vlnctrl |= IXGBE_VLNCTRL_VFE;
+    IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
+
     /* Add PF to all active pools */
     for (i = IXGBE_VLVF_ENTRIES; --i;) {
         u32 reg_offset = IXGBE_VLVFB(i * 2 + VMDQ_P(0) / 32);
@@ -4157,6 +4162,11 @@ static void ixgbe_vlan_promisc_disable(s
     struct ixgbe_hw *hw = &adapter->hw;
     u32 vlnctrl, i;
+    /* Set VLAN filtering to enabled */
+    vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
+    vlnctrl |= IXGBE_VLNCTRL_VFE;
+    IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
+
     switch (hw->mac.type) {
     case ixgbe_mac_82599EB:
     case ixgbe_mac_X540:
@@ -4168,10 +4178,6 @@ static void ixgbe_vlan_promisc_disable(s
             break;
         /* fall through */
     case ixgbe_mac_82598EB:
-        vlnctrl = IXGBE_READ_REG(hw, IXGBE_VLNCTRL);
-        vlnctrl &= ~IXGBE_VLNCTRL_CFIEN;
-        vlnctrl |= IXGBE_VLNCTRL_VFE;
-        IXGBE_WRITE_REG(hw, IXGBE_VLNCTRL, vlnctrl);
         return;
     }
SOURCES/centos-linux-3.10-pci-fix-regression-mlx4-bug12277.patch
New file
@@ -0,0 +1,47 @@
centosplus patch (bug#12277)
Ref: https://patchwork.kernel.org/patch/9397341/
--- a/drivers/pci/probe.c    2016-10-19 07:16:25.000000000 -0700
+++ b/drivers/pci/probe.c    2016-11-28 09:30:30.621332097 -0800
@@ -1426,6 +1426,16 @@ static void program_hpp_type1(struct pci
         dev_warn(&dev->dev, "PCI-X settings not supported\n");
 }
+static bool pcie_get_upstream_rcb(struct pci_dev *dev)
+{
+    struct pci_dev *bridge = pci_upstream_bridge(dev);
+    u16 lnkctl;
+
+    pcie_capability_read_word(bridge, PCI_EXP_LNKCTL, &lnkctl);
+
+    return lnkctl & PCI_EXP_LNKCTL_RCB;
+}
+
 static void program_hpp_type2(struct pci_dev *dev, struct hpp_type2 *hpp)
 {
     int pos;
@@ -1455,9 +1465,21 @@ static void program_hpp_type2(struct pci
             ~hpp->pci_exp_devctl_and, hpp->pci_exp_devctl_or);
     /* Initialize Link Control Register */
-    if (pcie_cap_has_lnkctl(dev))
+    if (pcie_cap_has_lnkctl(dev)) {
+        bool us_rcb;
+        u16 clear;
+        u16 set;
+
+        us_rcb = pcie_get_upstream_rcb(dev);
+
+        clear = ~hpp->pci_exp_lnkctl_and;
+        set = hpp->pci_exp_lnkctl_or;
+        if (!us_rcb)
+            set &= ~PCI_EXP_LNKCTL_RCB;
+
         pcie_capability_clear_and_set_word(dev, PCI_EXP_LNKCTL,
-            ~hpp->pci_exp_lnkctl_and, hpp->pci_exp_lnkctl_or);
+                          clear, set);
+    }
     /* Find Advanced Error Reporting Enhanced Capability */
     pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
SOURCES/centos-linux-3.10-reiserfs-fix-redefine-error.patch
New file
@@ -0,0 +1,25 @@
centosplus patch
Building reiserfs.ko under EL7.1 produces error:
In file included from fs/reiserfs/bitmap.c:7:0:
fs/reiserfs/reiserfs.h:1957:0: error: "U32_MAX" redefined [-Werror]
 #define U32_MAX (~(__u32)0)
Solution:
In EL7.1 kernels (>= 210), U32_MAX is defined in include/linux/kernel.h
This define now needs to be deleted from reiserfs.h
Applied-by: Akemi Yagi <toracat@centos.org>
--- a/fs/reiserfs/reiserfs.h    2014-11-24 14:38:58.000000000 -0800
+++ b/fs/reiserfs/reiserfs.h    2015-01-12 15:34:40.187297040 -0800
@@ -1954,7 +1954,6 @@ struct treepath var = {.path_length = IL
 #define MAX_US_INT 0xffff
 // reiserfs version 2 has max offset 60 bits. Version 1 - 32 bit offset
-#define U32_MAX (~(__u32)0)
 static inline loff_t max_reiserfs_offset(struct inode *inode)
 {
SOURCES/centos-linux-3.10-support-MacBookPro-bug10447.patch
New file
@@ -0,0 +1,466 @@
centosplus patch (bug#10447)
support for touchpad and fn key support for MacBookPro 12,1
https://kernel.googlesource.com/pub/scm/linux/kernel/git/groeck/linux-staging/+/dbe08116b87cdc2217f11a78b5b70e29068b7efd%5E1..dbe08116b87cdc2217f11a78b5b70e29068b7efd/
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input fixes from Dmitry Torokhov:
 "The main change is support for keyboards and touchpads found in 2015
  editions of Macbooks"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
  Revert "Input: zforce - don't overwrite the stack"
  Input: bcm5974 - add support for the 2015 Macbook Pro
  HID: apple: Add support for the 2015 Macbook Pro
  Input: bcm5974 - prepare for a new trackpad generation
  Input: synaptics - dump ext10 capabilities as well
Applied-by Akemi Yagi <toracat@centos.org>
--- a/drivers/hid/hid-apple.c    2016-01-23 00:53:07.000000000 -0800
+++ b/drivers/hid/hid-apple.c    2016-03-08 12:41:27.147368677 -0800
@@ -552,6 +552,12 @@ static const struct hid_device_id apple_
         .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS),
         .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI),
+        .driver_data = APPLE_HAS_FN },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO),
+        .driver_data = APPLE_HAS_FN | APPLE_ISO_KEYBOARD },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS),
+        .driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
     { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
         .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
     { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
--- a/drivers/hid/hid-core.c    2016-01-23 00:53:07.000000000 -0800
+++ b/drivers/hid/hid-core.c    2016-03-08 12:45:44.846880469 -0800
@@ -1643,6 +1643,9 @@ static const struct hid_device_id hid_ha
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
     { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) },
     { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) },
     { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) },
@@ -2284,6 +2287,9 @@ static const struct hid_device_id hid_mo
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
+    { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
     { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
     { }
--- a/drivers/hid/hid-ids.h    2016-01-23 00:53:07.000000000 -0800
+++ b/drivers/hid/hid-ids.h    2016-03-08 12:48:25.532198900 -0800
@@ -138,6 +138,9 @@
 #define USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI    0x0290
 #define USB_DEVICE_ID_APPLE_WELLSPRING8_ISO    0x0291
 #define USB_DEVICE_ID_APPLE_WELLSPRING8_JIS    0x0292
+#define USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI    0x0272
+#define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO        0x0273
+#define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS        0x0274
 #define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY    0x030a
 #define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY    0x030b
 #define USB_DEVICE_ID_APPLE_IRCONTROL    0x8240
--- a/drivers/input/mouse/bcm5974.c    2016-01-23 00:53:07.000000000 -0800
+++ b/drivers/input/mouse/bcm5974.c    2016-03-08 13:37:14.906154047 -0800
@@ -2,6 +2,7 @@
  * Apple USB BCM5974 (Macbook Air and Penryn Macbook Pro) multitouch driver
  *
  * Copyright (C) 2008       Henrik Rydberg (rydberg@euromail.se)
+ * Copyright (C) 2015      John Horan (knasher@gmail.com)
  *
  * The USB initialization and package decoding was made by
  * Scott Shawcroft as part of the touchd user-space driver project:
@@ -92,6 +93,10 @@
 #define USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI    0x0290
 #define USB_DEVICE_ID_APPLE_WELLSPRING8_ISO    0x0291
 #define USB_DEVICE_ID_APPLE_WELLSPRING8_JIS    0x0292
+/* MacbookPro12,1 (2015) */
+#define USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI    0x0272
+#define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO    0x0273
+#define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS    0x0274
 #define BCM5974_DEVICE(prod) {                    \
     .match_flags = (USB_DEVICE_ID_MATCH_DEVICE |        \
@@ -153,6 +158,10 @@ static const struct usb_device_id bcm597
     BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI),
     BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING8_ISO),
     BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING8_JIS),
+    /* MacbookPro12,1 */
+    BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI),
+    BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING9_ISO),
+    BCM5974_DEVICE(USB_DEVICE_ID_APPLE_WELLSPRING9_JIS),
     /* Terminating entry */
     {}
 };
@@ -181,21 +190,47 @@ struct bt_data {
 enum tp_type {
     TYPE1,            /* plain trackpad */
     TYPE2,            /* button integrated in trackpad */
-    TYPE3            /* additional header fields since June 2013 */
+    TYPE3,            /* additional header fields since June 2013 */
+    TYPE4            /* additional header field for pressure data */
 };
 /* trackpad finger data offsets, le16-aligned */
-#define FINGER_TYPE1        (13 * sizeof(__le16))
-#define FINGER_TYPE2        (15 * sizeof(__le16))
-#define FINGER_TYPE3        (19 * sizeof(__le16))
+#define HEADER_TYPE1        (13 * sizeof(__le16))
+#define HEADER_TYPE2        (15 * sizeof(__le16))
+#define HEADER_TYPE3        (19 * sizeof(__le16))
+#define HEADER_TYPE4        (23 * sizeof(__le16))
 /* trackpad button data offsets */
+#define BUTTON_TYPE1        0
 #define BUTTON_TYPE2        15
 #define BUTTON_TYPE3        23
+#define BUTTON_TYPE4        31
 /* list of device capability bits */
 #define HAS_INTEGRATED_BUTTON    1
+/* trackpad finger data block size */
+#define FSIZE_TYPE1        (14 * sizeof(__le16))
+#define FSIZE_TYPE2        (14 * sizeof(__le16))
+#define FSIZE_TYPE3        (14 * sizeof(__le16))
+#define FSIZE_TYPE4        (15 * sizeof(__le16))
+
+/* offset from header to finger struct */
+#define DELTA_TYPE1        (0 * sizeof(__le16))
+#define DELTA_TYPE2        (0 * sizeof(__le16))
+#define DELTA_TYPE3        (0 * sizeof(__le16))
+#define DELTA_TYPE4        (1 * sizeof(__le16))
+
+/* usb control message mode switch data */
+#define USBMSG_TYPE1        8, 0x300, 0, 0, 0x1, 0x8
+#define USBMSG_TYPE2        8, 0x300, 0, 0, 0x1, 0x8
+#define USBMSG_TYPE3        8, 0x300, 0, 0, 0x1, 0x8
+#define USBMSG_TYPE4        2, 0x302, 2, 1, 0x1, 0x0
+
+/* Wellspring initialization constants */
+#define BCM5974_WELLSPRING_MODE_READ_REQUEST_ID        1
+#define BCM5974_WELLSPRING_MODE_WRITE_REQUEST_ID    9
+
 /* trackpad finger structure, le16-aligned */
 struct tp_finger {
     __le16 origin;        /* zero when switching track finger */
@@ -208,14 +243,13 @@ struct tp_finger {
     __le16 orientation;    /* 16384 when point, else 15 bit angle */
     __le16 touch_major;    /* touch area, major axis */
     __le16 touch_minor;    /* touch area, minor axis */
-    __le16 unused[3];    /* zeros */
+    __le16 unused[2];    /* zeros */
+    __le16 pressure;    /* pressure on forcetouch touchpad */
     __le16 multi;        /* one finger: varies, more fingers: constant */
 } __attribute__((packed,aligned(2)));
 /* trackpad finger data size, empirically at least ten fingers */
 #define MAX_FINGERS        16
-#define SIZEOF_FINGER        sizeof(struct tp_finger)
-#define SIZEOF_ALL_FINGERS    (MAX_FINGERS * SIZEOF_FINGER)
 #define MAX_FINGER_ORIENTATION    16384
 /* device-specific parameters */
@@ -233,8 +267,17 @@ struct bcm5974_config {
     int bt_datalen;        /* data length of the button interface */
     int tp_ep;        /* the endpoint of the trackpad interface */
     enum tp_type tp_type;    /* type of trackpad interface */
-    int tp_offset;        /* offset to trackpad finger data */
+    int tp_header;        /* bytes in header block */
     int tp_datalen;        /* data length of the trackpad interface */
+    int tp_button;        /* offset to button data */
+    int tp_fsize;        /* bytes in single finger block */
+    int tp_delta;        /* offset from header to finger struct */
+    int um_size;        /* usb control message length */
+    int um_req_val;        /* usb control message value */
+    int um_req_idx;        /* usb control message index */
+    int um_switch_idx;    /* usb control message mode switch index */
+    int um_switch_on;    /* usb control message mode switch on */
+    int um_switch_off;    /* usb control message mode switch off */
     struct bcm5974_param p;    /* finger pressure limits */
     struct bcm5974_param w;    /* finger width limits */
     struct bcm5974_param x;    /* horizontal limits */
@@ -260,6 +303,24 @@ struct bcm5974 {
     int slots[MAX_FINGERS];                /* slot assignments */
 };
+/* trackpad finger block data, le16-aligned */
+static const struct tp_finger *get_tp_finger(const struct bcm5974 *dev, int i)
+{
+    const struct bcm5974_config *c = &dev->cfg;
+    u8 *f_base = dev->tp_data + c->tp_header + c->tp_delta;
+
+    return (const struct tp_finger *)(f_base + i * c->tp_fsize);
+}
+
+#define DATAFORMAT(type)                \
+    type,                        \
+    HEADER_##type,                    \
+    HEADER_##type + (MAX_FINGERS) * (FSIZE_##type),    \
+    BUTTON_##type,                    \
+    FSIZE_##type,                    \
+    DELTA_##type,                    \
+    USBMSG_##type
+
 /* logical signal quality */
 #define SN_PRESSURE    45        /* pressure signal-to-noise ratio */
 #define SN_WIDTH    25        /* width signal-to-noise ratio */
@@ -274,7 +335,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING_JIS,
         0,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE1, FINGER_TYPE1, FINGER_TYPE1 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE1),
         { SN_PRESSURE, 0, 256 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4824, 5342 },
@@ -287,7 +348,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING2_JIS,
         0,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE1, FINGER_TYPE1, FINGER_TYPE1 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE1),
         { SN_PRESSURE, 0, 256 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4824, 4824 },
@@ -300,7 +361,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING3_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4460, 5166 },
@@ -313,7 +374,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING4_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4620, 5140 },
@@ -326,7 +387,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4616, 5112 },
@@ -339,7 +400,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING5_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4415, 5050 },
@@ -352,7 +413,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING6_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4620, 5140 },
@@ -365,7 +426,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4750, 5280 },
@@ -378,7 +439,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4620, 5140 },
@@ -391,7 +452,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING7_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4750, 5280 },
@@ -404,7 +465,7 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS,
         HAS_INTEGRATED_BUTTON,
         0x84, sizeof(struct bt_data),
-        0x81, TYPE2, FINGER_TYPE2, FINGER_TYPE2 + SIZEOF_ALL_FINGERS,
+        0x81, DATAFORMAT(TYPE2),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4750, 5280 },
@@ -417,13 +478,26 @@ static const struct bcm5974_config bcm59
         USB_DEVICE_ID_APPLE_WELLSPRING8_JIS,
         HAS_INTEGRATED_BUTTON,
         0, sizeof(struct bt_data),
-        0x83, TYPE3, FINGER_TYPE3, FINGER_TYPE3 + SIZEOF_ALL_FINGERS,
+        0x83, DATAFORMAT(TYPE3),
         { SN_PRESSURE, 0, 300 },
         { SN_WIDTH, 0, 2048 },
         { SN_COORD, -4620, 5140 },
         { SN_COORD, -150, 6600 },
         { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
     },
+    {
+        USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI,
+        USB_DEVICE_ID_APPLE_WELLSPRING9_ISO,
+        USB_DEVICE_ID_APPLE_WELLSPRING9_JIS,
+        HAS_INTEGRATED_BUTTON,
+        0, sizeof(struct bt_data),
+        0x83, DATAFORMAT(TYPE4),
+        { SN_PRESSURE, 0, 300 },
+        { SN_WIDTH, 0, 2048 },
+        { SN_COORD, -4828, 5345 },
+        { SN_COORD, -203, 6803 },
+        { SN_ORIENT, -MAX_FINGER_ORIENTATION, MAX_FINGER_ORIENTATION }
+    },
     {}
 };
@@ -550,19 +624,18 @@ static int report_tp_state(struct bcm597
     struct input_dev *input = dev->input;
     int raw_n, i, n = 0;
-    if (size < c->tp_offset || (size - c->tp_offset) % SIZEOF_FINGER != 0)
+    if (size < c->tp_header || (size - c->tp_header) % c->tp_fsize != 0)
         return -EIO;
-    /* finger data, le16-aligned */
-    f = (const struct tp_finger *)(dev->tp_data + c->tp_offset);
-    raw_n = (size - c->tp_offset) / SIZEOF_FINGER;
+    raw_n = (size - c->tp_header) / c->tp_fsize;
     for (i = 0; i < raw_n; i++) {
-        if (raw2int(f[i].touch_major) == 0)
+        f = get_tp_finger(dev, i);
+        if (raw2int(f->touch_major) == 0)
             continue;
-        dev->pos[n].x = raw2int(f[i].abs_x);
-        dev->pos[n].y = c->y.min + c->y.max - raw2int(f[i].abs_y);
-        dev->index[n++] = &f[i];
+        dev->pos[n].x = raw2int(f->abs_x);
+        dev->pos[n].y = c->y.min + c->y.max - raw2int(f->abs_y);
+        dev->index[n++] = f;
     }
     input_mt_assign_slots(input, dev->slots, dev->pos, n);
@@ -573,32 +646,22 @@ static int report_tp_state(struct bcm597
     input_mt_sync_frame(input);
-    report_synaptics_data(input, c, f, raw_n);
+    report_synaptics_data(input, c, get_tp_finger(dev, 0), raw_n);
-    /* type 2 reports button events via ibt only */
-    if (c->tp_type == TYPE2) {
-        int ibt = raw2int(dev->tp_data[BUTTON_TYPE2]);
+    /* later types report button events via integrated button only */
+    if (c->caps & HAS_INTEGRATED_BUTTON) {
+        int ibt = raw2int(dev->tp_data[c->tp_button]);
         input_report_key(input, BTN_LEFT, ibt);
     }
-    if (c->tp_type == TYPE3)
-        input_report_key(input, BTN_LEFT, dev->tp_data[BUTTON_TYPE3]);
-
     input_sync(input);
     return 0;
 }
-/* Wellspring initialization constants */
-#define BCM5974_WELLSPRING_MODE_READ_REQUEST_ID        1
-#define BCM5974_WELLSPRING_MODE_WRITE_REQUEST_ID    9
-#define BCM5974_WELLSPRING_MODE_REQUEST_VALUE        0x300
-#define BCM5974_WELLSPRING_MODE_REQUEST_INDEX        0
-#define BCM5974_WELLSPRING_MODE_VENDOR_VALUE        0x01
-#define BCM5974_WELLSPRING_MODE_NORMAL_VALUE        0x08
-
 static int bcm5974_wellspring_mode(struct bcm5974 *dev, bool on)
 {
+    const struct bcm5974_config *c = &dev->cfg;
     int retval = 0, size;
     char *data;
@@ -606,7 +669,7 @@ static int bcm5974_wellspring_mode(struc
     if (dev->cfg.tp_type == TYPE3)
         return 0;
-    data = kmalloc(8, GFP_KERNEL);
+    data = kmalloc(c->um_size, GFP_KERNEL);
     if (!data) {
         dev_err(&dev->intf->dev, "out of memory\n");
         retval = -ENOMEM;
@@ -617,28 +680,24 @@ static int bcm5974_wellspring_mode(struc
     size = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0),
             BCM5974_WELLSPRING_MODE_READ_REQUEST_ID,
             USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
-            BCM5974_WELLSPRING_MODE_REQUEST_VALUE,
-            BCM5974_WELLSPRING_MODE_REQUEST_INDEX, data, 8, 5000);
+            c->um_req_val, c->um_req_idx, data, c->um_size, 5000);
-    if (size != 8) {
+    if (size != c->um_size) {
         dev_err(&dev->intf->dev, "could not read from device\n");
         retval = -EIO;
         goto out;
     }
     /* apply the mode switch */
-    data[0] = on ?
-        BCM5974_WELLSPRING_MODE_VENDOR_VALUE :
-        BCM5974_WELLSPRING_MODE_NORMAL_VALUE;
+    data[c->um_switch_idx] = on ? c->um_switch_on : c->um_switch_off;
     /* write configuration */
     size = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0),
             BCM5974_WELLSPRING_MODE_WRITE_REQUEST_ID,
             USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
-            BCM5974_WELLSPRING_MODE_REQUEST_VALUE,
-            BCM5974_WELLSPRING_MODE_REQUEST_INDEX, data, 8, 5000);
+            c->um_req_val, c->um_req_idx, data, c->um_size, 5000);
-    if (size != 8) {
+    if (size != c->um_size) {
         dev_err(&dev->intf->dev, "could not write to device\n");
         retval = -EIO;
         goto out;
--- a/drivers/input/mouse/synaptics.c    2016-01-23 00:53:07.000000000 -0800
+++ b/drivers/input/mouse/synaptics.c    2016-03-08 13:50:00.835861449 -0800
@@ -1724,12 +1724,12 @@ static int __synaptics_init(struct psmou
     priv->pkt_type = SYN_MODEL_NEWABS(priv->model_id) ? SYN_NEWABS : SYN_OLDABS;
     psmouse_info(psmouse,
-             "Touchpad model: %ld, fw: %ld.%ld, id: %#lx, caps: %#lx/%#lx/%#lx, board id: %lu, fw id: %lu\n",
+             "Touchpad model: %ld, fw: %ld.%ld, id: %#lx, caps: %#lx/%#lx/%#lx/%#lx, board id: %lu, fw id: %lu\n",
              SYN_ID_MODEL(priv->identity),
              SYN_ID_MAJOR(priv->identity), SYN_ID_MINOR(priv->identity),
              priv->model_id,
              priv->capabilities, priv->ext_cap, priv->ext_cap_0c,
-             priv->board_id, priv->firmware_id);
+             priv->ext_cap_10, priv->board_id, priv->firmware_id);
     set_input_params(psmouse, priv);
SOURCES/clear-32bit-Werror-warnings.patch
New file
@@ -0,0 +1,27 @@
From 87a5a3683110ec3d30d95036c57f5cfa330ca9d9 Mon Sep 17 00:00:00 2001
From: Marcus Sundberg <marcus.sundberg@aptilo.com>
Date: Fri, 16 Dec 2016 22:53:51 +0100
Subject: [PATCH] gpt: Use correct type for gpt->gdp.
It should be a pointer to gte_t, to avoid warnings when
CONFIG_HIGHMEM64G is enabled.
---
 include/linux/gpt.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/gpt.h b/include/linux/gpt.h
index 134e02b..56715f1 100644
--- a/include/linux/gpt.h
+++ b/include/linux/gpt.h
@@ -45,7 +45,7 @@
 struct gpt {
     unsigned long        start;
     unsigned long        end;
-    unsigned long        *gdp;
+    gte_t            *gdp;
     atomic_t        refcount;
     spinlock_t        lock;
     uint8_t            nlevels;
--
1.8.3.1
SOURCES/cpufreq.patch
New file
@@ -0,0 +1,394 @@
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/cpufreq-nforce2.c linux-3.10.0-229.el7/drivers/cpufreq/cpufreq-nforce2.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/cpufreq-nforce2.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/cpufreq-nforce2.c    2015-03-09 09:22:18.376023945 -0400
@@ -270,7 +270,7 @@
     pr_debug("Old CPU frequency %d kHz, new %d kHz\n",
            freqs.old, freqs.new);
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     /* Disable IRQs */
     /* local_irq_save(flags); */
@@ -285,7 +285,7 @@
     /* Enable IRQs */
     /* local_irq_restore(flags); */
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     return 0;
 }
Binary files linux-3.10.0-229.el7.original/drivers/cpufreq/.cpufreq-nforce2.c.swp and linux-3.10.0-229.el7/drivers/cpufreq/.cpufreq-nforce2.c.swp differ
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/exynos5440-cpufreq.c linux-3.10.0-229.el7/drivers/cpufreq/exynos5440-cpufreq.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/exynos5440-cpufreq.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/exynos5440-cpufreq.c    2015-03-09 09:22:18.377023945 -0400
@@ -238,7 +238,7 @@
     freqs.old = dvfs_info->cur_frequency;
     freqs.new = freq_table[index].frequency;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     /* Set the target frequency in all C0_3_PSTATE register */
     for_each_cpu(i, policy->cpus) {
@@ -279,7 +279,7 @@
         dev_crit(dvfs_info->dev, "New frequency out of range\n");
         freqs.new = dvfs_info->cur_frequency;
     }
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     cpufreq_cpu_put(policy);
     mutex_unlock(&cpufreq_lock);
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/gx-suspmod.c linux-3.10.0-229.el7/drivers/cpufreq/gx-suspmod.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/gx-suspmod.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/gx-suspmod.c    2015-03-09 09:22:18.377023945 -0400
@@ -265,7 +265,7 @@
     freqs.new = new_khz;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     local_irq_save(flags);
     if (new_khz != stock_freq) {
@@ -314,7 +314,7 @@
     gx_params->pci_suscfg = suscfg;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     pr_debug("suspend modulation w/ duration of ON:%d us, OFF:%d us\n",
         gx_params->on_duration * 32, gx_params->off_duration * 32);
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/integrator-cpufreq.c linux-3.10.0-229.el7/drivers/cpufreq/integrator-cpufreq.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/integrator-cpufreq.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/integrator-cpufreq.c    2015-03-09 09:22:18.377023945 -0400
@@ -121,7 +121,7 @@
         return 0;
     }
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     cm_osc = __raw_readl(CM_OSC);
@@ -142,7 +142,7 @@
      */
     set_cpus_allowed(current, cpus_allowed);
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     return 0;
 }
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/longhaul.c linux-3.10.0-229.el7/drivers/cpufreq/longhaul.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/longhaul.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/longhaul.c    2015-03-09 09:22:18.377023945 -0400
@@ -269,7 +269,7 @@
     freqs.old = calc_speed(longhaul_get_cpu_mult());
     freqs.new = speed;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     pr_debug("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n",
             fsb, mult/10, mult%10, print_speed(speed/1000));
@@ -386,7 +386,7 @@
         }
     }
     /* Report true CPU frequency */
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     if (!bm_timeout)
         printk(KERN_INFO PFX "Warning: Timeout while waiting for "
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/powernow-k6.c linux-3.10.0-229.el7/drivers/cpufreq/powernow-k6.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/powernow-k6.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/powernow-k6.c    2015-03-09 09:23:09.182024898 -0400
@@ -83,7 +83,7 @@
     freqs.old = busfreq * powernow_k6_get_cpu_multiplier();
     freqs.new = busfreq * clock_ratio[best_i].driver_data;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     /* we now need to transform best_i to the BVC format, see AMD#23446 */
@@ -98,7 +98,7 @@
     msrval = POWERNOW_IOPORT + 0x0;
     wrmsr(MSR_K6_EPMR, msrval, 0); /* disable it again */
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     return;
 }
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/powernow-k7.c linux-3.10.0-229.el7/drivers/cpufreq/powernow-k7.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/powernow-k7.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/powernow-k7.c    2015-03-09 09:23:52.126025704 -0400
@@ -269,7 +269,7 @@
     freqs.new = powernow_table[index].frequency;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     /* Now do the magic poking into the MSRs.  */
@@ -290,7 +290,7 @@
     if (have_a0 == 1)
         local_irq_enable();
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
 }
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/sh-cpufreq.c linux-3.10.0-229.el7/drivers/cpufreq/sh-cpufreq.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/sh-cpufreq.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/sh-cpufreq.c    2015-03-09 09:22:18.378023945 -0400
@@ -68,10 +68,10 @@
     freqs.new    = (freq + 500) / 1000;
     freqs.flags    = 0;
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     set_cpus_allowed_ptr(current, &cpus_allowed);
     clk_set_rate(cpuclk, freq);
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, 0);
     dev_dbg(dev, "set frequency %lu Hz\n", freq);
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/speedstep-centrino.c linux-3.10.0-229.el7/drivers/cpufreq/speedstep-centrino.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/speedstep-centrino.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/speedstep-centrino.c    2015-03-09 09:58:30.112064688 -0400
@@ -345,7 +345,6 @@
     struct cpuinfo_x86 *cpu = &cpu_data(policy->cpu);
     unsigned freq;
     unsigned l, h;
-    int ret;
     int i;
     /* Only Intel makes Enhanced Speedstep-capable CPUs */
@@ -402,15 +401,8 @@
     pr_debug("centrino_cpu_init: cur=%dkHz\n", policy->cur);
-    ret = cpufreq_frequency_table_cpuinfo(policy,
+    return cpufreq_table_validate_and_show(policy,
         per_cpu(centrino_model, policy->cpu)->op_points);
-    if (ret)
-        return (ret);
-
-    cpufreq_frequency_table_get_attr(
-        per_cpu(centrino_model, policy->cpu)->op_points, policy->cpu);
-
-    return 0;
 }
 static int centrino_cpu_exit(struct cpufreq_policy *policy)
@@ -428,19 +420,6 @@
 }
 /**
- * centrino_verify - verifies a new CPUFreq policy
- * @policy: new policy
- *
- * Limit must be within this model's frequency range at least one
- * border included.
- */
-static int centrino_verify (struct cpufreq_policy *policy)
-{
-    return cpufreq_frequency_table_verify(policy,
-            per_cpu(centrino_model, policy->cpu)->op_points);
-}
-
-/**
  * centrino_setpolicy - set a new CPUFreq policy
  * @policy: new policy
  * @target_freq: the target frequency
@@ -561,20 +540,15 @@
     return retval;
 }
-static struct freq_attr* centrino_attr[] = {
-    &cpufreq_freq_attr_scaling_available_freqs,
-    NULL,
-};
-
 static struct cpufreq_driver centrino_driver = {
     .name        = "centrino", /* should be speedstep-centrino,
                      but there's a 16 char limit */
     .init        = centrino_cpu_init,
     .exit        = centrino_cpu_exit,
-    .verify        = centrino_verify,
+    .verify        = cpufreq_generic_frequency_table_verify,
     .target        = centrino_target,
     .get        = get_cur_freq,
-    .attr           = centrino_attr,
+    .attr        = cpufreq_generic_attr,
 };
 /*
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/speedstep-ich.c linux-3.10.0-229.el7/drivers/cpufreq/speedstep-ich.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/speedstep-ich.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/speedstep-ich.c    2015-03-09 09:58:30.113064688 -0400
@@ -289,18 +289,6 @@
 }
-/**
- * speedstep_verify - verifies a new CPUFreq policy
- * @policy: new policy
- *
- * Limit must be within speedstep_low_freq and speedstep_high_freq, with
- * at least one border included.
- */
-static int speedstep_verify(struct cpufreq_policy *policy)
-{
-    return cpufreq_frequency_table_verify(policy, &speedstep_freqs[0]);
-}
-
 struct get_freqs {
     struct cpufreq_policy *policy;
     int ret;
@@ -320,7 +308,6 @@
 static int speedstep_cpu_init(struct cpufreq_policy *policy)
 {
-    int result;
     unsigned int policy_cpu, speed;
     struct get_freqs gf;
@@ -349,36 +336,18 @@
     /* cpuinfo and default policy values */
     policy->cur = speed;
-    result = cpufreq_frequency_table_cpuinfo(policy, speedstep_freqs);
-    if (result)
-        return result;
-
-    cpufreq_frequency_table_get_attr(speedstep_freqs, policy->cpu);
-
-    return 0;
+    return cpufreq_table_validate_and_show(policy, speedstep_freqs);
 }
-static int speedstep_cpu_exit(struct cpufreq_policy *policy)
-{
-    cpufreq_frequency_table_put_attr(policy->cpu);
-    return 0;
-}
-
-static struct freq_attr *speedstep_attr[] = {
-    &cpufreq_freq_attr_scaling_available_freqs,
-    NULL,
-};
-
-
 static struct cpufreq_driver speedstep_driver = {
     .name    = "speedstep-ich",
-    .verify    = speedstep_verify,
+    .verify    = cpufreq_generic_frequency_table_verify,
     .target    = speedstep_target,
     .init    = speedstep_cpu_init,
-    .exit    = speedstep_cpu_exit,
+    .exit    = cpufreq_generic_exit,
     .get    = speedstep_get,
-    .attr    = speedstep_attr,
+    .attr    = cpufreq_generic_attr,
 };
 static const struct x86_cpu_id ss_smi_ids[] = {
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/speedstep-smi.c linux-3.10.0-229.el7/drivers/cpufreq/speedstep-smi.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/speedstep-smi.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/speedstep-smi.c    2015-03-09 09:58:30.113064688 -0400
@@ -264,19 +264,6 @@
 }
-/**
- * speedstep_verify - verifies a new CPUFreq policy
- * @policy: new policy
- *
- * Limit must be within speedstep_low_freq and speedstep_high_freq, with
- * at least one border included.
- */
-static int speedstep_verify(struct cpufreq_policy *policy)
-{
-    return cpufreq_frequency_table_verify(policy, &speedstep_freqs[0]);
-}
-
-
 static int speedstep_cpu_init(struct cpufreq_policy *policy)
 {
     int result;
@@ -329,19 +316,7 @@
     policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
     policy->cur = speed;
-    result = cpufreq_frequency_table_cpuinfo(policy, speedstep_freqs);
-    if (result)
-        return result;
-
-    cpufreq_frequency_table_get_attr(speedstep_freqs, policy->cpu);
-
-    return 0;
-}
-
-static int speedstep_cpu_exit(struct cpufreq_policy *policy)
-{
-    cpufreq_frequency_table_put_attr(policy->cpu);
-    return 0;
+    return cpufreq_table_validate_and_show(policy, speedstep_freqs);
 }
 static unsigned int speedstep_get(unsigned int cpu)
@@ -362,20 +337,15 @@
     return result;
 }
-static struct freq_attr *speedstep_attr[] = {
-    &cpufreq_freq_attr_scaling_available_freqs,
-    NULL,
-};
-
 static struct cpufreq_driver speedstep_driver = {
     .name        = "speedstep-smi",
-    .verify        = speedstep_verify,
+    .verify        = cpufreq_generic_frequency_table_verify,
     .target        = speedstep_target,
     .init        = speedstep_cpu_init,
-    .exit        = speedstep_cpu_exit,
+    .exit        = cpufreq_generic_exit,
     .get        = speedstep_get,
     .resume        = speedstep_resume,
-    .attr        = speedstep_attr,
+    .attr        = cpufreq_generic_attr,
 };
 static const struct x86_cpu_id ss_smi_ids[] = {
diff -urN linux-3.10.0-229.el7.original/drivers/cpufreq/unicore2-cpufreq.c linux-3.10.0-229.el7/drivers/cpufreq/unicore2-cpufreq.c
--- linux-3.10.0-229.el7.original/drivers/cpufreq/unicore2-cpufreq.c    2015-01-29 18:15:53.000000000 -0500
+++ linux-3.10.0-229.el7/drivers/cpufreq/unicore2-cpufreq.c    2015-03-09 09:24:33.053026472 -0400
@@ -50,14 +50,14 @@
     struct cpufreq_freqs freqs;
     struct clk *mclk = clk_get(NULL, "MAIN_CLK");
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
+    cpufreq_freq_transition_begin(policy, &freqs);
     if (!clk_set_rate(mclk, target_freq * 1000)) {
         freqs.old = cur;
         freqs.new = target_freq;
     }
-    cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+    cpufreq_freq_transition_end(policy, &freqs, ret);
     return 0;
 }
SOURCES/i386-audit-stop-scri-stack-frame.patch
New file
@@ -0,0 +1,31 @@
Note:  this bug was taken from Commit-ID: 26c2d2b39128adba276d140eefa2745591b88536
and corrected for white space differences between the RHEL-7.1 3.10.0-229 upstream
kernel.
---
diff -uNrp a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
--- a/arch/x86/kernel/entry_32.S    2015-05-17 07:39:14.371778177 -0500
+++ b/arch/x86/kernel/entry_32.S    2015-05-17 07:36:13.654610869 -0500
@@ -457,15 +457,14 @@ sysenter_exit:
 sysenter_audit:
     testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
     jnz syscall_trace_entry
-    addl $4,%esp
-    CFI_ADJUST_CFA_OFFSET -4
-    movl %esi,4(%esp)        /* 5th arg: 4th syscall arg */
-    movl %edx,(%esp)        /* 4th arg: 3rd syscall arg */
-    /* %ecx already in %ecx           3rd arg: 2nd syscall arg */
-    movl %ebx,%edx            /* 2nd arg: 1st syscall arg */
-    /* %eax already in %eax           1st arg: syscall number */
+    /* movl PT_EAX(%esp), %eax        already set, syscall number: 1st arg to audit */
+    movl PT_EBX(%esp), %edx                /* ebx/a0: 2nd arg to audit */
+     /* movl PT_ECX(%esp), %ecx        already set, a1: 3nd arg to audit */
+    pushl_cfi PT_ESI(%esp)                /* a3: 5th arg */
+    pushl_cfi PT_EDX+4(%esp)        /* a2: 4th arg */
     call __audit_syscall_entry
-    pushl_cfi %ebx
+    popl_cfi %ecx /* get that remapped edx off the stack */
+    popl_cfi %ecx /* get that remapped esi off the stack */
     movl PT_EAX(%esp),%eax        /* reload syscall number */
     jmp sysenter_do_call
---
SOURCES/kernel-3.10.0-i686.config
New file
Diff too large
SOURCES/kernel-3.10.0-x86_64.config
@@ -1,8 +1,5 @@
# x86_64
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 3.10.0 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
@@ -373,7 +370,7 @@
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_NUMACHIP is not set
CONFIG_X86_NUMACHIP=y
# CONFIG_X86_VSMP is not set
CONFIG_X86_UV=y
CONFIG_X86_INTEL_LPSS=y
@@ -1412,6 +1409,7 @@
CONFIG_BT_MRVL=m
CONFIG_BT_MRVL_SDIO=m
CONFIG_BT_ATH3K=m
# CONFIG_BT_WILINK is not set
# CONFIG_AF_RXRPC is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
@@ -1447,7 +1445,10 @@
CONFIG_RFKILL_LEDS=y
CONFIG_RFKILL_INPUT=y
# CONFIG_RFKILL_GPIO is not set
# CONFIG_NET_9P is not set
CONFIG_NET_9P=m
CONFIG_NET_9P_VIRTIO=m
# CONFIG_NET_9P_RDMA is not set
# CONFIG_NET_9P_DEBUG is not set
# CONFIG_CAIF is not set
CONFIG_CEPH_LIB=m
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
@@ -1670,7 +1671,7 @@
#
# Texas Instruments shared transport line discipline
#
# CONFIG_TI_ST is not set
CONFIG_TI_ST=m
CONFIG_SENSORS_LIS3_I2C=m
#
@@ -1742,7 +1743,12 @@
CONFIG_SCSI_3W_SAS=m
# CONFIG_SCSI_ACARD is not set
CONFIG_SCSI_AACRAID=m
# CONFIG_SCSI_AIC7XXX is not set
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
CONFIG_AIC7XXX_RESET_DELAY_MS=5000
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_AIC7XXX_DEBUG_MASK=0
CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
# CONFIG_SCSI_AIC7XXX_OLD is not set
CONFIG_SCSI_AIC79XX=m
CONFIG_AIC79XX_CMDS_PER_DEVICE=4
@@ -1770,7 +1776,7 @@
CONFIG_SCSI_UFSHCD_PCI=m
# CONFIG_SCSI_UFSHCD_PLATFORM is not set
CONFIG_SCSI_HPTIOP=m
# CONFIG_SCSI_BUSLOGIC is not set
CONFIG_SCSI_BUSLOGIC=m
CONFIG_VMWARE_PVSCSI=m
CONFIG_HYPERV_STORAGE=m
CONFIG_LIBFC=m
@@ -2009,7 +2015,44 @@
CONFIG_VIRTIO_NET=m
CONFIG_NLMON=m
# CONFIG_ARCNET is not set
# CONFIG_ATM_DRIVERS is not set
CONFIG_ATM_DRIVERS=y
# CONFIG_ATM_DUMMY is not set
CONFIG_ATM_TCP=m
CONFIG_ATM_LANAI=m
CONFIG_ATM_ENI=m
# CONFIG_ATM_ENI_DEBUG is not set
CONFIG_ATM_ENI_TUNE_BURST=y
CONFIG_ATM_ENI_BURST_TX_16W=y
CONFIG_ATM_ENI_BURST_TX_8W=y
CONFIG_ATM_ENI_BURST_TX_4W=y
CONFIG_ATM_ENI_BURST_TX_2W=y
CONFIG_ATM_ENI_BURST_RX_16W=y
CONFIG_ATM_ENI_BURST_RX_8W=y
CONFIG_ATM_ENI_BURST_RX_4W=y
CONFIG_ATM_ENI_BURST_RX_2W=y
CONFIG_ATM_FIRESTREAM=m
CONFIG_ATM_ZATM=m
# CONFIG_ATM_ZATM_DEBUG is not set
CONFIG_ATM_NICSTAR=m
CONFIG_ATM_NICSTAR_USE_SUNI=y
CONFIG_ATM_NICSTAR_USE_IDT77105=y
CONFIG_ATM_IDT77252=m
# CONFIG_ATM_IDT77252_DEBUG is not set
CONFIG_ATM_IDT77252_RCV_ALL=y
CONFIG_ATM_IDT77252_USE_SUNI=y
CONFIG_ATM_AMBASSADOR=m
# CONFIG_ATM_AMBASSADOR_DEBUG is not set
CONFIG_ATM_HORIZON=m
# CONFIG_ATM_HORIZON_DEBUG is not set
CONFIG_ATM_IA=m
CONFIG_ATM_IA_DEBUG=y
CONFIG_ATM_FORE200E=m
CONFIG_ATM_FORE200E_USE_TASKLET=y
CONFIG_ATM_FORE200E_TX_RETRY=16
CONFIG_ATM_FORE200E_DEBUG=0
CONFIG_ATM_HE=m
CONFIG_ATM_HE_USE_SUNI=y
CONFIG_ATM_SOLOS=m
#
# CAIF transport drivers
@@ -2030,7 +2073,9 @@
# CONFIG_NET_DSA_MV88E6123_61_65 is not set
CONFIG_ETHERNET=y
CONFIG_MDIO=m
# CONFIG_NET_VENDOR_3COM is not set
CONFIG_NET_VENDOR_3COM=y
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
# CONFIG_NET_VENDOR_ADAPTEC is not set
# CONFIG_NET_VENDOR_ALTEON is not set
# CONFIG_NET_VENDOR_AMD is not set
@@ -2091,7 +2136,7 @@
# CONFIG_NET_VENDOR_EXAR is not set
# CONFIG_NET_VENDOR_HP is not set
CONFIG_NET_VENDOR_INTEL=y
# CONFIG_E100 is not set
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
CONFIG_E1000E_HWTS=y
@@ -2099,7 +2144,7 @@
CONFIG_IGB_HWMON=y
CONFIG_IGB_DCA=y
CONFIG_IGBVF=m
# CONFIG_IXGB is not set
CONFIG_IXGB=m
CONFIG_IXGBE=m
# CONFIG_IXGBE_VXLAN is not set
CONFIG_IXGBE_HWMON=y
@@ -2140,13 +2185,14 @@
CONFIG_MYRI10GE_DCA=y
# CONFIG_FEALNX is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_NVIDIA is not set
CONFIG_NET_VENDOR_NVIDIA=y
CONFIG_FORCEDETH=m
CONFIG_NET_VENDOR_OKI=y
CONFIG_PCH_GBE=m
CONFIG_ETHOC=m
CONFIG_NET_PACKET_ENGINE=y
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_NET_VENDOR_QLOGIC=y
CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
@@ -2187,7 +2233,10 @@
# CONFIG_NET_VENDOR_TEHUTI is not set
CONFIG_NET_VENDOR_TI=y
CONFIG_TLAN=m
# CONFIG_NET_VENDOR_VIA is not set
CONFIG_NET_VENDOR_VIA=y
CONFIG_VIA_RHINE=m
# CONFIG_VIA_RHINE_MMIO is not set
CONFIG_VIA_VELOCITY=m
# CONFIG_NET_VENDOR_WIZNET is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
@@ -2611,8 +2660,8 @@
# CONFIG_KEYBOARD_QT1070 is not set
# CONFIG_KEYBOARD_QT2160 is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
CONFIG_KEYBOARD_GPIO=m
CONFIG_KEYBOARD_GPIO_POLLED=m
# CONFIG_KEYBOARD_TCA6416 is not set
# CONFIG_KEYBOARD_TCA8418 is not set
# CONFIG_KEYBOARD_MATRIX is not set
@@ -2860,7 +2909,15 @@
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
# CONFIG_I2C_MUX is not set
CONFIG_I2C_MUX=m
#
# Multiplexer I2C Chip support
#
CONFIG_I2C_MUX_GPIO=m
CONFIG_I2C_MUX_PCA9541=m
CONFIG_I2C_MUX_PCA954x=m
# CONFIG_I2C_MUX_PINCTRL is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_SMBUS=m
CONFIG_I2C_ALGOBIT=m
@@ -2937,7 +2994,7 @@
# SPI Master Controller Drivers
#
# CONFIG_SPI_ALTERA is not set
# CONFIG_SPI_BITBANG is not set
CONFIG_SPI_BITBANG=m
# CONFIG_SPI_BUTTERFLY is not set
# CONFIG_SPI_GPIO is not set
# CONFIG_SPI_LM70_LLP is not set
@@ -2953,7 +3010,7 @@
#
# SPI Protocol Masters
#
# CONFIG_SPI_SPIDEV is not set
CONFIG_SPI_SPIDEV=m
# CONFIG_SPI_TLE62X0 is not set
#
@@ -3002,6 +3059,7 @@
CONFIG_GPIO_ACPI=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
@@ -3037,10 +3095,10 @@
#
# SPI GPIO expanders:
#
# CONFIG_GPIO_MAX7301 is not set
CONFIG_GPIO_MAX7301=m
# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_GPIO_MC33880 is not set
# CONFIG_GPIO_74X164 is not set
CONFIG_GPIO_MC33880=m
CONFIG_GPIO_74X164=m
#
# AC97 GPIO expanders:
@@ -4026,7 +4084,7 @@
# CONFIG_FB_UDL is not set
# CONFIG_FB_GOLDFISH is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_XEN_FBDEV_FRONTEND is not set
CONFIG_XEN_FBDEV_FRONTEND=m
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
@@ -4229,7 +4287,7 @@
CONFIG_SND_HDA_I915=y
CONFIG_SND_HDA_EXT_CORE=m
CONFIG_SND_HDA_PREALLOC_SIZE=512
# CONFIG_SND_SPI is not set
CONFIG_SND_SPI=y
CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=m
CONFIG_SND_USB_UA101=m
@@ -4640,8 +4698,9 @@
#
CONFIG_LEDS_LM3530=m
# CONFIG_LEDS_LM3642 is not set
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_GPIO is not set
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP55XX_COMMON=m
CONFIG_LEDS_LP5521=m
@@ -4860,7 +4919,7 @@
CONFIG_VFIO=m
CONFIG_VFIO_NOIOMMU=y
CONFIG_VFIO_PCI=m
# CONFIG_VFIO_PCI_VGA is not set
CONFIG_VFIO_PCI_VGA=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
CONFIG_IRQ_BYPASS_MANAGER=m
@@ -4922,7 +4981,8 @@
# CONFIG_RTS5139 is not set
# CONFIG_TRANZPORT is not set
# CONFIG_IDE_PHISON is not set
# CONFIG_LINE6_USB is not set
CONFIG_LINE6_USB=m
CONFIG_LINE6_USB_IMPULSE_RESPONSE=y
# CONFIG_USB_SERIAL_QUATECH2 is not set
# CONFIG_VT6655 is not set
# CONFIG_VT6656 is not set
@@ -5104,8 +5164,17 @@
CONFIG_JBD2=m
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=m
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
CONFIG_REISERFS_PROC_INFO=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
CONFIG_JFS_FS=m
# CONFIG_JFS_POSIX_ACL is not set
# CONFIG_JFS_SECURITY is not set
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_POSIX_ACL=y
@@ -5195,7 +5264,8 @@
CONFIG_MISC_FILESYSTEMS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
CONFIG_ECRYPT_FS=m
# CONFIG_ECRYPT_FS_MESSAGING is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
@@ -5290,6 +5360,9 @@
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
CONFIG_9P_FS=m
CONFIG_9P_FSCACHE=y
CONFIG_9P_FS_POSIX_ACL=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=y
@@ -5545,7 +5618,7 @@
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
# CONFIG_SECURITY_PATH is not set
CONFIG_SECURITY_PATH=y
CONFIG_SECURITY_SECURELEVEL=y
CONFIG_INTEL_TXT=y
CONFIG_LSM_MMAP_MIN_ADDR=65535
@@ -5558,7 +5631,12 @@
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
CONFIG_SECURITY_TOMOYO=y
CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/usr/lib/systemd/systemd"
# CONFIG_SECURITY_APPARMOR is not set
# CONFIG_SECURITY_YAMA is not set
CONFIG_INTEGRITY=y
@@ -5573,6 +5651,7 @@
CONFIG_EVM=y
CONFIG_EVM_HMAC_VERSION=2
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="selinux"
CONFIG_XOR_BLOCKS=m
@@ -5835,7 +5914,7 @@
CONFIG_DQL=y
CONFIG_NLATTR=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
# CONFIG_AVERAGE is not set
CONFIG_AVERAGE=y
CONFIG_CLZ_TAB=y
CONFIG_CORDIC=m
# CONFIG_DDR is not set
SOURCES/morefixes.patch
New file
@@ -0,0 +1,84 @@
diff -up linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/cpufeature.h.morefixes linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/cpufeature.h
--- linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/cpufeature.h.morefixes    2016-10-19 10:16:25.000000000 -0400
+++ linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/cpufeature.h    2016-11-05 08:30:46.276033474 -0400
@@ -354,6 +354,7 @@ extern const char * const x86_power_flag
 #define cpu_has_avx        boot_cpu_has(X86_FEATURE_AVX)
 #define cpu_has_avx2        boot_cpu_has(X86_FEATURE_AVX2)
 #define cpu_has_ht        boot_cpu_has(X86_FEATURE_HT)
+#define cpu_has_mp        boot_cpu_has(X86_FEATURE_MP)
 #define cpu_has_nx        boot_cpu_has(X86_FEATURE_NX)
 #define cpu_has_xstore        boot_cpu_has(X86_FEATURE_XSTORE)
 #define cpu_has_xstore_enabled    boot_cpu_has(X86_FEATURE_XSTORE_EN)
diff -up linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/irq_remapping.h.morefixes linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/irq_remapping.h
--- linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/irq_remapping.h.morefixes    2016-10-19 10:16:25.000000000 -0400
+++ linux-3.10.0-514.sdl7.i686/arch/x86/include/asm/irq_remapping.h    2016-11-05 09:39:38.425043476 -0400
@@ -110,7 +110,7 @@ static inline bool setup_remapped_irq(in
     return false;
 }
-int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info)
+static inline int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info)
 {
     return -ENOSYS;
 }
diff -up linux-3.10.0-514.sdl7.i686/arch/x86/kernel/irq_32.c.morefixes linux-3.10.0-514.sdl7.i686/arch/x86/kernel/irq_32.c
--- linux-3.10.0-514.sdl7.i686/arch/x86/kernel/irq_32.c.morefixes    2016-10-19 10:16:25.000000000 -0400
+++ linux-3.10.0-514.sdl7.i686/arch/x86/kernel/irq_32.c    2016-11-05 09:49:59.371055125 -0400
@@ -24,9 +24,12 @@
 DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
 EXPORT_PER_CPU_SYMBOL(irq_stat);
+DEFINE_PER_CPU_SHARED_ALIGNED(rh_irq_cpustat_t, rh_irq_stat);
+
 DEFINE_PER_CPU(struct pt_regs *, irq_regs);
 EXPORT_PER_CPU_SYMBOL(irq_regs);
+
 #ifdef CONFIG_DEBUG_STACKOVERFLOW
 int sysctl_panic_on_stackoverflow __read_mostly;
diff -up linux-3.10.0-514.sdl7.i686/include/linux/pps_kernel.h.morefixes linux-3.10.0-514.sdl7.i686/include/linux/pps_kernel.h
--- linux-3.10.0-514.sdl7.i686/include/linux/pps_kernel.h.morefixes    2016-10-19 10:16:25.000000000 -0400
+++ linux-3.10.0-514.sdl7.i686/include/linux/pps_kernel.h    2016-11-05 10:44:41.492049162 -0400
@@ -115,10 +115,17 @@ static inline void pps_get_ts(struct pps
 {
     struct system_time_snapshot snap;
     ktime_get_snapshot(&snap);
+#if defined CONFIG_X86_64
     ts->ts_real = ktime_to_timespec64(snap.real);
 #ifdef CONFIG_NTP_PPS
     ts->ts_raw = ktime_to_timespec64(snap.raw);
 #endif
+#else
+    ts->ts_real = ktime_to_timespec(snap.real);
+#ifdef CONFIG_NTP_PPS
+    ts->ts_raw = ktime_to_timespec(snap.raw);
+#endif
+#endif
 }
 /* Subtract known time delay from PPS event time(s) */
diff -up linux-3.10.0-514.sdl7.i686/kernel/hrtimer.c.morefixes linux-3.10.0-514.sdl7.i686/kernel/hrtimer.c
--- linux-3.10.0-514.sdl7.i686/kernel/hrtimer.c.morefixes    2016-10-19 10:16:25.000000000 -0400
+++ linux-3.10.0-514.sdl7.i686/kernel/hrtimer.c    2016-11-05 10:58:56.726065206 -0400
@@ -328,6 +328,7 @@ u64 ktime_divns(const ktime_t kt, s64 di
     return dclc;
 }
+EXPORT_SYMBOL_GPL(ktime_divns);
 #endif /* BITS_PER_LONG >= 64 */
 /*
diff -up linux-3.10.0-514.sdl7.i686/mm/swap.c.morefixes linux-3.10.0-514.sdl7.i686/mm/swap.c
--- linux-3.10.0-514.sdl7.i686/mm/swap.c.morefixes    2016-10-19 10:16:25.000000000 -0400
+++ linux-3.10.0-514.sdl7.i686/mm/swap.c    2016-11-05 08:55:41.521061525 -0400
@@ -972,9 +972,6 @@ void release_pages(struct page **pages,
         if (!put_page_testzero(page))
             continue;
-        VM_BUG_ON_PAGE(check_mmu_gather &&
-                   trans_huge_mmu_gather_count(page), page);
-
         if (PageLRU(page)) {
             if (!was_thp)
                 zone = zone_lru_lock(zone, page, &lock_batch,
SOURCES/removejiffies.patch
New file
@@ -0,0 +1,12 @@
diff -up linux-3.10.0-123.6.3.el7.x86_64/include/asm-generic/cputime_jiffies.h.removejiffies linux-3.10.0-123.6.3.el7.x86_64/include/asm-generic/cputime_jiffies.h
--- linux-3.10.0-123.6.3.el7.x86_64/include/asm-generic/cputime_jiffies.h.removejiffies    2014-07-16 14:25:31.000000000 -0400
+++ linux-3.10.0-123.6.3.el7.x86_64/include/asm-generic/cputime_jiffies.h    2014-08-07 10:57:42.702063799 -0400
@@ -17,8 +17,6 @@ typedef u64 __nocast cputime64_t;
 /*
  * Convert nanoseconds <-> cputime
  */
-#define cputime_to_nsecs(__ct)        \
-    jiffies_to_nsecs(cputime_to_jiffies(__ct))
 #define nsecs_to_cputime64(__nsec)    \
     jiffies64_to_cputime64(nsecs_to_jiffies64(__nsec))
 #define nsecs_to_cputime(__nsec)    \
SOURCES/undorhirqstat.patch
New file
@@ -0,0 +1,84 @@
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h.undorhirqstat    2015-10-29 16:56:51.000000000 -0400
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/include/asm/hardirq.h    2015-11-21 23:57:10.330063191 -0500
@@ -37,18 +37,13 @@ typedef struct {
 DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
-typedef struct {
-    unsigned int irq_hv_callback_count;
-} ____cacheline_aligned rh_irq_cpustat_t;
-
-DECLARE_PER_CPU_SHARED_ALIGNED(rh_irq_cpustat_t, rh_irq_stat);
+/* We can have at most NR_VECTORS irqs routed to a cpu at a time */
+#define MAX_HARDIRQS_PER_CPU NR_VECTORS
 #define __ARCH_IRQ_STAT
 #define inc_irq_stat(member)    this_cpu_inc(irq_stat.member)
-#define rh_inc_irq_stat(member)    this_cpu_inc(rh_irq_stat.member)
-
 #define local_softirq_pending()    this_cpu_read(irq_stat.__softirq_pending)
 #define __ARCH_SET_SOFTIRQ_PENDING
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c.undorhirqstat    2015-10-29 16:56:51.000000000 -0400
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/cpu/mshyperv.c    2015-11-22 00:03:55.131003266 -0500
@@ -46,7 +46,6 @@ void hyperv_vector_handler(struct pt_reg
     irq_enter();
     exit_idle();
-    rh_inc_irq_stat(irq_hv_callback_count);
     if (vmbus_handler)
         vmbus_handler();
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c.undorhirqstat    2015-10-29 16:56:51.000000000 -0400
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq.c    2015-11-21 23:58:02.526064171 -0500
@@ -48,7 +48,6 @@ void ack_bad_irq(unsigned int irq)
 }
 #define irq_stats(x)        (&per_cpu(irq_stat, x))
-#define rh_irq_stats(x)        (&per_cpu(rh_irq_stat, x))
 /*
  * /proc/interrupts printing for arch specific interrupts
  */
@@ -126,13 +125,6 @@ int arch_show_interrupts(struct seq_file
         seq_printf(p, "%10u ", per_cpu(mce_poll_count, j));
     seq_printf(p, "  Machine check polls\n");
 #endif
-    if (test_bit(HYPERVISOR_CALLBACK_VECTOR, used_vectors)) {
-        seq_printf(p, "%*s: ", prec, "HYP");
-        for_each_online_cpu(j)
-            seq_printf(p, "%10u ",
-                   rh_irq_stats(j)->irq_hv_callback_count);
-        seq_printf(p, "  Hypervisor callback interrupts\n");
-    }
     seq_printf(p, "%*s: %10u\n", prec, "ERR", atomic_read(&irq_err_count));
 #if defined(CONFIG_X86_IO_APIC)
     seq_printf(p, "%*s: %10u\n", prec, "MIS", atomic_read(&irq_mis_count));
diff -up linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c
--- linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c.undorhirqstat    2015-10-29 16:56:51.000000000 -0400
+++ linux-3.10.0-327.sdl7.x86_64/arch/x86/kernel/irq_64.c    2015-11-21 23:58:27.650064642 -0500
@@ -23,8 +23,6 @@
 DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
 EXPORT_PER_CPU_SYMBOL(irq_stat);
-DEFINE_PER_CPU_SHARED_ALIGNED(rh_irq_cpustat_t, rh_irq_stat);
-
 DEFINE_PER_CPU(struct pt_regs *, irq_regs);
 EXPORT_PER_CPU_SYMBOL(irq_regs);
diff -up linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c.undorhirqstat linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c
--- linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c.undorhirqstat    2015-10-29 16:56:51.000000000 -0400
+++ linux-3.10.0-327.sdl7.x86_64/drivers/xen/events.c    2015-11-22 00:04:18.032003696 -0500
@@ -1446,8 +1446,6 @@ void xen_evtchn_do_upcall(struct pt_regs
 #ifdef CONFIG_X86
     exit_idle();
 #endif
-    rh_inc_irq_stat(irq_hv_callback_count);
-
     __xen_evtchn_do_upcall();
     irq_exit();
SOURCES/upstream-32bit-fixes.patch
New file
@@ -0,0 +1,224 @@
From 5265f6ea5a6643c5b2aa13e8e4664962251b37ea Mon Sep 17 00:00:00 2001
From: Chad Dupuis <chad.dupuis@qlogic.com>
Date: Thu, 13 Mar 2014 14:16:40 -0400
Subject: [PATCH] qla2xxx: Fix build errors related to invalid print fields on
 some architectures.
Fixes some build warnings such as:
drivers/scsi/qla2xxx/qla_attr.c:162:6: warning: format '%lx' expects argument of
type 'long unsigned int', but argument 6 has type 'size_t'"
and
drivers/scsi/qla2xxx/qla_init.c:5198:7: warning: format '%lx' expects argument
of type 'long unsigned int', but argument 5 has type 'uint32_t' [-Wformat]
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
---
 drivers/scsi/qla2xxx/qla_attr.c |  6 +++---
 drivers/scsi/qla2xxx/qla_init.c | 12 ++++++------
 2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index da5ae11..1a976c0 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -159,7 +159,7 @@ qla2x00_sysfs_read_fw_dump_template(struct file *filp, struct kobject *kobj,
         return 0;
     ql_dbg(ql_dbg_user, vha, 0x70e2,
-        "chunk <- off=%llx count=%lx\n", off, count);
+        "chunk <- off=%llx count=%zx\n", off, count);
     return memory_read_from_buffer(buf, count, &off,
         ha->fw_dump_template, ha->fw_dump_template_len);
 }
@@ -200,11 +200,11 @@ qla2x00_sysfs_write_fw_dump_template(struct file *filp, struct kobject *kobj,
     if (off + count > ha->fw_dump_template_len) {
         count = ha->fw_dump_template_len - off;
         ql_dbg(ql_dbg_user, vha, 0x70d3,
-            "chunk -> truncating to %lx bytes.\n", count);
+            "chunk -> truncating to %zx bytes.\n", count);
     }
     ql_dbg(ql_dbg_user, vha, 0x70d4,
-        "chunk -> off=%llx count=%lx\n", off, count);
+        "chunk -> off=%llx count=%zx\n", off, count);
     memcpy(ha->fw_dump_template + off, buf, count);
     if (off + count == ha->fw_dump_template_len) {
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index c64ee86..462836c 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -5452,8 +5452,8 @@ qla24xx_load_risc_flash(scsi_qla_host_t *vha, uint32_t *srisc_addr,
         "-> template size %x bytes\n", dlen);
     if (dlen > risc_size * sizeof(*dcode)) {
         ql_log(ql_log_warn, vha, 0x0167,
-            "Failed fwdump template exceeds array by %lx bytes\n",
-            dlen - risc_size * sizeof(*dcode));
+            "Failed fwdump template exceeds array by %x bytes\n",
+            (uint32_t)(dlen - risc_size * sizeof(*dcode)));
         goto default_template;
     }
     ha->fw_dump_template_len = dlen;
@@ -5719,8 +5719,8 @@ qla24xx_load_risc_blob(scsi_qla_host_t *vha, uint32_t *srisc_addr)
     ha->fw_dump_template_len = 0;
     ql_dbg(ql_dbg_init, vha, 0x171,
-        "Loading fwdump template from %lx\n",
-        (void *)fwcode - (void *)blob->fw->data);
+        "Loading fwdump template from %x\n",
+        (uint32_t)((void *)fwcode - (void *)blob->fw->data));
     risc_size = be32_to_cpu(fwcode[2]);
     ql_dbg(ql_dbg_init, vha, 0x172,
         "-> array size %x dwords\n", risc_size);
@@ -5754,8 +5754,8 @@ qla24xx_load_risc_blob(scsi_qla_host_t *vha, uint32_t *srisc_addr)
         "-> template size %x bytes\n", dlen);
     if (dlen > risc_size * sizeof(*fwcode)) {
         ql_log(ql_log_warn, vha, 0x0177,
-            "Failed fwdump template exceeds array by %lx bytes\n",
-            dlen - risc_size * sizeof(*fwcode));
+            "Failed fwdump template exceeds array by %x bytes\n",
+            (uint32_t)(dlen - risc_size * sizeof(*fwcode)));
         goto default_template;
     }
     ha->fw_dump_template_len = dlen;
--
1.8.3.1
From b9469523631bd376a5f877d4e816f3a81c12b790 Mon Sep 17 00:00:00 2001
From: Paul Bolle <pebolle@tiscali.nl>
Date: Mon, 30 Jun 2014 16:32:29 +0200
Subject: [PATCH] x86: Remove unused variable "polling"
Compile tested. "polling" is unused since commit f80c5b39b80a
("sched/idle, x86: Switch from TS_POLLING to TIF_POLLING_NRFLAG").
Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Cc: Jiri Kosina <jkosina@suse.cz>
Link: http://lkml.kernel.org/r/1404138749.2978.6.camel@x41
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/apm_32.c | 1 -
 1 file changed, 1 deletion(-)
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
index 8fdcec6..66d3b1f 100644
--- a/arch/x86/kernel/apm_32.c
+++ b/arch/x86/kernel/apm_32.c
@@ -841,7 +841,6 @@ static int apm_do_idle(void)
     u32 eax;
     u8 ret = 0;
     int idled = 0;
-    int polling;
     int err = 0;
     if (!need_resched()) {
--
1.8.3.1
From 75c2e0e53d2fb5df66b8fe162d71930348ac0b96 Mon Sep 17 00:00:00 2001
From: John Stultz <john.stultz@linaro.org>
Date: Wed, 16 Jul 2014 21:03:56 +0000
Subject: [PATCH] ktime: Change ktime_set() to take 64bit seconds value
In order to support dates past 2038 on 32bit systems, ktime_set()
needs to handle 64bit second values.
[ tglx: Removed the BITS_PER_LONG check ]
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
 include/linux/ktime.h | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/include/linux/ktime.h b/include/linux/ktime.h
index e4e9a9f..6950c96 100644
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -71,13 +71,12 @@ typedef union ktime ktime_t;        /* Kill this */
  *
  * Return the ktime_t representation of the value
  */
-static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
+static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs)
 {
-#if (BITS_PER_LONG == 64)
     if (unlikely(secs >= KTIME_SEC_MAX))
         return (ktime_t){ .tv64 = KTIME_MAX };
-#endif
-    return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs };
+
+    return (ktime_t) { .tv64 = secs * NSEC_PER_SEC + (s64)nsecs };
 }
 /* Subtract two ktime_t variables. rem = lhs -rhs: */
--
1.8.3.1
From 80a667f7ab1beee42b31e263ba4681fdfe00a0b6 Mon Sep 17 00:00:00 2001
From: Florian Westphal <fw@strlen.de>
Date: Wed, 17 Jun 2015 23:58:28 +0200
Subject: [PATCH] netfilter: xtables: fix warnings on 32bit platforms
On 32bit archs gcc complains due to cast from void* to u64.
Add intermediate casts to long to silence these warnings.
include/linux/netfilter/x_tables.h:376:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
include/linux/netfilter/x_tables.h:384:15: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
include/linux/netfilter/x_tables.h:391:23: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
include/linux/netfilter/x_tables.h:400:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
Fixes: 71ae0dff02d756e ("netfilter: xtables: use percpu rule counters")
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
 include/linux/netfilter/x_tables.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
index d08f0ed..781b6fe 100644
--- a/include/linux/netfilter/x_tables.h
+++ b/include/linux/netfilter/x_tables.h
@@ -390,7 +390,7 @@ static inline u64 xt_percpu_counter_alloc(void)
         if (res == NULL)
             return (u64) -ENOMEM;
-        return (__force u64) res;
+        return (u64) (__force unsigned long) res;
     }
     return 0;
@@ -398,14 +398,14 @@ static inline u64 xt_percpu_counter_alloc(void)
 static inline void xt_percpu_counter_free(u64 pcnt)
 {
     if (nr_cpu_ids > 1)
-        free_percpu((void __percpu *) pcnt);
+        free_percpu((void __percpu *) (unsigned long) pcnt);
 }
 static inline struct xt_counters *
 xt_get_this_cpu_counter(struct xt_counters *cnt)
 {
     if (nr_cpu_ids > 1)
-        return this_cpu_ptr((void __percpu *) cnt->pcnt);
+        return this_cpu_ptr((void __percpu *) (unsigned long) cnt->pcnt);
     return cnt;
 }
@@ -414,7 +414,7 @@ static inline struct xt_counters *
 xt_get_per_cpu_counter(struct xt_counters *cnt, unsigned int cpu)
 {
     if (nr_cpu_ids > 1)
-        return per_cpu_ptr((void __percpu *) cnt->pcnt, cpu);
+        return per_cpu_ptr((void __percpu *) (unsigned long) cnt->pcnt, cpu);
     return cnt;
 }
--
1.8.3.1
SPECS/kernel.spec
@@ -5,7 +5,8 @@
%define dist .el7
# % define buildid .local
# % define buildid .centos.plus
%define dist .el7.centos.plus
# For a kernel released for public testing, released_kernel should be 1.
# For internal testing builds during development, it should be 0.
@@ -36,7 +37,8 @@
# kernel
%define with_default   %{?_without_default:   0} %{?!_without_default:   1}
# kernel-debug
%define with_debug     %{?_without_debug:     0} %{?!_without_debug:     1}
# %define with_debug     %{?_without_debug:     0} %{?!_without_debug:     1}
%define with_debug 0
# kernel-doc
%define with_doc       %{?_without_doc:       0} %{?!_without_doc:       1}
# kernel-headers
@@ -153,6 +155,9 @@
%ifarch i686
%define asmarch x86
%define hdrarch i386
%define all_arch_configs kernel-%{version}-i?86*.config
%define image_install_path boot
%define kernel_image arch/x86/boot/bzImage
%endif
%ifarch x86_64
@@ -208,7 +213,7 @@
# Which is a BadThing(tm).
# We only build kernel-headers on the following...
%define nobuildarches i686 s390 ppc
%define nobuildarches s390 ppc
%ifarch %nobuildarches
%define with_default 0
@@ -220,7 +225,7 @@
%endif
# Architectures we build tools/cpupower on
%define cpupowerarchs x86_64 ppc64 ppc64le
%define cpupowerarchs i686 x86_64 ppc64 ppc64le
#
# Three sets of minimum package version requirements in the form of Conflicts:
@@ -359,33 +364,83 @@
Source18: check-kabi
Source20: Module.kabi_x86_64
Source21: Module.kabi_ppc64
Source22: Module.kabi_ppc64le
Source23: Module.kabi_s390x
#Source21: Module.kabi_ppc64
#Source22: Module.kabi_ppc64le
#Source23: Module.kabi_s390x
Source25: kernel-abi-whitelists-%{distro_build}.tar.bz2
Source50: kernel-%{version}-x86_64.config
Source51: kernel-%{version}-x86_64-debug.config
#Source51: kernel-%{version}-x86_64-debug.config
Source60: kernel-%{version}-ppc64.config
Source61: kernel-%{version}-ppc64-debug.config
Source62: kernel-%{version}-ppc64le.config
Source63: kernel-%{version}-ppc64le-debug.config
#Source60: kernel-%{version}-ppc64.config
#Source61: kernel-%{version}-ppc64-debug.config
#Source62: kernel-%{version}-ppc64le.config
#Source63: kernel-%{version}-ppc64le-debug.config
Source70: kernel-%{version}-s390x.config
Source71: kernel-%{version}-s390x-debug.config
Source72: kernel-%{version}-s390x-kdump.config
#Source70: kernel-%{version}-s390x.config
#Source71: kernel-%{version}-s390x-debug.config
#Source72: kernel-%{version}-s390x-kdump.config
Source80: kernel-%{version}-i686.config
#Source81: kernel-%{version}-i686-debug.config
# Sources for kernel-tools
Source2000: cpupower.service
Source2001: cpupower.config
# empty final patch to facilitate testing of kernel patches
Patch999999: linux-kernel-test.patch
# centos patches
Patch1000: debrand-single-cpu.patch
Patch1001: debrand-rh_taint.patch
Patch1002: debrand-rh-i686-cpu.patch
# i686 mods
#Patch1003: ignorewarnings.patch
Patch1004: removejiffies.patch
Patch1005: cpufreq.patch
Patch1006: i386-audit-stop-scri-stack-frame.patch
Patch1007: addmissing.patch
Patch1008: undorhirqstat.patch
# Patch1009: otherfixes.patch
Patch1009: clear-32bit-Werror-warnings.patch
Patch1010: upstream-32bit-fixes.patch
Patch1011: morefixes.patch
# centosplus patches
Patch30010: centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch
# Patch30050: centos-linux-3.10-ipc-fix-compat-msgrcv-bug7099.patch
# Patch30051: centos-linux-3.10-fix-argument-list-too-long.patch
# Patch30052: centos-linux-3.10-missing-Unifying-device-bug7340.patch
# Patch30053: centos-linux-3.10-vxlan-fix-crash-when-interface-created-with-no-group-bug7454.patch
# Patch30054: centos-linux-3.10-numa-remove-bugON-bug7474.patch
# Patch30055: centos-linux-3.10-fix-wakingup-AMD-family-bug7645.patch
# Patch30056: centos-linux-3.10-fix-nfs4_sequence_corruptor-bug7604.patch
# Patch30057: centos-linux-3.10-tick-clear-broadcast-pending-bug7852.patch
# Patch30058: centos-linux-3.10-bnx2x_fix_link_for_KR-bug7942.patch
Patch30059: centos-linux-3.10-reiserfs-fix-redefine-error.patch
Patch30060: centos-linux-3.10-fix-em28xx-cards-bug8285.patch
# Patch30061: centos-linux-3.10-netfilter-nf_conntrack-fix-bug8341.patch
Patch30062: centos-linux-3.10-fix-ecryptfs-error-bug7369.patch
# Patch30063: centos-linux-3.10-fix-ioatdma-driver-bug8778.patch
# Patch30064: centos-linux-3.10-fix-xfrm-input-bug9646.patch
# Patch30065: centos-linux-3.10-3w-sas-fix-race-bug10073.patch
# Patch20066: centos-linux-3.10-fix-dm-thin-metadata-bug10191.patch
# Patch20067: centos-linux-3.10-namespaces-bug10320.patch
# Patch20068: centos-linux-3.10-mpt3sas-SML-bug10516.patch
# Patch20069: centos-linux-3.10-mpt3sas-fix-block-bug10516.patch
Patch20070: centos-linux-3.10-support-MacBookPro-bug10447.patch
# Patch20071: centos-linux-3.10-3w-xxxx-fix-race-bug10033.patch
# Patch20072: centos-linux-3.10-3w-9xxx-fix-race-1of2-bug10033.patch
# Patch20073: centos-linux-3.10-3w-9xxx-fix-race-2of2-bug10033.patch
# Patch20074: centos-linux-3.10-e1000-Tx-fix-1-bug10767.patch
# Patch20075: centos-linux-3.10-e1000-Tx-fix-2-bug10767.patch
# Patch20076: centos-linux-3.10-fix-truncation-bug-EFI-bug10729.patch
# Patch20077: centos-linux-3.10-md-fix-freeing-private-data-bug11184.patch
Patch20078: centos-linux-3.10-pci-fix-regression-mlx4-bug12277.patch
# Patch20079: centos-linux-3.10-x86smp-fix-max_logical_packages_values-bug12466.patch
Patch20080: centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch
# empty final patch to facilitate testing of kernel patches
Patch999999: linux-kernel-test.patch
BuildRoot: %{_tmppath}/kernel-%{KVRA}-root
@@ -693,10 +748,64 @@
# Drop some necessary files from the source dir into the buildroot
cp $RPM_SOURCE_DIR/kernel-%{version}-*.config .
ApplyOptionalPatch linux-kernel-test.patch
ApplyOptionalPatch debrand-single-cpu.patch
# CentOS Modification
ApplyOptionalPatch debrand-rh_taint.patch
ApplyOptionalPatch debrand-single-cpu.patch
ApplyOptionalPatch debrand-rh-i686-cpu.patch
# i686 mods
%ifarch %{ix86}
#ApplyOptionalPatch ignorewarnings.patch
ApplyOptionalPatch removejiffies.patch
ApplyOptionalPatch cpufreq.patch
ApplyOptionalPatch i386-audit-stop-scri-stack-frame.patch
ApplyOptionalPatch addmissing.patch
ApplyOptionalPatch morefixes.patch
#ApplyOptionalPatch undorhirqstat.patch
#ApplyOptionalPatch otherfixes.patch
ApplyOptionalPatch clear-32bit-Werror-warnings.patch
ApplyOptionalPatch upstream-32bit-fixes.patch
%endif
### plus mod
ApplyOptionalPatch centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch
#ApplyOptionalPatch centos-linux-3.10-ipc-fix-compat-msgrcv-bug7099.patch
#ApplyOptionalPatch centos-linux-3.10-fix-argument-list-too-long.patch
## ApplyOptionalPatch centos-linux-3.10-missing-Unifying-device-bug7340.patch
#ApplyOptionalPatch centos-linux-3.10-vxlan-fix-crash-when-interface-created-with-no-group-bug7454.patch
#ApplyOptionalPatch centos-linux-3.10-numa-remove-bugON-bug7474.patch
## ApplyOptionalPatch centos-linux-3.10-fix-wakingup-AMD-family-bug7645.patch
#ApplyOptionalPatch centos-linux-3.10-fix-nfs4_sequence_corruptor-bug7604.patch
#ApplyOptionalPatch centos-linux-3.10-tick-clear-broadcast-pending-bug7852.patch
#ApplyOptionalPatch centos-linux-3.10-bnx2x_fix_link_for_KR-bug7942.patch
ApplyOptionalPatch centos-linux-3.10-reiserfs-fix-redefine-error.patch
ApplyOptionalPatch centos-linux-3.10-fix-em28xx-cards-bug8285.patch
#ApplyOptionalPatch centos-linux-3.10-netfilter-nf_conntrack-fix-bug8341.patch
#ApplyOptionalPatch centos-linux-3.10-futex-Ensure-get_futex_key_refs-bug8803.patch
ApplyOptionalPatch centos-linux-3.10-fix-ecryptfs-error-bug7369.patch
#ApplyOptionalPatch centos-linux-3.10-fix-ioatdma-driver-bug8778.patch
## ApplyOptionalPatch centos-linux-3.10-fix-xfrm-input-bug9646.patch
#ApplyOptionalPatch centos-linux-3.10-3w-sas-fix-race-bug10073.patch
#ApplyOptionalPatch centos-linux-3.10-fix-dm-thin-metadata-bug10191.patch
#ApplyOptionalPatch centos-linux-3.10-namespaces-bug10320.patch
## ApplyOptionalPatch centos-linux-3.10-mpt3sas-SML-bug10516.patch
## ApplyOptionalPatch centos-linux-3.10-mpt3sas-fix-block-bug10516.patch
ApplyOptionalPatch centos-linux-3.10-support-MacBookPro-bug10447.patch
#ApplyOptionalPatch centos-linux-3.10-3w-xxxx-fix-race-bug10033.patch
#ApplyOptionalPatch centos-linux-3.10-3w-9xxx-fix-race-1of2-bug10033.patch
#ApplyOptionalPatch centos-linux-3.10-3w-9xxx-fix-race-2of2-bug10033.patch
#ApplyOptionalPatch centos-linux-3.10-e1000-Tx-fix-1-bug10767.patch
#ApplyOptionalPatch centos-linux-3.10-e1000-Tx-fix-2-bug10767.patch
## ApplyOptionalPatch centos-linux-3.10-fix-truncation-bug-EFI-bug10729.patch
## ApplyOptionalPatch centos-linux-3.10-md-fix-freeing-private-data-bug11184.patch
ApplyOptionalPatch  centos-linux-3.10-pci-fix-regression-mlx4-bug12277.patch
# ApplyOptionalPatch centos-linux-3.10-x86smp-fix-max_logical_packages_values-bug12466.patch
ApplyOptionalPatch centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch
### end of plus mod
# End of CentOS Modification
ApplyOptionalPatch linux-kernel-test.patch
# Any further pre-build tree manipulations happen here.
@@ -876,7 +985,6 @@
    # install gcov-needed files to $BUILDROOT/$BUILD/...:
    #   gcov_info->filename is absolute path
    #   gcno references to sources can use absolute paths (e.g. in out-of-tree builds)
    #   sysfs symlink targets (set up at compile time) use absolute paths to BUILD dir
    find . \( -name '*.gcno' -o -name '*.[chS]' \) -exec install -D '{}' "$RPM_BUILD_ROOT/$(pwd)/{}" \;
%endif
    fi
@@ -1083,7 +1191,7 @@
    make %{?_smp_mflags} centrino-decode powernow-k8-decode
    popd
%endif
%ifarch x86_64
%ifarch x86_64 i686
   pushd tools/power/x86/x86_energy_perf_policy/
   make
   popd
@@ -1550,8 +1658,31 @@
%kernel_variant_files %{with_kdump} kdump
%changelog
* Tue Jan 17 2017 CentOS Sources <bugs@centos.org> - 3.10.0-514.6.1.el7
* Tue Jan 17 2017 Akemi Yagi <toracat@centos.org> [3.10.0-514.6.1.el7.centos.plus]
- Apply debranding changes
- Roll in i686 mods
- Modify config file for x86_64 with extra features turned on including
  some network adapters, BusLogic, ReiserFS, TOMOYO
- Add in a patch that allows non-LogiTech remote to work [bug#5780]
- JFS enabled [bug#7350]
- NUMACHIP enabled [bug#7498]
- AIC7xxx enabled [bug#7552]
- Enabled via_velocity [bug#7877]
- Add in a patch that fixes em28xx-cards [bug#8285]
- Enabled ECRYPT_FS with a patch to fix build error [bug#7369]
- Enabled Keyboard GPIO [bug#9063]
- Enabled XEN_FBDEV_FRONTEND [bug#9463]
- Enabled LINE6_USB [bug#9569]
- Enabled I2C_MUX [bug#9592]
- Enabled spidev [bug#9955]
- Add in patches from bug 10191 [bug#10191]
- Add in a patch from bug 10320 [bug#10320]
- Add a patch [bug#10447]
- Enable ATM drivers [bug#10845]
- Add 9pfs config options [bug#10849]
- Add in a patch [bug#12277]
- Enable VFIO_PCI_VGA [bug#12435]
- Add in a patch [bug#12653]
* Sat Dec 10 2016 Frantisek Hrbata <fhrbata@hrbata.com> [3.10.0-514.6.1.el7]
- [net] sctp: validate chunk len before actually using it (Hangbin Liu) [1399458 1399459] {CVE-2016-9555}