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

Commit 8f1ab4ae authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge 4.19.127 into android-4.19-stable



Changes in 4.19.127
	Revert "cgroup: Add memory barriers to plug cgroup_rstat_updated() race window"
	libnvdimm: Fix endian conversion issues 
	mm: Fix mremap not considering huge pmd devmap
	HID: sony: Fix for broken buttons on DS3 USB dongles
	HID: i2c-hid: add Schneider SCL142ALM to descriptor override
	p54usb: add AirVasT USB stick device-id
	kernel/relay.c: handle alloc_percpu returning NULL in relay_open
	mmc: fix compilation of user API
	scsi: ufs: Release clock if DMA map fails
	net: dsa: mt7530: set CPU port to fallback mode
	airo: Fix read overflows sending packets
	drm/i915: fix port checks for MST support on gen >= 11
	scsi: hisi_sas: Check sas_port before using it
	powerpc/powernv: Avoid re-registration of imc debugfs directory
	spi: dw: use "smp_mb()" to avoid sending spi data error
	s390/ftrace: save traced function caller
	ARC: Fix ICCM & DCCM runtime size checks
	ARC: [plat-eznps]: Restrict to CONFIG_ISA_ARCOMPACT
	evm: Fix RCU list related warnings
	i2c: altera: Fix race between xfer_msg and isr thread
	x86/mmiotrace: Use cpumask_available() for cpumask_var_t variables
	net: bmac: Fix read of MAC address from ROM
	drm/edid: Add Oculus Rift S to non-desktop list
	s390/mm: fix set_huge_pte_at() for empty ptes
	null_blk: return error for invalid zone size
	net/ethernet/freescale: rework quiesce/activate for ucc_geth
	net: ethernet: stmmac: Enable interface clocks on probe for IPQ806x
	net: smsc911x: Fix runtime PM imbalance on error
	Linux 4.19.127

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
Change-Id: I0ba65b19a1f1d3d1767e8f5cccef4b2f320cdd59
parents 4b9fbdac 106fa147
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
VERSION = 4
PATCHLEVEL = 19
PATCHLEVEL = 19
SUBLEVEL = 126
SUBLEVEL = 127
EXTRAVERSION =
EXTRAVERSION =
NAME = "People's Front"
NAME = "People's Front"


+3 −2
Original line number Original line Diff line number Diff line
@@ -15,6 +15,7 @@
#include <linux/clocksource.h>
#include <linux/clocksource.h>
#include <linux/console.h>
#include <linux/console.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/sizes.h>
#include <linux/cpu.h>
#include <linux/cpu.h>
#include <linux/of_fdt.h>
#include <linux/of_fdt.h>
#include <linux/of.h>
#include <linux/of.h>
@@ -406,12 +407,12 @@ static void arc_chk_core_config(void)
	if ((unsigned int)__arc_dccm_base != cpu->dccm.base_addr)
	if ((unsigned int)__arc_dccm_base != cpu->dccm.base_addr)
		panic("Linux built with incorrect DCCM Base address\n");
		panic("Linux built with incorrect DCCM Base address\n");


	if (CONFIG_ARC_DCCM_SZ != cpu->dccm.sz)
	if (CONFIG_ARC_DCCM_SZ * SZ_1K != cpu->dccm.sz)
		panic("Linux built with incorrect DCCM Size\n");
		panic("Linux built with incorrect DCCM Size\n");
#endif
#endif


#ifdef CONFIG_ARC_HAS_ICCM
#ifdef CONFIG_ARC_HAS_ICCM
	if (CONFIG_ARC_ICCM_SZ != cpu->iccm.sz)
	if (CONFIG_ARC_ICCM_SZ * SZ_1K != cpu->iccm.sz)
		panic("Linux built with incorrect ICCM Size\n");
		panic("Linux built with incorrect ICCM Size\n");
#endif
#endif


+1 −0
Original line number Original line Diff line number Diff line
@@ -6,6 +6,7 @@


