Re: [PATCH v2] rt-tests: hwlatdetect: Gracefully handle lack of /dev/cpu_dma_latency

John Kacur
2021-09-28T14:34:53Z

On Tue, 28 Sep 2021, Punit Agrawal wrote:

> From: Punit Agrawal <punit1.agrawal@toshiba.co.jp>
>
> On systems where cpu idle is disabled to reduce latencies,
> "/dev/cpu_dma_latency" does not exist and leads to the following
> exception report from python when using hwlatdetect.py -
>
> FileNotFoundError: [Errno 2] No such file or directory: '/dev/cpu_dma_latency
>
> Update hwlatdetect to check whether the file exists before attemping
> to write values to it.
>
> Reported-by: Suresh Hegde <suresh.c11@toshiba-tsip.com>
> Signed-off-by: Punit Agrawal <punit1.agrawal@toshiba.co.jp>
> ---
> v1 -> v2:
> * Correct Suresh's email
>
> src/hwlatdetect/hwlatdetect.py | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/hwlatdetect/hwlatdetect.py b/src/hwlatdetect/hwlatdetect.py
> index 12228f45f852..89537a6e371f 100755
> --- a/src/hwlatdetect/hwlatdetect.py
> +++ b/src/hwlatdetect/hwlatdetect.py
> @@ -216,8 +216,11 @@ class Detector(object):
> # use c_states_on() to close the file descriptor and re-enable c-states
> #
> def c_states_off(self):
> - self.dma_latency_handle = os.open("/dev/cpu_dma_latency", os.O_WRONLY)
> - os.write(self.dma_latency_handle, b'\x00\x00\x00\x00')
> + if os.path.exists("/dev/cpu_dma_latency"):
> + self.dma_latency_handle = os.open("/dev/cpu_dma_latency", os.O_WRONLY)
> + os.write(self.dma_latency_handle, b'\x00\x00\x00\x00')
> + else:
> + self.dma_latency_handle = None
> debug("c-states disabled")
>
> def c_states_on(self):
> --
> 2.32.0
>
>

Thanks! I have a couple of nit-picky suggestions.

If you initialize self.dma_latency_handle = None in the init method of
class Detector, then you can drop the else part of your check to see if
the file exists.

Also, in the situation you describe, the debug messages should probably be
hoisted up under the "if" part, and that goes for method c_states_on()
too, as they are not relevant.

You might as well fix the comments above the code too,
openinging -> opening
writeing -> writing
And edit that one line not to over flow 80 chars.

Thanks!

John