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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox