summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Kbuild-Add-an-option-to-enable-GCC-VTA.patch2
-rw-r--r--Revert-cpupower-Makefile-change-to-help-run-the-tool.patch42
-rw-r--r--arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch4
-rw-r--r--arm-dts-am335x-bone-common-enable-and-use-i2c2.patch2
-rw-r--r--arm-dts-am335x-bone-common-setup-default-pinmux-http.patch117
-rw-r--r--arm64-revert-tlb-rcu_table_free.patch436
-rw-r--r--config-generic6
-rw-r--r--config-nodebug114
-rw-r--r--config-powerpc-generic1
-rw-r--r--config-x86-32-generic1
-rw-r--r--config-x86-generic2
-rw-r--r--drm-i915-hush-check-crtc-state.patch2
-rw-r--r--kernel-arm64.patch10
-rw-r--r--kernel.spec28
-rw-r--r--sources5
-rw-r--r--xen-pciback-limit-guest-control-of-command-register.patch156
16 files changed, 190 insertions, 738 deletions
diff --git a/Kbuild-Add-an-option-to-enable-GCC-VTA.patch b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch
index 984ec3452..c48145e6e 100644
--- a/Kbuild-Add-an-option-to-enable-GCC-VTA.patch
+++ b/Kbuild-Add-an-option-to-enable-GCC-VTA.patch
@@ -43,7 +43,7 @@ Signed-off-by: Josh Stone <jistone@redhat.com>
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
-index 1100ff3c77e3..b4f8a4909e4e 100644
+index e734965b1604..c724e72b238d 100644
--- a/Makefile
+++ b/Makefile
@@ -706,7 +706,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer
diff --git a/Revert-cpupower-Makefile-change-to-help-run-the-tool.patch b/Revert-cpupower-Makefile-change-to-help-run-the-tool.patch
deleted file mode 100644
index 97461f3c0..000000000
--- a/Revert-cpupower-Makefile-change-to-help-run-the-tool.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Josh Boyer <jwboyer@fedoraproject.org>
-Date: Tue, 10 Mar 2015 20:21:24 -0400
-Subject: [PATCH] Revert "cpupower Makefile change to help run the tool without
- 'make install'"
-
-This reverts commit 5c1de006e8e66b0be05be422416629e344c71652.
-
-While the original commit makes it easier to run cpupower from the local build
-directory, it also leaves the binary with a rather poor rpath of './' in it
-after it is installed on a system via 'make install'.
-
-This is considered bad practice and can cause cpupower to fail in rpmbuild
-with the following error:
-
-ERROR 0004: file '/usr/bin/cpupower' contains an insecure rpath './' in [./]
-error: Bad exit status from /var/tmp/rpm-tmp.A6u26r (%install)
- Bad exit status from /var/tmp/rpm-tmp.A6u26r (%install)
-
-Developers should be able to use LD_LIBRARY_PATH to achieve the same effect
-and not introduce rpath into the binary.
-
-Signed-off-by: Josh Boyer <jwboyer@feoraproject.org>
----
- tools/power/cpupower/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/power/cpupower/Makefile b/tools/power/cpupower/Makefile
-index 3ed7c0476d48..2e2ba2efa0d9 100644
---- a/tools/power/cpupower/Makefile
-+++ b/tools/power/cpupower/Makefile
-@@ -209,7 +209,7 @@ $(OUTPUT)%.o: %.c
-
- $(OUTPUT)cpupower: $(UTIL_OBJS) $(OUTPUT)libcpupower.so.$(LIB_MAJ)
- $(ECHO) " CC " $@
-- $(QUIET) $(CC) $(CFLAGS) $(LDFLAGS) $(UTIL_OBJS) -lcpupower -Wl,-rpath=./ -lrt -lpci -L$(OUTPUT) -o $@
-+ $(QUIET) $(CC) $(CFLAGS) $(LDFLAGS) $(UTIL_OBJS) -lcpupower -lrt -lpci -L$(OUTPUT) -o $@
- $(QUIET) $(STRIPCMD) $@
-
- $(OUTPUT)po/$(PACKAGE).pot: $(UTIL_SRC)
---
-2.1.0
-
diff --git a/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch b/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch
index 0d6ccd796..ba6949b88 100644
--- a/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch
+++ b/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch
@@ -9,10 +9,10 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
1 file changed, 21 insertions(+)
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
-index db880bf46135..c931ec7201c0 100644
+index 9688dda39e7a..8e3e77f3121f 100644
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
-@@ -102,6 +102,27 @@
+@@ -109,6 +109,27 @@
>;
};
diff --git a/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch b/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch
index 94fd32476..75f350912 100644
--- a/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch
+++ b/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch
@@ -8,7 +8,7 @@ Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
1 file changed, 39 insertions(+)
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
-index 2c6248d9a9ef..ec755eeb78ee 100644
+index c3255e0c90aa..1fd496fe1a68 100644
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
@@ -81,6 +81,13 @@
diff --git a/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch b/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch
index 7f10489c6..9696f5386 100644
--- a/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch
+++ b/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch
@@ -5,14 +5,14 @@ Subject: [PATCH] arm: dts: am335x-bone-common: setup default pinmux
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
---
- arch/arm/boot/dts/am335x-bone-common.dtsi | 130 ++++++++++++++++++++++++++++++
- 1 file changed, 130 insertions(+)
+ arch/arm/boot/dts/am335x-bone-common.dtsi | 222 ++++++++++++++++++++++++++++++
+ 1 file changed, 222 insertions(+)
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
-index ec755eeb78ee..db880bf46135 100644
+index 1fd496fe1a68..9688dda39e7a 100644
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
-@@ -95,6 +95,13 @@
+@@ -95,6 +95,20 @@
>;
};
@@ -23,10 +23,17 @@ index ec755eeb78ee..db880bf46135 100644
+ >;
+ };
+
++ uart1_pins: pinmux_uart1_pins {
++ pinctrl-single,pins = <
++ 0x180 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart1_rxd.uart1_rxd */
++ 0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
++ >;
++ };
++
clkout2_pin: pinmux_clkout2_pin {
pinctrl-single,pins = <
0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
-@@ -175,6 +182,33 @@
+@@ -175,6 +189,60 @@
0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
>;
};
@@ -57,10 +64,37 @@ index ec755eeb78ee..db880bf46135 100644
+ 0x164 0x0 /* P9_42 (ZCZ ball C18) | MODE 0 */
+ >;
+ };
++
++ spi0_pins: pinmux_spi0_pins {
++ pinctrl-single,pins = <
++ 0x150 (PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_sclk.spi0_sclk */
++ 0x154 (PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d0.spi0_d0 */
++ 0x158 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* spi0_d1.spi0_d1 */
++ 0x15c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* spi0_cs0.spi0_cs0 */
++ >;
++ };
++
++ ehrpwm1_pin_p9_14: pinmux_ehrpwm1_pin_p9_14 {
++ pinctrl-single,pins = <
++ 0x048 0x6 /* P9_14 (ZCZ ball U14) | MODE 6 */
++ >;
++ };
++
++ ehrpwm1_pin_p9_16: pinmux_ehrpwm1_pin_p9_16 {
++ pinctrl-single,pins = <
++ 0x04c 0x6 /* P9_16 (ZCZ ball T14) | MODE 6 */
++ >;
++ };
++
++ ecap0_pin_p9_42: pinmux_ecap0_pin_p9_42 {
++ pinctrl-single,pins = <
++ 0x164 0x0 /* P9_42 (ZCZ ball C18) | MODE 0 */
++ >;
++ };
};
&uart0 {
-@@ -184,6 +218,13 @@
+@@ -184,6 +252,20 @@
status = "okay";
};
@@ -71,10 +105,17 @@ index ec755eeb78ee..db880bf46135 100644
+ status = "okay";
+};
+
++&uart1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&uart1_pins>;
++
++ status = "okay";
++};
++
&usb {
status = "okay";
};
-@@ -259,6 +300,56 @@
+@@ -259,6 +341,106 @@
};
};
@@ -128,13 +169,65 @@ index ec755eeb78ee..db880bf46135 100644
+ };
+};
+
++&epwmss0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&ecap0_pin_p9_42>;
++ status = "okay";
++
++ ecap@48300100 {
++ status = "okay";
++ };
++};
++
++&epwmss1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <
++ &ehrpwm1_pin_p9_14
++ &ehrpwm1_pin_p9_16
++ >;
++
++ status = "okay";
++
++ ehrpwm@48302200 {
++ status = "okay";
++ };
++};
++
++&spi0 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&spi0_pins>;
++ status = "okay";
++
++ spidev0: spi@0 {
++ compatible = "spidev";
++ reg = <0>;
++ spi-max-frequency = <16000000>;
++ spi-cpha;
++ };
++
++ spidev1: spi@1 {
++ compatible = "spidev";
++ reg = <1>;
++ spi-max-frequency = <16000000>;
++ };
++};
++
++&tscadc {
++ status = "okay";
++ adc {
++ ti,adc-channels = <4 5 6>;
++ };
++};
++
/include/ "tps65217.dtsi"
&tps {
-@@ -340,3 +431,42 @@
- cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
- cd-inverted;
- };
+@@ -347,4 +529,44 @@
+
+ &sham {
+ status = "okay";
++
++};
+
+/ {
+ ocp {
@@ -173,7 +266,7 @@ index ec755eeb78ee..db880bf46135 100644
+ status = "okay";
+ };
+ };
-+};
+ };
--
2.1.0
diff --git a/arm64-revert-tlb-rcu_table_free.patch b/arm64-revert-tlb-rcu_table_free.patch
deleted file mode 100644
index 5291fa5e9..000000000
--- a/arm64-revert-tlb-rcu_table_free.patch
+++ /dev/null
@@ -1,436 +0,0 @@
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index 1b8e973..31042fe 100644
---- a/arch/arm64/Kconfig
-+++ b/arch/arm64/Kconfig
-@@ -65,7 +65,6 @@ config ARM64
- select HAVE_PERF_EVENTS
- select HAVE_PERF_REGS
- select HAVE_PERF_USER_STACK_DUMP
-- select HAVE_RCU_TABLE_FREE
- select HAVE_SYSCALL_TRACEPOINTS
- select IRQ_DOMAIN
- select MODULES_USE_ELF_RELA
-@@ -119,9 +118,6 @@ config GENERIC_CALIBRATE_DELAY
- config ZONE_DMA
- def_bool y
-
--config HAVE_GENERIC_RCU_GUP
-- def_bool y
--
- config ARCH_DMA_ADDR_T_64BIT
- def_bool y
-
-diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
-index 800ec0e..e2e79ac 100644
---- a/arch/arm64/include/asm/pgtable.h
-+++ b/arch/arm64/include/asm/pgtable.h
-@@ -243,16 +243,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
-
- #define __HAVE_ARCH_PTE_SPECIAL
-
--static inline pte_t pud_pte(pud_t pud)
--{
-- return __pte(pud_val(pud));
--}
--
--static inline pmd_t pud_pmd(pud_t pud)
--{
-- return __pmd(pud_val(pud));
--}
--
- static inline pte_t pmd_pte(pmd_t pmd)
- {
- return __pte(pmd_val(pmd));
-@@ -275,13 +265,7 @@ static inline pgprot_t mk_sect_prot(pgprot_t prot)
- #ifdef CONFIG_TRANSPARENT_HUGEPAGE
- #define pmd_trans_huge(pmd) (pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT))
- #define pmd_trans_splitting(pmd) pte_special(pmd_pte(pmd))
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
--#define __HAVE_ARCH_PMDP_SPLITTING_FLUSH
--struct vm_area_struct;
--void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
-- pmd_t *pmdp);
--#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
--#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
-+#endif
-
- #define pmd_dirty(pmd) pte_dirty(pmd_pte(pmd))
- #define pmd_young(pmd) pte_young(pmd_pte(pmd))
-@@ -302,7 +286,7 @@ void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
- #define pfn_pmd(pfn,prot) (__pmd(((phys_addr_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot)))
- #define mk_pmd(page,prot) pfn_pmd(page_to_pfn(page),prot)
-
--#define pud_write(pud) pte_write(pud_pte(pud))
-+#define pmd_page(pmd) pfn_to_page(__phys_to_pfn(pmd_val(pmd) & PHYS_MASK))
- #define pud_pfn(pud) (((pud_val(pud) & PUD_MASK) & PHYS_MASK) >> PAGE_SHIFT)
-
- #define set_pmd_at(mm, addr, pmdp, pmd) set_pte_at(mm, addr, (pte_t *)pmdp, pmd_pte(pmd))
-@@ -407,8 +391,6 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)
- return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(addr);
- }
-
--#define pud_page(pud) pfn_to_page(__phys_to_pfn(pud_val(pud) & PHYS_MASK))
--
- #endif /* CONFIG_ARM64_PGTABLE_LEVELS > 2 */
-
- #if CONFIG_ARM64_PGTABLE_LEVELS > 3
-@@ -443,8 +425,6 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long addr)
- return (pud_t *)pgd_page_vaddr(*pgd) + pud_index(addr);
- }
-
--#define pgd_page(pgd) pfn_to_page(__phys_to_pfn(pgd_val(pgd) & PHYS_MASK))
--
- #endif /* CONFIG_ARM64_PGTABLE_LEVELS > 3 */
-
- #define pgd_ERROR(pgd) __pgd_error(__FILE__, __LINE__, pgd_val(pgd))
-diff --git a/arch/arm64/include/asm/tlb.h b/arch/arm64/include/asm/tlb.h
-index c028fe3..62731ef 100644
---- a/arch/arm64/include/asm/tlb.h
-+++ b/arch/arm64/include/asm/tlb.h
-@@ -19,44 +19,84 @@
- #ifndef __ASM_TLB_H
- #define __ASM_TLB_H
-
--#include <linux/pagemap.h>
--#include <linux/swap.h>
--
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
--
--#define tlb_remove_entry(tlb, entry) tlb_remove_table(tlb, entry)
--static inline void __tlb_remove_table(void *_table)
--{
-- free_page_and_swap_cache((struct page *)_table);
--}
--#else
--#define tlb_remove_entry(tlb, entry) tlb_remove_page(tlb, entry)
--#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
-+#define __tlb_remove_pmd_tlb_entry __tlb_remove_pmd_tlb_entry
-
- #include <asm-generic/tlb.h>
-
-+/*
-+ * There's three ways the TLB shootdown code is used:
-+ * 1. Unmapping a range of vmas. See zap_page_range(), unmap_region().
-+ * tlb->fullmm = 0, and tlb_start_vma/tlb_end_vma will be called.
-+ * 2. Unmapping all vmas. See exit_mmap().
-+ * tlb->fullmm = 1, and tlb_start_vma/tlb_end_vma will be called.
-+ * Page tables will be freed.
-+ * 3. Unmapping argument pages. See shift_arg_pages().
-+ * tlb->fullmm = 0, but tlb_start_vma/tlb_end_vma will not be called.
-+ */
- static inline void tlb_flush(struct mmu_gather *tlb)
- {
- if (tlb->fullmm) {
- flush_tlb_mm(tlb->mm);
-- } else {
-+ } else if (tlb->end > 0) {
- struct vm_area_struct vma = { .vm_mm = tlb->mm, };
- flush_tlb_range(&vma, tlb->start, tlb->end);
-+ tlb->start = TASK_SIZE;
-+ tlb->end = 0;
-+ }
-+}
-+
-+static inline void tlb_add_flush(struct mmu_gather *tlb, unsigned long addr)
-+{
-+ if (!tlb->fullmm) {
-+ tlb->start = min(tlb->start, addr);
-+ tlb->end = max(tlb->end, addr + PAGE_SIZE);
- }
- }
-
-+/*
-+ * Memorize the range for the TLB flush.
-+ */
-+static inline void __tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *ptep,
-+ unsigned long addr)
-+{
-+ tlb_add_flush(tlb, addr);
-+}
-+
-+/*
-+ * In the case of tlb vma handling, we can optimise these away in the
-+ * case where we're doing a full MM flush. When we're doing a munmap,
-+ * the vmas are adjusted to only cover the region to be torn down.
-+ */
-+static inline void tlb_start_vma(struct mmu_gather *tlb,
-+ struct vm_area_struct *vma)
-+{
-+ if (!tlb->fullmm) {
-+ tlb->start = TASK_SIZE;
-+ tlb->end = 0;
-+ }
-+}
-+
-+static inline void tlb_end_vma(struct mmu_gather *tlb,
-+ struct vm_area_struct *vma)
-+{
-+ if (!tlb->fullmm)
-+ tlb_flush(tlb);
-+}
-+
- static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
- unsigned long addr)
- {
- pgtable_page_dtor(pte);
-- tlb_remove_entry(tlb, pte);
-+ tlb_add_flush(tlb, addr);
-+ tlb_remove_page(tlb, pte);
- }
-
- #if CONFIG_ARM64_PGTABLE_LEVELS > 2
- static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
- unsigned long addr)
- {
-- tlb_remove_entry(tlb, virt_to_page(pmdp));
-+ tlb_add_flush(tlb, addr);
-+ tlb_remove_page(tlb, virt_to_page(pmdp));
- }
- #endif
-
-@@ -64,8 +104,15 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
- static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pudp,
- unsigned long addr)
- {
-- tlb_remove_entry(tlb, virt_to_page(pudp));
-+ tlb_add_flush(tlb, addr);
-+ tlb_remove_page(tlb, virt_to_page(pudp));
- }
- #endif
-
-+static inline void __tlb_remove_pmd_tlb_entry(struct mmu_gather *tlb, pmd_t *pmdp,
-+ unsigned long address)
-+{
-+ tlb_add_flush(tlb, address);
-+}
-+
- #endif
-diff --git a/arch/arm64/mm/flush.c b/arch/arm64/mm/flush.c
-index b6f14e8..0d64089 100644
---- a/arch/arm64/mm/flush.c
-+++ b/arch/arm64/mm/flush.c
-@@ -104,19 +104,3 @@ EXPORT_SYMBOL(flush_dcache_page);
- */
- EXPORT_SYMBOL(flush_cache_all);
- EXPORT_SYMBOL(flush_icache_range);
--
--#ifdef CONFIG_TRANSPARENT_HUGEPAGE
--#ifdef CONFIG_HAVE_RCU_TABLE_FREE
--void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
-- pmd_t *pmdp)
--{
-- pmd_t pmd = pmd_mksplitting(*pmdp);
--
-- VM_BUG_ON(address & ~PMD_MASK);
-- set_pmd_at(vma->vm_mm, address, pmdp, pmd);
--
-- /* dummy IPI to serialise against fast_gup */
-- kick_all_cpus_sync();
--}
--#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
--#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
-diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
-index db284bf..5672d7e 100644
---- a/include/asm-generic/tlb.h
-+++ b/include/asm-generic/tlb.h
-@@ -96,9 +96,10 @@ struct mmu_gather {
- #endif
- unsigned long start;
- unsigned long end;
-+ unsigned int need_flush : 1, /* Did free PTEs */
- /* we are in the middle of an operation to clear
- * a full mm and can make some optimizations */
-- unsigned int fullmm : 1,
-+ fullmm : 1,
- /* we have performed an operation which
- * requires a complete flush of the tlb */
- need_flush_all : 1;
-@@ -127,58 +128,16 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
- tlb_flush_mmu(tlb);
- }
-
--static inline void __tlb_adjust_range(struct mmu_gather *tlb,
-- unsigned long address)
--{
-- tlb->start = min(tlb->start, address);
-- tlb->end = max(tlb->end, address + PAGE_SIZE);
--}
--
--static inline void __tlb_reset_range(struct mmu_gather *tlb)
--{
-- if (tlb->fullmm) {
-- tlb->start = tlb->end = ~0;
-- } else {
-- tlb->start = TASK_SIZE;
-- tlb->end = 0;
-- }
--}
--
--/*
-- * In the case of tlb vma handling, we can optimise these away in the
-- * case where we're doing a full MM flush. When we're doing a munmap,
-- * the vmas are adjusted to only cover the region to be torn down.
-- */
--#ifndef tlb_start_vma
--#define tlb_start_vma(tlb, vma) do { } while (0)
--#endif
--
--#define __tlb_end_vma(tlb, vma) \
-- do { \
-- if (!tlb->fullmm && tlb->end) { \
-- tlb_flush(tlb); \
-- __tlb_reset_range(tlb); \
-- } \
-- } while (0)
--
--#ifndef tlb_end_vma
--#define tlb_end_vma __tlb_end_vma
--#endif
--
--#ifndef __tlb_remove_tlb_entry
--#define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0)
--#endif
--
- /**
- * tlb_remove_tlb_entry - remember a pte unmapping for later tlb invalidation.
- *
-- * Record the fact that pte's were really unmapped by updating the range,
-- * so we can later optimise away the tlb invalidate. This helps when
-- * userspace is unmapping already-unmapped pages, which happens quite a lot.
-+ * Record the fact that pte's were really umapped in ->need_flush, so we can
-+ * later optimise away the tlb invalidate. This helps when userspace is
-+ * unmapping already-unmapped pages, which happens quite a lot.
- */
- #define tlb_remove_tlb_entry(tlb, ptep, address) \
- do { \
-- __tlb_adjust_range(tlb, address); \
-+ tlb->need_flush = 1; \
- __tlb_remove_tlb_entry(tlb, ptep, address); \
- } while (0)
-
-@@ -192,27 +151,27 @@ static inline void __tlb_reset_range(struct mmu_gather *tlb)
-
- #define tlb_remove_pmd_tlb_entry(tlb, pmdp, address) \
- do { \
-- __tlb_adjust_range(tlb, address); \
-+ tlb->need_flush = 1; \
- __tlb_remove_pmd_tlb_entry(tlb, pmdp, address); \
- } while (0)
-
- #define pte_free_tlb(tlb, ptep, address) \
- do { \
-- __tlb_adjust_range(tlb, address); \
-+ tlb->need_flush = 1; \
- __pte_free_tlb(tlb, ptep, address); \
- } while (0)
-
- #ifndef __ARCH_HAS_4LEVEL_HACK
- #define pud_free_tlb(tlb, pudp, address) \
- do { \
-- __tlb_adjust_range(tlb, address); \
-+ tlb->need_flush = 1; \
- __pud_free_tlb(tlb, pudp, address); \
- } while (0)
- #endif
-
- #define pmd_free_tlb(tlb, pmdp, address) \
- do { \
-- __tlb_adjust_range(tlb, address); \
-+ tlb->need_flush = 1; \
- __pmd_free_tlb(tlb, pmdp, address); \
- } while (0)
-
-diff --git a/mm/memory.c b/mm/memory.c
-index 411144f..2772d7a 100644
---- a/mm/memory.c
-+++ b/mm/memory.c
-@@ -220,6 +220,9 @@ void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long
- /* Is it from 0 to ~0? */
- tlb->fullmm = !(start | (end+1));
- tlb->need_flush_all = 0;
-+ tlb->start = start;
-+ tlb->end = end;
-+ tlb->need_flush = 0;
- tlb->local.next = NULL;
- tlb->local.nr = 0;
- tlb->local.max = ARRAY_SIZE(tlb->__pages);
-@@ -229,28 +232,23 @@ void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long
- #ifdef CONFIG_HAVE_RCU_TABLE_FREE
- tlb->batch = NULL;
- #endif
--
-- __tlb_reset_range(tlb);
- }
-
- static void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb)
- {
-- if (!tlb->end)
-- return;
--
-+ tlb->need_flush = 0;
- tlb_flush(tlb);
- mmu_notifier_invalidate_range(tlb->mm, tlb->start, tlb->end);
- #ifdef CONFIG_HAVE_RCU_TABLE_FREE
- tlb_table_flush(tlb);
- #endif
-- __tlb_reset_range(tlb);
- }
-
- static void tlb_flush_mmu_free(struct mmu_gather *tlb)
- {
- struct mmu_gather_batch *batch;
-
-- for (batch = &tlb->local; batch && batch->nr; batch = batch->next) {
-+ for (batch = &tlb->local; batch; batch = batch->next) {
- free_pages_and_swap_cache(batch->pages, batch->nr);
- batch->nr = 0;
- }
-@@ -259,6 +257,8 @@ static void tlb_flush_mmu_free(struct mmu_gather *tlb)
-
- void tlb_flush_mmu(struct mmu_gather *tlb)
- {
-+ if (!tlb->need_flush)
-+ return;
- tlb_flush_mmu_tlbonly(tlb);
- tlb_flush_mmu_free(tlb);
- }
-@@ -293,7 +293,7 @@ int __tlb_remove_page(struct mmu_gather *tlb, struct page *page)
- {
- struct mmu_gather_batch *batch;
-
-- VM_BUG_ON(!tlb->end);
-+ VM_BUG_ON(!tlb->need_flush);
-
- batch = tlb->active;
- batch->pages[batch->nr++] = page;
-@@ -360,6 +360,8 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table)
- {
- struct mmu_table_batch **batch = &tlb->batch;
-
-+ tlb->need_flush = 1;
-+
- /*
- * When there's less then two users of this mm there cannot be a
- * concurrent page-table walk.
-@@ -1161,8 +1163,20 @@ again:
- arch_leave_lazy_mmu_mode();
-
- /* Do the actual TLB flush before dropping ptl */
-- if (force_flush)
-+ if (force_flush) {
-+ unsigned long old_end;
-+
-+ /*
-+ * Flush the TLB just for the previous segment,
-+ * then update the range to be the remaining
-+ * TLB range.
-+ */
-+ old_end = tlb->end;
-+ tlb->end = addr;
- tlb_flush_mmu_tlbonly(tlb);
-+ tlb->start = addr;
-+ tlb->end = old_end;
-+ }
- pte_unmap_unlock(start_pte, ptl);
-
- /*
diff --git a/config-generic b/config-generic
index d604dc41b..178306809 100644
--- a/config-generic
+++ b/config-generic
@@ -1718,13 +1718,13 @@ CONFIG_B43_PCMCIA=y
CONFIG_B43_SDIO=y
CONFIG_B43_BCMA=y
CONFIG_B43_BCMA_PIO=y
-CONFIG_B43_DEBUG=y
+# CONFIG_B43_DEBUG is not set
CONFIG_B43_PHY_LP=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_HT=y
CONFIG_B43_PHY_G=y
CONFIG_B43LEGACY=m
-CONFIG_B43LEGACY_DEBUG=y
+# CONFIG_B43LEGACY_DEBUG is not set
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
@@ -4785,7 +4785,7 @@ CONFIG_PM_DEBUG=y
# CONFIG_DPM_WATCHDOG is not set # revisit this in debug
CONFIG_PM_TRACE=y
CONFIG_PM_TRACE_RTC=y
-CONFIG_PM_TEST_SUSPEND=y
+# CONFIG_PM_TEST_SUSPEND is not set
CONFIG_PM_RUNTIME=y
# CONFIG_PM_OPP is not set
# CONFIG_PM_AUTOSLEEP is not set
diff --git a/config-nodebug b/config-nodebug
index 6c098422a..01008d646 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -2,100 +2,100 @@ CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
CONFIG_SND_PCM_XRUN_DEBUG=y
-CONFIG_DEBUG_ATOMIC_SLEEP=y
-
-CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_RT_MUTEXES=y
-CONFIG_DEBUG_LOCK_ALLOC=y
-CONFIG_LOCK_TORTURE_TEST=m
-CONFIG_PROVE_LOCKING=y
-CONFIG_DEBUG_SPINLOCK=y
-CONFIG_PROVE_RCU=y
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_PROVE_RCU is not set
# CONFIG_PROVE_RCU_REPEATEDLY is not set
-CONFIG_DEBUG_PER_CPU_MAPS=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_CPUMASK_OFFSTACK=y
-CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
+# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set
-CONFIG_FAULT_INJECTION=y
-CONFIG_FAILSLAB=y
-CONFIG_FAIL_PAGE_ALLOC=y
-CONFIG_FAIL_MAKE_REQUEST=y
-CONFIG_FAULT_INJECTION_DEBUG_FS=y
-CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
-CONFIG_FAIL_IO_TIMEOUT=y
-CONFIG_FAIL_MMC_REQUEST=y
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_FAILSLAB is not set
+# CONFIG_FAIL_PAGE_ALLOC is not set
+# CONFIG_FAIL_MAKE_REQUEST is not set
+# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
+# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
+# CONFIG_FAIL_IO_TIMEOUT is not set
+# CONFIG_FAIL_MMC_REQUEST is not set
-CONFIG_LOCK_STAT=y
+# CONFIG_LOCK_STAT is not set
-CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_DEBUG_STACK_USAGE is not set
-CONFIG_ACPI_DEBUG=y
+# CONFIG_ACPI_DEBUG is not set
-CONFIG_DEBUG_SG=y
-CONFIG_DEBUG_PI_LIST=y
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_PI_LIST is not set
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_PAGE_OWNER is not set
# CONFIG_DEBUG_PAGEALLOC is not set
-CONFIG_DEBUG_OBJECTS=y
+# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_OBJECTS_SELFTEST is not set
-CONFIG_DEBUG_OBJECTS_FREE=y
-CONFIG_DEBUG_OBJECTS_TIMERS=y
-CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
+# CONFIG_DEBUG_OBJECTS_FREE is not set
+# CONFIG_DEBUG_OBJECTS_TIMERS is not set
+# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_X86_PTDUMP=y
-CONFIG_ARM64_PTDUMP=y
-CONFIG_EFI_PGT_DUMP=y
+# CONFIG_ARM64_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
-CONFIG_CAN_DEBUG_DEVICES=y
+# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
-CONFIG_DEBUG_NOTIFIERS=y
+# CONFIG_DEBUG_NOTIFIERS is not set
-CONFIG_DMA_API_DEBUG=y
+# CONFIG_DMA_API_DEBUG is not set
-CONFIG_MMIOTRACE=y
+# CONFIG_MMIOTRACE is not set
-CONFIG_DEBUG_CREDENTIALS=y
+# CONFIG_DEBUG_CREDENTIALS is not set
# off in both production debug and nodebug builds,
# on in rawhide nodebug builds
-CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-CONFIG_EXT4_DEBUG=y
+# CONFIG_EXT4_DEBUG is not set
# CONFIG_XFS_WARN is not set
-CONFIG_DEBUG_PERF_USE_VMALLOC=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
-CONFIG_JBD2_DEBUG=y
+# CONFIG_JBD2_DEBUG is not set
-CONFIG_NFSD_FAULT_INJECTION=y
+# CONFIG_NFSD_FAULT_INJECTION is not set
-CONFIG_DEBUG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
-CONFIG_DRBD_FAULT_INJECTION=y
+# CONFIG_DRBD_FAULT_INJECTION is not set
-CONFIG_ATH_DEBUG=y
-CONFIG_CARL9170_DEBUGFS=y
-CONFIG_IWLWIFI_DEVICE_TRACING=y
+# CONFIG_ATH_DEBUG is not set
+# CONFIG_CARL9170_DEBUGFS is not set
+# CONFIG_IWLWIFI_DEVICE_TRACING is not set
# CONFIG_RTLWIFI_DEBUG is not set
-CONFIG_DEBUG_OBJECTS_WORK=y
+# CONFIG_DEBUG_OBJECTS_WORK is not set
-CONFIG_DMADEVICES_DEBUG=y
-CONFIG_DMADEVICES_VDEBUG=y
+# CONFIG_DMADEVICES_DEBUG is not set
+# CONFIG_DMADEVICES_VDEBUG is not set
CONFIG_PM_ADVANCED_DEBUG=y
-CONFIG_CEPH_LIB_PRETTYDEBUG=y
-CONFIG_QUOTA_DEBUG=y
+# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_QUOTA_DEBUG is not set
CONFIG_KGDB_KDB=y
@@ -103,18 +103,18 @@ CONFIG_KDB_DEFAULT_ENABLE=0x0
CONFIG_KDB_KEYBOARD=y
CONFIG_KDB_CONTINUE_CATASTROPHIC=0
-CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
+# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
# CONFIG_PERCPU_TEST is not set
-CONFIG_TEST_LIST_SORT=y
+# CONFIG_TEST_LIST_SORT is not set
# CONFIG_TEST_STRING_HELPERS is not set
-CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
-CONFIG_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
@@ -125,7 +125,7 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
# CONFIG_SPI_DEBUG is not set
-CONFIG_X86_DEBUG_STATIC_CPU_HAS=y
+# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_LATENCYTOP is not set
diff --git a/config-powerpc-generic b/config-powerpc-generic
index af97c4964..e5d39cb8f 100644
--- a/config-powerpc-generic
+++ b/config-powerpc-generic
@@ -337,6 +337,7 @@ CONFIG_I2C_MPC=m
# CONFIG_CPU_IDLE is not set
# CONFIG_OF_UNITTEST is not set
# CONFIG_OF_SELFTEST is not set
+# CONFIG_OF_OVERLAY is not set
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
# CONFIG_INPUT_GP2A is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
diff --git a/config-x86-32-generic b/config-x86-32-generic
index ba25ddb4d..8734c5cd7 100644
--- a/config-x86-32-generic
+++ b/config-x86-32-generic
@@ -200,6 +200,7 @@ CONFIG_BACKLIGHT_PWM=m
# CONFIG_OF_UNITTEST is not set
# CONFIG_OF_SELFTEST is not set
+# CONFIG_OF_OVERLAY is not set
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
# CONFIG_INPUT_GP2A is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
diff --git a/config-x86-generic b/config-x86-generic
index 1aadc94cc..ed384c358 100644
--- a/config-x86-generic
+++ b/config-x86-generic
@@ -348,7 +348,7 @@ CONFIG_SP5100_TCO=m
# CONFIG_MEMTEST is not set
# CONFIG_DEBUG_TLBFLUSH is not set
-CONFIG_MAXSMP=y
+# CONFIG_MAXSMP is not set
CONFIG_HP_ILO=m
diff --git a/drm-i915-hush-check-crtc-state.patch b/drm-i915-hush-check-crtc-state.patch
index 0c19b53bc..beea2dc2e 100644
--- a/drm-i915-hush-check-crtc-state.patch
+++ b/drm-i915-hush-check-crtc-state.patch
@@ -14,7 +14,7 @@ Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/0
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index e730789b53b7..74b3f14327cc 100644
+index 9943c20a741d..bfac247e6d2c 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -10886,7 +10886,7 @@ check_crtc_state(struct drm_device *dev)
diff --git a/kernel-arm64.patch b/kernel-arm64.patch
index 51529ac12..6c618105b 100644
--- a/kernel-arm64.patch
+++ b/kernel-arm64.patch
@@ -3595,14 +3595,15 @@ index cce9524..c50ca8f 100644
const struct cpu_operations **ops = supported_cpu_ops;
diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c
-index b42c7b4..a92be8e 100644
+index 2b8d70164428..f5808cee51a2 100644
--- a/arch/arm64/kernel/efi.c
+++ b/arch/arm64/kernel/efi.c
-@@ -354,3 +354,40 @@ void efi_virtmap_unload(void)
- efi_set_pgd(current->active_mm);
- preempt_enable();
+@@ -363,3 +363,42 @@ bool efi_poweroff_required(void)
+ {
+ return efi_enabled(EFI_RUNTIME_SERVICES);
}
+
++
+/*
+ * If nothing else is handling pm_power_off, use EFI
+ *
@@ -3639,6 +3640,7 @@ index b42c7b4..a92be8e 100644
+ return ret;
+}
+late_initcall(arm64_register_efi_restart);
++
diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
index 6f93c24..c870fa4 100644
--- a/arch/arm64/kernel/pci.c
diff --git a/kernel.spec b/kernel.spec
index 956ba6675..41fe78983 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -68,9 +68,9 @@ Summary: The Linux kernel
# define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
%define upstream_sublevel 0
# The rc snapshot level
-%define rcrev 3
+%define rcrev 4
# The git snapshot level
-%define gitrev 2
+%define gitrev 0
# Set rpm version accordingly
%define rpmversion 4.%{upstream_sublevel}.0
%endif
@@ -125,7 +125,7 @@ Summary: The Linux kernel
# Set debugbuildsenabled to 1 for production (build separate debug kernels)
# and 0 for rawhide (all kernels are debug kernels).
# See also 'make debug' and 'make release'.
-%define debugbuildsenabled 0
+%define debugbuildsenabled 1
# Want to build a vanilla kernel build without any non-upstream patches?
%define with_vanilla %{?_with_vanilla: 1} %{?!_with_vanilla: 0}
@@ -412,7 +412,7 @@ BuildRequires: binutils-%{_build_arch}-linux-gnu, gcc-%{_build_arch}-linux-gnu
%endif
#Source0: ftp://ftp.kernel.org/pub/linux/kernel/v4.x/linux-%{kversion}.tar.xz
-Source0: ftp://ftp.kernel.org/pub/linux/kernel/v4.x/linux-4.0-rc3.tar.xz
+Source0: ftp://ftp.kernel.org/pub/linux/kernel/v4.x/linux-4.0-rc4.tar.xz
Source10: perf-man-%{kversion}.tar.gz
Source11: x509.genkey
@@ -629,9 +629,6 @@ Patch26140: security-yama-Remove-unnecessary-selects-from-Kconfi.patch
Patch26141: mfd-rtsx_usb-prevent-DMA-from-stack.patch
-#rhbz 1199312
-Patch26142: Revert-cpupower-Makefile-change-to-help-run-the-tool.patch
-
#rhbz 1200777 1200778
Patch26150: Input-synaptics-split-synaptics_resolution-query-fir.patch
Patch26151: Input-synaptics-log-queried-and-quirked-dimension-va.patch
@@ -649,9 +646,6 @@ Patch26162: Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch
Patch26163: Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch
Patch26164: Revert-Input-synaptics-use-dmax-in-input_mt_assign_s.patch
-#CVE-2015-2150 rhbz 1196266 1200397
-Patch26165: xen-pciback-limit-guest-control-of-command-register.patch
-
#CVE-2014-8159 rhbz 1181166 1200950
Patch26167: IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch
@@ -660,7 +654,6 @@ Patch26168: HID-multitouch-add-support-of-clickpads.patch
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
Patch30000: kernel-arm64.patch
-Patch30001: arm64-revert-tlb-rcu_table_free.patch
# END OF PATCH DEFINITIONS
@@ -1392,9 +1385,6 @@ ApplyPatch security-yama-Remove-unnecessary-selects-from-Kconfi.patch
ApplyPatch mfd-rtsx_usb-prevent-DMA-from-stack.patch
-#rhbz 1199312
-ApplyPatch Revert-cpupower-Makefile-change-to-help-run-the-tool.patch
-
#rhbz 1200777 1200778
ApplyPatch Input-synaptics-split-synaptics_resolution-query-fir.patch
ApplyPatch Input-synaptics-log-queried-and-quirked-dimension-va.patch
@@ -1412,9 +1402,6 @@ ApplyPatch Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch
ApplyPatch Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch
ApplyPatch Revert-Input-synaptics-use-dmax-in-input_mt_assign_s.patch
-#CVE-2015-2150 rhbz 1196266 1200397
-ApplyPatch xen-pciback-limit-guest-control-of-command-register.patch
-
#CVE-2014-8159 rhbz 1181166 1200950
ApplyPatch IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch
@@ -1423,10 +1410,8 @@ ApplyPatch HID-multitouch-add-support-of-clickpads.patch
%if 0%{?aarch64patches}
ApplyPatch kernel-arm64.patch
-ApplyPatch arm64-revert-tlb-rcu_table_free.patch
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
ApplyPatch kernel-arm64.patch -R
-ApplyPatch arm64-revert-tlb-rcu_table_free.patch -R
%endif
%endif
@@ -2280,6 +2265,11 @@ fi
#
#
%changelog
+* Mon Mar 16 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.0.0-0.rc4.git0.1
+- Linux v4.0-rc4
+- Drop arm64 RCU revert patch. Should be fixed properly upstream now.
+- Disable debugging options.
+
* Sun Mar 15 2015 Jarod Wilson <jwilson@fedoraproject.org>
- Fix kernel-tools sub-packages for variant builds
diff --git a/sources b/sources
index 74987a045..c7536347c 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,2 @@
-ea00d3ccc1249e1d068c96eb090a8cec linux-4.0-rc3.tar.xz
-2d0e6d7e3c2ef9968f929ec031a36f93 perf-man-4.0-rc3.tar.gz
-30f8cfa798597dc3afce1f5e0986f215 patch-4.0-rc3-git2.xz
+0e37c076159538ff882f190d87fe9798 linux-4.0-rc4.tar.xz
+53996d49f76b39851ab26efd8c70fe53 perf-man-4.0-rc4.tar.gz
diff --git a/xen-pciback-limit-guest-control-of-command-register.patch b/xen-pciback-limit-guest-control-of-command-register.patch
deleted file mode 100644
index 87600462d..000000000
--- a/xen-pciback-limit-guest-control-of-command-register.patch
+++ /dev/null
@@ -1,156 +0,0 @@
-From: Jan Beulich <JBeulich@suse.com>
-Date: Wed, 11 Mar 2015 13:51:17 +0000
-Subject: [PATCH] xen-pciback: limit guest control of command register
-
-Otherwise the guest can abuse that control to cause e.g. PCIe
-Unsupported Request responses (by disabling memory and/or I/O decoding
-and subsequently causing [CPU side] accesses to the respective address
-ranges), which (depending on system configuration) may be fatal to the
-host.
-
-Note that to alter any of the bits collected together as
-PCI_COMMAND_GUEST permissive mode is now required to be enabled
-globally or on the specific device.
-
-This is CVE-2015-2150 / XSA-120.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
----
- drivers/xen/xen-pciback/conf_space.c | 2 +-
- drivers/xen/xen-pciback/conf_space.h | 2 +
- drivers/xen/xen-pciback/conf_space_header.c | 61 +++++++++++++++++++++++------
- 3 files changed, 51 insertions(+), 14 deletions(-)
-
-diff --git a/drivers/xen/xen-pciback/conf_space.c b/drivers/xen/xen-pciback/conf_space.c
-index 46ae0f9f02ad..75fe3d466515 100644
---- a/drivers/xen/xen-pciback/conf_space.c
-+++ b/drivers/xen/xen-pciback/conf_space.c
-@@ -16,7 +16,7 @@
- #include "conf_space.h"
- #include "conf_space_quirks.h"
-
--static bool permissive;
-+bool permissive;
- module_param(permissive, bool, 0644);
-
- /* This is where xen_pcibk_read_config_byte, xen_pcibk_read_config_word,
-diff --git a/drivers/xen/xen-pciback/conf_space.h b/drivers/xen/xen-pciback/conf_space.h
-index e56c934ad137..2e1d73d1d5d0 100644
---- a/drivers/xen/xen-pciback/conf_space.h
-+++ b/drivers/xen/xen-pciback/conf_space.h
-@@ -64,6 +64,8 @@ struct config_field_entry {
- void *data;
- };
-
-+extern bool permissive;
-+
- #define OFFSET(cfg_entry) ((cfg_entry)->base_offset+(cfg_entry)->field->offset)
-
- /* Add fields to a device - the add_fields macro expects to get a pointer to
-diff --git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
-index c5ee82587e8c..2d7369391472 100644
---- a/drivers/xen/xen-pciback/conf_space_header.c
-+++ b/drivers/xen/xen-pciback/conf_space_header.c
-@@ -11,6 +11,10 @@
- #include "pciback.h"
- #include "conf_space.h"
-
-+struct pci_cmd_info {
-+ u16 val;
-+};
-+
- struct pci_bar_info {
- u32 val;
- u32 len_val;
-@@ -20,22 +24,36 @@ struct pci_bar_info {
- #define is_enable_cmd(value) ((value)&(PCI_COMMAND_MEMORY|PCI_COMMAND_IO))
- #define is_master_cmd(value) ((value)&PCI_COMMAND_MASTER)
-
--static int command_read(struct pci_dev *dev, int offset, u16 *value, void *data)
-+/* Bits guests are allowed to control in permissive mode. */
-+#define PCI_COMMAND_GUEST (PCI_COMMAND_MASTER|PCI_COMMAND_SPECIAL| \
-+ PCI_COMMAND_INVALIDATE|PCI_COMMAND_VGA_PALETTE| \
-+ PCI_COMMAND_WAIT|PCI_COMMAND_FAST_BACK)
-+
-+static void *command_init(struct pci_dev *dev, int offset)
- {
-- int i;
-- int ret;
--
-- ret = xen_pcibk_read_config_word(dev, offset, value, data);
-- if (!pci_is_enabled(dev))
-- return ret;
--
-- for (i = 0; i < PCI_ROM_RESOURCE; i++) {
-- if (dev->resource[i].flags & IORESOURCE_IO)
-- *value |= PCI_COMMAND_IO;
-- if (dev->resource[i].flags & IORESOURCE_MEM)
-- *value |= PCI_COMMAND_MEMORY;
-+ struct pci_cmd_info *cmd = kmalloc(sizeof(*cmd), GFP_KERNEL);
-+ int err;
-+
-+ if (!cmd)
-+ return ERR_PTR(-ENOMEM);
-+
-+ err = pci_read_config_word(dev, PCI_COMMAND, &cmd->val);
-+ if (err) {
-+ kfree(cmd);
-+ return ERR_PTR(err);
- }
-
-+ return cmd;
-+}
-+
-+static int command_read(struct pci_dev *dev, int offset, u16 *value, void *data)
-+{
-+ int ret = pci_read_config_word(dev, offset, value);
-+ const struct pci_cmd_info *cmd = data;
-+
-+ *value &= PCI_COMMAND_GUEST;
-+ *value |= cmd->val & ~PCI_COMMAND_GUEST;
-+
- return ret;
- }
-
-@@ -43,6 +61,8 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
- {
- struct xen_pcibk_dev_data *dev_data;
- int err;
-+ u16 val;
-+ struct pci_cmd_info *cmd = data;
-
- dev_data = pci_get_drvdata(dev);
- if (!pci_is_enabled(dev) && is_enable_cmd(value)) {
-@@ -83,6 +103,19 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
- }
- }
-
-+ cmd->val = value;
-+
-+ if (!permissive && (!dev_data || !dev_data->permissive))
-+ return 0;
-+
-+ /* Only allow the guest to control certain bits. */
-+ err = pci_read_config_word(dev, offset, &val);
-+ if (err || val == value)
-+ return err;
-+
-+ value &= PCI_COMMAND_GUEST;
-+ value |= val & ~PCI_COMMAND_GUEST;
-+
- return pci_write_config_word(dev, offset, value);
- }
-
-@@ -282,6 +315,8 @@ static const struct config_field header_common[] = {
- {
- .offset = PCI_COMMAND,
- .size = 2,
-+ .init = command_init,
-+ .release = bar_release,
- .u.w.read = command_read,
- .u.w.write = command_write,
- },
---
-2.1.0
-