Re: [PATCH 13/21] arc: dma-mapping: skip invalidating before bidirectional DMA

2023-04-04 Thread Shahab Vahedi
On 4/2/23 08:52, Vineet Gupta wrote:
> CC Shahab
> 
> On 3/27/23 17:43, Arnd Bergmann wrote:
>> From: Arnd Bergmann
>>
>> Some architectures that need to invalidate buffers after bidirectional
>> DMA because of speculative prefetching only do a simpler writeback
>> before that DMA, while architectures that don't need to do the second
>> invalidate tend to have a combined writeback+invalidate before the
>> DMA.
>>
>> arc is one of the architectures that does both, which seems unnecessary.
>>
>> Change it to behave like arm/arm64/xtensa instead, and use just a
>> writeback before the DMA when we do the invalidate afterwards.
>>
>> Signed-off-by: Arnd Bergmann
> 
> Reviewed-by: Vineet Gupta 
> 
> Shahab can you give this a spin on hsdk - run glibc testsuite over ssh and 
> make sure nothing strange happens.
> 
> Thx,
> -Vineet

On it.
-- 
Shahab

___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH] Fix backtrace message from arc_pmu_device_probe()

2023-04-04 Thread Nikolay Agishev
this_cpu_ptr() call causes backtrace with CONFIG_DEBUG_PREEMPT=y
because it required non-preemptive mode.

Stack Trace:
  arc_unwind_core+0xe8/0x118
  dump_stack_lvl+0x2c/0x40
  check_preemption_disabled+0xb4/0xb8
  arc_pmu_device_probe+0x336/0x3c8
  platform_probe+0x30/0x80
  really_probe.part.0+0x8c/0x248
  driver_probe_device+0x86/0x1e8
  __driver_attach+0x8a/0x144
  bus_for_each_dev+0x38/0x64
  bus_add_driver+0x112/0x178
  driver_register+0x4c/0xdc
  do_one_initcall+0x30/0x110
  kernel_init_freeable+0x14a/0x1b0

Suggested fix turns off preemption for the routine call.

Signed-off-by: Nikolay Agishev 
---
 arch/arc/kernel/perf_event.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/arch/arc/kernel/perf_event.c b/arch/arc/kernel/perf_event.c
index adff957962da..10bbdc2dab01 100644
--- a/arch/arc/kernel/perf_event.c
+++ b/arch/arc/kernel/perf_event.c
@@ -806,10 +806,14 @@ static int arc_pmu_device_probe(struct platform_device 
*pdev)
 
arc_pmu->irq = irq;
 
+   get_cpu_ptr(&arc_pmu_cpu);
+
/* intc map function ensures irq_set_percpu_devid() 
called */
ret = request_percpu_irq(irq, arc_pmu_intr, "ARC perf 
counters",
 this_cpu_ptr(&arc_pmu_cpu));
 
+   put_cpu_ptr(&arc_pmu_cpu);
+
if (!ret)
on_each_cpu(arc_cpu_pmu_irq_init, &irq, 1);
else
-- 
2.35.1


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


include/linux/compiler_types.h:328:45: error: call to '__compiletime_assert_313' declared with attribute error: BUILD_BUG_ON failed: (PTRS_PER_PTE * sizeof(pte_t)) > PAGE_SIZE

2023-04-04 Thread kernel test robot
Hi Vineet,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   148341f0a2f53b5e8808d09d85170586a15d
commit: d9820ff76f95fa26d33e412254a89cd65b23142d ARC: mm: switch pgtable_t back 
to struct page *
date:   1 year, 7 months ago
config: arc-randconfig-r043-20230403 
(https://download.01.org/0day-ci/archive/20230404/202304042243.qmbldzfx-...@intel.com/config)
compiler: arc-elf-gcc (GCC) 12.1.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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d9820ff76f95fa26d33e412254a89cd65b23142d
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout d9820ff76f95fa26d33e412254a89cd65b23142d
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 
O=build_dir ARCH=arc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 
O=build_dir ARCH=arc SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot 
| Link: 
https://lore.kernel.org/oe-kbuild-all/202304042243.qmbldzfx-...@intel.com/

All errors (new ones prefixed by >>):

   arch/arc/mm/init.c:35:13: warning: no previous prototype for 
'arc_get_mem_sz' [-Wmissing-prototypes]
  35 | long __init arc_get_mem_sz(void)
 | ^~
   arch/arc/mm/init.c:88:13: warning: no previous prototype for 
'setup_arch_memory' [-Wmissing-prototypes]
  88 | void __init setup_arch_memory(void)
 | ^
   In file included from :
   arch/arc/mm/init.c: In function 'mem_init':
>> include/linux/compiler_types.h:328:45: error: call to 
>> '__compiletime_assert_313' declared with attribute error: BUILD_BUG_ON 
>> failed: (PTRS_PER_PTE * sizeof(pte_t)) > PAGE_SIZE
 328 | _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
 | ^
   include/linux/compiler_types.h:309:25: note: in definition of macro 
'__compiletime_assert'
 309 | prefix ## suffix();  
   \
 | ^~
   include/linux/compiler_types.h:328:9: note: in expansion of macro 
'_compiletime_assert'
 328 | _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
 | ^~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 
'compiletime_assert'
  39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
 | ^~
   include/linux/build_bug.h:50:9: note: in expansion of macro 
'BUILD_BUG_ON_MSG'
  50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " 
#condition)
 | ^~~~
   arch/arc/mm/init.c:194:9: note: in expansion of macro 'BUILD_BUG_ON'
 194 | BUILD_BUG_ON((PTRS_PER_PTE * sizeof(pte_t)) > PAGE_SIZE);
 | ^~~~


vim +/__compiletime_assert_313 +328 include/linux/compiler_types.h

eb5c2d4b45e3d2 Will Deacon 2020-07-21  314  
eb5c2d4b45e3d2 Will Deacon 2020-07-21  315  #define 
_compiletime_assert(condition, msg, prefix, suffix) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21  316  __compiletime_assert(condition, 
msg, prefix, suffix)
eb5c2d4b45e3d2 Will Deacon 2020-07-21  317  
eb5c2d4b45e3d2 Will Deacon 2020-07-21  318  /**
eb5c2d4b45e3d2 Will Deacon 2020-07-21  319   * compiletime_assert - break build 
and emit msg if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21  320   * @condition: a compile-time 
constant condition to check
eb5c2d4b45e3d2 Will Deacon 2020-07-21  321   * @msg:   a message to emit if 
condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21  322   *
eb5c2d4b45e3d2 Will Deacon 2020-07-21  323   * In tradition of POSIX assert, 
this macro will break the build if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21  324   * supplied condition is *false*, 
emitting the supplied error message if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21  325   * compiler has support to do so.
eb5c2d4b45e3d2 Will Deacon 2020-07-21  326   */
eb5c2d4b45e3d2 Will Deacon 2020-07-21  327  #define 
compiletime_assert(condition, msg) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21 @328  _compiletime_assert(condition, 
msg, __compiletime_assert_, __COUNTER__)
eb5c2d4b45e3d2 Will Deacon 2020-07-21  329  

:: The code at line 328 was first introduced by commit
:: eb5c2d4b45e3d2d5d0