All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Luis Henriques <luis.henriques@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Luis Henriques <luis.henriques@canonical.com>
Subject: [PATCH 3.16.y-ckt 193/216] arm64: kernel: refactor the CPU suspend API for retention states
Date: Mon, 12 Jan 2015 18:29:31 +0000	[thread overview]
Message-ID: <1421087394-2712-81-git-send-email-luis.henriques@canonical.com> (raw)
In-Reply-To: <1421085933-32536-1-git-send-email-luis.henriques@canonical.com>

3.16.7-ckt4 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

commit 714f59925595b9c2ea9c22b107b340d38e3b3bc9 upstream.

CPU suspend is the standard kernel interface to be used to enter
low-power states on ARM64 systems. Current cpu_suspend implementation
by default assumes that all low power states are losing the CPU context,
so the CPU registers must be saved and cleaned to DRAM upon state
entry. Furthermore, the current cpu_suspend() implementation assumes
that if the CPU suspend back-end method returns when called, this has
to be considered an error regardless of the return code (which can be
successful) since the CPU was not expected to return from a code path that
is different from cpu_resume code path - eg returning from the reset vector.

All in all this means that the current API does not cope well with low-power
states that preserve the CPU context when entered (ie retention states),
since first of all the context is saved for nothing on state entry for
those states and a successful state entry can return as a normal function
return, which is considered an error by the current CPU suspend
implementation.

This patch refactors the cpu_suspend() API so that it can be split in
two separate functionalities. The arm64 cpu_suspend API just provides
a wrapper around CPU suspend operation hook. A new function is
introduced (for architecture code use only) for states that require
context saving upon entry:

__cpu_suspend(unsigned long arg, int (*fn)(unsigned long))

__cpu_suspend() saves the context on function entry and calls the
so called suspend finisher (ie fn) to complete the suspend operation.
The finisher is not expected to return, unless it fails in which case
the error is propagated back to the __cpu_suspend caller.

The API refactoring results in the following pseudo code call sequence for a
suspending CPU, when triggered from a kernel subsystem:

/*
 * int cpu_suspend(unsigned long idx)
 * @idx: idle state index
 */
{
-> cpu_suspend(idx)
	|---> CPU operations suspend hook called, if present
		|--> if (retention_state)
			|--> direct suspend back-end call (eg PSCI suspend)
		     else
			|--> __cpu_suspend(idx, &back_end_finisher);
}

