diff --git a/SOURCES/addmissing.patch b/SOURCES/addmissing.patch
new file mode 100644
index 0000000..95ad87a
--- /dev/null
+++ b/SOURCES/addmissing.patch
@@ -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
diff --git a/SOURCES/centos-linux-3.10-0001-get-rid-of-propagate_umount-mistakenly-treating-slav.patch b/SOURCES/centos-linux-3.10-0001-get-rid-of-propagate_umount-mistakenly-treating-slav.patch
new file mode 100644
index 0000000..c8daef1
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0001-get-rid-of-propagate_umount-mistakenly-treating-slav.patch
@@ -0,0 +1,63 @@
+From ba4666388f1a69487e0a64e3626564d37feef2c0 Mon Sep 17 00:00:00 2001
+From: "T.kabe" <kabe@>
+Date: Fri, 3 Mar 2017 14:29:26 +0900
+Subject: [PATCH 1/4] get rid of propagate_umount() mistakenly treating slaves as busy.
+
+[upstream commit 88b368f27a094277143d8ecd5a056116f6a41520]
+Author: Al Viro <viro@zeniv.linux.org.uk>
+Date:   Mon Aug 18 15:09:26 2014 -0400
+
+    get rid of propagate_umount() mistakenly treating slaves as busy.
+
+    The check in __propagate_umount() ("has somebody explicitly mounted
+    something on that slave?") is done *before* taking the already doomed
+    victims out of the child lists.
+
+    Cc: stable@vger.kernel.org
+    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+---
+ fs/namespace.c | 4 +++-
+ fs/pnode.c     | 4 +++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/fs/namespace.c b/fs/namespace.c
+index 9440b6a..0053bfc 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -1195,6 +1195,9 @@ void umount_tree(struct mount *mnt, int propagate)
+ 	for (p = mnt; p; p = next_mnt(p, mnt))
+ 		list_move(&p->mnt_hash, &tmp_list);
+ 
++	list_for_each_entry(p, &tmp_list, mnt_hash)
++		list_del_init(&p->mnt_child);
++
+ 	if (propagate)
+ 		propagate_umount(&tmp_list);
+ 
+@@ -1203,7 +1206,6 @@ void umount_tree(struct mount *mnt, int propagate)
+ 		list_del_init(&p->mnt_list);
+ 		__touch_mnt_namespace(p->mnt_ns);
+ 		p->mnt_ns = NULL;
+-		list_del_init(&p->mnt_child);
+ 		if (mnt_has_parent(p)) {
+ 			p->mnt_parent->mnt_ghosts++;
+ 			put_mountpoint(p->mnt_mp);
+diff --git a/fs/pnode.c b/fs/pnode.c
+index 54bd043..983cf93 100644
+--- a/fs/pnode.c
++++ b/fs/pnode.c
+@@ -390,8 +390,10 @@ static void __propagate_umount(struct mount *mnt)
+ 		 * umount the child only if the child has no
+ 		 * other children
+ 		 */
+-		if (child && list_empty(&child->mnt_mounts))
++		if (child && list_empty(&child->mnt_mounts)) {
++			list_del_init(&child->mnt_child);
+ 			list_move_tail(&child->mnt_hash, &mnt->mnt_hash);
++		}
+ 	}
+ }
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0001-scsi-megaraid_sas-Add-new-pci-device-Ids-for-SAS3.5-.patch b/SOURCES/centos-linux-3.10-0001-scsi-megaraid_sas-Add-new-pci-device-Ids-for-SAS3.5-.patch
new file mode 100644
index 0000000..2a5bafe
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0001-scsi-megaraid_sas-Add-new-pci-device-Ids-for-SAS3.5-.patch
@@ -0,0 +1,200 @@
+From 748b88ff6deca4fda640b16ca021857b33aa5ca6 Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:43 -0500
+Subject: [PATCH 01/11] scsi: megaraid_sas: Add new pci device Ids for SAS3.5
+ Generic Megaraid Controllers
+
+This patch contains new pci device ids for SAS3.5 Generic Megaraid Controllers
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        | 12 +++++++++---
+ drivers/scsi/megaraid/megaraid_sas_base.c   | 14 +++++++++++++-
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 30 ++++++++++++++++++++++-------
+ 3 files changed, 45 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index ba52d14..e5ac6b1 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -56,6 +56,11 @@
+ #define PCI_DEVICE_ID_LSI_INTRUDER_24		0x00cf
+ #define PCI_DEVICE_ID_LSI_CUTLASS_52		0x0052
+ #define PCI_DEVICE_ID_LSI_CUTLASS_53		0x0053
++#define PCI_DEVICE_ID_LSI_VENTURA		    0x0014
++#define PCI_DEVICE_ID_LSI_HARPOON		    0x0016
++#define PCI_DEVICE_ID_LSI_TOMCAT		    0x0017
++#define PCI_DEVICE_ID_LSI_VENTURA_4PORT		0x001B
++#define PCI_DEVICE_ID_LSI_CRUSADER_4PORT	0x001C
+ 
+ /*
+  * Intel HBA SSDIDs
+@@ -100,7 +105,7 @@
+  */
+ 
+ /*
+- * MFI stands for  MegaRAID SAS FW Interface. This is just a moniker for 
++ * MFI stands for  MegaRAID SAS FW Interface. This is just a moniker for
+  * protocol between the software and firmware. Commands are issued using
+  * "message frames"
+  */
+@@ -1435,7 +1440,7 @@ enum FW_BOOT_CONTEXT {
+ * register set for both 1068 and 1078 controllers
+ * structure extended for 1078 registers
+ */
+- 
++
+ struct megasas_register_set {
+ 	u32	doorbell;                       /*0000h*/
+ 	u32	fusion_seq_offset;		/*0004h*/
+@@ -1478,7 +1483,7 @@ struct megasas_register_set {
+ 
+ 	u32 	inbound_high_queue_port ;	/*00C4h*/
+ 
+-	u32 	reserved_5;			/*00C8h*/
++	u32 inbound_single_queue_port;	/*00C8h*/
+ 	u32	res_6[11];			/*CCh*/
+ 	u32	host_diag;
+ 	u32	seq_offset;
+@@ -2143,6 +2148,7 @@ struct megasas_instance {
+ 	u8 is_rdpq;
+ 	bool dev_handle;
+ 	bool fw_sync_cache_support;
++	bool is_ventura;
+ };
+ struct MR_LD_VF_MAP {
+ 	u32 size;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index ac01648..a73e6f6 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -155,6 +155,12 @@ static struct pci_device_id megasas_pci_table[] = {
+ 	/* Intruder 24 port*/
+ 	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_CUTLASS_52)},
+ 	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_CUTLASS_53)},
++	/* VENTURA */
++	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_VENTURA)},
++	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_HARPOON)},
++	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_TOMCAT)},
++	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_VENTURA_4PORT)},
++	{PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_CRUSADER_4PORT)},
+ 	{}
+ };
+ 
+@@ -5765,6 +5771,12 @@ static int megasas_probe_one(struct pci_dev *pdev,
+ 	instance->pdev = pdev;
+ 
+ 	switch (instance->pdev->device) {
++	case PCI_DEVICE_ID_LSI_VENTURA:
++	case PCI_DEVICE_ID_LSI_HARPOON:
++	case PCI_DEVICE_ID_LSI_TOMCAT:
++	case PCI_DEVICE_ID_LSI_VENTURA_4PORT:
++	case PCI_DEVICE_ID_LSI_CRUSADER_4PORT:
++	     instance->is_ventura = true;
+ 	case PCI_DEVICE_ID_LSI_FUSION:
+ 	case PCI_DEVICE_ID_LSI_PLASMA:
+ 	case PCI_DEVICE_ID_LSI_INVADER:
+@@ -5789,7 +5801,7 @@ static int megasas_probe_one(struct pci_dev *pdev,
+ 		if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
+ 			(instance->pdev->device == PCI_DEVICE_ID_LSI_PLASMA))
+ 			fusion->adapter_type = THUNDERBOLT_SERIES;
+-		else
++		else if (!instance->is_ventura)
+ 			fusion->adapter_type = INVADER_SERIES;
+ 	}
+ 	break;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 7ecd0b4..5ad8a07 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -189,15 +189,29 @@ inline void megasas_return_cmd_fusion(struct megasas_instance *instance,
+  */
+ static void
+ megasas_fire_cmd_fusion(struct megasas_instance *instance,
+-		union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc)
++	union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc, bool is_32bit)
+ {
++	struct megasas_register_set __iomem *regs = instance->reg_set;
++	unsigned long flags;
++
++	if (is_32bit)
++		writel(le32_to_cpu(req_desc->u.low),
++			&(regs)->inbound_single_queue_port);
++	else if (instance->is_ventura) {
++		spin_lock_irqsave(&instance->hba_lock, flags);
++		writel(le32_to_cpu(req_desc->u.low),
++			&(regs)->inbound_low_queue_port);
++		writel(le32_to_cpu(req_desc->u.high),
++			&(regs)->inbound_high_queue_port);
++		mmiowb();
++		spin_unlock_irqrestore(&instance->hba_lock, flags);
++	} else {
+ #if defined(writeq) && defined(CONFIG_64BIT)
+ 	u64 req_data = (((u64)le32_to_cpu(req_desc->u.high) << 32) |
+ 			le32_to_cpu(req_desc->u.low));
+ 
+ 	writeq(req_data, &instance->reg_set->inbound_low_queue_port);
+ #else
+-	unsigned long flags;
+ 
+ 	spin_lock_irqsave(&instance->hba_lock, flags);
+ 	writel(le32_to_cpu(req_desc->u.low),
+@@ -207,6 +221,7 @@ megasas_fire_cmd_fusion(struct megasas_instance *instance,
+ 	mmiowb();
+ 	spin_unlock_irqrestore(&instance->hba_lock, flags);
+ #endif
++	}
+ }
+ 
+ /**
+@@ -850,7 +865,7 @@ megasas_ioc_init_fusion(struct megasas_instance *instance)
+ 			break;
+ 	}
+ 
+-	megasas_fire_cmd_fusion(instance, &req_desc);
++	megasas_fire_cmd_fusion(instance, &req_desc, false);
+ 
+ 	wait_and_poll(instance, cmd, MFI_POLL_TIMEOUT_SECS);
+ 
+@@ -2224,7 +2239,7 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 	 */
+ 	atomic_inc(&instance->fw_outstanding);
+ 
+-	megasas_fire_cmd_fusion(instance, req_desc);
++	megasas_fire_cmd_fusion(instance, req_desc, instance->is_ventura);
+ 
+ 	return 0;
+ }
+@@ -2592,7 +2607,7 @@ megasas_issue_dcmd_fusion(struct megasas_instance *instance,
+ 		return DCMD_NOT_FIRED;
+ 	}
+ 
+-	megasas_fire_cmd_fusion(instance, req_desc);
++	megasas_fire_cmd_fusion(instance, req_desc, instance->is_ventura);
+ 	return DCMD_SUCCESS;
+ }
+ 
+@@ -2884,7 +2899,8 @@ void megasas_refire_mgmt_cmd(struct megasas_instance *instance)
+ 				cpu_to_le32(MR_DCMD_SYSTEM_PD_MAP_GET_INFO)))
+ 				&& !(cmd_mfi->flags & DRV_DCMD_SKIP_REFIRE);
+ 		if (refire_cmd)
+-			megasas_fire_cmd_fusion(instance, req_desc);
++			megasas_fire_cmd_fusion(instance, req_desc,
++							instance->is_ventura);
+ 		else
+ 			megasas_return_cmd(instance, cmd_mfi);
+ 	}
+@@ -3063,7 +3079,7 @@ megasas_issue_tm(struct megasas_instance *instance, u16 device_handle,
+ 		mr_request->tmReqFlags.isTMForLD = 1;
+ 
+ 	init_completion(&cmd_fusion->done);
+-	megasas_fire_cmd_fusion(instance, req_desc);
++	megasas_fire_cmd_fusion(instance, req_desc, instance->is_ventura);
+ 
+ 	timeleft = wait_for_completion_timeout(&cmd_fusion->done, 50 * HZ);
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0001-scsi-mpt3sas-Fix-for-improper-info-displayed-in-var-.patch b/SOURCES/centos-linux-3.10-0001-scsi-mpt3sas-Fix-for-improper-info-displayed-in-var-.patch
new file mode 100644
index 0000000..089f8f8
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0001-scsi-mpt3sas-Fix-for-improper-info-displayed-in-var-.patch
@@ -0,0 +1,59 @@
+From 5c528134dc5242845930c8eb33abd97bb0ef5bc2 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:32 +0530
+Subject: [PATCH 01/11] scsi: mpt3sas: Fix for improper info displayed in var
+ log, while blocking or unblocking the device.
+
+Return value and Device_handle Arguments passed in correct order
+ to match with its format string.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index 1911152..9c61476 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -2888,7 +2888,7 @@ _scsih_internal_device_block(struct scsi_device *sdev,
+ 	if (r == -EINVAL)
+ 		sdev_printk(KERN_WARNING, sdev,
+ 		    "device_block failed with return(%d) for handle(0x%04x)\n",
+-		    sas_device_priv_data->sas_target->handle, r);
++		    r, sas_device_priv_data->sas_target->handle);
+ }
+ 
+ /**
+@@ -2918,20 +2918,20 @@ _scsih_internal_device_unblock(struct scsi_device *sdev,
+ 		sdev_printk(KERN_WARNING, sdev,
+ 		    "device_unblock failed with return(%d) for handle(0x%04x) "
+ 		    "performing a block followed by an unblock\n",
+-		    sas_device_priv_data->sas_target->handle, r);
++		    r, sas_device_priv_data->sas_target->handle);
+ 		sas_device_priv_data->block = 1;
+ 		r = scsi_internal_device_block(sdev);
+ 		if (r)
+ 			sdev_printk(KERN_WARNING, sdev, "retried device_block "
+ 			    "failed with return(%d) for handle(0x%04x)\n",
+-			    sas_device_priv_data->sas_target->handle, r);
++			    r, sas_device_priv_data->sas_target->handle);
+ 
+ 		sas_device_priv_data->block = 0;
+ 		r = scsi_internal_device_unblock(sdev, SDEV_RUNNING);
+ 		if (r)
+ 			sdev_printk(KERN_WARNING, sdev, "retried device_unblock"
+ 			    " failed with return(%d) for handle(0x%04x)\n",
+-			    sas_device_priv_data->sas_target->handle, r);
++			    r, sas_device_priv_data->sas_target->handle);
+ 	}
+ }
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0002-scsi-megaraid_sas-128-MSIX-Support.patch b/SOURCES/centos-linux-3.10-0002-scsi-megaraid_sas-128-MSIX-Support.patch
new file mode 100644
index 0000000..8fdd89c
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0002-scsi-megaraid_sas-128-MSIX-Support.patch
@@ -0,0 +1,103 @@
+From 13ac44ddfb8f0cfc407bb91713384e9961f6e762 Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:44 -0500
+Subject: [PATCH 02/11] scsi: megaraid_sas: 128 MSIX Support
+
+SAS3.5 Generic Megaraid based Controllers will have the support for 128 MSI-X vectors,
+resulting in the need to support 128 reply queues
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        |  1 +
+ drivers/scsi/megaraid/megaraid_sas_base.c   | 24 +++++++++++++++++-------
+ drivers/scsi/megaraid/megaraid_sas_fusion.c |  4 ++--
+ 3 files changed, 20 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index e5ac6b1..ccef47b 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -2149,6 +2149,7 @@ struct megasas_instance {
+ 	bool dev_handle;
+ 	bool fw_sync_cache_support;
+ 	bool is_ventura;
++	bool msix_combined;
+ };
+ struct MR_LD_VF_MAP {
+ 	u32 size;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index a73e6f6..c78d7ee 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -5119,13 +5119,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 			goto fail_ready_state;
+ 	}
+ 
+-	/*
+-	 * MSI-X host index 0 is common for all adapter.
+-	 * It is used for all MPT based Adapters.
+-	 */
+-	instance->reply_post_host_index_addr[0] =
+-		(u32 __iomem *)((u8 __iomem *)instance->reg_set +
+-		MPI2_REPLY_POST_HOST_INDEX_OFFSET);
++
+ 
+ 	/* Check if MSI-X is supported while in ready state */
+ 	msix_enable = (instance->instancet->read_fw_status_reg(reg_set) &
+@@ -5143,6 +5137,9 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 				instance->msix_vectors = ((scratch_pad_2
+ 					& MR_MAX_REPLY_QUEUES_EXT_OFFSET)
+ 					>> MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT) + 1;
++				if (instance->msix_vectors > 16)
++					instance->msix_combined = true;
++
+ 				if (rdpq_enable)
+ 					instance->is_rdpq = (scratch_pad_2 & MR_RDPQ_MODE_OFFSET) ?
+ 								1 : 0;
+@@ -5176,6 +5173,19 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 		else
+ 			instance->msix_vectors = 0;
+ 	}
++	/*
++	 * MSI-X host index 0 is common for all adapter.
++	 * It is used for all MPT based Adapters.
++	 */
++	if (instance->msix_combined) {
++		instance->reply_post_host_index_addr[0] =
++				(u32 *)((u8 *)instance->reg_set +
++				MPI2_SUP_REPLY_POST_HOST_INDEX_OFFSET);
++	} else {
++		instance->reply_post_host_index_addr[0] =
++			(u32 *)((u8 *)instance->reg_set +
++			MPI2_REPLY_POST_HOST_INDEX_OFFSET);
++	}
+ 
+ 	dev_info(&instance->pdev->dev,
+ 		"firmware supports msix\t: (%d)", fw_msix_count);
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 5ad8a07..c64b85a 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -2391,7 +2391,7 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 		 * pending to be completed
+ 		 */
+ 		if (threshold_reply_count >= THRESHOLD_REPLY_COUNT) {
+-			if (fusion->adapter_type == INVADER_SERIES)
++			if (instance->msix_combined)
+ 				writel(((MSIxIndex & 0x7) << 24) |
+ 					fusion->last_reply_idx[MSIxIndex],
+ 					instance->reply_post_host_index_addr[MSIxIndex/8]);
+@@ -2407,7 +2407,7 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 		return IRQ_NONE;
+ 
+ 	wmb();
+-	if (fusion->adapter_type == INVADER_SERIES)
++	if (instance->msix_combined)
+ 		writel(((MSIxIndex & 0x7) << 24) |
+ 			fusion->last_reply_idx[MSIxIndex],
+ 			instance->reply_post_host_index_addr[MSIxIndex/8]);
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0002-scsi-mpt3sas-Fix-for-incorrect-numbers-for-MSIX-vect.patch b/SOURCES/centos-linux-3.10-0002-scsi-mpt3sas-Fix-for-incorrect-numbers-for-MSIX-vect.patch
new file mode 100644
index 0000000..f008615
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0002-scsi-mpt3sas-Fix-for-incorrect-numbers-for-MSIX-vect.patch
@@ -0,0 +1,68 @@
+From 79caef2412a36c3ed223be7e35395b41e99c6c4c Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:33 +0530
+Subject: [PATCH 02/11] scsi: mpt3sas: Fix for incorrect numbers for MSIX
+ vectors enabled when non RDPQ card is enumerated first.
+
+No. of MSIX vectors supported = min (Total no. of CPU cores,
+MSIX vectors supported by card)
+
+when RDPQ is disabled "max_msix_vectors" module parameter which was
+declared as global was set to '8' and hence if there are more than one card
+in system among which if RDPQ disabled card is enumerated first then only 8
+MSIX vectors was getting enabled for all the cards(including RDPQ enabled
+card,which can support more than 8 MSIX vectors).
+
+Used local variable instead of global variable ,if RDPQ is disabled this
+local variable is set to '8' else it is set to "max_msix_vectors" (by
+default this is set to -1, whose value can be set by user during driver
+load time).So now regardless of whether RDPQ disabled card is enumerated
+first or RDPQ enabled card is enumerated first , MSIX vectors enabled
+depends on the cards capability.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
+index c77c31c..2319db8 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
+@@ -1960,7 +1960,7 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)
+ {
+ 	struct msix_entry *entries, *a;
+ 	int r;
+-	int i;
++	int i, local_max_msix_vectors;
+ 	u8 try_msix = 0;
+ 
+ 	if (msix_disable == -1 || msix_disable == 0)
+@@ -1980,13 +1980,15 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)
+ 	  ioc->cpu_count, max_msix_vectors);
+ 
+ 	if (!ioc->rdpq_array_enable && max_msix_vectors == -1)
+-		max_msix_vectors = 8;
++		local_max_msix_vectors = 8;
++	else
++		local_max_msix_vectors = max_msix_vectors;
+ 
+-	if (max_msix_vectors > 0) {
+-		ioc->reply_queue_count = min_t(int, max_msix_vectors,
++	if (local_max_msix_vectors > 0) {
++		ioc->reply_queue_count = min_t(int, local_max_msix_vectors,
+ 			ioc->reply_queue_count);
+ 		ioc->msix_vector_count = ioc->reply_queue_count;
+-	} else if (max_msix_vectors == 0)
++	} else if (local_max_msix_vectors == 0)
+ 		goto try_ioapic;
+ 
+ 	if (ioc->msix_vector_count < ioc->cpu_count)
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0002-vfs-Keep-a-list-of-mounts-on-a-mount-point.patch b/SOURCES/centos-linux-3.10-0002-vfs-Keep-a-list-of-mounts-on-a-mount-point.patch
new file mode 100644
index 0000000..02e6381
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0002-vfs-Keep-a-list-of-mounts-on-a-mount-point.patch
@@ -0,0 +1,99 @@
+From 9cc2c0f41c403a05989bc3ca2af650247d452f65 Mon Sep 17 00:00:00 2001
+From: "T.kabe" <kabe@>
+Date: Mon, 6 Mar 2017 15:18:55 +0900
+Subject: [PATCH 2/4] vfs: Keep a list of mounts on a mount point
+
+[upstream commit 0a5eb7c8189922e86a840972cd0b57e41de6f031]
+Author: Eric W. Biederman <ebiederman@twitter.com>
+Date:   Sun Sep 22 19:37:01 2013 -0700
+
+    vfs: Keep a list of mounts on a mount point
+
+    To spot any possible problems call BUG if a mountpoint
+    is put when it's list of mounts is not empty.
+
+    AV: use hlist instead of list_head
+
+    Reviewed-by: Miklos Szeredi <miklos@szeredi.hu>
+    Signed-off-by: Eric W. Biederman <ebiederman@twitter.com>
+    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+---
+ fs/mount.h     | 2 ++
+ fs/namespace.c | 6 ++++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/fs/mount.h b/fs/mount.h
+index b870800..92fecbe 100644
+--- a/fs/mount.h
++++ b/fs/mount.h
+@@ -21,6 +21,7 @@ struct mnt_pcp {
+ struct mountpoint {
+ 	struct list_head m_hash;
+ 	struct dentry *m_dentry;
++	struct hlist_head m_list;
+ 	int m_count;
+ };
+ 
+@@ -47,6 +48,7 @@ struct mount {
+ 	struct mount *mnt_master;	/* slave is on master->mnt_slave_list */
+ 	struct mnt_namespace *mnt_ns;	/* containing namespace */
+ 	struct mountpoint *mnt_mp;	/* where is it mounted */
++	struct hlist_node mnt_mp_list;	/* list mounts with the same mountpoint */
+ #ifdef CONFIG_FSNOTIFY
+ 	struct hlist_head mnt_fsnotify_marks;
+ 	__u32 mnt_fsnotify_mask;
+diff --git a/fs/namespace.c b/fs/namespace.c
+index 0053bfc..c238481 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -197,6 +197,7 @@ static struct mount *alloc_vfsmnt(const char *name)
+ 		INIT_LIST_HEAD(&mnt->mnt_share);
+ 		INIT_LIST_HEAD(&mnt->mnt_slave_list);
+ 		INIT_LIST_HEAD(&mnt->mnt_slave);
++		INIT_HLIST_NODE(&mnt->mnt_mp_list);
+ #ifdef CONFIG_FSNOTIFY
+ 		INIT_HLIST_HEAD(&mnt->mnt_fsnotify_marks);
+ #endif
+@@ -636,6 +637,7 @@ static struct mountpoint *new_mountpoint(struct dentry *dentry)
+ 	mp->m_dentry = dentry;
+ 	mp->m_count = 1;
+ 	list_add(&mp->m_hash, chain);
++	INIT_HLIST_HEAD(&mp->m_list);
+ 	return mp;
+ }
+ 
+@@ -643,6 +645,7 @@ static void put_mountpoint(struct mountpoint *mp)
+ {
+ 	if (!--mp->m_count) {
+ 		struct dentry *dentry = mp->m_dentry;
++		BUG_ON(!hlist_empty(&mp->m_list));
+ 		spin_lock(&dentry->d_lock);
+ 		dentry->d_flags &= ~DCACHE_MOUNTED;
+ 		spin_unlock(&dentry->d_lock);
+@@ -689,6 +692,7 @@ static void detach_mnt(struct mount *mnt, struct path *old_path)
+ 	mnt->mnt_mountpoint = mnt->mnt.mnt_root;
+ 	list_del_init(&mnt->mnt_child);
+ 	list_del_init(&mnt->mnt_hash);
++	hlist_del_init(&mnt->mnt_mp_list);
+ 	put_mountpoint(mnt->mnt_mp);
+ 	mnt->mnt_mp = NULL;
+ }
+@@ -705,6 +709,7 @@ void mnt_set_mountpoint(struct mount *mnt,
+ 	child_mnt->mnt_mountpoint = dget(mp->m_dentry);
+ 	child_mnt->mnt_parent = mnt;
+ 	child_mnt->mnt_mp = mp;
++	hlist_add_head(&child_mnt->mnt_mp_list, &mp->m_list);
+ }
+ 
+ /*
+@@ -1207,6 +1212,7 @@ void umount_tree(struct mount *mnt, int propagate)
+ 		__touch_mnt_namespace(p->mnt_ns);
+ 		p->mnt_ns = NULL;
+ 		if (mnt_has_parent(p)) {
++			hlist_del_init(&p->mnt_mp_list);
+ 			p->mnt_parent->mnt_ghosts++;
+ 			put_mountpoint(p->mnt_mp);
+ 			p->mnt_mp = NULL;
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0003-scsi-megaraid_sas-EEDP-Escape-Mode-Support-for-SAS3..patch b/SOURCES/centos-linux-3.10-0003-scsi-megaraid_sas-EEDP-Escape-Mode-Support-for-SAS3..patch
new file mode 100644
index 0000000..b1e5687
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0003-scsi-megaraid_sas-EEDP-Escape-Mode-Support-for-SAS3..patch
@@ -0,0 +1,51 @@
+From b004a9938ed1a8bb2007d0442512c6802c3a6bd1 Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:45 -0500
+Subject: [PATCH 03/11] scsi: megaraid_sas: EEDP Escape Mode Support for SAS3.5
+ Generic Megaraid Controllers
+
+An UNMAP command on a PI formatted device will leave the Logical Block Application
+Tag and Logical Block Reference Tag as all F's (for those LBAs that are unmapped).
+To avoid IO errors if those LBAs are subsequently read before they are written with
+valid tag fields, the MPI SCSI IO requests need to set the EEDPFlags element EEDP
+Escape Mode field, Bits [7:6] appropriately.  A value of 2 should be set to disable
+all PI checks if the Logical Block Application Tag is 0xFFFF for PI types 1 and 2.
+A value of 3 should be set to disable all PI checks if the Logical Block Application
+Tag is 0xFFFF and the Logical Block Reference Tag is 0xFFFFFFFF for PI type 3.
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 +
+ drivers/scsi/megaraid/megaraid_sas_fusion.h | 2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index c64b85a..27c6a1f 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -1589,6 +1589,7 @@ megasas_set_pd_lba(struct MPI2_RAID_SCSI_IO_REQUEST *io_request, u8 cdb_len,
+ 				MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG |
+ 				MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP |
+ 				MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG |
++				MPI25_SCSIIO_EEDPFLAGS_DO_NOT_DISABLE_MODE |
+ 				MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD);
+ 		} else {
+ 			io_request->EEDPFlags = cpu_to_le16(
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index 80eaee2..3cd3d0a 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -175,6 +175,8 @@ enum REGION_TYPE {
+ #define MPI2_SCSIIO_EEDPFLAGS_CHECK_APPTAG          (0x0200)
+ #define MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD           (0x0100)
+ #define MPI2_SCSIIO_EEDPFLAGS_INSERT_OP             (0x0004)
++/* EEDP escape mode */
++#define MPI25_SCSIIO_EEDPFLAGS_DO_NOT_DISABLE_MODE  (0x0040)
+ #define MPI2_FUNCTION_SCSI_IO_REQUEST               (0x00) /* SCSI IO */
+ #define MPI2_FUNCTION_SCSI_TASK_MGMT                (0x01)
+ #define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY       (0x03)
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0003-scsi-mpt3sas-Implement-device_remove_in_progress-che.patch b/SOURCES/centos-linux-3.10-0003-scsi-mpt3sas-Implement-device_remove_in_progress-che.patch
new file mode 100644
index 0000000..cc90027
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0003-scsi-mpt3sas-Implement-device_remove_in_progress-che.patch
@@ -0,0 +1,271 @@
+From a372b29ab979095c323d33ab922062015d459ddd Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:34 +0530
+Subject: [PATCH 03/11] scsi: mpt3sas: Implement device_remove_in_progress
+ check in IOCTL path
+
+When device missing event arrives, device_remove_in_progress bit will be
+set and hence driver has to stop sending IOCTL commands.Now the check has
+been added in IOCTL path to test device_remove_in_progress bit is set, if
+so then IOCTL will be failed printing failure message.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.c  | 19 +++++++++++++++
+ drivers/scsi/mpt3sas/mpt3sas_base.h  |  5 ++++
+ drivers/scsi/mpt3sas/mpt3sas_ctl.c   | 46 ++++++++++++++++++++++++++++++------
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c | 24 ++++++++++++++++++-
+ 4 files changed, 86 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
+index 2319db8..ac87e12 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
+@@ -5368,6 +5368,21 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
+ 		goto out_free_resources;
+ 	}
+ 
++	/* allocate memory for pending OS device add list */
++	ioc->pend_os_device_add_sz = (ioc->facts.MaxDevHandle / 8);
++	if (ioc->facts.MaxDevHandle % 8)
++		ioc->pend_os_device_add_sz++;
++	ioc->pend_os_device_add = kzalloc(ioc->pend_os_device_add_sz,
++	    GFP_KERNEL);
++	if (!ioc->pend_os_device_add)
++		goto out_free_resources;
++
++	ioc->device_remove_in_progress_sz = ioc->pend_os_device_add_sz;
++	ioc->device_remove_in_progress =
++		kzalloc(ioc->device_remove_in_progress_sz, GFP_KERNEL);
++	if (!ioc->device_remove_in_progress)
++		goto out_free_resources;
++
+ 	ioc->fwfault_debug = mpt3sas_fwfault_debug;
+ 
+ 	/* base internal command bits */
+@@ -5450,6 +5465,8 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
+ 		kfree(ioc->reply_post_host_index);
+ 	kfree(ioc->pd_handles);
+ 	kfree(ioc->blocking_handles);
++	kfree(ioc->device_remove_in_progress);
++	kfree(ioc->pend_os_device_add);
+ 	kfree(ioc->tm_cmds.reply);
+ 	kfree(ioc->transport_cmds.reply);
+ 	kfree(ioc->scsih_cmds.reply);
+@@ -5491,6 +5508,8 @@ mpt3sas_base_detach(struct MPT3SAS_ADAPTER *ioc)
+ 		kfree(ioc->reply_post_host_index);
+ 	kfree(ioc->pd_handles);
+ 	kfree(ioc->blocking_handles);
++	kfree(ioc->device_remove_in_progress);
++	kfree(ioc->pend_os_device_add);
+ 	kfree(ioc->pfacts);
+ 	kfree(ioc->ctl_cmds.reply);
+ 	kfree(ioc->ctl_cmds.sense);
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index 1a614d7..241a660 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -1093,6 +1093,9 @@ struct MPT3SAS_ADAPTER {
+ 	void		*pd_handles;
+ 	u16		pd_handles_sz;
+ 
++	void		*pend_os_device_add;
++	u16		pend_os_device_add_sz;
++
+ 	/* config page */
+ 	u16		config_page_sz;
+ 	void		*config_page;
+@@ -1201,6 +1204,8 @@ struct MPT3SAS_ADAPTER {
+ 	struct SL_WH_EVENT_TRIGGERS_T diag_trigger_event;
+ 	struct SL_WH_SCSI_TRIGGERS_T diag_trigger_scsi;
+ 	struct SL_WH_MPI_TRIGGERS_T diag_trigger_mpi;
++	void		*device_remove_in_progress;
++	u16		device_remove_in_progress_sz;
+ };
+ 
+ typedef u8 (*MPT_CALLBACK)(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+index 7d00f09..a75f8a3 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+@@ -655,6 +655,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 	size_t data_in_sz = 0;
+ 	long ret;
+ 	u16 wait_state_count;
++	u16 device_handle = MPT3SAS_INVALID_DEVICE_HANDLE;
+ 
+ 	issue_reset = 0;
+ 
+@@ -739,10 +740,13 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 	data_in_sz = karg.data_in_size;
+ 
+ 	if (mpi_request->Function == MPI2_FUNCTION_SCSI_IO_REQUEST ||
+-	    mpi_request->Function == MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH) {
+-		if (!le16_to_cpu(mpi_request->FunctionDependent1) ||
+-		    le16_to_cpu(mpi_request->FunctionDependent1) >
+-		    ioc->facts.MaxDevHandle) {
++	    mpi_request->Function == MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH ||
++	    mpi_request->Function == MPI2_FUNCTION_SCSI_TASK_MGMT ||
++	    mpi_request->Function == MPI2_FUNCTION_SATA_PASSTHROUGH) {
++
++		device_handle = le16_to_cpu(mpi_request->FunctionDependent1);
++		if (!device_handle || (device_handle >
++		    ioc->facts.MaxDevHandle)) {
+ 			ret = -EINVAL;
+ 			mpt3sas_base_free_smid(ioc, smid);
+ 			goto out;
+@@ -798,12 +802,18 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 		scsiio_request->SenseBufferLowAddress =
+ 		    mpt3sas_base_get_sense_buffer_dma(ioc, smid);
+ 		memset(ioc->ctl_cmds.sense, 0, SCSI_SENSE_BUFFERSIZE);
++		if (test_bit(device_handle, ioc->device_remove_in_progress)) {
++			dtmprintk(ioc, pr_info(MPT3SAS_FMT
++				"handle(0x%04x) :ioctl failed due to device removal in progress\n",
++				ioc->name, device_handle));
++			mpt3sas_base_free_smid(ioc, smid);
++			ret = -EINVAL;
++			goto out;
++		}
+ 		ioc->build_sg(ioc, psge, data_out_dma, data_out_sz,
+ 		    data_in_dma, data_in_sz);
+-
+ 		if (mpi_request->Function == MPI2_FUNCTION_SCSI_IO_REQUEST)
+-			mpt3sas_base_put_smid_scsi_io(ioc, smid,
+-			    le16_to_cpu(mpi_request->FunctionDependent1));
++			mpt3sas_base_put_smid_scsi_io(ioc, smid, device_handle);
+ 		else
+ 			mpt3sas_base_put_smid_default(ioc, smid);
+ 		break;
+@@ -828,6 +838,14 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 			}
+ 		}
+ 
++		if (test_bit(device_handle, ioc->device_remove_in_progress)) {
++			dtmprintk(ioc, pr_info(MPT3SAS_FMT
++				"handle(0x%04x) :ioctl failed due to device removal in progress\n",
++				ioc->name, device_handle));
++			mpt3sas_base_free_smid(ioc, smid);
++			ret = -EINVAL;
++			goto out;
++		}
+ 		mpt3sas_scsih_set_tm_flag(ioc, le16_to_cpu(
+ 		    tm_request->DevHandle));
+ 		ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz,
+@@ -867,6 +885,20 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_SATA_PASSTHROUGH:
++	{
++		if (test_bit(device_handle, ioc->device_remove_in_progress)) {
++			dtmprintk(ioc, pr_info(MPT3SAS_FMT
++				"handle(0x%04x) :ioctl failed due to device removal in progress\n",
++				ioc->name, device_handle));
++			mpt3sas_base_free_smid(ioc, smid);
++			ret = -EINVAL;
++			goto out;
++		}
++		ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma,
++		    data_in_sz);
++		mpt3sas_base_put_smid_default(ioc, smid);
++		break;
++	}
+ 	case MPI2_FUNCTION_FW_DOWNLOAD:
+ 	case MPI2_FUNCTION_FW_UPLOAD:
+ 	{
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index 9c61476..c6aa172 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -785,6 +785,11 @@ _scsih_sas_device_add(struct MPT3SAS_ADAPTER *ioc,
+ 	list_add_tail(&sas_device->list, &ioc->sas_device_list);
+ 	spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
+ 
++	if (ioc->hide_drives) {
++		clear_bit(sas_device->handle, ioc->pend_os_device_add);
++		return;
++	}
++
+ 	if (!mpt3sas_transport_port_add(ioc, sas_device->handle,
+ 	     sas_device->sas_address_parent)) {
+ 		_scsih_sas_device_remove(ioc, sas_device);
+@@ -800,7 +805,8 @@ _scsih_sas_device_add(struct MPT3SAS_ADAPTER *ioc,
+ 			    sas_device->sas_address_parent);
+ 			_scsih_sas_device_remove(ioc, sas_device);
+ 		}
+-	}
++	} else
++		clear_bit(sas_device->handle, ioc->pend_os_device_add);
+ }
+ 
+ /**
+@@ -3189,6 +3195,8 @@ _scsih_tm_tr_send(struct MPT3SAS_ADAPTER *ioc, u16 handle)
+ 	if (test_bit(handle, ioc->pd_handles))
+ 		return;
+ 
++	clear_bit(handle, ioc->pend_os_device_add);
++
+ 	spin_lock_irqsave(&ioc->sas_device_lock, flags);
+ 	sas_device = __mpt3sas_get_sdev_by_handle(ioc, handle);
+ 	if (sas_device && sas_device->starget &&
+@@ -3243,6 +3251,7 @@ _scsih_tm_tr_send(struct MPT3SAS_ADAPTER *ioc, u16 handle)
+ 	mpi_request->Function = MPI2_FUNCTION_SCSI_TASK_MGMT;
+ 	mpi_request->DevHandle = cpu_to_le16(handle);
+ 	mpi_request->TaskType = MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET;
++	set_bit(handle, ioc->device_remove_in_progress);
+ 	mpt3sas_base_put_smid_hi_priority(ioc, smid, 0);
+ 	mpt3sas_trigger_master(ioc, MASTER_TRIGGER_DEVICE_REMOVAL);
+ 
+@@ -3377,6 +3386,11 @@ _scsih_sas_control_complete(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+ 		ioc->name, le16_to_cpu(mpi_reply->DevHandle), smid,
+ 		le16_to_cpu(mpi_reply->IOCStatus),
+ 		le32_to_cpu(mpi_reply->IOCLogInfo)));
++		if (le16_to_cpu(mpi_reply->IOCStatus) ==
++		     MPI2_IOCSTATUS_SUCCESS) {
++			clear_bit(le16_to_cpu(mpi_reply->DevHandle),
++			    ioc->device_remove_in_progress);
++		}
+ 	} else {
+ 		pr_err(MPT3SAS_FMT "mpi_reply not valid at %s:%d/%s()!\n",
+ 		    ioc->name, __FILE__, __LINE__, __func__);
+@@ -5506,6 +5520,7 @@ _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
+ 	device_info = le32_to_cpu(sas_device_pg0.DeviceInfo);
+ 	if (!(_scsih_is_end_device(device_info)))
+ 		return -1;
++	set_bit(handle, ioc->pend_os_device_add);
+ 	sas_address = le64_to_cpu(sas_device_pg0.SASAddress);
+ 
+ 	/* check if device is present */
+@@ -5524,6 +5539,7 @@ _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
+ 	sas_device = mpt3sas_get_sdev_by_addr(ioc,
+ 					sas_address);
+ 	if (sas_device) {
++		clear_bit(handle, ioc->pend_os_device_add);
+ 		sas_device_put(sas_device);
+ 		return -1;
+ 	}
+@@ -5846,6 +5862,9 @@ _scsih_sas_topology_change_event(struct MPT3SAS_ADAPTER *ioc,
+ 			_scsih_check_device(ioc, sas_address, handle,
+ 			    phy_number, link_rate);
+ 
++			if (!test_bit(handle, ioc->pend_os_device_add))
++				break;
++
+ 
+ 		case MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED:
+ 
+@@ -7766,6 +7785,9 @@ mpt3sas_scsih_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase)
+ 			complete(&ioc->tm_cmds.done);
+ 		}
+ 
++		memset(ioc->pend_os_device_add, 0, ioc->pend_os_device_add_sz);
++		memset(ioc->device_remove_in_progress, 0,
++		       ioc->device_remove_in_progress_sz);
+ 		_scsih_fw_event_cleanup_queue(ioc);
+ 		_scsih_flush_running_cmds(ioc);
+ 		break;
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0003-vfs-Add-a-function-to-lazily-unmount-all-mounts-from.patch b/SOURCES/centos-linux-3.10-0003-vfs-Add-a-function-to-lazily-unmount-all-mounts-from.patch
new file mode 100644
index 0000000..984e36d
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0003-vfs-Add-a-function-to-lazily-unmount-all-mounts-from.patch
@@ -0,0 +1,125 @@
+From 0c0bf47e3e77ebff691abe1a5e133e43515e5205 Mon Sep 17 00:00:00 2001
+From: "T.kabe" <kabe@>
+Date: Mon, 6 Mar 2017 15:21:16 +0900
+Subject: [PATCH 3/4] vfs: Add a function to lazily unmount all mounts from any dentry.
+
+[upstream commit 80b5dce8c59b0de1ed6e403b8298e02dcb4db64b]
+Author: Eric W. Biederman <ebiederman@twitter.com>
+Date:   Thu Oct 3 01:31:18 2013 -0700
+
+    vfs: Add a function to lazily unmount all mounts from any dentry.
+
+    The new function detach_mounts comes in two pieces.  The first piece
+    is a static inline test of d_mounpoint that returns immediately
+    without taking any locks if d_mounpoint is not set.  In the common
+    case when mountpoints are absent this allows the vfs to continue
+    running with it's same cacheline foot print.
+
+    The second piece of detach_mounts __detach_mounts actually does the
+    work and it assumes that a mountpoint is present so it is slow and
+    takes namespace_sem for write, and then locks the mount hash (aka
+    mount_lock) after a struct mountpoint has been found.
+
+    With those two locks held each entry on the list of mounts on a
+    mountpoint is selected and lazily unmounted until all of the mount
+    have been lazily unmounted.
+
+    v7: Wrote a proper change description and removed the changelog
+        documenting deleted wrong turns.
+
+    Signed-off-by: Eric W. Biederman <ebiederman@twitter.com>
+    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+---
+ fs/mount.h     |  9 +++++++++
+ fs/namespace.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 57 insertions(+)
+
+diff --git a/fs/mount.h b/fs/mount.h
+index 92fecbe..9959119 100644
+--- a/fs/mount.h
++++ b/fs/mount.h
+@@ -80,6 +80,15 @@ static inline int is_mounted(struct vfsmount *mnt)
+ 
+ extern struct mount *__lookup_mnt(struct vfsmount *, struct dentry *, int);
+ 
++extern void __detach_mounts(struct dentry *dentry);
++
++static inline void detach_mounts(struct dentry *dentry)
++{
++	if (!d_mountpoint(dentry))
++		return;
++	__detach_mounts(dentry);
++}
++
+ static inline void get_mnt_ns(struct mnt_namespace *ns)
+ {
+ 	atomic_inc(&ns->count);
+diff --git a/fs/namespace.c b/fs/namespace.c
+index c238481..e48fed3 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -608,6 +608,23 @@ struct vfsmount *lookup_mnt(struct path *path)
+ 	}
+ }
+ 
++static struct mountpoint *lookup_mountpoint(struct dentry *dentry)
++{
++	struct list_head *chain = mountpoint_hashtable + hash(NULL, dentry);
++	struct mountpoint *mp;
++
++	list_for_each_entry(mp, chain, m_hash) {
++		if (mp->m_dentry == dentry) {
++			/* might be worth a WARN_ON() */
++			if (d_unlinked(dentry))
++				return ERR_PTR(-ENOENT);
++			mp->m_count++;
++			return mp;
++		}
++	}
++	return NULL;
++}
++
+ static struct mountpoint *new_mountpoint(struct dentry *dentry)
+ {
+ 	struct list_head *chain = mountpoint_hashtable + hash(NULL, dentry);
+@@ -1312,6 +1329,37 @@ static int do_umount(struct mount *mnt, int flags)
+ 	return retval;
+ }
+ 
++/*
++ * __detach_mounts - lazily unmount all mounts on the specified dentry
++ *
++ * During unlink, rmdir, and d_drop it is possible to loose the path
++ * to an existing mountpoint, and wind up leaking the mount.
++ * detach_mounts allows lazily unmounting those mounts instead of
++ * leaking them.
++ *
++ * The caller may hold dentry->d_inode->i_mutex.
++ */
++void __detach_mounts(struct dentry *dentry)
++{
++	struct mountpoint *mp;
++	struct mount *mnt;
++
++	namespace_lock();
++	mp = lookup_mountpoint(dentry);
++	if (!mp)
++		goto out_unlock;
++
++	br_write_lock(&vfsmount_lock);
++	while (!hlist_empty(&mp->m_list)) {
++		mnt = hlist_entry(mp->m_list.first, struct mount, mnt_mp_list);
++		umount_tree(mnt, 2);
++	}
++	br_write_unlock(&vfsmount_lock);
++	put_mountpoint(mp);
++out_unlock:
++	namespace_unlock();
++}
++
+ /* 
+  * Is the caller allowed to modify his namespace?
+  */
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0004-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch b/SOURCES/centos-linux-3.10-0004-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
new file mode 100644
index 0000000..e02f6ce
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0004-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
@@ -0,0 +1,610 @@
+From a28d10b2a9bec8714f59e12fe7fb53bfe8c6ef17 Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:46 -0500
+Subject: [PATCH 04/11] scsi: megaraid_sas: SAS3.5 Generic Megaraid Controllers
+ Stream Detection and IO Coalescing
+
+Detect sequential Write IOs and pass the hint that it is part of sequential
+stream to help HBA Firmware do the Full Stripe Writes. For read IOs on
+certain RAID volumes like Read Ahead volumes,this will help driver to
+send it to Firmware even if the IOs can potentially be sent to
+hardware directly (called fast path) bypassing firmware.
+
+Design: 8 streams are maintained per RAID volume as per the combined
+firmware/driver design. When there is no stream detected the LRU stream
+is used for next potential stream and LRU/MRU map is updated to make this
+as MRU stream. Every time a stream is detected the MRU map
+is updated to make the current stream as MRU stream.
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        |   1 +
+ drivers/scsi/megaraid/megaraid_sas_base.c   |  43 +++++++-
+ drivers/scsi/megaraid/megaraid_sas_fp.c     |   2 +
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 165 +++++++++++++++++++++++-----
+ drivers/scsi/megaraid/megaraid_sas_fusion.h | 117 +++++++++++++++++++-
+ 5 files changed, 297 insertions(+), 31 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index ccef47b..f387b32 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -2070,6 +2070,7 @@ struct megasas_instance {
+ 	/* used to sync fire the cmd to fw */
+ 	spinlock_t hba_lock;
+ 	/* used to synch producer, consumer ptrs in dpc */
++	spinlock_t stream_lock;
+ 	spinlock_t completion_lock;
+ 	struct dma_pool *frame_dma_pool;
+ 	struct dma_pool *sense_dma_pool;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index c78d7ee..0722286 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -5048,7 +5048,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 	struct megasas_register_set __iomem *reg_set;
+ 	struct megasas_ctrl_info *ctrl_info = NULL;
+ 	unsigned long bar_list;
+-	int i, loop, fw_msix_count = 0;
++	int i, j, loop, fw_msix_count = 0;
+ 	struct IOV_111 *iovPtr;
+ 	struct fusion_context *fusion;
+ 
+@@ -5235,6 +5235,36 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 	}
+ 
+ 	memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
++
++	/* stream detection initialization */
++	if (instance->is_ventura) {
++		fusion->stream_detect_by_ld =
++		kzalloc(sizeof(struct LD_STREAM_DETECT *)
++		* MAX_LOGICAL_DRIVES_EXT,
++		GFP_KERNEL);
++		if (!fusion->stream_detect_by_ld) {
++			dev_err(&instance->pdev->dev,
++					"unable to allocate stream detection for pool of LDs\n");
++			goto fail_get_ld_pd_list;
++		}
++		for (i = 0; i < MAX_LOGICAL_DRIVES_EXT; ++i) {
++			fusion->stream_detect_by_ld[i] =
++				kmalloc(sizeof(struct LD_STREAM_DETECT),
++				GFP_KERNEL);
++			if (!fusion->stream_detect_by_ld[i]) {
++				dev_err(&instance->pdev->dev,
++					"unable to allocate stream detect by LD\n ");
++				for (j = 0; j < i; ++j)
++					kfree(fusion->stream_detect_by_ld[j]);
++				kfree(fusion->stream_detect_by_ld);
++				fusion->stream_detect_by_ld = NULL;
++				goto fail_get_ld_pd_list;
++			}
++			fusion->stream_detect_by_ld[i]->mru_bit_map
++				= MR_STREAM_BITMAP;
++		}
++	}
++
+ 	if (megasas_ld_list_query(instance,
+ 				  MR_LD_QUERY_TYPE_EXPOSED_TO_HOST))
+ 		megasas_get_ld_list(instance);
+@@ -5354,6 +5384,8 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 
+ 	return 0;
+ 
++fail_get_ld_pd_list:
++	instance->instancet->disable_intr(instance);
+ fail_get_pd_list:
+ 	instance->instancet->disable_intr(instance);
+ 	megasas_destroy_irqs(instance);
+@@ -5896,6 +5928,7 @@ static int megasas_probe_one(struct pci_dev *pdev,
+ 
+ 	spin_lock_init(&instance->mfi_pool_lock);
+ 	spin_lock_init(&instance->hba_lock);
++	spin_lock_init(&instance->stream_lock);
+ 	spin_lock_init(&instance->completion_lock);
+ 
+ 	mutex_init(&instance->reset_mutex);
+@@ -6363,6 +6396,14 @@ static void megasas_detach_one(struct pci_dev *pdev)
+ 	if (instance->msix_vectors)
+ 		pci_disable_msix(instance->pdev);
+ 
++	if (instance->is_ventura) {
++		for (i = 0; i < MAX_LOGICAL_DRIVES_EXT; ++i)
++			kfree(fusion->stream_detect_by_ld[i]);
++		kfree(fusion->stream_detect_by_ld);
++		fusion->stream_detect_by_ld = NULL;
++	}
++
++
+ 	if (instance->ctrl_context) {
+ 		megasas_release_fusion(instance);
+ 			pd_seq_map_sz = sizeof(struct MR_PD_CFG_SEQ_NUM_SYNC) +
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c b/drivers/scsi/megaraid/megaraid_sas_fp.c
+index e413113..fe5b074 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fp.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fp.c
+@@ -933,6 +933,8 @@ MR_BuildRaidContext(struct megasas_instance *instance,
+ 
+ 	ld = MR_TargetIdToLdGet(ldTgtId, map);
+ 	raid = MR_LdRaidGet(ld, map);
++	/*check read ahead bit*/
++	io_info->ra_capable = raid->capability.ra_capable;
+ 
+ 	/*
+ 	 * if rowDataSize @RAID map and spanRowDataSize @SPAN INFO are zero
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 27c6a1f..946f7c0 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -1704,6 +1704,90 @@ megasas_set_pd_lba(struct MPI2_RAID_SCSI_IO_REQUEST *io_request, u8 cdb_len,
+ }
+ 
+ /**
++ * megasas_stream_detect -	stream detection on read and and write IOs
++ * @instance:		Adapter soft state
++ * @cmd:		    Command to be prepared
++ * @io_info:		IO Request info
++ *
++ */
++
++/** stream detection on read and and write IOs */
++static void megasas_stream_detect(struct megasas_instance *instance,
++				struct megasas_cmd_fusion *cmd,
++				struct IO_REQUEST_INFO *io_info)
++{
++	struct fusion_context *fusion = instance->ctrl_context;
++	u32 device_id = io_info->ldTgtId;
++	struct LD_STREAM_DETECT *current_ld_sd
++		= fusion->stream_detect_by_ld[device_id];
++	u32 *track_stream = &current_ld_sd->mru_bit_map, stream_num;
++	u32 shifted_values, unshifted_values;
++	u32 index_value_mask, shifted_values_mask;
++	int i;
++	bool is_read_ahead = false;
++	struct STREAM_DETECT *current_sd;
++	/* find possible stream */
++	for (i = 0; i < MAX_STREAMS_TRACKED; ++i) {
++		stream_num =
++		(*track_stream >> (i * BITS_PER_INDEX_STREAM)) &
++			STREAM_MASK;
++		current_sd = &current_ld_sd->stream_track[stream_num];
++	/* if we found a stream, update the raid
++	 *  context and also update the mruBitMap
++	 */
++	/*	boundary condition */
++	if ((current_sd->next_seq_lba) &&
++		(io_info->ldStartBlock >= current_sd->next_seq_lba) &&
++		(io_info->ldStartBlock <= (current_sd->next_seq_lba+32)) &&
++		(current_sd->is_read == io_info->isRead)) {
++
++		if ((io_info->ldStartBlock != current_sd->next_seq_lba)
++			&& ((!io_info->isRead) || (!is_read_ahead)))
++			/*
++			 * Once the API availible we need to change this.
++			 * At this point we are not allowing any gap
++			 */
++			continue;
++
++		cmd->io_request->RaidContext.raid_context_g35.stream_detected = true;
++		current_sd->next_seq_lba =
++		io_info->ldStartBlock + io_info->numBlocks;
++		/*
++		 *	update the mruBitMap LRU
++		 */
++		shifted_values_mask =
++			(1 <<  i * BITS_PER_INDEX_STREAM) - 1;
++		shifted_values = ((*track_stream & shifted_values_mask)
++					<< BITS_PER_INDEX_STREAM);
++		index_value_mask =
++			STREAM_MASK << i * BITS_PER_INDEX_STREAM;
++		unshifted_values =
++			*track_stream & ~(shifted_values_mask |
++			index_value_mask);
++		*track_stream =
++			unshifted_values | shifted_values | stream_num;
++		return;
++
++		}
++
++	}
++	/*
++	 * if we did not find any stream, create a new one
++	 * from the least recently used
++	 */
++	stream_num =
++	(*track_stream >> ((MAX_STREAMS_TRACKED - 1) * BITS_PER_INDEX_STREAM)) &
++			STREAM_MASK;
++	current_sd = &current_ld_sd->stream_track[stream_num];
++	current_sd->is_read = io_info->isRead;
++	current_sd->next_seq_lba = io_info->ldStartBlock + io_info->numBlocks;
++	*track_stream =
++	(((*track_stream & ZERO_LAST_STREAM) << 4) | stream_num);
++	return;
++
++}
++
++/**
+  * megasas_build_ldio_fusion -	Prepares IOs to devices
+  * @instance:		Adapter soft state
+  * @scp:		SCSI command
+@@ -1725,15 +1809,17 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 	struct fusion_context *fusion;
+ 	struct MR_DRV_RAID_MAP_ALL *local_map_ptr;
+ 	u8 *raidLUN;
++	unsigned long spinlock_flags;
+ 
+ 	device_id = MEGASAS_DEV_INDEX(scp);
+ 
+ 	fusion = instance->ctrl_context;
+ 
+ 	io_request = cmd->io_request;
+-	io_request->RaidContext.VirtualDiskTgtId = cpu_to_le16(device_id);
+-	io_request->RaidContext.status = 0;
+-	io_request->RaidContext.exStatus = 0;
++	io_request->RaidContext.raid_context.VirtualDiskTgtId =
++		cpu_to_le16(device_id);
++	io_request->RaidContext.raid_context.status = 0;
++	io_request->RaidContext.raid_context.exStatus = 0;
+ 
+ 	req_desc = (union MEGASAS_REQUEST_DESCRIPTOR_UNION *)cmd->request_desc;
+ 
+@@ -1804,11 +1890,11 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 
+ 	if ((MR_TargetIdToLdGet(device_id, local_map_ptr) >=
+ 		instance->fw_supported_vd_count) || (!fusion->fast_path_io)) {
+-		io_request->RaidContext.regLockFlags  = 0;
++		io_request->RaidContext.raid_context.regLockFlags  = 0;
+ 		fp_possible = 0;
+ 	} else {
+ 		if (MR_BuildRaidContext(instance, &io_info,
+-					&io_request->RaidContext,
++					&io_request->RaidContext.raid_context,
+ 					local_map_ptr, &raidLUN))
+ 			fp_possible = io_info.fpOkForIo;
+ 	}
+@@ -1819,6 +1905,18 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 	cmd->request_desc->SCSIIO.MSIxIndex = instance->msix_vectors ?
+ 		raw_smp_processor_id() % instance->msix_vectors : 0;
+ 
++	if (instance->is_ventura) {
++		spin_lock_irqsave(&instance->stream_lock, spinlock_flags);
++		megasas_stream_detect(instance, cmd, &io_info);
++		spin_unlock_irqrestore(&instance->stream_lock, spinlock_flags);
++		/* In ventura if stream detected for a read and it is read ahead
++		 *  capable make this IO as LDIO
++		 */
++		if (io_request->RaidContext.raid_context_g35.stream_detected &&
++				io_info.isRead && io_info.ra_capable)
++			fp_possible = false;
++	}
++
+ 	if (fp_possible) {
+ 		megasas_set_pd_lba(io_request, scp->cmd_len, &io_info, scp,
+ 				   local_map_ptr, start_lba_lo);
+@@ -1827,15 +1925,16 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 			(MPI2_REQ_DESCRIPT_FLAGS_FP_IO
+ 			 << MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+ 		if (fusion->adapter_type == INVADER_SERIES) {
+-			if (io_request->RaidContext.regLockFlags ==
++			if (io_request->RaidContext.raid_context.regLockFlags ==
+ 			    REGION_TYPE_UNUSED)
+ 				cmd->request_desc->SCSIIO.RequestFlags =
+ 					(MEGASAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
+ 					MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+-			io_request->RaidContext.Type = MPI2_TYPE_CUDA;
+-			io_request->RaidContext.nseg = 0x1;
++			io_request->RaidContext.raid_context.Type
++				= MPI2_TYPE_CUDA;
++			io_request->RaidContext.raid_context.nseg = 0x1;
+ 			io_request->IoFlags |= cpu_to_le16(MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH);
+-			io_request->RaidContext.regLockFlags |=
++			io_request->RaidContext.raid_context.regLockFlags |=
+ 			  (MR_RL_FLAGS_GRANT_DESTINATION_CUDA |
+ 			   MR_RL_FLAGS_SEQ_NUM_ENABLE);
+ 		}
+@@ -1862,22 +1961,24 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 		/* populate the LUN field */
+ 		memcpy(io_request->LUN, raidLUN, 8);
+ 	} else {
+-		io_request->RaidContext.timeoutValue =
++		io_request->RaidContext.raid_context.timeoutValue =
+ 			cpu_to_le16(local_map_ptr->raidMap.fpPdIoTimeoutSec);
+ 		cmd->request_desc->SCSIIO.RequestFlags =
+ 			(MEGASAS_REQ_DESCRIPT_FLAGS_LD_IO
+ 			 << MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+ 		if (fusion->adapter_type == INVADER_SERIES) {
+ 			if (io_info.do_fp_rlbypass ||
+-				(io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED))
++			(io_request->RaidContext.raid_context.regLockFlags
++					== REGION_TYPE_UNUSED))
+ 				cmd->request_desc->SCSIIO.RequestFlags =
+ 					(MEGASAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
+ 					MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+-			io_request->RaidContext.Type = MPI2_TYPE_CUDA;
+-			io_request->RaidContext.regLockFlags |=
++			io_request->RaidContext.raid_context.Type
++				= MPI2_TYPE_CUDA;
++			io_request->RaidContext.raid_context.regLockFlags |=
+ 				(MR_RL_FLAGS_GRANT_DESTINATION_CPU0 |
+ 				 MR_RL_FLAGS_SEQ_NUM_ENABLE);
+-			io_request->RaidContext.nseg = 0x1;
++			io_request->RaidContext.raid_context.nseg = 0x1;
+ 		}
+ 		io_request->Function = MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST;
+ 		io_request->DevHandle = cpu_to_le16(device_id);
+@@ -1913,7 +2014,7 @@ static void megasas_build_ld_nonrw_fusion(struct megasas_instance *instance,
+ 	local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)];
+ 	io_request->DataLength = cpu_to_le32(scsi_bufflen(scmd));
+ 	/* get RAID_Context pointer */
+-	pRAID_Context = &io_request->RaidContext;
++	pRAID_Context = &io_request->RaidContext.raid_context;
+ 	/* Check with FW team */
+ 	pRAID_Context->VirtualDiskTgtId = cpu_to_le16(device_id);
+ 	pRAID_Context->regLockRowLBA    = 0;
+@@ -2000,7 +2101,7 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
+ 
+ 	io_request = cmd->io_request;
+ 	/* get RAID_Context pointer */
+-	pRAID_Context = &io_request->RaidContext;
++	pRAID_Context = &io_request->RaidContext.raid_context;
+ 	pRAID_Context->regLockFlags = 0;
+ 	pRAID_Context->regLockRowLBA = 0;
+ 	pRAID_Context->regLockLength = 0;
+@@ -2094,9 +2195,9 @@ megasas_build_io_fusion(struct megasas_instance *instance,
+ 	io_request->Control = 0;
+ 	io_request->EEDPBlockSize = 0;
+ 	io_request->ChainOffset = 0;
+-	io_request->RaidContext.RAIDFlags = 0;
+-	io_request->RaidContext.Type = 0;
+-	io_request->RaidContext.nseg = 0;
++	io_request->RaidContext.raid_context.RAIDFlags = 0;
++	io_request->RaidContext.raid_context.Type = 0;
++	io_request->RaidContext.raid_context.nseg = 0;
+ 
+ 	memcpy(io_request->CDB.CDB32, scp->cmnd, scp->cmd_len);
+ 	/*
+@@ -2143,8 +2244,8 @@ megasas_build_io_fusion(struct megasas_instance *instance,
+ 	/* numSGE store lower 8 bit of sge_count.
+ 	 * numSGEExt store higher 8 bit of sge_count
+ 	 */
+-	io_request->RaidContext.numSGE = sge_count;
+-	io_request->RaidContext.numSGEExt = (u8)(sge_count >> 8);
++	io_request->RaidContext.raid_context.numSGE = sge_count;
++	io_request->RaidContext.raid_context.numSGEExt = (u8)(sge_count >> 8);
+ 
+ 	io_request->SGLFlags = cpu_to_le16(MPI2_SGE_FLAGS_64_BIT_ADDRESSING);
+ 
+@@ -2303,8 +2404,8 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 			cmd_fusion->scmd->SCp.ptr = NULL;
+ 
+ 		scmd_local = cmd_fusion->scmd;
+-		status = scsi_io_req->RaidContext.status;
+-		extStatus = scsi_io_req->RaidContext.exStatus;
++		status = scsi_io_req->RaidContext.raid_context.status;
++		extStatus = scsi_io_req->RaidContext.raid_context.exStatus;
+ 
+ 		switch (scsi_io_req->Function) {
+ 		case MPI2_FUNCTION_SCSI_TASK_MGMT:
+@@ -2337,8 +2438,8 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 		case MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST: /* LD-IO Path */
+ 			/* Map the FW Cmd Status */
+ 			map_cmd_status(cmd_fusion, status, extStatus);
+-			scsi_io_req->RaidContext.status = 0;
+-			scsi_io_req->RaidContext.exStatus = 0;
++			scsi_io_req->RaidContext.raid_context.status = 0;
++			scsi_io_req->RaidContext.raid_context.exStatus = 0;
+ 			if (megasas_cmd_type(scmd_local) == READ_WRITE_LDIO)
+ 				atomic_dec(&instance->ldio_outstanding);
+ 			megasas_return_cmd_fusion(instance, cmd_fusion);
+@@ -2901,7 +3002,7 @@ void megasas_refire_mgmt_cmd(struct megasas_instance *instance)
+ 				&& !(cmd_mfi->flags & DRV_DCMD_SKIP_REFIRE);
+ 		if (refire_cmd)
+ 			megasas_fire_cmd_fusion(instance, req_desc,
+-							instance->is_ventura);
++				instance->is_ventura);
+ 		else
+ 			megasas_return_cmd(instance, cmd_mfi);
+ 	}
+@@ -3390,7 +3491,7 @@ int megasas_check_mpio_paths(struct megasas_instance *instance,
+ /* Core fusion reset function */
+ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
+ {
+-	int retval = SUCCESS, i, convert = 0;
++	int retval = SUCCESS, i, j, convert = 0;
+ 	struct megasas_instance *instance;
+ 	struct megasas_cmd_fusion *cmd_fusion;
+ 	struct fusion_context *fusion;
+@@ -3555,6 +3656,16 @@ transition_to_ready:
+ 			shost_for_each_device(sdev, shost)
+ 				megasas_update_sdev_properties(sdev);
+ 
++			/* reset stream detection array */
++			if (instance->is_ventura) {
++				for (j = 0; j < MAX_LOGICAL_DRIVES_EXT; ++j) {
++					memset(fusion->stream_detect_by_ld[j],
++					0, sizeof(struct LD_STREAM_DETECT));
++				 fusion->stream_detect_by_ld[j]->mru_bit_map
++						= MR_STREAM_BITMAP;
++				}
++			}
++
+ 			clear_bit(MEGASAS_FUSION_IN_RESET,
+ 				  &instance->reset_flags);
+ 			instance->instancet->enable_intr(instance);
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index 3cd3d0a..d9cf496 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -133,12 +133,95 @@ struct RAID_CONTEXT {
+ 	u8      resvd2;
+ };
+ 
++/*
++ * Raid Context structure which describes ventura MegaRAID specific
++ * IO Paramenters ,This resides at offset 0x60 where the SGL normally
++ * starts in MPT IO Frames
++ */
++struct RAID_CONTEXT_G35 {
++#if   defined(__BIG_ENDIAN_BITFIELD)
++	u16	resvd0:8;
++	u16	nseg:4;
++	u16	type:4;
++#else
++	u16	type:4;		    /* 0x00 */
++	u16	nseg:4;		    /* 0x00 */
++	u16 resvd0:8;
++#endif
++	u16 timeout_value; /* 0x02 -0x03 */
++	union {
++		struct {
++#if	defined(__BIG_ENDIAN_BITFIELD)
++		u16	set_divert:4;
++		u16	cpu_sel:4;
++		u16	log:1;
++		u16	rw:1;
++		u16	sbs:1;
++		u16	sqn:1;
++		u16	fwn:1;
++		u16	c2f:1;
++		u16	sld:1;
++		u16	reserved:1;
++#else
++		u16	reserved:1;
++		u16	sld:1;
++		u16	c2f:1;
++		u16	fwn:1;
++		u16	sqn:1;
++		u16	sbs:1;
++		u16	rw:1;
++		u16	log:1;
++		u16	cpu_sel:4;
++		u16	set_divert:4;
++#endif
++			} bits;
++		u16 s;
++	} routing_flags;	/* 0x04 -0x05 routing flags */
++	u16 virtual_disk_tgt_id;   /* 0x06 -0x07 */
++	u64 reg_lock_row_lba;      /* 0x08 - 0x0F */
++	u32 reg_lock_length;      /* 0x10 - 0x13 */
++	union {
++		u16 next_lmid; /* 0x14 - 0x15 */
++		u16	peer_smid;	/* used for the raid 1/10 fp writes */
++	} smid;
++	u8 ex_status;       /* 0x16 : OUT */
++	u8 status;          /* 0x17 status */
++	u8 RAIDFlags;		/* 0x18 resvd[7:6], ioSubType[5:4],
++				 * resvd[3:1], preferredCpu[0]
++				 */
++	u8 span_arm;            /* 0x1C span[7:5], arm[4:0] */
++	u16	config_seq_num;           /* 0x1A -0x1B */
++#if   defined(__BIG_ENDIAN_BITFIELD) /* 0x1C - 0x1D */
++	u16 stream_detected:1;
++	u16 reserved:3;
++	u16 num_sge:12;
++#else
++	u16 num_sge:12;
++	u16 reserved:3;
++	u16 stream_detected:1;
++#endif
++	u8 resvd2[2];          /* 0x1E-0x1F */
++};
++
++union RAID_CONTEXT_UNION {
++	struct RAID_CONTEXT raid_context;
++	struct RAID_CONTEXT_G35 raid_context_g35;
++};
++
+ #define RAID_CTX_SPANARM_ARM_SHIFT	(0)
+ #define RAID_CTX_SPANARM_ARM_MASK	(0x1f)
+ 
+ #define RAID_CTX_SPANARM_SPAN_SHIFT	(5)
+ #define RAID_CTX_SPANARM_SPAN_MASK	(0xE0)
+ 
++/* number of bits per index in U32 TrackStream */
++#define BITS_PER_INDEX_STREAM		4
++#define INVALID_STREAM_NUM              16
++#define MR_STREAM_BITMAP		0x76543210
++#define STREAM_MASK			((1 << BITS_PER_INDEX_STREAM) - 1)
++#define ZERO_LAST_STREAM		0x0fffffff
++#define MAX_STREAMS_TRACKED		8
++
+ /*
+  * define region lock types
+  */
+@@ -409,7 +492,7 @@ struct MPI2_RAID_SCSI_IO_REQUEST {
+ 	u8                      LUN[8];                         /* 0x34 */
+ 	__le32			Control;                        /* 0x3C */
+ 	union MPI2_SCSI_IO_CDB_UNION  CDB;			/* 0x40 */
+-	struct RAID_CONTEXT	RaidContext;                    /* 0x60 */
++	union RAID_CONTEXT_UNION RaidContext;  /* 0x60 */
+ 	union MPI2_SGE_IO_UNION       SGL;			/* 0x80 */
+ };
+ 
+@@ -656,11 +739,13 @@ struct MR_LD_RAID {
+ 		u32     encryptionType:8;
+ 		u32     pdPiMode:4;
+ 		u32     ldPiMode:4;
+-		u32     reserved5:3;
++		u32 reserved5:2;
++		u32 ra_capable:1;
+ 		u32     fpCapable:1;
+ #else
+ 		u32     fpCapable:1;
+-		u32     reserved5:3;
++		u32 ra_capable:1;
++		u32 reserved5:2;
+ 		u32     ldPiMode:4;
+ 		u32     pdPiMode:4;
+ 		u32     encryptionType:8;
+@@ -745,6 +830,7 @@ struct IO_REQUEST_INFO {
+ 	u64 start_row;
+ 	u8  span_arm;	/* span[7:5], arm[4:0] */
+ 	u8  pd_after_lb;
++	bool ra_capable;
+ };
+ 
+ struct MR_LD_TARGET_SYNC {
+@@ -930,6 +1016,30 @@ struct MR_PD_CFG_SEQ_NUM_SYNC {
+ 	struct MR_PD_CFG_SEQ seq[1];
+ } __packed;
+ 
++/* stream detection */
++struct STREAM_DETECT {
++	u64 next_seq_lba; /* next LBA to match sequential access */
++	struct megasas_cmd_fusion *first_cmd_fusion; /* first cmd in group */
++	struct megasas_cmd_fusion *last_cmd_fusion; /* last cmd in group */
++	u32 count_cmds_in_stream; /* count of host commands in this stream */
++	u16 num_sges_in_group; /* total number of SGEs in grouped IOs */
++	u8 is_read; /* SCSI OpCode for this stream */
++	u8 group_depth; /* total number of host commands in group */
++	/* TRUE if cannot add any more commands to this group */
++	bool group_flush;
++	u8 reserved[7]; /* pad to 64-bit alignment */
++};
++
++struct LD_STREAM_DETECT {
++	bool write_back; /* TRUE if WB, FALSE if WT */
++	bool fp_write_enabled;
++	bool members_ssds;
++	bool fp_cache_bypass_capable;
++	u32 mru_bit_map; /* bitmap used to track MRU and LRU stream indicies */
++	/* this is the array of stream detect structures (one per stream) */
++	struct STREAM_DETECT stream_track[MAX_STREAMS_TRACKED];
++};
++
+ struct MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY {
+ 	u64 RDPQBaseAddress;
+ 	u32 Reserved1;
+@@ -983,6 +1093,7 @@ struct fusion_context {
+ 	struct LD_LOAD_BALANCE_INFO load_balance_info[MAX_LOGICAL_DRIVES_EXT];
+ 	LD_SPAN_INFO log_to_span[MAX_LOGICAL_DRIVES_EXT];
+ 	u8 adapter_type;
++	struct LD_STREAM_DETECT **stream_detect_by_ld;
+ };
+ 
+ union desc_value {
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0004-scsi-mpt3sas-Remove-unused-macro-MPT_DEVICE_TLR_ON.patch b/SOURCES/centos-linux-3.10-0004-scsi-mpt3sas-Remove-unused-macro-MPT_DEVICE_TLR_ON.patch
new file mode 100644
index 0000000..6e6c21b
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0004-scsi-mpt3sas-Remove-unused-macro-MPT_DEVICE_TLR_ON.patch
@@ -0,0 +1,32 @@
+From 21cedcd2ba44b8e647a4c35affa5df9b584ccd54 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:35 +0530
+Subject: [PATCH 04/11] scsi: mpt3sas: Remove unused macro "MPT_DEVICE_TLR_ON"
+
+Removing macro "MPT_DEVICE_TLR_ON" defined in header file as its unused
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index 241a660..f2fa742 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -379,7 +379,6 @@ struct MPT3SAS_TARGET {
+  * per device private data
+  */
+ #define MPT_DEVICE_FLAGS_INIT		0x01
+-#define MPT_DEVICE_TLR_ON		0x02
+ 
+ #define MFG_PAGE10_HIDE_SSDS_MASK	(0x00000003)
+ #define MFG_PAGE10_HIDE_ALL_DISKS	(0x00)
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0004-vfs-Lazily-remove-mounts-on-unlinked-files-and-direc.patch b/SOURCES/centos-linux-3.10-0004-vfs-Lazily-remove-mounts-on-unlinked-files-and-direc.patch
new file mode 100644
index 0000000..5d15e8d
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0004-vfs-Lazily-remove-mounts-on-unlinked-files-and-direc.patch
@@ -0,0 +1,358 @@
+From 743848de574b660972f457c28c02cbb19c8aa439 Mon Sep 17 00:00:00 2001
+From: "T.kabe" <kabe@>
+Date: Fri, 3 Mar 2017 17:06:44 +0900
+Subject: [PATCH 4/4] vfs: Lazily remove mounts on unlinked files and directories.
+
+[upstream commit 8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe]
+[upstream commit 7af1364ffa64db61e386628594836e13d2ef04b5]
+
+commit 8ed936b5671bfb33d89bc60bdcc7cf0470ba52fe
+Author: Eric W. Biederman <ebiederman@twitter.com>
+Date:   Tue Oct 1 18:33:48 2013 -0700
+
+    vfs: Lazily remove mounts on unlinked files and directories.
+
+    With the introduction of mount namespaces and bind mounts it became
+    possible to access files and directories that on some paths are mount
+    points but are not mount points on other paths.  It is very confusing
+    when rm -rf somedir returns -EBUSY simply because somedir is mounted
+    somewhere else.  With the addition of user namespaces allowing
+    unprivileged mounts this condition has gone from annoying to allowing
+    a DOS attack on other users in the system.
+
+    The possibility for mischief is removed by updating the vfs to support
+    rename, unlink and rmdir on a dentry that is a mountpoint and by
+    lazily unmounting mountpoints on deleted dentries.
+
+    In particular this change allows rename, unlink and rmdir system calls
+    on a dentry without a mountpoint in the current mount namespace to
+    succeed, and it allows rename, unlink, and rmdir performed on a
+    distributed filesystem to update the vfs cache even if when there is a
+    mount in some namespace on the original dentry.
+
+    There are two common patterns of maintaining mounts: Mounts on trusted
+    paths with the parent directory of the mount point and all ancestory
+    directories up to / owned by root and modifiable only by root
+    (i.e. /media/xxx, /dev, /dev/pts, /proc, /sys, /sys/fs/cgroup/{cpu,
+    cpuacct, ...}, /usr, /usr/local).  Mounts on unprivileged directories
+    maintained by fusermount.
+
+    In the case of mounts in trusted directories owned by root and
+    modifiable only by root the current parent directory permissions are
+    sufficient to ensure a mount point on a trusted path is not removed
+    or renamed by anyone other than root, even if there is a context
+    where the there are no mount points to prevent this.
+
+    In the case of mounts in directories owned by less privileged users
+    races with users modifying the path of a mount point are already a
+    danger.  fusermount already uses a combination of chdir,
+    /proc/<pid>/fd/NNN, and UMOUNT_NOFOLLOW to prevent these races.  The
+    removable of global rename, unlink, and rmdir protection really adds
+    nothing new to consider only a widening of the attack window, and
+    fusermount is already safe against unprivileged users modifying the
+    directory simultaneously.
+
+    In principle for perfect userspace programs returning -EBUSY for
+    unlink, rmdir, and rename of dentires that have mounts in the local
+    namespace is actually unnecessary.  Unfortunately not all userspace
+    programs are perfect so retaining -EBUSY for unlink, rmdir and rename
+    of dentries that have mounts in the current mount namespace plays an
+    important role of maintaining consistency with historical behavior and
+    making imperfect userspace applications hard to exploit.
+
+    v2: Remove spurious old_dentry.
+    v3: Optimized shrink_submounts_and_drop
+        Removed unsued afs label
+    v4: Simplified the changes to check_submounts_and_drop
+        Do not rename check_submounts_and_drop shrink_submounts_and_drop
+        Document what why we need atomicity in check_submounts_and_drop
+        Rely on the parent inode mutex to make d_revalidate and d_invalidate
+        an atomic unit.
+    v5: Refcount the mountpoint to detach in case of simultaneous
+        renames.
+
+    Reviewed-by: Miklos Szeredi <miklos@szeredi.hu>
+    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
+    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+
+commit 7af1364ffa64db61e386628594836e13d2ef04b5
+Author: Eric W. Biederman <ebiederm@xmission.com>
+Date:   Fri Oct 4 19:15:13 2013 -0700
+
+    vfs: Don't allow overwriting mounts in the current mount namespace
+
+    In preparation for allowing mountpoints to be renamed and unlinked
+    in remote filesystems and in other mount namespaces test if on a dentry
+    there is a mount in the local mount namespace before allowing it to
+    be renamed or unlinked.
+
+    The primary motivation here are old versions of fusermount unmount
+    which is not safe if the a path can be renamed or unlinked while it is
+    verifying the mount is safe to unmount.  More recent versions are simpler
+    and safer by simply using UMOUNT_NOFOLLOW when unmounting a mount
+    in a directory owned by an arbitrary user.
+
+    Miklos Szeredi <miklos@szeredi.hu> reports this is approach is good
+    enough to remove concerns about new kernels mixed with old versions
+    of fusermount.
+
+    A secondary motivation for restrictions here is that it removing empty
+    directories that have non-empty mount points on them appears to
+    violate the rule that rmdir can not remove empty directories.  As
+    Linus Torvalds pointed out this is useful for programs (like git) that
+    test if a directory is empty with rmdir.
+
+    Therefore this patch arranges to enforce the existing mount point
+    semantics for local mount namespace.
+
+    v2: Rewrote the test to be a drop in replacement for d_mountpoint
+    v3: Use bool instead of int as the return type of is_local_mountpoint
+
+    Reviewed-by: Miklos Szeredi <miklos@szeredi.hu>
+    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
+    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+---
+ fs/dcache.c    | 69 +++++++++++++++++++++++++++++++---------------------------
+ fs/mount.h     |  9 ++++++++
+ fs/namei.c     | 16 +++++++++-----
+ fs/namespace.c | 35 +++++++++++++++++++++++++++++
+ 4 files changed, 91 insertions(+), 38 deletions(-)
+
+diff --git a/fs/dcache.c b/fs/dcache.c
+index 5dabe0e..a3e9e7a 100644
+--- a/fs/dcache.c
++++ b/fs/dcache.c
+@@ -1285,36 +1285,38 @@ void shrink_dcache_parent(struct dentry *parent)
+ }
+ EXPORT_SYMBOL(shrink_dcache_parent);
+ 
+-static enum d_walk_ret check_and_collect(void *_data, struct dentry *dentry)
++struct detach_data {
++	struct select_data select;
++	struct dentry *mountpoint;
++};
++static enum d_walk_ret detach_and_collect(void *_data, struct dentry *dentry)
+ {
+-	struct select_data *data = _data;
+-
+-	if (d_mountpoint(dentry)) {
+-		data->found = -EBUSY;
+-		return D_WALK_QUIT;
+-	}
++	struct detach_data *data = _data;
+ 
+-	return select_collect(_data, dentry);
+-}
++ 	if (d_mountpoint(dentry)) {
++		__dget_dlock(dentry);
++		data->mountpoint = dentry;
++ 		return D_WALK_QUIT;
++ 	}
++	return select_collect(&data->select, dentry);
++ }
+ 
+ static void check_and_drop(void *_data)
+ {
+-	struct select_data *data = _data;
++	struct detach_data *data = _data;
+ 
+-	if (d_mountpoint(data->start))
+-		data->found = -EBUSY;
+-	if (!data->found)
+-		__d_drop(data->start);
++	if (!data->mountpoint && !data->select.found)
++		__d_drop(data->select.start);
+ }
+ 
+ /**
+- * check_submounts_and_drop - prune dcache, check for submounts and drop
++ * check_submounts_and_drop - detach submounts, prune dcache, and drop
+  *
+- * All done as a single atomic operation relative to has_unlinked_ancestor().
+- * Returns 0 if successfully unhashed @parent.  If there were submounts then
+- * return -EBUSY.
++ * The final d_drop is done as an atomic operation relative to
++ * rename_lock ensuring there are no races with d_set_mounted.  This
++ * ensures there are no unhashed dentries on the path to a mountpoint.
+  *
+- * @dentry: dentry to prune and drop
++ * @dentry: dentry to detach, prune and drop
+  */
+ int check_submounts_and_drop(struct dentry *dentry)
+ {
+@@ -1327,19 +1329,24 @@ int check_submounts_and_drop(struct dentry *dentry)
+ 	}
+ 
+ 	for (;;) {
+-		struct select_data data;
++		struct detach_data data;
+ 
+-		INIT_LIST_HEAD(&data.dispose);
+-		data.start = dentry;
+-		data.found = 0;
++		data.mountpoint = NULL;
++		INIT_LIST_HEAD(&data.select.dispose);
++		data.select.start = dentry;
++		data.select.found = 0;
+ 
+-		d_walk(dentry, &data, check_and_collect, check_and_drop);
+-		ret = data.found;
++		d_walk(dentry, &data, detach_and_collect, check_and_drop);
+ 
+-		if (!list_empty(&data.dispose))
+-			shrink_dentry_list(&data.dispose);
++		if (data.select.found)
++			shrink_dentry_list(&data.select.dispose);
+ 
+-		if (ret <= 0)
++		if (data.mountpoint) {
++			detach_mounts(data.mountpoint);
++			dput(data.mountpoint);
++		}
++
++		if (!data.mountpoint && !data.select.found)
+ 			break;
+ 
+ 		cond_resched();
+@@ -2554,10 +2561,8 @@ static struct dentry *__d_unalias(struct inode *inode,
+ 		goto out_err;
+ 	m2 = &alias->d_parent->d_inode->i_mutex;
+ out_unalias:
+-	if (likely(!d_mountpoint(alias))) {
+-		__d_move(alias, dentry, false);
+-		ret = alias;
+-	}
++	__d_move(alias, dentry, false);
++	ret = alias;
+ out_err:
+ 	spin_unlock(&inode->i_lock);
+ 	if (m2)
+diff --git a/fs/mount.h b/fs/mount.h
+index 9959119..a373c86 100644
+--- a/fs/mount.h
++++ b/fs/mount.h
+@@ -107,3 +107,12 @@ struct proc_mounts {
+ #define proc_mounts(p) (container_of((p), struct proc_mounts, m))
+ 
+ extern const struct seq_operations mounts_op;
++
++extern bool __is_local_mountpoint(struct dentry *dentry);
++static inline bool is_local_mountpoint(struct dentry *dentry)
++{
++	if (!d_mountpoint(dentry))
++		return false;
++
++	return __is_local_mountpoint(dentry);
++}
+diff --git a/fs/namei.c b/fs/namei.c
+index 872e5e5..ef70aa8 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -3691,8 +3691,8 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry)
+ 	mutex_lock(&dentry->d_inode->i_mutex);
+ 
+ 	error = -EBUSY;
+-	if (d_mountpoint(dentry))
+-		goto out;
++ 	if (is_local_mountpoint(dentry))
++ 		goto out;
+ 
+ 	error = security_inode_rmdir(dir, dentry);
+ 	if (error)
+@@ -3705,6 +3705,7 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry)
+ 
+ 	dentry->d_inode->i_flags |= S_DEAD;
+ 	dont_mount(dentry);
++	detach_mounts(dentry);
+ 
+ out:
+ 	mutex_unlock(&dentry->d_inode->i_mutex);
+@@ -3806,7 +3807,7 @@ int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegate
+ 		return -EPERM;
+ 
+ 	mutex_lock(&target->i_mutex);
+-	if (d_mountpoint(dentry))
++	if (is_local_mountpoint(dentry))
+ 		error = -EBUSY;
+ 	else {
+ 		error = security_inode_unlink(dir, dentry);
+@@ -3815,8 +3816,10 @@ int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegate
+ 			if (error)
+ 				goto out;
+ 			error = dir->i_op->unlink(dir, dentry);
+-			if (!error)
++			if (!error) {
+ 				dont_mount(dentry);
++				detach_mounts(dentry);
++			}
+ 		}
+ 	}
+ out:
+@@ -4254,8 +4257,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
+ 		mutex_lock(&target->i_mutex);
+ 
+ 	error = -EBUSY;
+-	if (d_mountpoint(old_dentry) || d_mountpoint(new_dentry))
+-		goto out;
++ 	if (is_local_mountpoint(old_dentry) || is_local_mountpoint(new_dentry))
++ 		goto out;
+ 
+ 	if (max_links && new_dir != old_dir) {
+ 		error = -EMLINK;
+@@ -4292,6 +4295,7 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
+ 		if (is_dir)
+ 			target->i_flags |= S_DEAD;
+ 		dont_mount(new_dentry);
++		detach_mounts(new_dentry);
+ 	}
+ 	if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE)) {
+ 		if (!(flags & RENAME_EXCHANGE))
+diff --git a/fs/namespace.c b/fs/namespace.c
+index e48fed3..d633562 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -625,6 +625,41 @@ static struct mountpoint *lookup_mountpoint(struct dentry *dentry)
+ 	return NULL;
+ }
+ 
++/*
++ * __is_local_mountpoint - Test to see if dentry is a mountpoint in the
++ *                         current mount namespace.
++ *
++ * The common case is dentries are not mountpoints at all and that
++ * test is handled inline.  For the slow case when we are actually
++ * dealing with a mountpoint of some kind, walk through all of the
++ * mounts in the current mount namespace and test to see if the dentry
++ * is a mountpoint.
++ *
++ * The mount_hashtable is not usable in the context because we
++ * need to identify all mounts that may be in the current mount
++ * namespace not just a mount that happens to have some specified
++ * parent mount.
++ */
++bool __is_local_mountpoint(struct dentry *dentry)
++{
++	struct mnt_namespace *ns = current->nsproxy->mnt_ns;
++	struct mount *mnt;
++	bool is_covered = false;
++
++	if (!d_mountpoint(dentry))
++		goto out;
++
++	down_read(&namespace_sem);
++	list_for_each_entry(mnt, &ns->list, mnt_list) {
++		is_covered = (mnt->mnt_mountpoint == dentry);
++		if (is_covered)
++			break;
++	}
++	up_read(&namespace_sem);
++out:
++	return is_covered;
++}
++
+ static struct mountpoint *new_mountpoint(struct dentry *dentry)
+ {
+ 	struct list_head *chain = mountpoint_hashtable + hash(NULL, dentry);
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0005-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch b/SOURCES/centos-linux-3.10-0005-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
new file mode 100644
index 0000000..758ca5e
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0005-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
@@ -0,0 +1,774 @@
+From 9fb69ac5aa175b55ba7d48596a3929e3206cbd4b Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:47 -0500
+Subject: [PATCH 05/11] scsi: megaraid_sas: SAS3.5 Generic Megaraid Controllers
+ Fast Path for RAID 1/10 Writes
+
+To improve RAID 1/10 Write performance, OS drivers need to issue the
+required Write IOs as Fast Path IOs (after the appropriate checks
+allowing Fast Path to be used) to the appropriate physical drives
+(translated from the OS logical IO) and wait for all Write IOs to complete.
+
+Design: A write IO on RAID volume will be examined if it can be sent in
+Fast Path based on IO size and starting LBA and ending LBA falling on to
+a Physical Drive boundary. If the underlying RAID volume is a RAID 1/10,
+driver issues two fast path write IOs one for each corresponding physical
+drive after computing the corresponding start LBA for each physical drive.
+Both write IOs will have the same payload and are posted to HW such that
+replies land in the same reply queue.
+
+If there are no resources available for sending two IOs, driver will send
+the original IO from SCSI layer to RAID volume through the Firmware.
+
+Based on PCI bandwidth and write payload, every second this feature is
+enabled/disabled.
+
+When both IOs are completed by HW, the resources will be released
+and SCSI IO completion handler will be called.
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        |   1 +
+ drivers/scsi/megaraid/megaraid_sas_fp.c     |  31 ++-
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 335 ++++++++++++++++++++++++----
+ drivers/scsi/megaraid/megaraid_sas_fusion.h |  15 +-
+ 4 files changed, 329 insertions(+), 53 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index f387b32..0b4d37b 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -2056,6 +2056,7 @@ struct megasas_instance {
+ 
+ 	u16 max_num_sge;
+ 	u16 max_fw_cmds;
++	u16 max_mpt_cmds;
+ 	u16 max_mfi_cmds;
+ 	u16 max_scsi_cmds;
+ 	u16 ldio_threshold;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c b/drivers/scsi/megaraid/megaraid_sas_fp.c
+index fe5b074..3644dbc 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fp.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fp.c
+@@ -737,7 +737,7 @@ static u8 mr_spanset_get_phy_params(struct megasas_instance *instance, u32 ld,
+ 		struct MR_DRV_RAID_MAP_ALL *map)
+ {
+ 	struct MR_LD_RAID  *raid = MR_LdRaidGet(ld, map);
+-	u32     pd, arRef;
++	u32     pd, arRef, r1_alt_pd;
+ 	u8      physArm, span;
+ 	u64     row;
+ 	u8	retval = TRUE;
+@@ -772,9 +772,16 @@ static u8 mr_spanset_get_phy_params(struct megasas_instance *instance, u32 ld,
+ 	arRef       = MR_LdSpanArrayGet(ld, span, map);
+ 	pd          = MR_ArPdGet(arRef, physArm, map);
+ 
+-	if (pd != MR_PD_INVALID)
++	if (pd != MR_PD_INVALID) {
+ 		*pDevHandle = MR_PdDevHandleGet(pd, map);
+-	else {
++		/* get second pd also for raid 1/10 fast path writes*/
++		if (raid->level == 1) {
++			r1_alt_pd = MR_ArPdGet(arRef, physArm + 1, map);
++			if (r1_alt_pd != MR_PD_INVALID)
++				io_info->r1_alt_dev_handle =
++				MR_PdDevHandleGet(r1_alt_pd, map);
++		}
++	} else {
+ 		*pDevHandle = cpu_to_le16(MR_PD_INVALID);
+ 		if ((raid->level >= 5) &&
+ 			((fusion->adapter_type == THUNDERBOLT_SERIES)  ||
+@@ -818,7 +825,7 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow,
+ 		struct MR_DRV_RAID_MAP_ALL *map)
+ {
+ 	struct MR_LD_RAID  *raid = MR_LdRaidGet(ld, map);
+-	u32         pd, arRef;
++	u32         pd, arRef, r1_alt_pd;
+ 	u8          physArm, span;
+ 	u64         row;
+ 	u8	    retval = TRUE;
+@@ -866,10 +873,17 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow,
+ 	arRef       = MR_LdSpanArrayGet(ld, span, map);
+ 	pd          = MR_ArPdGet(arRef, physArm, map); /* Get the pd */
+ 
+-	if (pd != MR_PD_INVALID)
++	if (pd != MR_PD_INVALID) {
+ 		/* Get dev handle from Pd. */
+ 		*pDevHandle = MR_PdDevHandleGet(pd, map);
+-	else {
++		/* get second pd also for raid 1/10 fast path writes*/
++		if (raid->level == 1) {
++			r1_alt_pd = MR_ArPdGet(arRef, physArm + 1, map);
++			if (r1_alt_pd != MR_PD_INVALID)
++				io_info->r1_alt_dev_handle =
++				MR_PdDevHandleGet(r1_alt_pd, map);
++		}
++	} else {
+ 		/* set dev handle as invalid. */
+ 		*pDevHandle = cpu_to_le16(MR_PD_INVALID);
+ 		if ((raid->level >= 5) &&
+@@ -1124,6 +1138,11 @@ MR_BuildRaidContext(struct megasas_instance *instance,
+ 		/* If IO on an invalid Pd, then FP is not possible.*/
+ 		if (io_info->devHandle == cpu_to_le16(MR_PD_INVALID))
+ 			io_info->fpOkForIo = FALSE;
++		/* set raid 1/10 fast path write capable bit in io_info */
++		if (io_info->fpOkForIo &&
++		    (io_info->r1_alt_dev_handle != MR_PD_INVALID) &&
++		    (raid->level == 1) && !isRead)
++			io_info->is_raid_1_fp_write = 1;
+ 		return retval;
+ 	} else if (isRead) {
+ 		uint stripIdx;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 946f7c0..b146cd1 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -270,7 +270,8 @@ megasas_fusion_update_can_queue(struct megasas_instance *instance, int fw_boot_c
+ 		instance->ldio_threshold = ldio_threshold;
+ 
+ 		if (!instance->is_rdpq)
+-			instance->max_fw_cmds = min_t(u16, instance->max_fw_cmds, 1024);
++			instance->max_fw_cmds =
++				min_t(u16, instance->max_fw_cmds, 1024);
+ 
+ 		if (reset_devices)
+ 			instance->max_fw_cmds = min(instance->max_fw_cmds,
+@@ -286,7 +287,14 @@ megasas_fusion_update_can_queue(struct megasas_instance *instance, int fw_boot_c
+ 				(MEGASAS_FUSION_INTERNAL_CMDS +
+ 				MEGASAS_FUSION_IOCTL_CMDS);
+ 		instance->cur_can_queue = instance->max_scsi_cmds;
++		instance->host->can_queue = instance->cur_can_queue;
+ 	}
++
++	if (instance->is_ventura)
++		instance->max_mpt_cmds =
++		instance->max_fw_cmds * RAID_1_10_RMW_CMDS;
++	else
++		instance->max_mpt_cmds = instance->max_fw_cmds;
+ }
+ /**
+  * megasas_free_cmds_fusion -	Free all the cmds in the free cmd pool
+@@ -300,7 +308,7 @@ megasas_free_cmds_fusion(struct megasas_instance *instance)
+ 	struct megasas_cmd_fusion *cmd;
+ 
+ 	/* SG, Sense */
+-	for (i = 0; i < instance->max_fw_cmds; i++) {
++	for (i = 0; i < instance->max_mpt_cmds; i++) {
+ 		cmd = fusion->cmd_list[i];
+ 		if (cmd) {
+ 			if (cmd->sg_frame)
+@@ -344,7 +352,7 @@ megasas_free_cmds_fusion(struct megasas_instance *instance)
+ 
+ 
+ 	/* cmd_list */
+-	for (i = 0; i < instance->max_fw_cmds; i++)
++	for (i = 0; i < instance->max_mpt_cmds; i++)
+ 		kfree(fusion->cmd_list[i]);
+ 
+ 	kfree(fusion->cmd_list);
+@@ -396,33 +404,49 @@ static int megasas_create_sg_sense_fusion(struct megasas_instance *instance)
+ 			return -ENOMEM;
+ 		}
+ 	}
++
++	/* create sense buffer for the raid 1/10 fp */
++	for (i = max_cmd; i < instance->max_mpt_cmds; i++) {
++		cmd = fusion->cmd_list[i];
++		cmd->sense = pci_pool_alloc(fusion->sense_dma_pool,
++			GFP_KERNEL, &cmd->sense_phys_addr);
++		if (!cmd->sense) {
++			dev_err(&instance->pdev->dev,
++				"Failed from %s %d\n",  __func__, __LINE__);
++			return -ENOMEM;
++		}
++	}
++
+ 	return 0;
+ }
+ 
+ int
+ megasas_alloc_cmdlist_fusion(struct megasas_instance *instance)
+ {
+-	u32 max_cmd, i;
++	u32 max_mpt_cmd, i;
+ 	struct fusion_context *fusion;
+ 
+ 	fusion = instance->ctrl_context;
+ 
+-	max_cmd = instance->max_fw_cmds;
++	max_mpt_cmd = instance->max_mpt_cmds;
+ 
+ 	/*
+ 	 * fusion->cmd_list is an array of struct megasas_cmd_fusion pointers.
+ 	 * Allocate the dynamic array first and then allocate individual
+ 	 * commands.
+ 	 */
+-	fusion->cmd_list = kzalloc(sizeof(struct megasas_cmd_fusion *) * max_cmd,
+-						GFP_KERNEL);
++	fusion->cmd_list =
++		kzalloc(sizeof(struct megasas_cmd_fusion *) * max_mpt_cmd,
++			GFP_KERNEL);
+ 	if (!fusion->cmd_list) {
+ 		dev_err(&instance->pdev->dev,
+ 			"Failed from %s %d\n",  __func__, __LINE__);
+ 		return -ENOMEM;
+ 	}
+ 
+-	for (i = 0; i < max_cmd; i++) {
++
++
++	for (i = 0; i < max_mpt_cmd; i++) {
+ 		fusion->cmd_list[i] = kzalloc(sizeof(struct megasas_cmd_fusion),
+ 					      GFP_KERNEL);
+ 		if (!fusion->cmd_list[i]) {
+@@ -657,13 +681,14 @@ megasas_alloc_cmds_fusion(struct megasas_instance *instance)
+ 	 */
+ 
+ 	/* SMID 0 is reserved. Set SMID/index from 1 */
+-	for (i = 0; i < instance->max_fw_cmds; i++) {
++	for (i = 0; i < instance->max_mpt_cmds; i++) {
+ 		cmd = fusion->cmd_list[i];
+ 		offset = MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE * i;
+ 		memset(cmd, 0, sizeof(struct megasas_cmd_fusion));
+ 		cmd->index = i + 1;
+ 		cmd->scmd = NULL;
+-		cmd->sync_cmd_idx = (i >= instance->max_scsi_cmds) ?
++		cmd->sync_cmd_idx =
++		(i >= instance->max_scsi_cmds && i < instance->max_fw_cmds) ?
+ 				(i - instance->max_scsi_cmds) :
+ 				(u32)ULONG_MAX; /* Set to Invalid */
+ 		cmd->instance = instance;
+@@ -673,6 +698,7 @@ megasas_alloc_cmds_fusion(struct megasas_instance *instance)
+ 		memset(cmd->io_request, 0,
+ 		       sizeof(struct MPI2_RAID_SCSI_IO_REQUEST));
+ 		cmd->io_request_phys_addr = io_req_base_phys + offset;
++		cmd->is_raid_1_fp_write = 0;
+ 	}
+ 
+ 	if (megasas_create_sg_sense_fusion(instance))
+@@ -1262,12 +1288,12 @@ megasas_init_adapter_fusion(struct megasas_instance *instance)
+ 	fusion->reply_q_depth = 2 * (((max_cmd + 1 + 15)/16)*16);
+ 
+ 	fusion->request_alloc_sz =
+-		sizeof(union MEGASAS_REQUEST_DESCRIPTOR_UNION) *max_cmd;
++	sizeof(union MEGASAS_REQUEST_DESCRIPTOR_UNION) * instance->max_mpt_cmds;
+ 	fusion->reply_alloc_sz = sizeof(union MPI2_REPLY_DESCRIPTORS_UNION)
+ 		*(fusion->reply_q_depth);
+ 	fusion->io_frames_alloc_sz = MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE +
+-		(MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE *
+-		 (max_cmd + 1)); /* Extra 1 for SMID 0 */
++		(MEGA_MPI2_RAID_DEFAULT_IO_FRAME_SIZE
++		* (instance->max_mpt_cmds + 1)); /* Extra 1 for SMID 0 */
+ 
+ 	scratch_pad_2 = readl(&instance->reg_set->outbound_scratch_pad_2);
+ 	/* If scratch_pad_2 & MEGASAS_MAX_CHAIN_SIZE_UNITS_MASK is set,
+@@ -1403,42 +1429,43 @@ fail_alloc_mfi_cmds:
+  */
+ 
+ void
+-map_cmd_status(struct megasas_cmd_fusion *cmd, u8 status, u8 ext_status)
++map_cmd_status(struct fusion_context *fusion,
++	struct scsi_cmnd *scmd, u8 status, u8 ext_status,
++			u32 data_length, u8 *sense)
+ {
+ 
+ 	switch (status) {
+ 
+ 	case MFI_STAT_OK:
+-		cmd->scmd->result = DID_OK << 16;
++		scmd->result = DID_OK << 16;
+ 		break;
+ 
+ 	case MFI_STAT_SCSI_IO_FAILED:
+ 	case MFI_STAT_LD_INIT_IN_PROGRESS:
+-		cmd->scmd->result = (DID_ERROR << 16) | ext_status;
++		scmd->result = (DID_ERROR << 16) | ext_status;
+ 		break;
+ 
+ 	case MFI_STAT_SCSI_DONE_WITH_ERROR:
+ 
+-		cmd->scmd->result = (DID_OK << 16) | ext_status;
++		scmd->result = (DID_OK << 16) | ext_status;
+ 		if (ext_status == SAM_STAT_CHECK_CONDITION) {
+-			memset(cmd->scmd->sense_buffer, 0,
++			memset(scmd->sense_buffer, 0,
+ 			       SCSI_SENSE_BUFFERSIZE);
+-			memcpy(cmd->scmd->sense_buffer, cmd->sense,
++			memcpy(scmd->sense_buffer, sense,
+ 			       SCSI_SENSE_BUFFERSIZE);
+-			cmd->scmd->result |= DRIVER_SENSE << 24;
++			scmd->result |= DRIVER_SENSE << 24;
+ 		}
+ 		break;
+ 
+ 	case MFI_STAT_LD_OFFLINE:
+ 	case MFI_STAT_DEVICE_NOT_FOUND:
+-		cmd->scmd->result = DID_BAD_TARGET << 16;
++		scmd->result = DID_BAD_TARGET << 16;
+ 		break;
+ 	case MFI_STAT_CONFIG_SEQ_MISMATCH:
+-		cmd->scmd->result = DID_IMM_RETRY << 16;
++		scmd->result = DID_IMM_RETRY << 16;
+ 		break;
+ 	default:
+-		dev_printk(KERN_DEBUG, &cmd->instance->pdev->dev, "FW status %#x\n", status);
+-		cmd->scmd->result = DID_ERROR << 16;
++		scmd->result = DID_ERROR << 16;
+ 		break;
+ 	}
+ }
+@@ -1881,6 +1908,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 	io_info.ldStartBlock = ((u64)start_lba_hi << 32) | start_lba_lo;
+ 	io_info.numBlocks = datalength;
+ 	io_info.ldTgtId = device_id;
++	io_info.r1_alt_dev_handle = MR_PD_INVALID;
+ 	io_request->DataLength = cpu_to_le32(scsi_bufflen(scp));
+ 
+ 	if (scp->sc_data_direction == PCI_DMA_FROMDEVICE)
+@@ -1949,6 +1977,10 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 		} else
+ 			scp->SCp.Status &= ~MEGASAS_LOAD_BALANCE_FLAG;
+ 
++		cmd->is_raid_1_fp_write = io_info.is_raid_1_fp_write;
++		if (io_info.is_raid_1_fp_write)
++			cmd->r1_alt_dev_handle = io_info.r1_alt_dev_handle;
++
+ 		if ((raidLUN[0] == 1) &&
+ 			(local_map_ptr->raidMap.devHndlInfo[io_info.pd_after_lb].validHandles > 1)) {
+ 			instance->dev_handle = !(instance->dev_handle);
+@@ -2272,19 +2304,118 @@ megasas_get_request_descriptor(struct megasas_instance *instance, u16 index)
+ 	u8 *p;
+ 	struct fusion_context *fusion;
+ 
+-	if (index >= instance->max_fw_cmds) {
++	if (index >= instance->max_mpt_cmds) {
+ 		dev_err(&instance->pdev->dev, "Invalid SMID (0x%x)request for "
+ 		       "descriptor for scsi%d\n", index,
+ 			instance->host->host_no);
+ 		return NULL;
+ 	}
+ 	fusion = instance->ctrl_context;
+-	p = fusion->req_frames_desc
+-		+sizeof(union MEGASAS_REQUEST_DESCRIPTOR_UNION) *index;
++	p = fusion->req_frames_desc +
++		sizeof(union MEGASAS_REQUEST_DESCRIPTOR_UNION) * index;
+ 
+ 	return (union MEGASAS_REQUEST_DESCRIPTOR_UNION *)p;
+ }
+ 
++/*
++ * megasas_fpio_to_ldio-
++ * This function converts an fp io to ldio
++ */
++
++void megasas_fpio_to_ldio(struct megasas_instance *instance,
++	struct megasas_cmd_fusion *cmd, struct scsi_cmnd *scmd)
++{
++	struct fusion_context *fusion;
++
++	fusion = instance->ctrl_context;
++	cmd->request_desc->SCSIIO.RequestFlags =
++		(MEGASAS_REQ_DESCRIPT_FLAGS_LD_IO
++		<< MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
++	cmd->io_request->Function = MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST;
++	cmd->io_request->DevHandle = cpu_to_le16(MEGASAS_DEV_INDEX(scmd));
++
++	/*remove FAST PATH ENABLE bit in IoFlags */
++	cmd->io_request->IoFlags &=
++	cpu_to_le16(~MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH);
++
++	/* if the numSGE > max_sge_in_main_sge set the chain offset*/
++	if (cmd->io_request->RaidContext.raid_context_g35.num_sge >
++		fusion->max_sge_in_main_msg)
++		cmd->io_request->ChainOffset = fusion->chain_offset_io_request;
++	memcpy(cmd->io_request->CDB.CDB32, scmd->cmnd, scmd->cmd_len);
++	cmd->io_request->CDB.EEDP32.PrimaryReferenceTag = 0;
++	cmd->io_request->CDB.EEDP32.PrimaryApplicationTagMask = 0;
++	cmd->io_request->EEDPFlags = 0;
++	cmd->io_request->Control = 0;
++	cmd->io_request->EEDPBlockSize = 0;
++	cmd->is_raid_1_fp_write = 0;
++}
++
++/* megasas_prepate_secondRaid1_IO
++ *  It prepares the raid 1 second IO
++ */
++void megasas_prepare_secondRaid1_IO(struct megasas_instance *instance,
++			    struct megasas_cmd_fusion *cmd,
++			    struct megasas_cmd_fusion *r1_cmd)
++{
++	union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc, *req_desc2 = NULL;
++	struct fusion_context *fusion;
++
++	fusion = instance->ctrl_context;
++	req_desc = cmd->request_desc;
++	if (r1_cmd) {
++		/* copy the io request frame as well
++		 *  as 8 SGEs data for r1 command
++		 */
++		memcpy(r1_cmd->io_request, cmd->io_request,
++			sizeof(struct MPI2_RAID_SCSI_IO_REQUEST));
++		memcpy(&r1_cmd->io_request->SGL, &cmd->io_request->SGL,
++				(fusion->max_sge_in_main_msg *
++				sizeof(union MPI2_SGE_IO_UNION)));
++		/*sense buffer is different for r1 command*/
++		r1_cmd->io_request->SenseBufferLowAddress =
++				cpu_to_le32(r1_cmd->sense_phys_addr);
++		r1_cmd->scmd = cmd->scmd;
++		req_desc2 =
++		megasas_get_request_descriptor(instance, r1_cmd->index-1);
++		if (req_desc2) {
++			req_desc2->Words = 0;
++			r1_cmd->request_desc = req_desc2;
++			req_desc2->SCSIIO.SMID =
++				cpu_to_le16(r1_cmd->index);
++			req_desc2->SCSIIO.RequestFlags =
++				req_desc->SCSIIO.RequestFlags;
++			r1_cmd->is_raid_1_fp_write = 1;
++			r1_cmd->request_desc->SCSIIO.DevHandle =
++				cmd->r1_alt_dev_handle;
++			r1_cmd->io_request->DevHandle = cmd->r1_alt_dev_handle;
++			cmd->io_request->RaidContext.raid_context_g35.smid.peer_smid =
++				 cpu_to_le16(r1_cmd->index);
++			r1_cmd->io_request->RaidContext.raid_context_g35.smid.peer_smid =
++				cpu_to_le16(cmd->index);
++			/* MSIxIndex of both commands request
++			 * descriptors should be same
++			 */
++			r1_cmd->request_desc->SCSIIO.MSIxIndex =
++				cmd->request_desc->SCSIIO.MSIxIndex;
++			/*span arm is different for r1 cmd*/
++			r1_cmd->io_request->RaidContext.raid_context_g35.span_arm =
++			cmd->io_request->RaidContext.raid_context_g35.span_arm + 1;
++		} else {
++			megasas_return_cmd_fusion(instance, r1_cmd);
++			dev_info(&instance->pdev->dev,
++				"unable to get request descriptor, firing as normal IO\n");
++			atomic_dec(&instance->fw_outstanding);
++			megasas_fpio_to_ldio(instance, cmd, cmd->scmd);
++		}
++	} else {
++		dev_info(&instance->pdev->dev,
++			"unable to get command, firing as normal IO\n");
++		atomic_dec(&instance->fw_outstanding);
++		megasas_fpio_to_ldio(instance, cmd, cmd->scmd);
++	}
++}
++
+ /**
+  * megasas_build_and_issue_cmd_fusion -Main routine for building and
+  *                                     issuing non IOCTL cmd
+@@ -2295,7 +2426,7 @@ static u32
+ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 				   struct scsi_cmnd *scmd)
+ {
+-	struct megasas_cmd_fusion *cmd;
++	struct megasas_cmd_fusion *cmd, *r1_cmd = NULL;
+ 	union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc;
+ 	u32 index;
+ 	struct fusion_context *fusion;
+@@ -2310,13 +2441,27 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 		return SCSI_MLQUEUE_DEVICE_BUSY;
+ 	}
+ 
++	if (atomic_inc_return(&instance->fw_outstanding) >
++			instance->host->can_queue) {
++		dev_err(&instance->pdev->dev, "Throttle IOs beyond Controller queue depth\n");
++		atomic_dec(&instance->fw_outstanding);
++		return SCSI_MLQUEUE_HOST_BUSY;
++	}
++
+ 	cmd = megasas_get_cmd_fusion(instance, scmd->request->tag);
+ 
++	if (!cmd) {
++		atomic_dec(&instance->fw_outstanding);
++		return SCSI_MLQUEUE_HOST_BUSY;
++	}
++
+ 	index = cmd->index;
+ 
+ 	req_desc = megasas_get_request_descriptor(instance, index-1);
+-	if (!req_desc)
++	if (!req_desc) {
++		atomic_dec(&instance->fw_outstanding);
+ 		return SCSI_MLQUEUE_HOST_BUSY;
++	}
+ 
+ 	req_desc->Words = 0;
+ 	cmd->request_desc = req_desc;
+@@ -2325,6 +2470,7 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 		megasas_return_cmd_fusion(instance, cmd);
+ 		dev_err(&instance->pdev->dev, "Error building command\n");
+ 		cmd->request_desc = NULL;
++		atomic_dec(&instance->fw_outstanding);
+ 		return SCSI_MLQUEUE_HOST_BUSY;
+ 	}
+ 
+@@ -2335,14 +2481,39 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 	    cmd->io_request->ChainOffset != 0xF)
+ 		dev_err(&instance->pdev->dev, "The chain offset value is not "
+ 		       "correct : %x\n", cmd->io_request->ChainOffset);
++	/*
++	 *	if it is raid 1/10 fp write capable.
++	 *	try to get second command from pool and construct it.
++	 *	From FW, it has confirmed that lba values of two PDs
++	 *	corresponds to single R1/10 LD are always same
++	 *
++	 */
++	/*	driver side count always should be less than max_fw_cmds
++	 *	to get new command
++	 */
++	if (cmd->is_raid_1_fp_write &&
++		atomic_inc_return(&instance->fw_outstanding) >
++			(instance->host->can_queue)) {
++		megasas_fpio_to_ldio(instance, cmd, cmd->scmd);
++		atomic_dec(&instance->fw_outstanding);
++	} else if (cmd->is_raid_1_fp_write) {
++		r1_cmd = megasas_get_cmd_fusion(instance,
++				(scmd->request->tag + instance->max_fw_cmds));
++		megasas_prepare_secondRaid1_IO(instance, cmd, r1_cmd);
++	}
++
+ 
+ 	/*
+ 	 * Issue the command to the FW
+ 	 */
+-	atomic_inc(&instance->fw_outstanding);
+ 
+ 	megasas_fire_cmd_fusion(instance, req_desc, instance->is_ventura);
+ 
++	if (r1_cmd)
++		megasas_fire_cmd_fusion(instance, r1_cmd->request_desc,
++				instance->is_ventura);
++
++
+ 	return 0;
+ }
+ 
+@@ -2359,10 +2530,10 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 	struct MPI2_RAID_SCSI_IO_REQUEST *scsi_io_req;
+ 	struct fusion_context *fusion;
+ 	struct megasas_cmd *cmd_mfi;
+-	struct megasas_cmd_fusion *cmd_fusion;
++	struct megasas_cmd_fusion *cmd_fusion, *r1_cmd = NULL;
+ 	u16 smid, num_completed;
+-	u8 reply_descript_type;
+-	u32 status, extStatus, device_id;
++	u8 reply_descript_type, *sense;
++	u32 status, extStatus, device_id, data_length;
+ 	union desc_value d_val;
+ 	struct LD_LOAD_BALANCE_INFO *lbinfo;
+ 	int threshold_reply_count = 0;
+@@ -2392,6 +2563,15 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 
+ 	while (d_val.u.low != cpu_to_le32(UINT_MAX) &&
+ 	       d_val.u.high != cpu_to_le32(UINT_MAX)) {
++		   /*
++		    * Ensure that the peer command is NULL here in case a
++		    * command has completed but the R1 FP Write peer has
++		    * not completed yet.If not null, it's possible that
++		    * another thread will complete the peer
++		    * command and should not.
++		    */
++		r1_cmd = NULL;
++
+ 		smid = le16_to_cpu(reply_desc->SMID);
+ 
+ 		cmd_fusion = fusion->cmd_list[smid - 1];
+@@ -2406,6 +2586,8 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 		scmd_local = cmd_fusion->scmd;
+ 		status = scsi_io_req->RaidContext.raid_context.status;
+ 		extStatus = scsi_io_req->RaidContext.raid_context.exStatus;
++		sense = cmd_fusion->sense;
++		data_length = scsi_io_req->DataLength;
+ 
+ 		switch (scsi_io_req->Function) {
+ 		case MPI2_FUNCTION_SCSI_TASK_MGMT:
+@@ -2422,12 +2604,28 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 			/* Update load balancing info */
+ 			device_id = MEGASAS_DEV_INDEX(scmd_local);
+ 			lbinfo = &fusion->load_balance_info[device_id];
+-			if (cmd_fusion->scmd->SCp.Status &
+-			    MEGASAS_LOAD_BALANCE_FLAG) {
++			/*
++			 * check for the raid 1/10 fast path writes
++			 */
++			if (!cmd_fusion->is_raid_1_fp_write &&
++				(cmd_fusion->scmd->SCp.Status &
++					MEGASAS_LOAD_BALANCE_FLAG)) {
+ 				atomic_dec(&lbinfo->scsi_pending_cmds[cmd_fusion->pd_r1_lb]);
+ 				cmd_fusion->scmd->SCp.Status &=
+ 					~MEGASAS_LOAD_BALANCE_FLAG;
++			} else if (cmd_fusion->is_raid_1_fp_write) {
++				/* get peer command */
++				if (cmd_fusion->index < instance->max_fw_cmds)
++					r1_cmd = fusion->cmd_list[(cmd_fusion->index +
++					instance->max_fw_cmds)-1];
++				else {
++					r1_cmd =
++					fusion->cmd_list[(cmd_fusion->index -
++						 instance->max_fw_cmds)-1];
++				}
++				cmd_fusion->cmd_completed = true;
+ 			}
++
+ 			if (reply_descript_type ==
+ 			    MPI2_RPY_DESCRIPT_FLAGS_SCSI_IO_SUCCESS) {
+ 				if (megasas_dbg_lvl == 5)
+@@ -2437,14 +2635,48 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 			/* Fall thru and complete IO */
+ 		case MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST: /* LD-IO Path */
+ 			/* Map the FW Cmd Status */
+-			map_cmd_status(cmd_fusion, status, extStatus);
+-			scsi_io_req->RaidContext.raid_context.status = 0;
+-			scsi_io_req->RaidContext.raid_context.exStatus = 0;
+-			if (megasas_cmd_type(scmd_local) == READ_WRITE_LDIO)
+-				atomic_dec(&instance->ldio_outstanding);
+-			megasas_return_cmd_fusion(instance, cmd_fusion);
+-			scsi_dma_unmap(scmd_local);
+-			scmd_local->scsi_done(scmd_local);
++			/*
++			 * check for the raid 1/10 fast path writes
++			 */
++			if (r1_cmd &&  r1_cmd->is_raid_1_fp_write
++				&& r1_cmd->cmd_completed) {
++				/*
++				 * if the peer  Raid  1/10 fast path failed,
++				 * mark IO as failed to the scsi layer.
++				 * over write the current status by the failed
++				 * status makes sure that if any one of
++				 * command fails,return fail status to
++				 * scsi layer
++				 */
++				if (r1_cmd->io_request->RaidContext.raid_context.status !=
++								MFI_STAT_OK) {
++					status =
++					r1_cmd->io_request->RaidContext.raid_context.status;
++					extStatus =
++					r1_cmd->io_request->RaidContext.raid_context.exStatus;
++					data_length =
++						r1_cmd->io_request->DataLength;
++					sense = r1_cmd->sense;
++				}
++				r1_cmd->io_request->RaidContext.raid_context.status = 0;
++				r1_cmd->io_request->RaidContext.raid_context.exStatus = 0;
++				cmd_fusion->is_raid_1_fp_write = 0;
++				r1_cmd->is_raid_1_fp_write = 0;
++				r1_cmd->cmd_completed = false;
++				cmd_fusion->cmd_completed = false;
++				megasas_return_cmd_fusion(instance, r1_cmd);
++			}
++			if (!cmd_fusion->is_raid_1_fp_write) {
++				map_cmd_status(fusion, scmd_local, status,
++					extStatus, data_length, sense);
++				scsi_io_req->RaidContext.raid_context.status
++				= 0;
++				scsi_io_req->RaidContext.raid_context.exStatus
++				= 0;
++				megasas_return_cmd_fusion(instance, cmd_fusion);
++				scsi_dma_unmap(scmd_local);
++				scmd_local->scsi_done(scmd_local);
++			}
+ 			atomic_dec(&instance->fw_outstanding);
+ 
+ 			break;
+@@ -3493,7 +3725,7 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
+ {
+ 	int retval = SUCCESS, i, j, convert = 0;
+ 	struct megasas_instance *instance;
+-	struct megasas_cmd_fusion *cmd_fusion;
++	struct megasas_cmd_fusion *cmd_fusion, *mpt_cmd_fusion;
+ 	struct fusion_context *fusion;
+ 	u32 abs_state, status_reg, reset_adapter;
+ 	u32 io_timeout_in_crash_mode = 0;
+@@ -3568,6 +3800,18 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
+ 		/* Now return commands back to the OS */
+ 		for (i = 0 ; i < instance->max_scsi_cmds; i++) {
+ 			cmd_fusion = fusion->cmd_list[i];
++			/*check for extra commands issued by driver*/
++			if (instance->is_ventura) {
++				cmd_fusion->is_raid_1_fp_write = 0;
++				cmd_fusion->cmd_completed = false;
++				mpt_cmd_fusion =
++				fusion->cmd_list[i + instance->max_fw_cmds];
++				mpt_cmd_fusion->is_raid_1_fp_write = 0;
++				mpt_cmd_fusion->cmd_completed = false;
++				if (mpt_cmd_fusion->scmd)
++					megasas_return_cmd_fusion(instance,
++						mpt_cmd_fusion);
++			}
+ 			scmd_local = cmd_fusion->scmd;
+ 			if (cmd_fusion->scmd) {
+ 				scmd_local->result =
+@@ -3578,10 +3822,11 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
+ 				megasas_return_cmd_fusion(instance, cmd_fusion);
+ 				scsi_dma_unmap(scmd_local);
+ 				scmd_local->scsi_done(scmd_local);
+-				atomic_dec(&instance->fw_outstanding);
+ 			}
+ 		}
+ 
++		atomic_set(&instance->fw_outstanding, 0);
++
+ 		status_reg = instance->instancet->read_fw_status_reg(
+ 			instance->reg_set);
+ 		abs_state = status_reg & MFI_STATE_MASK;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index d9cf496..7a3c3d1 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -94,6 +94,7 @@ enum MR_RAID_FLAGS_IO_SUB_TYPE {
+ #define MEGASAS_FP_CMD_LEN	16
+ #define MEGASAS_FUSION_IN_RESET 0
+ #define THRESHOLD_REPLY_COUNT 50
++#define RAID_1_10_RMW_CMDS 3
+ #define JBOD_MAPS_COUNT	2
+ 
+ enum MR_FUSION_ADAPTER_TYPE {
+@@ -728,7 +729,9 @@ struct MR_SPAN_BLOCK_INFO {
+ struct MR_LD_RAID {
+ 	struct {
+ #if   defined(__BIG_ENDIAN_BITFIELD)
+-		u32     reserved4:5;
++		u32     reserved4:3;
++		u32     fp_cache_bypass_capable:1;
++		u32     fp_rmw_capable:1;
+ 		u32     fpBypassRegionLock:1;
+ 		u32     tmCapable:1;
+ 		u32	fpNonRWCapable:1;
+@@ -756,7 +759,9 @@ struct MR_LD_RAID {
+ 		u32	fpNonRWCapable:1;
+ 		u32     tmCapable:1;
+ 		u32     fpBypassRegionLock:1;
+-		u32     reserved4:5;
++		u32     fp_rmw_capable:1;
++		u32     fp_cache_bypass_capable:1;
++		u32     reserved4:3;
+ #endif
+ 	} capability;
+ 	__le32     reserved6;
+@@ -830,6 +835,8 @@ struct IO_REQUEST_INFO {
+ 	u64 start_row;
+ 	u8  span_arm;	/* span[7:5], arm[4:0] */
+ 	u8  pd_after_lb;
++	u16 r1_alt_dev_handle; /* raid 1/10 only */
++	bool is_raid_1_fp_write;
+ 	bool ra_capable;
+ };
+ 
+@@ -883,6 +890,10 @@ struct megasas_cmd_fusion {
+ 	u32 index;
+ 	u8 pd_r1_lb;
+ 	struct completion done;
++	bool is_raid_1_fp_write;
++	u16 r1_alt_dev_handle; /* raid 1/10 only*/
++	bool cmd_completed;  /* raid 1/10 fp writes status holder */
++
+ };
+ 
+ struct LD_LOAD_BALANCE_INFO {
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0005-scsi-mpt3sas-Bump-driver-version-as-14.100.00.00.patch b/SOURCES/centos-linux-3.10-0005-scsi-mpt3sas-Bump-driver-version-as-14.100.00.00.patch
new file mode 100644
index 0000000..d6d2120
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0005-scsi-mpt3sas-Bump-driver-version-as-14.100.00.00.patch
@@ -0,0 +1,31 @@
+From 0815c65e49489bdbfbd0f90e4a2b78184a603eea Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:36 +0530
+Subject: [PATCH 05/11] scsi: mpt3sas: Bump driver version as "14.100.00.00"
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index f2fa742..66cfa0f 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -73,8 +73,8 @@
+ #define MPT3SAS_DRIVER_NAME		"mpt3sas"
+ #define MPT3SAS_AUTHOR "Avago Technologies <MPT-FusionLinux.pdl@avagotech.com>"
+ #define MPT3SAS_DESCRIPTION	"LSI MPT Fusion SAS 3.0 Device Driver"
+-#define MPT3SAS_DRIVER_VERSION		"13.100.00.00"
+-#define MPT3SAS_MAJOR_VERSION		13
++#define MPT3SAS_DRIVER_VERSION		"14.100.00.00"
++#define MPT3SAS_MAJOR_VERSION		14
+ #define MPT3SAS_MINOR_VERSION		100
+ #define MPT3SAS_BUILD_VERSION		0
+ #define MPT3SAS_RELEASE_VERSION	00
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0006-scsi-megaraid_sas-Dynamic-Raid-Map-Changes-for-SAS3..patch b/SOURCES/centos-linux-3.10-0006-scsi-megaraid_sas-Dynamic-Raid-Map-Changes-for-SAS3..patch
new file mode 100644
index 0000000..ed725a1
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0006-scsi-megaraid_sas-Dynamic-Raid-Map-Changes-for-SAS3..patch
@@ -0,0 +1,1332 @@
+From 88b3ac2949cb535c5213324f33e9745d769f7dad Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:48 -0500
+Subject: [PATCH 06/11] scsi: megaraid_sas: Dynamic Raid Map Changes for SAS3.5
+ Generic Megaraid Controllers
+
+SAS3.5 Generic Megaraid Controllers FW will support new dynamic RaidMap to have different
+sizes for different number of supported VDs.
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        |   7 +
+ drivers/scsi/megaraid/megaraid_sas_base.c   |  60 ++++--
+ drivers/scsi/megaraid/megaraid_sas_fp.c     | 301 ++++++++++++++++++++++++----
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 225 ++++++++++++++++-----
+ drivers/scsi/megaraid/megaraid_sas_fusion.h | 240 ++++++++++++++++++----
+ 5 files changed, 695 insertions(+), 138 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index 0b4d37b..d5205c4 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -1434,6 +1434,12 @@ enum FW_BOOT_CONTEXT {
+ #define MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT    14
+ #define MR_MAX_MSIX_REG_ARRAY                   16
+ #define MR_RDPQ_MODE_OFFSET			0X00800000
++
++#define MR_MAX_RAID_MAP_SIZE_OFFSET_SHIFT	16
++#define MR_MAX_RAID_MAP_SIZE_MASK		0x1FF
++#define MR_MIN_MAP_SIZE				0x10000
++/* 64k */
++
+ #define MR_CAN_HANDLE_SYNC_CACHE_OFFSET		0X01000000
+ 
+ /*
+@@ -2152,6 +2158,7 @@ struct megasas_instance {
+ 	bool fw_sync_cache_support;
+ 	bool is_ventura;
+ 	bool msix_combined;
++	u16 max_raid_mapsize;
+ };
+ struct MR_LD_VF_MAP {
+ 	u32 size;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index 0722286..1d8cf03 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -4457,8 +4457,7 @@ megasas_ld_list_query(struct megasas_instance *instance, u8 query_type)
+ static void megasas_update_ext_vd_details(struct megasas_instance *instance)
+ {
+ 	struct fusion_context *fusion;
+-	u32 old_map_sz;
+-	u32 new_map_sz;
++	u32 ventura_map_sz = 0;
+ 
+ 	fusion = instance->ctrl_context;
+ 	/* For MFI based controllers return dummy success */
+@@ -4488,21 +4487,38 @@ static void megasas_update_ext_vd_details(struct megasas_instance *instance)
+ 		instance->supportmax256vd ? "Extended VD(240 VD)firmware" :
+ 		"Legacy(64 VD) firmware");
+ 
+-	old_map_sz = sizeof(struct MR_FW_RAID_MAP) +
+-				(sizeof(struct MR_LD_SPAN_MAP) *
+-				(instance->fw_supported_vd_count - 1));
+-	new_map_sz = sizeof(struct MR_FW_RAID_MAP_EXT);
+-	fusion->drv_map_sz = sizeof(struct MR_DRV_RAID_MAP) +
+-				(sizeof(struct MR_LD_SPAN_MAP) *
+-				(instance->drv_supported_vd_count - 1));
+-
+-	fusion->max_map_sz = max(old_map_sz, new_map_sz);
++	if (instance->max_raid_mapsize) {
++		ventura_map_sz = instance->max_raid_mapsize *
++						MR_MIN_MAP_SIZE; /* 64k */
++		fusion->current_map_sz = ventura_map_sz;
++		fusion->max_map_sz = ventura_map_sz;
++	} else {
++		fusion->old_map_sz =  sizeof(struct MR_FW_RAID_MAP) +
++					(sizeof(struct MR_LD_SPAN_MAP) *
++					(instance->fw_supported_vd_count - 1));
++		fusion->new_map_sz =  sizeof(struct MR_FW_RAID_MAP_EXT);
+ 
++		fusion->max_map_sz =
++			max(fusion->old_map_sz, fusion->new_map_sz);
+ 
+-	if (instance->supportmax256vd)
+-		fusion->current_map_sz = new_map_sz;
+-	else
+-		fusion->current_map_sz = old_map_sz;
++		if (instance->supportmax256vd)
++			fusion->current_map_sz = fusion->new_map_sz;
++		else
++			fusion->current_map_sz = fusion->old_map_sz;
++	}
++	/* irrespective of FW raid maps, driver raid map is constant */
++	fusion->drv_map_sz = sizeof(struct MR_DRV_RAID_MAP_ALL);
++
++#if VD_EXT_DEBUG
++	dev_info(&instance->pdev->dev, "instance->max_raid_mapsize 0x%x\n ",
++		instance->max_raid_mapsize);
++	dev_info(&instance->pdev->dev, "new_map_sz = 0x%x, old_map_sz = 0x%x\n",
++		fusion->new_map_sz, fusion->old_map_sz);
++	dev_info(&instance->pdev->dev, "ventura_map_sz = 0x%x, current_map_sz = 0x%x\n",
++		ventura_map_sz, fusion->current_map_sz);
++	dev_info(&instance->pdev->dev, "fusion->drv_map_sz =0x%x, size of driver raid map 0x%lx\n",
++		fusion->drv_map_sz, sizeof(struct MR_DRV_RAID_MAP_ALL));
++#endif
+ }
+ 
+ /**
+@@ -5043,7 +5059,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ {
+ 	u32 max_sectors_1;
+ 	u32 max_sectors_2;
+-	u32 tmp_sectors, msix_enable, scratch_pad_2;
++	u32 tmp_sectors, msix_enable, scratch_pad_2, scratch_pad_3;
+ 	resource_size_t base_addr;
+ 	struct megasas_register_set __iomem *reg_set;
+ 	struct megasas_ctrl_info *ctrl_info = NULL;
+@@ -5119,7 +5135,17 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 			goto fail_ready_state;
+ 	}
+ 
+-
++	if (instance->is_ventura) {
++		scratch_pad_3 =
++			readl(&instance->reg_set->outbound_scratch_pad_3);
++#if VD_EXT_DEBUG
++		dev_info(&instance->pdev->dev, "scratch_pad3 0x%x\n",
++			scratch_pad_3);
++#endif
++		instance->max_raid_mapsize = ((scratch_pad_3 >>
++			MR_MAX_RAID_MAP_SIZE_OFFSET_SHIFT) &
++			MR_MAX_RAID_MAP_SIZE_MASK);
++	}
+ 
+ 	/* Check if MSI-X is supported while in ready state */
+ 	msix_enable = (instance->instancet->read_fw_status_reg(reg_set) &
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c b/drivers/scsi/megaraid/megaraid_sas_fp.c
+index 3644dbc..e45affe 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fp.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fp.c
+@@ -179,18 +179,204 @@ void MR_PopulateDrvRaidMap(struct megasas_instance *instance)
+ 	struct fusion_context *fusion = instance->ctrl_context;
+ 	struct MR_FW_RAID_MAP_ALL     *fw_map_old    = NULL;
+ 	struct MR_FW_RAID_MAP         *pFwRaidMap    = NULL;
+-	int i;
++	int i, j;
+ 	u16 ld_count;
++	struct MR_FW_RAID_MAP_DYNAMIC *fw_map_dyn;
++	struct MR_FW_RAID_MAP_EXT *fw_map_ext;
++	struct MR_RAID_MAP_DESC_TABLE *desc_table;
+ 
+ 
+ 	struct MR_DRV_RAID_MAP_ALL *drv_map =
+ 			fusion->ld_drv_map[(instance->map_id & 1)];
+ 	struct MR_DRV_RAID_MAP *pDrvRaidMap = &drv_map->raidMap;
++	void *raid_map_data = NULL;
++
++	memset(drv_map, 0, fusion->drv_map_sz);
++	memset(pDrvRaidMap->ldTgtIdToLd,
++		0xff, (sizeof(u16) * MAX_LOGICAL_DRIVES_DYN));
++
++	if (instance->max_raid_mapsize) {
++		fw_map_dyn = fusion->ld_map[(instance->map_id & 1)];
++#if VD_EXT_DEBUG
++		dev_dbg(&instance->pdev->dev, "raidMapSize 0x%x fw_map_dyn->descTableOffset 0x%x\n",
++			le32_to_cpu(fw_map_dyn->raid_map_size),
++			le32_to_cpu(fw_map_dyn->desc_table_offset));
++		dev_dbg(&instance->pdev->dev, "descTableSize 0x%x descTableNumElements 0x%x\n",
++			le32_to_cpu(fw_map_dyn->desc_table_size),
++			le32_to_cpu(fw_map_dyn->desc_table_num_elements));
++		dev_dbg(&instance->pdev->dev, "drv map %p ldCount %d\n",
++			drv_map, fw_map_dyn->ld_count);
++#endif
++		desc_table =
++		(struct MR_RAID_MAP_DESC_TABLE *)((void *)fw_map_dyn + le32_to_cpu(fw_map_dyn->desc_table_offset));
++		if (desc_table != fw_map_dyn->raid_map_desc_table)
++			dev_dbg(&instance->pdev->dev, "offsets of desc table are not matching desc %p original %p\n",
++				desc_table, fw_map_dyn->raid_map_desc_table);
++
++		ld_count = (u16)le16_to_cpu(fw_map_dyn->ld_count);
++		pDrvRaidMap->ldCount = (__le16)cpu_to_le16(ld_count);
++		pDrvRaidMap->fpPdIoTimeoutSec =
++			fw_map_dyn->fp_pd_io_timeout_sec;
++		pDrvRaidMap->totalSize = sizeof(struct MR_DRV_RAID_MAP_ALL);
++		/* point to actual data starting point*/
++		raid_map_data = (void *)fw_map_dyn +
++			le32_to_cpu(fw_map_dyn->desc_table_offset) +
++			le32_to_cpu(fw_map_dyn->desc_table_size);
++
++		for (i = 0; i < le32_to_cpu(fw_map_dyn->desc_table_num_elements); ++i) {
++
++#if VD_EXT_DEBUG
++			dev_dbg(&instance->pdev->dev, "desc table %p\n",
++				desc_table);
++			dev_dbg(&instance->pdev->dev, "raidmap type %d, raidmapOffset 0x%x\n",
++				desc_table->raid_map_desc_type,
++				desc_table->raid_map_desc_offset);
++			dev_dbg(&instance->pdev->dev, "raid map number of elements 0%x, raidmapsize 0x%x\n",
++				desc_table->raid_map_desc_elements,
++				desc_table->raid_map_desc_buffer_size);
++#endif
++			switch (le32_to_cpu(desc_table->raid_map_desc_type)) {
++			case RAID_MAP_DESC_TYPE_DEVHDL_INFO:
++				fw_map_dyn->dev_hndl_info =
++				(struct MR_DEV_HANDLE_INFO *)(raid_map_data + le32_to_cpu(desc_table->raid_map_desc_offset));
++#if VD_EXT_DEBUG
++				dev_dbg(&instance->pdev->dev, "devHndlInfo  address %p\n",
++					fw_map_dyn->dev_hndl_info);
++#endif
++				memcpy(pDrvRaidMap->devHndlInfo,
++				fw_map_dyn->dev_hndl_info,
++				sizeof(struct MR_DEV_HANDLE_INFO) *
++				le32_to_cpu(desc_table->raid_map_desc_elements));
++			break;
++			case RAID_MAP_DESC_TYPE_TGTID_INFO:
++				fw_map_dyn->ld_tgt_id_to_ld =
++				(u16 *) (raid_map_data +
++				le32_to_cpu(desc_table->raid_map_desc_offset));
++#if VD_EXT_DEBUG
++			dev_dbg(&instance->pdev->dev, "ldTgtIdToLd  address %p\n",
++				fw_map_dyn->ld_tgt_id_to_ld);
++#endif
++			for (j = 0; j < le32_to_cpu(desc_table->raid_map_desc_elements); j++) {
++				pDrvRaidMap->ldTgtIdToLd[j] =
++				fw_map_dyn->ld_tgt_id_to_ld[j];
++#if VD_EXT_DEBUG
++				dev_dbg(&instance->pdev->dev, " %d drv ldTgtIdToLd %d\n",
++					j, pDrvRaidMap->ldTgtIdToLd[j]);
++#endif
++			}
++			break;
++			case RAID_MAP_DESC_TYPE_ARRAY_INFO:
++				fw_map_dyn->ar_map_info =
++				(struct MR_ARRAY_INFO *)
++				(raid_map_data + le32_to_cpu(desc_table->raid_map_desc_offset));
++#if VD_EXT_DEBUG
++				dev_dbg(&instance->pdev->dev, "arMapInfo  address %p\n",
++					fw_map_dyn->ar_map_info);
++#endif
++
++				memcpy(pDrvRaidMap->arMapInfo,
++				fw_map_dyn->ar_map_info,
++				sizeof(struct MR_ARRAY_INFO) * le32_to_cpu(desc_table->raid_map_desc_elements));
++			break;
++			case RAID_MAP_DESC_TYPE_SPAN_INFO:
++				fw_map_dyn->ld_span_map =
++				(struct MR_LD_SPAN_MAP *)
++				(raid_map_data + le32_to_cpu(desc_table->raid_map_desc_offset));
++				memcpy(pDrvRaidMap->ldSpanMap,
++				fw_map_dyn->ld_span_map,
++				sizeof(struct MR_LD_SPAN_MAP) * le32_to_cpu(desc_table->raid_map_desc_elements));
++#if VD_EXT_DEBUG
++				dev_dbg(&instance->pdev->dev, "ldSpanMap  address %p\n",
++					fw_map_dyn->ld_span_map);
++				dev_dbg(&instance->pdev->dev, "MR_LD_SPAN_MAP size 0x%lx\n",
++					sizeof(struct MR_LD_SPAN_MAP));
++				for (j = 0; j < ld_count; j++) {
++					dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) : fw_map_dyn->ldSpanMap[%d].ldRaid.targetId 0x%x\n",
++					j, j, fw_map_dyn->ld_span_map[j].ldRaid.targetId);
++					dev_dbg(&instance->pdev->dev, "fw_map_dyn->ldSpanMap[%d].ldRaid.seqNum 0x%x\n",
++					j, fw_map_dyn->ld_span_map[j].ldRaid.seqNum);
++					dev_dbg(&instance->pdev->dev, "fw_map_dyn->ld_span_map[%d].ldRaid.rowSize 0x%x\n",
++					j, (u32)fw_map_dyn->ld_span_map[j].ldRaid.rowSize);
++
++					dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) :pDrvRaidMap->ldSpanMap[%d].ldRaid.targetId 0x%x\n",
++					j, j, pDrvRaidMap->ldSpanMap[j].ldRaid.targetId);
++					dev_dbg(&instance->pdev->dev, "DrvRaidMap->ldSpanMap[%d].ldRaid.seqNum 0x%x\n",
++					j, pDrvRaidMap->ldSpanMap[j].ldRaid.seqNum);
++					dev_dbg(&instance->pdev->dev, "pDrvRaidMap->ldSpanMap[%d].ldRaid.rowSize 0x%x\n",
++					j, (u32)pDrvRaidMap->ldSpanMap[j].ldRaid.rowSize);
++
++					dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) : drv raid map all %p\n",
++					instance->unique_id, drv_map);
++					dev_dbg(&instance->pdev->dev, "raid map %p LD RAID MAP %p/%p\n",
++					pDrvRaidMap,
++					&fw_map_dyn->ld_span_map[j].ldRaid,
++					&pDrvRaidMap->ldSpanMap[j].ldRaid);
++				}
++#endif
++			break;
++			default:
++				dev_dbg(&instance->pdev->dev, "wrong number of desctableElements %d\n",
++					fw_map_dyn->desc_table_num_elements);
++			}
++			++desc_table;
++		}
++
++	} else if (instance->supportmax256vd) {
++		fw_map_ext =
++		(struct MR_FW_RAID_MAP_EXT *) fusion->ld_map[(instance->map_id & 1)];
++		ld_count = (u16)le16_to_cpu(fw_map_ext->ldCount);
++		if (ld_count > MAX_LOGICAL_DRIVES_EXT) {
++			dev_dbg(&instance->pdev->dev, "megaraid_sas: LD count exposed in RAID map in not valid\n");
++			return;
++		}
++#if VD_EXT_DEBUG
++		for (i = 0; i < ld_count; i++) {
++			dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) :Index 0x%x\n",
++				instance->unique_id, i);
++			dev_dbg(&instance->pdev->dev, "Target Id 0x%x\n",
++				fw_map_ext->ldSpanMap[i].ldRaid.targetId);
++			dev_dbg(&instance->pdev->dev, "Seq Num 0x%x Size 0/%llx\n",
++				fw_map_ext->ldSpanMap[i].ldRaid.seqNum,
++				fw_map_ext->ldSpanMap[i].ldRaid.size);
++		}
++#endif
++
++		pDrvRaidMap->ldCount = (__le16)cpu_to_le16(ld_count);
++		pDrvRaidMap->fpPdIoTimeoutSec = fw_map_ext->fpPdIoTimeoutSec;
++		for (i = 0; i < (MAX_LOGICAL_DRIVES_EXT); i++)
++			pDrvRaidMap->ldTgtIdToLd[i] =
++				(u16)fw_map_ext->ldTgtIdToLd[i];
++		memcpy(pDrvRaidMap->ldSpanMap, fw_map_ext->ldSpanMap,
++				sizeof(struct MR_LD_SPAN_MAP) * ld_count);
++#if VD_EXT_DEBUG
++		for (i = 0; i < ld_count; i++) {
++			dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) : fw_map_ext->ldSpanMap[%d].ldRaid.targetId 0x%x\n",
++			i, i, fw_map_ext->ldSpanMap[i].ldRaid.targetId);
++			dev_dbg(&instance->pdev->dev, "fw_map_ext->ldSpanMap[%d].ldRaid.seqNum 0x%x\n",
++			i, fw_map_ext->ldSpanMap[i].ldRaid.seqNum);
++			dev_dbg(&instance->pdev->dev, "fw_map_ext->ldSpanMap[%d].ldRaid.rowSize 0x%x\n",
++			i, (u32)fw_map_ext->ldSpanMap[i].ldRaid.rowSize);
++
++			dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) : pDrvRaidMap->ldSpanMap[%d].ldRaid.targetId 0x%x\n",
++			i, i, pDrvRaidMap->ldSpanMap[i].ldRaid.targetId);
++			dev_dbg(&instance->pdev->dev, "pDrvRaidMap->ldSpanMap[%d].ldRaid.seqNum 0x%x\n",
++			i, pDrvRaidMap->ldSpanMap[i].ldRaid.seqNum);
++			dev_dbg(&instance->pdev->dev, "pDrvRaidMap->ldSpanMap[%d].ldRaid.rowSize 0x%x\n",
++			i, (u32)pDrvRaidMap->ldSpanMap[i].ldRaid.rowSize);
++
++			dev_dbg(&instance->pdev->dev, "megaraid_sas(%d) : drv raid map all %p\n",
++			instance->unique_id, drv_map);
++			dev_dbg(&instance->pdev->dev, "raid map %p LD RAID MAP %p %p\n",
++			pDrvRaidMap, &fw_map_ext->ldSpanMap[i].ldRaid,
++			&pDrvRaidMap->ldSpanMap[i].ldRaid);
++		}
++#endif
++		memcpy(pDrvRaidMap->arMapInfo, fw_map_ext->arMapInfo,
++			sizeof(struct MR_ARRAY_INFO) * MAX_API_ARRAYS_EXT);
++		memcpy(pDrvRaidMap->devHndlInfo, fw_map_ext->devHndlInfo,
++			sizeof(struct MR_DEV_HANDLE_INFO) *
++					MAX_RAIDMAP_PHYSICAL_DEVICES);
+ 
+-	if (instance->supportmax256vd) {
+-		memcpy(fusion->ld_drv_map[instance->map_id & 1],
+-			fusion->ld_map[instance->map_id & 1],
+-			fusion->current_map_sz);
+ 		/* New Raid map will not set totalSize, so keep expected value
+ 		 * for legacy code in ValidateMapInfo
+ 		 */
+@@ -213,16 +399,12 @@ void MR_PopulateDrvRaidMap(struct megasas_instance *instance)
+ 		}
+ #endif
+ 
+-		memset(drv_map, 0, fusion->drv_map_sz);
+ 		pDrvRaidMap->totalSize = pFwRaidMap->totalSize;
+ 		pDrvRaidMap->ldCount = (__le16)cpu_to_le16(ld_count);
+ 		pDrvRaidMap->fpPdIoTimeoutSec = pFwRaidMap->fpPdIoTimeoutSec;
+ 		for (i = 0; i < MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS; i++)
+ 			pDrvRaidMap->ldTgtIdToLd[i] =
+ 				(u8)pFwRaidMap->ldTgtIdToLd[i];
+-		for (i = (MAX_RAIDMAP_LOGICAL_DRIVES + MAX_RAIDMAP_VIEWS);
+-			i < MAX_LOGICAL_DRIVES_EXT; i++)
+-			pDrvRaidMap->ldTgtIdToLd[i] = 0xff;
+ 		for (i = 0; i < ld_count; i++) {
+ 			pDrvRaidMap->ldSpanMap[i] = pFwRaidMap->ldSpanMap[i];
+ #if VD_EXT_DEBUG
+@@ -279,7 +461,9 @@ u8 MR_ValidateMapInfo(struct megasas_instance *instance)
+ 	lbInfo = fusion->load_balance_info;
+ 	ldSpanInfo = fusion->log_to_span;
+ 
+-	if (instance->supportmax256vd)
++	if (instance->max_raid_mapsize)
++		expected_size = sizeof(struct MR_DRV_RAID_MAP_ALL);
++	else if (instance->supportmax256vd)
+ 		expected_size = sizeof(struct MR_FW_RAID_MAP_EXT);
+ 	else
+ 		expected_size =
+@@ -287,8 +471,10 @@ u8 MR_ValidateMapInfo(struct megasas_instance *instance)
+ 			(sizeof(struct MR_LD_SPAN_MAP) * le16_to_cpu(pDrvRaidMap->ldCount)));
+ 
+ 	if (le32_to_cpu(pDrvRaidMap->totalSize) != expected_size) {
+-		dev_err(&instance->pdev->dev, "map info structure size 0x%x is not matching with ld count\n",
+-		       (unsigned int) expected_size);
++		dev_dbg(&instance->pdev->dev, "megasas: map info structure size 0x%x",
++			le32_to_cpu(pDrvRaidMap->totalSize));
++		dev_dbg(&instance->pdev->dev, "is not matching expected size 0x%x\n",
++			(unsigned int) expected_size);
+ 		dev_err(&instance->pdev->dev, "megasas: span map %x, pDrvRaidMap->totalSize : %x\n",
+ 			(unsigned int)sizeof(struct MR_LD_SPAN_MAP),
+ 			le32_to_cpu(pDrvRaidMap->totalSize));
+@@ -787,7 +973,7 @@ static u8 mr_spanset_get_phy_params(struct megasas_instance *instance, u32 ld,
+ 			((fusion->adapter_type == THUNDERBOLT_SERIES)  ||
+ 			((fusion->adapter_type == INVADER_SERIES) &&
+ 			(raid->regTypeReqOnRead != REGION_TYPE_UNUSED))))
+-			pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
++			pRAID_Context->reg_lock_flags = REGION_TYPE_EXCLUSIVE;
+ 		else if (raid->level == 1) {
+ 			pd = MR_ArPdGet(arRef, physArm + 1, map);
+ 			if (pd != MR_PD_INVALID)
+@@ -796,9 +982,16 @@ static u8 mr_spanset_get_phy_params(struct megasas_instance *instance, u32 ld,
+ 	}
+ 
+ 	*pdBlock += stripRef + le64_to_cpu(MR_LdSpanPtrGet(ld, span, map)->startBlk);
+-	pRAID_Context->spanArm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) |
+-					physArm;
+-	io_info->span_arm = pRAID_Context->spanArm;
++	if (instance->is_ventura) {
++		((struct RAID_CONTEXT_G35 *) pRAID_Context)->span_arm =
++			(span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
++		io_info->span_arm =
++			(span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
++	} else {
++		pRAID_Context->span_arm =
++			(span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
++		io_info->span_arm = pRAID_Context->span_arm;
++	}
+ 	return retval;
+ }
+ 
+@@ -890,7 +1083,7 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow,
+ 			((fusion->adapter_type == THUNDERBOLT_SERIES)  ||
+ 			((fusion->adapter_type == INVADER_SERIES) &&
+ 			(raid->regTypeReqOnRead != REGION_TYPE_UNUSED))))
+-			pRAID_Context->regLockFlags = REGION_TYPE_EXCLUSIVE;
++			pRAID_Context->reg_lock_flags = REGION_TYPE_EXCLUSIVE;
+ 		else if (raid->level == 1) {
+ 			/* Get alternate Pd. */
+ 			pd = MR_ArPdGet(arRef, physArm + 1, map);
+@@ -901,9 +1094,16 @@ u8 MR_GetPhyParams(struct megasas_instance *instance, u32 ld, u64 stripRow,
+ 	}
+ 
+ 	*pdBlock += stripRef + le64_to_cpu(MR_LdSpanPtrGet(ld, span, map)->startBlk);
+-	pRAID_Context->spanArm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) |
+-		physArm;
+-	io_info->span_arm = pRAID_Context->spanArm;
++	if (instance->is_ventura) {
++		((struct RAID_CONTEXT_G35 *) pRAID_Context)->span_arm =
++				(span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
++		io_info->span_arm =
++				(span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
++	} else {
++		pRAID_Context->span_arm =
++			(span << RAID_CTX_SPANARM_SPAN_SHIFT) | physArm;
++		io_info->span_arm = pRAID_Context->span_arm;
++	}
+ 	return retval;
+ }
+ 
+@@ -1107,20 +1307,20 @@ MR_BuildRaidContext(struct megasas_instance *instance,
+ 			regSize += stripSize;
+ 	}
+ 
+-	pRAID_Context->timeoutValue =
++	pRAID_Context->timeout_value =
+ 		cpu_to_le16(raid->fpIoTimeoutForLd ?
+ 			    raid->fpIoTimeoutForLd :
+ 			    map->raidMap.fpPdIoTimeoutSec);
+ 	if (fusion->adapter_type == INVADER_SERIES)
+-		pRAID_Context->regLockFlags = (isRead) ?
++		pRAID_Context->reg_lock_flags = (isRead) ?
+ 			raid->regTypeReqOnRead : raid->regTypeReqOnWrite;
+-	else
+-		pRAID_Context->regLockFlags = (isRead) ?
++	else if (!instance->is_ventura)
++		pRAID_Context->reg_lock_flags = (isRead) ?
+ 			REGION_TYPE_SHARED_READ : raid->regTypeReqOnWrite;
+-	pRAID_Context->VirtualDiskTgtId = raid->targetId;
+-	pRAID_Context->regLockRowLBA    = cpu_to_le64(regStart);
+-	pRAID_Context->regLockLength    = cpu_to_le32(regSize);
+-	pRAID_Context->configSeqNum	= raid->seqNum;
++	pRAID_Context->virtual_disk_tgt_id = raid->targetId;
++	pRAID_Context->reg_lock_row_lba    = cpu_to_le64(regStart);
++	pRAID_Context->reg_lock_length    = cpu_to_le32(regSize);
++	pRAID_Context->config_seq_num	= raid->seqNum;
+ 	/* save pointer to raid->LUN array */
+ 	*raidLUN = raid->LUN;
+ 
+@@ -1138,6 +1338,13 @@ MR_BuildRaidContext(struct megasas_instance *instance,
+ 		/* If IO on an invalid Pd, then FP is not possible.*/
+ 		if (io_info->devHandle == cpu_to_le16(MR_PD_INVALID))
+ 			io_info->fpOkForIo = FALSE;
++		/* if FP possible, set the SLUD bit in
++		 *  regLockFlags for ventura
++		 */
++		else if ((instance->is_ventura) && (!isRead) &&
++			(raid->writeMode == MR_RL_WRITE_BACK_MODE) &&
++			(raid->capability.fp_cache_bypass_capable))
++			((struct RAID_CONTEXT_G35 *) pRAID_Context)->routing_flags.bits.sld = 1;
+ 		/* set raid 1/10 fast path write capable bit in io_info */
+ 		if (io_info->fpOkForIo &&
+ 		    (io_info->r1_alt_dev_handle != MR_PD_INVALID) &&
+@@ -1317,6 +1524,7 @@ u8 megasas_get_best_arm_pd(struct megasas_instance *instance,
+ 	struct fusion_context *fusion;
+ 	struct MR_LD_RAID  *raid;
+ 	struct MR_DRV_RAID_MAP_ALL *drv_map;
++	u16	pd1_dev_handle;
+ 	u16     pend0, pend1, ld;
+ 	u64     diff0, diff1;
+ 	u8      bestArm, pd0, pd1, span, arm;
+@@ -1342,23 +1550,36 @@ u8 megasas_get_best_arm_pd(struct megasas_instance *instance,
+ 	pd1 = MR_ArPdGet(arRef, (arm + 1) >= span_row_size ?
+ 		(arm + 1 - span_row_size) : arm + 1, drv_map);
+ 
+-	/* get the pending cmds for the data and mirror arms */
+-	pend0 = atomic_read(&lbInfo->scsi_pending_cmds[pd0]);
+-	pend1 = atomic_read(&lbInfo->scsi_pending_cmds[pd1]);
++	/* Get PD1 Dev Handle */
++
++	pd1_dev_handle = MR_PdDevHandleGet(pd1, drv_map);
++
++	if (pd1_dev_handle == MR_PD_INVALID) {
++		bestArm = arm;
++	} else {
++		/* get the pending cmds for the data and mirror arms */
++		pend0 = atomic_read(&lbInfo->scsi_pending_cmds[pd0]);
++		pend1 = atomic_read(&lbInfo->scsi_pending_cmds[pd1]);
+ 
+-	/* Determine the disk whose head is nearer to the req. block */
+-	diff0 = ABS_DIFF(block, lbInfo->last_accessed_block[pd0]);
+-	diff1 = ABS_DIFF(block, lbInfo->last_accessed_block[pd1]);
+-	bestArm = (diff0 <= diff1 ? arm : arm ^ 1);
++		/* Determine the disk whose head is nearer to the req. block */
++		diff0 = ABS_DIFF(block, lbInfo->last_accessed_block[pd0]);
++		diff1 = ABS_DIFF(block, lbInfo->last_accessed_block[pd1]);
++		bestArm = (diff0 <= diff1 ? arm : arm ^ 1);
+ 
+-	if ((bestArm == arm && pend0 > pend1 + lb_pending_cmds)  ||
++		/* Make balance count from 16 to 4 to
++		 *  keep driver in sync with Firmware
++		 */
++		if ((bestArm == arm && pend0 > pend1 + lb_pending_cmds)  ||
+ 			(bestArm != arm && pend1 > pend0 + lb_pending_cmds))
+-		bestArm ^= 1;
++			bestArm ^= 1;
++
++		/* Update the last accessed block on the correct pd */
++		io_info->span_arm =
++			(span << RAID_CTX_SPANARM_SPAN_SHIFT) | bestArm;
++		io_info->pd_after_lb = (bestArm == arm) ? pd0 : pd1;
++	}
+ 
+-	/* Update the last accessed block on the correct pd */
+-	io_info->pd_after_lb = (bestArm == arm) ? pd0 : pd1;
+ 	lbInfo->last_accessed_block[io_info->pd_after_lb] = block + count - 1;
+-	io_info->span_arm = (span << RAID_CTX_SPANARM_SPAN_SHIFT) | bestArm;
+ #if SPAN_DEBUG
+ 	if (arm != bestArm)
+ 		dev_dbg(&instance->pdev->dev, "LSI Debug R1 Load balance "
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index b146cd1..178f166 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -1829,7 +1829,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 			  struct megasas_cmd_fusion *cmd)
+ {
+ 	u8 fp_possible;
+-	u32 start_lba_lo, start_lba_hi, device_id, datalength = 0;
++	u32 start_lba_lo, start_lba_hi, device_id, datalength = 0, ld;
+ 	struct MPI2_RAID_SCSI_IO_REQUEST *io_request;
+ 	union MEGASAS_REQUEST_DESCRIPTOR_UNION *req_desc;
+ 	struct IO_REQUEST_INFO io_info;
+@@ -1837,16 +1837,18 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 	struct MR_DRV_RAID_MAP_ALL *local_map_ptr;
+ 	u8 *raidLUN;
+ 	unsigned long spinlock_flags;
++	union RAID_CONTEXT_UNION *praid_context;
++	struct MR_LD_RAID *raid;
+ 
+ 	device_id = MEGASAS_DEV_INDEX(scp);
+ 
+ 	fusion = instance->ctrl_context;
+ 
+ 	io_request = cmd->io_request;
+-	io_request->RaidContext.raid_context.VirtualDiskTgtId =
++	io_request->RaidContext.raid_context.virtual_disk_tgt_id =
+ 		cpu_to_le16(device_id);
+ 	io_request->RaidContext.raid_context.status = 0;
+-	io_request->RaidContext.raid_context.exStatus = 0;
++	io_request->RaidContext.raid_context.ex_status = 0;
+ 
+ 	req_desc = (union MEGASAS_REQUEST_DESCRIPTOR_UNION *)cmd->request_desc;
+ 
+@@ -1915,10 +1917,12 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 		io_info.isRead = 1;
+ 
+ 	local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)];
++	ld = MR_TargetIdToLdGet(device_id, local_map_ptr);
++	raid = MR_LdRaidGet(ld, local_map_ptr);
+ 
+ 	if ((MR_TargetIdToLdGet(device_id, local_map_ptr) >=
+ 		instance->fw_supported_vd_count) || (!fusion->fast_path_io)) {
+-		io_request->RaidContext.raid_context.regLockFlags  = 0;
++		io_request->RaidContext.raid_context.reg_lock_flags  = 0;
+ 		fp_possible = 0;
+ 	} else {
+ 		if (MR_BuildRaidContext(instance, &io_info,
+@@ -1945,6 +1949,8 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 			fp_possible = false;
+ 	}
+ 
++	praid_context = &io_request->RaidContext;
++
+ 	if (fp_possible) {
+ 		megasas_set_pd_lba(io_request, scp->cmd_len, &io_info, scp,
+ 				   local_map_ptr, start_lba_lo);
+@@ -1953,18 +1959,25 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 			(MPI2_REQ_DESCRIPT_FLAGS_FP_IO
+ 			 << MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+ 		if (fusion->adapter_type == INVADER_SERIES) {
+-			if (io_request->RaidContext.raid_context.regLockFlags ==
++			if (io_request->RaidContext.raid_context.reg_lock_flags ==
+ 			    REGION_TYPE_UNUSED)
+ 				cmd->request_desc->SCSIIO.RequestFlags =
+ 					(MEGASAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
+ 					MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+-			io_request->RaidContext.raid_context.Type
++			io_request->RaidContext.raid_context.type
+ 				= MPI2_TYPE_CUDA;
+ 			io_request->RaidContext.raid_context.nseg = 0x1;
+ 			io_request->IoFlags |= cpu_to_le16(MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH);
+-			io_request->RaidContext.raid_context.regLockFlags |=
++			io_request->RaidContext.raid_context.reg_lock_flags |=
+ 			  (MR_RL_FLAGS_GRANT_DESTINATION_CUDA |
+ 			   MR_RL_FLAGS_SEQ_NUM_ENABLE);
++		} else if (instance->is_ventura) {
++			io_request->RaidContext.raid_context_g35.type
++				= MPI2_TYPE_CUDA;
++			io_request->RaidContext.raid_context_g35.nseg = 0x1;
++			io_request->RaidContext.raid_context_g35.routing_flags.bits.sqn = 1;
++			io_request->IoFlags |=
++			cpu_to_le16(MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH);
+ 		}
+ 		if ((fusion->load_balance_info[device_id].loadBalanceFlag) &&
+ 		    (io_info.isRead)) {
+@@ -1974,6 +1987,13 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 					&io_info);
+ 			scp->SCp.Status |= MEGASAS_LOAD_BALANCE_FLAG;
+ 			cmd->pd_r1_lb = io_info.pd_after_lb;
++			if (instance->is_ventura)
++				io_request->RaidContext.raid_context_g35.span_arm
++					= io_info.span_arm;
++			else
++				io_request->RaidContext.raid_context.span_arm
++					= io_info.span_arm;
++
+ 		} else
+ 			scp->SCp.Status &= ~MEGASAS_LOAD_BALANCE_FLAG;
+ 
+@@ -1992,28 +2012,98 @@ megasas_build_ldio_fusion(struct megasas_instance *instance,
+ 		io_request->DevHandle = io_info.devHandle;
+ 		/* populate the LUN field */
+ 		memcpy(io_request->LUN, raidLUN, 8);
++		if (instance->is_ventura) {
++			if (io_info.isRead) {
++				if ((raid->cpuAffinity.pdRead.cpu0) &&
++					(raid->cpuAffinity.pdRead.cpu1))
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_FCFS;
++				else if (raid->cpuAffinity.pdRead.cpu1)
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_1;
++				else
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_0;
++			} else {
++			if ((raid->cpuAffinity.pdWrite.cpu0)
++			&& (raid->cpuAffinity.pdWrite.cpu1))
++				praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_FCFS;
++				else if (raid->cpuAffinity.pdWrite.cpu1)
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_1;
++				else
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_0;
++				if (praid_context->raid_context_g35.routing_flags.bits.sld) {
++					praid_context->raid_context_g35.raid_flags
++					= (MR_RAID_FLAGS_IO_SUB_TYPE_CACHE_BYPASS
++					<< MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT);
++				}
++			}
++		}
+ 	} else {
+-		io_request->RaidContext.raid_context.timeoutValue =
++		io_request->RaidContext.raid_context.timeout_value =
+ 			cpu_to_le16(local_map_ptr->raidMap.fpPdIoTimeoutSec);
+ 		cmd->request_desc->SCSIIO.RequestFlags =
+ 			(MEGASAS_REQ_DESCRIPT_FLAGS_LD_IO
+ 			 << MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+ 		if (fusion->adapter_type == INVADER_SERIES) {
+ 			if (io_info.do_fp_rlbypass ||
+-			(io_request->RaidContext.raid_context.regLockFlags
++			(io_request->RaidContext.raid_context.reg_lock_flags
+ 					== REGION_TYPE_UNUSED))
+ 				cmd->request_desc->SCSIIO.RequestFlags =
+ 					(MEGASAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
+ 					MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+-			io_request->RaidContext.raid_context.Type
++			io_request->RaidContext.raid_context.type
+ 				= MPI2_TYPE_CUDA;
+-			io_request->RaidContext.raid_context.regLockFlags |=
++			io_request->RaidContext.raid_context.reg_lock_flags |=
+ 				(MR_RL_FLAGS_GRANT_DESTINATION_CPU0 |
+ 				 MR_RL_FLAGS_SEQ_NUM_ENABLE);
+ 			io_request->RaidContext.raid_context.nseg = 0x1;
++		} else if (instance->is_ventura) {
++			io_request->RaidContext.raid_context_g35.type
++				= MPI2_TYPE_CUDA;
++			io_request->RaidContext.raid_context_g35.routing_flags.bits.sqn = 1;
++			io_request->RaidContext.raid_context_g35.nseg = 0x1;
+ 		}
+ 		io_request->Function = MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST;
+ 		io_request->DevHandle = cpu_to_le16(device_id);
++
++		if (instance->is_ventura) {
++			if (io_info.isRead) {
++				if ((raid->cpuAffinity.ldRead.cpu0)
++				&& (raid->cpuAffinity.ldRead.cpu1))
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_FCFS;
++				else if (raid->cpuAffinity.ldRead.cpu1)
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++						= MR_RAID_CTX_CPUSEL_1;
++				else
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++						= MR_RAID_CTX_CPUSEL_0;
++			} else {
++				if ((raid->cpuAffinity.ldWrite.cpu0) &&
++					(raid->cpuAffinity.ldWrite.cpu1))
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++						= MR_RAID_CTX_CPUSEL_FCFS;
++				else if (raid->cpuAffinity.ldWrite.cpu1)
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++						= MR_RAID_CTX_CPUSEL_1;
++				else
++					praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++					= MR_RAID_CTX_CPUSEL_0;
++
++				if (io_request->RaidContext.raid_context_g35.stream_detected
++					&& (raid->level == 5) &&
++					(raid->writeMode == MR_RL_WRITE_THROUGH_MODE)) {
++					if (praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++						== MR_RAID_CTX_CPUSEL_FCFS)
++						praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++							= MR_RAID_CTX_CPUSEL_0;
++				}
++			}
++		}
+ 	} /* Not FP */
+ }
+ 
+@@ -2048,9 +2138,9 @@ static void megasas_build_ld_nonrw_fusion(struct megasas_instance *instance,
+ 	/* get RAID_Context pointer */
+ 	pRAID_Context = &io_request->RaidContext.raid_context;
+ 	/* Check with FW team */
+-	pRAID_Context->VirtualDiskTgtId = cpu_to_le16(device_id);
+-	pRAID_Context->regLockRowLBA    = 0;
+-	pRAID_Context->regLockLength    = 0;
++	pRAID_Context->virtual_disk_tgt_id = cpu_to_le16(device_id);
++	pRAID_Context->reg_lock_row_lba    = 0;
++	pRAID_Context->reg_lock_length    = 0;
+ 
+ 	if (fusion->fast_path_io && (
+ 		device_id < instance->fw_supported_vd_count)) {
+@@ -2069,7 +2159,7 @@ static void megasas_build_ld_nonrw_fusion(struct megasas_instance *instance,
+ 		io_request->Function  = MEGASAS_MPI2_FUNCTION_LD_IO_REQUEST;
+ 		io_request->DevHandle = cpu_to_le16(device_id);
+ 		io_request->LUN[1] = scmd->device->lun;
+-		pRAID_Context->timeoutValue =
++		pRAID_Context->timeout_value =
+ 			cpu_to_le16 (scmd->request->timeout / HZ);
+ 		cmd->request_desc->SCSIIO.RequestFlags =
+ 			(MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO <<
+@@ -2077,9 +2167,11 @@ static void megasas_build_ld_nonrw_fusion(struct megasas_instance *instance,
+ 	} else {
+ 
+ 		/* set RAID context values */
+-		pRAID_Context->configSeqNum = raid->seqNum;
+-		pRAID_Context->regLockFlags = REGION_TYPE_SHARED_READ;
+-		pRAID_Context->timeoutValue = cpu_to_le16(raid->fpIoTimeoutForLd);
++		pRAID_Context->config_seq_num = raid->seqNum;
++		if (!instance->is_ventura)
++			pRAID_Context->reg_lock_flags = REGION_TYPE_SHARED_READ;
++		pRAID_Context->timeout_value =
++			cpu_to_le16(raid->fpIoTimeoutForLd);
+ 
+ 		/* get the DevHandle for the PD (since this is
+ 		   fpNonRWCapable, this is a single disk RAID0) */
+@@ -2134,12 +2226,12 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
+ 	io_request = cmd->io_request;
+ 	/* get RAID_Context pointer */
+ 	pRAID_Context = &io_request->RaidContext.raid_context;
+-	pRAID_Context->regLockFlags = 0;
+-	pRAID_Context->regLockRowLBA = 0;
+-	pRAID_Context->regLockLength = 0;
++	pRAID_Context->reg_lock_flags = 0;
++	pRAID_Context->reg_lock_row_lba = 0;
++	pRAID_Context->reg_lock_length = 0;
+ 	io_request->DataLength = cpu_to_le32(scsi_bufflen(scmd));
+ 	io_request->LUN[1] = scmd->device->lun;
+-	pRAID_Context->RAIDFlags = MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD
++	pRAID_Context->raid_flags = MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD
+ 		<< MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT;
+ 
+ 	/* If FW supports PD sequence number */
+@@ -2148,24 +2240,27 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
+ 		/* TgtId must be incremented by 255 as jbod seq number is index
+ 		 * below raid map
+ 		 */
+-		pRAID_Context->VirtualDiskTgtId =
++		pRAID_Context->virtual_disk_tgt_id =
+ 			cpu_to_le16(device_id + (MAX_PHYSICAL_DEVICES - 1));
+-		pRAID_Context->configSeqNum = pd_sync->seq[pd_index].seqNum;
++		pRAID_Context->config_seq_num = pd_sync->seq[pd_index].seqNum;
+ 		io_request->DevHandle = pd_sync->seq[pd_index].devHandle;
+-		pRAID_Context->regLockFlags |=
++		if (instance->is_ventura)
++			io_request->RaidContext.raid_context_g35.routing_flags.bits.sqn = 1;
++		else
++		pRAID_Context->reg_lock_flags |=
+ 			(MR_RL_FLAGS_SEQ_NUM_ENABLE|MR_RL_FLAGS_GRANT_DESTINATION_CUDA);
+-		pRAID_Context->Type = MPI2_TYPE_CUDA;
++		pRAID_Context->type = MPI2_TYPE_CUDA;
+ 		pRAID_Context->nseg = 0x1;
+ 	} else if (fusion->fast_path_io) {
+-		pRAID_Context->VirtualDiskTgtId = cpu_to_le16(device_id);
+-		pRAID_Context->configSeqNum = 0;
++		pRAID_Context->virtual_disk_tgt_id = cpu_to_le16(device_id);
++		pRAID_Context->config_seq_num = 0;
+ 		local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)];
+ 		io_request->DevHandle =
+ 			local_map_ptr->raidMap.devHndlInfo[device_id].curDevHdl;
+ 	} else {
+ 		/* Want to send all IO via FW path */
+-		pRAID_Context->VirtualDiskTgtId = cpu_to_le16(device_id);
+-		pRAID_Context->configSeqNum = 0;
++		pRAID_Context->virtual_disk_tgt_id = cpu_to_le16(device_id);
++		pRAID_Context->config_seq_num = 0;
+ 		io_request->DevHandle = cpu_to_le16(0xFFFF);
+ 	}
+ 
+@@ -2181,14 +2276,14 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
+ 		cmd->request_desc->SCSIIO.RequestFlags =
+ 			(MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO <<
+ 				MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
+-		pRAID_Context->timeoutValue = cpu_to_le16(os_timeout_value);
+-		pRAID_Context->VirtualDiskTgtId = cpu_to_le16(device_id);
++		pRAID_Context->timeout_value = cpu_to_le16(os_timeout_value);
++		pRAID_Context->virtual_disk_tgt_id = cpu_to_le16(device_id);
+ 	} else {
+ 		/* system pd Fast Path */
+ 		io_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST;
+ 		timeout_limit = (scmd->device->type == TYPE_DISK) ?
+ 				255 : 0xFFFF;
+-		pRAID_Context->timeoutValue =
++		pRAID_Context->timeout_value =
+ 			cpu_to_le16((os_timeout_value > timeout_limit) ?
+ 			timeout_limit : os_timeout_value);
+ 		if (fusion->adapter_type == INVADER_SERIES)
+@@ -2227,8 +2322,8 @@ megasas_build_io_fusion(struct megasas_instance *instance,
+ 	io_request->Control = 0;
+ 	io_request->EEDPBlockSize = 0;
+ 	io_request->ChainOffset = 0;
+-	io_request->RaidContext.raid_context.RAIDFlags = 0;
+-	io_request->RaidContext.raid_context.Type = 0;
++	io_request->RaidContext.raid_context.raid_flags = 0;
++	io_request->RaidContext.raid_context.type = 0;
+ 	io_request->RaidContext.raid_context.nseg = 0;
+ 
+ 	memcpy(io_request->CDB.CDB32, scp->cmnd, scp->cmd_len);
+@@ -2273,11 +2368,16 @@ megasas_build_io_fusion(struct megasas_instance *instance,
+ 		return 1;
+ 	}
+ 
+-	/* numSGE store lower 8 bit of sge_count.
+-	 * numSGEExt store higher 8 bit of sge_count
+-	 */
+-	io_request->RaidContext.raid_context.numSGE = sge_count;
+-	io_request->RaidContext.raid_context.numSGEExt = (u8)(sge_count >> 8);
++	if (instance->is_ventura)
++		io_request->RaidContext.raid_context_g35.num_sge = sge_count;
++	else {
++		/* numSGE store lower 8 bit of sge_count.
++		 * numSGEExt store higher 8 bit of sge_count
++		 */
++		io_request->RaidContext.raid_context.num_sge = sge_count;
++		io_request->RaidContext.raid_context.num_sge_ext =
++			(u8)(sge_count >> 8);
++	}
+ 
+ 	io_request->SGLFlags = cpu_to_le16(MPI2_SGE_FLAGS_64_BIT_ADDRESSING);
+ 
+@@ -2326,6 +2426,10 @@ void megasas_fpio_to_ldio(struct megasas_instance *instance,
+ 	struct megasas_cmd_fusion *cmd, struct scsi_cmnd *scmd)
+ {
+ 	struct fusion_context *fusion;
++	union RAID_CONTEXT_UNION *praid_context;
++	struct MR_LD_RAID *raid;
++	struct MR_DRV_RAID_MAP_ALL *local_map_ptr;
++	u32 device_id, ld;
+ 
+ 	fusion = instance->ctrl_context;
+ 	cmd->request_desc->SCSIIO.RequestFlags =
+@@ -2349,6 +2453,35 @@ void megasas_fpio_to_ldio(struct megasas_instance *instance,
+ 	cmd->io_request->Control = 0;
+ 	cmd->io_request->EEDPBlockSize = 0;
+ 	cmd->is_raid_1_fp_write = 0;
++
++	device_id = MEGASAS_DEV_INDEX(cmd->scmd);
++	local_map_ptr = fusion->ld_drv_map[(instance->map_id & 1)];
++	ld = MR_TargetIdToLdGet(device_id, local_map_ptr);
++	raid = MR_LdRaidGet(ld, local_map_ptr);
++	praid_context = &cmd->io_request->RaidContext;
++	if (cmd->scmd->sc_data_direction == PCI_DMA_FROMDEVICE) {
++		if ((raid->cpuAffinity.ldRead.cpu0)
++		&& (raid->cpuAffinity.ldRead.cpu1))
++			praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++			= MR_RAID_CTX_CPUSEL_FCFS;
++		else if (raid->cpuAffinity.ldRead.cpu1)
++			praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++			= MR_RAID_CTX_CPUSEL_1;
++		else
++			praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++			= MR_RAID_CTX_CPUSEL_0;
++	} else {
++	if ((raid->cpuAffinity.ldWrite.cpu0)
++		&& (raid->cpuAffinity.ldWrite.cpu1))
++		praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++			= MR_RAID_CTX_CPUSEL_FCFS;
++	else if (raid->cpuAffinity.ldWrite.cpu1)
++		praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++			= MR_RAID_CTX_CPUSEL_1;
++	else
++		praid_context->raid_context_g35.routing_flags.bits.cpu_sel
++		= MR_RAID_CTX_CPUSEL_0;
++	}
+ }
+ 
+ /* megasas_prepate_secondRaid1_IO
+@@ -2585,7 +2718,7 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 
+ 		scmd_local = cmd_fusion->scmd;
+ 		status = scsi_io_req->RaidContext.raid_context.status;
+-		extStatus = scsi_io_req->RaidContext.raid_context.exStatus;
++		extStatus = scsi_io_req->RaidContext.raid_context.ex_status;
+ 		sense = cmd_fusion->sense;
+ 		data_length = scsi_io_req->DataLength;
+ 
+@@ -2653,13 +2786,13 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 					status =
+ 					r1_cmd->io_request->RaidContext.raid_context.status;
+ 					extStatus =
+-					r1_cmd->io_request->RaidContext.raid_context.exStatus;
++					r1_cmd->io_request->RaidContext.raid_context.ex_status;
+ 					data_length =
+ 						r1_cmd->io_request->DataLength;
+ 					sense = r1_cmd->sense;
+ 				}
+ 				r1_cmd->io_request->RaidContext.raid_context.status = 0;
+-				r1_cmd->io_request->RaidContext.raid_context.exStatus = 0;
++				r1_cmd->io_request->RaidContext.raid_context.ex_status = 0;
+ 				cmd_fusion->is_raid_1_fp_write = 0;
+ 				r1_cmd->is_raid_1_fp_write = 0;
+ 				r1_cmd->cmd_completed = false;
+@@ -2669,10 +2802,8 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 			if (!cmd_fusion->is_raid_1_fp_write) {
+ 				map_cmd_status(fusion, scmd_local, status,
+ 					extStatus, data_length, sense);
+-				scsi_io_req->RaidContext.raid_context.status
+-				= 0;
+-				scsi_io_req->RaidContext.raid_context.exStatus
+-				= 0;
++				scsi_io_req->RaidContext.raid_context.status = 0;
++				scsi_io_req->RaidContext.raid_context.ex_status = 0;
+ 				megasas_return_cmd_fusion(instance, cmd_fusion);
+ 				scsi_dma_unmap(scmd_local);
+ 				scmd_local->scsi_done(scmd_local);
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index 7a3c3d1..2de12b4 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -59,6 +59,8 @@
+ #define	MR_RL_FLAGS_GRANT_DESTINATION_CPU1	    0x10
+ #define	MR_RL_FLAGS_GRANT_DESTINATION_CUDA	    0x80
+ #define MR_RL_FLAGS_SEQ_NUM_ENABLE		    0x8
++#define MR_RL_WRITE_THROUGH_MODE		    0x00
++#define MR_RL_WRITE_BACK_MODE			    0x01
+ 
+ /* T10 PI defines */
+ #define MR_PROT_INFO_TYPE_CONTROLLER                0x8
+@@ -81,6 +83,11 @@
+ enum MR_RAID_FLAGS_IO_SUB_TYPE {
+ 	MR_RAID_FLAGS_IO_SUB_TYPE_NONE = 0,
+ 	MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD = 1,
++	MR_RAID_FLAGS_IO_SUB_TYPE_RMW_DATA     = 2,
++	MR_RAID_FLAGS_IO_SUB_TYPE_RMW_P        = 3,
++	MR_RAID_FLAGS_IO_SUB_TYPE_RMW_Q        = 4,
++	MR_RAID_FLAGS_IO_SUB_TYPE_CACHE_BYPASS = 6,
++	MR_RAID_FLAGS_IO_SUB_TYPE_LDIO_BW_LIMIT = 7
+ };
+ 
+ /*
+@@ -109,29 +116,29 @@ enum MR_FUSION_ADAPTER_TYPE {
+ 
+ struct RAID_CONTEXT {
+ #if   defined(__BIG_ENDIAN_BITFIELD)
+-	u8	nseg:4;
+-	u8	Type:4;
++	u8 nseg:4;
++	u8 type:4;
+ #else
+-	u8	Type:4;
+-	u8	nseg:4;
++	u8 type:4;
++	u8 nseg:4;
+ #endif
+-	u8	resvd0;
+-	__le16	timeoutValue;
+-	u8      regLockFlags;
+-	u8      resvd1;
+-	__le16	VirtualDiskTgtId;
+-	__le64	regLockRowLBA;
+-	__le32	regLockLength;
+-	__le16	nextLMId;
+-	u8      exStatus;
+-	u8      status;
+-	u8      RAIDFlags;
+-	u8      numSGE;
+-	__le16	configSeqNum;
+-	u8      spanArm;
+-	u8      priority;
+-	u8	numSGEExt;
+-	u8      resvd2;
++	u8 resvd0;
++	__le16 timeout_value;
++	u8 reg_lock_flags;
++	u8 resvd1;
++	__le16 virtual_disk_tgt_id;
++	__le64 reg_lock_row_lba;
++	__le32 reg_lock_length;
++	__le16 next_lmid;
++	u8 ex_status;
++	u8 status;
++	u8 raid_flags;
++	u8 num_sge;
++	__le16 config_seq_num;
++	u8 span_arm;
++	u8 priority;
++	u8 num_sge_ext;
++	u8 resvd2;
+ };
+ 
+ /*
+@@ -187,7 +194,7 @@ struct RAID_CONTEXT_G35 {
+ 	} smid;
+ 	u8 ex_status;       /* 0x16 : OUT */
+ 	u8 status;          /* 0x17 status */
+-	u8 RAIDFlags;		/* 0x18 resvd[7:6], ioSubType[5:4],
++	u8 raid_flags;		/* 0x18 resvd[7:6], ioSubType[5:4],
+ 				 * resvd[3:1], preferredCpu[0]
+ 				 */
+ 	u8 span_arm;            /* 0x1C span[7:5], arm[4:0] */
+@@ -672,14 +679,17 @@ struct MPI2_IOC_INIT_REQUEST {
+ #define MAX_RAIDMAP_ROW_SIZE (MAX_ROW_SIZE)
+ #define MAX_LOGICAL_DRIVES 64
+ #define MAX_LOGICAL_DRIVES_EXT 256
++#define MAX_LOGICAL_DRIVES_DYN 512
+ #define MAX_RAIDMAP_LOGICAL_DRIVES (MAX_LOGICAL_DRIVES)
+ #define MAX_RAIDMAP_VIEWS (MAX_LOGICAL_DRIVES)
+ #define MAX_ARRAYS 128
+ #define MAX_RAIDMAP_ARRAYS (MAX_ARRAYS)
+ #define MAX_ARRAYS_EXT	256
+ #define MAX_API_ARRAYS_EXT (MAX_ARRAYS_EXT)
++#define MAX_API_ARRAYS_DYN 512
+ #define MAX_PHYSICAL_DEVICES 256
+ #define MAX_RAIDMAP_PHYSICAL_DEVICES (MAX_PHYSICAL_DEVICES)
++#define MAX_RAIDMAP_PHYSICAL_DEVICES_DYN 512
+ #define MR_DCMD_LD_MAP_GET_INFO             0x0300e101
+ #define MR_DCMD_SYSTEM_PD_MAP_GET_INFO      0x0200e102
+ #define MR_DCMD_CTRL_SHARED_HOST_MEM_ALLOC  0x010e8485   /* SR-IOV HB alloc*/
+@@ -726,12 +736,56 @@ struct MR_SPAN_BLOCK_INFO {
+ 	struct MR_SPAN_INFO block_span_info;
+ };
+ 
++#define MR_RAID_CTX_CPUSEL_0		0
++#define MR_RAID_CTX_CPUSEL_1		1
++#define MR_RAID_CTX_CPUSEL_2		2
++#define MR_RAID_CTX_CPUSEL_3		3
++#define MR_RAID_CTX_CPUSEL_FCFS		0xF
++
++struct MR_CPU_AFFINITY_MASK {
++	union {
++		struct {
++#ifndef MFI_BIG_ENDIAN
++		u8 hw_path:1;
++		u8 cpu0:1;
++		u8 cpu1:1;
++		u8 cpu2:1;
++		u8 cpu3:1;
++		u8 reserved:3;
++#else
++		u8 reserved:3;
++		u8 cpu3:1;
++		u8 cpu2:1;
++		u8 cpu1:1;
++		u8 cpu0:1;
++		u8 hw_path:1;
++#endif
++		};
++		u8 core_mask;
++	};
++};
++
++struct MR_IO_AFFINITY {
++	union {
++		struct {
++			struct MR_CPU_AFFINITY_MASK pdRead;
++			struct MR_CPU_AFFINITY_MASK pdWrite;
++			struct MR_CPU_AFFINITY_MASK ldRead;
++			struct MR_CPU_AFFINITY_MASK ldWrite;
++			};
++		u32 word;
++		};
++	u8 maxCores;    /* Total cores + HW Path in ROC */
++	u8 reserved[3];
++};
++
+ struct MR_LD_RAID {
+ 	struct {
+ #if   defined(__BIG_ENDIAN_BITFIELD)
+-		u32     reserved4:3;
+-		u32     fp_cache_bypass_capable:1;
+-		u32     fp_rmw_capable:1;
++		u32 reserved4:2;
++		u32 fp_cache_bypass_capable:1;
++		u32 fp_rmw_capable:1;
++		u32 disable_coalescing:1;
+ 		u32     fpBypassRegionLock:1;
+ 		u32     tmCapable:1;
+ 		u32	fpNonRWCapable:1;
+@@ -759,9 +813,10 @@ struct MR_LD_RAID {
+ 		u32	fpNonRWCapable:1;
+ 		u32     tmCapable:1;
+ 		u32     fpBypassRegionLock:1;
+-		u32     fp_rmw_capable:1;
+-		u32     fp_cache_bypass_capable:1;
+-		u32     reserved4:3;
++		u32 disable_coalescing:1;
++		u32 fp_rmw_capable:1;
++		u32 fp_cache_bypass_capable:1;
++		u32 reserved4:2;
+ #endif
+ 	} capability;
+ 	__le32     reserved6;
+@@ -788,7 +843,36 @@ struct MR_LD_RAID {
+ 
+ 	u8	LUN[8]; /* 0x24 8 byte LUN field used for SCSI IO's */
+ 	u8	fpIoTimeoutForLd;/*0x2C timeout value used by driver in FP IO*/
+-	u8      reserved3[0x80-0x2D]; /* 0x2D */
++	/* Ox2D This LD accept priority boost of this type */
++	u8 ld_accept_priority_type;
++	u8 reserved2[2];	        /* 0x2E - 0x2F */
++	/* 0x30 - 0x33, Logical block size for the LD */
++	u32 logical_block_length;
++	struct {
++#ifndef MFI_BIG_ENDIAN
++	/* 0x34, P_I_EXPONENT from READ CAPACITY 16 */
++	u32 ld_pi_exp:4;
++	/* 0x34, LOGICAL BLOCKS PER PHYSICAL
++	 *  BLOCK EXPONENT from READ CAPACITY 16
++	 */
++	u32 ld_logical_block_exp:4;
++	u32 reserved1:24;           /* 0x34 */
++#else
++	u32 reserved1:24;           /* 0x34 */
++	/* 0x34, LOGICAL BLOCKS PER PHYSICAL
++	 *  BLOCK EXPONENT from READ CAPACITY 16
++	 */
++	u32 ld_logical_block_exp:4;
++	/* 0x34, P_I_EXPONENT from READ CAPACITY 16 */
++	u32 ld_pi_exp:4;
++#endif
++	};                               /* 0x34 - 0x37 */
++	 /* 0x38 - 0x3f, This will determine which
++	  *  core will process LD IO and PD IO.
++	  */
++	struct MR_IO_AFFINITY cpuAffinity;
++     /* Bit definiations are specified by MR_IO_AFFINITY */
++	u8 reserved3[0x80-0x40];    /* 0x40 - 0x7f */
+ };
+ 
+ struct MR_LD_SPAN_MAP {
+@@ -846,6 +930,91 @@ struct MR_LD_TARGET_SYNC {
+ 	__le16 seqNum;
+ };
+ 
++/*
++ * RAID Map descriptor Types.
++ * Each element should uniquely idetify one data structure in the RAID map
++ */
++enum MR_RAID_MAP_DESC_TYPE {
++	/* MR_DEV_HANDLE_INFO data */
++	RAID_MAP_DESC_TYPE_DEVHDL_INFO    = 0x0,
++	/* target to Ld num Index map */
++	RAID_MAP_DESC_TYPE_TGTID_INFO     = 0x1,
++	/* MR_ARRAY_INFO data */
++	RAID_MAP_DESC_TYPE_ARRAY_INFO     = 0x2,
++	/* MR_LD_SPAN_MAP data */
++	RAID_MAP_DESC_TYPE_SPAN_INFO      = 0x3,
++	RAID_MAP_DESC_TYPE_COUNT,
++};
++
++/*
++ * This table defines the offset, size and num elements  of each descriptor
++ * type in the RAID Map buffer
++ */
++struct MR_RAID_MAP_DESC_TABLE {
++	/* Raid map descriptor type */
++	u32 raid_map_desc_type;
++	/* Offset into the RAID map buffer where
++	 *  descriptor data is saved
++	 */
++	u32 raid_map_desc_offset;
++	/* total size of the
++	 * descriptor buffer
++	 */
++	u32 raid_map_desc_buffer_size;
++	/* Number of elements contained in the
++	 *  descriptor buffer
++	 */
++	u32 raid_map_desc_elements;
++};
++
++/*
++ * Dynamic Raid Map Structure.
++ */
++struct MR_FW_RAID_MAP_DYNAMIC {
++	u32 raid_map_size;   /* total size of RAID Map structure */
++	u32 desc_table_offset;/* Offset of desc table into RAID map*/
++	u32 desc_table_size;  /* Total Size of desc table */
++	/* Total Number of elements in the desc table */
++	u32 desc_table_num_elements;
++	u64	reserved1;
++	u32	reserved2[3];	/*future use */
++	/* timeout value used by driver in FP IOs */
++	u8 fp_pd_io_timeout_sec;
++	u8 reserved3[3];
++	/* when this seqNum increments, driver needs to
++	 *  release RMW buffers asap
++	 */
++	u32 rmw_fp_seq_num;
++	u16 ld_count;	/* count of lds. */
++	u16 ar_count;   /* count of arrays */
++	u16 span_count; /* count of spans */
++	u16 reserved4[3];
++/*
++ * The below structure of pointers is only to be used by the driver.
++ * This is added in the ,API to reduce the amount of code changes
++ * needed in the driver to support dynamic RAID map Firmware should
++ * not update these pointers while preparing the raid map
++ */
++	union {
++		struct {
++			struct MR_DEV_HANDLE_INFO  *dev_hndl_info;
++			u16 *ld_tgt_id_to_ld;
++			struct MR_ARRAY_INFO *ar_map_info;
++			struct MR_LD_SPAN_MAP *ld_span_map;
++			};
++		u64 ptr_structure_size[RAID_MAP_DESC_TYPE_COUNT];
++		};
++/*
++ * RAID Map descriptor table defines the layout of data in the RAID Map.
++ * The size of the descriptor table itself could change.
++ */
++	/* Variable Size descriptor Table. */
++	struct MR_RAID_MAP_DESC_TABLE
++			raid_map_desc_table[RAID_MAP_DESC_TYPE_COUNT];
++	/* Variable Size buffer containing all data */
++	u32 raid_map_desc_data[1];
++}; /* Dynamicaly sized RAID MAp structure */
++
+ #define IEEE_SGE_FLAGS_ADDR_MASK            (0x03)
+ #define IEEE_SGE_FLAGS_SYSTEM_ADDR          (0x00)
+ #define IEEE_SGE_FLAGS_IOCDDR_ADDR          (0x01)
+@@ -955,9 +1124,10 @@ struct MR_DRV_RAID_MAP {
+ 	__le16                 spanCount;
+ 	__le16                 reserve3;
+ 
+-	struct MR_DEV_HANDLE_INFO  devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES];
+-	u8                  ldTgtIdToLd[MAX_LOGICAL_DRIVES_EXT];
+-	struct MR_ARRAY_INFO       arMapInfo[MAX_API_ARRAYS_EXT];
++	struct MR_DEV_HANDLE_INFO
++		devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES_DYN];
++	u16 ldTgtIdToLd[MAX_LOGICAL_DRIVES_DYN];
++	struct MR_ARRAY_INFO arMapInfo[MAX_API_ARRAYS_DYN];
+ 	struct MR_LD_SPAN_MAP      ldSpanMap[1];
+ 
+ };
+@@ -969,7 +1139,7 @@ struct MR_DRV_RAID_MAP {
+ struct MR_DRV_RAID_MAP_ALL {
+ 
+ 	struct MR_DRV_RAID_MAP raidMap;
+-	struct MR_LD_SPAN_MAP      ldSpanMap[MAX_LOGICAL_DRIVES_EXT - 1];
++	struct MR_LD_SPAN_MAP ldSpanMap[MAX_LOGICAL_DRIVES_DYN - 1];
+ } __packed;
+ 
+ 
+@@ -1088,7 +1258,7 @@ struct fusion_context {
+ 	u8	chain_offset_io_request;
+ 	u8	chain_offset_mfi_pthru;
+ 
+-	struct MR_FW_RAID_MAP_ALL *ld_map[2];
++	struct MR_FW_RAID_MAP_DYNAMIC *ld_map[2];
+ 	dma_addr_t ld_map_phys[2];
+ 
+ 	/*Non dma-able memory. Driver local copy.*/
+@@ -1096,6 +1266,8 @@ struct fusion_context {
+ 
+ 	u32 max_map_sz;
+ 	u32 current_map_sz;
++	u32 old_map_sz;
++	u32 new_map_sz;
+ 	u32 drv_map_sz;
+ 	u32 drv_map_pages;
+ 	struct MR_PD_CFG_SEQ_NUM_SYNC	*pd_seq_sync[JBOD_MAPS_COUNT];
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0006-scsi-mpt3sas-Added-Device-ID-s-for-SAS35-devices-and.patch b/SOURCES/centos-linux-3.10-0006-scsi-mpt3sas-Added-Device-ID-s-for-SAS35-devices-and.patch
new file mode 100644
index 0000000..1d1a251
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0006-scsi-mpt3sas-Added-Device-ID-s-for-SAS35-devices-and.patch
@@ -0,0 +1,141 @@
+From 60eded7faed3769b20a519c65a04d9eb9dd48332 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:37 +0530
+Subject: [PATCH 06/11] scsi: mpt3sas: Added Device ID's for SAS35 devices and
+ updated MPI header.
+
+Added Device ID's for SAS35 devices (Ventura, Crusader, Harpoon &
+Tomcat) and updated mpi header file for the same. Also added
+"is_gen35_ioc" to MPT3SAS_ADAPTER structure for identifying SAS35 adapters.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h |  7 +++++++
+ drivers/scsi/mpt3sas/mpt3sas_base.h  |  1 +
+ drivers/scsi/mpt3sas/mpt3sas_ctl.c   |  5 ++++-
+ drivers/scsi/mpt3sas/mpt3sas_ctl.h   |  1 +
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c | 31 +++++++++++++++++++++++++++++++
+ 5 files changed, 44 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h b/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
+index 95356a8..fa61baf 100644
+--- a/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
++++ b/drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
+@@ -478,6 +478,13 @@ typedef struct _MPI2_CONFIG_REPLY {
+ #define MPI26_MFGPAGE_DEVID_SAS3324_3               (0x00C2)
+ #define MPI26_MFGPAGE_DEVID_SAS3324_4               (0x00C3)
+ 
++#define MPI26_MFGPAGE_DEVID_SAS3516                 (0x00AA)
++#define MPI26_MFGPAGE_DEVID_SAS3516_1               (0x00AB)
++#define MPI26_MFGPAGE_DEVID_SAS3416                 (0x00AC)
++#define MPI26_MFGPAGE_DEVID_SAS3508                 (0x00AD)
++#define MPI26_MFGPAGE_DEVID_SAS3508_1               (0x00AE)
++#define MPI26_MFGPAGE_DEVID_SAS3408                 (0x00AF)
++
+ /*Manufacturing Page 0 */
+ 
+ typedef struct _MPI2_CONFIG_PAGE_MAN_0 {
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index 66cfa0f..c3a39e8 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -1205,6 +1205,7 @@ struct MPT3SAS_ADAPTER {
+ 	struct SL_WH_MPI_TRIGGERS_T diag_trigger_mpi;
+ 	void		*device_remove_in_progress;
+ 	u16		device_remove_in_progress_sz;
++	u8		is_gen35_ioc;
+ };
+ 
+ typedef u8 (*MPT_CALLBACK)(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+index a75f8a3..a66c0c8 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+@@ -1101,7 +1101,10 @@ _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
+ 		break;
+ 	case MPI25_VERSION:
+ 	case MPI26_VERSION:
+-		karg.adapter_type = MPT3_IOCTL_INTERFACE_SAS3;
++		if (ioc->is_gen35_ioc)
++			karg.adapter_type = MPT3_IOCTL_INTERFACE_SAS35;
++		else
++			karg.adapter_type = MPT3_IOCTL_INTERFACE_SAS3;
+ 		strcat(karg.driver_version, MPT3SAS_DRIVER_VERSION);
+ 		break;
+ 	}
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.h b/drivers/scsi/mpt3sas/mpt3sas_ctl.h
+index 8940835..f3e17a8 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.h
+@@ -143,6 +143,7 @@ struct mpt3_ioctl_pci_info {
+ #define MPT2_IOCTL_INTERFACE_SAS2	(0x04)
+ #define MPT2_IOCTL_INTERFACE_SAS2_SSS6200	(0x05)
+ #define MPT3_IOCTL_INTERFACE_SAS3	(0x06)
++#define MPT3_IOCTL_INTERFACE_SAS35	(0x07)
+ #define MPT2_IOCTL_VERSION_LENGTH	(32)
+ 
+ /**
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index c6aa172..eaef45c 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -8722,6 +8722,12 @@ _scsih_determine_hba_mpi_version(struct pci_dev *pdev)
+ 	case MPI26_MFGPAGE_DEVID_SAS3324_2:
+ 	case MPI26_MFGPAGE_DEVID_SAS3324_3:
+ 	case MPI26_MFGPAGE_DEVID_SAS3324_4:
++	case MPI26_MFGPAGE_DEVID_SAS3508:
++	case MPI26_MFGPAGE_DEVID_SAS3508_1:
++	case MPI26_MFGPAGE_DEVID_SAS3408:
++	case MPI26_MFGPAGE_DEVID_SAS3516:
++	case MPI26_MFGPAGE_DEVID_SAS3516_1:
++	case MPI26_MFGPAGE_DEVID_SAS3416:
+ 		return MPI26_VERSION;
+ 	}
+ 	return 0;
+@@ -8777,6 +8783,18 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ 		ioc->hba_mpi_version_belonged = hba_mpi_version;
+ 		ioc->id = mpt3_ids++;
+ 		sprintf(ioc->driver_name, "%s", MPT3SAS_DRIVER_NAME);
++		switch (pdev->device) {
++		case MPI26_MFGPAGE_DEVID_SAS3508:
++		case MPI26_MFGPAGE_DEVID_SAS3508_1:
++		case MPI26_MFGPAGE_DEVID_SAS3408:
++		case MPI26_MFGPAGE_DEVID_SAS3516:
++		case MPI26_MFGPAGE_DEVID_SAS3516_1:
++		case MPI26_MFGPAGE_DEVID_SAS3416:
++			ioc->is_gen35_ioc = 1;
++			break;
++		default:
++			ioc->is_gen35_ioc = 0;
++		}
+ 		if ((ioc->hba_mpi_version_belonged == MPI25_VERSION &&
+ 			pdev->revision >= SAS3_PCI_DEVICE_C0_REVISION) ||
+ 			(ioc->hba_mpi_version_belonged == MPI26_VERSION))
+@@ -9186,6 +9204,19 @@ static const struct pci_device_id mpt3sas_pci_table[] = {
+ 		PCI_ANY_ID, PCI_ANY_ID },
+ 	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3324_4,
+ 		PCI_ANY_ID, PCI_ANY_ID },
++	/* Ventura, Crusader, Harpoon & Tomcat ~ 3516, 3416, 3508 & 3408*/
++	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3508,
++		PCI_ANY_ID, PCI_ANY_ID },
++	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3508_1,
++		PCI_ANY_ID, PCI_ANY_ID },
++	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3408,
++		PCI_ANY_ID, PCI_ANY_ID },
++	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3516,
++		PCI_ANY_ID, PCI_ANY_ID },
++	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3516_1,
++		PCI_ANY_ID, PCI_ANY_ID },
++	{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3416,
++		PCI_ANY_ID, PCI_ANY_ID },
+ #endif /* MPT2SAS_SCSI */
+ 	{0}     /* Terminating entry */
+ };
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0007-scsi-megaraid_sas-Add-the-Support-for-SAS3.5-Generic.patch b/SOURCES/centos-linux-3.10-0007-scsi-megaraid_sas-Add-the-Support-for-SAS3.5-Generic.patch
new file mode 100644
index 0000000..6e01fe2
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0007-scsi-megaraid_sas-Add-the-Support-for-SAS3.5-Generic.patch
@@ -0,0 +1,183 @@
+From 1d7d67352bddfd44384bd8778f822da279ff78f8 Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:49 -0500
+Subject: [PATCH 07/11] scsi: megaraid_sas: Add the Support for SAS3.5 Generic
+ Megaraid Controllers Capabilities
+
+The Megaraid driver has to support the SAS3.5 Generic Megaraid Controllers Firmware functionality.
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas_base.c   | 53 ++++++++++++++---------------
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 19 ++++++-----
+ drivers/scsi/megaraid/megaraid_sas_fusion.h |  1 +
+ 3 files changed, 37 insertions(+), 36 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index 1d8cf03..8b0c686 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -5089,34 +5089,29 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 
+ 	reg_set = instance->reg_set;
+ 
+-	switch (instance->pdev->device) {
+-	case PCI_DEVICE_ID_LSI_FUSION:
+-	case PCI_DEVICE_ID_LSI_PLASMA:
+-	case PCI_DEVICE_ID_LSI_INVADER:
+-	case PCI_DEVICE_ID_LSI_FURY:
+-	case PCI_DEVICE_ID_LSI_INTRUDER:
+-	case PCI_DEVICE_ID_LSI_INTRUDER_24:
+-	case PCI_DEVICE_ID_LSI_CUTLASS_52:
+-	case PCI_DEVICE_ID_LSI_CUTLASS_53:
++	if (fusion)
+ 		instance->instancet = &megasas_instance_template_fusion;
+-		break;
+-	case PCI_DEVICE_ID_LSI_SAS1078R:
+-	case PCI_DEVICE_ID_LSI_SAS1078DE:
+-		instance->instancet = &megasas_instance_template_ppc;
+-		break;
+-	case PCI_DEVICE_ID_LSI_SAS1078GEN2:
+-	case PCI_DEVICE_ID_LSI_SAS0079GEN2:
+-		instance->instancet = &megasas_instance_template_gen2;
+-		break;
+-	case PCI_DEVICE_ID_LSI_SAS0073SKINNY:
+-	case PCI_DEVICE_ID_LSI_SAS0071SKINNY:
+-		instance->instancet = &megasas_instance_template_skinny;
+-		break;
+-	case PCI_DEVICE_ID_LSI_SAS1064R:
+-	case PCI_DEVICE_ID_DELL_PERC5:
+-	default:
+-		instance->instancet = &megasas_instance_template_xscale;
+-		break;
++	else {
++		switch (instance->pdev->device) {
++		case PCI_DEVICE_ID_LSI_SAS1078R:
++		case PCI_DEVICE_ID_LSI_SAS1078DE:
++			instance->instancet = &megasas_instance_template_ppc;
++			break;
++		case PCI_DEVICE_ID_LSI_SAS1078GEN2:
++		case PCI_DEVICE_ID_LSI_SAS0079GEN2:
++			instance->instancet = &megasas_instance_template_gen2;
++			break;
++		case PCI_DEVICE_ID_LSI_SAS0073SKINNY:
++		case PCI_DEVICE_ID_LSI_SAS0071SKINNY:
++			instance->instancet = &megasas_instance_template_skinny;
++			break;
++		case PCI_DEVICE_ID_LSI_SAS1064R:
++		case PCI_DEVICE_ID_DELL_PERC5:
++		default:
++			instance->instancet = &megasas_instance_template_xscale;
++			instance->pd_list_not_supported = 1;
++			break;
++		}
+ 	}
+ 
+ 	if (megasas_transition_to_ready(instance, 0)) {
+@@ -5869,7 +5864,9 @@ static int megasas_probe_one(struct pci_dev *pdev,
+ 		if ((instance->pdev->device == PCI_DEVICE_ID_LSI_FUSION) ||
+ 			(instance->pdev->device == PCI_DEVICE_ID_LSI_PLASMA))
+ 			fusion->adapter_type = THUNDERBOLT_SERIES;
+-		else if (!instance->is_ventura)
++		else if (instance->is_ventura)
++			fusion->adapter_type = VENTURA_SERIES;
++		else
+ 			fusion->adapter_type = INVADER_SERIES;
+ 	}
+ 	break;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 178f166..1802c57 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -244,7 +244,10 @@ megasas_fusion_update_can_queue(struct megasas_instance *instance, int fw_boot_c
+ 
+ 	reg_set = instance->reg_set;
+ 
+-	cur_max_fw_cmds = readl(&instance->reg_set->outbound_scratch_pad_3) & 0x00FFFF;
++	/* ventura FW does not fill outbound_scratch_pad_3 with queue depth */
++	if (!instance->is_ventura)
++		cur_max_fw_cmds =
++		readl(&instance->reg_set->outbound_scratch_pad_3) & 0x00FFFF;
+ 
+ 	if (dual_qdepth_disable || !cur_max_fw_cmds)
+ 		cur_max_fw_cmds = instance->instancet->read_fw_status_reg(reg_set) & 0x00FFFF;
+@@ -837,7 +840,7 @@ megasas_ioc_init_fusion(struct megasas_instance *instance)
+ 	drv_ops = (MFI_CAPABILITIES *) &(init_frame->driver_operations);
+ 
+ 	/* driver support Extended MSIX */
+-	if (fusion->adapter_type == INVADER_SERIES)
++	if (fusion->adapter_type >= INVADER_SERIES)
+ 		drv_ops->mfi_capabilities.support_additional_msix = 1;
+ 	/* driver supports HA / Remote LUN over Fast Path interface */
+ 	drv_ops->mfi_capabilities.support_fp_remote_lun = 1;
+@@ -1491,7 +1494,7 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
+ 
+ 	fusion = instance->ctrl_context;
+ 
+-	if (fusion->adapter_type == INVADER_SERIES) {
++	if (fusion->adapter_type >= INVADER_SERIES) {
+ 		struct MPI25_IEEE_SGE_CHAIN64 *sgl_ptr_end = sgl_ptr;
+ 		sgl_ptr_end += fusion->max_sge_in_main_msg - 1;
+ 		sgl_ptr_end->Flags = 0;
+@@ -1508,7 +1511,7 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
+ 		sgl_ptr->Length = cpu_to_le32(sg_dma_len(os_sgl));
+ 		sgl_ptr->Address = cpu_to_le64(sg_dma_address(os_sgl));
+ 		sgl_ptr->Flags = 0;
+-		if (fusion->adapter_type == INVADER_SERIES)
++		if (fusion->adapter_type >= INVADER_SERIES)
+ 			if (i == sge_count - 1)
+ 				sgl_ptr->Flags = IEEE_SGE_FLAGS_END_OF_LIST;
+ 		sgl_ptr++;
+@@ -1519,7 +1522,7 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
+ 		    (sge_count > fusion->max_sge_in_main_msg)) {
+ 
+ 			struct MPI25_IEEE_SGE_CHAIN64 *sg_chain;
+-			if (fusion->adapter_type == INVADER_SERIES) {
++			if (fusion->adapter_type >= INVADER_SERIES) {
+ 				if ((le16_to_cpu(cmd->io_request->IoFlags) &
+ 					MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH) !=
+ 					MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
+@@ -1535,7 +1538,7 @@ megasas_make_sgl_fusion(struct megasas_instance *instance,
+ 			sg_chain = sgl_ptr;
+ 			/* Prepare chain element */
+ 			sg_chain->NextChainOffset = 0;
+-			if (fusion->adapter_type == INVADER_SERIES)
++			if (fusion->adapter_type >= INVADER_SERIES)
+ 				sg_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT;
+ 			else
+ 				sg_chain->Flags =
+@@ -2286,7 +2289,7 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
+ 		pRAID_Context->timeout_value =
+ 			cpu_to_le16((os_timeout_value > timeout_limit) ?
+ 			timeout_limit : os_timeout_value);
+-		if (fusion->adapter_type == INVADER_SERIES)
++		if (fusion->adapter_type >= INVADER_SERIES)
+ 			io_request->IoFlags |=
+ 				cpu_to_le16(MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH);
+ 
+@@ -2995,7 +2998,7 @@ build_mpt_mfi_pass_thru(struct megasas_instance *instance,
+ 
+ 	io_req = cmd->io_request;
+ 
+-	if (fusion->adapter_type == INVADER_SERIES) {
++	if (fusion->adapter_type >= INVADER_SERIES) {
+ 		struct MPI25_IEEE_SGE_CHAIN64 *sgl_ptr_end =
+ 			(struct MPI25_IEEE_SGE_CHAIN64 *)&io_req->SGL;
+ 		sgl_ptr_end += fusion->max_sge_in_main_msg - 1;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index 2de12b4..b24262a 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -107,6 +107,7 @@ enum MR_RAID_FLAGS_IO_SUB_TYPE {
+ enum MR_FUSION_ADAPTER_TYPE {
+ 	THUNDERBOLT_SERIES = 0,
+ 	INVADER_SERIES = 1,
++	VENTURA_SERIES = 2,
+ };
+ 
+ /*
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0007-scsi-mpt3sas-Increased-Additional-MSIX-support-for-S.patch b/SOURCES/centos-linux-3.10-0007-scsi-mpt3sas-Increased-Additional-MSIX-support-for-S.patch
new file mode 100644
index 0000000..45b0c9f
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0007-scsi-mpt3sas-Increased-Additional-MSIX-support-for-S.patch
@@ -0,0 +1,141 @@
+From bd2314e40123381058f15b3ae49616d1cccb4f44 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:38 +0530
+Subject: [PATCH 07/11] scsi: mpt3sas: Increased/Additional MSIX support for
+ SAS35 devices.
+
+For SAS35 devices MSIX vectors are inceased to 128 from 96. To support this
+Reply post host index register count is increased to 16. Also variable
+msix96_vector is replaced with combined_reply_queue and variable
+combined_reply_index_count is added to set different values for SAS3 and
+SAS35 devices.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.c  | 14 +++++++-------
+ drivers/scsi/mpt3sas/mpt3sas_base.h  |  8 +++++---
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c | 11 +++++++++--
+ 3 files changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
+index ac87e12..b26fa23 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
+@@ -1079,7 +1079,7 @@ _base_interrupt(int irq, void *bus_id)
+ 	 * new reply host index value in ReplyPostIndex Field and msix_index
+ 	 * value in MSIxIndex field.
+ 	 */
+-	if (ioc->msix96_vector)
++	if (ioc->combined_reply_queue)
+ 		writel(reply_q->reply_post_host_index | ((msix_index  & 7) <<
+ 			MPI2_RPHI_MSIX_INDEX_SHIFT),
+ 			ioc->replyPostRegisterIndex[msix_index/8]);
+@@ -2053,7 +2053,7 @@ mpt3sas_base_unmap_resources(struct MPT3SAS_ADAPTER *ioc)
+ 	_base_free_irq(ioc);
+ 	_base_disable_msix(ioc);
+ 
+-	if (ioc->msix96_vector) {
++	if (ioc->combined_reply_queue) {
+ 		kfree(ioc->replyPostRegisterIndex);
+ 		ioc->replyPostRegisterIndex = NULL;
+ 	}
+@@ -2163,7 +2163,7 @@ mpt3sas_base_map_resources(struct MPT3SAS_ADAPTER *ioc)
+ 	/* Use the Combined reply queue feature only for SAS3 C0 & higher
+ 	 * revision HBAs and also only when reply queue count is greater than 8
+ 	 */
+-	if (ioc->msix96_vector && ioc->reply_queue_count > 8) {
++	if (ioc->combined_reply_queue && ioc->reply_queue_count > 8) {
+ 		/* Determine the Supplemental Reply Post Host Index Registers
+ 		 * Addresse. Supplemental Reply Post Host Index Registers
+ 		 * starts at offset MPI25_SUP_REPLY_POST_HOST_INDEX_OFFSET and
+@@ -2171,7 +2171,7 @@ mpt3sas_base_map_resources(struct MPT3SAS_ADAPTER *ioc)
+ 		 * MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET from previous one.
+ 		 */
+ 		ioc->replyPostRegisterIndex = kcalloc(
+-		     MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT,
++		     ioc->combined_reply_index_count,
+ 		     sizeof(resource_size_t *), GFP_KERNEL);
+ 		if (!ioc->replyPostRegisterIndex) {
+ 			dfailprintk(ioc, printk(MPT3SAS_FMT
+@@ -2181,14 +2181,14 @@ mpt3sas_base_map_resources(struct MPT3SAS_ADAPTER *ioc)
+ 			goto out_fail;
+ 		}
+ 
+-		for (i = 0; i < MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT; i++) {
++		for (i = 0; i < ioc->combined_reply_index_count; i++) {
+ 			ioc->replyPostRegisterIndex[i] = (resource_size_t *)
+ 			     ((u8 *)&ioc->chip->Doorbell +
+ 			     MPI25_SUP_REPLY_POST_HOST_INDEX_OFFSET +
+ 			     (i * MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET));
+ 		}
+ 	} else
+-		ioc->msix96_vector = 0;
++		ioc->combined_reply_queue = 0;
+ 
+ 	list_for_each_entry(reply_q, &ioc->reply_queue_list, list)
+ 		pr_info(MPT3SAS_FMT "%s: IRQ %d\n",
+@@ -5161,7 +5161,7 @@ _base_make_ioc_operational(struct MPT3SAS_ADAPTER *ioc, int sleep_flag)
+ 
+ 	/* initialize reply post host index */
+ 	list_for_each_entry(reply_q, &ioc->reply_queue_list, list) {
+-		if (ioc->msix96_vector)
++		if (ioc->combined_reply_queue)
+ 			writel((reply_q->msix_index & 7)<<
+ 			   MPI2_RPHI_MSIX_INDEX_SHIFT,
+ 			   ioc->replyPostRegisterIndex[reply_q->msix_index/8]);
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index c3a39e8..240c360 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -304,8 +304,9 @@
+  * There are twelve Supplemental Reply Post Host Index Registers
+  * and each register is at offset 0x10 bytes from the previous one.
+  */
+-#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT 12
+-#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET (0x10)
++#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G3	12
++#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G35	16
++#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET	(0x10)
+ 
+ /* OEM Identifiers */
+ #define MFG10_OEM_ID_INVALID                   (0x00000000)
+@@ -1172,7 +1173,8 @@ struct MPT3SAS_ADAPTER {
+ 	u8		reply_queue_count;
+ 	struct list_head reply_queue_list;
+ 
+-	u8		msix96_vector;
++	u8		combined_reply_queue;
++	u8		combined_reply_index_count;
+ 	/* reply post register index */
+ 	resource_size_t	**replyPostRegisterIndex;
+ 
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index eaef45c..980c69d 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -8797,8 +8797,15 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ 		}
+ 		if ((ioc->hba_mpi_version_belonged == MPI25_VERSION &&
+ 			pdev->revision >= SAS3_PCI_DEVICE_C0_REVISION) ||
+-			(ioc->hba_mpi_version_belonged == MPI26_VERSION))
+-			ioc->msix96_vector = 1;
++			(ioc->hba_mpi_version_belonged == MPI26_VERSION)) {
++			ioc->combined_reply_queue = 1;
++			if (ioc->is_gen35_ioc)
++				ioc->combined_reply_index_count =
++				 MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G35;
++			else
++				ioc->combined_reply_index_count =
++				 MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G3;
++		}
+ 		break;
+ 	default:
+ 		return -ENODEV;
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0008-scsi-megaraid_sas-Enable-or-Disable-Fast-path-based-.patch b/SOURCES/centos-linux-3.10-0008-scsi-megaraid_sas-Enable-or-Disable-Fast-path-based-.patch
new file mode 100644
index 0000000..8b08508
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0008-scsi-megaraid_sas-Enable-or-Disable-Fast-path-based-.patch
@@ -0,0 +1,249 @@
+From 87029b097c79483c8a03c68a065a78973e0456db Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:50 -0500
+Subject: [PATCH 08/11] scsi: megaraid_sas: Enable or Disable Fast path based
+ on the PCI Threshold Bandwidth
+
+Large SEQ IO workload should sent as non fast path commands
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        |  8 +++++
+ drivers/scsi/megaraid/megaraid_sas_base.c   | 48 +++++++++++++++++++++++++++++
+ drivers/scsi/megaraid/megaraid_sas_fp.c     |  7 +++++
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 16 ++++++----
+ drivers/scsi/megaraid/megaraid_sas_fusion.h |  2 +-
+ 5 files changed, 74 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index d5205c4..f6ac1b2 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -1429,6 +1429,8 @@ enum FW_BOOT_CONTEXT {
+ #define MFI_1068_FW_HANDSHAKE_OFFSET		0x64
+ #define MFI_1068_FW_READY			0xDDDD0000
+ 
++#define MEGASAS_RAID1_FAST_PATH_STATUS_CHECK_INTERVAL HZ
++
+ #define MR_MAX_REPLY_QUEUES_OFFSET              0X0000001F
+ #define MR_MAX_REPLY_QUEUES_EXT_OFFSET          0X003FC000
+ #define MR_MAX_REPLY_QUEUES_EXT_OFFSET_SHIFT    14
+@@ -2101,6 +2103,10 @@ struct megasas_instance {
+ 	atomic_t ldio_outstanding;
+ 	atomic_t fw_reset_no_pci_access;
+ 
++	atomic64_t bytes_wrote; /* used for raid1 fast path enable or disable */
++	atomic_t r1_write_fp_capable;
++
++
+ 	struct megasas_instance_template *instancet;
+ 	struct tasklet_struct isr_tasklet;
+ 	struct work_struct work_init;
+@@ -2143,6 +2149,7 @@ struct megasas_instance {
+ 	long reset_flags;
+ 	struct mutex reset_mutex;
+ 	struct timer_list sriov_heartbeat_timer;
++	struct timer_list r1_fp_hold_timer;
+ 	char skip_heartbeat_timer_del;
+ 	u8 requestorId;
+ 	char PlasmaFW111;
+@@ -2159,6 +2166,7 @@ struct megasas_instance {
+ 	bool is_ventura;
+ 	bool msix_combined;
+ 	u16 max_raid_mapsize;
++	u64 pci_threshold_bandwidth; /* used to control the fp writes */
+ };
+ struct MR_LD_VF_MAP {
+ 	u32 size;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index 8b0c686..cab3be8 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -1959,6 +1959,9 @@ void megaraid_sas_kill_hba(struct megasas_instance *instance)
+ 	}
+ 	/* Complete outstanding ioctls when adapter is killed */
+ 	megasas_complete_outstanding_ioctls(instance);
++	if (instance->is_ventura)
++		del_timer_sync(&instance->r1_fp_hold_timer);
++
+ }
+ 
+  /**
+@@ -2457,6 +2460,24 @@ void megasas_sriov_heartbeat_handler(unsigned long instance_addr)
+ 	}
+ }
+ 
++/*Handler for disabling/enabling raid 1 fast paths*/
++void megasas_change_r1_fp_status(unsigned long instance_addr)
++{
++	struct megasas_instance *instance =
++			(struct megasas_instance *)instance_addr;
++	if (atomic64_read(&instance->bytes_wrote) >=
++					instance->pci_threshold_bandwidth) {
++
++		atomic64_set(&instance->bytes_wrote, 0);
++		atomic_set(&instance->r1_write_fp_capable, 0);
++	} else {
++		atomic64_set(&instance->bytes_wrote, 0);
++		atomic_set(&instance->r1_write_fp_capable, 1);
++	}
++	mod_timer(&instance->r1_fp_hold_timer,
++	 jiffies + MEGASAS_RAID1_FAST_PATH_STATUS_CHECK_INTERVAL);
++}
++
+ /**
+  * megasas_wait_for_outstanding -	Wait for all outstanding cmds
+  * @instance:				Adapter soft state
+@@ -5403,6 +5424,17 @@ static int megasas_init_fw(struct megasas_instance *instance)
+ 			instance->skip_heartbeat_timer_del = 1;
+ 	}
+ 
++	if (instance->is_ventura) {
++		atomic64_set(&instance->bytes_wrote, 0);
++		atomic_set(&instance->r1_write_fp_capable, 1);
++		megasas_start_timer(instance,
++			    &instance->r1_fp_hold_timer,
++			    megasas_change_r1_fp_status,
++			    MEGASAS_RAID1_FAST_PATH_STATUS_CHECK_INTERVAL);
++				dev_info(&instance->pdev->dev, "starting the raid 1 fp timer with interval %d\n",
++				MEGASAS_RAID1_FAST_PATH_STATUS_CHECK_INTERVAL);
++	}
++
+ 	return 0;
+ 
+ fail_get_ld_pd_list:
+@@ -6202,6 +6234,9 @@ megasas_suspend(struct pci_dev *pdev, pm_message_t state)
+ 	if (instance->requestorId && !instance->skip_heartbeat_timer_del)
+ 		del_timer_sync(&instance->sriov_heartbeat_timer);
+ 
++	if (instance->is_ventura)
++		del_timer_sync(&instance->r1_fp_hold_timer);
++
+ 	megasas_flush_cache(instance);
+ 	megasas_shutdown_controller(instance, MR_DCMD_HIBERNATE_SHUTDOWN);
+ 
+@@ -6321,6 +6356,16 @@ megasas_resume(struct pci_dev *pdev)
+ 	megasas_setup_jbod_map(instance);
+ 	instance->unload = 0;
+ 
++	if (instance->is_ventura) {
++		atomic64_set(&instance->bytes_wrote, 0);
++		atomic_set(&instance->r1_write_fp_capable, 1);
++		megasas_start_timer(instance,
++			    &instance->r1_fp_hold_timer,
++			    megasas_change_r1_fp_status,
++			    MEGASAS_RAID1_FAST_PATH_STATUS_CHECK_INTERVAL);
++	}
++
++
+ 	/*
+ 	 * Initiate AEN (Asynchronous Event Notification)
+ 	 */
+@@ -6381,6 +6426,9 @@ static void megasas_detach_one(struct pci_dev *pdev)
+ 	if (instance->requestorId && !instance->skip_heartbeat_timer_del)
+ 		del_timer_sync(&instance->sriov_heartbeat_timer);
+ 
++	if (instance->is_ventura)
++		del_timer_sync(&instance->r1_fp_hold_timer);
++
+ 	if (instance->fw_crash_state != UNAVAILABLE)
+ 		megasas_free_host_crash_buffer(instance);
+ 	scsi_remove_host(instance->host);
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fp.c b/drivers/scsi/megaraid/megaraid_sas_fp.c
+index e45affe..5cad7c6 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fp.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fp.c
+@@ -197,6 +197,9 @@ void MR_PopulateDrvRaidMap(struct megasas_instance *instance)
+ 
+ 	if (instance->max_raid_mapsize) {
+ 		fw_map_dyn = fusion->ld_map[(instance->map_id & 1)];
++		if (fw_map_dyn->pci_threshold_bandwidth)
++			instance->pci_threshold_bandwidth =
++			le64_to_cpu(fw_map_dyn->pci_threshold_bandwidth);
+ #if VD_EXT_DEBUG
+ 		dev_dbg(&instance->pdev->dev, "raidMapSize 0x%x fw_map_dyn->descTableOffset 0x%x\n",
+ 			le32_to_cpu(fw_map_dyn->raid_map_size),
+@@ -204,6 +207,8 @@ void MR_PopulateDrvRaidMap(struct megasas_instance *instance)
+ 		dev_dbg(&instance->pdev->dev, "descTableSize 0x%x descTableNumElements 0x%x\n",
+ 			le32_to_cpu(fw_map_dyn->desc_table_size),
+ 			le32_to_cpu(fw_map_dyn->desc_table_num_elements));
++		dev_dbg(&instance->pdev->dev, "PCIThreasholdBandwidth %llu\n",
++			instance->pci_threshold_bandwidth);
+ 		dev_dbg(&instance->pdev->dev, "drv map %p ldCount %d\n",
+ 			drv_map, fw_map_dyn->ld_count);
+ #endif
+@@ -434,6 +439,8 @@ void MR_PopulateDrvRaidMap(struct megasas_instance *instance)
+ 			sizeof(struct MR_DEV_HANDLE_INFO) *
+ 			MAX_RAIDMAP_PHYSICAL_DEVICES);
+ 	}
++	if (instance->is_ventura && !instance->pci_threshold_bandwidth)
++		instance->pci_threshold_bandwidth = ULLONG_MAX;
+ }
+ 
+ /*
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 1802c57..5689a44 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -95,6 +95,7 @@ extern unsigned int resetwaittime;
+ extern unsigned int dual_qdepth_disable;
+ static void megasas_free_rdpq_fusion(struct megasas_instance *instance);
+ static void megasas_free_reply_fusion(struct megasas_instance *instance);
++void megasas_change_r1_fp_status(unsigned long instance_addr);
+ 
+ 
+ 
+@@ -2628,8 +2629,9 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 	 *	to get new command
+ 	 */
+ 	if (cmd->is_raid_1_fp_write &&
+-		atomic_inc_return(&instance->fw_outstanding) >
+-			(instance->host->can_queue)) {
++		(atomic_inc_return(&instance->fw_outstanding) >
++			(instance->host->can_queue) ||
++		(!atomic_read(&instance->r1_write_fp_capable)))) {
+ 		megasas_fpio_to_ldio(instance, cmd, cmd->scmd);
+ 		atomic_dec(&instance->fw_outstanding);
+ 	} else if (cmd->is_raid_1_fp_write) {
+@@ -2638,17 +2640,19 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 		megasas_prepare_secondRaid1_IO(instance, cmd, r1_cmd);
+ 	}
+ 
+-
+ 	/*
+ 	 * Issue the command to the FW
+ 	 */
++	if (scmd->sc_data_direction == PCI_DMA_TODEVICE && instance->is_ventura)
++		atomic64_add(scsi_bufflen(scmd), &instance->bytes_wrote);
+ 
+ 	megasas_fire_cmd_fusion(instance, req_desc, instance->is_ventura);
+ 
+-	if (r1_cmd)
++	if (r1_cmd) {
++		atomic64_add(scsi_bufflen(scmd), &instance->bytes_wrote);
+ 		megasas_fire_cmd_fusion(instance, r1_cmd->request_desc,
+-				instance->is_ventura);
+-
++			instance->is_ventura);
++	}
+ 
+ 	return 0;
+ }
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index b24262a..f7384c1 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -977,7 +977,7 @@ struct MR_FW_RAID_MAP_DYNAMIC {
+ 	u32 desc_table_size;  /* Total Size of desc table */
+ 	/* Total Number of elements in the desc table */
+ 	u32 desc_table_num_elements;
+-	u64	reserved1;
++	u64	pci_threshold_bandwidth;
+ 	u32	reserved2[3];	/*future use */
+ 	/* timeout value used by driver in FP IOs */
+ 	u8 fp_pd_io_timeout_sec;
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0008-scsi-mpt3sas-set-EEDP-escape-flags-for-SAS35-devices.patch b/SOURCES/centos-linux-3.10-0008-scsi-mpt3sas-set-EEDP-escape-flags-for-SAS35-devices.patch
new file mode 100644
index 0000000..f099d87
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0008-scsi-mpt3sas-set-EEDP-escape-flags-for-SAS35-devices.patch
@@ -0,0 +1,43 @@
+From cf10a0af2c72e9972fa436aa6c2420a00ac69e46 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:39 +0530
+Subject: [PATCH 08/11] scsi: mpt3sas: set EEDP-escape-flags for SAS35 devices.
+
+An UNMAP command on a PI formatted device will leave the Logical Block
+Application Tag and Logical Block Reference Tag as all F's (for those LBAs
+that are unmapped). To avoid IO errors if those LBAs are subsequently read
+before they are written with valid tag fields, the MPI SCSI IO requests
+need to set the EEDPFlags element EEDP Escape Mode field, Bits [7:6]
+appropriately. A value of 2 should be set to disable all PI checks if the
+Logical Block Application Tag is 0xFFFF for PI types 1 and 2.  A value
+of 3 should be set to disable all PI checks if the Logical Block
+Application Tag is 0xFFFF and the Logical Block Reference Tag is
+0xFFFFFFFF for PI type 3.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index 980c69d..0ff2ed3 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -4040,6 +4040,9 @@ _scsih_setup_eedp(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
+ 
+ 	mpi_request_3v->EEDPBlockSize =
+ 	    cpu_to_le16(scmd->device->sector_size);
++
++	if (ioc->is_gen35_ioc)
++		eedp_flags |= MPI25_SCSIIO_EEDPFLAGS_APPTAG_DISABLE_MODE;
+ 	mpi_request->EEDPFlags = cpu_to_le16(eedp_flags);
+ }
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0009-scsi-megaraid_sas-ldio_outstanding-variable-is-not-d.patch b/SOURCES/centos-linux-3.10-0009-scsi-megaraid_sas-ldio_outstanding-variable-is-not-d.patch
new file mode 100644
index 0000000..5db5c08
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0009-scsi-megaraid_sas-ldio_outstanding-variable-is-not-d.patch
@@ -0,0 +1,51 @@
+From b151f44de5717ff9be9695f744c9bd0060b3fcb4 Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:51 -0500
+Subject: [PATCH 09/11] scsi: megaraid_sas: ldio_outstanding variable is not
+ decremented in completion path
+
+ldio outstanding variable needs to be decremented in io completion path for
+iMR dual queue depth
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas_fusion.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 5689a44..82dd2da 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -2580,7 +2580,6 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance,
+ 
+ 	if (atomic_inc_return(&instance->fw_outstanding) >
+ 			instance->host->can_queue) {
+-		dev_err(&instance->pdev->dev, "Throttle IOs beyond Controller queue depth\n");
+ 		atomic_dec(&instance->fw_outstanding);
+ 		return SCSI_MLQUEUE_HOST_BUSY;
+ 	}
+@@ -2811,6 +2810,9 @@ complete_cmd_fusion(struct megasas_instance *instance, u32 MSIxIndex)
+ 					extStatus, data_length, sense);
+ 				scsi_io_req->RaidContext.raid_context.status = 0;
+ 				scsi_io_req->RaidContext.raid_context.ex_status = 0;
++				if (instance->ldio_threshold
++					&& megasas_cmd_type(scmd_local) == READ_WRITE_LDIO)
++					atomic_dec(&instance->ldio_outstanding);
+ 				megasas_return_cmd_fusion(instance, cmd_fusion);
+ 				scsi_dma_unmap(scmd_local);
+ 				scmd_local->scsi_done(scmd_local);
+@@ -3955,7 +3957,8 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
+ 				scmd_local->result =
+ 					megasas_check_mpio_paths(instance,
+ 							scmd_local);
+-				if (megasas_cmd_type(scmd_local) == READ_WRITE_LDIO)
++				if (instance->ldio_threshold &&
++					megasas_cmd_type(scmd_local) == READ_WRITE_LDIO)
+ 					atomic_dec(&instance->ldio_outstanding);
+ 				megasas_return_cmd_fusion(instance, cmd_fusion);
+ 				scsi_dma_unmap(scmd_local);
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0009-scsi-mpt3sas-Use-the-new-MPI-2.6-32-bit-Atomic-Reque.patch b/SOURCES/centos-linux-3.10-0009-scsi-mpt3sas-Use-the-new-MPI-2.6-32-bit-Atomic-Reque.patch
new file mode 100644
index 0000000..b867d5b
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0009-scsi-mpt3sas-Use-the-new-MPI-2.6-32-bit-Atomic-Reque.patch
@@ -0,0 +1,581 @@
+From 081008132942c3c50c43d1fded60080cfa8cda91 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:40 +0530
+Subject: [PATCH 09/11] scsi: mpt3sas: Use the new MPI 2.6 32-bit Atomic
+ Request Descriptors for SAS35 devices.
+
+Support Atomic Request Descriptors for Ventura/SAS35 devices.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.c      | 141 +++++++++++++++++++++++++++----
+ drivers/scsi/mpt3sas/mpt3sas_base.h      |  18 ++--
+ drivers/scsi/mpt3sas/mpt3sas_config.c    |   2 +-
+ drivers/scsi/mpt3sas/mpt3sas_ctl.c       |  22 ++---
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c     |  24 +++---
+ drivers/scsi/mpt3sas/mpt3sas_transport.c |   8 +-
+ 6 files changed, 161 insertions(+), 54 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
+index b26fa23..9ef253b 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
+@@ -850,7 +850,7 @@ _base_async_event(struct MPT3SAS_ADAPTER *ioc, u8 msix_index, u32 reply)
+ 	ack_request->EventContext = mpi_reply->EventContext;
+ 	ack_request->VF_ID = 0;  /* TODO */
+ 	ack_request->VP_ID = 0;
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 
+  out:
+ 
+@@ -2454,15 +2454,15 @@ _base_writeq(__u64 b, volatile void __iomem *addr, spinlock_t *writeq_lock)
+ #endif
+ 
+ /**
+- * mpt3sas_base_put_smid_scsi_io - send SCSI_IO request to firmware
++ * _base_put_smid_scsi_io - send SCSI_IO request to firmware
+  * @ioc: per adapter object
+  * @smid: system request message index
+  * @handle: device handle
+  *
+  * Return nothing.
+  */
+-void
+-mpt3sas_base_put_smid_scsi_io(struct MPT3SAS_ADAPTER *ioc, u16 smid, u16 handle)
++static void
++_base_put_smid_scsi_io(struct MPT3SAS_ADAPTER *ioc, u16 smid, u16 handle)
+ {
+ 	Mpi2RequestDescriptorUnion_t descriptor;
+ 	u64 *request = (u64 *)&descriptor;
+@@ -2478,15 +2478,15 @@ mpt3sas_base_put_smid_scsi_io(struct MPT3SAS_ADAPTER *ioc, u16 smid, u16 handle)
+ }
+ 
+ /**
+- * mpt3sas_base_put_smid_fast_path - send fast path request to firmware
++ * _base_put_smid_fast_path - send fast path request to firmware
+  * @ioc: per adapter object
+  * @smid: system request message index
+  * @handle: device handle
+  *
+  * Return nothing.
+  */
+-void
+-mpt3sas_base_put_smid_fast_path(struct MPT3SAS_ADAPTER *ioc, u16 smid,
++static void
++_base_put_smid_fast_path(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+ 	u16 handle)
+ {
+ 	Mpi2RequestDescriptorUnion_t descriptor;
+@@ -2503,14 +2503,14 @@ mpt3sas_base_put_smid_fast_path(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+ }
+ 
+ /**
+- * mpt3sas_base_put_smid_hi_priority - send Task Managment request to firmware
++ * _base_put_smid_hi_priority - send Task Management request to firmware
+  * @ioc: per adapter object
+  * @smid: system request message index
+  * @msix_task: msix_task will be same as msix of IO incase of task abort else 0.
+  * Return nothing.
+  */
+-void
+-mpt3sas_base_put_smid_hi_priority(struct MPT3SAS_ADAPTER *ioc, u16 smid,
++static void
++_base_put_smid_hi_priority(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+ 	u16 msix_task)
+ {
+ 	Mpi2RequestDescriptorUnion_t descriptor;
+@@ -2527,14 +2527,14 @@ mpt3sas_base_put_smid_hi_priority(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+ }
+ 
+ /**
+- * mpt3sas_base_put_smid_default - Default, primarily used for config pages
++ * _base_put_smid_default - Default, primarily used for config pages
+  * @ioc: per adapter object
+  * @smid: system request message index
+  *
+  * Return nothing.
+  */
+-void
+-mpt3sas_base_put_smid_default(struct MPT3SAS_ADAPTER *ioc, u16 smid)
++static void
++_base_put_smid_default(struct MPT3SAS_ADAPTER *ioc, u16 smid)
+ {
+ 	Mpi2RequestDescriptorUnion_t descriptor;
+ 	u64 *request = (u64 *)&descriptor;
+@@ -2549,6 +2549,95 @@ mpt3sas_base_put_smid_default(struct MPT3SAS_ADAPTER *ioc, u16 smid)
+ }
+ 
+ /**
++* _base_put_smid_scsi_io_atomic - send SCSI_IO request to firmware using
++*   Atomic Request Descriptor
++* @ioc: per adapter object
++* @smid: system request message index
++* @handle: device handle, unused in this function, for function type match
++*
++* Return nothing.
++*/
++static void
++_base_put_smid_scsi_io_atomic(struct MPT3SAS_ADAPTER *ioc, u16 smid,
++	u16 handle)
++{
++	Mpi26AtomicRequestDescriptor_t descriptor;
++	u32 *request = (u32 *)&descriptor;
++
++	descriptor.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO;
++	descriptor.MSIxIndex = _base_get_msix_index(ioc);
++	descriptor.SMID = cpu_to_le16(smid);
++
++	writel(cpu_to_le32(*request), &ioc->chip->AtomicRequestDescriptorPost);
++}
++
++/**
++ * _base_put_smid_fast_path_atomic - send fast path request to firmware
++ * using Atomic Request Descriptor
++ * @ioc: per adapter object
++ * @smid: system request message index
++ * @handle: device handle, unused in this function, for function type match
++ * Return nothing
++ */
++static void
++_base_put_smid_fast_path_atomic(struct MPT3SAS_ADAPTER *ioc, u16 smid,
++	u16 handle)
++{
++	Mpi26AtomicRequestDescriptor_t descriptor;
++	u32 *request = (u32 *)&descriptor;
++
++	descriptor.RequestFlags = MPI25_REQ_DESCRIPT_FLAGS_FAST_PATH_SCSI_IO;
++	descriptor.MSIxIndex = _base_get_msix_index(ioc);
++	descriptor.SMID = cpu_to_le16(smid);
++
++	writel(cpu_to_le32(*request), &ioc->chip->AtomicRequestDescriptorPost);
++}
++
++/**
++ * _base_put_smid_hi_priority_atomic - send Task Management request to
++ * firmware using Atomic Request Descriptor
++ * @ioc: per adapter object
++ * @smid: system request message index
++ * @msix_task: msix_task will be same as msix of IO incase of task abort else 0
++ *
++ * Return nothing.
++ */
++static void
++_base_put_smid_hi_priority_atomic(struct MPT3SAS_ADAPTER *ioc, u16 smid,
++	u16 msix_task)
++{
++	Mpi26AtomicRequestDescriptor_t descriptor;
++	u32 *request = (u32 *)&descriptor;
++
++	descriptor.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY;
++	descriptor.MSIxIndex = msix_task;
++	descriptor.SMID = cpu_to_le16(smid);
++
++	writel(cpu_to_le32(*request), &ioc->chip->AtomicRequestDescriptorPost);
++}
++
++/**
++ * _base_put_smid_default - Default, primarily used for config pages
++ * use Atomic Request Descriptor
++ * @ioc: per adapter object
++ * @smid: system request message index
++ *
++ * Return nothing.
++ */
++static void
++_base_put_smid_default_atomic(struct MPT3SAS_ADAPTER *ioc, u16 smid)
++{
++	Mpi26AtomicRequestDescriptor_t descriptor;
++	u32 *request = (u32 *)&descriptor;
++
++	descriptor.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
++	descriptor.MSIxIndex = _base_get_msix_index(ioc);
++	descriptor.SMID = cpu_to_le16(smid);
++
++	writel(cpu_to_le32(*request), &ioc->chip->AtomicRequestDescriptorPost);
++}
++
++/**
+  * _base_display_OEMs_branding - Display branding string
+  * @ioc: per adapter object
+  *
+@@ -4058,7 +4147,7 @@ mpt3sas_base_sas_iounit_control(struct MPT3SAS_ADAPTER *ioc,
+ 	    mpi_request->Operation == MPI2_SAS_OP_PHY_LINK_RESET)
+ 		ioc->ioc_link_reset_in_progress = 1;
+ 	init_completion(&ioc->base_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->base_cmds.done,
+ 	    msecs_to_jiffies(10000));
+ 	if ((mpi_request->Operation == MPI2_SAS_OP_PHY_HARD_RESET ||
+@@ -4160,7 +4249,7 @@ mpt3sas_base_scsi_enclosure_processor(struct MPT3SAS_ADAPTER *ioc,
+ 	ioc->base_cmds.smid = smid;
+ 	memcpy(request, mpi_request, sizeof(Mpi2SepReply_t));
+ 	init_completion(&ioc->base_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->base_cmds.done,
+ 	    msecs_to_jiffies(10000));
+ 	if (!(ioc->base_cmds.status & MPT3_CMD_COMPLETE)) {
+@@ -4351,6 +4440,8 @@ _base_get_ioc_facts(struct MPT3SAS_ADAPTER *ioc, int sleep_flag)
+ 	if ((facts->IOCCapabilities &
+ 	      MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE))
+ 		ioc->rdpq_array_capable = 1;
++	if (facts->IOCCapabilities & MPI26_IOCFACTS_CAPABILITY_ATOMIC_REQ)
++		ioc->atomic_desc_capable = 1;
+ 	facts->FWVersion.Word = le32_to_cpu(mpi_reply.FWVersion.Word);
+ 	facts->IOCRequestFrameSize =
+ 	    le16_to_cpu(mpi_reply.IOCRequestFrameSize);
+@@ -4582,7 +4673,7 @@ _base_send_port_enable(struct MPT3SAS_ADAPTER *ioc, int sleep_flag)
+ 	mpi_request->Function = MPI2_FUNCTION_PORT_ENABLE;
+ 
+ 	init_completion(&ioc->port_enable_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->port_enable_cmds.done,
+ 	    300*HZ);
+ 	if (!(ioc->port_enable_cmds.status & MPT3_CMD_COMPLETE)) {
+@@ -4646,7 +4737,7 @@ mpt3sas_port_enable(struct MPT3SAS_ADAPTER *ioc)
+ 	memset(mpi_request, 0, sizeof(Mpi2PortEnableRequest_t));
+ 	mpi_request->Function = MPI2_FUNCTION_PORT_ENABLE;
+ 
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	return 0;
+ }
+ 
+@@ -4767,7 +4858,7 @@ _base_event_notification(struct MPT3SAS_ADAPTER *ioc, int sleep_flag)
+ 		mpi_request->EventMasks[i] =
+ 		    cpu_to_le32(ioc->event_masks[i]);
+ 	init_completion(&ioc->base_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->base_cmds.done, 30*HZ);
+ 	if (!(ioc->base_cmds.status & MPT3_CMD_COMPLETE)) {
+ 		pr_err(MPT3SAS_FMT "%s: timeout\n",
+@@ -5316,9 +5407,23 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
+ 		ioc->build_sg = &_base_build_sg_ieee;
+ 		ioc->build_zero_len_sge = &_base_build_zero_len_sge_ieee;
+ 		ioc->sge_size_ieee = sizeof(Mpi2IeeeSgeSimple64_t);
++
+ 		break;
+ 	}
+ 
++	if (ioc->atomic_desc_capable) {
++		ioc->put_smid_default = &_base_put_smid_default_atomic;
++		ioc->put_smid_scsi_io = &_base_put_smid_scsi_io_atomic;
++		ioc->put_smid_fast_path = &_base_put_smid_fast_path_atomic;
++		ioc->put_smid_hi_priority = &_base_put_smid_hi_priority_atomic;
++	} else {
++		ioc->put_smid_default = &_base_put_smid_default;
++		ioc->put_smid_scsi_io = &_base_put_smid_scsi_io;
++		ioc->put_smid_fast_path = &_base_put_smid_fast_path;
++		ioc->put_smid_hi_priority = &_base_put_smid_hi_priority;
++	}
++
++
+ 	/*
+ 	 * These function pointers for other requests that don't
+ 	 * the require IEEE scatter gather elements.
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index 240c360..b8c8be4 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -740,7 +740,10 @@ typedef void (*MPT_BUILD_SG)(struct MPT3SAS_ADAPTER *ioc, void *psge,
+ typedef void (*MPT_BUILD_ZERO_LEN_SGE)(struct MPT3SAS_ADAPTER *ioc,
+ 		void *paddr);
+ 
+-
++/* To support atomic and non atomic descriptors*/
++typedef void (*PUT_SMID_IO_FP_HIP) (struct MPT3SAS_ADAPTER *ioc, u16 smid,
++	u16 funcdep);
++typedef void (*PUT_SMID_DEFAULT) (struct MPT3SAS_ADAPTER *ioc, u16 smid);
+ 
+ /* IOC Facts and Port Facts converted from little endian to cpu */
+ union mpi3_version_union {
+@@ -1208,6 +1211,12 @@ struct MPT3SAS_ADAPTER {
+ 	void		*device_remove_in_progress;
+ 	u16		device_remove_in_progress_sz;
+ 	u8		is_gen35_ioc;
++	u8		atomic_desc_capable;
++	PUT_SMID_IO_FP_HIP put_smid_scsi_io;
++	PUT_SMID_IO_FP_HIP put_smid_fast_path;
++	PUT_SMID_IO_FP_HIP put_smid_hi_priority;
++	PUT_SMID_DEFAULT put_smid_default;
++
+ };
+ 
+ typedef u8 (*MPT_CALLBACK)(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
+@@ -1253,13 +1262,6 @@ u16 mpt3sas_base_get_smid_scsiio(struct MPT3SAS_ADAPTER *ioc, u8 cb_idx,
+ 
+ u16 mpt3sas_base_get_smid(struct MPT3SAS_ADAPTER *ioc, u8 cb_idx);
+ void mpt3sas_base_free_smid(struct MPT3SAS_ADAPTER *ioc, u16 smid);
+-void mpt3sas_base_put_smid_scsi_io(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+-	u16 handle);
+-void mpt3sas_base_put_smid_fast_path(struct MPT3SAS_ADAPTER *ioc, u16 smid,
+-	u16 handle);
+-void mpt3sas_base_put_smid_hi_priority(struct MPT3SAS_ADAPTER *ioc,
+-	u16 smid, u16 msix_task);
+-void mpt3sas_base_put_smid_default(struct MPT3SAS_ADAPTER *ioc, u16 smid);
+ void mpt3sas_base_initialize_callback_handler(void);
+ u8 mpt3sas_base_register_callback_handler(MPT_CALLBACK cb_func);
+ void mpt3sas_base_release_callback_handler(u8 cb_idx);
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_config.c b/drivers/scsi/mpt3sas/mpt3sas_config.c
+index a6914ec..b024e14 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_config.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_config.c
+@@ -385,7 +385,7 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
+ 	memcpy(config_request, mpi_request, sizeof(Mpi2ConfigRequest_t));
+ 	_config_display_some_debug(ioc, smid, "config_request", NULL);
+ 	init_completion(&ioc->config_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->config_cmds.done,
+ 	    timeout*HZ);
+ 	if (!(ioc->config_cmds.status & MPT3_CMD_COMPLETE)) {
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+index a66c0c8..8273e8c 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+@@ -813,9 +813,9 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 		ioc->build_sg(ioc, psge, data_out_dma, data_out_sz,
+ 		    data_in_dma, data_in_sz);
+ 		if (mpi_request->Function == MPI2_FUNCTION_SCSI_IO_REQUEST)
+-			mpt3sas_base_put_smid_scsi_io(ioc, smid, device_handle);
++			ioc->put_smid_scsi_io(ioc, smid, device_handle);
+ 		else
+-			mpt3sas_base_put_smid_default(ioc, smid);
++			ioc->put_smid_default(ioc, smid);
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_SCSI_TASK_MGMT:
+@@ -850,7 +850,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 		    tm_request->DevHandle));
+ 		ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz,
+ 		    data_in_dma, data_in_sz);
+-		mpt3sas_base_put_smid_hi_priority(ioc, smid, 0);
++		ioc->put_smid_hi_priority(ioc, smid, 0);
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_SMP_PASSTHROUGH:
+@@ -881,7 +881,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 		}
+ 		ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma,
+ 		    data_in_sz);
+-		mpt3sas_base_put_smid_default(ioc, smid);
++		ioc->put_smid_default(ioc, smid);
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_SATA_PASSTHROUGH:
+@@ -896,7 +896,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 		}
+ 		ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma,
+ 		    data_in_sz);
+-		mpt3sas_base_put_smid_default(ioc, smid);
++		ioc->put_smid_default(ioc, smid);
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_FW_DOWNLOAD:
+@@ -904,7 +904,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 	{
+ 		ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma,
+ 		    data_in_sz);
+-		mpt3sas_base_put_smid_default(ioc, smid);
++		ioc->put_smid_default(ioc, smid);
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_TOOLBOX:
+@@ -919,7 +919,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 			ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz,
+ 				data_in_dma, data_in_sz);
+ 		}
+-		mpt3sas_base_put_smid_default(ioc, smid);
++		ioc->put_smid_default(ioc, smid);
+ 		break;
+ 	}
+ 	case MPI2_FUNCTION_SAS_IO_UNIT_CONTROL:
+@@ -938,7 +938,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
+ 	default:
+ 		ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz,
+ 		    data_in_dma, data_in_sz);
+-		mpt3sas_base_put_smid_default(ioc, smid);
++		ioc->put_smid_default(ioc, smid);
+ 		break;
+ 	}
+ 
+@@ -1533,7 +1533,7 @@ _ctl_diag_register_2(struct MPT3SAS_ADAPTER *ioc,
+ 			cpu_to_le32(ioc->product_specific[buffer_type][i]);
+ 
+ 	init_completion(&ioc->ctl_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
+ 	    MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
+ 
+@@ -1882,7 +1882,7 @@ mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type,
+ 	mpi_request->VP_ID = 0;
+ 
+ 	init_completion(&ioc->ctl_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
+ 	    MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
+ 
+@@ -2150,7 +2150,7 @@ _ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
+ 	mpi_request->VP_ID = 0;
+ 
+ 	init_completion(&ioc->ctl_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
+ 	    MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
+ 
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index 0ff2ed3..0dcf826 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -2339,7 +2339,7 @@ mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, uint channel,
+ 		msix_task = scsi_lookup->msix_io;
+ 	else
+ 		msix_task = 0;
+-	mpt3sas_base_put_smid_hi_priority(ioc, smid, msix_task);
++	ioc->put_smid_hi_priority(ioc, smid, msix_task);
+ 	timeleft = wait_for_completion_timeout(&ioc->tm_cmds.done, timeout*HZ);
+ 	if (!(ioc->tm_cmds.status & MPT3_CMD_COMPLETE)) {
+ 		pr_err(MPT3SAS_FMT "%s: timeout\n",
+@@ -3252,7 +3252,7 @@ _scsih_tm_tr_send(struct MPT3SAS_ADAPTER *ioc, u16 handle)
+ 	mpi_request->DevHandle = cpu_to_le16(handle);
+ 	mpi_request->TaskType = MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET;
+ 	set_bit(handle, ioc->device_remove_in_progress);
+-	mpt3sas_base_put_smid_hi_priority(ioc, smid, 0);
++	ioc->put_smid_hi_priority(ioc, smid, 0);
+ 	mpt3sas_trigger_master(ioc, MASTER_TRIGGER_DEVICE_REMOVAL);
+ 
+ out:
+@@ -3351,7 +3351,7 @@ _scsih_tm_tr_complete(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
+ 	mpi_request->Function = MPI2_FUNCTION_SAS_IO_UNIT_CONTROL;
+ 	mpi_request->Operation = MPI2_SAS_OP_REMOVE_DEVICE;
+ 	mpi_request->DevHandle = mpi_request_tm->DevHandle;
+-	mpt3sas_base_put_smid_default(ioc, smid_sas_ctrl);
++	ioc->put_smid_default(ioc, smid_sas_ctrl);
+ 
+ 	return _scsih_check_for_pending_tm(ioc, smid);
+ }
+@@ -3446,7 +3446,7 @@ _scsih_tm_tr_volume_send(struct MPT3SAS_ADAPTER *ioc, u16 handle)
+ 	mpi_request->Function = MPI2_FUNCTION_SCSI_TASK_MGMT;
+ 	mpi_request->DevHandle = cpu_to_le16(handle);
+ 	mpi_request->TaskType = MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET;
+-	mpt3sas_base_put_smid_hi_priority(ioc, smid, 0);
++	ioc->put_smid_hi_priority(ioc, smid, 0);
+ }
+ 
+ /**
+@@ -3538,7 +3538,7 @@ _scsih_issue_delayed_event_ack(struct MPT3SAS_ADAPTER *ioc, u16 smid, u16 event,
+ 	ack_request->EventContext = event_context;
+ 	ack_request->VF_ID = 0;  /* TODO */
+ 	ack_request->VP_ID = 0;
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ }
+ 
+ /**
+@@ -3595,7 +3595,7 @@ _scsih_issue_delayed_sas_io_unit_ctrl(struct MPT3SAS_ADAPTER *ioc,
+ 	mpi_request->Function = MPI2_FUNCTION_SAS_IO_UNIT_CONTROL;
+ 	mpi_request->Operation = MPI2_SAS_OP_REMOVE_DEVICE;
+ 	mpi_request->DevHandle = handle;
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ }
+ 
+ /**
+@@ -4218,12 +4218,12 @@ scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd)
+ 		if (sas_target_priv_data->flags & MPT_TARGET_FASTPATH_IO) {
+ 			mpi_request->IoFlags = cpu_to_le16(scmd->cmd_len |
+ 			    MPI25_SCSIIO_IOFLAGS_FAST_PATH);
+-			mpt3sas_base_put_smid_fast_path(ioc, smid, handle);
++			ioc->put_smid_fast_path(ioc, smid, handle);
+ 		} else
+-			mpt3sas_base_put_smid_scsi_io(ioc, smid,
++			ioc->put_smid_scsi_io(ioc, smid,
+ 			    le16_to_cpu(mpi_request->DevHandle));
+ 	} else
+-		mpt3sas_base_put_smid_default(ioc, smid);
++		ioc->put_smid_default(ioc, smid);
+ 	return 0;
+ 
+  out:
+@@ -4719,7 +4719,7 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply)
+ 		memcpy(mpi_request->CDB.CDB32, scmd->cmnd, scmd->cmd_len);
+ 		mpi_request->DevHandle =
+ 		    cpu_to_le16(sas_device_priv_data->sas_target->handle);
+-		mpt3sas_base_put_smid_scsi_io(ioc, smid,
++		ioc->put_smid_scsi_io(ioc, smid,
+ 		    sas_device_priv_data->sas_target->handle);
+ 		return 0;
+ 	}
+@@ -6330,7 +6330,7 @@ _scsih_ir_fastpath(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phys_disk_num)
+ 	    handle, phys_disk_num));
+ 
+ 	init_completion(&ioc->scsih_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	wait_for_completion_timeout(&ioc->scsih_cmds.done, 10*HZ);
+ 
+ 	if (!(ioc->scsih_cmds.status & MPT3_CMD_COMPLETE)) {
+@@ -8180,7 +8180,7 @@ _scsih_ir_shutdown(struct MPT3SAS_ADAPTER *ioc)
+ 	if (!ioc->hide_ir_msg)
+ 		pr_info(MPT3SAS_FMT "IR shutdown (sending)\n", ioc->name);
+ 	init_completion(&ioc->scsih_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	wait_for_completion_timeout(&ioc->scsih_cmds.done, 10*HZ);
+ 
+ 	if (!(ioc->scsih_cmds.status & MPT3_CMD_COMPLETE)) {
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_transport.c b/drivers/scsi/mpt3sas/mpt3sas_transport.c
+index a01b235..4b7c32b 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_transport.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_transport.c
+@@ -393,7 +393,7 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
+ 		"report_manufacture - send to sas_addr(0x%016llx)\n",
+ 		ioc->name, (unsigned long long)sas_address));
+ 	init_completion(&ioc->transport_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
+ 	    10*HZ);
+ 
+@@ -1197,7 +1197,7 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
+ 		ioc->name, (unsigned long long)phy->identify.sas_address,
+ 		phy->number));
+ 	init_completion(&ioc->transport_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
+ 	    10*HZ);
+ 
+@@ -1516,7 +1516,7 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
+ 		ioc->name, (unsigned long long)phy->identify.sas_address,
+ 		phy->number, phy_operation));
+ 	init_completion(&ioc->transport_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
+ 	    10*HZ);
+ 
+@@ -2036,7 +2036,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
+ 		"%s - sending smp request\n", ioc->name, __func__));
+ 
+ 	init_completion(&ioc->transport_cmds.done);
+-	mpt3sas_base_put_smid_default(ioc, smid);
++	ioc->put_smid_default(ioc, smid);
+ 	timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
+ 	    10*HZ);
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0010-scsi-megaraid_sas-Implement-the-PD-Map-support-for-S.patch b/SOURCES/centos-linux-3.10-0010-scsi-megaraid_sas-Implement-the-PD-Map-support-for-S.patch
new file mode 100644
index 0000000..831b3c5
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0010-scsi-megaraid_sas-Implement-the-PD-Map-support-for-S.patch
@@ -0,0 +1,211 @@
+From dffd1263c440568ca20d97ff01aea74b1f20223c Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:52 -0500
+Subject: [PATCH 10/11] scsi: megaraid_sas: Implement the PD Map support for
+ SAS3.5 Generic Megaraid Controllers
+
+Update Linux driver to use new pdTargetId field for JBOD target ID
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h        | 105 +++++++++++++++++++++-------
+ drivers/scsi/megaraid/megaraid_sas_base.c   |   3 +
+ drivers/scsi/megaraid/megaraid_sas_fusion.c |   6 ++
+ drivers/scsi/megaraid/megaraid_sas_fusion.h |   3 +-
+ 4 files changed, 89 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index f6ac1b2..a38dbe5 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -1317,7 +1317,55 @@ struct megasas_ctrl_info {
+ #endif
+ 	} adapterOperations3;
+ 
+-	u8          pad[0x800-0x7EC];
++	struct {
++#if defined(__BIG_ENDIAN_BITFIELD)
++	u8 reserved:7;
++	/* Indicates whether the CPLD image is part of
++	 *  the package and stored in flash
++	 */
++	u8 cpld_in_flash:1;
++#else
++	u8 cpld_in_flash:1;
++	u8 reserved:7;
++#endif
++	u8 reserved1[3];
++	/* Null terminated string. Has the version
++	 *  information if cpld_in_flash = FALSE
++	 */
++	u8 userCodeDefinition[12];
++	} cpld;  /* Valid only if upgradableCPLD is TRUE */
++
++	struct {
++	#if defined(__BIG_ENDIAN_BITFIELD)
++		u16 reserved:8;
++		u16 fw_swaps_bbu_vpd_info:1;
++		u16 support_pd_map_target_id:1;
++		u16 support_ses_ctrl_in_multipathcfg:1;
++		u16 image_upload_supported:1;
++		u16 support_encrypted_mfc:1;
++		u16 supported_enc_algo:1;
++		u16 support_ibutton_less:1;
++		u16 ctrl_info_ext_supported:1;
++	#else
++
++		u16 ctrl_info_ext_supported:1;
++		u16 support_ibutton_less:1;
++		u16 supported_enc_algo:1;
++		u16 support_encrypted_mfc:1;
++		u16 image_upload_supported:1;
++		/* FW supports LUN based association and target port based */
++		u16 support_ses_ctrl_in_multipathcfg:1;
++		/* association for the SES device connected in multipath mode */
++		/* FW defines Jbod target Id within MR_PD_CFG_SEQ */
++		u16 support_pd_map_target_id:1;
++		/* FW swaps relevant fields in MR_BBU_VPD_INFO_FIXED to
++		 *  provide the data in little endian order
++		 */
++		u16 fw_swaps_bbu_vpd_info:1;
++		u16 reserved:8;
++	#endif
++		} adapter_operations4;
++	u8 pad[0x800-0x7FE]; /* 0x7FE pad to 2K for expansion */
+ } __packed;
+ 
+ /*
+@@ -1557,33 +1605,35 @@ union megasas_sgl_frame {
+ typedef union _MFI_CAPABILITIES {
+ 	struct {
+ #if   defined(__BIG_ENDIAN_BITFIELD)
+-		u32     reserved:20;
+-		u32     support_qd_throttling:1;
+-		u32     support_fp_rlbypass:1;
+-		u32     support_vfid_in_ioframe:1;
+-		u32     support_ext_io_size:1;
+-		u32	support_ext_queue_depth:1;
+-		u32     security_protocol_cmds_fw:1;
+-		u32     support_core_affinity:1;
+-		u32     support_ndrive_r1_lb:1;
+-		u32	support_max_255lds:1;
+-		u32	support_fastpath_wb:1;
+-		u32     support_additional_msix:1;
+-		u32     support_fp_remote_lun:1;
++	u32     reserved:19;
++	u32 support_pd_map_target_id:1;
++	u32     support_qd_throttling:1;
++	u32     support_fp_rlbypass:1;
++	u32     support_vfid_in_ioframe:1;
++	u32     support_ext_io_size:1;
++	u32		support_ext_queue_depth:1;
++	u32     security_protocol_cmds_fw:1;
++	u32     support_core_affinity:1;
++	u32     support_ndrive_r1_lb:1;
++	u32		support_max_255lds:1;
++	u32		support_fastpath_wb:1;
++	u32     support_additional_msix:1;
++	u32     support_fp_remote_lun:1;
+ #else
+-		u32     support_fp_remote_lun:1;
+-		u32     support_additional_msix:1;
+-		u32	support_fastpath_wb:1;
+-		u32	support_max_255lds:1;
+-		u32     support_ndrive_r1_lb:1;
+-		u32     support_core_affinity:1;
+-		u32     security_protocol_cmds_fw:1;
+-		u32	support_ext_queue_depth:1;
+-		u32     support_ext_io_size:1;
+-		u32     support_vfid_in_ioframe:1;
+-		u32     support_fp_rlbypass:1;
+-		u32     support_qd_throttling:1;
+-		u32     reserved:20;
++	u32     support_fp_remote_lun:1;
++	u32     support_additional_msix:1;
++	u32		support_fastpath_wb:1;
++	u32		support_max_255lds:1;
++	u32     support_ndrive_r1_lb:1;
++	u32     support_core_affinity:1;
++	u32     security_protocol_cmds_fw:1;
++	u32		support_ext_queue_depth:1;
++	u32     support_ext_io_size:1;
++	u32     support_vfid_in_ioframe:1;
++	u32     support_fp_rlbypass:1;
++	u32     support_qd_throttling:1;
++	u32	support_pd_map_target_id:1;
++	u32     reserved:19;
+ #endif
+ 	} mfi_capabilities;
+ 	__le32		reg;
+@@ -2052,6 +2102,7 @@ struct megasas_instance {
+ 	u32 crash_dump_drv_support;
+ 	u32 crash_dump_app_support;
+ 	u32 secure_jbod_support;
++	u32 support_morethan256jbod; /* FW support for more than 256 PD/JBOD */
+ 	bool use_seqnum_jbod_fp;   /* Added for PD sequence */
+ 	spinlock_t crashdump_lock;
+ 
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
+index cab3be8..e7249f9 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -4609,6 +4609,7 @@ megasas_get_ctrl_info(struct megasas_instance *instance)
+ 		le32_to_cpus((u32 *)&ctrl_info->properties.OnOffProperties);
+ 		le32_to_cpus((u32 *)&ctrl_info->adapterOperations2);
+ 		le32_to_cpus((u32 *)&ctrl_info->adapterOperations3);
++		le16_to_cpus((u16 *)&ctrl_info->adapter_operations4);
+ 
+ 		/* Update the latest Ext VD info.
+ 		 * From Init path, store current firmware details.
+@@ -4618,6 +4619,8 @@ megasas_get_ctrl_info(struct megasas_instance *instance)
+ 		megasas_update_ext_vd_details(instance);
+ 		instance->use_seqnum_jbod_fp =
+ 			ctrl_info->adapterOperations3.useSeqNumJbodFP;
++		instance->support_morethan256jbod =
++			ctrl_info->adapter_operations4.support_pd_map_target_id;
+ 
+ 		/*Check whether controller is iMR or MR */
+ 		instance->is_imr = (ctrl_info->memory_size ? 0 : 1);
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+index 82dd2da..85f0af6 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
+@@ -858,6 +858,7 @@ megasas_ioc_init_fusion(struct megasas_instance *instance)
+ 		drv_ops->mfi_capabilities.support_ext_queue_depth = 1;
+ 
+ 	drv_ops->mfi_capabilities.support_qd_throttling = 1;
++	drv_ops->mfi_capabilities.support_pd_map_target_id = 1;
+ 	/* Convert capability to LE32 */
+ 	cpu_to_le32s((u32 *)&init_frame->driver_operations.mfi_capabilities);
+ 
+@@ -2244,6 +2245,11 @@ megasas_build_syspd_fusion(struct megasas_instance *instance,
+ 		/* TgtId must be incremented by 255 as jbod seq number is index
+ 		 * below raid map
+ 		 */
++		 /* More than 256 PD/JBOD support for Ventura */
++		if (instance->support_morethan256jbod)
++			pRAID_Context->virtual_disk_tgt_id =
++				pd_sync->seq[pd_index].pd_target_id;
++		else
+ 		pRAID_Context->virtual_disk_tgt_id =
+ 			cpu_to_le16(device_id + (MAX_PHYSICAL_DEVICES - 1));
+ 		pRAID_Context->config_seq_num = pd_sync->seq[pd_index].seqNum;
+diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+index f7384c1..ad68a85 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
++++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
+@@ -1189,7 +1189,8 @@ struct MR_PD_CFG_SEQ {
+ 		u8     reserved:7;
+ #endif
+ 	} capability;
+-	u8  reserved[3];
++	u8  reserved;
++	u16 pd_target_id;
+ } __packed;
+ 
+ struct MR_PD_CFG_SEQ_NUM_SYNC {
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0010-scsi-mpt3sas-Fix-for-Endianness-issue.patch b/SOURCES/centos-linux-3.10-0010-scsi-mpt3sas-Fix-for-Endianness-issue.patch
new file mode 100644
index 0000000..da80a74
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0010-scsi-mpt3sas-Fix-for-Endianness-issue.patch
@@ -0,0 +1,67 @@
+From c73c42f25ffbb9a519ea942a9a943069abf6d6be Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:41 +0530
+Subject: [PATCH 10/11] scsi: mpt3sas: Fix for Endianness issue.
+
+Use le16_to_cpu only for accessing two byte data provided by controller.
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Reviewed-by: Hannes Reinecke <hare@suse.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_scsih.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+index 0dcf826..55b4472 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+@@ -5442,10 +5442,10 @@ _scsih_check_device(struct MPT3SAS_ADAPTER *ioc,
+ 			sas_device->handle, handle);
+ 		sas_target_priv_data->handle = handle;
+ 		sas_device->handle = handle;
+-		if (sas_device_pg0.Flags &
++		if (le16_to_cpu(sas_device_pg0.Flags) &
+ 		     MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
+ 			sas_device->enclosure_level =
+-				le16_to_cpu(sas_device_pg0.EnclosureLevel);
++				sas_device_pg0.EnclosureLevel;
+ 			memcpy(&sas_device->connector_name[0],
+ 				&sas_device_pg0.ConnectorName[0], 4);
+ 		} else {
+@@ -5573,9 +5573,10 @@ _scsih_add_device(struct MPT3SAS_ADAPTER *ioc, u16 handle, u8 phy_num,
+ 	sas_device->fast_path = (le16_to_cpu(sas_device_pg0.Flags) &
+ 	    MPI25_SAS_DEVICE0_FLAGS_FAST_PATH_CAPABLE) ? 1 : 0;
+ 
+-	if (sas_device_pg0.Flags & MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
++	if (le16_to_cpu(sas_device_pg0.Flags)
++		& MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
+ 		sas_device->enclosure_level =
+-			le16_to_cpu(sas_device_pg0.EnclosureLevel);
++			sas_device_pg0.EnclosureLevel;
+ 		memcpy(&sas_device->connector_name[0],
+ 			&sas_device_pg0.ConnectorName[0], 4);
+ 	} else {
+@@ -7115,7 +7116,7 @@ Mpi2SasDevicePage0_t *sas_device_pg0)
+ 			if (sas_device_pg0->Flags &
+ 			      MPI2_SAS_DEVICE0_FLAGS_ENCL_LEVEL_VALID) {
+ 				sas_device->enclosure_level =
+-				   le16_to_cpu(sas_device_pg0->EnclosureLevel);
++				   sas_device_pg0->EnclosureLevel;
+ 				memcpy(&sas_device->connector_name[0],
+ 					&sas_device_pg0->ConnectorName[0], 4);
+ 			} else {
+@@ -7177,6 +7178,7 @@ _scsih_search_responding_sas_devices(struct MPT3SAS_ADAPTER *ioc)
+ 		sas_device_pg0.SASAddress =
+ 				le64_to_cpu(sas_device_pg0.SASAddress);
+ 		sas_device_pg0.Slot = le16_to_cpu(sas_device_pg0.Slot);
++		sas_device_pg0.Flags = le16_to_cpu(sas_device_pg0.Flags);
+ 		_scsih_mark_responding_sas_device(ioc, &sas_device_pg0);
+ 	}
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0011-scsi-megaraid_sas-driver-version-upgrade.patch b/SOURCES/centos-linux-3.10-0011-scsi-megaraid_sas-driver-version-upgrade.patch
new file mode 100644
index 0000000..1425953
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0011-scsi-megaraid_sas-driver-version-upgrade.patch
@@ -0,0 +1,32 @@
+From 50c9c8f47e8ab6e4bc5a3a374a8b3ac5833aab1f Mon Sep 17 00:00:00 2001
+From: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Date: Tue, 10 Jan 2017 18:20:53 -0500
+Subject: [PATCH 11/11] scsi: megaraid_sas: driver version upgrade
+
+Upgrade driver version.
+
+Signed-off-by: Sasikumar Chandrasekaran <sasikumar.pc@broadcom.com>
+Reviewed-by: Tomas Henzl <thenzl@redhat.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/megaraid/megaraid_sas.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h
+index a38dbe5..83886a5 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -35,8 +35,8 @@
+ /*
+  * MegaRAID SAS Driver meta data
+  */
+-#define MEGASAS_VERSION				"06.811.02.00-rh1"
+-#define MEGASAS_RELDATE				"April 12, 2016"
++#define MEGASAS_VERSION				"07.700.00.00-rc1"
++#define MEGASAS_RELDATE				"November 29, 2016"
+ 
+ /*
+  * Device IDs
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-0011-scsi-mpt3sas-Bump-driver-version-as-14.101.00.00.patch b/SOURCES/centos-linux-3.10-0011-scsi-mpt3sas-Bump-driver-version-as-14.101.00.00.patch
new file mode 100644
index 0000000..3616401
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-0011-scsi-mpt3sas-Bump-driver-version-as-14.101.00.00.patch
@@ -0,0 +1,32 @@
+From 9b19a8b6bc41be91ddeb74e1ef3e484774f87a21 Mon Sep 17 00:00:00 2001
+From: Suganath Prabu Subramani <suganath-prabu.subramani@broadcom.com>
+Date: Wed, 26 Oct 2016 13:34:42 +0530
+Subject: [PATCH 11/11] scsi: mpt3sas: Bump driver version as "14.101.00.00"
+
+Signed-off-by: Chaitra P B <chaitra.basappa@broadcom.com>
+Signed-off-by: Sathya Prakash <sathya.prakash@broadcom.com>
+Signed-off-by: Suganath Prabu S <suganath-prabu.subramani@broadcom.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+---
+ drivers/scsi/mpt3sas/mpt3sas_base.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
+index b8c8be4..ab8d6eb 100644
+--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
++++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
+@@ -73,9 +73,9 @@
+ #define MPT3SAS_DRIVER_NAME		"mpt3sas"
+ #define MPT3SAS_AUTHOR "Avago Technologies <MPT-FusionLinux.pdl@avagotech.com>"
+ #define MPT3SAS_DESCRIPTION	"LSI MPT Fusion SAS 3.0 Device Driver"
+-#define MPT3SAS_DRIVER_VERSION		"14.100.00.00"
++#define MPT3SAS_DRIVER_VERSION		"14.101.00.00"
+ #define MPT3SAS_MAJOR_VERSION		14
+-#define MPT3SAS_MINOR_VERSION		100
++#define MPT3SAS_MINOR_VERSION		101
+ #define MPT3SAS_BUILD_VERSION		0
+ #define MPT3SAS_RELEASE_VERSION	00
+ 
+-- 
+1.8.3.1
+
diff --git a/SOURCES/centos-linux-3.10-fix-ecryptfs-error-bug7369.patch b/SOURCES/centos-linux-3.10-fix-ecryptfs-error-bug7369.patch
new file mode 100644
index 0000000..b5028c9
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-fix-ecryptfs-error-bug7369.patch
@@ -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;
+ 	}
diff --git a/SOURCES/centos-linux-3.10-fix-em28xx-cards-bug8285.patch b/SOURCES/centos-linux-3.10-fix-em28xx-cards-bug8285.patch
new file mode 100644
index 0000000..95ebc46
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-fix-em28xx-cards-bug8285.patch
@@ -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 */
diff --git a/SOURCES/centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch b/SOURCES/centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch
new file mode 100644
index 0000000..31ff1d5
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-hid-non-LogiTech-remote-bug5780.patch
@@ -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) {
diff --git a/SOURCES/centos-linux-3.10-ipv6refcnt-bug12711.patch b/SOURCES/centos-linux-3.10-ipv6refcnt-bug12711.patch
new file mode 100644
index 0000000..18539c9
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-ipv6refcnt-bug12711.patch
@@ -0,0 +1,59 @@
+centosplus patch [bug#12711]
+
+commit 751eb6b6042a596b0080967c1a529a9fe98dac1d
+Author: Wei Yongjun <weiyongjun1@huawei.com>
+Date:   Mon Sep 5 16:06:31 2016 +0800
+
+    ipv6: addrconf: fix dev refcont leak when DAD failed
+                                                        
+    In general, when DAD detected IPv6 duplicate address, ifp->state
+    will be set to INET6_IFADDR_STATE_ERRDAD and DAD is stopped by a
+    delayed work, the call tree should be like this:
+                                                                    
+    ndisc_recv_ns                                                   
+      -> addrconf_dad_failure        <- missing ifp put             
+         -> addrconf_mod_dad_work                                   
+           -> schedule addrconf_dad_work()                          
+             -> addrconf_dad_stop()  <- missing ifp hold before call it
+                                                                       
+    addrconf_dad_failure() called with ifp refcont holding but not put.
+    addrconf_dad_work() call addrconf_dad_stop() without extra holding 
+    refcount. This will not cause any issue normally.                  
+                                                                       
+    But the race between addrconf_dad_failure() and addrconf_dad_work()
+    may cause ifp refcount leak and netdevice can not be unregister,   
+    dmesg show the following messages:                                 
+                                                                       
+    IPv6: eth0: IPv6 duplicate address fe80::XX:XXXX:XXXX:XX detected!
+    ...
+    unregister_netdevice: waiting for eth0 to become free. Usage count = 1
+
+    Cc: stable@vger.kernel.org
+    Fixes: c15b1ccadb32 ("ipv6: move DAD and addrconf_verify processing
+    to workqueue")
+    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
+    Signed-off-by: David S. Miller <davem@davemloft.net>
+
+    Submitted-by: alfredo
+    Applied-by: Akemi Yagi <toracat@centos.org>
+
+diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
+index b7d5ce6..dc65579 100644
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
+@@ -1656,6 +1656,7 @@ void addrconf_dad_failure(struct inet6_ifaddr *ifp)
+ 	spin_unlock_bh(&ifp->state_lock);
+ 
+ 	addrconf_mod_dad_work(ifp, 0);
++    in6_ifa_put(ifp);
+ }
+ 
+ /* Join to solicited addr multicast group.
+@@ -3300,6 +3301,7 @@ static void addrconf_dad_work(struct work_struct *w)
+ 		addrconf_dad_begin(ifp);
+ 		goto out;
+ 	} else if (action == DAD_ABORT) {
++        in6_ifa_hold(ifp);
+ 		addrconf_dad_stop(ifp, 1);
+ 		goto out;
+ 	}
diff --git a/SOURCES/centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch b/SOURCES/centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch
new file mode 100644
index 0000000..97588c6
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-ixgbe-force-VLNCTRL_VFE-bug12653.patch
@@ -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;
+ 	}
+ 
diff --git a/SOURCES/centos-linux-3.10-mlx5-fix-32-bit-build-error-bug13344.patch b/SOURCES/centos-linux-3.10-mlx5-fix-32-bit-build-error-bug13344.patch
new file mode 100644
index 0000000..4f0ee78
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-mlx5-fix-32-bit-build-error-bug13344.patch
@@ -0,0 +1,39 @@
+centosplus patch bug #13344
+
+commit 9afd895271d91cd6ed743d22fce043f8c28b30ce
+Author: Arnd Bergmann <arnd@arndb.de>
+Date:   Thu Dec 8 22:57:03 2016 +0100
+
+    net/mlx5e: use %pad format string for dma_addr_t
+    
+    On 32-bit ARM with 64-bit dma_addr_t I get this warning about an
+    incorrect format string:
+    
+    In file included from /git/arm-soc/drivers/net/ethernet/mellanox/mlx5/core/alloc.c:42:0:
+    drivers/net/ethernet/mellanox/mlx5/core/alloc.c: In function ‘mlx5_frag_buf_alloc_node’:
+    drivers/net/ethernet/mellanox/mlx5/core/alloc.c:134:12: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
+    
+    We have the special %pad format for printing dma_addr_t, so use that
+    to print the correct address and avoid the warning.
+    
+    Fixes: 1c1b522808a1 ("net/mlx5e: Implement Fragmented Work Queue (WQ)")
+    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+    Signed-off-by: David S. Miller <davem@davemloft.net>
+
+    Applied-by: Akemi Yagi <toracat@centos.org>
+
+diff --git a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c
+index 44791de..66bd213 100644
+--- a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c
+@@ -130,8 +130,8 @@ int mlx5_frag_buf_alloc_node(struct mlx5_core_dev *dev, int size,
+ 		if (frag->map & ((1 << buf->page_shift) - 1)) {
+ 			dma_free_coherent(&dev->pdev->dev, frag_sz,
+ 					  buf->frags[i].buf, buf->frags[i].map);
+-			mlx5_core_warn(dev, "unexpected map alignment: 0x%p, page_shift=%d\n",
+-				       (void *)frag->map, buf->page_shift);
++			mlx5_core_warn(dev, "unexpected map alignment: %pad, page_shift=%d\n",
++				       &frag->map, buf->page_shift);
+ 			goto err_free_buf;
+ 		}
+ 		size -= frag_sz;
diff --git a/SOURCES/centos-linux-3.10-neigh-do-not-modify-unlinked-entris-bug13241.patch b/SOURCES/centos-linux-3.10-neigh-do-not-modify-unlinked-entris-bug13241.patch
new file mode 100644
index 0000000..c913dd5
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-neigh-do-not-modify-unlinked-entris-bug13241.patch
@@ -0,0 +1,80 @@
+centosplus patch [bug #13241]
+
+commit 2c51a97f76d20ebf1f50fef908b986cb051fdff9                                                     
+Author: Julian Anastasov <ja@ssi.bg>                                                                
+Date:   Tue Jun 16 22:56:39 2015 +0300                                                              
+
+    neigh: do not modify unlinked entries
+                                         
+    The lockless lookups can return entry that is unlinked.
+    Sometimes they get reference before last neigh_cleanup_and_release,
+    sometimes they do not need reference. Later, any                   
+    modification attempts may result in the following problems:        
+                                                                       
+    1. entry is not destroyed immediately because neigh_update         
+    can start the timer for dead entry, eg. on change to NUD_REACHABLE 
+    state. As result, entry lives for some time but is invisible       
+    and out of control.                                                
+                                                                       
+    2. __neigh_event_send can run in parallel with neigh_destroy       
+    while refcnt=0 but if timer is started and expired refcnt can      
+    reach 0 for second time leading to second neigh_destroy and        
+    possible crash.                                                    
+                                                                       
+    Thanks to Eric Dumazet and Ying Xue for their work and analyze     
+    on the __neigh_event_send change.                                  
+                                                                       
+    Fixes: 767e97e1e0db ("neigh: RCU conversion of struct neighbour")  
+    Fixes: a263b3093641 ("ipv4: Make neigh lookups directly in output packet path.")
+    Fixes: 6fd6ce2056de ("ipv6: Do not depend on rt->n in ip6_finish_output2().")   
+    Cc: Eric Dumazet <eric.dumazet@gmail.com>                                       
+    Cc: Ying Xue <ying.xue@windriver.com>                                           
+    Signed-off-by: Julian Anastasov <ja@ssi.bg>                                     
+    Acked-by: Eric Dumazet <edumazet@google.com>                                    
+    Signed-off-by: David S. Miller <davem@davemloft.net>
+
+    Applied-by: Akemi Yagi <toracat@centos.org>
+
+--- a/net/core/neighbour.c	2017-04-21 23:17:16.000000000 -0700
++++ b/net/core/neighbour.c	2017-06-14 10:32:06.663195962 -0700
+@@ -973,6 +973,8 @@ int __neigh_event_send(struct neighbour
+ 	rc = 0;
+ 	if (neigh->nud_state & (NUD_CONNECTED | NUD_DELAY | NUD_PROBE))
+ 		goto out_unlock_bh;
++	if (neigh->dead)
++		goto out_dead;
+ 
+ 	if (!(neigh->nud_state & (NUD_STALE | NUD_INCOMPLETE))) {
+ 		if (NEIGH_VAR(neigh->parms, MCAST_PROBES) +
+@@ -1029,6 +1031,13 @@ out_unlock_bh:
+ 		write_unlock(&neigh->lock);
+ 	local_bh_enable();
+ 	return rc;
++
++out_dead:
++	if (neigh->nud_state & NUD_STALE)
++		goto out_unlock_bh;
++	write_unlock_bh(&neigh->lock);
++	kfree_skb(skb);
++	return 1;
+ }
+ EXPORT_SYMBOL(__neigh_event_send);
+ 
+@@ -1092,6 +1101,8 @@ int neigh_update(struct neighbour *neigh
+ 	if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
+ 	    (old & (NUD_NOARP | NUD_PERMANENT)))
+ 		goto out;
++	if (neigh->dead)
++		goto out;
+ 
+ 	if (!(new & NUD_VALID)) {
+ 		neigh_del_timer(neigh);
+@@ -1241,6 +1252,8 @@ EXPORT_SYMBOL(neigh_update);
+  */
+ void __neigh_set_probe_once(struct neighbour *neigh)
+ {
++	if (neigh->dead)
++		return;
+ 	neigh->updated = jiffies;
+ 	if (!(neigh->nud_state & NUD_FAILED))
+ 		return;
diff --git a/SOURCES/centos-linux-3.10-reiserfs-fix-redefine-error.patch b/SOURCES/centos-linux-3.10-reiserfs-fix-redefine-error.patch
new file mode 100644
index 0000000..5a61e68
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-reiserfs-fix-redefine-error.patch
@@ -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)
+ {
diff --git a/SOURCES/centos-linux-3.10-scsi-storvsc-fix-bug12841.patch b/SOURCES/centos-linux-3.10-scsi-storvsc-fix-bug12841.patch
new file mode 100644
index 0000000..80bca4f
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-scsi-storvsc-fix-bug12841.patch
@@ -0,0 +1,35 @@
+centosplus kernel patch [bug#12841]
+
+commit b0120d9906253570f593daf82016a5331bbee2b8
+Author: Cathy Avery <cavery@redhat.com>
+Date:   Wed Nov 23 08:46:33 2016 -0500
+
+    scsi: storvsc: Payload buffer incorrectly sized for 32 bit kernels.
+    
+    On a 32 bit kernel sizeof(void *) is not 64 bits as hv_mpb_array
+    requires. Also the buffer needs to be cleared or the upper bytes will
+    contain junk.
+    
+    Suggested-by: Vitaly Kuznetsov <vkuznets@redhat.com>
+    Signed-off-by: Cathy Avery <cavery@redhat.com>
+    Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
+    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+
+    Applied-by: Akemi Yagi <toracat@centos.org>
+
+diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
+index 8ccfc9e..05526b7 100644
+--- a/drivers/scsi/storvsc_drv.c
++++ b/drivers/scsi/storvsc_drv.c
+@@ -1495,9 +1495,9 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
+ 	if (sg_count) {
+ 		if (sg_count > MAX_PAGE_BUFFER_COUNT) {
+ 
+-			payload_sz = (sg_count * sizeof(void *) +
++			payload_sz = (sg_count * sizeof(u64) +
+ 				      sizeof(struct vmbus_packet_mpb_array));
+-			payload = kmalloc(payload_sz, GFP_ATOMIC);
++			payload = kzalloc(payload_sz, GFP_ATOMIC);
+ 			if (!payload)
+ 				return SCSI_MLQUEUE_DEVICE_BUSY;
+ 		}
diff --git a/SOURCES/centos-linux-3.10-support-MacBookPro-bug10447.patch b/SOURCES/centos-linux-3.10-support-MacBookPro-bug10447.patch
new file mode 100644
index 0000000..4081205
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-support-MacBookPro-bug10447.patch
@@ -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);
+ 
diff --git a/SOURCES/centos-linux-3.10-x86-perf-uncore-Avoid-kernel-panic-on-missing-topolo-bug12818.patch b/SOURCES/centos-linux-3.10-x86-perf-uncore-Avoid-kernel-panic-on-missing-topolo-bug12818.patch
new file mode 100644
index 0000000..4cc9105
--- /dev/null
+++ b/SOURCES/centos-linux-3.10-x86-perf-uncore-Avoid-kernel-panic-on-missing-topolo-bug12818.patch
@@ -0,0 +1,44 @@
+centosplus kernel patch [bug#12818]
+
+From ac68351410df683a149e7eea09df178884cf2419 Mon Sep 17 00:00:00 2001
+From: Marcus Sundberg <marcus.sundberg@aptilo.com>
+Date: Mon, 13 Feb 2017 22:57:11 +0100
+Subject: [PATCH] [x86] perf: uncore: Avoid kernel panic on missing topology
+
+The uncore code is heavily dependent on the CPU topology mapping code,
+so if we do not even have a working topology for the boot CPU we just
+give up.
+This happens for example on HPE DL360 Gen9 servers with x2APIC enabled
+in the firmware settings, where the kernel only finds a single core.
+---
+ arch/x86/events/intel/uncore.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
+index 77ec6c0..88d79f6 100644
+--- a/arch/x86/events/intel/uncore.c
++++ b/arch/x86/events/intel/uncore.c
+@@ -1394,6 +1394,20 @@ static int __init intel_uncore_init(void)
+ 	if (is_kdump_kernel())
+ 		return -ENODEV;
+ 
++	/* Sanity check - do not even try to proceed if we have no
++	   working topology mapping for the boot CPU. */
++	if (rh_boot_cpu_data.logical_proc_id < 0 ||
++	    topology_phys_to_logical_pkg(boot_cpu_data.phys_proc_id) < 0) {
++		printk(KERN_ERR
++		       "no mapping between physical and logical CPU, "
++		       "boot CPU phys: %d, logical: %d/%d\n",
++		       (int)boot_cpu_data.phys_proc_id,
++		       (int)rh_boot_cpu_data.logical_proc_id,
++		       (int)topology_phys_to_logical_pkg(
++			       boot_cpu_data.phys_proc_id));
++		return -ENODEV;
++	}
++
+ 	max_packages = topology_max_packages();
+ 
+ 	pret = uncore_pci_init();
+-- 
+2.5.0
+
diff --git a/SOURCES/clear-32bit-Werror-warnings.patch b/SOURCES/clear-32bit-Werror-warnings.patch
new file mode 100644
index 0000000..a8b6583
--- /dev/null
+++ b/SOURCES/clear-32bit-Werror-warnings.patch
@@ -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
+
diff --git a/SOURCES/cpufreq.patch b/SOURCES/cpufreq.patch
new file mode 100644
index 0000000..beabf01
--- /dev/null
+++ b/SOURCES/cpufreq.patch
@@ -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;
+ }
diff --git a/SOURCES/i386-audit-stop-scri-stack-frame.patch b/SOURCES/i386-audit-stop-scri-stack-frame.patch
new file mode 100644
index 0000000..48393aa
--- /dev/null
+++ b/SOURCES/i386-audit-stop-scri-stack-frame.patch
@@ -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
+ 
+---
diff --git a/SOURCES/kernel-3.10.0-i686.config b/SOURCES/kernel-3.10.0-i686.config
new file mode 100644
index 0000000..ecda234
--- /dev/null
+++ b/SOURCES/kernel-3.10.0-i686.config
@@ -0,0 +1,5868 @@
+# x86
+#
+# CONFIG_64BIT is not set
+CONFIG_X86_32=y
+CONFIG_X86=y
+CONFIG_INSTRUCTION_DECODER=y
+CONFIG_OUTPUT_FORMAT="elf32-i386"
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_ARCH_HAS_CPU_AUTOPROBE=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+# CONFIG_ZONE_DMA32 is not set
+# CONFIG_AUDIT_ARCH is not set
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_HAVE_INTEL_TXT=y
+CONFIG_X86_INTEL_MPX=y
+CONFIG_X86_32_SMP=y
+CONFIG_X86_HT=y
+CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_BZIP2 is not set
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_FHANDLE=y
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_WATCH=y
+CONFIG_AUDIT_TREE=y
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_PREEMPT_RCU is not set
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RCU_FANOUT=32
+CONFIG_RCU_FANOUT_LEAF=16
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_RCU_FAST_NO_HZ is not set
+# CONFIG_TREE_RCU_TRACE is not set
+CONFIG_RCU_NOCB_CPU=y
+CONFIG_RCU_NOCB_CPU_NONE=y
+# CONFIG_RCU_NOCB_CPU_ZERO is not set
+# CONFIG_RCU_NOCB_CPU_ALL is not set
+# CONFIG_BUILD_BIN2C is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=20
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
+CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_PIDS=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_PAGE_COUNTER=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMCG_SWAP_ENABLED=y
+CONFIG_MEMCG_KMEM=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_UIDGID_STRICT_TYPE_CHECKS=y
+CONFIG_SCHED_AUTOGROUP=y
+CONFIG_MM_OWNER=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
+# CONFIG_EXPERT is not set
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_USERFAULTFD=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_EMBEDDED is not set
+CONFIG_HAVE_PERF_EVENTS=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_OPROFILE=m
+CONFIG_OPROFILE_EVENT_MULTIPLEX=y
+CONFIG_HAVE_OPROFILE=y
+CONFIG_OPROFILE_NMI_TIMER=y
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+CONFIG_OPTPROBES=y
+CONFIG_KPROBES_ON_FTRACE=y
+CONFIG_UPROBES=y
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_USE_GENERIC_SMP_HELPERS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_PERF_EVENTS_NMI=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
+CONFIG_HAVE_CMPXCHG_LOCAL=y
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_BLACKLIST_KEYRING=y
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_MODULE_SIG=y
+# CONFIG_MODULE_SIG_FORCE is not set
+CONFIG_MODULE_SIG_ALL=y
+CONFIG_MODULE_SIG_UEFI=y
+# CONFIG_MODULE_SIG_SHA1 is not set
+# CONFIG_MODULE_SIG_SHA224 is not set
+CONFIG_MODULE_SIG_SHA256=y
+# CONFIG_MODULE_SIG_SHA384 is not set
+# CONFIG_MODULE_SIG_SHA512 is not set
+CONFIG_MODULE_SIG_HASH="sha256"
+CONFIG_STOP_MACHINE=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+CONFIG_AMIGA_PARTITION=y
+# CONFIG_ATARI_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+CONFIG_MINIX_SUBPARTITION=y
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+# CONFIG_LDM_PARTITION is not set
+CONFIG_SGI_PARTITION=y
+# CONFIG_ULTRIX_PARTITION is not set
+CONFIG_SUN_PARTITION=y
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+CONFIG_PADATA=y
+CONFIG_ASN1=y
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_FREEZER=y
+
+#
+# Processor type and features
+#
+CONFIG_ZONE_DMA=y
+CONFIG_SMP=y
+CONFIG_X86_MPPARSE=y
+CONFIG_X86_BIGSMP=y
+CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_GOLDFISH is not set
+# CONFIG_X86_WANT_INTEL_MID is not set
+# CONFIG_X86_INTEL_LPSS is not set
+# CONFIG_X86_RDC321X is not set
+# CONFIG_X86_32_NON_STANDARD is not set
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_X86_32_IRIS=m
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_HYPERVISOR_GUEST=y
+CONFIG_PARAVIRT=y
+# CONFIG_PARAVIRT_DEBUG is not set
+CONFIG_PARAVIRT_SPINLOCKS=y
+CONFIG_XEN=y
+# CONFIG_XEN_DOM0 is not set
+# CONFIG_XEN_PRIVILEGED_GUEST is not set
+CONFIG_XEN_PVHVM=y
+CONFIG_XEN_MAX_DOMAIN_MEMORY=64
+CONFIG_XEN_SAVE_RESTORE=y
+# CONFIG_XEN_DEBUG_FS is not set
+CONFIG_KVM_GUEST=y
+# CONFIG_KVM_DEBUG_FS is not set
+# CONFIG_LGUEST_GUEST is not set
+CONFIG_PARAVIRT_TIME_ACCOUNTING=y
+CONFIG_PARAVIRT_CLOCK=y
+CONFIG_NO_BOOTMEM=y
+# CONFIG_MEMTEST is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MELAN is not set
+# CONFIG_MGEODEGX1 is not set
+# CONFIG_MGEODE_LX is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_MVIAC7 is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_L1_CACHE_SHIFT=6
+# CONFIG_X86_PPRO_FENCE is not set
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=5
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_CENTAUR=y
+CONFIG_CPU_SUP_TRANSMETA_32=y
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+CONFIG_NR_CPUS=32
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+# CONFIG_X86_ANCIENT_MCE is not set
+CONFIG_X86_MCE_THRESHOLD=y
+CONFIG_X86_MCE_INJECT=m
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_VM86=y
+CONFIG_TOSHIBA=m
+CONFIG_I8K=m
+# CONFIG_X86_REBOOTFIXUPS is not set
+CONFIG_MICROCODE=y
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_X86_MSR=y
+CONFIG_X86_CPUID=y
+# CONFIG_NOHIGHMEM is not set
+# CONFIG_HIGHMEM4G is not set
+CONFIG_HIGHMEM64G=y
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HIGHMEM=y
+CONFIG_X86_PAE=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+# CONFIG_TRACK_DIRTY_PAGES is not set
+# CONFIG_NUMA is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ILLEGAL_POINTER_VALUE=0
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_SPARSEMEM_STATIC=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
+CONFIG_ARCH_DISCARD_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_MEMORY_BALLOON=y
+CONFIG_BALLOON_COMPACTION=y
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+CONFIG_HMM=y
+CONFIG_HMM_MIGRATE=y
+CONFIG_HMM_MIRROR=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_MMU_NOTIFIER=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_MEMORY_FAILURE=y
+CONFIG_HWPOISON_INJECT=m
+# CONFIG_TRANSPARENT_HUGEPAGE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+CONFIG_MEM_SOFT_DIRTY=y
+CONFIG_ZSWAP=y
+CONFIG_ZPOOL=y
+CONFIG_ZBUD=y
+CONFIG_ZSMALLOC=y
+# CONFIG_PGTABLE_MAPPING is not set
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
+CONFIG_X86_PMEM_LEGACY_DEVICE=y
+CONFIG_X86_PMEM_LEGACY=m
+CONFIG_HIGHPTE=y
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
+CONFIG_X86_RESERVE_LOW=64
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+CONFIG_MTRR_SANITIZER=y
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_ARCH_RANDOM=y
+CONFIG_X86_SMAP=y
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI_SECURE_BOOT_SECURELEVEL=y
+CONFIG_SECCOMP=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+CONFIG_KEXEC_AUTO_RESERVE=y
+CONFIG_CRASH_DUMP=y
+# CONFIG_KEXEC_JUMP is not set
+CONFIG_PHYSICAL_START=0x400000
+CONFIG_RELOCATABLE=y
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x400000
+CONFIG_HOTPLUG_CPU=y
+CONFIG_BOOTPARAM_HOTPLUG_CPU0=y
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
+# CONFIG_COMPAT_VDSO is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATE_CALLBACKS=y
+CONFIG_HIBERNATION=y
+CONFIG_PM_STD_PARTITION=""
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM_RUNTIME=y
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_ACPI=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS_POWER is not set
+CONFIG_ACPI_EC_DEBUGFS=m
+# CONFIG_ACPI_PROC_EVENT is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=m
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_IPMI=m
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
+CONFIG_ACPI_THERMAL=y
+# CONFIG_ACPI_CUSTOM_DSDT is not set
+CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_PCI_SLOT=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_SBS=m
+CONFIG_ACPI_HED=y
+CONFIG_ACPI_CUSTOM_METHOD=m
+CONFIG_ACPI_BGRT=y
+CONFIG_ACPI_NFIT=m
+# CONFIG_ACPI_NFIT_DEBUG is not set
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+CONFIG_ACPI_APEI_EINJ=m
+# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_ACPI_EXTLOG=m
+CONFIG_SFI=y
+CONFIG_X86_APM_BOOT=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+CONFIG_APM_CPU_IDLE=y
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_ALLOW_INTS is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=m
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+
+#
+# x86 CPU frequency scaling drivers
+#
+CONFIG_X86_INTEL_PSTATE=y
+CONFIG_X86_PCC_CPUFREQ=m
+CONFIG_X86_ACPI_CPUFREQ=m
+CONFIG_X86_ACPI_CPUFREQ_CPB=y
+# CONFIG_X86_POWERNOW_K6 is not set
+# CONFIG_X86_POWERNOW_K7 is not set
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_AMD_FREQ_SENSITIVITY=m
+# CONFIG_X86_GX_SUSPMOD is not set
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+# CONFIG_X86_SPEEDSTEP_ICH is not set
+# CONFIG_X86_SPEEDSTEP_SMI is not set
+CONFIG_X86_P4_CLOCKMOD=m
+# CONFIG_X86_CPUFREQ_NFORCE2 is not set
+CONFIG_X86_LONGRUN=y
+# CONFIG_X86_LONGHAUL is not set
+# CONFIG_X86_E_POWERSAVER is not set
+
+#
+# shared options
+#
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_CPU_IDLE=y
+# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
+# CONFIG_CPU_IDLE_GOV_LADDER is not set
+CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
+CONFIG_INTEL_IDLE=y
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_XEN=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
+CONFIG_PCIEAER=y
+CONFIG_PCIE_ECRC=y
+CONFIG_PCIEAER_INJECT=m
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+CONFIG_PCIE_PME=y
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
+CONFIG_PCI_MSI=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
+CONFIG_PCI_STUB=y
+# CONFIG_XEN_PCIDEV_FRONTEND is not set
+CONFIG_HT_IRQ=y
+CONFIG_PCI_ATS=y
+CONFIG_PCI_IOV=y
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PASID=y
+CONFIG_PCI_IOAPIC=y
+CONFIG_PCI_LABEL=y
+CONFIG_ISA_DMA_API=y
+# CONFIG_ISA is not set
+# CONFIG_SCx200 is not set
+# CONFIG_ALIX is not set
+# CONFIG_NET5501 is not set
+# CONFIG_GEOS is not set
+CONFIG_AMD_NB=y
+CONFIG_PCCARD=y
+# CONFIG_PCMCIA is not set
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=m
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+# CONFIG_RAPIDIO is not set
+
+#
+# Executable file formats / Emulations
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_COREDUMP=y
+CONFIG_HAVE_ATOMIC_IOMAP=y
+CONFIG_HAVE_TEXT_POKE_SMP=y
+CONFIG_IOSF_MBI=m
+CONFIG_VMD=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=m
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_SUB_POLICY=y
+CONFIG_XFRM_MIGRATE=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_FIB_TRIE_STATS=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_ROUTE_CLASSID=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE_DEMUX=m
+CONFIG_NET_IP_TUNNEL=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+CONFIG_SYN_COOKIES=y
+CONFIG_NET_IPVTI=m
+CONFIG_NET_UDP_TUNNEL=m
+# CONFIG_NET_FOU is not set
+# CONFIG_NET_FOU_IP_TUNNELS is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+CONFIG_INET_UDP_DIAG=m
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_BIC=m
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_TCP_CONG_WESTWOOD=m
+CONFIG_TCP_CONG_HTCP=m
+CONFIG_TCP_CONG_HSTCP=m
+CONFIG_TCP_CONG_HYBLA=m
+CONFIG_TCP_CONG_VEGAS=m
+CONFIG_TCP_CONG_SCALABLE=m
+CONFIG_TCP_CONG_LP=m
+CONFIG_TCP_CONG_VENO=m
+CONFIG_TCP_CONG_YEAH=m
+CONFIG_TCP_CONG_ILLINOIS=m
+CONFIG_TCP_CONG_DCTCP=m
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
+CONFIG_IPV6=y
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_SIT_6RD=y
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_GRE is not set
+CONFIG_IPV6_MULTIPLE_TABLES=y
+# CONFIG_IPV6_SUBTREES is not set
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+CONFIG_NETLABEL=y
+CONFIG_NETWORK_SECMARK=y
+CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=m
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_LOG_COMMON=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_BROADCAST=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_REDIRECT=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=m
+CONFIG_NFT_EXTHDR=m
+CONFIG_NFT_META=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_RBTREE=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_MASQ=m
+CONFIG_NFT_REDIR=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
+CONFIG_NFT_COMPAT=m
+CONFIG_NETFILTER_XTABLES=y
+
+#
+# Xtables combined modules
+#
+CONFIG_NETFILTER_XT_MARK=m
+CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_SET=m
+
+#
+# Xtables targets
+#
+CONFIG_NETFILTER_XT_TARGET_AUDIT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
+CONFIG_NETFILTER_XT_TARGET_CT=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_NAT=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+
+#
+# Xtables matches
+#
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
+CONFIG_IP_VS=m
+CONFIG_IP_VS_IPV6=y
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_SCTP=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+CONFIG_IP_VS_NFCT=y
+CONFIG_IP_VS_PE_SIP=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_TABLES_IPV4=m
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NFT_DUP_IPV4=m
+CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_DUP_IPV4=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
+CONFIG_NFT_MASQ_IPV4=m
+CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_RPFILTER=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_SECURITY=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV6=m
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_NF_TABLES_IPV6=m
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_DUP_IPV6=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_NAT_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=m
+CONFIG_NFT_MASQ_IPV6=m
+CONFIG_NFT_REDIR_IPV6=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RPFILTER=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_IP6_NF_SECURITY=m
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+# CONFIG_IP6_NF_TARGET_NPT is not set
+CONFIG_NF_TABLES_BRIDGE=m
+CONFIG_NFT_BRIDGE_META=m
+CONFIG_NFT_BRIDGE_REJECT=m
+# CONFIG_NF_LOG_BRIDGE is not set
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_IP_DCCP=m
+CONFIG_INET_DCCP_DIAG=m
+
+#
+# DCCP CCIDs Configuration
+#
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
+CONFIG_IP_DCCP_CCID3=y
+# CONFIG_IP_DCCP_CCID3_DEBUG is not set
+CONFIG_IP_DCCP_TFRC_LIB=y
+
+#
+# DCCP Kernel Hacking
+#
+# CONFIG_IP_DCCP_DEBUG is not set
+# CONFIG_NET_DCCPPROBE is not set
+CONFIG_IP_SCTP=m
+CONFIG_NET_SCTPPROBE=m
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_INET_SCTP_DIAG=m
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+# CONFIG_ATM_MPOA is not set
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_L2TP=m
+CONFIG_L2TP_DEBUGFS=m
+CONFIG_L2TP_V3=y
+CONFIG_L2TP_IP=m
+CONFIG_L2TP_ETH=m
+CONFIG_STP=m
+CONFIG_GARP=m
+CONFIG_MRP=m
+CONFIG_BRIDGE=m
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_HAVE_NET_DSA=y
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q_MVRP=y
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+CONFIG_6LOWPAN=m
+# CONFIG_6LOWPAN_DEBUGFS is not set
+CONFIG_6LOWPAN_NHC=m
+CONFIG_6LOWPAN_NHC_DEST=m
+CONFIG_6LOWPAN_NHC_FRAGMENT=m
+CONFIG_6LOWPAN_NHC_HOP=m
+CONFIG_6LOWPAN_NHC_IPV6=m
+CONFIG_6LOWPAN_NHC_MOBILITY=m
+CONFIG_6LOWPAN_NHC_ROUTING=m
+CONFIG_6LOWPAN_NHC_UDP=m
+# CONFIG_6LOWPAN_GHC_EXT_HDR_HOP is not set
+# CONFIG_6LOWPAN_GHC_UDP is not set
+# CONFIG_6LOWPAN_GHC_ICMPV6 is not set
+# CONFIG_6LOWPAN_GHC_EXT_HDR_DEST is not set
+# CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG is not set
+# CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE is not set
+CONFIG_IEEE802154=m
+# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
+CONFIG_IEEE802154_SOCKET=m
+CONFIG_IEEE802154_6LOWPAN=m
+CONFIG_MAC802154=m
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFB=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_CHOKE=m
+CONFIG_NET_SCH_QFQ=m
+CONFIG_NET_SCH_CODEL=m
+CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_PLUG=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_CLS_CGROUP=y
+CONFIG_NET_CLS_BPF=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+# CONFIG_NET_EMATCH_CANID is not set
+CONFIG_NET_EMATCH_IPSET=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+CONFIG_DCB=y
+CONFIG_DNS_RESOLVER=m
+# CONFIG_BATMAN_ADV is not set
+CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_GRE=m
+CONFIG_OPENVSWITCH_VXLAN=m
+CONFIG_OPENVSWITCH_GENEVE=m
+CONFIG_VSOCKETS=m
+CONFIG_VMWARE_VMCI_VSOCKETS=m
+CONFIG_NETLINK_MMAP=y
+CONFIG_NETLINK_DIAG=m
+CONFIG_NET_MPLS_GSO=m
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_XPS=y
+CONFIG_NETPRIO_CGROUP=y
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_NET_TCPPROBE is not set
+CONFIG_NET_DROP_MONITOR=y
+# CONFIG_HAMRADIO is not set
+CONFIG_CAN=m
+CONFIG_CAN_RAW=m
+CONFIG_CAN_BCM=m
+CONFIG_CAN_GW=m
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_SLCAN=m
+CONFIG_CAN_DEV=m
+CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_LEDS=y
+# CONFIG_CAN_MCP251X is not set
+# CONFIG_PCH_CAN is not set
+CONFIG_CAN_SJA1000=m
+# CONFIG_CAN_SJA1000_ISA is not set
+CONFIG_CAN_SJA1000_PLATFORM=m
+CONFIG_CAN_EMS_PCI=m
+CONFIG_CAN_PEAK_PCI=m
+CONFIG_CAN_PEAK_PCIEC=y
+CONFIG_CAN_KVASER_PCI=m
+CONFIG_CAN_PLX_PCI=m
+CONFIG_CAN_C_CAN=m
+CONFIG_CAN_C_CAN_PLATFORM=m
+CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_CC770=m
+# CONFIG_CAN_CC770_ISA is not set
+CONFIG_CAN_CC770_PLATFORM=m
+
+#
+# CAN USB interfaces
+#
+CONFIG_CAN_EMS_USB=m
+CONFIG_CAN_ESD_USB2=m
+CONFIG_CAN_KVASER_USB=m
+CONFIG_CAN_PEAK_USB=m
+CONFIG_CAN_8DEV_USB=m
+CONFIG_CAN_SOFTING=m
+# CONFIG_CAN_DEBUG_DEVICES is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_BREDR=y
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
+CONFIG_BT_LE=y
+# CONFIG_BT_6LOWPAN is not set
+# CONFIG_BT_LEDS is not set
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_INTEL=m
+CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
+# CONFIG_BT_HCIUART_INTEL is not set
+# CONFIG_BT_HCIUART_BCM is not set
+# CONFIG_BT_HCIUART_QCA is not set
+# CONFIG_BT_HCIUART_AG6XX is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+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
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_LIB80211=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL_HT=y
+# CONFIG_MAC80211_RC_MINSTREL_VHT is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+# CONFIG_MAC80211_MESH is not set
+CONFIG_MAC80211_LEDS=y
+CONFIG_MAC80211_DEBUGFS=y
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+# CONFIG_WIMAX is not set
+CONFIG_RFKILL=m
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+# CONFIG_RFKILL_GPIO 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
+CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
+# CONFIG_NFC is not set
+CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER is not set
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+CONFIG_SYS_HYPERVISOR=y
+# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_SPI=m
+CONFIG_DMA_SHARED_BUFFER=y
+
+#
+# Bus devices
+#
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=m
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_TS5500 is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOCG3 is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_SERIAL=m
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_GSC is not set
+# CONFIG_PARPORT_AX88796 is not set
+CONFIG_PARPORT_1284=y
+CONFIG_PARPORT_NOT_PC=y
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG_MESSAGES is not set
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+CONFIG_BLK_DEV_NULL_BLK=m
+CONFIG_BLK_DEV_FD=m
+# CONFIG_PARIDE is not set
+CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
+CONFIG_ZRAM=m
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_OSD=m
+CONFIG_BLK_DEV_SX8=m
+CONFIG_BLK_DEV_RAM=m
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_RAM_DAX=y
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+CONFIG_XEN_BLKDEV_FRONTEND=m
+CONFIG_VIRTIO_BLK=m
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_RBD=m
+# CONFIG_BLK_DEV_RSXX is not set
+CONFIG_BLK_DEV_NVME=m
+
+#
+# Misc devices
+#
+CONFIG_SENSORS_LIS3LV02D=m
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM is not set
+# CONFIG_DUMMY_IRQ is not set
+CONFIG_IBM_ASM=m
+# CONFIG_PHANTOM is not set
+# CONFIG_INTEL_MID_PTI is not set
+# CONFIG_SGI_IOC4 is not set
+CONFIG_TIFM_CORE=m
+CONFIG_TIFM_7XX1=m
+# CONFIG_ICS932S401 is not set
+# CONFIG_ATMEL_SSC is not set
+CONFIG_ENCLOSURE_SERVICES=m
+CONFIG_HP_ILO=m
+CONFIG_APDS9802ALS=m
+CONFIG_ISL29003=m
+CONFIG_ISL29020=m
+CONFIG_SENSORS_TSL2550=m
+# CONFIG_SENSORS_BH1780 is not set
+CONFIG_SENSORS_BH1770=m
+CONFIG_SENSORS_APDS990X=m
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+CONFIG_VMWARE_BALLOON=m
+# CONFIG_BMP085_I2C is not set
+# CONFIG_BMP085_SPI is not set
+CONFIG_PCH_PHUB=m
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=m
+# CONFIG_EEPROM_AT25 is not set
+CONFIG_EEPROM_LEGACY=m
+CONFIG_EEPROM_MAX6875=m
+CONFIG_EEPROM_93CX6=m
+# CONFIG_EEPROM_93XX46 is not set
+CONFIG_CB710_CORE=m
+# CONFIG_CB710_DEBUG is not set
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+
+#
+# Texas Instruments shared transport line discipline
+#
+CONFIG_TI_ST=m
+CONFIG_SENSORS_LIS3_I2C=m
+
+#
+# Altera FPGA firmware download module
+#
+CONFIG_ALTERA_STAPL=m
+CONFIG_INTEL_MEI=m
+CONFIG_INTEL_MEI_ME=m
+# CONFIG_INTEL_MEI_TXE is not set
+CONFIG_VMWARE_VMCI=m
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_KERNEL_API is not set
+# CONFIG_CXL_EEH is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+CONFIG_RAID_ATTRS=m
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_TGT=m
+CONFIG_SCSI_NETLINK=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+CONFIG_SCSI_ENCLOSURE=m
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+CONFIG_SCSI_FC_TGT_ATTRS=y
+CONFIG_SCSI_ISCSI_ATTRS=m
+CONFIG_SCSI_SAS_ATTRS=m
+CONFIG_SCSI_SAS_LIBSAS=m
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SRP_ATTRS=m
+CONFIG_SCSI_SRP_TGT_ATTRS=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+CONFIG_ISCSI_BOOT_SYSFS=m
+CONFIG_SCSI_CXGB3_ISCSI=m
+CONFIG_SCSI_CXGB4_ISCSI=m
+CONFIG_SCSI_BNX2_ISCSI=m
+CONFIG_SCSI_BNX2X_FCOE=m
+CONFIG_BE2ISCSI=m
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+CONFIG_SCSI_HPSA=m
+CONFIG_SCSI_3W_9XXX=m
+CONFIG_SCSI_3W_SAS=m
+# CONFIG_SCSI_ACARD is not set
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
+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
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+# CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+# CONFIG_SCSI_AIC94XX is not set
+CONFIG_SCSI_MVSAS=m
+# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
+CONFIG_SCSI_MVUMI=m
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+CONFIG_SCSI_ARCMSR=m
+CONFIG_MEGARAID_NEWGEN=y
+CONFIG_MEGARAID_MM=m
+CONFIG_MEGARAID_MAILBOX=m
+CONFIG_MEGARAID_LEGACY=m
+CONFIG_MEGARAID_SAS=m
+CONFIG_SCSI_MPT2SAS=m
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+CONFIG_SCSI_SMARTPQI=m
+CONFIG_SCSI_UFSHCD=m
+CONFIG_SCSI_UFSHCD_PCI=m
+# CONFIG_SCSI_UFSHCD_PLATFORM is not set
+CONFIG_SCSI_HPTIOP=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_FLASHPOINT is not set
+CONFIG_VMWARE_PVSCSI=m
+CONFIG_HYPERV_STORAGE=m
+CONFIG_LIBFC=m
+CONFIG_LIBFCOE=m
+CONFIG_FCOE=m
+CONFIG_FCOE_FNIC=m
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+CONFIG_SCSI_ISCI=m
+# CONFIG_SCSI_IPS is not set
+CONFIG_SCSI_INITIO=m
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+CONFIG_SCSI_STEX=m
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+CONFIG_SCSI_QLA_FC=m
+# CONFIG_TCM_QLA2XXX is not set
+CONFIG_SCSI_QLA_ISCSI=m
+CONFIG_SCSI_LPFC=m
+# CONFIG_SCSI_LPFC_DEBUG_FS is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+CONFIG_SCSI_DEBUG=m
+CONFIG_SCSI_PMCRAID=m
+CONFIG_SCSI_PM8001=m
+CONFIG_SCSI_SRP=m
+CONFIG_SCSI_BFA_FC=m
+CONFIG_SCSI_VIRTIO=m
+# CONFIG_SCSI_CHELSIO_FCOE is not set
+CONFIG_SCSI_DH=y
+CONFIG_SCSI_DH_RDAC=y
+CONFIG_SCSI_DH_HP_SW=y
+CONFIG_SCSI_DH_EMC=y
+CONFIG_SCSI_DH_ALUA=y
+CONFIG_SCSI_OSD_INITIATOR=m
+CONFIG_SCSI_OSD_ULD=m
+CONFIG_SCSI_OSD_DPRINT_SENSE=1
+# CONFIG_SCSI_OSD_DEBUG is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_ACPI=y
+# CONFIG_SATA_ZPODD is not set
+CONFIG_SATA_PMP=y
+
+#
+# Controllers with non-SFF native interface
+#
+CONFIG_SATA_AHCI=m
+CONFIG_SATA_AHCI_PLATFORM=m
+# CONFIG_SATA_INIC162X is not set
+CONFIG_SATA_ACARD_AHCI=m
+CONFIG_SATA_SIL24=m
+CONFIG_ATA_SFF=y
+
+#
+# SFF controllers with custom DMA interface
+#
+CONFIG_PDC_ADMA=m
+CONFIG_SATA_QSTOR=m
+CONFIG_SATA_SX4=m
+CONFIG_ATA_BMDMA=y
+
+#
+# SATA SFF controllers with BMDMA
+#
+CONFIG_ATA_PIIX=m
+# CONFIG_SATA_HIGHBANK is not set
+CONFIG_SATA_MV=m
+CONFIG_SATA_NV=m
+CONFIG_SATA_PROMISE=m
+CONFIG_SATA_SIL=m
+CONFIG_SATA_SIS=m
+CONFIG_SATA_SVW=m
+CONFIG_SATA_ULI=m
+CONFIG_SATA_VIA=m
+CONFIG_SATA_VITESSE=m
+
+#
+# PATA SFF controllers with BMDMA
+#
+CONFIG_PATA_ALI=m
+CONFIG_PATA_AMD=m
+CONFIG_PATA_ARASAN_CF=m
+CONFIG_PATA_ARTOP=m
+CONFIG_PATA_ATIIXP=m
+CONFIG_PATA_ATP867X=m
+CONFIG_PATA_CMD64X=m
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+CONFIG_PATA_CS5535=m
+CONFIG_PATA_CS5536=m
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+CONFIG_PATA_HPT366=m
+CONFIG_PATA_HPT37X=m
+CONFIG_PATA_HPT3X2N=m
+CONFIG_PATA_HPT3X3=m
+# CONFIG_PATA_HPT3X3_DMA is not set
+CONFIG_PATA_IT8213=m
+CONFIG_PATA_IT821X=m
+CONFIG_PATA_JMICRON=m
+CONFIG_PATA_MARVELL=m
+CONFIG_PATA_NETCELL=m
+CONFIG_PATA_NINJA32=m
+# CONFIG_PATA_NS87415 is not set
+CONFIG_PATA_OLDPIIX=m
+# CONFIG_PATA_OPTIDMA is not set
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_PDC_OLD=m
+# CONFIG_PATA_RADISYS is not set
+CONFIG_PATA_RDC=m
+# CONFIG_PATA_SC1200 is not set
+CONFIG_PATA_SCH=m
+CONFIG_PATA_SERVERWORKS=m
+CONFIG_PATA_SIL680=m
+CONFIG_PATA_SIS=m
+CONFIG_PATA_TOSHIBA=m
+# CONFIG_PATA_TRIFLEX is not set
+CONFIG_PATA_VIA=m
+# CONFIG_PATA_WINBOND is not set
+
+#
+# PIO-only SFF controllers
+#
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_RZ1000 is not set
+
+#
+# Generic fallback / legacy drivers
+#
+CONFIG_PATA_ACPI=m
+CONFIG_ATA_GENERIC=m
+# CONFIG_PATA_LEGACY is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+# CONFIG_MD_MULTIPATH is not set
+CONFIG_MD_FAULTY=m
+# CONFIG_BCACHE is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_MQ_DEFAULT is not set
+CONFIG_DM_DEBUG=y
+CONFIG_DM_BUFIO=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+CONFIG_DM_BIO_PRISON=m
+CONFIG_DM_PERSISTENT_DATA=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+CONFIG_DM_CACHE=m
+CONFIG_DM_CACHE_SMQ=m
+CONFIG_DM_CACHE_CLEANER=m
+CONFIG_DM_ERA=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_MULTIPATH_QL=m
+CONFIG_DM_MULTIPATH_ST=m
+CONFIG_DM_DELAY=m
+CONFIG_DM_UEVENT=y
+CONFIG_DM_FLAKEY=m
+CONFIG_DM_VERITY=m
+CONFIG_DM_SWITCH=m
+CONFIG_TARGET_CORE=m
+CONFIG_TCM_IBLOCK=m
+CONFIG_TCM_FILEIO=m
+CONFIG_TCM_PSCSI=m
+CONFIG_TCM_USER2=m
+CONFIG_LOOPBACK_TARGET=m
+CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
+CONFIG_ISCSI_TARGET_CXGB4=m
+# CONFIG_SBP_TARGET is not set
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=m
+# CONFIG_FUSION_FC is not set
+CONFIG_FUSION_SAS=m
+CONFIG_FUSION_MAX_SGE=128
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_LOGGING=y
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_FIREWIRE=m
+CONFIG_FIREWIRE_OHCI=m
+CONFIG_FIREWIRE_SBP2=m
+CONFIG_FIREWIRE_NET=m
+# CONFIG_FIREWIRE_NOSY is not set
+# CONFIG_I2O is not set
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_NET_CORE=y
+CONFIG_BONDING=m
+CONFIG_DUMMY=m
+# CONFIG_EQUALIZER is not set
+CONFIG_NET_FC=y
+CONFIG_MII=m
+CONFIG_IFB=m
+CONFIG_NET_TEAM=m
+CONFIG_NET_TEAM_MODE_BROADCAST=m
+CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
+CONFIG_NET_TEAM_MODE_RANDOM=m
+CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
+CONFIG_NET_TEAM_MODE_LOADBALANCE=m
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_VXLAN=m
+CONFIG_GENEVE=m
+CONFIG_MACSEC=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
+CONFIG_VETH=m
+CONFIG_VIRTIO_NET=m
+CONFIG_NLMON=m
+# CONFIG_ARCNET 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 is not set
+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
+#
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+# CONFIG_NET_DSA_MV88E6131 is not set
+# CONFIG_NET_DSA_MV88E6123_61_65 is not set
+CONFIG_ETHERNET=y
+CONFIG_MDIO=m
+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
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_ATL2=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_ALX=m
+CONFIG_NET_CADENCE=y
+CONFIG_ARM_AT91_ETHER=m
+CONFIG_MACB=m
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
+# CONFIG_BNX2X_VXLAN is not set
+# CONFIG_BNX2X_GENEVE is not set
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_BNA=m
+CONFIG_NET_CALXEDA_XGMAC=m
+CONFIG_NET_VENDOR_CHELSIO=y
+# CONFIG_CHELSIO_T1 is not set
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4=m
+# CONFIG_CHELSIO_T4_DCB is not set
+CONFIG_CHELSIO_T4_UWIRE=y
+CONFIG_CHELSIO_T4VF=m
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_ENIC=m
+CONFIG_DNET=m
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_DE2104X_DSL=0
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_NAPI is not set
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_ULI526X=m
+CONFIG_PCMCIA_XIRCOM=m
+# CONFIG_NET_VENDOR_DLINK is not set
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_BE2NET=m
+CONFIG_BE2NET_HWMON=y
+CONFIG_BE2NET_VXLAN=y
+# CONFIG_NET_VENDOR_EXAR is not set
+# CONFIG_NET_VENDOR_HP is not set
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
+CONFIG_IGB=m
+CONFIG_IGB_HWMON=y
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+# CONFIG_IXGBE_VXLAN is not set
+CONFIG_IXGBE_HWMON=y
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGBE_DCB=y
+CONFIG_IXGBEVF=m
+CONFIG_I40E=m
+# CONFIG_I40E_VXLAN is not set
+CONFIG_I40E_DCB=y
+# CONFIG_I40E_FCOE is not set
+CONFIG_I40EVF=m
+CONFIG_FM10K=m
+CONFIG_FM10K_VXLAN=y
+# CONFIG_NET_VENDOR_I825XX is not set
+# CONFIG_IP1000 is not set
+CONFIG_JME=m
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_MVMDIO=m
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN_VXLAN=y
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+# CONFIG_FEALNX is not set
+# CONFIG_NET_VENDOR_NATSEMI 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=m
+CONFIG_YELLOWFIN=m
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC=m
+CONFIG_QLCNIC_SRIOV=y
+CONFIG_QLCNIC_DCB=y
+# CONFIG_QLCNIC_VXLAN is not set
+CONFIG_QLCNIC_HWMON=y
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QED_SRIOV=y
+CONFIG_QEDE=m
+# CONFIG_QEDE_VXLAN is not set
+# CONFIG_QEDE_GENEVE is not set
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_ATP is not set
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=m
+# CONFIG_NET_VENDOR_RDC is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SILAN is not set
+# CONFIG_NET_VENDOR_SIS is not set
+# CONFIG_SFC is not set
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SUN is not set
+# CONFIG_NET_VENDOR_TEHUTI is not set
+# CONFIG_NET_VENDOR_TI 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
+# CONFIG_NET_SB1000 is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_AT803X_PHY=m
+CONFIG_AMD_PHY=m
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_BCM87XX_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MICREL_PHY=m
+CONFIG_FIXED_PHY=y
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_GPIO is not set
+# CONFIG_MICREL_KS8995MA is not set
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_SLIP=m
+CONFIG_SLHC=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+# CONFIG_SLIP_MODE_SLIP6 is not set
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+# CONFIG_USB_LAN78XX is not set
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_DM9601=m
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SR9800 is not set
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_NET_QMI_WWAN=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
+# CONFIG_USB_NET_CH9200 is not set
+CONFIG_WLAN=y
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_AIRO is not set
+# CONFIG_ATMEL is not set
+# CONFIG_AT76C50X_USB is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_ADM8211 is not set
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_ATH_COMMON=m
+CONFIG_WLAN_VENDOR_ATH=y
+# CONFIG_ATH_DEBUG is not set
+# CONFIG_ATH5K is not set
+# CONFIG_ATH5K_PCI is not set
+CONFIG_ATH9K_HW=m
+CONFIG_ATH9K_COMMON=m
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K=m
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_AHB=y
+CONFIG_ATH9K_DEBUGFS=y
+# CONFIG_ATH9K_STATION_STATISTICS is not set
+# CONFIG_ATH9K_DYNACK is not set
+CONFIG_ATH9K_WOW=y
+CONFIG_ATH9K_RFKILL=y
+# CONFIG_ATH9K_CHANNEL_CONTEXT is not set
+CONFIG_ATH9K_PCOEM=y
+CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
+CONFIG_ATH9K_HWRNG=y
+CONFIG_CARL9170=m
+CONFIG_CARL9170_LEDS=y
+# CONFIG_CARL9170_DEBUGFS is not set
+CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+# CONFIG_ATH6KL is not set
+# CONFIG_AR5523 is not set
+CONFIG_WIL6210=m
+CONFIG_WIL6210_ISR_COR=y
+CONFIG_WIL6210_TRACING=y
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+# CONFIG_ATH10K_DEBUG is not set
+CONFIG_ATH10K_DEBUGFS=y
+# CONFIG_ATH10K_TRACING is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+CONFIG_WLAN_VENDOR_BROADCOM=y
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMSMAC=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PROTO_BCDC=y
+CONFIG_BRCMFMAC_PROTO_MSGBUF=y
+CONFIG_BRCMFMAC_SDIO=y
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMFMAC_PCIE=y
+# CONFIG_BRCM_TRACING is not set
+# CONFIG_BRCMDBG is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_WLAN_VENDOR_INTEL=y
+CONFIG_IWLEGACY=m
+CONFIG_IWL4965=m
+CONFIG_IWL3945=m
+
+#
+# iwl3945 / iwl4965 Debugging Options
+#
+CONFIG_IWLEGACY_DEBUG=y
+CONFIG_IWLEGACY_DEBUGFS=y
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
+CONFIG_IWLDVM=m
+CONFIG_IWLMVM=m
+CONFIG_IWLWIFI_OPMODE_MODULAR=y
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
+
+#
+# Debugging Options
+#
+# CONFIG_IWLWIFI_DEBUG is not set
+CONFIG_IWLWIFI_DEBUGFS=y
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_MWL8K=m
+# CONFIG_HERMES is not set
+# CONFIG_P54_COMMON is not set
+CONFIG_WLAN_VENDOR_RALINK=y
+CONFIG_RT2X00=m
+# CONFIG_RT2400PCI is not set
+# CONFIG_RT2500PCI is not set
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT33XX=y
+CONFIG_RT2800PCI_RT35XX=y
+CONFIG_RT2800PCI_RT53XX=y
+CONFIG_RT2800PCI_RT3290=y
+# CONFIG_RT2500USB is not set
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2800_LIB_MMIO=m
+CONFIG_RT2X00_LIB_MMIO=m
+CONFIG_RT2X00_LIB_PCI=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+CONFIG_RT2X00_LIB_DEBUGFS=y
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_WLAN_VENDOR_REALTEK=y
+# CONFIG_RTL8180 is not set
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_RTL_CARDS=m
+CONFIG_RTL8192CE=m
+CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
+CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
+CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_PCI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192C_COMMON=m
+CONFIG_RTL8723_COMMON=m
+CONFIG_RTLBTCOEXIST=m
+# CONFIG_WL_TI is not set
+# CONFIG_ZD1211RW is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+CONFIG_WAN=y
+# CONFIG_LANMEDIA is not set
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=m
+# CONFIG_HDLC_RAW_ETH is not set
+CONFIG_HDLC_CISCO=m
+CONFIG_HDLC_FR=m
+CONFIG_HDLC_PPP=m
+
+#
+# X.25/LAPB support is disabled
+#
+# CONFIG_PCI200SYN is not set
+# CONFIG_WANXL is not set
+# CONFIG_PC300TOO is not set
+# CONFIG_FARSYNC is not set
+# CONFIG_DSCC4 is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+# CONFIG_SBNI is not set
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKELB=m
+# CONFIG_IEEE802154_AT86RF230 is not set
+# CONFIG_IEEE802154_MRF24J40 is not set
+# CONFIG_IEEE802154_CC2520 is not set
+# CONFIG_IEEE802154_ATUSB is not set
+# CONFIG_IEEE802154_ADF7242 is not set
+CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_VMXNET3=m
+CONFIG_FUJITSU_ES=m
+CONFIG_HYPERV_NET=m
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+# CONFIG_ISDN_PPP_BSDCOMP is not set
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+
+#
+# ISDN feature submodules
+#
+CONFIG_ISDN_DIVERSION=m
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+CONFIG_HISAX_NO_SENDCOMPLETE=y
+CONFIG_HISAX_NO_LLC=y
+CONFIG_HISAX_NO_KEYPAD=y
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+# CONFIG_HISAX_DEBUG is not set
+
+#
+# HiSax PCMCIA card service modules
+#
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+# CONFIG_HISAX_HFCUSB is not set
+CONFIG_HISAX_HFC4S8S=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+
+#
+# Active cards
+#
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+# CONFIG_CAPI_TRACE is not set
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+# CONFIG_CAPI_EICON is not set
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_CAPI=y
+# CONFIG_GIGASET_I4L is not set
+# CONFIG_GIGASET_DUMMYLL is not set
+CONFIG_GIGASET_BASE=m
+CONFIG_GIGASET_M105=m
+CONFIG_GIGASET_M101=m
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_HDLC=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_FF_MEMLESS=m
+CONFIG_INPUT_POLLDEV=m
+CONFIG_INPUT_SPARSEKMAP=m
+# CONFIG_INPUT_MATRIXKMAP is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD 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
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_SENTELIC=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_VMMOUSE=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_APPLETOUCH=m
+CONFIG_MOUSE_BCM5974=m
+CONFIG_MOUSE_CYAPA=m
+CONFIG_MOUSE_VSXXXAA=m
+# CONFIG_MOUSE_GPIO is not set
+CONFIG_MOUSE_SYNAPTICS_I2C=m
+CONFIG_MOUSE_SYNAPTICS_USB=m
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TABLET=y
+CONFIG_TABLET_USB_ACECAD=m
+CONFIG_TABLET_USB_AIPTEK=m
+CONFIG_TABLET_USB_GTCO=m
+# CONFIG_TABLET_USB_HANWANG is not set
+CONFIG_TABLET_USB_KBTAB=m
+CONFIG_TABLET_USB_WACOM=m
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_ADS7846 is not set
+# CONFIG_TOUCHSCREEN_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
+# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_ILI210X is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+CONFIG_TOUCHSCREEN_ELO=m
+CONFIG_TOUCHSCREEN_WACOM_W8001=m
+CONFIG_TOUCHSCREEN_WACOM_I2C=m
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MMS114 is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_WM97XX is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2005 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
+# CONFIG_TOUCHSCREEN_W90X900 is not set
+# CONFIG_TOUCHSCREEN_ST1232 is not set
+# CONFIG_TOUCHSCREEN_TPS6507X is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+CONFIG_INPUT_PCSPKR=m
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
+CONFIG_INPUT_APANEL=m
+CONFIG_INPUT_GP2A=m
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+CONFIG_INPUT_WISTRON_BTNS=m
+CONFIG_INPUT_ATLAS_BTNS=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_KXTJ9 is not set
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
+# CONFIG_INPUT_PCF8574 is not set
+# CONFIG_INPUT_PWM_BEEPER is not set
+CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
+# CONFIG_INPUT_CMA3000 is not set
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SERIO_RAW=m
+CONFIG_SERIO_ALTERA_PS2=m
+# CONFIG_SERIO_PS2MULT is not set
+CONFIG_SERIO_ARC_PS2=m
+CONFIG_HYPERV_KEYBOARD=m
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_ROCKETPORT is not set
+CONFIG_CYCLADES=m
+# CONFIG_CYZ_INTR is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_SYNCLINK_GT=m
+CONFIG_NOZOMI=m
+# CONFIG_ISI is not set
+CONFIG_N_HDLC=m
+CONFIG_N_GSM=m
+# CONFIG_TRACE_SINK is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_CRASH=y
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_DW=y
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_KGDB_NMI is not set
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_MFD_HSU is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_CONSOLE_POLL=y
+CONFIG_SERIAL_JSM=m
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_PCH_UART is not set
+CONFIG_SERIAL_ARC=m
+CONFIG_SERIAL_ARC_NR_PORTS=1
+# CONFIG_SERIAL_RP2 is not set
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+CONFIG_HVC_DRIVER=y
+CONFIG_HVC_IRQ=y
+CONFIG_HVC_XEN=y
+CONFIG_HVC_XEN_FRONTEND=y
+CONFIG_VIRTIO_CONSOLE=m
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_SI=m
+# CONFIG_IPMI_SI_PROBE_DEFAULTS is not set
+CONFIG_IPMI_SSIF=m
+CONFIG_IPMI_WATCHDOG=m
+CONFIG_IPMI_POWEROFF=m
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_TIMERIOMEM=m
+CONFIG_HW_RANDOM_INTEL=m
+CONFIG_HW_RANDOM_AMD=m
+# CONFIG_HW_RANDOM_ATMEL is not set
+CONFIG_HW_RANDOM_GEODE=m
+CONFIG_HW_RANDOM_VIA=m
+CONFIG_HW_RANDOM_VIRTIO=m
+# CONFIG_HW_RANDOM_EXYNOS is not set
+CONFIG_HW_RANDOM_TPM=m
+CONFIG_NVRAM=y
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+CONFIG_SONYPI=m
+# CONFIG_MWAVE is not set
+CONFIG_PC8736x_GPIO=m
+CONFIG_NSC_GPIO=m
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=8192
+CONFIG_HPET=y
+CONFIG_HPET_MMAP=y
+# CONFIG_HPET_MMAP_DEFAULT is not set
+CONFIG_HANGCHECK_TIMER=m
+CONFIG_TCG_TPM=y
+CONFIG_TCG_TIS=y
+# CONFIG_TCG_TIS_I2C_ATMEL is not set
+# CONFIG_TCG_TIS_I2C_INFINEON is not set
+# CONFIG_TCG_TIS_I2C_NUVOTON is not set
+CONFIG_TCG_NSC=m
+CONFIG_TCG_ATMEL=m
+CONFIG_TCG_INFINEON=m
+# CONFIG_TCG_XEN is not set
+CONFIG_TCG_CRB=m
+CONFIG_TCG_TIS_ST33ZP24=m
+CONFIG_TCG_TIS_ST33ZP24_I2C=m
+CONFIG_TELCLOCK=m
+CONFIG_DEVPORT=y
+CONFIG_I2C=m
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=m
+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_HELPER_AUTO=y
+CONFIG_I2C_SMBUS=m
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCA=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI1563=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD756_S4882=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_ISCH=m
+CONFIG_I2C_ISMT=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_NFORCE2_S4985=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+
+#
+# ACPI drivers
+#
+CONFIG_I2C_SCMI=m
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+CONFIG_I2C_DESIGNWARE_CORE=m
+CONFIG_I2C_DESIGNWARE_PLATFORM=m
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EG20T is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_INTEL_MID is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_PCA_PLATFORM=m
+# CONFIG_I2C_PXA_PCI is not set
+CONFIG_I2C_SIMTEC=m
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+CONFIG_I2C_DIOLAN_U2C=m
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+# CONFIG_I2C_TAOS_EVM is not set
+CONFIG_I2C_TINY_USB=m
+CONFIG_I2C_VIPERBOARD=m
+
+#
+# Other I2C/SMBus bus drivers
+#
+CONFIG_SCx200_ACB=m
+CONFIG_I2C_STUB=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_BUTTERFLY is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_LM70_LLP is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PXA2XX is not set
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_TOPCLIFF_PCH is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+
+#
+# Qualcomm MSM SSBI bus support
+#
+# CONFIG_SSBI is not set
+# CONFIG_HSI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=m
+# CONFIG_PPS_DEBUG is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+CONFIG_PPS_CLIENT_LDISC=m
+CONFIG_PPS_CLIENT_PARPORT=m
+CONFIG_PPS_CLIENT_GPIO=m
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=m
+CONFIG_DP83640_PHY=m
+CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
+CONFIG_GPIO_ACPI=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_IT8761E is not set
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_TS5500 is not set
+# CONFIG_GPIO_SCH is not set
+CONFIG_GPIO_ICH=m
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_LYNXPOINT is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_ADP5588 is not set
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_AMD8111 is not set
+CONFIG_GPIO_LANGWELL=y
+# CONFIG_GPIO_PCH is not set
+# CONFIG_GPIO_ML_IOH is not set
+# CONFIG_GPIO_RDC321X is not set
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_74X164 is not set
+
+#
+# AC97 GPIO expanders:
+#
+
+#
+# LPC GPIO expanders:
+#
+
+#
+# MODULbus GPIO expanders:
+#
+
+#
+# USB GPIO expanders:
+#
+CONFIG_GPIO_VIPERBOARD=m
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_BQ2415X is not set
+CONFIG_CHARGER_SMB347=m
+# CONFIG_BATTERY_GOLDFISH is not set
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_AVS is not set
+CONFIG_POWERCAP=y
+CONFIG_INTEL_RAPL=m
+CONFIG_HWMON=y
+CONFIG_HWMON_VID=m
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+CONFIG_SENSORS_ABITUGURU=m
+CONFIG_SENSORS_ABITUGURU3=m
+# CONFIG_SENSORS_AD7314 is not set
+CONFIG_SENSORS_AD7414=m
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADCXX is not set
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ADM1025=m
+CONFIG_SENSORS_ADM1026=m
+CONFIG_SENSORS_ADM1029=m
+CONFIG_SENSORS_ADM1031=m
+CONFIG_SENSORS_ADM9240=m
+CONFIG_SENSORS_ADT7X10=m
+# CONFIG_SENSORS_ADT7310 is not set
+CONFIG_SENSORS_ADT7410=m
+CONFIG_SENSORS_ADT7411=m
+CONFIG_SENSORS_ADT7462=m
+CONFIG_SENSORS_ADT7470=m
+CONFIG_SENSORS_ADT7475=m
+CONFIG_SENSORS_ASC7621=m
+CONFIG_SENSORS_K8TEMP=m
+CONFIG_SENSORS_K10TEMP=m
+CONFIG_SENSORS_FAM15H_POWER=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_ATXP1=m
+CONFIG_SENSORS_DS620=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_I5K_AMB=m
+CONFIG_SENSORS_F71805F=m
+CONFIG_SENSORS_F71882FG=m
+CONFIG_SENSORS_F75375S=m
+CONFIG_SENSORS_FSCHMD=m
+CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_GL520SM=m
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+CONFIG_SENSORS_CORETEMP=m
+CONFIG_SENSORS_IBMAEM=m
+CONFIG_SENSORS_IBMPEX=m
+CONFIG_SENSORS_IT87=m
+# CONFIG_SENSORS_JC42 is not set
+CONFIG_SENSORS_LINEAGE=m
+CONFIG_SENSORS_LM63=m
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM73=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM77=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM87=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_LM92=m
+CONFIG_SENSORS_LM93=m
+CONFIG_SENSORS_LTC4151=m
+CONFIG_SENSORS_LTC4215=m
+CONFIG_SENSORS_LTC4245=m
+CONFIG_SENSORS_LTC4261=m
+CONFIG_SENSORS_LM95234=m
+CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
+# CONFIG_SENSORS_MAX1111 is not set
+CONFIG_SENSORS_MAX16065=m
+CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
+CONFIG_SENSORS_MAX197=m
+CONFIG_SENSORS_MAX6639=m
+CONFIG_SENSORS_MAX6642=m
+CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MCP3021=m
+CONFIG_SENSORS_NCT6775=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
+CONFIG_SENSORS_PC87360=m
+CONFIG_SENSORS_PC87427=m
+CONFIG_SENSORS_PCF8591=m
+CONFIG_PMBUS=m
+CONFIG_SENSORS_PMBUS=m
+CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LTC2978=m
+CONFIG_SENSORS_MAX16064=m
+CONFIG_SENSORS_MAX34440=m
+CONFIG_SENSORS_MAX8688=m
+CONFIG_SENSORS_UCD9000=m
+CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_ZL6100=m
+CONFIG_SENSORS_SHT15=m
+CONFIG_SENSORS_SHT21=m
+CONFIG_SENSORS_SIS5595=m
+# CONFIG_SENSORS_SMM665 is not set
+CONFIG_SENSORS_DME1737=m
+CONFIG_SENSORS_EMC1403=m
+# CONFIG_SENSORS_EMC2103 is not set
+CONFIG_SENSORS_EMC6W201=m
+CONFIG_SENSORS_SMSC47M1=m
+CONFIG_SENSORS_SMSC47M192=m
+CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
+CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
+CONFIG_SENSORS_ADS1015=m
+CONFIG_SENSORS_ADS7828=m
+# CONFIG_SENSORS_ADS7871 is not set
+CONFIG_SENSORS_AMC6821=m
+CONFIG_SENSORS_INA209=m
+CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_THMC50=m
+CONFIG_SENSORS_TMP102=m
+CONFIG_SENSORS_TMP401=m
+CONFIG_SENSORS_TMP421=m
+CONFIG_SENSORS_VIA_CPUTEMP=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_VT1211=m
+CONFIG_SENSORS_VT8231=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83791D=m
+CONFIG_SENSORS_W83792D=m
+CONFIG_SENSORS_W83793=m
+CONFIG_SENSORS_W83795=m
+# CONFIG_SENSORS_W83795_FANCTRL is not set
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83L786NG=m
+CONFIG_SENSORS_W83627HF=m
+CONFIG_SENSORS_W83627EHF=m
+CONFIG_SENSORS_APPLESMC=m
+
+#
+# ACPI drivers
+#
+CONFIG_SENSORS_ACPI_POWER=m
+CONFIG_SENSORS_ATK0110=m
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+# CONFIG_THERMAL_GOV_USER_SPACE is not set
+# CONFIG_CPU_THERMAL is not set
+# CONFIG_THERMAL_EMULATION is not set
+CONFIG_INTEL_POWERCLAMP=m
+CONFIG_INT340X_THERMAL=m
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_SYSFS=y
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_F71808E_WDT=m
+CONFIG_SP5100_TCO=m
+# CONFIG_SC520_WDT is not set
+CONFIG_SBC_FITPC2_WATCHDOG=m
+# CONFIG_EUROTECH_WDT is not set
+CONFIG_IB700_WDT=m
+CONFIG_IBMASR=m
+# CONFIG_WAFER_WDT is not set
+CONFIG_I6300ESB_WDT=m
+CONFIG_IE6XX_WDT=m
+CONFIG_ITCO_WDT=m
+CONFIG_ITCO_VENDOR_SUPPORT=y
+CONFIG_IT8712F_WDT=m
+CONFIG_IT87_WDT=m
+CONFIG_HP_WATCHDOG=m
+CONFIG_HPWDT_NMI_DECODING=y
+# CONFIG_SC1200_WDT is not set
+# CONFIG_PC87413_WDT is not set
+CONFIG_NV_TCO=m
+# CONFIG_60XX_WDT is not set
+# CONFIG_SBC8360_WDT is not set
+# CONFIG_SBC7240_WDT is not set
+# CONFIG_CPU5_WDT is not set
+CONFIG_SMSC_SCH311X_WDT=m
+# CONFIG_SMSC37B787_WDT is not set
+CONFIG_VIA_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83697HF_WDT=m
+CONFIG_W83697UG_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_W83977F_WDT=m
+CONFIG_MACHZ_WDT=m
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+CONFIG_XEN_WDT=m
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+# CONFIG_SSB_B43_PCI_BRIDGE is not set
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_DEBUG is not set
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_SSB_DRIVER_GPIO=y
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+CONFIG_BCMA=m
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+# CONFIG_BCMA_HOST_SOC is not set
+CONFIG_BCMA_DRIVER_PCI=y
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+# CONFIG_BCMA_DEBUG is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_CS5535 is not set
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_LPC_ICH=m
+CONFIG_LPC_SCH=m
+CONFIG_MFD_INTEL_LPSS=y
+CONFIG_MFD_INTEL_LPSS_ACPI=y
+CONFIG_MFD_INTEL_LPSS_PCI=y
+# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_EZX_PCAP is not set
+CONFIG_MFD_VIPERBOARD=m
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_UCB1400_CORE is not set
+# CONFIG_MFD_RDC321X is not set
+CONFIG_MFD_RTSX_PCI=m
+CONFIG_MFD_RTSX_USB=m
+# CONFIG_MFD_SI476X_CORE is not set
+CONFIG_MFD_SM501=m
+CONFIG_MFD_SM501_GPIO=y
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TIMBERDALE is not set
+# CONFIG_MFD_TMIO is not set
+CONFIG_MFD_VX855=m
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_REGULATOR is not set
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_RC_SUPPORT=y
+# CONFIG_MEDIA_CONTROLLER is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
+CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DVB=m
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
+CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
+CONFIG_TTPCI_EEPROM=m
+CONFIG_DVB_MAX_ADAPTERS=8
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+#
+# Media drivers
+#
+CONFIG_RC_CORE=m
+CONFIG_RC_MAP=m
+CONFIG_RC_DECODERS=y
+CONFIG_LIRC=m
+CONFIG_IR_LIRC_CODEC=m
+CONFIG_IR_NEC_DECODER=m
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_RC_DEVICES=y
+CONFIG_RC_ATI_REMOTE=m
+CONFIG_IR_ENE=m
+CONFIG_IR_IMON=m
+CONFIG_IR_MCEUSB=m
+CONFIG_IR_ITE_CIR=m
+CONFIG_IR_FINTEK=m
+CONFIG_IR_NUVOTON=m
+CONFIG_IR_REDRAT3=m
+CONFIG_IR_STREAMZAP=m
+CONFIG_IR_WINBOND_CIR=m
+CONFIG_IR_IGUANA=m
+CONFIG_IR_TTUSBIR=m
+# CONFIG_RC_LOOPBACK is not set
+CONFIG_IR_GPIO_CIR=m
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_JL2005BCD=m
+# CONFIG_USB_GSPCA_KINECT is not set
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_PWC_INPUT_EVDEV=y
+# CONFIG_VIDEO_CPIA2 is not set
+CONFIG_USB_ZR364XX=m
+CONFIG_USB_STKWEBCAM=m
+CONFIG_USB_S2255=m
+# CONFIG_USB_SN9C102 is not set
+
+#
+# Analog TV USB devices
+#
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_AC97=y
+
+#
+# Analog/digital TV USB devices
+#
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_RC=y
+CONFIG_VIDEO_CX231XX_ALSA=m
+CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
+
+#
+# Digital TV USB devices
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_FRIIO=m
+CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_USB_AF9035=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_AZ6007=m
+CONFIG_DVB_USB_CE6230=m
+CONFIG_DVB_USB_EC168=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_LME2510=m
+CONFIG_DVB_USB_MXL111SF=m
+CONFIG_DVB_USB_RTL28XXU=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_SMS_USB_DRV=m
+CONFIG_DVB_B2C2_FLEXCOP_USB=m
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_ALSA=m
+CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=m
+CONFIG_MEDIA_PCI_SUPPORT=y
+
+#
+# Media capture support
+#
+# CONFIG_VIDEO_MEYE is not set
+
+#
+# Media capture/analog TV support
+#
+CONFIG_VIDEO_IVTV=m
+# CONFIG_VIDEO_IVTV_ALSA is not set
+CONFIG_VIDEO_FB_IVTV=m
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_MXB is not set
+
+#
+# Media capture/analog/hybrid TV support
+#
+CONFIG_VIDEO_CX18=m
+CONFIG_VIDEO_CX18_ALSA=m
+CONFIG_VIDEO_CX23885=m
+CONFIG_MEDIA_ALTERA_CI=m
+# CONFIG_VIDEO_CX25821 is not set
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+CONFIG_VIDEO_CX88_BLACKBIRD=m
+CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_VP3054=m
+CONFIG_VIDEO_CX88_MPEG=m
+CONFIG_VIDEO_BT848=m
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_SAA7134_ALSA=m
+CONFIG_VIDEO_SAA7134_RC=y
+CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7164=m
+
+#
+# Media digital TV PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET_CORE=m
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+CONFIG_DVB_B2C2_FLEXCOP_PCI=m
+# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set
+CONFIG_DVB_PLUTO2=m
+CONFIG_DVB_DM1105=m
+CONFIG_DVB_PT1=m
+CONFIG_MANTIS_CORE=m
+CONFIG_DVB_MANTIS=m
+CONFIG_DVB_HOPPER=m
+CONFIG_DVB_NGENE=m
+CONFIG_DVB_DDBRIDGE=m
+# CONFIG_V4L_PLATFORM_DRIVERS is not set
+# CONFIG_V4L_MEM2MEM_DRIVERS is not set
+# CONFIG_V4L_TEST_DRIVERS is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+CONFIG_SMS_SDIO_DRV=m
+# CONFIG_MEDIA_PARPORT_SUPPORT is not set
+# CONFIG_RADIO_ADAPTERS is not set
+
+#
+# Supported FireWire (IEEE 1394) Adapters
+#
+CONFIG_DVB_FIREDTV=m
+CONFIG_DVB_FIREDTV_INPUT=y
+CONFIG_MEDIA_COMMON_OPTIONS=y
+
+#
+# common driver options
+#
+CONFIG_VIDEO_CX2341X=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_DVB_B2C2_FLEXCOP=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_SMS_SIANO_MDTV=m
+CONFIG_SMS_SIANO_RC=y
+# CONFIG_SMS_SIANO_DEBUGFS is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_VIDEO_IR_I2C=m
+
+#
+# Audio decoders, processors and mixers
+#
+CONFIG_VIDEO_TVAUDIO=m
+CONFIG_VIDEO_TDA7432=m
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS5345=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_WM8739=m
+CONFIG_VIDEO_VP27SMPX=m
+
+#
+# RDS decoders
+#
+CONFIG_VIDEO_SAA6588=m
+
+#
+# Video decoders
+#
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_TVP5150=m
+
+#
+# Video and audio decoders
+#
+CONFIG_VIDEO_SAA717X=m
+CONFIG_VIDEO_CX25840=m
+
+#
+# Video encoders
+#
+CONFIG_VIDEO_SAA7127=m
+
+#
+# Camera sensor devices
+#
+CONFIG_VIDEO_MT9V011=m
+
+#
+# Flash devices
+#
+
+#
+# Video improvement chips
+#
+CONFIG_VIDEO_UPD64031A=m
+CONFIG_VIDEO_UPD64083=m
+
+#
+# Miscelaneous helper chips
+#
+CONFIG_VIDEO_M52790=m
+
+#
+# Sensors used on soc_camera driver
+#
+CONFIG_MEDIA_TUNER=m
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_R820T=m
+
+#
+# Multistandard (satellite) frontends
+#
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV6110x=m
+
+#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_EC100=m
+CONFIG_DVB_STV0367=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+CONFIG_DVB_S5H1411=m
+
+#
+# ISDB-T (terrestrial) frontends
+#
+CONFIG_DVB_S921=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_MB86A20S=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_TDA665x=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_AF9033=m
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+
+#
+# Graphics support
+#
+CONFIG_AGP=y
+CONFIG_AGP_ALI=y
+CONFIG_AGP_ATI=y
+CONFIG_AGP_AMD=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+CONFIG_AGP_NVIDIA=y
+CONFIG_AGP_SIS=y
+CONFIG_AGP_SWORKS=y
+CONFIG_AGP_VIA=y
+CONFIG_AGP_EFFICEON=y
+CONFIG_INTEL_GTT=y
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=64
+CONFIG_VGA_SWITCHEROO=y
+CONFIG_DRM=m
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
+CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_LOAD_EDID_FIRMWARE=y
+CONFIG_DRM_TTM=m
+
+#
+# I2C encoder or helper chips
+#
+# CONFIG_DRM_I2C_ADV7511 is not set
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_SIL164=m
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+CONFIG_DRM_RADEON=m
+# CONFIG_DRM_RADEON_USERPTR is not set
+CONFIG_DRM_AMDGPU=m
+# CONFIG_DRM_AMDGPU_CIK is not set
+# CONFIG_DRM_AMDGPU_USERPTR is not set
+CONFIG_DRM_AMD_POWERPLAY=y
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
+CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+# CONFIG_DRM_I810 is not set
+CONFIG_DRM_I915=m
+# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+CONFIG_DRM_I915_USERPTR=y
+# CONFIG_DRM_MGA is not set
+# CONFIG_DRM_SIS is not set
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+CONFIG_DRM_VMWGFX=m
+CONFIG_DRM_VMWGFX_FBCON=y
+CONFIG_DRM_GMA500=m
+CONFIG_DRM_GMA600=y
+CONFIG_DRM_GMA3600=y
+CONFIG_DRM_UDL=m
+CONFIG_DRM_AST=m
+CONFIG_DRM_MGAG200=m
+CONFIG_DRM_CIRRUS_QEMU=m
+CONFIG_DRM_QXL=m
+CONFIG_DRM_BOCHS=m
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+CONFIG_VGASTATE=m
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+CONFIG_HDMI=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB_DDC=m
+CONFIG_FB_BOOT_VESA_SUPPORT=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=m
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_UVESA is not set
+CONFIG_FB_VESA=y
+CONFIG_FB_EFI=y
+# CONFIG_FB_N411 is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I740 is not set
+CONFIG_FB_I810=m
+CONFIG_FB_I810_GTF=y
+CONFIG_FB_I810_I2C=y
+# CONFIG_FB_LE80578 is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_VIA is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CARMINE is not set
+CONFIG_FB_GEODE=y
+CONFIG_FB_GEODE_LX=y
+CONFIG_FB_GEODE_GX=y
+# CONFIG_FB_GEODE_GX1 is not set
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
+# CONFIG_FB_SMSCUFX is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_GOLDFISH is not set
+# CONFIG_FB_VIRTUAL 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
+# CONFIG_FB_AUO_K190X is not set
+CONFIG_FB_HYPERV=m
+# CONFIG_EXYNOS_VIDEO is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_L4F00242T03 is not set
+# CONFIG_LCD_LMS283GF05 is not set
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI922X is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+CONFIG_LCD_PLATFORM=m
+# CONFIG_LCD_S6E63M0 is not set
+# CONFIG_LCD_LD9040 is not set
+# CONFIG_LCD_AMS369FG06 is not set
+# CONFIG_LCD_LMS501KF03 is not set
+# CONFIG_LCD_HX8357 is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_BACKLIGHT_PWM is not set
+CONFIG_BACKLIGHT_APPLE=m
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+CONFIG_BACKLIGHT_LP855X=m
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VGACON_SOFT_SCROLLBACK=y
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_PCM_ELD=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_COMPRESS_OFFLOAD=m
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_HRTIMER=m
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
+# CONFIG_SND_SUPPORT_OLD_API is not set
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_RAWMIDI_SEQ=m
+CONFIG_SND_OPL3_LIB_SEQ=m
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+CONFIG_SND_EMU10K1_SEQ=m
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DRIVERS=y
+CONFIG_SND_PCSP=m
+CONFIG_SND_DUMMY=m
+CONFIG_SND_ALOOP=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+# CONFIG_SND_MTS64 is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+CONFIG_SND_MPU401=m
+# CONFIG_SND_PORTMAN2X4 is not set
+CONFIG_SND_AC97_POWER_SAVE=y
+CONFIG_SND_AC97_POWER_SAVE_DEFAULT=5
+CONFIG_SND_SB_COMMON=m
+CONFIG_SND_SB16_DSP=m
+CONFIG_SND_TEA575X=m
+CONFIG_SND_PCI=y
+CONFIG_SND_AD1889=m
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ASIHPI=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_ATIIXP_MODEM=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+# CONFIG_SND_AW2 is not set
+# CONFIG_SND_AZT3328 is not set
+CONFIG_SND_BT87X=m
+# CONFIG_SND_BT87X_OVERCLOCK is not set
+CONFIG_SND_CA0106=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_OXYGEN_LIB=m
+CONFIG_SND_OXYGEN=m
+# CONFIG_SND_CS4281 is not set
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS5530=m
+CONFIG_SND_CS5535AUDIO=m
+CONFIG_SND_CTXFI=m
+CONFIG_SND_DARLA20=m
+CONFIG_SND_GINA20=m
+CONFIG_SND_LAYLA20=m
+CONFIG_SND_DARLA24=m
+CONFIG_SND_GINA24=m
+CONFIG_SND_LAYLA24=m
+CONFIG_SND_MONA=m
+CONFIG_SND_MIA=m
+CONFIG_SND_ECHO3G=m
+CONFIG_SND_INDIGO=m
+CONFIG_SND_INDIGOIO=m
+CONFIG_SND_INDIGODJ=m
+CONFIG_SND_INDIGOIOX=m
+CONFIG_SND_INDIGODJX=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_EMU10K1X=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+# CONFIG_SND_ES1938 is not set
+CONFIG_SND_ES1968=m
+CONFIG_SND_ES1968_INPUT=y
+CONFIG_SND_ES1968_RADIO=y
+# CONFIG_SND_FM801 is not set
+CONFIG_SND_HDSP=m
+CONFIG_SND_HDSPM=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_LOLA=m
+CONFIG_SND_LX6464ES=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_MAESTRO3_INPUT=y
+CONFIG_SND_MIXART=m
+# CONFIG_SND_NM256 is not set
+CONFIG_SND_PCXHR=m
+# CONFIG_SND_RIPTIDE is not set
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_SIS7019=m
+# CONFIG_SND_SONICVIBES is not set
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VIA82XX_MODEM=m
+CONFIG_SND_VIRTUOSO=m
+CONFIG_SND_VX222=m
+# CONFIG_SND_YMFPCI is not set
+
+#
+# HD-Audio
+#
+CONFIG_SND_HDA=m
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_HWDEP=y
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_INPUT_BEEP=y
+CONFIG_SND_HDA_INPUT_BEEP_MODE=0
+CONFIG_SND_HDA_PATCH_LOADER=y
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+CONFIG_SND_HDA_CODEC_CA0132_DSP=y
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+CONFIG_SND_HDA_CORE=m
+CONFIG_SND_HDA_DSP_LOADER=y
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_EXT_CORE=m
+CONFIG_SND_HDA_PREALLOC_SIZE=512
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_UA101=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_USB_US122L=m
+CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_HIFACE=m
+CONFIG_SND_BCD2000=m
+CONFIG_SND_USB_LINE6=m
+CONFIG_SND_USB_POD=m
+CONFIG_SND_USB_PODHD=m
+CONFIG_SND_USB_TONEPORT=m
+CONFIG_SND_USB_VARIAX=m
+CONFIG_SND_FIREWIRE=y
+CONFIG_SND_FIREWIRE_LIB=m
+CONFIG_SND_FIREWIRE_SPEAKERS=m
+CONFIG_SND_ISIGHT=m
+CONFIG_SND_SCS1X=m
+CONFIG_SND_SOC=m
+CONFIG_SND_SOC_COMPRESS=y
+CONFIG_SND_SOC_TOPOLOGY=y
+CONFIG_SND_SST_MFLD_PLATFORM=m
+CONFIG_SND_SST_IPC=m
+CONFIG_SND_SST_IPC_ACPI=m
+CONFIG_SND_SOC_INTEL_SST=m
+CONFIG_SND_SOC_INTEL_SST_ACPI=m
+CONFIG_SND_SOC_INTEL_SST_MATCH=m
+CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
+CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m
+CONFIG_SND_SOC_INTEL_SKYLAKE=m
+CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m
+CONFIG_SND_SOC_I2C_AND_SPI=m
+
+#
+# CODEC drivers
+#
+CONFIG_SND_SOC_DMIC=m
+CONFIG_SND_SOC_HDAC_HDMI=m
+CONFIG_SND_SOC_RL6231=m
+CONFIG_SND_SOC_RL6347A=m
+CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5640=m
+CONFIG_SND_SOC_RT5651=m
+CONFIG_SND_SOC_SSM4567=m
+CONFIG_SND_SOC_TS3A227E=m
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
+
+#
+# HID support
+#
+CONFIG_HID=y
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HIDRAW=y
+CONFIG_UHID=m
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=y
+CONFIG_HID_ACRUX=m
+# CONFIG_HID_ACRUX_FF is not set
+CONFIG_HID_APPLE=y
+CONFIG_HID_APPLEIR=m
+CONFIG_HID_AUREAL=m
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_CYPRESS=y
+CONFIG_HID_DRAGONRISE=m
+# CONFIG_DRAGONRISE_FF is not set
+# CONFIG_HID_EMS_FF is not set
+CONFIG_HID_ELECOM=m
+CONFIG_HID_EZKEY=y
+CONFIG_HID_HOLTEK=m
+# CONFIG_HOLTEK_FF is not set
+CONFIG_HID_KEYTOUCH=m
+CONFIG_HID_KYE=m
+CONFIG_HID_UCLOGIC=m
+CONFIG_HID_WALTOP=m
+CONFIG_HID_GYRATION=m
+CONFIG_HID_ICADE=m
+CONFIG_HID_TWINHAN=m
+CONFIG_HID_KENSINGTON=y
+CONFIG_HID_LCPOWER=m
+CONFIG_HID_LENOVO_TPKBD=m
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_LOGITECH_DJ=m
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+# CONFIG_LOGIG940_FF is not set
+# CONFIG_LOGIWHEELS_FF is not set
+CONFIG_HID_MAGICMOUSE=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+CONFIG_HID_MULTITOUCH=m
+CONFIG_HID_NTRIG=y
+CONFIG_HID_ORTEK=m
+CONFIG_HID_PANTHERLORD=m
+# CONFIG_PANTHERLORD_FF is not set
+CONFIG_HID_PETALYNX=m
+CONFIG_HID_PICOLCD=m
+CONFIG_HID_PICOLCD_FB=y
+CONFIG_HID_PICOLCD_BACKLIGHT=y
+CONFIG_HID_PICOLCD_LCD=y
+CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PICOLCD_CIR=y
+CONFIG_HID_PRIMAX=m
+CONFIG_HID_PS3REMOTE=m
+CONFIG_HID_ROCCAT=m
+CONFIG_HID_SAITEK=m
+CONFIG_HID_SAMSUNG=m
+CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
+CONFIG_HID_STEELSERIES=m
+CONFIG_HID_SUNPLUS=m
+CONFIG_HID_RMI=m
+CONFIG_HID_GREENASIA=m
+# CONFIG_GREENASIA_FF is not set
+CONFIG_HID_HYPERV_MOUSE=m
+CONFIG_HID_SMARTJOYPLUS=m
+# CONFIG_SMARTJOYPLUS_FF is not set
+CONFIG_HID_TIVO=m
+CONFIG_HID_TOPSEED=m
+CONFIG_HID_THINGM=m
+CONFIG_HID_THRUSTMASTER=m
+# CONFIG_THRUSTMASTER_FF is not set
+CONFIG_HID_WACOM=m
+CONFIG_HID_WIIMOTE=m
+CONFIG_HID_WIIMOTE_EXT=y
+CONFIG_HID_ZEROPLUS=m
+# CONFIG_ZEROPLUS_FF is not set
+CONFIG_HID_ZYDACRON=m
+# CONFIG_HID_SENSOR_HUB is not set
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+CONFIG_I2C_HID=m
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_FSM is not set
+# CONFIG_USB_ULPI_BUS is not set
+CONFIG_USB_MON=y
+CONFIG_USB_WUSB=m
+CONFIG_USB_WUSB_CBAF=m
+# CONFIG_USB_WUSB_CBAF_DEBUG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
+# CONFIG_USB_XHCI_PLATFORM is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_MAX3421_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
+# CONFIG_USB_OHCI_HCD_PLATFORM is not set
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_WHCI_HCD is not set
+CONFIG_USB_HWA_HCD=m
+# CONFIG_USB_HCD_BCMA is not set
+# CONFIG_USB_HCD_SSB is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+CONFIG_USB_TMC=m
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
+CONFIG_USB_STORAGE_DATAFAB=m
+CONFIG_USB_STORAGE_FREECOM=m
+CONFIG_USB_STORAGE_ISD200=m
+CONFIG_USB_STORAGE_USBAT=m
+CONFIG_USB_STORAGE_SDDR09=m
+CONFIG_USB_STORAGE_SDDR55=m
+CONFIG_USB_STORAGE_JUMPSHOT=m
+CONFIG_USB_STORAGE_ALAUDA=m
+CONFIG_USB_STORAGE_ONETOUCH=m
+CONFIG_USB_STORAGE_KARMA=m
+CONFIG_USB_STORAGE_CYPRESS_ATACB=m
+CONFIG_USB_STORAGE_ENE_UB6250=m
+CONFIG_USB_UAS=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+# CONFIG_USB_DWC3 is not set
+# CONFIG_USB_CHIPIDEA is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_CONSOLE=y
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_SIMPLE is not set
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+# CONFIG_USB_SERIAL_F81232 is not set
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+# CONFIG_USB_SERIAL_METRO is not set
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7715_PARPORT=y
+CONFIG_USB_SERIAL_MOS7840=m
+# CONFIG_USB_SERIAL_MXUPORT is not set
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QCAUX=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_WWAN=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
+CONFIG_USB_SERIAL_XSENS_MT=m
+# CONFIG_USB_SERIAL_WISHBONE is not set
+CONFIG_USB_SERIAL_SSU100=m
+CONFIG_USB_SERIAL_QT2=m
+CONFIG_USB_SERIAL_DEBUG=m
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_ADUTUX=m
+CONFIG_USB_SEVSEG=m
+# CONFIG_USB_RIO500 is not set
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_SISUSBVGA=m
+CONFIG_USB_SISUSBVGA_CON=y
+CONFIG_USB_LD=m
+# CONFIG_USB_TRANCEVIBRATOR is not set
+CONFIG_USB_IOWARRIOR=m
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+CONFIG_USB_ISIGHTFW=m
+# CONFIG_USB_YUREX is not set
+CONFIG_USB_EZUSB_FX2=m
+CONFIG_USB_HSIC_USB3503=m
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+CONFIG_USB_ATM=m
+CONFIG_USB_SPEEDTOUCH=m
+CONFIG_USB_CXACRU=m
+CONFIG_USB_UEAGLEATM=m
+CONFIG_USB_XUSBATM=m
+# CONFIG_USB_PHY is not set
+# CONFIG_USB_GADGET is not set
+# CONFIG_USB_LED_TRIG is not set
+CONFIG_UWB=m
+CONFIG_UWB_HWA=m
+CONFIG_UWB_WHCI=m
+CONFIG_UWB_I1480U=m
+CONFIG_MMC=m
+# CONFIG_MMC_DEBUG is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=m
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+CONFIG_MMC_SDHCI=m
+CONFIG_MMC_SDHCI_PCI=m
+CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_SDHCI_ACPI=m
+CONFIG_MMC_SDHCI_PLTFM=m
+# CONFIG_MMC_WBSD is not set
+CONFIG_MMC_TIFM_SD=m
+CONFIG_MMC_CB710=m
+CONFIG_MMC_VIA_SDMMC=m
+CONFIG_MMC_VUB300=m
+CONFIG_MMC_USHC=m
+# CONFIG_MMC_USDHI6ROL0 is not set
+CONFIG_MMC_REALTEK_PCI=m
+CONFIG_MMC_REALTEK_USB=m
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_MTK is not set
+CONFIG_MEMSTICK=m
+# CONFIG_MEMSTICK_DEBUG is not set
+
+#
+# MemoryStick drivers
+#
+# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
+CONFIG_MSPRO_BLOCK=m
+
+#
+# MemoryStick Host Controller Drivers
+#
+CONFIG_MEMSTICK_TIFM_MS=m
+CONFIG_MEMSTICK_JMICRON_38X=m
+CONFIG_MEMSTICK_R592=m
+CONFIG_MEMSTICK_REALTEK_PCI=m
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_LM3530=m
+# CONFIG_LEDS_LM3642 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
+CONFIG_LEDS_LP5523=m
+CONFIG_LEDS_LP5562=m
+CONFIG_LEDS_CLEVO_MAIL=m
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA9633 is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_PWM is not set
+# CONFIG_LEDS_BD2802 is not set
+CONFIG_LEDS_INTEL_SS4200=m
+CONFIG_LEDS_LT3593=m
+CONFIG_LEDS_DELL_NETBOOKS=m
+# CONFIG_LEDS_RENESAS_TPU is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_OT200 is not set
+CONFIG_LEDS_BLINKM=m
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=m
+CONFIG_LEDS_TRIGGER_ONESHOT=m
+CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+# CONFIG_LEDS_TRIGGER_CPU is not set
+CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_USER_MEM=y
+CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
+CONFIG_INFINIBAND_ADDR_TRANS=y
+CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y
+CONFIG_INFINIBAND_MTHCA=m
+CONFIG_INFINIBAND_MTHCA_DEBUG=y
+# CONFIG_INFINIBAND_AMSO1100 is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
+CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_I40IW=m
+CONFIG_MLX4_INFINIBAND=m
+CONFIG_MLX5_INFINIBAND=m
+CONFIG_INFINIBAND_NES=m
+# CONFIG_INFINIBAND_NES_DEBUG is not set
+CONFIG_INFINIBAND_OCRDMA=m
+CONFIG_INFINIBAND_USNIC=m
+CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
+CONFIG_INFINIBAND_IPOIB_DEBUG=y
+# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
+CONFIG_INFINIBAND_SRPT=m
+CONFIG_INFINIBAND_ISER=m
+CONFIG_INFINIBAND_ISERT=m
+CONFIG_EDAC=y
+CONFIG_EDAC_LEGACY_SYSFS=y
+# CONFIG_EDAC_DEBUG is not set
+CONFIG_EDAC_DECODE_MCE=m
+# CONFIG_EDAC_MCE_INJ is not set
+CONFIG_EDAC_MM_EDAC=m
+CONFIG_EDAC_AMD76X=m
+CONFIG_EDAC_E7XXX=m
+CONFIG_EDAC_E752X=m
+CONFIG_EDAC_I82875P=m
+CONFIG_EDAC_I82975X=m
+CONFIG_EDAC_I3000=m
+CONFIG_EDAC_I3200=m
+CONFIG_EDAC_IE31200=m
+CONFIG_EDAC_X38=m
+CONFIG_EDAC_I5400=m
+CONFIG_EDAC_I7CORE=m
+CONFIG_EDAC_I82860=m
+CONFIG_EDAC_R82600=m
+CONFIG_EDAC_I5000=m
+CONFIG_EDAC_I5100=m
+CONFIG_EDAC_I7300=m
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+# CONFIG_RTC_SYSTOHC is not set
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_MAX6900=m
+CONFIG_RTC_DRV_RS5C372=m
+CONFIG_RTC_DRV_ISL1208=m
+CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF8523=m
+CONFIG_RTC_DRV_PCF8563=m
+CONFIG_RTC_DRV_PCF8583=m
+CONFIG_RTC_DRV_M41T80=m
+CONFIG_RTC_DRV_M41T80_WDT=y
+CONFIG_RTC_DRV_BQ32K=m
+# CONFIG_RTC_DRV_S35390A is not set
+CONFIG_RTC_DRV_FM3130=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_RX8025=m
+CONFIG_RTC_DRV_EM3027=m
+CONFIG_RTC_DRV_RV3029C2=m
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T93 is not set
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+CONFIG_RTC_DRV_RX4581=m
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=y
+CONFIG_RTC_DRV_DS1286=m
+CONFIG_RTC_DRV_DS1511=m
+CONFIG_RTC_DRV_DS1553=m
+CONFIG_RTC_DRV_DS1742=m
+CONFIG_RTC_DRV_STK17TA8=m
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_M48T35=m
+CONFIG_RTC_DRV_M48T59=m
+CONFIG_RTC_DRV_MSM6242=m
+CONFIG_RTC_DRV_BQ4802=m
+CONFIG_RTC_DRV_RP5C01=m
+CONFIG_RTC_DRV_V3020=m
+CONFIG_RTC_DRV_DS2404=m
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# HID Sensor RTC drivers
+#
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+# CONFIG_INTEL_MID_DMAC is not set
+CONFIG_INTEL_IOATDMA=m
+CONFIG_DW_DMAC=m
+# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
+CONFIG_IDMA64=m
+# CONFIG_TIMB_DMA is not set
+CONFIG_PCH_DMA=m
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=m
+CONFIG_DMA_ACPI=y
+
+#
+# DMA Clients
+#
+CONFIG_NET_DMA_RH_KABI=y
+CONFIG_ASYNC_TX_DMA=y
+# CONFIG_DMATEST is not set
+CONFIG_DCA=m
+CONFIG_AUXDISPLAY=y
+CONFIG_KS0108=m
+CONFIG_KS0108_PORT=0x378
+CONFIG_KS0108_DELAY=2
+CONFIG_CFAG12864B=m
+CONFIG_CFAG12864B_RATE=20
+CONFIG_UIO=m
+CONFIG_UIO_CIF=m
+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+# CONFIG_UIO_DMEM_GENIRQ is not set
+CONFIG_UIO_AEC=m
+CONFIG_UIO_SERCOS3=m
+CONFIG_UIO_PCI_GENERIC=m
+# CONFIG_UIO_NETX is not set
+CONFIG_VFIO_IOMMU_TYPE1=m
+CONFIG_VFIO=m
+CONFIG_VFIO_NOIOMMU=y
+CONFIG_VFIO_PCI=m
+CONFIG_VFIO_PCI_VGA=y
+CONFIG_VFIO_PCI_MMAP=y
+CONFIG_VFIO_PCI_INTX=y
+CONFIG_IRQ_BYPASS_MANAGER=m
+# CONFIG_VIRT_DRIVERS is not set
+CONFIG_VIRTIO=m
+
+#
+# Virtio drivers
+#
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_PCI_LEGACY=y
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_INPUT=m
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+CONFIG_HYPERV=m
+CONFIG_HYPERV_UTILS=m
+CONFIG_HYPERV_BALLOON=m
+
+#
+# Xen driver support
+#
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_SCRUB_PAGES=y
+CONFIG_XEN_DEV_EVTCHN=m
+CONFIG_XENFS=m
+CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_SYS_HYPERVISOR=y
+CONFIG_XEN_XENBUS_FRONTEND=y
+# CONFIG_XEN_GNTDEV is not set
+# CONFIG_XEN_GRANT_DEV_ALLOC is not set
+CONFIG_SWIOTLB_XEN=y
+# CONFIG_XEN_TMEM is not set
+CONFIG_XEN_PRIVCMD=m
+CONFIG_XEN_ACPI_PROCESSOR=m
+CONFIG_XEN_HAVE_PVMMU=y
+CONFIG_STAGING=y
+# CONFIG_ET131X is not set
+# CONFIG_SLICOSS is not set
+# CONFIG_USBIP_CORE is not set
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
+# CONFIG_ECHO is not set
+# CONFIG_COMEDI is not set
+# CONFIG_ASUS_OLED is not set
+# CONFIG_PANEL is not set
+# CONFIG_R8187SE is not set
+# CONFIG_RTL8192U is not set
+CONFIG_RTLLIB=m
+CONFIG_RTLLIB_CRYPTO_CCMP=m
+CONFIG_RTLLIB_CRYPTO_TKIP=m
+CONFIG_RTLLIB_CRYPTO_WEP=m
+CONFIG_RTL8192E=m
+CONFIG_R8712U=m
+# CONFIG_RTS5139 is not set
+# CONFIG_TRANZPORT is not set
+# CONFIG_IDE_PHISON 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
+# CONFIG_DX_SEP is not set
+# CONFIG_FB_SM7XX is not set
+# CONFIG_CRYSTALHD is not set
+# CONFIG_CXT1E1 is not set
+# CONFIG_FB_XGI is not set
+# CONFIG_ACPI_QUICKSTART is not set
+# CONFIG_SBE_2T3E3 is not set
+# CONFIG_USB_ENESTORAGE is not set
+# CONFIG_BCM_WIMAX is not set
+# CONFIG_FT1000 is not set
+
+#
+# Speakup console speech
+#
+# CONFIG_SPEAKUP is not set
+# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
+# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
+# CONFIG_STAGING_MEDIA is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_WIMAX_GDM72XX is not set
+# CONFIG_CSR_WIFI is not set
+# CONFIG_NET_VENDOR_SILICOM is not set
+# CONFIG_CED1401 is not set
+# CONFIG_DGRP is not set
+CONFIG_FIREWIRE_SERIAL=m
+# CONFIG_ZCACHE is not set
+# CONFIG_USB_DWC2 is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+CONFIG_ACER_WMI=m
+CONFIG_ACERHDF=m
+CONFIG_ASUS_LAPTOP=m
+CONFIG_CHROMEOS_LAPTOP=m
+CONFIG_DELL_LAPTOP=m
+CONFIG_DELL_WMI=m
+CONFIG_DELL_WMI_AIO=m
+CONFIG_FUJITSU_LAPTOP=m
+# CONFIG_FUJITSU_LAPTOP_DEBUG is not set
+CONFIG_FUJITSU_TABLET=m
+CONFIG_AMILO_RFKILL=m
+CONFIG_TC1100_WMI=m
+CONFIG_HP_ACCEL=m
+CONFIG_HP_WIRELESS=m
+CONFIG_HP_WMI=m
+CONFIG_MSI_LAPTOP=m
+CONFIG_PANASONIC_LAPTOP=m
+CONFIG_COMPAL_LAPTOP=m
+CONFIG_SONY_LAPTOP=m
+CONFIG_SONYPI_COMPAT=y
+CONFIG_IDEAPAD_LAPTOP=m
+CONFIG_THINKPAD_ACPI=m
+CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y
+# CONFIG_THINKPAD_ACPI_DEBUGFACILITIES is not set
+# CONFIG_THINKPAD_ACPI_DEBUG is not set
+# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set
+CONFIG_THINKPAD_ACPI_VIDEO=y
+CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y
+CONFIG_SENSORS_HDAPS=m
+# CONFIG_INTEL_MENLOW is not set
+CONFIG_EEEPC_LAPTOP=m
+CONFIG_ASUS_WMI=m
+CONFIG_ASUS_NB_WMI=m
+CONFIG_EEEPC_WMI=m
+CONFIG_ACPI_WMI=m
+CONFIG_MSI_WMI=m
+CONFIG_TOPSTAR_LAPTOP=m
+CONFIG_ACPI_TOSHIBA=m
+CONFIG_TOSHIBA_BT_RFKILL=m
+CONFIG_ACPI_CMPC=m
+CONFIG_INTEL_IPS=m
+# CONFIG_IBM_RTL is not set
+CONFIG_XO15_EBOOK=m
+CONFIG_SAMSUNG_LAPTOP=m
+CONFIG_MXM_WMI=m
+CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+CONFIG_APPLE_GMUX=m
+CONFIG_PVPANIC=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+# CONFIG_COMMON_CLK_DEBUG is not set
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_CLKSRC_I8253=y
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+# CONFIG_MAILBOX is not set
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_IOMMU_IOVA=y
+CONFIG_DMAR_TABLE=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
+#
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+# CONFIG_VME_BUS is not set
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_LPSS=m
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+CONFIG_RAS=y
+CONFIG_LIBNVDIMM=m
+CONFIG_BLK_DEV_PMEM=m
+CONFIG_ND_BLK=m
+CONFIG_ND_CLAIM=y
+CONFIG_ND_BTT=m
+CONFIG_BTT=y
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+# CONFIG_EDD_OFF is not set
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_DELL_RBU=m
+CONFIG_DCDBAS=m
+CONFIG_DMIID=y
+CONFIG_DMI_SYSFS=y
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
+CONFIG_ISCSI_IBFT_FIND=y
+CONFIG_ISCSI_IBFT=m
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# EFI (Extensible Firmware Interface) Support
+#
+CONFIG_EFI_VARS=y
+CONFIG_EFI_VARS_PSTORE=y
+CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
+CONFIG_EFI_RUNTIME_MAP=y
+CONFIG_UEFI_CPER=y
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=m
+CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+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
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_WARN is not set
+# CONFIG_XFS_DEBUG is not set
+CONFIG_GFS2_FS=m
+CONFIG_GFS2_FS_LOCKING_DLM=y
+# CONFIG_OCFS2_FS is not set
+CONFIG_BTRFS_FS=m
+CONFIG_BTRFS_FS_POSIX_ACL=y
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
+# CONFIG_BTRFS_DEBUG is not set
+# CONFIG_BTRFS_ASSERT is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_FS_DAX=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_OVERLAY_FS=m
+CONFIG_GENERIC_ACL=y
+
+#
+# Caches
+#
+CONFIG_FSCACHE=m
+CONFIG_FSCACHE_STATS=y
+# CONFIG_FSCACHE_HISTOGRAM is not set
+# CONFIG_FSCACHE_DEBUG is not set
+# CONFIG_FSCACHE_OBJECT_LIST is not set
+CONFIG_CACHEFILES=m
+# CONFIG_CACHEFILES_DEBUG is not set
+# CONFIG_CACHEFILES_HISTOGRAM is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_VMCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_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
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_UBIFS_FS is not set
+# CONFIG_LOGFS is not set
+CONFIG_CRAMFS=m
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_LZO=y
+CONFIG_SQUASHFS_XZ=y
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_CONSOLE is not set
+# CONFIG_PSTORE_FTRACE is not set
+CONFIG_PSTORE_RAM=m
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_EXOFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_EFIVAR_FS=y
+CONFIG_ORE=m
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+# CONFIG_NFS_V2 is not set
+CONFIG_NFS_V3=m
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=m
+# CONFIG_NFS_SWAP is not set
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_PNFS_FILE_LAYOUT=m
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNFS_OBJLAYOUT=m
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
+# CONFIG_NFS_V4_1_MIGRATION is not set
+CONFIG_NFS_V4_SECURITY_LABEL=y
+CONFIG_NFS_FSCACHE=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+CONFIG_NFS_DEBUG=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_PNFS=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+CONFIG_NFSD_SCSILAYOUT=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
+CONFIG_GRACE_PERIOD=m
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BACKCHANNEL=y
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_SUNRPC_DEBUG=y
+CONFIG_SUNRPC_XPRT_RDMA=m
+CONFIG_CEPH_FS=m
+CONFIG_CEPH_FS_POSIX_ACL=y
+CONFIG_CIFS=m
+CONFIG_CIFS_STATS=y
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_WEAK_PW_HASH=y
+CONFIG_CIFS_UPCALL=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+CONFIG_CIFS_ACL=y
+CONFIG_CIFS_DEBUG=y
+# CONFIG_CIFS_DEBUG2 is not set
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_SMB2=y
+# CONFIG_CIFS_SMB311 is not set
+# CONFIG_CIFS_FSCACHE is not set
+# 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
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_MAC_ROMAN=m
+CONFIG_NLS_MAC_CELTIC=m
+CONFIG_NLS_MAC_CENTEURO=m
+CONFIG_NLS_MAC_CROATIAN=m
+CONFIG_NLS_MAC_CYRILLIC=m
+CONFIG_NLS_MAC_GAELIC=m
+CONFIG_NLS_MAC_GREEK=m
+CONFIG_NLS_MAC_ICELAND=m
+CONFIG_NLS_MAC_INUIT=m
+CONFIG_NLS_MAC_ROMANIAN=m
+CONFIG_NLS_MAC_TURKISH=m
+CONFIG_NLS_UTF8=m
+CONFIG_DLM=m
+CONFIG_DLM_DEBUG=y
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_PRINTK_TIME=y
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=2048
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+CONFIG_HEADERS_CHECK=y
+CONFIG_DEBUG_SECTION_MISMATCH=y
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_SHIRQ=y
+CONFIG_LOCKUP_DETECTOR=y
+CONFIG_HARDLOCKUP_DETECTOR=y
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=1
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_WQ_WATCHDOG is not set
+CONFIG_PANIC_ON_OOPS=y
+CONFIG_PANIC_ON_OOPS_VALUE=1
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_HIGHMEM=y
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_DEBUG_LIST=y
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+CONFIG_BOOT_PRINTK_DELAY=y
+
+#
+# RCU Debugging
+#
+CONFIG_SPARSE_RCU_POINTER=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_CPU_STALL_INFO is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_LKDTM is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
+# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_RING_BUFFER_ALLOW_SWAP=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+# CONFIG_FUNCTION_GRAPH_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+CONFIG_SCHED_TRACER=y
+CONFIG_FTRACE_SYSCALLS=y
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_KPROBE_EVENT=y
+CONFIG_UPROBE_EVENT=y
+CONFIG_PROBE_EVENTS=y
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_MMIOTRACE is not set
+CONFIG_RING_BUFFER_BENCHMARK=m
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_TEST_RHASHTABLE is not set
+CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
+# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
+CONFIG_BUILD_DOCSRC=y
+CONFIG_DYNAMIC_DEBUG=y
+# CONFIG_DMA_API_DEBUG is not set
+CONFIG_ATOMIC64_SELFTEST=y
+CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_KGDB=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+CONFIG_KGDB_TESTS=y
+# CONFIG_KGDB_TESTS_ON_BOOT is not set
+CONFIG_KGDB_LOW_LEVEL_TRAP=y
+CONFIG_KGDB_KDB=y
+CONFIG_KDB_KEYBOARD=y
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_HAVE_ARCH_KMEMCHECK=y
+# CONFIG_TEST_STRING_HELPERS is not set
+CONFIG_TEST_KSTRTOX=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_X86_VERBOSE_BOOTUP is not set
+CONFIG_EARLY_PRINTK=y
+CONFIG_EARLY_PRINTK_DBGP=y
+CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP is not set
+# CONFIG_DEBUG_RODATA is not set
+CONFIG_DEBUG_SET_MODULE_RONX=y
+CONFIG_DEBUG_NX_TEST=m
+CONFIG_DOUBLEFAULT=y
+# CONFIG_DEBUG_TLBFLUSH is not set
+# CONFIG_IOMMU_STRESS is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+CONFIG_X86_DECODER_SELFTEST=y
+CONFIG_IO_DELAY_TYPE_0X80=0
+CONFIG_IO_DELAY_TYPE_0XED=1
+CONFIG_IO_DELAY_TYPE_UDELAY=2
+CONFIG_IO_DELAY_TYPE_NONE=3
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
+CONFIG_DEBUG_BOOT_PARAMS=y
+# CONFIG_CPA_DEBUG is not set
+CONFIG_OPTIMIZE_INLINING=y
+# CONFIG_DEBUG_NMI_SELFTEST is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+CONFIG_PERSISTENT_KEYRINGS=y
+CONFIG_BIG_KEYS=y
+CONFIG_TRUSTED_KEYS=y
+CONFIG_ENCRYPTED_KEYS=y
+CONFIG_KEYS_DEBUG_PROC_KEYS=y
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_NETWORK_XFRM=y
+CONFIG_SECURITY_PATH=y
+CONFIG_SECURITY_SECURELEVEL=y
+# CONFIG_INTEL_TXT is not set
+CONFIG_LSM_MMAP_MIN_ADDR=65535
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
+CONFIG_SECURITY_SELINUX_DISABLE=y
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+CONFIG_SECURITY_SELINUX_AVC_STATS=y
+CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
+# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
+# CONFIG_SECURITY_SMACK 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
+CONFIG_INTEGRITY_SIGNATURE=y
+CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
+CONFIG_IMA=y
+CONFIG_IMA_MEASURE_PCR_IDX=10
+CONFIG_IMA_AUDIT=y
+CONFIG_IMA_LSM_RULES=y
+CONFIG_IMA_APPRAISE=y
+CONFIG_IMA_TRUSTED_KEYRING=y
+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
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_ASYNC_PQ=m
+CONFIG_ASYNC_RAID6_RECOV=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_FIPS=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=m
+CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+# CONFIG_CRYPTO_RSA is not set
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_USER=m
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_PCRYPT=m
+CONFIG_CRYPTO_WORKQUEUE=y
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_MCRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_ABLK_HELPER_X86=m
+CONFIG_CRYPTO_GLUE_HELPER_X86=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=m
+CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_SEQIV=y
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CTR=y
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_XTS=m
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_CMAC=m
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_VMAC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32C_INTEL=m
+CONFIG_CRYPTO_CRC32=m
+CONFIG_CRYPTO_CRC32_PCLMUL=m
+CONFIG_CRYPTO_CRCT10DIF=m
+CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_RMD128=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RMD256=m
+CONFIG_CRYPTO_RMD320=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_AES_586=y
+CONFIG_CRYPTO_AES_NI_INTEL=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST_COMMON=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_SALSA20=m
+CONFIG_CRYPTO_SALSA20_586=m
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_SERPENT_SSE2_586=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_TWOFISH_586=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_ZLIB=m
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_842 is not set
+
+#
+# Random Number Generation
+#
+CONFIG_CRYPTO_ANSI_CPRNG=m
+CONFIG_CRYPTO_DRBG_MENU=m
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_HASH=y
+CONFIG_CRYPTO_DRBG_CTR=y
+CONFIG_CRYPTO_DRBG=m
+CONFIG_CRYPTO_USER_API=y
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_DEV_PADLOCK=m
+CONFIG_CRYPTO_DEV_PADLOCK_AES=m
+CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_GEODE=m
+CONFIG_CRYPTO_DEV_QAT=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCC=m
+CONFIG_CRYPTO_DEV_QAT_C3XXX=m
+CONFIG_CRYPTO_DEV_QAT_C62X=m
+CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m
+CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
+CONFIG_CRYPTO_DEV_QAT_C62XVF=m
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_PUBLIC_KEY_ALGO_RSA=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_EFI_SIGNATURE_LIST_PARSER=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+CONFIG_SIGNED_PE_FILE_VERIFICATION=y
+CONFIG_HAVE_KVM=y
+# CONFIG_VIRTUALIZATION is not set
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_RAID6_PQ=m
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_PERCPU_RWSEM=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
+CONFIG_AUDIT_GENERIC=y
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+# CONFIG_XZ_DEC_IA64 is not set
+# CONFIG_XZ_DEC_ARM is not set
+# CONFIG_XZ_DEC_ARMTHUMB is not set
+# CONFIG_XZ_DEC_SPARC is not set
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_ENC8=y
+CONFIG_REED_SOLOMON_DEC8=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_GENERIC_PAGE_TABLE=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
+CONFIG_NLATTR=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+# CONFIG_AVERAGE is not set
+CONFIG_CLZ_TAB=y
+CONFIG_CORDIC=m
+# CONFIG_DDR is not set
+CONFIG_IRQ_POLL=y
+CONFIG_MPILIB=y
+CONFIG_SIGNATURE=y
+CONFIG_OID_REGISTRY=y
+CONFIG_UCS2_STRING=y
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
+# CONFIG_RH_KABI_SIZE_ALIGN_CHECKS is not set
diff --git a/SOURCES/kernel-3.10.0-x86_64.config b/SOURCES/kernel-3.10.0-x86_64.config
index 93d1fec..cd14395 100644
--- a/SOURCES/kernel-3.10.0-x86_64.config
+++ b/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_SMP=y
 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_HCIVHCI=m
 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=m
 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 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y
 #
 # 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_9XXX=m
 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=m
 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_VETH=m
 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_VHOST=m
 # 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_BE2NET_VXLAN=y
 # 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=m
 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=m
 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_SMSC9420=m
 # 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
@@ -2389,7 +2438,7 @@ CONFIG_RT73USB=m
 CONFIG_RT2800USB=m
 CONFIG_RT2800USB_RT33XX=y
 CONFIG_RT2800USB_RT35XX=y
-# CONFIG_RT2800USB_RT3573 is not set
+CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_UNKNOWN=y
@@ -2611,8 +2660,8 @@ CONFIG_KEYBOARD_ATKBD=y
 # 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=m
 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 @@ CONFIG_SPI_MASTER=y
 # 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 @@ CONFIG_SPI_MASTER=y
 #
 # 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_DEVRES=y
 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 @@ CONFIG_GPIO_LANGWELL=y
 #
 # 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_EFI=y
 # 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_DSP_LOADER=y
 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_CLASS=y
 #
 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_IOMMU_TYPE1=m
 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_R8712U=m
 # 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_EXT4_FS_SECURITY=y
 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_CONFIGFS_FS=y
 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_CIFS_SMB2=y
 # 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_SECURITY=y
 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_AVC_STATS=y
 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_IMA_TRUSTED_KEYRING=y
 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_CPU_RMAP=y
 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
diff --git a/SOURCES/morefixes.patch b/SOURCES/morefixes.patch
new file mode 100644
index 0000000..a294350
--- /dev/null
+++ b/SOURCES/morefixes.patch
@@ -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,
diff --git a/SOURCES/removejiffies.patch b/SOURCES/removejiffies.patch
new file mode 100644
index 0000000..71da335
--- /dev/null
+++ b/SOURCES/removejiffies.patch
@@ -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)	\
diff --git a/SOURCES/undorhirqstat.patch b/SOURCES/undorhirqstat.patch
new file mode 100644
index 0000000..f8340fc
--- /dev/null
+++ b/SOURCES/undorhirqstat.patch
@@ -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();
diff --git a/SOURCES/upstream-32bit-fixes.patch b/SOURCES/upstream-32bit-fixes.patch
new file mode 100644
index 0000000..cb759ed
--- /dev/null
+++ b/SOURCES/upstream-32bit-fixes.patch
@@ -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
+
diff --git a/SPECS/kernel.spec b/SPECS/kernel.spec
index eeef6be..fe20e93 100644
--- a/SPECS/kernel.spec
+++ b/SPECS/kernel.spec
@@ -3,9 +3,9 @@
 
 Summary: The Linux kernel
 
-%define dist .el7
+%define dist .el7.centos.plus
 
-# % define buildid .local
+# % define buildid 
 
 # For a kernel released for public testing, released_kernel should be 1.
 # For internal testing builds during development, it should be 0.
@@ -36,7 +36,8 @@ Summary: The Linux kernel
 # 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 +154,9 @@ Summary: The Linux kernel
 %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 +212,7 @@ Summary: The Linux kernel
 # 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 +224,7 @@ Summary: The Linux kernel
 %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,34 +363,121 @@ Source16: centos-kpatch.x509
 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
+### mpt3sas patches bug12600 ###
+Patch20081: centos-linux-3.10-0001-scsi-mpt3sas-Fix-for-improper-info-displayed-in-var-.patch
+Patch20082: centos-linux-3.10-0002-scsi-mpt3sas-Fix-for-incorrect-numbers-for-MSIX-vect.patch
+Patch20083: centos-linux-3.10-0003-scsi-mpt3sas-Implement-device_remove_in_progress-che.patch
+Patch20084: centos-linux-3.10-0004-scsi-mpt3sas-Remove-unused-macro-MPT_DEVICE_TLR_ON.patch
+Patch20085: centos-linux-3.10-0005-scsi-mpt3sas-Bump-driver-version-as-14.100.00.00.patch
+Patch20086: centos-linux-3.10-0006-scsi-mpt3sas-Added-Device-ID-s-for-SAS35-devices-and.patch
+Patch20087: centos-linux-3.10-0007-scsi-mpt3sas-Increased-Additional-MSIX-support-for-S.patch
+Patch20088: centos-linux-3.10-0008-scsi-mpt3sas-set-EEDP-escape-flags-for-SAS35-devices.patch
+Patch20089: centos-linux-3.10-0009-scsi-mpt3sas-Use-the-new-MPI-2.6-32-bit-Atomic-Reque.patch
+Patch20090: centos-linux-3.10-0010-scsi-mpt3sas-Fix-for-Endianness-issue.patch
+Patch20091: centos-linux-3.10-0011-scsi-mpt3sas-Bump-driver-version-as-14.101.00.00.patch
+### megaraid patches bug12601 ###
+Patch20092: centos-linux-3.10-0001-scsi-megaraid_sas-Add-new-pci-device-Ids-for-SAS3.5-.patch
+Patch20093: centos-linux-3.10-0002-scsi-megaraid_sas-128-MSIX-Support.patch
+Patch20094: centos-linux-3.10-0003-scsi-megaraid_sas-EEDP-Escape-Mode-Support-for-SAS3..patch
+Patch20095: centos-linux-3.10-0004-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
+Patch20096: centos-linux-3.10-0005-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
+Patch20097: centos-linux-3.10-0006-scsi-megaraid_sas-Dynamic-Raid-Map-Changes-for-SAS3..patch
+Patch20098: centos-linux-3.10-0007-scsi-megaraid_sas-Add-the-Support-for-SAS3.5-Generic.patch
+Patch20099: centos-linux-3.10-0008-scsi-megaraid_sas-Enable-or-Disable-Fast-path-based-.patch
+Patch20100: centos-linux-3.10-0009-scsi-megaraid_sas-ldio_outstanding-variable-is-not-d.patch
+Patch20101: centos-linux-3.10-0010-scsi-megaraid_sas-Implement-the-PD-Map-support-for-S.patch
+Patch20102: centos-linux-3.10-0011-scsi-megaraid_sas-driver-version-upgrade.patch
+### end of mpt3sas and megaraid patches ###
+#Patch20103: centos-linux-3.10-ipv6refcnt-bug12711.patch
+Patch20104: centos-linux-3.10-scsi-storvsc-fix-bug12841.patch
+Patch20105: centos-linux-3.10-x86-perf-uncore-Avoid-kernel-panic-on-missing-topolo-bug12818.patch
+### bug 10414
+Patch20106: centos-linux-3.10-0001-get-rid-of-propagate_umount-mistakenly-treating-slav.patch
+Patch20107: centos-linux-3.10-0002-vfs-Keep-a-list-of-mounts-on-a-mount-point.patch
+Patch20108: centos-linux-3.10-0003-vfs-Add-a-function-to-lazily-unmount-all-mounts-from.patch
+Patch20109: centos-linux-3.10-0004-vfs-Lazily-remove-mounts-on-unlinked-files-and-direc.patch
+### end of bug 10414
+# Patch20110: centos-linux-3.10-ptrace-fix-fork-event-messages-bug13265.patch
+Patch20111: centos-linux-3.10-mlx5-fix-32-bit-build-error-bug13344.patch
+Patch20112: centos-linux-3.10-neigh-do-not-modify-unlinked-entris-bug13241.patch
+
+# empty final patch to facilitate testing of kernel patches
+Patch999999: linux-kernel-test.patch
+
 BuildRoot: %{_tmppath}/kernel-%{KVRA}-root
 
 %description
@@ -693,11 +784,99 @@ cd linux-%{KVRA}
 # 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 
+### mpt3sas and megaraid patches bug12600 ###
+ApplyOptionalPatch centos-linux-3.10-0001-scsi-mpt3sas-Fix-for-improper-info-displayed-in-var-.patch
+ApplyOptionalPatch centos-linux-3.10-0002-scsi-mpt3sas-Fix-for-incorrect-numbers-for-MSIX-vect.patch
+ApplyOptionalPatch centos-linux-3.10-0003-scsi-mpt3sas-Implement-device_remove_in_progress-che.patch
+ApplyOptionalPatch centos-linux-3.10-0004-scsi-mpt3sas-Remove-unused-macro-MPT_DEVICE_TLR_ON.patch
+ApplyOptionalPatch centos-linux-3.10-0005-scsi-mpt3sas-Bump-driver-version-as-14.100.00.00.patch
+ApplyOptionalPatch centos-linux-3.10-0006-scsi-mpt3sas-Added-Device-ID-s-for-SAS35-devices-and.patch
+ApplyOptionalPatch centos-linux-3.10-0007-scsi-mpt3sas-Increased-Additional-MSIX-support-for-S.patch
+ApplyOptionalPatch centos-linux-3.10-0008-scsi-mpt3sas-set-EEDP-escape-flags-for-SAS35-devices.patch
+ApplyOptionalPatch centos-linux-3.10-0009-scsi-mpt3sas-Use-the-new-MPI-2.6-32-bit-Atomic-Reque.patch
+ApplyOptionalPatch centos-linux-3.10-0010-scsi-mpt3sas-Fix-for-Endianness-issue.patch
+ApplyOptionalPatch centos-linux-3.10-0011-scsi-mpt3sas-Bump-driver-version-as-14.101.00.00.patch
+ApplyOptionalPatch centos-linux-3.10-0001-scsi-megaraid_sas-Add-new-pci-device-Ids-for-SAS3.5-.patch
+ApplyOptionalPatch centos-linux-3.10-0002-scsi-megaraid_sas-128-MSIX-Support.patch
+ApplyOptionalPatch centos-linux-3.10-0003-scsi-megaraid_sas-EEDP-Escape-Mode-Support-for-SAS3..patch
+ApplyOptionalPatch centos-linux-3.10-0004-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
+ApplyOptionalPatch centos-linux-3.10-0005-scsi-megaraid_sas-SAS3.5-Generic-Megaraid-Controller.patch
+ApplyOptionalPatch centos-linux-3.10-0006-scsi-megaraid_sas-Dynamic-Raid-Map-Changes-for-SAS3..patch
+ApplyOptionalPatch centos-linux-3.10-0007-scsi-megaraid_sas-Add-the-Support-for-SAS3.5-Generic.patch
+ApplyOptionalPatch centos-linux-3.10-0008-scsi-megaraid_sas-Enable-or-Disable-Fast-path-based-.patch
+ApplyOptionalPatch centos-linux-3.10-0009-scsi-megaraid_sas-ldio_outstanding-variable-is-not-d.patch
+ApplyOptionalPatch centos-linux-3.10-0010-scsi-megaraid_sas-Implement-the-PD-Map-support-for-S.patch
+ApplyOptionalPatch centos-linux-3.10-0011-scsi-megaraid_sas-driver-version-upgrade.patch
+### end of mpt3sas and megaraid patches
+#ApplyOptionalPatch centos-linux-3.10-ipv6refcnt-bug12711.patch
+ApplyOptionalPatch centos-linux-3.10-scsi-storvsc-fix-bug12841.patch
+ApplyOptionalPatch centos-linux-3.10-x86-perf-uncore-Avoid-kernel-panic-on-missing-topolo-bug12818.patch
+ApplyOptionalPatch centos-linux-3.10-0001-get-rid-of-propagate_umount-mistakenly-treating-slav.patch
+ApplyOptionalPatch centos-linux-3.10-0002-vfs-Keep-a-list-of-mounts-on-a-mount-point.patch
+ApplyOptionalPatch centos-linux-3.10-0003-vfs-Add-a-function-to-lazily-unmount-all-mounts-from.patch
+ApplyOptionalPatch centos-linux-3.10-0004-vfs-Lazily-remove-mounts-on-unlinked-files-and-direc.patch
+#ApplyOptionalPatch centos-linux-3.10-ptrace-fix-fork-event-messages-bug13265.patch
+ApplyOptionalPatch centos-linux-3.10-mlx5-fix-32-bit-build-error-bug13344.patch
+ApplyOptionalPatch centos-linux-3.10-neigh-do-not-modify-unlinked-entris-bug13241.patch
+
+### end of plus mod
+# End of CentOS Modification
+
+ApplyOptionalPatch linux-kernel-test.patch
+
 # Any further pre-build tree manipulations happen here.
 
 chmod +x scripts/checkpatch.pl
@@ -876,7 +1055,6 @@ BuildKernel() {
 	# 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 +1261,7 @@ make %{?cross_opts} %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false
     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
@@ -1364,6 +1542,25 @@ then\
 fi\
 %{nil}
 
+### plus kernel mod ###
+### remove initramfs-xxxkdump.img upon kernel removal
+%postun
+# List out the initrds here, strip out version numbers
+# and search for corresponding kernel installs, if a kernel
+# is not found, remove the corresponding kdump initrd
+for i in `ls /boot/initramfs*kdump.img 2>/dev/null`
+do
+	KDVER=`echo $i | sed -e's/^.*initramfs-//' -e's/kdump.*$//'`
+	if [ ! -e /boot/vmlinuz-$KDVER ]
+	then
+		# We have found an initrd with no corresponding kernel
+		# so we should be able to remove it
+		rm -f $i
+	fi
+done
+
+### end of plus kernel mod ###
+
 %kernel_variant_preun
 %kernel_variant_post 
 
@@ -1550,8 +1747,38 @@ fi
 %kernel_variant_files %{with_kdump} kdump
 
 %changelog
-* Mon Jun 19 2017 CentOS Sources <bugs@centos.org> - 3.10.0-514.21.2.el7
+* Wed Jun 21 2017 Akemi Yagi <toracat@centos.org> [3.10.0-514.21.2.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]
+- Enable VFIO_PCI_VGA [bug#12435]
+- Add mpt3sas patches [big#12600]
+- Add megaraid patches [bug#12601]
+- Rremove initramfs-xxxkdump.img upon kernel removal [bug#12703]
+- Add a patch from [bug#12841]
+- Add a patch from [bug#12818]
+- Add patches from [bug#10414]
+- Enabled RT2800USB_RT3573 [bug#13162]
+- Add a patch from [bug#13344] (fix 32-bit build error)
+- Add patch from bug [bug#13241]
 
 * Sun May 28 2017 Frantisek Hrbata <fhrbata@hrbata.com> [3.10.0-514.21.2.el7]
 - [mm] enlarge stack guard gap (Larry Woodman) [1452732 1452733]