menuconfig ARC_PLAT_EZNPS
menuconfig ARC_PLAT_EZNPS
	bool "\"EZchip\" ARC dev platform"
	bool "\"EZchip\" ARC dev platform"
	depends on ISA_ARCOMPACT
	select CPU_BIG_ENDIAN
	select CPU_BIG_ENDIAN
	select CLKSRC_NPS if !PHYS_ADDR_T_64BIT
	select CLKSRC_NPS if !PHYS_ADDR_T_64BIT
	select EZNPS_GIC
	select EZNPS_GIC
+16 −23
Original line number Original line Diff line number Diff line
@@ -63,10 +63,6 @@ static void export_imc_mode_and_cmd(struct device_node *node,


	imc_debugfs_parent = debugfs_create_dir("imc", powerpc_debugfs_root);
	imc_debugfs_parent = debugfs_create_dir("imc", powerpc_debugfs_root);


	/*
	 * Return here, either because 'imc' directory already exists,
	 * Or failed to create a new one.
	 */
	if (!imc_debugfs_parent)
	if (!imc_debugfs_parent)
		return;
		return;


@@ -139,7 +135,6 @@ static int imc_get_mem_addr_nest(struct device_node *node,
	}
	}


	pmu_ptr->imc_counter_mmaped = true;
	pmu_ptr->imc_counter_mmaped = true;
	export_imc_mode_and_cmd(node, pmu_ptr);
	kfree(base_addr_arr);
	kfree(base_addr_arr);
	kfree(chipid_arr);
	kfree(chipid_arr);
	return 0;
	return 0;
@@ -155,7 +150,7 @@ static int imc_get_mem_addr_nest(struct device_node *node,
 *		    and domain as the inputs.
 *		    and domain as the inputs.
 * Allocates memory for the struct imc_pmu, sets up its domain, size and offsets
 * Allocates memory for the struct imc_pmu, sets up its domain, size and offsets
 */
 */
static int imc_pmu_create(struct device_node *parent, int pmu_index, int domain)
static struct imc_pmu *imc_pmu_create(struct device_node *parent, int pmu_index, int domain)
{
{
	int ret = 0;
	int ret = 0;
	struct imc_pmu *pmu_ptr;
	struct imc_pmu *pmu_ptr;
@@ -163,28 +158,24 @@ static int imc_pmu_create(struct device_node *parent, int pmu_index, int domain)


	/* Return for unknown domain */
	/* Return for unknown domain */
	if (domain < 0)
	if (domain < 0)
		return -EINVAL;
		return NULL;


	/* memory for pmu */
	/* memory for pmu */
	pmu_ptr = kzalloc(sizeof(*pmu_ptr), GFP_KERNEL);
	pmu_ptr = kzalloc(sizeof(*pmu_ptr), GFP_KERNEL);
	if (!pmu_ptr)
	if (!pmu_ptr)
		return -ENOMEM;
		return NULL;


	/* Set the domain */
	/* Set the domain */
	pmu_ptr->domain = domain;
	pmu_ptr->domain = domain;


	ret = of_property_read_u32(parent, "size", &pmu_ptr->counter_mem_size);
	ret = of_property_read_u32(parent, "size", &pmu_ptr->counter_mem_size);
	if (ret) {
	if (ret)
		ret = -EINVAL;
		goto free_pmu;
		goto free_pmu;
	}


	if (!of_property_read_u32(parent, "offset", &offset)) {
	if (!of_property_read_u32(parent, "offset", &offset)) {
		if (imc_get_mem_addr_nest(parent, pmu_ptr, offset)) {
		if (imc_get_mem_addr_nest(parent, pmu_ptr, offset))
			ret = -EINVAL;
			goto free_pmu;
			goto free_pmu;
	}
	}
	}


	/* Function to register IMC pmu */
	/* Function to register IMC pmu */
	ret = init_imc_pmu(parent, pmu_ptr, pmu_index);
	ret = init_imc_pmu(parent, pmu_ptr, pmu_index);
@@ -194,14 +185,14 @@ static int imc_pmu_create(struct device_node *parent, int pmu_index, int domain)
		if (pmu_ptr->domain == IMC_DOMAIN_NEST)
		if (pmu_ptr->domain == IMC_DOMAIN_NEST)
			kfree(pmu_ptr->mem_info);
			kfree(pmu_ptr->mem_info);
		kfree(pmu_ptr);
		kfree(pmu_ptr);
		return ret;
		return NULL;
	}
	}


	return 0;
	return pmu_ptr;


free_pmu:
free_pmu:
	kfree(pmu_ptr);
	kfree(pmu_ptr);
	return ret;
	return NULL;
}
}


