public inbox for linux-clk@vger.kernel.org
 help / color / mirror / Atom feed
From: Audra Mitchell <audra@redhat.com>
To: Donald Zickus <dzickus@redhat.com>
Cc: Stephen Boyd <sboyd@kernel.org>, Nico Pache <npache@redhat.com>,
	KUnit Development <kunit-dev@googlegroups.com>,
	linux-clk@vger.kernel.org, Shuah Khan <skhan@linuxfoundation.org>,
	Audra Mitchell <aubaker@redhat.com>,
	Mark Salter <msalter@redhat.com>
Subject: Re: [Bug Report] Multiple S390x KUNIT clk failures
Date: Tue, 28 May 2024 16:49:11 -0400	[thread overview]
Message-ID: <ZlZDR3xhZfK43njo@fedora> (raw)
In-Reply-To: <CAK18DXZ223RxeV7teXjBZ-0x5U8hdmgxxL9zew3aoR7SZvxEvQ@mail.gmail.com>

On Tue, May 28, 2024 at 02:49:56PM -0400, Donald Zickus wrote:
> (trying again without the html part that gmail likes to add.  Apologies)
> 
> On Tue, May 28, 2024 at 2:45 PM Donald Zickus <dzickus@redhat.com> wrote:
> >
> > Hi Stephen,
> >
> > On Tue, May 14, 2024 at 6:04 PM Stephen Boyd <sboyd@kernel.org> wrote:
> >>
> >> Quoting Nico Pache (2024-05-14 00:14:24)
> >> > Hi Stephen,
> >> >
> >> > Yes, we have that commit. This is failing on fedora-ark, so it's
> >> > constantly updated to match upstream, and the earliest recorded
> >> > instance of it failing in our environment is v6.1.
> >> >
> >>
> >> Please don't top post. I'm unable to run s390 kunit tests in qemu. They
> >> seem to crash before finishing.
> >
> >
> > I am working with Nico on moving this forward.  What can we do to help resolve this?

Hello all,

I spent some time last week or so working on debugging these failures and I 
believe I have found the problem. I reached out to Malk Salter for advice on 
the best way to move forward with a fix on Friday the 17th, but he was on 
PTO for the last week. I was waiting for his reply before I replied to this 
thread. 

Also as a side note, I also ran into the same issue as Stephen with running
the kunit tests on s390 QEMU. I did not pursue resolving that issue and
instead just compiled the test as a module. 

For clarity, this is what I sent to Mark and were I believe the failure is
occurring:

The tests create a pretend clk-gate and use a "fake_reg" to emulate
the expected behavior of the clk_gate->reg. I added some debug
statements to the driver and noticed that the reg changes after
initialization to -1. I also noticed that we call this to read the
data in the clk-gate->reg:

static inline u32 clk_gate_readl(struct clk_gate *gate)
{
        if (gate->flags & CLK_GATE_BIG_ENDIAN)
                return ioread32be(gate->reg);

        return readl(gate->reg);
}

However, it does not look like ioread32be is defined for s390, so
instead the compiler uses read1 (which becomes zpci_load). I checked
this by dumping the assembler of the compiled kunit clk-gate_test:

/root/linux/drivers/clk/clk-gate.c: 29
0x13214c9c6 <clk_gate_is_enabled+38>:   tm      33(%r2),4
0x13214c9ca <clk_gate_is_enabled+42>:   jne     0x13214ca82
<clk_gate_is_enabled+226>
/root/linux/./arch/s390/include/asm/pci_io.h: 64
0x13214c9ce <clk_gate_is_enabled+46>:   lghi    %r4,4
0x13214c9d2 <clk_gate_is_enabled+50>:   la      %r2,160(%r15)
0x13214c9d6 <clk_gate_is_enabled+54>:   brasl   %r14,0x131bbc3f0 <zpci_load>
0x13214c9dc <clk_gate_is_enabled+60>:   cije    %r2,0,0x13214ca78
<clk_gate_is_enabled+216>

Following up on this, I noticed that if the zpci_load is not
successful, we will return a -1:

static inline RETTYPE zpci_read_##RETTYPE(const volatile void __iomem
*addr)    \
{
         \
        u64 data;
         \
        int rc;
         \

         \
        rc = zpci_load(&data, addr, LENGTH);
         \
        if (rc)
         \
                data = -1ULL;
         \
        return (RETTYPE) data;
         \
}


