Lines Matching refs:sat
463 struct stressapptest_params *sat) in pattern_adler_sum_calc() argument
471 while (i < sat->block_size_byte / sizeof(u32)) { in pattern_adler_sum_calc()
490 struct stressapptest_params *sat) in pattern_list_init() argument
501 pattern_adler_sum_calc(&pattern_list[k], sat); in pattern_list_init()
507 sat->weight_count = weight_count; in pattern_list_init()
528 struct stressapptest_params *sat) in get_page_addr() argument
538 if ((start_adr[i] == 0 && length[i] == 0) || page >= sat->page_num) in get_page_addr()
540 if (start_adr[i] + length[i] < sat->total_start_addr) in get_page_addr()
542 if (start_adr[i] < sat->total_start_addr) { in get_page_addr()
543 length[i] -= sat->total_start_addr - start_adr[i]; in get_page_addr()
544 start_adr[i] = sat->total_start_addr; in get_page_addr()
548 while (page < sat->page_num && in get_page_addr()
549 length[i] >= used_length + sat->page_size_byte) { in get_page_addr()
551 used_length += sat->page_size_byte; in get_page_addr()
559 page, sat->page_size_byte, sat->page_size_byte * page); in get_page_addr()
561 if (sat->total_test_size_mb == 0) { in get_page_addr()
563 sat->page_num = page; in get_page_addr()
564 } else if (page < sat->page_num || page < sat->cpu_num * 4) { in get_page_addr()
575 struct stressapptest_params *sat) in page_init_valid() argument
581 target = (rand() % sat->weight_count) + 1; in page_init_valid()
591 for (i = 0; i < sat->page_size_byte / sizeof(u64); i++) in page_init_valid()
602 struct stressapptest_params *sat) in page_init() argument
607 for (cpu = 0; cpu < sat->cpu_num; cpu++) { in page_init()
609 for (i = cpu; i < sat->page_num; i += sat->cpu_num) { in page_init()
617 while (empty_page_num >= sat->page_num / sat->cpu_num / 2 && i > 0) { in page_init()
618 i -= sat->cpu_num; in page_init()
625 while (empty_page_num < 2 && i < sat->page_num) { in page_init()
630 i += sat->cpu_num; in page_init()
634 for (i = 0; i < sat->page_num; i++) { in page_init()
636 page_init_valid(&page_list[i], pattern_list, sat); in page_init()
644 struct stressapptest_params *sat, u8 cpu_id) in page_rand_pick() argument
648 pick = rand() % sat->page_num; in page_rand_pick()
649 pick = pick / sat->cpu_num * sat->cpu_num + cpu_id; in page_rand_pick()
650 if (pick >= sat->page_num) in page_rand_pick()
654 pick += sat->cpu_num; in page_rand_pick()
655 if (pick >= sat->page_num) in page_rand_pick()
663 struct stressapptest_params *sat, u8 cpu_id) in block_mis_search() argument
673 for (i = 0; i < sat->block_size_byte / sizeof(u32); i++) { in block_mis_search()
727 struct stressapptest_params *sat, u8 cpu_id) in block_inv_check() argument
749 while (i < sat->block_size_byte / sizeof(u32)) { in block_inv_check()
781 err = block_mis_search(dst_addr, src_pattern, "Inv", sat, cpu_id); in block_inv_check()
786 static void page_inv_up(void *src_addr, struct stressapptest_params *sat) in page_inv_up() argument
792 for (int i = 0; i < sat->block_num; i++) { in page_inv_up()
794 for (int j = 0; j < sat->block_size_byte / sizeof(uint); j += 32) { in page_inv_up()
801 dst_addr += sat->block_size_byte; in page_inv_up()
805 static void page_inv_down(void *src_addr, struct stressapptest_params *sat) in page_inv_down() argument
811 dst_addr += sat->block_size_byte * (sat->block_num - 1); in page_inv_down()
813 for (int i = sat->block_num - 1; i >= 0; i--) { in page_inv_down()
815 for (int j = sat->block_size_byte / sizeof(uint) - 32; j >= 0; j -= 32) { in page_inv_down()
822 dst_addr -= sat->block_size_byte; in page_inv_down()
826 static u32 page_inv(struct stressapptest_params *sat, u8 cpu_id) in page_inv() argument
832 src = page_rand_pick(page_list, 1, sat, cpu_id); /* pick a valid page */ in page_inv()
837 page_inv_up(page_list[src].base_addr, sat); in page_inv()
839 page_inv_down(page_list[src].base_addr, sat); in page_inv()
842 for (int i = 0; i < sat->block_num; i++) { in page_inv()
843 err += block_inv_check(dst_block_addr, page_list[src].pattern, sat, cpu_id); in page_inv()
844 dst_block_addr += sat->block_size_byte; in page_inv()
851 struct pattern *src_pattern, struct stressapptest_params *sat, in block_copy_check() argument
860 err = block_mis_search(dst_addr, src_pattern, "Copy", sat, cpu_id); in block_copy_check()
867 struct stressapptest_params *sat, u8 cpu_id) in block_copy() argument
891 while (i < sat->block_size_byte / sizeof(u64)) { in block_copy()
926 return block_copy_check(dst_addr, &adler_sum, src_pattern, sat, cpu_id); in block_copy()
929 static u32 page_copy(struct stressapptest_params *sat, u8 cpu_id) in page_copy() argument
937 dst = page_rand_pick(page_list, 0, sat, cpu_id); /* pick a empty page */ in page_copy()
939 src = page_rand_pick(page_list, 1, sat, cpu_id); /* pick a valid page */ in page_copy()
942 for (int i = 0; i < sat->block_num; i++) { in page_copy()
944 page_list[src].pattern, sat, cpu_id); in page_copy()
945 dst_block_addr += sat->block_size_byte; in page_copy()
946 src_block_addr += sat->block_size_byte; in page_copy()
976 cpu_id = sat.cpu_num; in secondary_main()
993 cpu_copy_err[cpu_id] += page_copy(&sat, cpu_id); in secondary_main()
995 cpu_inv_err[cpu_id] += page_inv(&sat, cpu_id); in secondary_main()
1043 for (sat.cpu_num = 1; sat.cpu_num < CPU_NUM_MAX; sat.cpu_num++) { in doing_stressapptest()
1046 if (psci_cpu_on(sat.cpu_num, (ulong)secondary_init) == 0) { in doing_stressapptest()
1048 printf("Calling CPU%d, sp = 0x%lx\n", sat.cpu_num, __sp); in doing_stressapptest()
1052 while (cpu_init_finish[sat.cpu_num] == 0) { in doing_stressapptest()
1059 sat.cpu_num = 1; in doing_stressapptest()
1062 if (sat.total_test_size_mb == 0) in doing_stressapptest()
1063 sat.page_num = get_max_page_num(sat.page_size_byte); in doing_stressapptest()
1065 sat.page_num = (sat.total_test_size_mb << 20) / sat.page_size_byte; in doing_stressapptest()
1066 sat.block_num = sat.page_size_byte / sat.block_size_byte; in doing_stressapptest()
1070 page_info = malloc(sizeof(struct page) * sat.page_num); in doing_stressapptest()
1079 if (get_page_addr(page_list, &sat) < 0) { in doing_stressapptest()
1084 pattern_list_init(pattern_list, &sat); in doing_stressapptest()
1085 page_init(pattern_list, &sat); in doing_stressapptest()
1088 if (sat.cpu_num > 1) { in doing_stressapptest()
1103 cpu_copy_err[0] += page_copy(&sat, 0); in doing_stressapptest()
1105 cpu_inv_err[0] += page_inv(&sat, 0); in doing_stressapptest()
1119 for (i = 1; i < sat.cpu_num; i++) { in doing_stressapptest()
1138 for (i = 0; i < sat.cpu_num; i++) { in doing_stressapptest()
1161 sat.total_test_size_mb = 0; in do_stressapptest()
1162 sat.block_size_byte = 4096; in do_stressapptest()
1163 sat.total_start_addr = 0x0; in do_stressapptest()
1174 if (strict_strtoul(argv[2], 0, &sat.total_test_size_mb) < 0) in do_stressapptest()
1176 if (sat.total_test_size_mb < 1) in do_stressapptest()
1177 sat.total_test_size_mb = 0; in do_stressapptest()
1180 if (strict_strtoul(argv[3], 0, &sat.total_start_addr) < 0) in do_stressapptest()
1182 if (sat.total_start_addr < 0x1) in do_stressapptest()
1183 sat.total_start_addr = 0x0; in do_stressapptest()
1192 sat.page_size_byte = page_size_kb << 10; in do_stressapptest()