summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--0001-Test-ata-fix.patch27
-rw-r--r--0001-arm64-account-for-sparsemem-section-alignment-when-c.patch54
-rw-r--r--iommu-fix.patch92
-rw-r--r--kernel.spec19
-rw-r--r--sources2
5 files changed, 67 insertions, 127 deletions
diff --git a/0001-Test-ata-fix.patch b/0001-Test-ata-fix.patch
deleted file mode 100644
index 0ae2cf71e..000000000
--- a/0001-Test-ata-fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From bb4d91481dd2122351866e500b46cff9399f579d Mon Sep 17 00:00:00 2001
-From: Laura Abbott <labbott@fedoraproject.org>
-Date: Thu, 25 Feb 2016 11:40:07 -0800
-Subject: [PATCH] Test ata fix
-
-Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
----
- drivers/ata/libahci.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
-index 1f225cc..998c6a8 100644
---- a/drivers/ata/libahci.c
-+++ b/drivers/ata/libahci.c
-@@ -1142,8 +1142,7 @@ static void ahci_port_init(struct device *dev, struct ata_port *ap,
-
- /* mark esata ports */
- tmp = readl(port_mmio + PORT_CMD);
-- if ((tmp & PORT_CMD_HPCP) ||
-- ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS)))
-+ if ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS))
- ap->pflags |= ATA_PFLAG_EXTERNAL;
- }
-
---
-2.5.0
-
diff --git a/0001-arm64-account-for-sparsemem-section-alignment-when-c.patch b/0001-arm64-account-for-sparsemem-section-alignment-when-c.patch
new file mode 100644
index 000000000..78e01defa
--- /dev/null
+++ b/0001-arm64-account-for-sparsemem-section-alignment-when-c.patch
@@ -0,0 +1,54 @@
+From b3ffe8a6522dd1f07c181a5f2581142776e2162d Mon Sep 17 00:00:00 2001
+From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Date: Tue, 8 Mar 2016 21:09:29 +0700
+Subject: [PATCH] arm64: account for sparsemem section alignment when choosing
+ vmemmap offset
+
+Commit dfd55ad85e4a ("arm64: vmemmap: use virtual projection of linear
+region") fixed an issue where the struct page array would overflow into the
+adjacent virtual memory region if system RAM was placed so high up in
+physical memory that its addresses were not representable in the build time
+configured virtual address size.
+
+However, the fix failed to take into account that the vmemmap region needs
+to be relatively aligned with respect to the sparsemem section size, so that
+a sequence of page structs corresponding with a sparsemem section in the
+linear region appears naturally aligned in the vmemmap region.
+
+So round up vmemmap to sparsemem section size. Since this essentially moves
+the projection of the linear region up in memory, also revert the reduction
+of the size of the vmemmap region.
+
+Fixes: dfd55ad85e4a ("arm64: vmemmap: use virtual projection of linear region")
+Tested-by: Mark Langsdorf <mlangsdo@redhat.com>
+Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+---
+ arch/arm64/include/asm/pgtable.h | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
+index fc9f7ef..eaa9cab 100644
+--- a/arch/arm64/include/asm/pgtable.h
++++ b/arch/arm64/include/asm/pgtable.h
+@@ -40,7 +40,7 @@
+ * VMALLOC_END: extends to the available space below vmmemmap, PCI I/O space,
+ * fixed mappings and modules
+ */
+-#define VMEMMAP_SIZE ALIGN((1UL << (VA_BITS - PAGE_SHIFT - 1)) * sizeof(struct page), PUD_SIZE)
++#define VMEMMAP_SIZE ALIGN((1UL << (VA_BITS - PAGE_SHIFT)) * sizeof(struct page), PUD_SIZE)
+
+ #ifndef CONFIG_KASAN
+ #define VMALLOC_START (VA_START)
+@@ -52,7 +52,8 @@
+ #define VMALLOC_END (PAGE_OFFSET - PUD_SIZE - VMEMMAP_SIZE - SZ_64K)
+
+ #define VMEMMAP_START (VMALLOC_END + SZ_64K)
+-#define vmemmap ((struct page *)VMEMMAP_START - (memstart_addr >> PAGE_SHIFT))
++#define vmemmap ((struct page *)VMEMMAP_START - \
++ SECTION_ALIGN_DOWN(memstart_addr >> PAGE_SHIFT))
+
+ #define FIRST_USER_ADDRESS 0UL
+
+--
+2.5.0
+
diff --git a/iommu-fix.patch b/iommu-fix.patch
deleted file mode 100644
index 08cdafd1a..000000000
--- a/iommu-fix.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From b91309eedd77374fdecc379942c44f903e2dedff Mon Sep 17 00:00:00 2001
-From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
-Date: Tue, 23 Feb 2016 13:03:30 +0100
-Subject: [PATCH] iommu/amd: Fix boot warning when device 00:00.0 is not iommu
- covered
-
-The setup code for the performance counters in the AMD IOMMU driver
-tests whether the counters can be written. It tests to setup a counter
-for device 00:00.0, which fails on systems where this particular device
-is not covered by the IOMMU.
-
-Fix this by not relying on device 00:00.0 but only on the IOMMU being
-present.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
-Signed-off-by: Joerg Roedel <jroedel@suse.de>
----
- drivers/iommu/amd_iommu_init.c | 34 ++++++++++++++++++++++------------
- 1 file changed, 22 insertions(+), 12 deletions(-)
-
-diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
-index 013bdff..d06a6d9 100644
---- a/drivers/iommu/amd_iommu_init.c
-+++ b/drivers/iommu/amd_iommu_init.c
-@@ -228,6 +228,10 @@ static int amd_iommu_enable_interrupts(void);
- static int __init iommu_go_to_state(enum iommu_init_state state);
- static void init_device_table_dma(void);
-
-+static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu,
-+ u8 bank, u8 cntr, u8 fxn,
-+ u64 *value, bool is_write);
-+
- static inline void update_last_devid(u16 devid)
- {
- if (devid > amd_iommu_last_bdf)
-@@ -1142,8 +1146,8 @@ static void init_iommu_perf_ctr(struct amd_iommu *iommu)
- amd_iommu_pc_present = true;
-
- /* Check if the performance counters can be written to */
-- if ((0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val, true)) ||
-- (0 != amd_iommu_pc_get_set_reg_val(0, 0, 0, 0, &val2, false)) ||
-+ if ((0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val, true)) ||
-+ (0 != iommu_pc_get_set_reg_val(iommu, 0, 0, 0, &val2, false)) ||
- (val != val2)) {
- pr_err("AMD-Vi: Unable to write to IOMMU perf counter.\n");
- amd_iommu_pc_present = false;
-@@ -2283,22 +2287,15 @@ u8 amd_iommu_pc_get_max_counters(u16 devid)
- }
- EXPORT_SYMBOL(amd_iommu_pc_get_max_counters);
-
--int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
-+static int iommu_pc_get_set_reg_val(struct amd_iommu *iommu,
-+ u8 bank, u8 cntr, u8 fxn,
- u64 *value, bool is_write)
- {
-- struct amd_iommu *iommu;
- u32 offset;
- u32 max_offset_lim;
-
-- /* Make sure the IOMMU PC resource is available */
-- if (!amd_iommu_pc_present)
-- return -ENODEV;
--
-- /* Locate the iommu associated with the device ID */
-- iommu = amd_iommu_rlookup_table[devid];
--
- /* Check for valid iommu and pc register indexing */
-- if (WARN_ON((iommu == NULL) || (fxn > 0x28) || (fxn & 7)))
-+ if (WARN_ON((fxn > 0x28) || (fxn & 7)))
- return -ENODEV;
-
- offset = (u32)(((0x40|bank) << 12) | (cntr << 8) | fxn);
-@@ -2322,3 +2319,16 @@ int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
- return 0;
- }
- EXPORT_SYMBOL(amd_iommu_pc_get_set_reg_val);
-+
-+int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
-+ u64 *value, bool is_write)
-+{
-+ struct amd_iommu *iommu = amd_iommu_rlookup_table[devid];
-+
-+ /* Make sure the IOMMU PC resource is available */
-+ if (!amd_iommu_pc_present || iommu == NULL)
-+ return -ENODEV;
-+
-+ return iommu_pc_get_set_reg_val(iommu, bank, cntr, fxn,
-+ value, is_write);
-+}
---
-1.8.4.5
diff --git a/kernel.spec b/kernel.spec
index 29e4bcf72..98307812e 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -58,7 +58,7 @@ Summary: The Linux kernel
# Do we have a -stable update to apply?
-%define stable_update 4
+%define stable_update 5
# Set rpm version accordingly
%if 0%{?stable_update}
%define stablerev %{stable_update}
@@ -632,18 +632,15 @@ Patch646: HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch
#Known use after free, possibly rhbz 1310579
Patch654: 0001-usb-hub-fix-panic-in-usb_reset_and_verify_device.patch
-#rhbz 1310258
-Patch655: iommu-fix.patch
-
-#rhbz 1310682
-Patch657: 0001-Test-ata-fix.patch
-
#Mitigates CVE-2013-4312 rhbz 1313428 1313433
Patch659: pipe-limit-the-per-user-amount-of-pages-allocated-in.patch
#rhbz 1310252 1313318
Patch660: 0001-drm-i915-Pretend-cursor-is-always-on-for-ILK-style-W.patch
+#Fix for known arm64 breakage. No bugzilla becuase proactivity \o/
+Patch661: 0001-arm64-account-for-sparsemem-section-alignment-when-c.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -667,6 +664,7 @@ Requires(pre): %{kernel_prereq}\
Requires(pre): %{initrd_prereq}\
Requires(pre): linux-firmware >= 20150904-56.git6ebf5d57\
Requires(preun): systemd >= 200\
+Conflicts: xfsprogs < 4.3.0-1\
Conflicts: xorg-x11-drv-vmmouse < 13.0.99\
%{expand:%%{?kernel%{?1:_%{1}}_conflicts:Conflicts: %%{kernel%{?1:_%{1}}_conflicts}}}\
%{expand:%%{?kernel%{?1:_%{1}}_obsoletes:Obsoletes: %%{kernel%{?1:_%{1}}_obsoletes}}}\
@@ -2089,6 +2087,13 @@ fi
#
#
%changelog
+* Wed Mar 09 2016 Laura Abbott <labbott@redhat.com> - 4.4.5-300
+- Linux v4.4.5
+- Fix for known arm64 bootup issue
+
+* Fri Mar 04 2016 Laura Abbott <labbott@redhat.com> -4.4.4-301
+- Require updated XFS utilities
+
* Thu Mar 03 2016 Laura Abbott <labbott@redhat.com> - 4.4.4-300
- Linux v4.4.4
- Switch back to not using CONFIG_ACPI_REV_OVERRIDE_POSSIBLE
diff --git a/sources b/sources
index 7da2ff0c0..81332263b 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
9a78fa2eb6c68ca5a40ed5af08142599 linux-4.4.tar.xz
dcbc8fe378a676d5d0dd208cf524e144 perf-man-4.4.tar.gz
-07e9b2c5d0daf7fc2a1ee26a52adcbc0 patch-4.4.4.xz
+edddb33405ea1ab02b90eb9cecaa43f6 patch-4.4.5.xz