Hi Reinette,
On 6/7/2024 4:47 PM, Reinette Chatre wrote:
Hi Babu,
On 6/7/24 11:16 AM, Moger, Babu wrote:
On 6/6/2024 6:58 PM, Reinette Chatre wrote:
On 6/6/24 4:09 PM, Moger, Babu wrote:
@@ -301,15 +320,8 @@ static int noncont_cat_run_test(const struct resctrl_test *test, if (ret) return ret;
- if (!strcmp(test->resource, "L3")) - __cpuid_count(0x10, 1, eax, ebx, ecx, edx); - else if (!strcmp(test->resource, "L2")) - __cpuid_count(0x10, 2, eax, ebx, ecx, edx); - else - return -EINVAL;
- if (sparse_masks != ((ecx >> 3) & 1)) { - ksft_print_msg("CPUID output doesn't match 'sparse_masks' file content!\n"); + if (!(arch_supports_noncont_cat(test) && sparse_masks)) { + ksft_print_msg("Hardware does not support non-contiguous CBM!\n");
Please fix the test as well as the message. It is not an error if hardware does not support non-contiguous CBM. It is an error if the hardware and kernel disagrees whether non-contiguous CBM is supported.
Not sure about this comment.
Did you mean?
if (!arch_supports_noncont_cat(test)) { ksft_print_msg("Hardware does not support non-contiguous CBM!\n"); return 0;
The above changes whether support for non-contiguous CBM is treated as an error but the test should still proceed since the test goes on to write different CBM to the system and verifies results are as expected based on what hardware supports.
} else if (arch_supports_noncont_cat(test) && !sparse_masks)) { ksft_print_msg("Hardware and kernel support for non-contiguous CBM does not match!\n"); return 1;
I can see how this will work for AMD for the scenario being checked but not for the different Intel variants.
I think this can all be simplified with something like: if (arch_supports_noncont_cat(test) != sparse_masks)) { ksft_print_msg("Hardware and kernel differ on non-contiguous CBM support!\n"); return 1; }
I modified the message slightly since non-contiguous CBM does not actually require kernel support.
What do you think?
Yes. That is fine. Thank you - Babu Moger