diff options
author | Yutang Jiang <yutang.jiang@nxp.com> | 2016-12-24 01:11:32 +0800 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2017-01-03 15:19:15 +0100 |
commit | 1866368a8ab8cacf73aa47f67138040d5620439d (patch) | |
tree | 2b0dd1ba578016957856f59bf4b2edc54d6a46c5 /target/linux/layerscape/patches-4.4/7164-staging-fsl-mc-get-rid-of-mutex_locked-variables.patch | |
parent | c6d3a62919a7f993be625391d8593c84423aa021 (diff) | |
download | upstream-1866368a8ab8cacf73aa47f67138040d5620439d.tar.gz upstream-1866368a8ab8cacf73aa47f67138040d5620439d.tar.bz2 upstream-1866368a8ab8cacf73aa47f67138040d5620439d.zip |
layerscape: add ls1088ardb device support
LS1088A is an ARMv8 implementation combining eight ARM A53 processor
cores. The LS1088ARDB is an evaluatoin platform that supports the
LS1088A family SoCs.
Features summary:
- Eight 64-bit ARM v8 Cortex-A53 CPUs
- Data path acceleration architecture 2.0 (DPAA2)
- Ethernet interfaces
- QUADSPI flash, 3 PCIe, 2 USB, 1 SD, 2 DUARTs etc
Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
Diffstat (limited to 'target/linux/layerscape/patches-4.4/7164-staging-fsl-mc-get-rid-of-mutex_locked-variables.patch')
-rw-r--r-- | target/linux/layerscape/patches-4.4/7164-staging-fsl-mc-get-rid-of-mutex_locked-variables.patch | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-4.4/7164-staging-fsl-mc-get-rid-of-mutex_locked-variables.patch b/target/linux/layerscape/patches-4.4/7164-staging-fsl-mc-get-rid-of-mutex_locked-variables.patch new file mode 100644 index 0000000000..d16485f4cd --- /dev/null +++ b/target/linux/layerscape/patches-4.4/7164-staging-fsl-mc-get-rid-of-mutex_locked-variables.patch @@ -0,0 +1,207 @@ +From d36a6b361a3a181559daebcf32e11ab18431a854 Mon Sep 17 00:00:00 2001 +From: Cihangir Akturk <cakturk@gmail.com> +Date: Sat, 9 Apr 2016 21:45:18 +0300 +Subject: [PATCH 164/226] staging: fsl-mc: get rid of mutex_locked variables + +Remove mutex_locked variables which are used to determine whether mutex is +locked, instead add another label to unlock mutex on premature exits due to +an error. + +This patch also addresses the folowing warnings reported by coccinelle: + +drivers/staging/fsl-mc/bus/mc-allocator.c:237:1-7: preceding lock on line 204 +drivers/staging/fsl-mc/bus/mc-allocator.c:89:1-7: preceding lock on line 57 +drivers/staging/fsl-mc/bus/mc-allocator.c:157:1-7: preceding lock on line 124 + +Signed-off-by: Cihangir Akturk <cakturk@gmail.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + drivers/staging/fsl-mc/bus/mc-allocator.c | 61 ++++++++++++----------------- + 1 file changed, 24 insertions(+), 37 deletions(-) + +--- a/drivers/staging/fsl-mc/bus/mc-allocator.c ++++ b/drivers/staging/fsl-mc/bus/mc-allocator.c +@@ -39,7 +39,6 @@ static int __must_check fsl_mc_resource_ + struct fsl_mc_resource *resource; + struct fsl_mc_device *mc_bus_dev = &mc_bus->mc_dev; + int error = -EINVAL; +- bool mutex_locked = false; + + if (WARN_ON(pool_type < 0 || pool_type >= FSL_MC_NUM_POOL_TYPES)) + goto out; +@@ -55,13 +54,12 @@ static int __must_check fsl_mc_resource_ + goto out; + + mutex_lock(&res_pool->mutex); +- mutex_locked = true; + + if (WARN_ON(res_pool->max_count < 0)) +- goto out; ++ goto out_unlock; + if (WARN_ON(res_pool->free_count < 0 || + res_pool->free_count > res_pool->max_count)) +- goto out; ++ goto out_unlock; + + resource = devm_kzalloc(&mc_bus_dev->dev, sizeof(*resource), + GFP_KERNEL); +@@ -69,7 +67,7 @@ static int __must_check fsl_mc_resource_ + error = -ENOMEM; + dev_err(&mc_bus_dev->dev, + "Failed to allocate memory for fsl_mc_resource\n"); +- goto out; ++ goto out_unlock; + } + + resource->type = pool_type; +@@ -82,10 +80,9 @@ static int __must_check fsl_mc_resource_ + res_pool->free_count++; + res_pool->max_count++; + error = 0; ++out_unlock: ++ mutex_unlock(&res_pool->mutex); + out: +- if (mutex_locked) +- mutex_unlock(&res_pool->mutex); +- + return error; + } + +@@ -106,7 +103,6 @@ static int __must_check fsl_mc_resource_ + struct fsl_mc_resource_pool *res_pool; + struct fsl_mc_resource *resource; + int error = -EINVAL; +- bool mutex_locked = false; + + if (WARN_ON(!FSL_MC_IS_ALLOCATABLE(mc_dev->obj_desc.type))) + goto out; +@@ -122,13 +118,12 @@ static int __must_check fsl_mc_resource_ + goto out; + + mutex_lock(&res_pool->mutex); +- mutex_locked = true; + + if (WARN_ON(res_pool->max_count <= 0)) +- goto out; ++ goto out_unlock; + if (WARN_ON(res_pool->free_count <= 0 || + res_pool->free_count > res_pool->max_count)) +- goto out; ++ goto out_unlock; + + /* + * If the device is currently allocated, its resource is not +@@ -139,7 +134,7 @@ static int __must_check fsl_mc_resource_ + dev_err(&mc_bus_dev->dev, + "Device %s cannot be removed from resource pool\n", + dev_name(&mc_dev->dev)); +- goto out; ++ goto out_unlock; + } + + list_del(&resource->node); +@@ -150,10 +145,9 @@ static int __must_check fsl_mc_resource_ + devm_kfree(&mc_bus_dev->dev, resource); + mc_dev->resource = NULL; + error = 0; ++out_unlock: ++ mutex_unlock(&res_pool->mutex); + out: +- if (mutex_locked) +- mutex_unlock(&res_pool->mutex); +- + return error; + } + +@@ -188,21 +182,19 @@ int __must_check fsl_mc_resource_allocat + struct fsl_mc_resource *resource; + struct fsl_mc_device *mc_bus_dev = &mc_bus->mc_dev; + int error = -EINVAL; +- bool mutex_locked = false; + + BUILD_BUG_ON(ARRAY_SIZE(fsl_mc_pool_type_strings) != + FSL_MC_NUM_POOL_TYPES); + + *new_resource = NULL; + if (WARN_ON(pool_type < 0 || pool_type >= FSL_MC_NUM_POOL_TYPES)) +- goto error; ++ goto out; + + res_pool = &mc_bus->resource_pools[pool_type]; + if (WARN_ON(res_pool->mc_bus != mc_bus)) +- goto error; ++ goto out; + + mutex_lock(&res_pool->mutex); +- mutex_locked = true; + resource = list_first_entry_or_null(&res_pool->free_list, + struct fsl_mc_resource, node); + +@@ -212,28 +204,26 @@ int __must_check fsl_mc_resource_allocat + dev_err(&mc_bus_dev->dev, + "No more resources of type %s left\n", + fsl_mc_pool_type_strings[pool_type]); +- goto error; ++ goto out_unlock; + } + + if (WARN_ON(resource->type != pool_type)) +- goto error; ++ goto out_unlock; + if (WARN_ON(resource->parent_pool != res_pool)) +- goto error; ++ goto out_unlock; + if (WARN_ON(res_pool->free_count <= 0 || + res_pool->free_count > res_pool->max_count)) +- goto error; ++ goto out_unlock; + + list_del(&resource->node); + INIT_LIST_HEAD(&resource->node); + + res_pool->free_count--; ++ error = 0; ++out_unlock: + mutex_unlock(&res_pool->mutex); + *new_resource = resource; +- return 0; +-error: +- if (mutex_locked) +- mutex_unlock(&res_pool->mutex); +- ++out: + return error; + } + EXPORT_SYMBOL_GPL(fsl_mc_resource_allocate); +@@ -241,26 +231,23 @@ EXPORT_SYMBOL_GPL(fsl_mc_resource_alloca + void fsl_mc_resource_free(struct fsl_mc_resource *resource) + { + struct fsl_mc_resource_pool *res_pool; +- bool mutex_locked = false; + + res_pool = resource->parent_pool; + if (WARN_ON(resource->type != res_pool->type)) +- goto out; ++ return; + + mutex_lock(&res_pool->mutex); +- mutex_locked = true; + if (WARN_ON(res_pool->free_count < 0 || + res_pool->free_count >= res_pool->max_count)) +- goto out; ++ goto out_unlock; + + if (WARN_ON(!list_empty(&resource->node))) +- goto out; ++ goto out_unlock; + + list_add_tail(&resource->node, &res_pool->free_list); + res_pool->free_count++; +-out: +- if (mutex_locked) +- mutex_unlock(&res_pool->mutex); ++out_unlock: ++ mutex_unlock(&res_pool->mutex); + } + EXPORT_SYMBOL_GPL(fsl_mc_resource_free); + |