diff --git a/cmdline/speed.c b/cmdline/speed.c index b18c2b7a..693ca716 100644 --- a/cmdline/speed.c +++ b/cmdline/speed.c @@ -1265,6 +1265,8 @@ void speed_rec(int nd, void** v, int size, int delta, int period) #ifdef CONFIG_NEON SPEED_START { + /* raid_rec1of1() internally calls raid_gen() */ + raid_gen_force(1, raid_gen1_neon); raid_rec1_neon(1, id, ip, nd, size, v); } SPEED_STOP diff --git a/raid/neon.c b/raid/neon.c index cd12e47f..1f58ed0d 100644 --- a/raid/neon.c +++ b/raid/neon.c @@ -1377,10 +1377,14 @@ void raid_gen6_neon_aes(int nd, size_t size, void **vv) void raid_rec1_neon(int nr, int *id, int *ip, int nd, size_t size, void **vv) { BUG_ON(nr != 1); - if (ip[0] == 0) - raid_recX_neon_12(1, 1, id, ip, nd, size, vv); - else - raid_recX_neon_12(1, 0, id, ip, nd, size, vv); + + /* if recovering with P uses the delta function */ + if (ip[0] == 0) { + raid_rec1of1(id, nd, size, vv); + return; + } + + raid_recX_neon_12(1, 0, id, ip, nd, size, vv); } void raid_rec2_neon(int nr, int *id, int *ip, int nd, size_t size, void **vv) diff --git a/raid/test/speedtest.c b/raid/test/speedtest.c index 0a829e3f..f4ba4cee 100644 --- a/raid/test/speedtest.c +++ b/raid/test/speedtest.c @@ -1160,6 +1160,8 @@ void speed_rec(int nd, void **v, int size, int delta, int period) #ifdef CONFIG_NEON SPEED_START { + /* raid_rec1of1() internally calls raid_gen() */ + raid_gen_force(1, raid_gen1_neon); raid_rec1_neon(1, id, ip, nd, size, v); } SPEED_STOP