All this to say, I'm not sure the best way to resolve this problem. We
need to patch clk_gate_readl() but I am not sure the best way to go
about doing this for big_endian systems.

Any recommedations on the best way to resolve this problem is welcomed!

Thanks in advance!

-- Audra Mitchell


> >
> > Cheers,
> > Don
> >
> >>
> >>
> >>  ./tools/testing/kunit/kunit.py run --kunitconfig=lib/kunit --arch=s390 --cross_compile=/path/to/s390-linux-
> >>
> >> [14:55:10] Starting KUnit Kernel (1/1)...
> >> [14:55:10] ============================================================
> >> Running tests with:
> >> $ qemu-system-s390x -nodefaults -m 1024 -kernel .kunit/arch/s390/boot/bzImage -append 'kunit.enable=1 console=ttyS0 kunit_shutdown=reboot' -no-reboot -nographic -serial stdio -machine s390-ccw-virtio -cpu qemu
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ================= example_init (1 subtest) =================
> >> [14:55:11] [PASSED] example_init_test
> >> [14:55:11] ================== [PASSED] example_init ===================
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ============= kunit_executor_test (8 subtests) =============
> >> [14:55:11] [PASSED] parse_filter_test
> >> [14:55:11] [PASSED] filter_suites_test
> >> [14:55:11] [PASSED] filter_suites_test_glob_test
> >> [14:55:11] [PASSED] filter_suites_to_empty_test
> >> [14:55:11] [PASSED] parse_filter_attr_test
> >> [14:55:11] [PASSED] filter_attr_test
> >> [14:55:11] [PASSED] filter_attr_empty_test
> >> [14:55:11] [PASSED] filter_attr_skip_test
> >> [14:55:11] [ERROR] Test: kunit_executor_test: Expected test number 1 but found 2
> >> [14:55:11] =============== [PASSED] kunit_executor_test ===============
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ============ kunit-try-catch-test (2 subtests) =============
> >> [14:55:11] [PASSED] kunit_test_try_catch_successful_try_no_catch
> >> [14:55:11] [PASSED] kunit_test_try_catch_unsuccessful_try_does_catch
> >> [14:55:11] [ERROR] Test: kunit-try-catch-test: Expected test number 1 but found 3
> >> [14:55:11] ============== [PASSED] kunit-try-catch-test ===============
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ============ kunit-resource-test (12 subtests) =============
> >> [14:55:11] [PASSED] kunit_resource_test_init_resources
> >> [14:55:11] [PASSED] kunit_resource_test_alloc_resource
> >> [14:55:11] [PASSED] kunit_resource_test_destroy_resource
> >> [14:55:11] [PASSED] kunit_resource_test_remove_resource
> >> [14:55:11] [PASSED] kunit_resource_test_cleanup_resources
> >> [14:55:11] [PASSED] kunit_resource_test_proper_free_ordering
> >> [14:55:11] [PASSED] kunit_resource_test_static
> >> [14:55:11] [PASSED] kunit_resource_test_named
> >> [14:55:11] [PASSED] kunit_resource_test_action
> >> [14:55:11] [PASSED] kunit_resource_test_remove_action
> >> [14:55:11] [PASSED] kunit_resource_test_release_action
> >> [14:55:11] [PASSED] kunit_resource_test_action_ordering
> >> [14:55:11] [ERROR] Test: kunit-resource-test: Expected test number 1 but found 4
> >> [14:55:11] =============== [PASSED] kunit-resource-test ===============
> >> [14:55:11] =============================  =============================
> >> [14:55:11] =============== kunit-log-test (2 subtests) ================
> >> [14:55:11] [PASSED] kunit_log_test
> >> [14:55:11] [SKIPPED] kunit_log_newline_test
> >> [14:55:11] [ERROR] Test: kunit-log-test: Expected test number 1 but found 5
> >> [14:55:11] ================= [PASSED] kunit-log-test ==================
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ================ kunit_status (2 subtests) =================
> >> [14:55:11] [PASSED] kunit_status_set_failure_test
> >> [14:55:11] [PASSED] kunit_status_mark_skipped_test
> >> [14:55:11] [ERROR] Test: kunit_status: Expected test number 1 but found 6
> >> [14:55:11] ================== [PASSED] kunit_status ===================
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ================ kunit_current (2 subtests) ================
> >> [14:55:11] [PASSED] kunit_current_test
> >> [14:55:11] [PASSED] kunit_current_fail_test
> >> [14:55:11] [ERROR] Test: kunit_current: Expected test number 1 but found 7
> >> [14:55:11] ================== [PASSED] kunit_current ==================
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ================ kunit_device (3 subtests) =================
> >> [14:55:11] [PASSED] kunit_device_test
> >> [14:55:11] [PASSED] kunit_device_cleanup_test
> >> [14:55:11] [PASSED] kunit_device_driver_test
> >> [14:55:11] [ERROR] Test: kunit_device: Expected test number 1 but found 8
> >> [14:55:11] ================== [PASSED] kunit_device ===================
> >> [14:55:11] =============================  =============================
> >> [14:55:11] ============= string-stream-test (12 subtests) =============
> >> [14:55:11] [PASSED] string_stream_managed_init_test
> >> [14:55:11] [PASSED] string_stream_unmanaged_init_test
> >> [14:55:11] [PASSED] string_stream_managed_free_test
> >> [14:55:11] [PASSED] string_stream_resource_free_test
> >> [14:55:11] [PASSED] string_stream_line_add_test
> >> [14:55:11] [PASSED] string_stream_variable_length_line_test
> >> [14:55:11] [PASSED] string_stream_append_test
> >> [14:55:11] [PASSED] string_stream_append_auto_newline_test
> >> [14:55:11] [PASSED] string_stream_append_empty_string_test
> >> [14:55:11] [PASSED] string_stream_no_auto_newline_test
> >> [14:55:11] [PASSED] string_stream_auto_newline_test
> >> [14:55:11] [PASSED] string_stream_performance_test
> >> [14:55:11] [ERROR] Test: string-stream-test: Expected test number 1 but found 9
> >> [14:55:11] =============== [PASSED] string-stream-test ================
> >> [14:55:11] =============================  =============================
> >> [14:55:11] =================== example (9 subtests) ===================
> >> [14:55:11] [PASSED] example_simple_test
> >> [14:55:11] [SKIPPED] example_skip_test
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11]
> >> [14:55:11] # example_mark_skipped_test: initializing
> >> [14:55:11]
> >> [14:55:11] # example_mark_skipped_test: You should see a line below.
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: example: missing subtest result line!
> >> [14:55:11]
> >> [14:55:11] # module: kunit_example_test
> >> [14:55:11] ==================== [CRASHED] example =====================
> >> [14:55:11]
> >> [14:55:11] # example: initializing suite
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11]
> >> [14:55:11] ======================== [CRASHED]  ========================
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] [ERROR] Test: main: missing expected subtest!
> >> [14:55:11] [CRASHED]
> >> [14:55:11] ============================================================
> >> [14:55:11] Testing complete. Ran 62 tests: passed: 44, crashed: 16, skipped: 2, errors: 25
> >> The kernel seems to have crashed; you can decode the stack traces with:
> >> $ scripts/decode_stacktrace.sh .kunit/vmlinux .kunit < .kunit/test.log | tee .kunit/decoded.log | ./tools/testing/kunit/kunit.py parse
> >> [14:55:11] Elapsed time: 16.240s total, 1.476s configuring, 14.294s building, 0.469s running
> >>
> >> I wonder if something with my local environment is causing troubles.
> >>


  reply	other threads:[~2024-05-28 20:49 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-14  1:08 [Bug Report] Multiple S390x KUNIT clk failures Nico Pache
2024-05-14  3:38 ` Stephen Boyd
2024-05-14  7:14   ` Nico Pache
2024-05-14 22:04     ` Stephen Boyd
     [not found]       ` <CAK18DXZyEHZ=1TC52kQQ89gscFLph0e_4zB_bt=DTwR-A=0UPA@mail.gmail.com>
2024-05-28 18:49         ` Donald Zickus
2024-05-28 20:49           ` Audra Mitchell [this message]
2024-05-28 22:53             ` msalter
2024-05-29 19:39               ` Stephen Boyd
2024-05-30 20:12                 ` Audra Mitchell

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=ZlZDR3xhZfK43njo@fedora \
    --to=audra@redhat.com \
    --cc=aubaker@redhat.com \
    --cc=dzickus@redhat.com \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=msalter@redhat.com \
    --cc=npache@redhat.com \
    --cc=sboyd@kernel.org \
    --cc=skhan@linuxfoundation.org \
    /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