[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8055abc8-ed12-b054-7683-cd80fe0d59de@ozlabs.ru>
Date: Tue, 11 May 2021 17:57:33 +1000
From: Alexey Kardashevskiy <aik@...abs.ru>
To: Leonardo Bras <leobras.c@...il.com>,
Michael Ellerman <mpe@...erman.id.au>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
Paul Mackerras <paulus@...ba.org>,
Joel Stanley <joel@....id.au>,
Christophe Leroy <christophe.leroy@....fr>,
Nicolin Chen <nicoleotsuka@...il.com>,
Niklas Schnelle <schnelle@...ux.ibm.com>
Cc: linuxppc-dev@...ts.ozlabs.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v4 09/11] powerpc/pseries/iommu: Find existing DDW with
given property name
On 01/05/2021 02:31, Leonardo Bras wrote:
> At the moment pseries stores information about created directly mapped
> DDW window in DIRECT64_PROPNAME.
>
> With the objective of implementing indirect DMA mapping with DDW, it's
> necessary to have another propriety name to make sure kexec'ing into older
> kernels does not break, as it would if we reuse DIRECT64_PROPNAME.
>
> In order to have this, find_existing_ddw_windows() needs to be able to
> look for different property names.
>
> Extract find_existing_ddw_windows() into find_existing_ddw_windows_named()
> and calls it with current property name.
>
> Signed-off-by: Leonardo Bras <leobras.c@...il.com>
> ---
> arch/powerpc/platforms/pseries/iommu.c | 25 +++++++++++++++----------
> 1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
> index f8922fcf34b6..de54ddd9decd 100644
> --- a/arch/powerpc/platforms/pseries/iommu.c
> +++ b/arch/powerpc/platforms/pseries/iommu.c
> @@ -888,24 +888,21 @@ static struct direct_window *ddw_list_new_entry(struct device_node *pdn,
> return window;
> }
>
> -static int find_existing_ddw_windows(void)
> +static void find_existing_ddw_windows_named(const char *name)
I'd suggest find_existing_ddw_windows_by_name() but this is nitpicking.
Reviewed-by: Alexey Kardashevskiy <aik@...abs.ru>
> {
> int len;
> struct device_node *pdn;
> struct direct_window *window;
> - const struct dynamic_dma_window_prop *direct64;
> -
> - if (!firmware_has_feature(FW_FEATURE_LPAR))
> - return 0;
> + const struct dynamic_dma_window_prop *dma64;
>
> - for_each_node_with_property(pdn, DIRECT64_PROPNAME) {
> - direct64 = of_get_property(pdn, DIRECT64_PROPNAME, &len);
> - if (!direct64 || len < sizeof(*direct64)) {
> - remove_ddw(pdn, true, DIRECT64_PROPNAME);
> + for_each_node_with_property(pdn, name) {
> + dma64 = of_get_property(pdn, name, &len);
> + if (!dma64 || len < sizeof(*dma64)) {
> + remove_ddw(pdn, true, name);
> continue;
> }
>
> - window = ddw_list_new_entry(pdn, direct64);
> + window = ddw_list_new_entry(pdn, dma64);
> if (!window)
> break;
>
> @@ -913,6 +910,14 @@ static int find_existing_ddw_windows(void)
> list_add(&window->list, &direct_window_list);
> spin_unlock(&direct_window_list_lock);
> }
> +}
> +
> +static int find_existing_ddw_windows(void)
> +{
> + if (!firmware_has_feature(FW_FEATURE_LPAR))
> + return 0;
> +
> + find_existing_ddw_windows_named(DIRECT64_PROPNAME);
>
> return 0;
> }
>
--
Alexey
Powered by blists - more mailing lists