* Re: [PATCH linux-next] module: remove duplicate include in interrupt.c
From: Christophe Leroy @ 2021-08-16 11:57 UTC (permalink / raw)
To: cgel.zte, mpe
Cc: Lv Ruyi, linux-kernel, npiggin, paulus, linuxppc-dev, Zeal Robot
In-Reply-To: <20210816113453.126939-1-lv.ruyi@zte.com.cn>
Le 16/08/2021 à 13:34, cgel.zte@gmail.com a écrit :
> From: Lv Ruyi <lv.ruyi@zte.com.cn>
>
> 'asm/interrupt.h' included in 'interrupt.c' is duplicated.
This patch has been submitted at least half a dozen of times already.
You should maintain alphabetic order in the include list.
But please don't post it again, we have it in the pipe already, see
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/1624329437-84730-1-git-send-email-jiapeng.chong@linux.alibaba.com/
Next time please check at https://patchwork.ozlabs.org/project/linuxppc-dev/list/ before submitting
a new patch.
Thanks
Christophe
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: Lv Ruyi <lv.ruyi@zte.com.cn>
> ---
> arch/powerpc/kernel/interrupt.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
> index 21bbd615ca41..8a936515e4e4 100644
> --- a/arch/powerpc/kernel/interrupt.c
> +++ b/arch/powerpc/kernel/interrupt.c
> @@ -10,7 +10,6 @@
> #include <asm/cputime.h>
> #include <asm/interrupt.h>
> #include <asm/hw_irq.h>
> -#include <asm/interrupt.h>
> #include <asm/kprobes.h>
> #include <asm/paca.h>
> #include <asm/ptrace.h>
>
^ permalink raw reply
* Re: [FSL P50x0] lscpu reports wrong values since the RC1 of kernel 5.13
From: Christian Zigotzky @ 2021-08-16 12:29 UTC (permalink / raw)
To: linuxppc-dev; +Cc: mad skateman, Darren Stevens, qemu-devel, R.T.Dickinson
In-Reply-To: <a7098505-2162-d3cc-b8f9-ef8c8a7d441f@xenosoft.de>
Hi All,
I tested the RC6 of kernel 5.14 today and unfortunately the issue still
exists. We have figured out that only P5040 SoCs are affected. [1]
P5020 SoCs display the correct values.
Please check the CPU changes in the PowerPC updates 5.13-1 and 5.13-2.
Thanks,
Christian
[1] https://forum.hyperion-entertainment.com/viewtopic.php?p=53775#p53775
On 09 August 2021 um 02:37 pm, Christian Zigotzky wrote:
> Hi All,
>
> Lscpu reports wrong values [1] since the RC1 of kernel 5.13 on my FSL
> P5040 Cyrus+ board (A-EON AmigaOne X5000). [2]
> The differences are:
>
> Since the RC1 of kernel 5.13 (wrong values):
>
> Core(s) per socket: 1
> Socket(s): 3
>
> Before (correct values):
>
> Core(s) per socket: 4
> Socket(s): 1
>
> Through the wrong values, I can't use "-smp 4" with a virtual e5500
> QEMU machine with KVM HV anymore. [3]
> "-smp 3" works with KVM HV.
>
> Maybe the file_load_64 commit from the PowerPC updates 5.13-2 is the
> problem ( powerpc/kexec_file: Use current CPU info while setting up
> FDT). [4]
>
> Or maybe this change (PowerPC updates 5.13-1):
>
> -#ifdef CONFIG_PPC_BOOK3E_64
> - state->ctx_state = exception_enter();
> - if (user_mode(regs))
> - account_cpu_user_entry();
> -#endif
>
> ---
>
> Or maybe this change (PowerPC updates 5.13-1):
>
> diff --git a/arch/powerpc/include/asm/smp.h
> b/arch/powerpc/include/asm/smp.h
> index 7a13bc20f0a0c..03b3d010cbab6 100644
> --- a/arch/powerpc/include/asm/smp.h
> +++ b/arch/powerpc/include/asm/smp.h
> @@ -31,6 +31,7 @@ extern u32 *cpu_to_phys_id;
> extern bool coregroup_enabled;
>
> extern int cpu_to_chip_id(int cpu);
> +extern int *chip_id_lookup_table;
>
> #ifdef CONFIG_SMP
>
> @@ -121,6 +122,11 @@ static inline struct cpumask
> *cpu_sibling_mask(int cpu)
> return per_cpu(cpu_sibling_map, cpu);
> }
>
> +static inline struct cpumask *cpu_core_mask(int cpu)
> +{
> + return per_cpu(cpu_core_map, cpu);
> +}
> +
> static inline struct cpumask *cpu_l2_cache_mask(int cpu)
> {
> return per_cpu(cpu_l2_cache_map, cpu);
>
> ---
>
> I have found a lot of other changes in the PowerPC updates 5.13-1
> regarding the CPU.
>
> Could you please check the CPU changes in the PowerPC updates 5.13-1
> and 5.13-2?
>
> Please find attached the kernel 5.14-rc5 config.
>
> Thanks,
> Christian
>
>
> [1]
>
> lscpu with the correct values before the RC1 of kernel 5.13:
>
> Architecture: ppc64
> CPU op-mode(s): 32-bit, 64-bit
> Byte Order: Big Endian
> CPU(s): 4
> On-line CPU(s) list: 0-3
> Thread(s) per core: 1
> Core(s) per socket: 4
> Socket(s): 1
> Model: 1.2 (pvr 8024 0012)
> Model name: e5500
> L1d cache: 128 KiB
> L1i cache: 128 KiB
> L2 cache: 2 MiB
> L3 cache: 2 MiB
> Vulnerability Itlb multihit: Not affected
> Vulnerability L1tf: Not affected
> Vulnerability Mds: Not affected
> Vulnerability Meltdown: Not affected
> Vulnerability Spec store bypass: Not affected
> Vulnerability Spectre v1: Mitigation; __user pointer sanitization
> Vulnerability Spectre v2: Mitigation; Branch predictor state flush
> Vulnerability Srbds: Not affected
> Vulnerability Tsx async abort: Not affected
>
> ---
>
> lscpu with the wrong values since the RC1 of kernel 5.13:
>
> Architecture: ppc64
> CPU op-mode(s): 32-bit, 64-bit
> Byte Order: Big Endian
> CPU(s): 4
> On-line CPU(s) list: 0-3
> Thread(s) per core: 1
> Core(s) per socket: 1
> Socket(s): 3
> Model: 1.2 (pvr 8024 0012)
> Model name: e5500
> L1d cache: 128 KiB
> L1i cache: 128 KiB
> L2 cache: 2 MiB
> L3 cache: 2 MiB
> Vulnerability Itlb multihit: Not affected
> Vulnerability L1tf: Not affected
> Vulnerability Mds: Not affected
> Vulnerability Meltdown: Not affected
> Vulnerability Spec store bypass: Not affected
> Vulnerability Spectre v1: Mitigation; __user pointer sanitization
> Vulnerability Spectre v2: Mitigation; Branch predictor state flush
> Vulnerability Srbds: Not affected
> Vulnerability Tsx async abort: Not affected
>
> ---
>
> [2] http://wiki.amiga.org/index.php?title=X5000
>
> [3] https://lists.ozlabs.org/pipermail/linuxppc-dev/2021-May/229103.html
>
> [4]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/arch/powerpc/kexec/file_load_64.c?id=ab159ac569fddf812c0a217d6dbffaa5d93ef88f
^ permalink raw reply
* [PATCH] powerpc/pseries/cpuhp: fix non-NUMA build
From: Nathan Lynch @ 2021-08-16 15:17 UTC (permalink / raw)
To: linuxppc-dev; +Cc: ldufour
With CONFIG_NUMA unset, direct references to node_to_cpumask_map don't
work:
arch/powerpc/platforms/pseries/hotplug-cpu.c: In function 'pseries_cpu_hotplug_init':
>> arch/powerpc/platforms/pseries/hotplug-cpu.c:1022:8: error: 'node_to_cpumask_map' undeclared (first use in this
>> function)
1022 | node_to_cpumask_map[node]);
| ^~~~~~~~~~~~~~~~~~~
Use cpumask_of_node() here instead.
Fixes: bd1dd4c5f528 ("powerpc/pseries: Prevent free CPU ids being reused on another node")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
---
arch/powerpc/platforms/pseries/hotplug-cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c
index 1ef40ef699a6..d646c22e94ab 100644
--- a/arch/powerpc/platforms/pseries/hotplug-cpu.c
+++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c
@@ -1021,7 +1021,7 @@ static int __init pseries_cpu_hotplug_init(void)
/* Record ids of CPU added at boot time */
cpumask_or(node_recorded_ids_map[node],
node_recorded_ids_map[node],
- node_to_cpumask_map[node]);
+ cpumask_of_node(node));
}
of_reconfig_notifier_register(&pseries_smp_nb);
--
2.31.1
^ permalink raw reply related
* Re: [PATCH] powerpc/pseries/cpuhp: fix non-NUMA build
From: Christophe Leroy @ 2021-08-16 15:19 UTC (permalink / raw)
To: Nathan Lynch, linuxppc-dev; +Cc: ldufour
In-Reply-To: <20210816151705.2786296-1-nathanl@linux.ibm.com>
Le 16/08/2021 à 17:17, Nathan Lynch a écrit :
> With CONFIG_NUMA unset, direct references to node_to_cpumask_map don't
> work:
>
> arch/powerpc/platforms/pseries/hotplug-cpu.c: In function 'pseries_cpu_hotplug_init':
>>> arch/powerpc/platforms/pseries/hotplug-cpu.c:1022:8: error: 'node_to_cpumask_map' undeclared (first use in this
>>> function)
> 1022 | node_to_cpumask_map[node]);
> | ^~~~~~~~~~~~~~~~~~~
>
> Use cpumask_of_node() here instead.
Isn't it the same as
https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20210816041032.2839343-1-mpe@ellerman.id.au/ ?
Christophe
>
> Fixes: bd1dd4c5f528 ("powerpc/pseries: Prevent free CPU ids being reused on another node")
> Reported-by: kernel test robot <lkp@intel.com>
> Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
> ---
> arch/powerpc/platforms/pseries/hotplug-cpu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c
> index 1ef40ef699a6..d646c22e94ab 100644
> --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c
> +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c
> @@ -1021,7 +1021,7 @@ static int __init pseries_cpu_hotplug_init(void)
> /* Record ids of CPU added at boot time */
> cpumask_or(node_recorded_ids_map[node],
> node_recorded_ids_map[node],
> - node_to_cpumask_map[node]);
> + cpumask_of_node(node));
> }
>
> of_reconfig_notifier_register(&pseries_smp_nb);
>
^ permalink raw reply
* Re: [PATCH] powerpc/pseries/cpuhp: fix non-NUMA build
From: Nathan Lynch @ 2021-08-16 15:25 UTC (permalink / raw)
To: Christophe Leroy, linuxppc-dev; +Cc: ldufour
In-Reply-To: <e9935336-43e3-228d-57f9-40cec438a23f@csgroup.eu>
Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Le 16/08/2021 à 17:17, Nathan Lynch a écrit :
>> With CONFIG_NUMA unset, direct references to node_to_cpumask_map don't
>> work:
>>
>> arch/powerpc/platforms/pseries/hotplug-cpu.c: In function 'pseries_cpu_hotplug_init':
>>>> arch/powerpc/platforms/pseries/hotplug-cpu.c:1022:8: error: 'node_to_cpumask_map' undeclared (first use in this
>>>> function)
>> 1022 | node_to_cpumask_map[node]);
>> | ^~~~~~~~~~~~~~~~~~~
>>
>> Use cpumask_of_node() here instead.
>
>
> Isn't it the same as
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20210816041032.2839343-1-mpe@ellerman.id.au/ ?
Yes, thanks.
^ permalink raw reply
* Re: [PATCH v1 2/4] powerpc/64s/perf: add power_pmu_running to query whether perf is being used
From: kernel test robot @ 2021-08-16 18:19 UTC (permalink / raw)
To: Nicholas Piggin, linuxppc-dev
Cc: Athira Rajeev, kbuild-all, Madhavan Srinivasan, Nicholas Piggin
In-Reply-To: <20210816072953.1165964-3-npiggin@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2185 bytes --]
Hi Nicholas,
I love your patch! Yet something to improve:
[auto build test ERROR on powerpc/next]
[also build test ERROR on v5.14-rc6 next-20210816]
[cannot apply to scottwood/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Nicholas-Piggin/powerpc-64s-interrupt-speedups/20210816-153424
base: https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-wii_defconfig (attached as .config)
compiler: powerpc-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/98b8a35aa718c93ace9df66df6274fe392633f80
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nicholas-Piggin/powerpc-64s-interrupt-speedups/20210816-153424
git checkout 98b8a35aa718c93ace9df66df6274fe392633f80
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> arch/powerpc/perf/core-book3s.c:2392:6: error: no previous prototype for 'power_pmu_running' [-Werror=missing-prototypes]
2392 | bool power_pmu_running(void)
| ^~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
vim +/power_pmu_running +2392 arch/powerpc/perf/core-book3s.c
2391
> 2392 bool power_pmu_running(void)
2393 {
2394 struct cpu_hw_events *cpuhw;
2395
2396 /* Could this simply test local_paca->pmcregs_in_use? */
2397
2398 if (!ppmu)
2399 return false;
2400
2401 cpuhw = this_cpu_ptr(&cpu_hw_events);
2402 return cpuhw->n_events;
2403 }
2404
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 16544 bytes --]
^ permalink raw reply
* [PATCH] powerpc/xive: Do not mark xive_request_ipi() as __init
From: Nathan Chancellor @ 2021-08-16 18:57 UTC (permalink / raw)
To: Michael Ellerman
Cc: Nick Desaulniers, linux-kernel, Nathan Chancellor,
clang-built-linux, Paul Mackerras, linuxppc-dev
Compiling ppc64le_defconfig with clang-14 shows a modpost warning:
WARNING: modpost: vmlinux.o(.text+0xa74e0): Section mismatch in
reference from the function xive_setup_cpu_ipi() to the function
.init.text:xive_request_ipi()
The function xive_setup_cpu_ipi() references
the function __init xive_request_ipi().
This is often because xive_setup_cpu_ipi lacks a __init
annotation or the annotation of xive_request_ipi is wrong.
xive_request_ipi() is called from xive_setup_cpu_ipi(), which is not
__init, so xive_request_ipi() should not be marked __init. Remove the
attribute so there is no more warning.
Fixes: cbc06f051c52 ("powerpc/xive: Do not skip CPU-less nodes when creating the IPIs")
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
arch/powerpc/sysdev/xive/common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/xive/common.c
index 943fd30095af..8183ca343675 100644
--- a/arch/powerpc/sysdev/xive/common.c
+++ b/arch/powerpc/sysdev/xive/common.c
@@ -1170,7 +1170,7 @@ static int __init xive_init_ipis(void)
return ret;
}
-static int __init xive_request_ipi(unsigned int cpu)
+static int xive_request_ipi(unsigned int cpu)
{
struct xive_ipi_desc *xid = &xive_ipis[early_cpu_to_node(cpu)];
int ret;
base-commit: a2824f19e6065a0d3735acd9fe7155b104e7edf5
--
2.33.0.rc2
^ permalink raw reply related
* Re: [PATCH] powerpc/xive: Do not mark xive_request_ipi() as __init
From: Nick Desaulniers @ 2021-08-16 22:04 UTC (permalink / raw)
To: Nathan Chancellor
Cc: linux-kernel, clang-built-linux, Paul Mackerras, linuxppc-dev
In-Reply-To: <20210816185711.21563-1-nathan@kernel.org>
On Mon, Aug 16, 2021 at 12:06 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Compiling ppc64le_defconfig with clang-14 shows a modpost warning:
>
> WARNING: modpost: vmlinux.o(.text+0xa74e0): Section mismatch in
> reference from the function xive_setup_cpu_ipi() to the function
> .init.text:xive_request_ipi()
> The function xive_setup_cpu_ipi() references
> the function __init xive_request_ipi().
> This is often because xive_setup_cpu_ipi lacks a __init
> annotation or the annotation of xive_request_ipi is wrong.
>
> xive_request_ipi() is called from xive_setup_cpu_ipi(), which is not
> __init, so xive_request_ipi() should not be marked __init. Remove the
> attribute so there is no more warning.
>
> Fixes: cbc06f051c52 ("powerpc/xive: Do not skip CPU-less nodes when creating the IPIs")
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Thanks for the patch!
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
> ---
> arch/powerpc/sysdev/xive/common.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/xive/common.c
> index 943fd30095af..8183ca343675 100644
> --- a/arch/powerpc/sysdev/xive/common.c
> +++ b/arch/powerpc/sysdev/xive/common.c
> @@ -1170,7 +1170,7 @@ static int __init xive_init_ipis(void)
> return ret;
> }
>
> -static int __init xive_request_ipi(unsigned int cpu)
> +static int xive_request_ipi(unsigned int cpu)
> {
> struct xive_ipi_desc *xid = &xive_ipis[early_cpu_to_node(cpu)];
> int ret;
>
> base-commit: a2824f19e6065a0d3735acd9fe7155b104e7edf5
> --
> 2.33.0.rc2
>
--
Thanks,
~Nick Desaulniers
^ permalink raw reply
* Re: [PATCH v2 1/2] sched/topology: Skip updating masks for non-online nodes
From: Valentin Schneider @ 2021-08-17 0:01 UTC (permalink / raw)
To: Srikar Dronamraju, Peter Zijlstra
Cc: Nathan Lynch, Gautham R Shenoy, Vincent Guittot, Rik van Riel,
linuxppc-dev, Geetika Moolchandani, LKML, Dietmar Eggemann,
Thomas Gleixner, Laurent Dufour, Mel Gorman, Ingo Molnar
In-Reply-To: <20210816103347.GC21942@linux.vnet.ibm.com>
On 16/08/21 16:03, Srikar Dronamraju wrote:
>>
>> Your version is much much better than mine.
>> And I have verified that it works as expected.
>>
>>
>
> Hey Peter/Valentin
>
> Are we waiting for any more feedback/testing for this?
>
I'm not overly fond of that last one, but AFAICT the only alternative is
doing a full-fledged NUMA topology rebuild on new-node onlining (i.e. make
calling sched_init_numa() more than once work). It's a lot more work for a
very particular usecase.
>
> --
> Thanks and Regards
> Srikar Dronamraju
^ permalink raw reply
* [PATCH 3/7] powerpc: replace cc-option-yn uses with cc-option
From: Nick Desaulniers @ 2021-08-17 0:21 UTC (permalink / raw)
To: Masahiro Yamada
Cc: linux-kbuild, Nick Desaulniers, clang-built-linux, Paul Mackerras,
linuxppc-dev
In-Reply-To: <20210817002109.2736222-1-ndesaulniers@google.com>
cc-option-yn can be replaced with cc-option. ie.
Checking for support:
ifeq ($(call cc-option-yn,$(FLAG)),y)
becomes:
ifneq ($(call cc-option,$(FLAG)),)
Checking for lack of support:
ifeq ($(call cc-option-yn,$(FLAG)),n)
becomes:
ifeq ($(call cc-option,$(FLAG)),)
This allows us to pursue removing cc-option-yn.
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
---
arch/powerpc/Makefile | 12 ++++++------
arch/powerpc/boot/Makefile | 5 +----
2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 9aaf1abbc641..85e224536cf7 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -12,12 +12,12 @@
# Rewritten by Cort Dougan and Paul Mackerras
#
-HAS_BIARCH := $(call cc-option-yn, -m32)
+HAS_BIARCH := $(call cc-option,-m32)
# Set default 32 bits cross compilers for vdso and boot wrapper
CROSS32_COMPILE ?=
-ifeq ($(HAS_BIARCH),y)
+ifeq ($(HAS_BIARCH),-m32)
ifeq ($(CROSS32_COMPILE),)
ifdef CONFIG_PPC32
# These options will be overridden by any -mcpu option that the CPU
@@ -107,7 +107,7 @@ cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
-ifeq ($(HAS_BIARCH),y)
+ifeq ($(HAS_BIARCH),-m32)
KBUILD_CFLAGS += -m$(BITS)
KBUILD_AFLAGS += -m$(BITS) -Wl,-a$(BITS)
KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION)
@@ -125,7 +125,9 @@ LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y)
ifdef CONFIG_PPC64
-ifeq ($(call cc-option-yn,-mcmodel=medium),y)
+ifeq ($(call cc-option,-mcmodel=medium),)
+ export NO_MINIMAL_TOC := -mno-minimal-toc
+else
# -mcmodel=medium breaks modules because it uses 32bit offsets from
# the TOC pointer to create pointers where possible. Pointers into the
# percpu data area are created by this method.
@@ -135,8 +137,6 @@ ifeq ($(call cc-option-yn,-mcmodel=medium),y)
# kernel percpu data space (starting with 0xc...). We need a full
# 64bit relocation for this to work, hence -mcmodel=large.
KBUILD_CFLAGS_MODULE += -mcmodel=large
-else
- export NO_MINIMAL_TOC := -mno-minimal-toc
endif
endif
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 10c0fb306f15..33e1de5d1c95 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -66,10 +66,7 @@ ifdef CONFIG_DEBUG_INFO
BOOTCFLAGS += -g
endif
-ifeq ($(call cc-option-yn, -fstack-protector),y)
-BOOTCFLAGS += -fno-stack-protector
-endif
-
+BOOTCFLAGS += $(call cc-option,-fstack-protector)
BOOTCFLAGS += -I$(objtree)/$(obj) -I$(srctree)/$(obj)
DTC_FLAGS ?= -p 1024
--
2.33.0.rc1.237.g0d66db33f3-goog
^ permalink raw reply related
* Re: [PATCH 3/7] powerpc: replace cc-option-yn uses with cc-option
From: Nathan Chancellor @ 2021-08-17 1:41 UTC (permalink / raw)
To: Nick Desaulniers, Masahiro Yamada
Cc: linux-kbuild, clang-built-linux, Paul Mackerras, linuxppc-dev
In-Reply-To: <20210817002109.2736222-4-ndesaulniers@google.com>
On 8/16/2021 5:21 PM, 'Nick Desaulniers' via Clang Built Linux wrote:
> cc-option-yn can be replaced with cc-option. ie.
> Checking for support:
> ifeq ($(call cc-option-yn,$(FLAG)),y)
> becomes:
> ifneq ($(call cc-option,$(FLAG)),)
>
> Checking for lack of support:
> ifeq ($(call cc-option-yn,$(FLAG)),n)
> becomes:
> ifeq ($(call cc-option,$(FLAG)),)
>
> This allows us to pursue removing cc-option-yn.
>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: linuxppc-dev@lists.ozlabs.org
> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> ---
> arch/powerpc/Makefile | 12 ++++++------
> arch/powerpc/boot/Makefile | 5 +----
> 2 files changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> index 9aaf1abbc641..85e224536cf7 100644
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -12,12 +12,12 @@
> # Rewritten by Cort Dougan and Paul Mackerras
> #
>
> -HAS_BIARCH := $(call cc-option-yn, -m32)
> +HAS_BIARCH := $(call cc-option,-m32)
>
> # Set default 32 bits cross compilers for vdso and boot wrapper
> CROSS32_COMPILE ?=
>
> -ifeq ($(HAS_BIARCH),y)
> +ifeq ($(HAS_BIARCH),-m32)
> ifeq ($(CROSS32_COMPILE),)
> ifdef CONFIG_PPC32
> # These options will be overridden by any -mcpu option that the CPU
> @@ -107,7 +107,7 @@ cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
> aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
> aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
>
> -ifeq ($(HAS_BIARCH),y)
> +ifeq ($(HAS_BIARCH),-m32)
> KBUILD_CFLAGS += -m$(BITS)
> KBUILD_AFLAGS += -m$(BITS) -Wl,-a$(BITS)
> KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION)
> @@ -125,7 +125,9 @@ LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
> LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y)
>
> ifdef CONFIG_PPC64
> -ifeq ($(call cc-option-yn,-mcmodel=medium),y)
> +ifeq ($(call cc-option,-mcmodel=medium),)
> + export NO_MINIMAL_TOC := -mno-minimal-toc
> +else
> # -mcmodel=medium breaks modules because it uses 32bit offsets from
> # the TOC pointer to create pointers where possible. Pointers into the
> # percpu data area are created by this method.
> @@ -135,8 +137,6 @@ ifeq ($(call cc-option-yn,-mcmodel=medium),y)
> # kernel percpu data space (starting with 0xc...). We need a full
> # 64bit relocation for this to work, hence -mcmodel=large.
> KBUILD_CFLAGS_MODULE += -mcmodel=large
> -else
> - export NO_MINIMAL_TOC := -mno-minimal-toc
> endif
> endif
>
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index 10c0fb306f15..33e1de5d1c95 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -66,10 +66,7 @@ ifdef CONFIG_DEBUG_INFO
> BOOTCFLAGS += -g
> endif
>
> -ifeq ($(call cc-option-yn, -fstack-protector),y)
> -BOOTCFLAGS += -fno-stack-protector
> -endif
> -
> +BOOTCFLAGS += $(call cc-option,-fstack-protector)
This was previously disabling the stack protector but now it is enabling
it. Just remove the ifeq conditional altogether as the kernel assumes
-fno-stack-protector is always supported after commit 893ab00439a4
("kbuild: remove cc-option test of -fno-stack-protector").
> BOOTCFLAGS += -I$(objtree)/$(obj) -I$(srctree)/$(obj)
>
> DTC_FLAGS ?= -p 1024
>
^ permalink raw reply
* Re: [PATCH 3/7] powerpc: replace cc-option-yn uses with cc-option
From: Michael Ellerman @ 2021-08-17 2:31 UTC (permalink / raw)
To: Nick Desaulniers, Masahiro Yamada
Cc: linux-kbuild, Nick Desaulniers, clang-built-linux, Paul Mackerras,
linuxppc-dev
In-Reply-To: <20210817002109.2736222-4-ndesaulniers@google.com>
Nick Desaulniers <ndesaulniers@google.com> writes:
> cc-option-yn can be replaced with cc-option. ie.
> Checking for support:
> ifeq ($(call cc-option-yn,$(FLAG)),y)
> becomes:
> ifneq ($(call cc-option,$(FLAG)),)
>
> Checking for lack of support:
> ifeq ($(call cc-option-yn,$(FLAG)),n)
> becomes:
> ifeq ($(call cc-option,$(FLAG)),)
>
> This allows us to pursue removing cc-option-yn.
>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: linuxppc-dev@lists.ozlabs.org
> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
> ---
> arch/powerpc/Makefile | 12 ++++++------
> arch/powerpc/boot/Makefile | 5 +----
> 2 files changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> index 9aaf1abbc641..85e224536cf7 100644
> --- a/arch/powerpc/Makefile
> +++ b/arch/powerpc/Makefile
> @@ -12,12 +12,12 @@
> # Rewritten by Cort Dougan and Paul Mackerras
> #
>
> -HAS_BIARCH := $(call cc-option-yn, -m32)
> +HAS_BIARCH := $(call cc-option,-m32)
>
> # Set default 32 bits cross compilers for vdso and boot wrapper
> CROSS32_COMPILE ?=
>
> -ifeq ($(HAS_BIARCH),y)
> +ifeq ($(HAS_BIARCH),-m32)
I don't love that we have to repeat "-m32" in each check.
I'm pretty sure you can use ifdef here, because HAS_BIARCH is a simple
variable (assigned with ":=").
ie, this can be:
ifdef HAS_BIARCH
And that avoids having to spell out "-m32" everywhere.
cheers
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Fix undefined static key
From: Joel Stanley @ 2021-08-17 2:44 UTC (permalink / raw)
To: Christophe Leroy
Cc: Michael Neuling, Nicholas Piggin, Paul Mackerras, linuxppc-dev,
Daniel Axtens
In-Reply-To: <492edb10-ccef-c6f2-2fd3-71cf8ae54cfc@csgroup.eu>
On Mon, 16 Aug 2021 at 08:39, Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
>
>
>
> Le 16/08/2021 à 10:24, Joel Stanley a écrit :
> > When CONFIG_PPC_BARRIER_NOSPEC=n, security.c is not built leading to a
> > missing definition of uaccess_flush_key.
> >
> > LD vmlinux.o
> > MODPOST vmlinux.symvers
> > MODINFO modules.builtin.modinfo
> > GEN modules.builtin
> > LD .tmp_vmlinux.kallsyms1
> > powerpc64le-linux-gnu-ld: arch/powerpc/kernel/align.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> > powerpc64le-linux-gnu-ld: arch/powerpc/kernel/signal_64.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> > powerpc64le-linux-gnu-ld: arch/powerpc/kernel/process.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> > powerpc64le-linux-gnu-ld: arch/powerpc/kernel/traps.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> > powerpc64le-linux-gnu-ld: arch/powerpc/kernel/hw_breakpoint_constraints.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> > powerpc64le-linux-gnu-ld: arch/powerpc/kernel/ptrace/ptrace.o:(.toc+0x0): more undefined references to `uaccess_flush_key' follow
> > make[1]: *** [Makefile:1176: vmlinux] Error 1
> >
> > Hack one in to fix the build.
> >
> > Signed-off-by: Joel Stanley <joel@jms.id.au>
> > ---
> > arch/powerpc/include/asm/security_features.h | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/arch/powerpc/include/asm/security_features.h b/arch/powerpc/include/asm/security_features.h
> > index 792eefaf230b..46ade7927a4c 100644
> > --- a/arch/powerpc/include/asm/security_features.h
> > +++ b/arch/powerpc/include/asm/security_features.h
> > @@ -39,6 +39,9 @@ static inline bool security_ftr_enabled(u64 feature)
> > return !!(powerpc_security_features & feature);
> > }
> >
> > +#ifndef CONFIG_PPC_BARRIER_NOSPEC
> > +DEFINE_STATIC_KEY_FALSE(uaccess_flush_key);
> > +#endif
>
> It will then be re-defined by each file that includes asm/security_features.h ....
>
> You can't use a DEFINE_ in a .h
>
> You have to fix the problem at its source.
>
> Cleanest way I see it to modify asm/book3s/64/kup.h and something like
>
> if (IS_ENABLED(CONFIG_PPC_BARRIER_NOSPEC) && static_branch_unlikely(&uaccess_flush_key)
This won't work either as there's no declaration for uaccess_flush_key:
arch/powerpc/include/asm/book3s/64/kup.h:411:78: error:
‘uaccess_flush_key’ undeclared (first use in this function)
We could add an extern for it, but that is distasteful as the static
key API suggests using the structs directly is deprecated, and the
macros we're supposed to use perform initialisation.
Could we assume microwatt-like platforms will not gain pkeys support,
and have a stubbed out set of prevent/restore_user_access for systems
that turn off either pkeys or BARRIER_NOSPEC?
Or do we get rid of PPC_BARRIER_NOSPEC as an option, and have machines
rely on disabling it at runtime?
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Fix undefined static key
From: Michael Ellerman @ 2021-08-17 2:52 UTC (permalink / raw)
To: Joel Stanley, Paul Mackerras, Michael Neuling, Anton Blanchard,
Nicholas Piggin, linuxppc-dev
Cc: Daniel Axtens
In-Reply-To: <20210816082403.2293846-3-joel@jms.id.au>
Joel Stanley <joel@jms.id.au> writes:
> When CONFIG_PPC_BARRIER_NOSPEC=n, security.c is not built leading to a
> missing definition of uaccess_flush_key.
>
> LD vmlinux.o
> MODPOST vmlinux.symvers
> MODINFO modules.builtin.modinfo
> GEN modules.builtin
> LD .tmp_vmlinux.kallsyms1
> powerpc64le-linux-gnu-ld: arch/powerpc/kernel/align.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> powerpc64le-linux-gnu-ld: arch/powerpc/kernel/signal_64.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> powerpc64le-linux-gnu-ld: arch/powerpc/kernel/process.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> powerpc64le-linux-gnu-ld: arch/powerpc/kernel/traps.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> powerpc64le-linux-gnu-ld: arch/powerpc/kernel/hw_breakpoint_constraints.o:(.toc+0x0): undefined reference to `uaccess_flush_key'
> powerpc64le-linux-gnu-ld: arch/powerpc/kernel/ptrace/ptrace.o:(.toc+0x0): more undefined references to `uaccess_flush_key' follow
> make[1]: *** [Makefile:1176: vmlinux] Error 1
>
> Hack one in to fix the build.
Yeah sorry that is a bit of a hack :)
I think the root cause here is that we don't have a CONFIG for "want
security workaround stuff", because so far we haven't had a CPU that
wants to turn that all off.
The generic code uses CONFIG_GENERIC_CPU_VULNERABILITIES, so I guess we
should follow that example and add PPC_CPU_VULNERABILITIES.
Then we'd use that to disable all the security.c stuff, and
PPC_BARRIER_NOSPEC would depend on it also.
Then we could allow configuring that off for Microwatt, or possibly for
all platforms if people want to do that.
cheers
^ permalink raw reply
* Re: [PATCH v8 3/5] powerpc/pseries: Consolidate different NUMA distance update code paths
From: David Gibson @ 2021-08-17 3:27 UTC (permalink / raw)
To: Aneesh Kumar K.V; +Cc: Nathan Lynch, Daniel Henrique Barboza, linuxppc-dev
In-Reply-To: <20210812132223.225214-4-aneesh.kumar@linux.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 1804 bytes --]
On Thu, Aug 12, 2021 at 06:52:21PM +0530, Aneesh Kumar K.V wrote:
> The associativity details of the newly added resourced are collected from
> the hypervisor via "ibm,configure-connector" rtas call. Update the numa
> distance details of the newly added numa node after the above call.
>
> Instead of updating NUMA distance every time we lookup a node id
> from the associativity property, add helpers that can be used
> during boot which does this only once. Also remove the distance
> update from node id lookup helpers.
>
> Currently, we duplicate parsing code for ibm,associativity and
> ibm,associativity-lookup-arrays in the kernel. The associativity array provided
> by these device tree properties are very similar and hence can use
> a helper to parse the node id and numa distance details.
>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
There are a handful of nits it would be nice to clean up as followups, though:
[snip]
> +static int get_nid_and_numa_distance(struct drmem_lmb *lmb)
> +{
> + struct assoc_arrays aa = { .arrays = NULL };
> + int default_nid = NUMA_NO_NODE;
I don't think there's any point to the 'default_nid' variable.
> + int nid = default_nid;
> + int rc, index;
> +
> + if ((primary_domain_index < 0) || !numa_enabled)
> + return default_nid;
> +
> + rc = of_get_assoc_arrays(&aa);
> + if (rc)
> + return default_nid;
> +
> + if (primary_domain_index <= aa.array_sz &&
You don't need this test any more - it's included in __associativity_to_nid().
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH v8 5/5] powerpc/pseries: Add support for FORM2 associativity
From: David Gibson @ 2021-08-17 3:40 UTC (permalink / raw)
To: Aneesh Kumar K.V; +Cc: Nathan Lynch, Daniel Henrique Barboza, linuxppc-dev
In-Reply-To: <20210812132223.225214-6-aneesh.kumar@linux.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 8177 bytes --]
On Thu, Aug 12, 2021 at 06:52:23PM +0530, Aneesh Kumar K.V wrote:
> PAPR interface currently supports two different ways of communicating resource
> grouping details to the OS. These are referred to as Form 0 and Form 1
> associativity grouping. Form 0 is the older format and is now considered
> deprecated. This patch adds another resource grouping named FORM2.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Though there a couple of cosmetic issues and one bad memory access
issue (though only in the case of buggy firmware).
[snip]
> +Form 2
> +-------
> +Form 2 associativity format adds separate device tree properties representing NUMA node distance
> +thereby making the node distance computation flexible. Form 2 also allows flexible primary
> +domain numbering. With numa distance computation now detached from the index value in
> +"ibm,associativity-reference-points" property, Form 2 allows a large number of primary domain
> +ids at the same domainID index representing resource groups of different performance/latency
> +characteristics.
> +
> +Hypervisor indicates the usage of FORM2 associativity using bit 2 of byte 5 in the
> +"ibm,architecture-vec-5" property.
> +
> +"ibm,numa-lookup-index-table" property contains a list of one or more numbers representing
> +the domainIDs present in the system. The offset of the domainID in this property is
> +used as an index while computing numa distance information via "ibm,numa-distance-table".
> +
> +prop-encoded-array: The number N of the domainIDs encoded as with encode-int, followed by
> +N domainID encoded as with encode-int
> +
> +For ex:
> +"ibm,numa-lookup-index-table" = {4, 0, 8, 250, 252}. The offset of domainID 8 (2) is used when
Since you're using dts syntax below, it probably makes sense to use it
here as well.
> +computing the distance of domain 8 from other domains present in the system. For the rest of
> +this document, this offset will be referred to as domain distance offset.
> +
> +"ibm,numa-distance-table" property contains a list of one or more numbers representing the NUMA
> +distance between resource groups/domains present in the system.
> +
> +prop-encoded-array: The number N of the distance values encoded as with encode-int, followed by
> +N distance values encoded as with encode-bytes. The max distance value we could encode is 255.
> +The number N must be equal to the square of m where m is the number of domainIDs in the
> +numa-lookup-index-table.
> +
> +For ex:
> +ibm,numa-lookup-index-table = <3 0 8 40>;
> +ibm,numa-distace-table = <9>, /bits/ 8 < 10 20 80
> + 20 10 160
> + 80 160 10>;
[snip]
> +
> + /* FORM2 affinity */
> + nid = of_node_to_nid_single(node);
> + if (nid == NUMA_NO_NODE)
> + return;
> +
> + /*
> + * With FORM2 we expect NUMA distance of all possible NUMA
> + * nodes to be provided during boot.
> + */
> + WARN(numa_distance_table[nid][nid] == -1,
> + "NUMA distance details for node %d not provided\n", nid);
> +}
> +
> +/*
> + * ibm,numa-lookup-index-table= {N, domainid1, domainid2, ..... domainidN}
> + * ibm,numa-distance-table = { N, 1, 2, 4, 5, 1, 6, .... N elements}
.. and here too.
> + */
> +static void initialize_form2_numa_distance_lookup_table(void)
> +{
> + int i, j;
> + struct device_node *root;
> + const __u8 *numa_dist_table;
> + const __be32 *numa_lookup_index;
> + int numa_dist_table_length;
> + int max_numa_index, distance_index;
> +
> + if (firmware_has_feature(FW_FEATURE_OPAL))
> + root = of_find_node_by_path("/ibm,opal");
> + else
> + root = of_find_node_by_path("/rtas");
> + if (!root)
> + root = of_find_node_by_path("/");
> +
> + numa_lookup_index = of_get_property(root, "ibm,numa-lookup-index-table", NULL);
> + max_numa_index = of_read_number(&numa_lookup_index[0], 1);
> +
> + /* first element of the array is the size and is encode-int */
> + numa_dist_table = of_get_property(root, "ibm,numa-distance-table", NULL);
> + numa_dist_table_length = of_read_number((const __be32 *)&numa_dist_table[0], 1);
> + /* Skip the size which is encoded int */
> + numa_dist_table += sizeof(__be32);
> +
> + pr_debug("numa_dist_table_len = %d, numa_dist_indexes_len = %d\n",
> + numa_dist_table_length, max_numa_index);
You validate numa_dist_table_length below. However, AFAICT you don't
anywhere check that the property actually has the length its first
element claims it does. Yes, that represents a firmware bug, but it's
probably best if we don't ready past the end of the array in that
case, which I think is what will happen now.
Same applies for the lookup-index-table.
> + for (i = 0; i < max_numa_index; i++)
> + /* +1 skip the max_numa_index in the property */
> + numa_id_index_table[i] = of_read_number(&numa_lookup_index[i + 1], 1);
> +
> +
> + if (numa_dist_table_length != max_numa_index * max_numa_index) {
> + WARN(1, "Wrong NUMA distance information\n");
> + /* consider everybody else just remote. */
> + for (i = 0; i < max_numa_index; i++) {
> + for (j = 0; j < max_numa_index; j++) {
> + int nodeA = numa_id_index_table[i];
> + int nodeB = numa_id_index_table[j];
> +
> + if (nodeA == nodeB)
> + numa_distance_table[nodeA][nodeB] = LOCAL_DISTANCE;
> + else
> + numa_distance_table[nodeA][nodeB] = REMOTE_DISTANCE;
> + }
> + }
> + }
> +
> + distance_index = 0;
> + for (i = 0; i < max_numa_index; i++) {
> + for (j = 0; j < max_numa_index; j++) {
> + int nodeA = numa_id_index_table[i];
> + int nodeB = numa_id_index_table[j];
> +
> + numa_distance_table[nodeA][nodeB] = numa_dist_table[distance_index++];
> + pr_debug("dist[%d][%d]=%d ", nodeA, nodeB, numa_distance_table[nodeA][nodeB]);
> + }
> + }
> + of_node_put(root);
> }
>
> static int __init find_primary_domain_index(void)
> @@ -344,6 +449,9 @@ static int __init find_primary_domain_index(void)
> */
> if (firmware_has_feature(FW_FEATURE_OPAL)) {
> affinity_form = FORM1_AFFINITY;
> + } else if (firmware_has_feature(FW_FEATURE_FORM2_AFFINITY)) {
> + dbg("Using form 2 affinity\n");
> + affinity_form = FORM2_AFFINITY;
> } else if (firmware_has_feature(FW_FEATURE_FORM1_AFFINITY)) {
> dbg("Using form 1 affinity\n");
> affinity_form = FORM1_AFFINITY;
> @@ -388,9 +496,12 @@ static int __init find_primary_domain_index(void)
>
> index = of_read_number(&distance_ref_points[1], 1);
> } else {
> + /*
> + * Both FORM1 and FORM2 affinity find the primary domain details
> + * at the same offset.
> + */
> index = of_read_number(distance_ref_points, 1);
> }
> -
> /*
> * Warn and cap if the hardware supports more than
> * MAX_DISTANCE_REF_POINTS domains.
> @@ -819,6 +930,12 @@ static int __init parse_numa_properties(void)
>
> dbg("NUMA associativity depth for CPU/Memory: %d\n", primary_domain_index);
>
> + /*
> + * If it is FORM2 initialize the distance table here.
> + */
> + if (affinity_form == FORM2_AFFINITY)
> + initialize_form2_numa_distance_lookup_table();
> +
> /*
> * Even though we connect cpus to numa domains later in SMP
> * init, we need to know the node ids now. This is because
> diff --git a/arch/powerpc/platforms/pseries/firmware.c b/arch/powerpc/platforms/pseries/firmware.c
> index 5d4c2bc20bba..f162156b7b68 100644
> --- a/arch/powerpc/platforms/pseries/firmware.c
> +++ b/arch/powerpc/platforms/pseries/firmware.c
> @@ -123,6 +123,7 @@ vec5_fw_features_table[] = {
> {FW_FEATURE_PRRN, OV5_PRRN},
> {FW_FEATURE_DRMEM_V2, OV5_DRMEM_V2},
> {FW_FEATURE_DRC_INFO, OV5_DRC_INFO},
> + {FW_FEATURE_FORM2_AFFINITY, OV5_FORM2_AFFINITY},
> };
>
> static void __init fw_vec5_feature_init(const char *vec5, unsigned long len)
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH 2/2] powerpc/configs: Regenerate mpc885_ads_defconfig
From: Joel Stanley @ 2021-08-17 4:36 UTC (permalink / raw)
To: Christophe Leroy; +Cc: linuxppc-dev
In-Reply-To: <f02e97f3-5081-38c2-fabb-9ad4eae2c649@csgroup.eu>
On Mon, 16 Aug 2021 at 08:49, Christophe Leroy
<christophe.leroy@csgroup.eu> wrote:
>
>
>
> Le 16/08/2021 à 10:31, Joel Stanley a écrit :
> > Regenrate atop v5.14-rc6.
>
> Typos.
>
> You mean you did redo a "make savedefconfig" ?
Yes, I did.
^ permalink raw reply
* [PATCH v2 0/3] powerpc: mpc855_ads defconfig fixes
From: Joel Stanley @ 2021-08-17 4:54 UTC (permalink / raw)
To: Michael Ellerman, Christophe Leroy, linuxppc-dev
v2: fix typos, split out mtd fix from savedefconfig patch
The first patch fixes a build warning I noticed when testing something
unrelated.
The second fixes a regression where the MTD partition support dropped out
of the config. I have enabled the dependency so this is still part of
the config.
The third patch is the result of doing a make savedefconfig with the
first two patches applied.
Joel Stanley (3):
powerpc/config: Fix IPV6 warning in mpc855_ads
powerpc/config: Renable MTD_PHYSMAP_OF
powerpc/configs: Regenerate mpc885_ads_defconfig
arch/powerpc/configs/mpc885_ads_defconfig | 49 +++++++++++------------
1 file changed, 23 insertions(+), 26 deletions(-)
--
2.32.0
^ permalink raw reply
* [PATCH v2 1/3] powerpc/config: Fix IPV6 warning in mpc855_ads
From: Joel Stanley @ 2021-08-17 4:54 UTC (permalink / raw)
To: Michael Ellerman, Christophe Leroy, linuxppc-dev
In-Reply-To: <20210817045407.2445664-1-joel@jms.id.au>
When building this config there's a warning:
79:warning: override: reassigning to symbol IPV6
Commit 9a1762a4a4ff ("powerpc/8xx: Update mpc885_ads_defconfig to
improve CI") added CONFIG_IPV6=y, but left '# CONFIG_IPV6 is not set'
in.
IPV6 is default y, so remove both to clean up the build.
Acked-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Fixes: 9a1762a4a4ff ("powerpc/8xx: Update mpc885_ads_defconfig to improve CI")
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
arch/powerpc/configs/mpc885_ads_defconfig | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
index d21f266cea9a..5cd17adf903f 100644
--- a/arch/powerpc/configs/mpc885_ads_defconfig
+++ b/arch/powerpc/configs/mpc885_ads_defconfig
@@ -21,7 +21,6 @@ CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_PNP=y
CONFIG_SYN_COOKIES=y
-# CONFIG_IPV6 is not set
# CONFIG_FW_LOADER is not set
CONFIG_MTD=y
CONFIG_MTD_BLOCK=y
@@ -76,7 +75,6 @@ CONFIG_PERF_EVENTS=y
CONFIG_MATH_EMULATION=y
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
CONFIG_STRICT_KERNEL_RWX=y
-CONFIG_IPV6=y
CONFIG_BPF_JIT=y
CONFIG_DEBUG_VM_PGTABLE=y
CONFIG_BDI_SWITCH=y
--
2.32.0
^ permalink raw reply related
* [PATCH v2 2/3] powerpc/config: Renable MTD_PHYSMAP_OF
From: Joel Stanley @ 2021-08-17 4:54 UTC (permalink / raw)
To: Michael Ellerman, Christophe Leroy, linuxppc-dev
In-Reply-To: <20210817045407.2445664-1-joel@jms.id.au>
CONFIG_MTD_PHYSMAP_OF is not longer enabled as it depends on
MTD_PHYSMAP which is not enabled.
This is a regression from commit 642b1e8dbed7 ("mtd: maps: Merge
physmap_of.c into physmap-core.c"), which added the extra dependency.
Add CONFIG_MTD_PHYSMAP=y so this stays in the config, as Christophe said
it is useful for build coverage.
Fixes: 642b1e8dbed7 ("mtd: maps: Merge physmap_of.c into physmap-core.c")
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
arch/powerpc/configs/mpc885_ads_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
index 5cd17adf903f..cd08f9ed2c8d 100644
--- a/arch/powerpc/configs/mpc885_ads_defconfig
+++ b/arch/powerpc/configs/mpc885_ads_defconfig
@@ -33,6 +33,7 @@ CONFIG_MTD_CFI_GEOMETRY=y
# CONFIG_MTD_CFI_I2 is not set
CONFIG_MTD_CFI_I4=y
CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_OF=y
# CONFIG_BLK_DEV is not set
CONFIG_NETDEVICES=y
--
2.32.0
^ permalink raw reply related
* [PATCH v2 3/3] powerpc/configs: Regenerate mpc885_ads_defconfig
From: Joel Stanley @ 2021-08-17 4:54 UTC (permalink / raw)
To: Michael Ellerman, Christophe Leroy, linuxppc-dev
In-Reply-To: <20210817045407.2445664-1-joel@jms.id.au>
Regenerate atop v5.14-rc6 by doing a make savedefconfig.
The changes a re-ordering except for the following (which are still set
indirectly):
- CONFIG_DEBUG_KERNEL=y selected by EXPERT
- CONFIG_PPC_EARLY_DEBUG_CPM_ADDR=0xff002008 which is the default
setting
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
arch/powerpc/configs/mpc885_ads_defconfig | 46 +++++++++++------------
1 file changed, 22 insertions(+), 24 deletions(-)
diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
index cd08f9ed2c8d..c74dc76b1d0d 100644
--- a/arch/powerpc/configs/mpc885_ads_defconfig
+++ b/arch/powerpc/configs/mpc885_ads_defconfig
@@ -1,19 +1,30 @@
-CONFIG_PPC_8xx=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
+CONFIG_BPF_JIT=y
+CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_EXPERT=y
# CONFIG_ELF_CORE is not set
# CONFIG_BASE_FULL is not set
# CONFIG_FUTEX is not set
+CONFIG_PERF_EVENTS=y
# CONFIG_VM_EVENT_COUNTERS is not set
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_PARTITION_ADVANCED=y
+CONFIG_PPC_8xx=y
+CONFIG_8xx_GPIO=y
+CONFIG_SMC_UCODE_PATCH=y
+CONFIG_PIN_TLB=y
CONFIG_GEN_RTC=y
CONFIG_HZ_100=y
+CONFIG_MATH_EMULATION=y
+CONFIG_PPC_16K_PAGES=y
+CONFIG_ADVANCED_OPTIONS=y
# CONFIG_SECCOMP is not set
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_MODULES=y
+# CONFIG_BLK_DEV_BSG is not set
+CONFIG_PARTITION_ADVANCED=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
@@ -46,38 +57,25 @@ CONFIG_DAVICOM_PHY=y
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_CPM=y
CONFIG_SERIAL_CPM_CONSOLE=y
+CONFIG_SPI=y
+CONFIG_SPI_FSL_SPI=y
# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_8xxx_WDT=y
# CONFIG_USB_SUPPORT is not set
# CONFIG_DNOTIFY is not set
CONFIG_TMPFS=y
CONFIG_CRAMFS=y
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_DEV_TALITOS=y
CONFIG_CRC32_SLICEBY4=y
CONFIG_DEBUG_INFO=y
CONFIG_MAGIC_SYSRQ=y
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_PPC_16K_PAGES=y
-CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_FS=y
-CONFIG_PPC_PTDUMP=y
-CONFIG_MODULES=y
-CONFIG_SPI=y
-CONFIG_SPI_FSL_SPI=y
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_DEV_TALITOS=y
-CONFIG_8xx_GPIO=y
-CONFIG_WATCHDOG=y
-CONFIG_8xxx_WDT=y
-CONFIG_SMC_UCODE_PATCH=y
-CONFIG_ADVANCED_OPTIONS=y
-CONFIG_PIN_TLB=y
-CONFIG_PERF_EVENTS=y
-CONFIG_MATH_EMULATION=y
-CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
-CONFIG_STRICT_KERNEL_RWX=y
-CONFIG_BPF_JIT=y
CONFIG_DEBUG_VM_PGTABLE=y
+CONFIG_DETECT_HUNG_TASK=y
CONFIG_BDI_SWITCH=y
CONFIG_PPC_EARLY_DEBUG=y
-CONFIG_PPC_EARLY_DEBUG_CPM_ADDR=0xff002008
+CONFIG_PPC_PTDUMP=y
--
2.32.0
^ permalink raw reply related
* Re: [PATCH v2 2/3] powerpc/config: Renable MTD_PHYSMAP_OF
From: Christophe Leroy @ 2021-08-17 5:10 UTC (permalink / raw)
To: Joel Stanley, Michael Ellerman, linuxppc-dev
In-Reply-To: <20210817045407.2445664-3-joel@jms.id.au>
Le 17/08/2021 à 06:54, Joel Stanley a écrit :
> CONFIG_MTD_PHYSMAP_OF is not longer enabled as it depends on
> MTD_PHYSMAP which is not enabled.
>
> This is a regression from commit 642b1e8dbed7 ("mtd: maps: Merge
> physmap_of.c into physmap-core.c"), which added the extra dependency.
> Add CONFIG_MTD_PHYSMAP=y so this stays in the config, as Christophe said
> it is useful for build coverage.
>
> Fixes: 642b1e8dbed7 ("mtd: maps: Merge physmap_of.c into physmap-core.c")
> Signed-off-by: Joel Stanley <joel@jms.id.au>
Acked-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/configs/mpc885_ads_defconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
> index 5cd17adf903f..cd08f9ed2c8d 100644
> --- a/arch/powerpc/configs/mpc885_ads_defconfig
> +++ b/arch/powerpc/configs/mpc885_ads_defconfig
> @@ -33,6 +33,7 @@ CONFIG_MTD_CFI_GEOMETRY=y
> # CONFIG_MTD_CFI_I2 is not set
> CONFIG_MTD_CFI_I4=y
> CONFIG_MTD_CFI_AMDSTD=y
> +CONFIG_MTD_PHYSMAP=y
> CONFIG_MTD_PHYSMAP_OF=y
> # CONFIG_BLK_DEV is not set
> CONFIG_NETDEVICES=y
>
^ permalink raw reply
* Re: [PATCH v2 3/3] powerpc/configs: Regenerate mpc885_ads_defconfig
From: Christophe Leroy @ 2021-08-17 5:10 UTC (permalink / raw)
To: Joel Stanley, Michael Ellerman, linuxppc-dev
In-Reply-To: <20210817045407.2445664-4-joel@jms.id.au>
Le 17/08/2021 à 06:54, Joel Stanley a écrit :
> Regenerate atop v5.14-rc6 by doing a make savedefconfig.
>
> The changes a re-ordering except for the following (which are still set
> indirectly):
>
> - CONFIG_DEBUG_KERNEL=y selected by EXPERT
>
> - CONFIG_PPC_EARLY_DEBUG_CPM_ADDR=0xff002008 which is the default
> setting
>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
Acked-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> ---
> arch/powerpc/configs/mpc885_ads_defconfig | 46 +++++++++++------------
> 1 file changed, 22 insertions(+), 24 deletions(-)
>
> diff --git a/arch/powerpc/configs/mpc885_ads_defconfig b/arch/powerpc/configs/mpc885_ads_defconfig
> index cd08f9ed2c8d..c74dc76b1d0d 100644
> --- a/arch/powerpc/configs/mpc885_ads_defconfig
> +++ b/arch/powerpc/configs/mpc885_ads_defconfig
> @@ -1,19 +1,30 @@
> -CONFIG_PPC_8xx=y
> # CONFIG_SWAP is not set
> CONFIG_SYSVIPC=y
> CONFIG_NO_HZ=y
> CONFIG_HIGH_RES_TIMERS=y
> +CONFIG_BPF_JIT=y
> +CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
> CONFIG_LOG_BUF_SHIFT=14
> CONFIG_EXPERT=y
> # CONFIG_ELF_CORE is not set
> # CONFIG_BASE_FULL is not set
> # CONFIG_FUTEX is not set
> +CONFIG_PERF_EVENTS=y
> # CONFIG_VM_EVENT_COUNTERS is not set
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_PARTITION_ADVANCED=y
> +CONFIG_PPC_8xx=y
> +CONFIG_8xx_GPIO=y
> +CONFIG_SMC_UCODE_PATCH=y
> +CONFIG_PIN_TLB=y
> CONFIG_GEN_RTC=y
> CONFIG_HZ_100=y
> +CONFIG_MATH_EMULATION=y
> +CONFIG_PPC_16K_PAGES=y
> +CONFIG_ADVANCED_OPTIONS=y
> # CONFIG_SECCOMP is not set
> +CONFIG_STRICT_KERNEL_RWX=y
> +CONFIG_MODULES=y
> +# CONFIG_BLK_DEV_BSG is not set
> +CONFIG_PARTITION_ADVANCED=y
> CONFIG_NET=y
> CONFIG_PACKET=y
> CONFIG_UNIX=y
> @@ -46,38 +57,25 @@ CONFIG_DAVICOM_PHY=y
> # CONFIG_LEGACY_PTYS is not set
> CONFIG_SERIAL_CPM=y
> CONFIG_SERIAL_CPM_CONSOLE=y
> +CONFIG_SPI=y
> +CONFIG_SPI_FSL_SPI=y
> # CONFIG_HWMON is not set
> +CONFIG_WATCHDOG=y
> +CONFIG_8xxx_WDT=y
> # CONFIG_USB_SUPPORT is not set
> # CONFIG_DNOTIFY is not set
> CONFIG_TMPFS=y
> CONFIG_CRAMFS=y
> CONFIG_NFS_FS=y
> CONFIG_ROOT_NFS=y
> +CONFIG_CRYPTO=y
> +CONFIG_CRYPTO_DEV_TALITOS=y
> CONFIG_CRC32_SLICEBY4=y
> CONFIG_DEBUG_INFO=y
> CONFIG_MAGIC_SYSRQ=y
> -CONFIG_DETECT_HUNG_TASK=y
> -CONFIG_PPC_16K_PAGES=y
> -CONFIG_DEBUG_KERNEL=y
> CONFIG_DEBUG_FS=y
> -CONFIG_PPC_PTDUMP=y
> -CONFIG_MODULES=y
> -CONFIG_SPI=y
> -CONFIG_SPI_FSL_SPI=y
> -CONFIG_CRYPTO=y
> -CONFIG_CRYPTO_DEV_TALITOS=y
> -CONFIG_8xx_GPIO=y
> -CONFIG_WATCHDOG=y
> -CONFIG_8xxx_WDT=y
> -CONFIG_SMC_UCODE_PATCH=y
> -CONFIG_ADVANCED_OPTIONS=y
> -CONFIG_PIN_TLB=y
> -CONFIG_PERF_EVENTS=y
> -CONFIG_MATH_EMULATION=y
> -CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
> -CONFIG_STRICT_KERNEL_RWX=y
> -CONFIG_BPF_JIT=y
> CONFIG_DEBUG_VM_PGTABLE=y
> +CONFIG_DETECT_HUNG_TASK=y
> CONFIG_BDI_SWITCH=y
> CONFIG_PPC_EARLY_DEBUG=y
> -CONFIG_PPC_EARLY_DEBUG_CPM_ADDR=0xff002008
> +CONFIG_PPC_PTDUMP=y
>
^ permalink raw reply
* Re: [PATCH v2 2/2] powerpc/perf: Return regs->nip as instruction pointer value when SIAR is 0
From: Madhavan Srinivasan @ 2021-08-17 5:37 UTC (permalink / raw)
To: Christophe Leroy, kajoljain, Michael Ellerman, linuxppc-dev
Cc: Sukadev Bhattiprolu, atrajeev, rnsastry
In-Reply-To: <3a34c79d-b800-1a11-7a4b-1fb3babb9df1@csgroup.eu>
On 8/16/21 12:26 PM, Christophe Leroy wrote:
>
>
> Le 16/08/2021 à 08:44, kajoljain a écrit :
>>
>>
>> On 8/14/21 6:14 PM, Michael Ellerman wrote:
>>> Christophe Leroy <christophe.leroy@csgroup.eu> writes:
>>>> Le 13/08/2021 à 10:24, Kajol Jain a écrit :
>>>>> Incase of random sampling, there can be scenarios where SIAR is not
>>>>> latching sample address and results in 0 value. Since current code
>>>>> directly returning the siar value, we could see multiple instruction
>>>>> pointer values as 0 in perf report.
>>>
>>> Can you please give more detail on that? What scenarios? On what CPUs?
>>>
>>
>> Hi Michael,
>> Sure I will update these details in my next patch-set.
>>
>>>>> Patch resolves this issue by adding a ternary condition to return
>>>>> regs->nip incase SIAR is 0.
>>>>
>>>> Your description seems rather similar to
>>>> https://github.com/linuxppc/linux/commit/2ca13a4cc56c920a6c9fc8ee45d02bccacd7f46c
>>>>
>>>>
>>>> Does it mean that the problem occurs on more than the power10 DD1 ?
>>>>
>>>> In that case, can the solution be common instead of doing something
>>>> for power10 DD1 and something
>>>> for others ?
>>>
>>> Agreed.
>>>
>>> This change would seem to make that P10 DD1 logic superfluous.
>>>
>>> Also we already have a fallback to regs->nip in the else case of the
>>> if,
>>> so we should just use that rather than adding a ternary condition.
>>>
>>> eg.
>>>
>>> if (use_siar && siar_valid(regs) && siar)
>>> return siar + perf_ip_adjust(regs);
>>> else if (use_siar)
>>> return 0; // no valid instruction pointer
>>> else
>>> return regs->nip;
>>>
>>>
>>> I'm also not sure why we have that return 0 case, I can't think of why
>>> we'd ever want to do that rather than using nip. So maybe we should do
>>> another patch to drop that case.
>>
>> Yeah make sense. I will remove return 0 case in my next version.
>>
>
> This was added by commit
> https://github.com/linuxppc/linux/commit/e6878835ac4794f25385522d29c634b7bbb7cca9
>
> Are we sure it was an error to add it and it can be removed ?
pc having 0 is wrong (kernel does not execute at 0x0 or userspace).
yeah we should drop it.
Maddy
>
> Christophe
^ permalink raw reply
* Re: [PATCH v5 06/11] powerpc/pseries/iommu: Add ddw_property_create() and refactor enable_ddw()
From: Leonardo Brás @ 2021-08-17 5:59 UTC (permalink / raw)
To: Frederic Barrat, Michael Ellerman, Benjamin Herrenschmidt,
Paul Mackerras, Alexey Kardashevskiy, David Gibson,
kernel test robot, Nicolin Chen
Cc: linuxppc-dev, linux-kernel
In-Reply-To: <1ab60060-1435-f77a-d2df-84019e7625a2@linux.ibm.com>
Hello Fred, thanks for this feedback!
On Tue, 2021-07-20 at 19:49 +0200, Frederic Barrat wrote:
>
> > kfree(window);
> >
> > -out_clear_window:
> > - remove_ddw(pdn, true);
> > +out_del_prop:
> > + of_remove_property(pdn, win64);
> >
> > out_free_prop:
> > kfree(win64->name);
> > kfree(win64->value);
> > kfree(win64);
> >
> > +out_remove_win:
> > + remove_ddw(pdn, true);
>
>
> I believe there's a small problem here. We jump directly to
> out_remove_win if allocating the property failed. Yet, the first
> thing
> remove_ddw() does is look for the property. So it will never find it
> and
> the window is never removed by the hypervisor.
>
> Fred
That makes sense, thanks for catching this one!
What I intended here was just removing the DDW, so I think it should be
ok replacing remove_ddw() by a new helper that only does the rtas-call.
I will send a v6 with this change soon.
>
>
> > +
> > out_failed:
> > if (default_win_removed)
> > reset_dma_window(dev, pdn);
> >
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox