From 751ca082066d75574e94c2b02e95be5619039481 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Sun, 13 Apr 2014 16:50:45 -0400 Subject: [PATCH] Linux v3.14-12812-g321d03c86732 --- ...6-efi-Fix-boot-failure-with-EFI-stub.patch | 43 ------- ...ct-EFI-boot-stub-use-of-code32_start.patch | 104 ----------------- ...-file-handle-to-efi_file_-read-close.patch | 107 ------------------ ...-warning-with-reclaim-lock-inversion.patch | 79 ------------- config-powerpc64 | 1 + config-powerpc64p7 | 1 + kernel.spec | 17 +-- sources | 2 +- 8 files changed, 7 insertions(+), 347 deletions(-) delete mode 100644 0001-x86-efi-Fix-boot-failure-with-EFI-stub.patch delete mode 100644 0002-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch delete mode 100644 0003-efi-Pass-correct-file-handle-to-efi_file_-read-close.patch delete mode 100644 btrfs-fix-lockdep-warning-with-reclaim-lock-inversion.patch diff --git a/0001-x86-efi-Fix-boot-failure-with-EFI-stub.patch b/0001-x86-efi-Fix-boot-failure-with-EFI-stub.patch deleted file mode 100644 index e23f14f81..000000000 --- a/0001-x86-efi-Fix-boot-failure-with-EFI-stub.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 396f1a08db212138418b38f784e4bbe516d2fdb2 Mon Sep 17 00:00:00 2001 -From: Matt Fleming -Date: Thu, 10 Apr 2014 13:30:13 +0100 -Subject: [PATCH 1/3] x86/efi: Fix boot failure with EFI stub - -commit 54b52d872680 ("x86/efi: Build our own EFI services pointer -table") introduced a regression because the 64-bit file_size() -implementation passed a pointer to a 32-bit data object, instead of a -pointer to a 64-bit object. - -Because the firmware treats the object as 64-bits regardless it was -reading random values from the stack for the upper 32-bits. - -This resulted in people being unable to boot their machines, after -seeing the following error messages, - - Failed to get file info size - Failed to alloc highmem for files - -Reported-by: Dzmitry Sledneu -Reported-by: Koen Kooi -Tested-by: Koen Kooi -Signed-off-by: Matt Fleming ---- - arch/x86/boot/compressed/eboot.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c -index 1e6146137f8e..280165524ee4 100644 ---- a/arch/x86/boot/compressed/eboot.c -+++ b/arch/x86/boot/compressed/eboot.c -@@ -112,7 +112,7 @@ __file_size64(void *__fh, efi_char16_t *filename_16, - efi_file_info_t *info; - efi_status_t status; - efi_guid_t info_guid = EFI_FILE_INFO_ID; -- u32 info_sz; -+ u64 info_sz; - - status = efi_early->call((unsigned long)fh->open, fh, &h, filename_16, - EFI_FILE_MODE_READ, (u64)0); --- -1.9.0 - diff --git a/0002-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch b/0002-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch deleted file mode 100644 index ed7f95617..000000000 --- a/0002-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 7e8213c1f3acc064aef37813a39f13cbfe7c3ce7 Mon Sep 17 00:00:00 2001 -From: Matt Fleming -Date: Tue, 8 Apr 2014 13:14:00 +0100 -Subject: [PATCH 2/3] x86/efi: Correct EFI boot stub use of code32_start -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -code32_start should point at the start of the protected mode code, and -*not* at the beginning of the bzImage. This is much easier to do in -assembly so document that callers of make_boot_params() need to fill out -code32_start. - -The fallout from this bug is that we would end up relocating the image -but copying the image at some offset, resulting in what appeared to be -memory corruption. - -Reported-by: Thomas Bächler -Signed-off-by: Matt Fleming ---- - arch/x86/boot/compressed/eboot.c | 5 +++-- - arch/x86/boot/compressed/head_32.S | 8 ++------ - arch/x86/boot/compressed/head_64.S | 9 +++------ - 3 files changed, 8 insertions(+), 14 deletions(-) - -diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c -index 280165524ee4..91d17007323b 100644 ---- a/arch/x86/boot/compressed/eboot.c -+++ b/arch/x86/boot/compressed/eboot.c -@@ -1016,6 +1016,9 @@ void setup_graphics(struct boot_params *boot_params) - * Because the x86 boot code expects to be passed a boot_params we - * need to create one ourselves (usually the bootloader would create - * one for us). -+ * -+ * The caller is responsible for filling out ->code32_start in the -+ * returned boot_params. - */ - struct boot_params *make_boot_params(struct efi_config *c) - { -@@ -1081,8 +1084,6 @@ struct boot_params *make_boot_params(struct efi_config *c) - hdr->vid_mode = 0xffff; - hdr->boot_flag = 0xAA55; - -- hdr->code32_start = (__u64)(unsigned long)image->image_base; -- - hdr->type_of_loader = 0x21; - - /* Convert unicode cmdline to ascii */ -diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S -index de9d4200d305..cbed1407a5cd 100644 ---- a/arch/x86/boot/compressed/head_32.S -+++ b/arch/x86/boot/compressed/head_32.S -@@ -59,6 +59,7 @@ ENTRY(efi_pe_entry) - call make_boot_params - cmpl $0, %eax - je fail -+ movl %esi, BP_code32_start(%eax) - popl %ecx - pushl %eax - pushl %ecx -@@ -90,12 +91,7 @@ fail: - hlt - jmp fail - 2: -- call 3f --3: -- popl %eax -- subl $3b, %eax -- subl BP_pref_address(%esi), %eax -- add BP_code32_start(%esi), %eax -+ movl BP_code32_start(%esi), %eax - leal preferred_addr(%eax), %eax - jmp *%eax - -diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S -index 57e58a5fa210..0d558ee899ae 100644 ---- a/arch/x86/boot/compressed/head_64.S -+++ b/arch/x86/boot/compressed/head_64.S -@@ -261,6 +261,8 @@ ENTRY(efi_pe_entry) - cmpq $0,%rax - je fail - mov %rax, %rsi -+ leaq startup_32(%rip), %rax -+ movl %eax, BP_code32_start(%rsi) - jmp 2f /* Skip the relocation */ - - handover_entry: -@@ -284,12 +286,7 @@ fail: - hlt - jmp fail - 2: -- call 3f --3: -- popq %rax -- subq $3b, %rax -- subq BP_pref_address(%rsi), %rax -- add BP_code32_start(%esi), %eax -+ movl BP_code32_start(%esi), %eax - leaq preferred_addr(%rax), %rax - jmp *%rax - --- -1.9.0 - diff --git a/0003-efi-Pass-correct-file-handle-to-efi_file_-read-close.patch b/0003-efi-Pass-correct-file-handle-to-efi_file_-read-close.patch deleted file mode 100644 index b678cc925..000000000 --- a/0003-efi-Pass-correct-file-handle-to-efi_file_-read-close.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 47514c996fac5e6f13ef3a4c5e23f1c5cffabb7b Mon Sep 17 00:00:00 2001 -From: Matt Fleming -Date: Thu, 10 Apr 2014 14:11:45 +0100 -Subject: [PATCH 3/3] efi: Pass correct file handle to efi_file_{read,close} - -We're currently passing the file handle for the root file system to -efi_file_read() and efi_file_close(), instead of the file handle for the -file we wish to read/close. - -While this has worked up until now, it seems that it has only been by -pure luck. Olivier explains, - - "The issue is the UEFI Fat driver might return the same function for - 'fh->read()' and 'h->read()'. While in our case it does not work with - a different implementation of EFI_SIMPLE_FILE_SYSTEM_PROTOCOL. In our - case, we return a different pointer when reading a directory and - reading a file." - -Fixing this actually clears up the two functions because we can drop one -of the arguments, and instead only pass a file 'handle' argument. - -Reported-by: Olivier Martin -Reviewed-by: Olivier Martin -Reviewed-by: Mark Rutland -Cc: Leif Lindholm -Signed-off-by: Matt Fleming ---- - arch/x86/boot/compressed/eboot.c | 12 ++++++------ - drivers/firmware/efi/efi-stub-helper.c | 6 +++--- - 2 files changed, 9 insertions(+), 9 deletions(-) - -diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c -index 91d17007323b..4703a6c4b8e3 100644 ---- a/arch/x86/boot/compressed/eboot.c -+++ b/arch/x86/boot/compressed/eboot.c -@@ -167,31 +167,31 @@ efi_file_size(efi_system_table_t *sys_table, void *__fh, - } - - static inline efi_status_t --efi_file_read(void *__fh, void *handle, unsigned long *size, void *addr) -+efi_file_read(void *handle, unsigned long *size, void *addr) - { - unsigned long func; - - if (efi_early->is64) { -- efi_file_handle_64_t *fh = __fh; -+ efi_file_handle_64_t *fh = handle; - - func = (unsigned long)fh->read; - return efi_early->call(func, handle, size, addr); - } else { -- efi_file_handle_32_t *fh = __fh; -+ efi_file_handle_32_t *fh = handle; - - func = (unsigned long)fh->read; - return efi_early->call(func, handle, size, addr); - } - } - --static inline efi_status_t efi_file_close(void *__fh, void *handle) -+static inline efi_status_t efi_file_close(void *handle) - { - if (efi_early->is64) { -- efi_file_handle_64_t *fh = __fh; -+ efi_file_handle_64_t *fh = handle; - - return efi_early->call((unsigned long)fh->close, handle); - } else { -- efi_file_handle_32_t *fh = __fh; -+ efi_file_handle_32_t *fh = handle; - - return efi_early->call((unsigned long)fh->close, handle); - } -diff --git a/drivers/firmware/efi/efi-stub-helper.c b/drivers/firmware/efi/efi-stub-helper.c -index ff50aeebf0d9..2c41eaece2c1 100644 ---- a/drivers/firmware/efi/efi-stub-helper.c -+++ b/drivers/firmware/efi/efi-stub-helper.c -@@ -397,7 +397,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, - else - chunksize = size; - -- status = efi_file_read(fh, files[j].handle, -+ status = efi_file_read(files[j].handle, - &chunksize, - (void *)addr); - if (status != EFI_SUCCESS) { -@@ -408,7 +408,7 @@ static efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, - size -= chunksize; - } - -- efi_file_close(fh, files[j].handle); -+ efi_file_close(files[j].handle); - } - - } -@@ -425,7 +425,7 @@ free_file_total: - - close_handles: - for (k = j; k < i; k++) -- efi_file_close(fh, files[k].handle); -+ efi_file_close(files[k].handle); - free_files: - efi_call_early(free_pool, files); - fail: --- -1.9.0 - diff --git a/btrfs-fix-lockdep-warning-with-reclaim-lock-inversion.patch b/btrfs-fix-lockdep-warning-with-reclaim-lock-inversion.patch deleted file mode 100644 index c158729d3..000000000 --- a/btrfs-fix-lockdep-warning-with-reclaim-lock-inversion.patch +++ /dev/null @@ -1,79 +0,0 @@ -From patchwork Wed Mar 26 18:11:26 2014 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: btrfs: fix lockdep warning with reclaim lock inversion -From: Jeff Mahoney -X-Patchwork-Id: 3894781 -Message-Id: <5333184E.3090609@suse.com> -To: linux-btrfs -Date: Wed, 26 Mar 2014 14:11:26 -0400 - -When encountering memory pressure, testers have run into the following -lockdep warning. It was caused by __link_block_group calling kobject_add -with the groups_sem held. kobject_add calls kvasprintf with GFP_KERNEL, -which gets us into reclaim context. The kobject doesn't actually need -to be added under the lock -- it just needs to ensure that it's only -added for the first block group to be linked. - - -========================================================= -[ INFO: possible irq lock inversion dependency detected ] -3.14.0-rc8-default #1 Not tainted ---------------------------------------------------------- -kswapd0/169 just changed the state of lock: - (&delayed_node->mutex){+.+.-.}, at: [] __btrfs_release_delayed_node+0x3a/0x200 [btrfs] -but this lock took another, RECLAIM_FS-unsafe lock in the past: - (&found->groups_sem){+++++.} - -and interrupts could create inverse lock ordering between them. - -other info that might help us debug this: - Possible interrupt unsafe locking scenario: - CPU0 CPU1 - ---- ---- - lock(&found->groups_sem); - local_irq_disable(); - lock(&delayed_node->mutex); - lock(&found->groups_sem); - - lock(&delayed_node->mutex); - - *** DEADLOCK *** -2 locks held by kswapd0/169: - #0: (shrinker_rwsem){++++..}, at: [] shrink_slab+0x3a/0x160 - #1: (&type->s_umount_key#27){++++..}, at: [] grab_super_passive+0x3f/0x90 - -Signed-off-by: Jeff Mahoney ---- - fs/btrfs/extent-tree.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - ---- a/fs/btrfs/extent-tree.c -+++ b/fs/btrfs/extent-tree.c -@@ -8343,9 +8343,15 @@ static void __link_block_group(struct bt - struct btrfs_block_group_cache *cache) - { - int index = get_block_group_index(cache); -+ bool first = false; - - down_write(&space_info->groups_sem); -- if (list_empty(&space_info->block_groups[index])) { -+ if (list_empty(&space_info->block_groups[index])) -+ first = true; -+ list_add_tail(&cache->list, &space_info->block_groups[index]); -+ up_write(&space_info->groups_sem); -+ -+ if (first) { - struct kobject *kobj = &space_info->block_group_kobjs[index]; - int ret; - -@@ -8357,8 +8363,6 @@ static void __link_block_group(struct bt - kobject_put(&space_info->kobj); - } - } -- list_add_tail(&cache->list, &space_info->block_groups[index]); -- up_write(&space_info->groups_sem); - } - - static struct btrfs_block_group_cache * diff --git a/config-powerpc64 b/config-powerpc64 index e5d6d8b1b..7f4133593 100644 --- a/config-powerpc64 +++ b/config-powerpc64 @@ -16,6 +16,7 @@ CONFIG_POWERNV_MSI=y CONFIG_PPC_POWERNV_RTAS=y CONFIG_SENSORS_IBMPOWERNV=y CONFIG_HW_RANDOM_POWERNV=m +CONFIG_POWERNV_CPUFREQ=m CONFIG_SCOM_DEBUGFS=y # CONFIG_PPC_PASEMI is not set # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set diff --git a/config-powerpc64p7 b/config-powerpc64p7 index 8981119e0..d8ce7e0b1 100644 --- a/config-powerpc64p7 +++ b/config-powerpc64p7 @@ -12,6 +12,7 @@ CONFIG_POWERNV_MSI=y CONFIG_PPC_POWERNV_RTAS=y CONFIG_HW_RANDOM_POWERNV=m CONFIG_SENSORS_IBMPOWERNV=y +CONFIG_POWERNV_CPUFREQ=m CONFIG_SCOM_DEBUGFS=y # CONFIG_PPC_PASEMI is not set # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set diff --git a/kernel.spec b/kernel.spec index 64794c193..d886e7c04 100644 --- a/kernel.spec +++ b/kernel.spec @@ -61,7 +61,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 0 # The git snapshot level -%define gitrev 12 +%define gitrev 13 # Set rpm version accordingly %define rpmversion 3.%{upstream_sublevel}.0 %endif @@ -628,7 +628,6 @@ Patch22000: weird-root-dentry-name-debug.patch Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch Patch25058: net-cpts-Add-includes-for-ETH_HLEN-and-VLAN_HLEN-def.patch -Patch25059: btrfs-fix-lockdep-warning-with-reclaim-lock-inversion.patch Patch25061: gpio-ACPI-Dont-crash-on-NULL-chip-dev.patch #CVE-2014-0155 rhbz 1081589 1085016 @@ -637,11 +636,6 @@ Patch25060: KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch #rhbz 1048314 Patch25062: 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch -#rhbz 1085349 -Patch25063: 0001-x86-efi-Fix-boot-failure-with-EFI-stub.patch -Patch25064: 0002-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch -Patch25065: 0003-efi-Pass-correct-file-handle-to-efi_file_-read-close.patch - # END OF PATCH DEFINITIONS %endif @@ -1279,7 +1273,6 @@ ApplyPatch ath9k_rx_dma_stop_check.patch ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch ApplyPatch net-cpts-Add-includes-for-ETH_HLEN-and-VLAN_HLEN-def.patch -ApplyPatch btrfs-fix-lockdep-warning-with-reclaim-lock-inversion.patch ApplyPatch gpio-ACPI-Dont-crash-on-NULL-chip-dev.patch #CVE-2014-0155 rhbz 1081589 1085016 @@ -1288,11 +1281,6 @@ ApplyPatch KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch #rhbz 1048314 ApplyPatch 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch -#rhbz 1085349 -ApplyPatch 0001-x86-efi-Fix-boot-failure-with-EFI-stub.patch -ApplyPatch 0002-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch -ApplyPatch 0003-efi-Pass-correct-file-handle-to-efi_file_-read-close.patch - # END OF PATCH APPLICATIONS %endif @@ -2072,6 +2060,9 @@ fi # ||----w | # || || %changelog +* Sun Apr 13 2014 Josh Boyer - 3.15.0-0.rc0.git13.1 +- Linux v3.14-12812-g321d03c86732 + * Fri Apr 11 2014 Josh Boyer - 3.15.0-0.rc0.git12.1 - Linux v3.14-12380-g9e897e13bd46 - Add queued urgent efi fixes (rhbz 1085349) diff --git a/sources b/sources index 06f3f04a6..06e28ab22 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ b621207b3f6ecbb67db18b13258f8ea8 linux-3.14.tar.xz d36baf2d62de5aa61f10a976d00d2d2a perf-man-3.14.tar.gz -8dbc7d3d2602f2fa58571cd1626f21b8 patch-3.14-git12.xz +6e344ea5434bd203d95970ca30258570 patch-3.14-git13.xz