By refactoring the cpu_suspend API this way, the CPU operations back-end
has a chance to detect whether idle states require state saving or not
and can call the required suspend operations accordingly either through
simple function call or indirectly through __cpu_suspend() which carries out
state saving and suspend finisher dispatching to complete idle state entry.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
[ luis: 3.16-stable prereq for
  f43c27188a49 "arm64: kernel: fix __cpu_suspend mm switch on warm-boot" ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/arm64/include/asm/suspend.h |  1 +
 arch/arm64/kernel/sleep.S        | 47 ++++++++++++++++++++++++++++-----------
 arch/arm64/kernel/suspend.c      | 48 ++++++++++++++++++++++++----------------
 3 files changed, 64 insertions(+), 32 deletions(-)

diff --git a/arch/arm64/include/asm/suspend.h b/arch/arm64/include/asm/suspend.h
index e9c149c042e0..456d67c1f0fa 100644
--- a/arch/arm64/include/asm/suspend.h
+++ b/arch/arm64/include/asm/suspend.h
@@ -21,6 +21,7 @@ struct sleep_save_sp {
 	phys_addr_t save_ptr_stash_phys;
 };
 
+extern int __cpu_suspend(unsigned long arg, int (*fn)(unsigned long));
 extern void cpu_resume(void);
 extern int cpu_suspend(unsigned long);
 
diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S
index b1925729c692..a564b440416a 100644
--- a/arch/arm64/kernel/sleep.S
+++ b/arch/arm64/kernel/sleep.S
@@ -49,28 +49,39 @@
 	orr	\dst, \dst, \mask		// dst|=(aff3>>rs3)
 	.endm
 /*
- * Save CPU state for a suspend.  This saves callee registers, and allocates
- * space on the kernel stack to save the CPU specific registers + some
- * other data for resume.
+ * Save CPU state for a suspend and execute the suspend finisher.
+ * On success it will return 0 through cpu_resume - ie through a CPU
+ * soft/hard reboot from the reset vector.
+ * On failure it returns the suspend finisher return value or force
+ * -EOPNOTSUPP if the finisher erroneously returns 0 (the suspend finisher
+ * is not allowed to return, if it does this must be considered failure).
+ * It saves callee registers, and allocates space on the kernel stack
+ * to save the CPU specific registers + some other data for resume.
  *
  *  x0 = suspend finisher argument
+ *  x1 = suspend finisher function pointer
  */
-ENTRY(__cpu_suspend)
+ENTRY(__cpu_suspend_enter)
 	stp	x29, lr, [sp, #-96]!
 	stp	x19, x20, [sp,#16]
 	stp	x21, x22, [sp,#32]
 	stp	x23, x24, [sp,#48]
 	stp	x25, x26, [sp,#64]
 	stp	x27, x28, [sp,#80]
+	/*
+	 * Stash suspend finisher and its argument in x20 and x19
+	 */
+	mov	x19, x0
+	mov	x20, x1
 	mov	x2, sp
 	sub	sp, sp, #CPU_SUSPEND_SZ	// allocate cpu_suspend_ctx
-	mov	x1, sp
+	mov	x0, sp
 	/*
-	 * x1 now points to struct cpu_suspend_ctx allocated on the stack
+	 * x0 now points to struct cpu_suspend_ctx allocated on the stack
 	 */
-	str	x2, [x1, #CPU_CTX_SP]
-	ldr	x2, =sleep_save_sp
-	ldr	x2, [x2, #SLEEP_SAVE_SP_VIRT]
+	str	x2, [x0, #CPU_CTX_SP]
+	ldr	x1, =sleep_save_sp
+	ldr	x1, [x1, #SLEEP_SAVE_SP_VIRT]
 #ifdef CONFIG_SMP
 	mrs	x7, mpidr_el1
 	ldr	x9, =mpidr_hash
@@ -82,11 +93,21 @@ ENTRY(__cpu_suspend)
 	ldp	w3, w4, [x9, #MPIDR_HASH_SHIFTS]
 	ldp	w5, w6, [x9, #(MPIDR_HASH_SHIFTS + 8)]
 	compute_mpidr_hash x8, x3, x4, x5, x6, x7, x10
-	add	x2, x2, x8, lsl #3
+	add	x1, x1, x8, lsl #3
 #endif
-	bl	__cpu_suspend_finisher
+	bl	__cpu_suspend_save
+	/*
+	 * Grab suspend finisher in x20 and its argument in x19
+	 */
+	mov	x0, x19
+	mov	x1, x20
+	/*
+	 * We are ready for power down, fire off the suspend finisher
+	 * in x1, with argument in x0
+	 */
+	blr	x1
         /*
-	 * Never gets here, unless suspend fails.
+	 * Never gets here, unless suspend finisher fails.
 	 * Successful cpu_suspend should return from cpu_resume, returning
 	 * through this code path is considered an error
 	 * If the return value is set to 0 force x0 = -EOPNOTSUPP
@@ -103,7 +124,7 @@ ENTRY(__cpu_suspend)
 	ldp	x27, x28, [sp, #80]
 	ldp	x29, lr, [sp], #96
 	ret
-ENDPROC(__cpu_suspend)
+ENDPROC(__cpu_suspend_enter)
 	.ltorg
 
 /*
diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c
index 55a99b9a97e0..13ad4dbb1615 100644
--- a/arch/arm64/kernel/suspend.c
+++ b/arch/arm64/kernel/suspend.c
@@ -9,22 +9,19 @@
 #include <asm/suspend.h>
 #include <asm/tlbflush.h>
 
-extern int __cpu_suspend(unsigned long);
+extern int __cpu_suspend_enter(unsigned long arg, int (*fn)(unsigned long));
 /*
- * This is called by __cpu_suspend() to save the state, and do whatever
+ * This is called by __cpu_suspend_enter() to save the state, and do whatever
  * flushing is required to ensure that when the CPU goes to sleep we have
  * the necessary data available when the caches are not searched.
  *
- * @arg: Argument to pass to suspend operations
- * @ptr: CPU context virtual address
- * @save_ptr: address of the location where the context physical address
- *            must be saved
+ * ptr: CPU context virtual address
+ * save_ptr: address of the location where the context physical address
+ *           must be saved
  */
-int __cpu_suspend_finisher(unsigned long arg, struct cpu_suspend_ctx *ptr,
-			   phys_addr_t *save_ptr)
+void notrace __cpu_suspend_save(struct cpu_suspend_ctx *ptr,
+				phys_addr_t *save_ptr)
 {
-	int cpu = smp_processor_id();
-
 	*save_ptr = virt_to_phys(ptr);
 
 	cpu_do_suspend(ptr);
@@ -35,8 +32,6 @@ int __cpu_suspend_finisher(unsigned long arg, struct cpu_suspend_ctx *ptr,
 	 */
 	__flush_dcache_area(ptr, sizeof(*ptr));
 	__flush_dcache_area(save_ptr, sizeof(*save_ptr));
-
-	return cpu_ops[cpu]->cpu_suspend(arg);
 }
 
 /*
@@ -56,15 +51,15 @@ void __init cpu_suspend_set_dbg_restorer(void (*hw_bp_restore)(void *))
 }
 
 /**
- * cpu_suspend
+ * cpu_suspend() - function to enter a low-power state
+ * @arg: argument to pass to CPU suspend operations
  *
- * @arg: argument to pass to the finisher function
+ * Return: 0 on success, -EOPNOTSUPP if CPU suspend hook not initialized, CPU
+ * operations back-end error code otherwise.
  */
 int cpu_suspend(unsigned long arg)
 {
-	struct mm_struct *mm = current->active_mm;
-	int ret, cpu = smp_processor_id();
-	unsigned long flags;
+	int cpu = smp_processor_id();
 
 	/*
 	 * If cpu_ops have not been registered or suspend
@@ -72,6 +67,21 @@ int cpu_suspend(unsigned long arg)
 	 */
 	if (!cpu_ops[cpu] || !cpu_ops[cpu]->cpu_suspend)
 		return -EOPNOTSUPP;
+	return cpu_ops[cpu]->cpu_suspend(arg);
+}
+
+/*
+ * __cpu_suspend
+ *
+ * arg: argument to pass to the finisher function
+ * fn: finisher function pointer
+ *
+ */
+int __cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
+{
+	struct mm_struct *mm = current->active_mm;
+	int ret;
+	unsigned long flags;
 
 	/*
 	 * From this point debug exceptions are disabled to prevent
@@ -86,7 +96,7 @@ int cpu_suspend(unsigned long arg)
 	 * page tables, so that the thread address space is properly
 	 * set-up on function return.
 	 */
-	ret = __cpu_suspend(arg);
+	ret = __cpu_suspend_enter(arg, fn);
 	if (ret == 0) {
 		cpu_switch_mm(mm->pgd, mm);
 		flush_tlb_all();
@@ -95,7 +105,7 @@ int cpu_suspend(unsigned long arg)
 		 * Restore per-cpu offset before any kernel
 		 * subsystem relying on it has a chance to run.
 		 */
-		set_my_cpu_offset(per_cpu_offset(cpu));
+		set_my_cpu_offset(per_cpu_offset(smp_processor_id()));
 
 		/*
 		 * Restore HW breakpoint registers to sane values
-- 
2.1.4


  parent reply	other threads:[~2015-01-12 18:30 UTC|newest]

Thread overview: 237+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-12 18:01 [3.16.y-ckt stable] Linux 3.16.7-ckt4 stable review Luis Henriques
2015-01-12 18:01 ` [PATCH 3.16.y-ckt 001/216] drm/i915: don't warn if backlight unexpectedly enabled Luis Henriques
2015-01-12 18:01 ` [PATCH 3.16.y-ckt 002/216] drm/i915/dp: only use training pattern 3 on platforms that support it Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 003/216] udptunnel: Add SKB_GSO_UDP_TUNNEL during gro_complete Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 004/216] s390/3215: fix hanging console issue Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 005/216] s390/3215: fix tty output containing tabs Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 006/216] btrfs: don't go readonly on existing qgroup items Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 007/216] regulator: anatop: Set default voltage selector for vddpu Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 008/216] KVM: s390: Fix size of monitor-class number field Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 009/216] [media] smiapp: Take mutex during PLL update in sensor initialisation Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 010/216] [media] smiapp-pll: Correct clock debug prints Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 011/216] Bluetooth: Fix LE connection timeout deadlock Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 012/216] [media] sound: simplify au0828 quirk table Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 013/216] [media] sound: Update au0828 quirks table Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 014/216] [media] af9005: fix kernel panic on init if compiled without IR Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 015/216] writeback: fix a subtle race condition in I_DIRTY clearing Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 016/216] usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 017/216] KVM: s390: Fix ipte locking Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 018/216] KVM: s390: flush CPU on load control Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 019/216] UBI: Fix double free after do_sync_erase() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 020/216] UBI: Fix invalid vfree() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 021/216] Drivers: hv: util: make struct hv_do_fcopy match Hyper-V host messages Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 022/216] Drivers: hv: vmbus: Fix a race condition when unregistering a device Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 023/216] misc: genwqe: check for error from get_user_pages_fast() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 024/216] driver core: Fix unbalanced device reference in drivers_probe Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 025/216] drbd: merge_bvec_fn: properly remap bvm->bi_bdev Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 026/216] PCI: Restore detection of read-only BARs Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 027/216] scsi: correct return values for .eh_abort_handler implementations Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 028/216] drm/radeon: fix typo in CI dpm disable Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 029/216] ARM: tegra: Re-add removed SoC id macro to tegra_resume() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 030/216] arm64: Add COMPAT_HWCAP_LPAE Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 031/216] USB: qcserial: Add support for HP lt4112 LTE/HSPA+ Gobi 4G Modem Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 032/216] HID: usbhid: enable always-poll quirk for Elan Touchscreen 0103 Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 033/216] HID: yet another buggy ELAN touchscreen Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 034/216] dcache: fix kmemcheck warning in switch_names Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 035/216] genhd: check for int overflow in disk_expand_part_tbl() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 036/216] ftrace/x86: Add frames pointers to trampoline as necessary Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 037/216] drm/ttm: Avoid memory allocation from shrinker functions Luis Henriques
2015-01-12 18:02   ` Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 038/216] ASoC: sigmadsp: Refuse to load firmware files with a non-supported version Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 039/216] drm/radeon: work around a hw bug in MGCG on CIK Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 040/216] usb: gadget: at91_udc: move prepare clk into process context Luis Henriques
2015-01-14 13:37   ` Ben Hutchings
2015-01-14 13:53     ` Luis Henriques
2015-01-14 13:53       ` Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 041/216] Btrfs: make sure we wait on logged extents when fsycning two subvols Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 042/216] Btrfs: make sure logged extents complete in the current transaction V3 Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 043/216] Btrfs: do not move em to modified list when unpinning Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 044/216] ARM: mvebu: disable I/O coherency on non-SMP situations on Armada 370/375/38x/XP Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 045/216] megaraid_sas: corrected return of wait_event from abort frame path Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 046/216] ASoC: max98090: Fix ill-defined sidetone route Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 047/216] blk-mq: use 'nr_cpu_ids' as highest CPU ID count for hwq <-> cpu map Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 048/216] nfs41: fix nfs4_proc_layoutget error handling Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 049/216] cdc-acm: memory leak in error case Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 050/216] USB: cdc-acm: check for valid interfaces Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 051/216] [media] uvcvideo: Fix destruction order in uvc_delete() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 052/216] HID: i2c-hid: fix race condition reading reports Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 053/216] mfd: twl4030-power: Fix regression with missing compatible flag Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 054/216] mfd: tc6393xb: Fail ohci suspend if full state restore is required Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 055/216] tty: serial: men_z135_uart: Add terminating entry for men_z135_ids Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 056/216] serial: samsung: wait for transfer completion before clock disable Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 057/216] mmc: dw_mmc: avoid write to CDTHRCTL on older versions Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 058/216] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 059/216] n_tty: Fix read_buf race condition, increment read_head after pushing data Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 060/216] dm cache: only use overwrite optimisation for promotion when in writeback mode Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 061/216] dm cache: dirty flag was mistakenly being cleared when promoting via overwrite Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 062/216] dm bufio: fix memleak when using a dm_buffer's inline bio Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 063/216] ath9k_hw: fix hardware queue allocation Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 064/216] ath9k: fix BE/BK queue order Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 065/216] ath5k: fix hardware queue index assignment Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 066/216] iwlwifi: dvm: fix flush support for old firmware Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 067/216] iwlwifi: mvm: update values for Smart Fifo Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 068/216] iommu/vt-d: Fix an off-by-one bug in __domain_mapping() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 069/216] dm crypt: use memzero_explicit for on-stack buffer Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 070/216] mnt: Implicitly add MNT_NODEV on remount when it was implicitly added by mount Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 071/216] mnt: Update unprivileged remount test Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 072/216] umount: Disallow unprivileged mount force Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 073/216] md/raid5: fetch_block must fetch all the blocks handle_stripe_dirtying wants Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 074/216] drm/i915: Only warn the first time we attempt to mmio whilst suspended Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 075/216] drm/i915: Disallow pin ioctl completely for kms drivers Luis Henriques
2015-01-13 19:33   ` Luis Henriques
2015-01-13 19:33     ` Luis Henriques
2015-01-15 10:48     ` Luis Henriques
2015-01-15 10:48       ` Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 076/216] drm/vmwgfx: Fix error printout on signals pending Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 077/216] drm/vmwgfx: Fix fence event code Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 078/216] hp_accel: Add support for HP ZBook 15 Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 079/216] drm/radeon: check the right ring in radeon_evict_flags() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 080/216] swiotlb-xen: pass dev_addr to xen_dma_unmap_page and xen_dma_sync_single_for_cpu Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 081/216] swiotlb-xen: remove BUG_ON in xen_bus_to_phys Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 082/216] swiotlb-xen: call xen_dma_sync_single_for_device when appropriate Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 083/216] swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 084/216] [media] img-ir/hw: Always read data to clear buffer Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 085/216] [media] img-ir/hw: Fix potential deadlock stopping timer Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 086/216] powerpc/book3s: Fix partial invalidation of TLBs in MCE code Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 087/216] clocksource: arm_arch_timer: Change clocksource name if CP15 unavailable Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 088/216] clocksource: arch_timer: Fix code to use physical timers when requested Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 089/216] ALSA: hda - Fix built-in mic at resume on Lenovo Ideapad S210 Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 090/216] groups: Consolidate the setgroups permission checks Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 091/216] userns: Document what the invariant required for safe unprivileged mappings Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 092/216] can: peak_usb: fix memset() usage Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 093/216] can: peak_usb: fix cleanup sequence order in case of error during init Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 094/216] ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 095/216] KEYS: Fix stale key registration at error path Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 096/216] thermal: Fix error path in thermal_init() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 097/216] i2c: designware: Fix falling time bindings doc Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 098/216] drm/dp: retry AUX transactions 32 times (v1.1) Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 099/216] drm/fb_helper: move deferred fb checking into restore mode (v2) Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 100/216] xtensa: fix kmap_prot definition Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 101/216] blk-mq: Fix a use-after-free Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 102/216] blk-mq: Avoid that __bt_get_word() wraps multiple times Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 103/216] blk-mq: Fix a race between bt_clear_tag() and bt_get() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 104/216] fs: nfsd: Fix signedness bug in compare_blob Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 105/216] nfsd4: fix xdr4 inclusion of escaped char Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 106/216] nfsd4: fix xdr4 count of server in fs_location4 Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 107/216] userns: Don't allow setgroups until a gid mapping has been setablished Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 108/216] userns: Don't allow unprivileged creation of gid mappings Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 109/216] userns: Check euid no fsuid when establishing an unprivileged uid mapping Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 110/216] userns: Only allow the creator of the userns unprivileged mappings Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 111/216] userns: Rename id_map_mutex to userns_state_mutex Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 112/216] drm/i915: Don't complain about stolen conflicts on gen3 Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 113/216] x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 114/216] ALSA: hda - Add EAPD fixup for ASUS Z99He laptop Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 115/216] blk-mq: Fix uninitialized kobject at CPU hotplugging Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 116/216] ncpfs: return proper error from NCP_IOC_SETROOT ioctl Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 117/216] drivers/rtc/rtc-sirfsoc.c: move hardware initilization earlier in probe Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 118/216] rtc: omap: fix clock-source configuration Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 119/216] rtc: omap: fix missing wakealarm attribute Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 120/216] exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 121/216] x86_64, switch_to(): Load TLS descriptors before switching DS and ES Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 122/216] KVM: nVMX: Disable unrestricted mode if ept=0 Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 123/216] KVM: x86: em_ret_far overrides cpl Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 124/216] drm/i915: save/restore GMBUS freq across suspend/resume on gen4 Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 125/216] pstore-ram: Fix hangs by using write-combine mappings Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 126/216] pstore-ram: Allow optional mapping with pgprot_noncached Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 127/216] userns: Add a knob to disable setgroups on a per user namespace basis Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 128/216] userns: Allow setting gid_maps without privilege when setgroups is disabled Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 129/216] userns: Unbreak the unprivileged remount tests Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 130/216] HID: i2c-hid: prevent buffer overflow in early IRQ Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 131/216] mac80211: fix multicast LED blinking and counter Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 132/216] cfg80211: Fix 160 MHz channels with 80+80 and 160 MHz drivers Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 133/216] cfg80211: avoid mem leak on driver hint set Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 134/216] nl80211: check matches array length before acessing it Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 135/216] cfg80211: don't WARN about two consecutive Country IE hint Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 136/216] reiserfs: destroy allocated commit workqueue Luis Henriques
2015-01-12 18:28   ` Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 137/216] mtd: tests: abort torturetest on erase errors Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 138/216] tracing/sched: Check preempt_count() for current when reading task->state Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 139/216] x86/tls: Validate TLS entries to protect espfix Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 140/216] x86/tls: Disallow unusual TLS segments Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 141/216] ARC: [nsimosci] move peripherals to match model to FPGA Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 142/216] isofs: Fix infinite looping over CE entries Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 143/216] mac80211: free management frame keys when removing station Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 144/216] ceph: do_sync is never initialized Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 145/216] mnt: Fix a memory stomp in umount Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 146/216] ocfs2: fix journal commit deadlock Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 147/216] md/bitmap: always wait for writes on unplug Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 148/216] mmc: block: add newline to sysfs display of force_ro Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 149/216] mmc: omap_hsmmc: Fix UHS card with DDR50 support Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 150/216] mmc: sdhci-pci-o2micro: Fix Dell E5440 issue Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 151/216] dm space map metadata: fix sm_bootstrap_get_nr_blocks() Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 152/216] dm thin: fix a race in thin_dtr Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 153/216] ARM: mvebu: fix ordering in Armada 370 .dtsi Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 154/216] eCryptfs: Force RO mount when encrypted view is enabled Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 155/216] eCryptfs: Remove buggy and unnecessary write in file name decode routine Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 156/216] tcm_loop: Fix wrong I_T nexus association Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 157/216] clk: samsung: Fix double add of syscore ops after driver rebind Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 158/216] Revert "[SCSI] mpt2sas: Remove phys on topology change." Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 159/216] Revert "[SCSI] mpt3sas: Remove phys on topology change" Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 160/216] ASoC: pcm512x: Trigger auto-increment of register addresses on i2c Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 161/216] Btrfs: fix fs corruption on transaction abort if device supports discard Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 162/216] perf/x86/intel/uncore: Make sure only uncore events are collected Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 163/216] perf: Fix events installation during moving group Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 164/216] drm/i915: vlv: fix IRQ masking when uninstalling interrupts Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 165/216] iscsi,iser-target: Initiate termination only once Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 166/216] iser-target: Fix flush + disconnect completion handling Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 167/216] iser-target: Parallelize CM connection establishment Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 168/216] iser-target: Fix connected_handler + teardown flow race Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 169/216] iser-target: Handle ADDR_CHANGE event for listener cm_id Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 170/216] iser-target: Fix implicit termination of connections Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 171/216] iser-target: Allocate PI contexts dynamically Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 172/216] iser-target: Fix NULL dereference in SW mode DIF Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 173/216] iscsi,iser-target: Expose supported protection ops according to t10_pi Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 174/216] genirq: Prevent proc race against freeing of irq descriptors Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 175/216] powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode Luis Henriques
2015-01-12 18:29   ` Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 176/216] scsi: blacklist RSOC for Microsoft iSCSI target devices Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 177/216] storvsc: ring buffer failures may result in I/O freeze Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 178/216] iscsi-target: Fail connection on short sendmsg writes Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 179/216] drm/i915: Invalidate media caches on gen7 Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 180/216] drm/i915: Force the CS stall for invalidate flushes Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 181/216] ALSA: hda/realtek - Add new Dell desktop for ALC3234 headset mode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 182/216] dm thin: fix inability to discard blocks when in out-of-data-space mode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 183/216] dm thin: fix missing out-of-data-space to write mode transition if blocks are released Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 184/216] dm: fix missed error code if .end_io isn't implemented by target_type Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 185/216] i2c: mv64xxx: use BIT() macro for register value definitions Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 186/216] i2c: mv64xxx: rework offload support to fix several problems Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 187/216] x86/tls: Don't validate lm in set_thread_area() after all Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 188/216] ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 189/216] tick/powerclamp: Remove tick_nohz_idle abuse Luis Henriques
2015-01-12 18:29   ` Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 190/216] audit: don't attempt to lookup PIDs when changing PID filtering audit rules Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 191/216] audit: use supplied gfp_mask from audit_buffer in kauditd_send_multicast_skb Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 192/216] arm64: kernel: add missing __init section marker to cpu_suspend_init Luis Henriques
2015-01-12 18:29 ` Luis Henriques [this message]
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 194/216] arm64: Move cpu_resume into the text section Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 195/216] arm64: kernel: fix __cpu_suspend mm switch on warm-boot Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 196/216] audit: restore AUDIT_LOGINUID unset ABI Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 197/216] parisc: fix out-of-register compiler error in ldcw inline assembler function Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 198/216] kvm: x86: drop severity of "generation wraparound" message Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 199/216] Btrfs: fix loop writing of async reclaim Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 200/216] powercap / RAPL: add support for CPU model 0x3f Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 201/216] iwlwifi: make U-APSD default configurable at compile time Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 202/216] isofs: Fix unchecked printing of ER records Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 203/216] crypto: af_alg - fix backlog handling Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 204/216] udf: Check path length when reading symlink Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 205/216] udf: Verify i_size when loading inode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 206/216] udf: Verify symlink size before loading it Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 207/216] udf: Check component length before reading it Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 208/216] platform/chrome: chromeos_laptop - Add support for Acer C720 Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 209/216] platform/chrome: chromeos_laptop - Add HP Chromebook 14 Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 210/216] platform/chrome: chromeos_laptop - Add Dell Chromebook 11 touch Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 211/216] platform/chrome: chromeos_laptop - Add Toshiba CB35 Touch Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 212/216] platform/chrome: Add support for the acer c720p touchscreen Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 213/216] batman-adv: Calculate extra tail size based on queued fragments Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 214/216] move d_rcu from overlapping d_child to overlapping d_alias Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 215/216] deal with deadlock in d_walk() Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 216/216] KEYS: close race between key lookup and freeing Luis Henriques
2015-01-12 20:30 ` [3.16.y-ckt stable] Linux 3.16.7-ckt4 stable review Thomas Voegtle
2015-01-12 21:59   ` Luis Henriques
2015-01-12 21:59     ` Luis Henriques
2015-01-12 23:35     ` Thomas Voegtle
2015-01-13  9:25       ` Luis Henriques
2015-01-13  9:25         ` Luis Henriques
2015-01-13 18:56         ` Thomas Voegtle
2015-01-13 19:21           ` Luis Henriques
2015-01-13 19:21             ` Luis Henriques

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1421087394-2712-81-git-send-email-luis.henriques@canonical.com \
    --to=luis.henriques@canonical.com \
    --cc=catalin.marinas@arm.com \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.