test_event_open_fallback.sh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/bash
  2. # Perf event open fallback test
  3. # SPDX-License-Identifier: GPL-2.0
  4. skip_cnt=0
  5. ok_cnt=0
  6. err_cnt=0
  7. perf_record()
  8. {
  9. perf record -o /dev/null "$@" -- true 1>/dev/null 2>&1
  10. }
  11. test_decrease_precise_ip()
  12. {
  13. echo "Decrease precise ip test"
  14. perf list pmu | grep -q 'cycles' || return 2
  15. if ! perf_record -e cycles; then
  16. return 2
  17. fi
  18. # It should reduce precision level down to 0 if needed.
  19. if ! perf_record -e cycles:P; then
  20. return 1
  21. fi
  22. return 0
  23. }
  24. test_decrease_precise_ip_complicated()
  25. {
  26. echo "Decrease precise ip test (complicated case)"
  27. perf list pmu | grep -q 'mem-loads-aux' || return 2
  28. if ! perf_record -e '{mem-loads-aux:S,mem-loads:PS}'; then
  29. return 1
  30. fi
  31. return 0
  32. }
  33. count_result()
  34. {
  35. if [ "$1" -eq 2 ] ; then
  36. skip_cnt=$((skip_cnt + 1))
  37. return
  38. fi
  39. if [ "$1" -eq 0 ] ; then
  40. ok_cnt=$((ok_cnt + 1))
  41. return
  42. fi
  43. err_cnt=$((err_cnt + 1))
  44. }
  45. ret=0
  46. test_decrease_precise_ip || ret=$? ; count_result $ret ; ret=0
  47. test_decrease_precise_ip_complicated || ret=$? ; count_result $ret ; ret=0
  48. cleanup
  49. if [ ${err_cnt} -gt 0 ] ; then
  50. exit 1
  51. fi
  52. if [ ${ok_cnt} -gt 0 ] ; then
  53. exit 0
  54. fi
  55. # Skip
  56. exit 2