Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ebc7fb5 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Merge android-4.19-q.73 (8feec99e) into msm-4.19"

parents e62449cf 0e5107f0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 19
SUBLEVEL = 72
SUBLEVEL = 73
EXTRAVERSION =
NAME = "People's Front"

+8 −0
Original line number Diff line number Diff line
@@ -179,6 +179,12 @@ void show_regs(struct pt_regs *regs)
	struct task_struct *tsk = current;
	struct callee_regs *cregs;

	/*
	 * generic code calls us with preemption disabled, but some calls
	 * here could sleep, so re-enable to avoid lockdep splat
	 */
	preempt_enable();

	print_task_path_n_nm(tsk);
	show_regs_print_info(KERN_INFO);

@@ -221,6 +227,8 @@ void show_regs(struct pt_regs *regs)
	cregs = (struct callee_regs *)current->thread.callee_reg;
	if (cregs)
		show_callee_regs(cregs);

	preempt_disable();
}

void show_kernel_fault_diag(const char *str, struct pt_regs *regs,
+15 −23
Original line number Diff line number Diff line
@@ -66,14 +66,12 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
	struct vm_area_struct *vma = NULL;
	struct task_struct *tsk = current;
	struct mm_struct *mm = tsk->mm;
	siginfo_t info;
	int si_code = SEGV_MAPERR;
	int ret;
	vm_fault_t fault;
	int write = regs->ecr_cause & ECR_C_PROTV_STORE;  /* ST/EX */
	unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;

	clear_siginfo(&info);

	/*
	 * We fault-in kernel-space virtual memory on-demand. The
	 * 'reference' page table is init_mm.pgd.
@@ -83,16 +81,14 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
	 * only copy the information from the master page table,
	 * nothing more.
	 */
	if (address >= VMALLOC_START) {
	if (address >= VMALLOC_START && !user_mode(regs)) {
		ret = handle_kernel_vaddr_fault(address);
		if (unlikely(ret))
			goto bad_area_nosemaphore;
			goto no_context;
		else
			return;
	}

	info.si_code = SEGV_MAPERR;

	/*
	 * If we're in an interrupt or have no user
	 * context, we must not take the fault..
@@ -119,7 +115,7 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
	 * we can handle it..
	 */
good_area:
	info.si_code = SEGV_ACCERR;
	si_code = SEGV_ACCERR;

	/* Handle protection violation, execute on heap or stack */

@@ -143,13 +139,18 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
	 */
	fault = handle_mm_fault(vma, address, flags);

	/* If Pagefault was interrupted by SIGKILL, exit page fault "early" */
	if (unlikely(fatal_signal_pending(current))) {
		if ((fault & VM_FAULT_ERROR) && !(fault & VM_FAULT_RETRY))
			up_read(&mm->mmap_sem);
		if (user_mode(regs))

		/*
		 * if fault retry, mmap_sem already relinquished by core mm
		 * so OK to return to user mode (with signal handled first)
		 */
		if (fault & VM_FAULT_RETRY) {
			if (!user_mode(regs))
				goto no_context;
			return;
		}
	}

	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);

@@ -195,15 +196,10 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
bad_area:
	up_read(&mm->mmap_sem);

bad_area_nosemaphore:
	/* User mode accesses just cause a SIGSEGV */
	if (user_mode(regs)) {
		tsk->thread.fault_address = address;
		info.si_signo = SIGSEGV;
		info.si_errno = 0;
		/* info.si_code has been set above */
		info.si_addr = (void __user *)address;
		force_sig_info(SIGSEGV, &info, tsk);
		force_sig_fault(SIGSEGV, si_code, (void __user *)address, tsk);
		return;
	}

@@ -238,9 +234,5 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
		goto no_context;

	tsk->thread.fault_address = address;
	info.si_signo = SIGBUS;
	info.si_errno = 0;
	info.si_code = BUS_ADRERR;
	info.si_addr = (void __user *)address;
	force_sig_info(SIGBUS, &info, tsk);
	force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, tsk);
}
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@
		gpio-miso = <&gpio1 8 GPIO_ACTIVE_HIGH>;
		gpio-mosi = <&gpio1 7 GPIO_ACTIVE_HIGH>;
		/* Collides with pflash CE1, not so cool */
		cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
		cs-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
		num-chipselects = <1>;

		panel: display@0 {
+3 −3
Original line number Diff line number Diff line
@@ -386,10 +386,10 @@
			#address-cells = <3>;
			#size-cells = <2>;

			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000
				  0x82000000 0 0x48000000 0x48000000 0 0x10000000>;
			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
				 <0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;

			interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>;
			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "msi";
			#interrupt-cells = <1>;
			interrupt-map-mask = <0 0 0 0x7>;
Loading