static void disable_nest_pmu_counters(void)
static void disable_nest_pmu_counters(void)
@@ -258,6 +249,7 @@ int get_max_nest_dev(void)
static int opal_imc_counters_probe(struct platform_device *pdev)
static int opal_imc_counters_probe(struct platform_device *pdev)
{
{
	struct device_node *imc_dev = pdev->dev.of_node;
	struct device_node *imc_dev = pdev->dev.of_node;
	struct imc_pmu *pmu;
	int pmu_count = 0, domain;
	int pmu_count = 0, domain;
	bool core_imc_reg = false, thread_imc_reg = false;
	bool core_imc_reg = false, thread_imc_reg = false;
	u32 type;
	u32 type;
@@ -273,6 +265,7 @@ static int opal_imc_counters_probe(struct platform_device *pdev)
	}
	}


	for_each_compatible_node(imc_dev, NULL, IMC_DTB_UNIT_COMPAT) {
	for_each_compatible_node(imc_dev, NULL, IMC_DTB_UNIT_COMPAT) {
		pmu = NULL;
		if (of_property_read_u32(imc_dev, "type", &type)) {
		if (of_property_read_u32(imc_dev, "type", &type)) {
			pr_warn("IMC Device without type property\n");
			pr_warn("IMC Device without type property\n");
			continue;
			continue;
@@ -294,9 +287,13 @@ static int opal_imc_counters_probe(struct platform_device *pdev)
			break;
			break;
		}
		}


		if (!imc_pmu_create(imc_dev, pmu_count, domain)) {
		pmu = imc_pmu_create(imc_dev, pmu_count, domain);
			if (domain == IMC_DOMAIN_NEST)
		if (pmu != NULL) {
			if (domain == IMC_DOMAIN_NEST) {
				if (!imc_debugfs_parent)
					export_imc_mode_and_cmd(imc_dev, pmu);
				pmu_count++;
				pmu_count++;
			}
			if (domain == IMC_DOMAIN_CORE)
			if (domain == IMC_DOMAIN_CORE)
				core_imc_reg = true;
				core_imc_reg = true;
			if (domain == IMC_DOMAIN_THREAD)
			if (domain == IMC_DOMAIN_THREAD)
@@ -304,10 +301,6 @@ static int opal_imc_counters_probe(struct platform_device *pdev)
		}
		}
	}
	}


	/* If none of the nest units are registered, remove debugfs interface */
	if (pmu_count == 0)
		debugfs_remove_recursive(imc_debugfs_parent);

	/* If core imc is not registered, unregister thread-imc */
	/* If core imc is not registered, unregister thread-imc */
	if (!core_imc_reg && thread_imc_reg)
	if (!core_imc_reg && thread_imc_reg)
		unregister_thread_imc();
		unregister_thread_imc();
+1 −0
Original line number Original line Diff line number Diff line
@@ -40,6 +40,7 @@ EXPORT_SYMBOL(_mcount)
ENTRY(ftrace_caller)
ENTRY(ftrace_caller)
	.globl	ftrace_regs_caller
	.globl	ftrace_regs_caller
	.set	ftrace_regs_caller,ftrace_caller
	.set	ftrace_regs_caller,ftrace_caller
	stg	%r14,(__SF_GPRS+8*8)(%r15)	# save traced function caller
	lgr	%r1,%r15
	lgr	%r1,%r15
#if !(defined(CC_USING_HOTPATCH) || defined(CC_USING_NOP_MCOUNT))
#if !(defined(CC_USING_HOTPATCH) || defined(CC_USING_NOP_MCOUNT))
	aghi	%r0,MCOUNT_RETURN_FIXUP
	aghi	%r0,MCOUNT_RETURN_FIXUP
Loading