<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <pre>On 25/08/23 11:26 am, Kajol Jain wrote:</pre>
    <blockquote type="cite"
      cite="mid:20230825055601.360083-1-kjain@linux.ibm.com">
      <pre class="moz-quote-pre" wrap="">Valid domain value is in range 1 to HV_PERF_DOMAIN_MAX.
Current code has check for domain value greater than or
equal to HV_PERF_DOMAIN_MAX. But the check for domain value 0
is missing.
Fix this issue by adding check for domain value 0.

Fixes: ebd4a5a3ebd9 ("powerpc/perf/hv-24x7: Minor improvements")
Reported-by: Krishan Gopal Sarawast <a class="moz-txt-link-rfc2396E" href="mailto:krishang@linux.vnet.ibm.com"><krishang@linux.vnet.ibm.com></a> 
Signed-off-by: Kajol Jain <a class="moz-txt-link-rfc2396E" href="mailto:kjain@linux.ibm.com"><kjain@linux.ibm.com></a></pre>
    </blockquote>
    <pre>Tested the patch on power, with domain=0 not getting hcall failure after patch changes.

Before patch changes:
# ./perf stat -v -e hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/ sleep 1
Using CPUID 00800200
Control descriptor is not initialized
Error:
The sys_perf_event_open() syscall returned with 5 (Input/output error) for
event (hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/).
/bin/dmesg | grep -i perf may provide additional information.

Result from dmesg:
[   37.819387] hv-24x7: hcall failed: [0 0x60040000 0x100 0] => ret
0xfffffffffffffffc (-4) detail=0x2000000 failing ix=0

After patch changes:
# ./perf stat -v -e hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/ sleep 1
Using CPUID 00800200
Control descriptor is not initialized
Warning:
hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/ event is not supported by the kernel.
failed to read counter hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/

 Performance counter stats for 'system wide':

   <not supported>      hv_24x7/CPM_ADJUNCT_INST,domain=0,core=1/

       1.001352771 seconds time elapsed

Tested-by: Disha Goel <a class="moz-txt-link-rfc2396E" href="mailto:disgoel@linux.ibm.com"><disgoel@linux.ibm.com></a>
</pre>
    <blockquote type="cite"
      cite="mid:20230825055601.360083-1-kjain@linux.ibm.com">
      <pre class="moz-quote-pre" wrap="">
---
 arch/powerpc/perf/hv-24x7.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
index 317175791d23..644881cc1c00 100644
--- a/arch/powerpc/perf/hv-24x7.c
+++ b/arch/powerpc/perf/hv-24x7.c
@@ -1418,7 +1418,7 @@ static int h_24x7_event_init(struct perf_event *event)
        }
 
        domain = event_get_domain(event);
-       if (domain >= HV_PERF_DOMAIN_MAX) {
+       if (domain  == 0 || domain >= HV_PERF_DOMAIN_MAX) {
                pr_devel("invalid domain %d\n", domain);
                return -EINVAL;
        }
</pre>
    </blockquote>
  </body>
</html>