[x264-devel] [PATCH 22/24] RFC: arm: Implement x264_mbtree_propagate_{cost, list}_neon
vlad.ivanov at lab-systems.ru
vlad.ivanov at lab-systems.ru
Wed Oct 14 14:45:31 CEST 2015
Hello,
the patch mentioned in the subject can cause a bus error exception under certain conditions when running x264 on ARM. x264_mbtree_propagate_list_internal_neon causes an exception at this line:
>ld1 {v2.8h}, [x2], #16 // lowres_cost
This is how this line looks in gdb:
><x264_mbtree_propagate_list_internal_neon+52> vld1.16 {d16-d19}, [r0 :128]!
># NEON operands should be aligned to 128 bits (0x10)
>print /x $r0
>0xb3394958
“Certain conditions” means it only fails with a specific input video: foreman_cif.yuv. I assume the issue is somehow related to the resolution of the video — there is no problem with QCIF and VGA videos.
Additional information:
Alignment exception handling mode:
user at host:/opt/x264$ cat /proc/cpu/alignment
User: 13
System: 4 (icmp_echo+0x2c/0x68)
Skipped: 13
Half: 0
Word: 0
DWord: 0
Multi: 4
User faults: 3 (fixup+warn)
(as far as I know, NEON-related misaligned accesses cannot be fixed by kernel)
Platform:
XC7Z020-CLG484-1 (zedboard)
Kernel:
Linux analog 3.17.0-gd302e45 #1 SMP PREEMPT Fri Feb 6 14:27:54 EET 2015 armv7l armv7l armv7l GNU/Linux
user at host:/opt/x264$ lsb_release -a
No LSB modules are available.
Distributor ID: Linaro
Description: Linaro 14.04
Release: 14.04
Codename: trusty
Git revision:
75992107adcc8317ba2888e3957a7d56f16b5cd4
Configure options:
./configure --enable-static --disable-interlaced --disable-opencl
platform: ARM
byte order: little-endian
system: LINUX
cli: yes
libx264: internal
shared: no
static: yes
asm: yes
interlaced: no
avs: avxsynth
lavf: no
ffms: no
mp4: no
gpl: yes
thread: posix
opencl: no
filters: crop select_every
debug: no
gprof: no
strip: no
PIC: no
bit depth: 8
chroma format: all
Let me know if you need any additional information.
Regards,
Vlad Ivanov
More information about the x264-devel
mailing list