Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Senna Tschudin <peter.senna@linux.intel.com>
To: Kamil Konieczny <kamil.konieczny@linux.intel.com>,
	igt-dev@lists.freedesktop.org, ryszard.knop@intel.com,
	lucas.demarchi@intel.com, katarzyna.piecielska@intel.com,
	Jonathan Cavitt <jonathan.cavitt@intel.com>
Subject: Re: [PATCH i-g-t v4 1/2] lib/igt_kmemleak: library to interact with kmemleak
Date: Mon, 3 Feb 2025 10:23:00 +0100	[thread overview]
Message-ID: <17fe9952-7b2e-46fd-af1f-cd7cbea2cebd@linux.intel.com> (raw)
In-Reply-To: <20250131123454.ilhzogs6a2w7s3on@kamilkon-desk.igk.intel.com>

Hi Kamil,

Thank you for your review. Please see below.

On 31.01.2025 13:34, Kamil Konieczny wrote:

[...]

>> +#include <stdio.h>
>> +#include <string.h>
>> +#include <unistd.h>
>> +#include <fcntl.h>
>> +#include <errno.h>
> 
> Sort this alphabetically with exception of unistd.h - this
> header could be first.

That is picky, but ok.


> 
>> +
>> +#include "igt_core.h"
>> +#include "igt_kmemleak.h"
>> +
>> +/* We can change the path for unit testing, see igt_kmemleak_init() */
>> +static char igt_kmemleak_file[256] = "/sys/kernel/debug/kmemleak";
>> +
>> +#define MAX_WRITE_RETRIES 5
>> +/**
>> + * igt_kmemleak_write - Writes the buffer to the file descriptor retrying when
>> + * possible.
>> + * @fd: The file descriptor to write to.
>> + * @buf: Pointer to the data to write.
>> + * @count: Total number of bytes to write.
>> + *
>> + * Returns the total number of bytes written on success, or -1 on failure.
>> + */
>> +static bool igt_kmemleak_write(int fd, const void *buf, size_t count)
>> +{
>> +	const char *ptr = buf;
>> +	size_t remaining = count;
>> +	ssize_t written;
>> +	int retries = 0;
>> +
>> +	while (remaining > 0) {
>> +		written = write(fd, ptr, remaining);
>> +		if (written > 0) {
>> +			ptr += written;
>> +			remaining -= written;
>> +		} else if (written == -1) {
>> +			if (errno == EINTR || errno == EAGAIN) {
>> +				/* Retry for recoverable errors */
>> +				if (++retries > MAX_WRITE_RETRIES) {
>> +					igt_warn("igt_write: Exceeded retry limit\n");
> 
> Do not use test prints in lib, especially those used by runner.

Oh, I will. kmemleak is about writing to disk. If that fails, I will tell the user.
Why does this restriction applies only to me? See:

---
psennats@friendship7-home:~/UPSTREAM/igt-gpu-tools/lib$ git grep igt_warn|wc -l
164
psennats@friendship7-home:~/UPSTREAM/igt-gpu-tools/lib$ cd ..
psennats@friendship7-home:~/UPSTREAM/igt-gpu-tools$ git grep igt_warn|wc -l
324
---

About 50% of all references to igt_warn are in lib, what is the problem with my code?


> 
>> +					return false;
>> +				}
>> +				continue;
>> +			} else {
>> +				/* Log unrecoverable error */
>> +				igt_warn("igt_write: unrecoverable write error");
> 
> Same here.
We should not remove this one.

> 
>> +				return false;
>> +			}
>> +		} else if (written == 0) {
>> +			if (++retries > MAX_WRITE_RETRIES) {
>> +				igt_warn("igt_write: Exceeded retry limit\n");
> 
> Same here.
We should not remove this one.

[...]

>> +	FILE *fp;
> 
> Why FILE* and fopen? Could you just use open/read?

Why not?

---
psennats@friendship7-home:~/UPSTREAM/igt-gpu-tools$ git grep fopen|wc -l
97
---


[...]

>> +bool igt_kmemleak_init(const char *unit_test_kmemleak_file)
>> +{
>> +	FILE *fp;
> 
> Same here, open/read.

Same here, why not?
---
psennats@friendship7-home:~/UPSTREAM/igt-gpu-tools$ git grep fopen|wc -l
97
---

[...]

>> +#define KMEMLEAKRESFILENAME "kmemleak.txt"
> 
> imho better: IGT_KMEMLEAK_RESFILENAME

It reads better indeed. Thanks.

[...]

  reply	other threads:[~2025-02-03  9:23 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-28 15:15 [PATCH i-g-t v4 0/2] Integrate kmemleak scans in igt_runner Peter Senna Tschudin
2025-01-28 15:15 ` [PATCH i-g-t v4 1/2] lib/igt_kmemleak: library to interact with kmemleak Peter Senna Tschudin
2025-01-31 12:34   ` Kamil Konieczny
2025-02-03  9:23     ` Peter Senna Tschudin [this message]
2025-02-11 16:17       ` Zbigniew Kempczyński
2025-02-11 19:12         ` Peter Senna Tschudin
2025-02-12  8:36           ` Zbigniew Kempczyński
2025-02-12  9:18             ` Peter Senna Tschudin
2025-02-12 10:01               ` Zbigniew Kempczyński
2025-02-12 13:12                 ` Peter Senna Tschudin
2025-02-12 13:41                   ` Kamil Konieczny
2025-02-12 14:57                     ` Peter Senna Tschudin
2025-02-25 13:46         ` Peter Senna Tschudin
2025-02-25 18:06           ` Peter Senna Tschudin
2025-01-31 12:38   ` Kamil Konieczny
2025-02-03  9:14     ` Peter Senna Tschudin
2025-02-12 14:26       ` Kamil Konieczny
2025-01-28 15:15 ` [PATCH i-g-t v4 2/2] runner/executor: Integrate igt_kmemleak scans Peter Senna Tschudin
2025-01-31 12:50   ` Kamil Konieczny
2025-02-03  9:10     ` Peter Senna Tschudin
2025-02-12 14:24       ` Kamil Konieczny
2025-02-12 14:53         ` Peter Senna Tschudin
2025-01-28 20:48 ` ✓ i915.CI.BAT: success for Integrate kmemleak scans in igt_runner (rev2) Patchwork
2025-01-28 20:49 ` Patchwork
2025-01-28 20:52 ` ✓ Xe.CI.BAT: " Patchwork
2025-01-29 10:40 ` ✗ Xe.CI.Full: failure " Patchwork
2025-01-29 13:18   ` Peter Senna Tschudin
2025-01-29 11:25 ` ✗ i915.CI.Full: " Patchwork
2025-01-29 13:19   ` Peter Senna Tschudin
2025-01-30  6:18     ` Ravali, JupallyX
2025-01-30  5:26 ` ✓ i915.CI.Full: success " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17fe9952-7b2e-46fd-af1f-cd7cbea2cebd@linux.intel.com \
    --to=peter.senna@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=jonathan.cavitt@intel.com \
    --cc=kamil.konieczny@linux.intel.com \
    --cc=katarzyna.piecielska@intel.com \
    --cc=lucas.demarchi@intel.com \
    --cc=ryszard.knop@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox