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.
[...]
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.