All of lore.kernel.org
 help / color / mirror / Atom feed
From: Huang Rui <ray.huang@amd.com>
To: "Meng, Li (Jassmine)" <Li.Meng@amd.com>
Cc: Shuah Khan <skhan@linuxfoundation.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
	"Fontenot, Nathan" <Nathan.Fontenot@amd.com>,
	"Sharma, Deepak" <Deepak.Sharma@amd.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Limonciello, Mario" <Mario.Limonciello@amd.com>,
	"Su, Jinzhou (Joe)" <Jinzhou.Su@amd.com>,
	"Yuan, Perry" <Perry.Yuan@amd.com>,
	"Du, Xiaojian" <Xiaojian.Du@amd.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Borislav Petkov <bp@alien8.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH V4 3/3] Documentation: amd-pstate: Add unit test introduction
Date: Thu, 28 Apr 2022 17:14:37 +0800	[thread overview]
Message-ID: <Ympa/YusPdnYhfRH@amd.com> (raw)
In-Reply-To: <20220427135315.3447550-4-li.meng@amd.com>

On Wed, Apr 27, 2022 at 09:53:15PM +0800, Meng, Li (Jassmine) wrote:
> Introduce the AMD P-State unit test module design and implementation.
> 
> Signed-off-by: Meng Li <li.meng@amd.com>
> ---
>  Documentation/admin-guide/pm/amd-pstate.rst | 87 +++++++++++++++++++++
>  1 file changed, 87 insertions(+)
> 
> diff --git a/Documentation/admin-guide/pm/amd-pstate.rst b/Documentation/admin-guide/pm/amd-pstate.rst
> index 83b58eb4ab4d..395b8b5c680c 100644
> --- a/Documentation/admin-guide/pm/amd-pstate.rst
> +++ b/Documentation/admin-guide/pm/amd-pstate.rst
> @@ -182,6 +182,7 @@ to the ``struct sugov_cpu`` that the utilization update belongs to.
>  Then, ``amd-pstate`` updates the desired performance according to the CPU
>  scheduler assigned.
>  
> +.. _processor_support:
>  
>  Processor Support
>  =======================
> @@ -282,6 +283,8 @@ efficiency frequency management method on AMD processors.
>  Kernel Module Options for ``amd-pstate``
>  =========================================
>  
> +.. _shared_mem:
> +
>  ``shared_mem``
>  Use a module param (shared_mem) to enable related processors manually with
>  **amd_pstate.shared_mem=1**.
> @@ -393,6 +396,87 @@ about part of the output. ::
>   CPU_005     712          116384        39        49        166       0.7565  9645075 2214891 38431470  25.1   11.646       469         2.496         kworker/5:0-40
>   CPU_006     712          116408        39        49        166       0.6769  8950227 1839034 37192089  24.06  11.272       470         2.496         kworker/6:0-1264
>  
> +Unit Tests for amd-pstate
> +-------------------------
> +
> +``amd-pstate-ut`` is a test module for testing the ``amd-pstate`` driver.
> +
> + * It can help all users to verify their processor support (SBIOS/Firmware or Hardware).
> +
> + * Kernel can have a basic function test to avoid the kernel regression during the update.
> +
> + * We can introduce more functional or performance tests to align the result together, it will benefit power and performance scale optimization.
> +
> +1. Test case decriptions
> +
> +        +---------+--------------------------------+------------------------------------------------------------------------------------+
> +        | Index   | Functions                      | Description                                                                        |
> +        +=========+================================+====================================================================================+
> +        | 0       | aput_acpi_cpc                  || Check whether the _CPC object is present in SBIOS.                                |
> +        |         |                                ||                                                                                   |
> +        |         |                                || The detail refer to `Processor Support <processor_support_>`_.                    |
> +        +---------+--------------------------------+------------------------------------------------------------------------------------+
> +        | 1       | aput_check_enabled             || Check whether AMD P-State is enabled.                                             |
> +        |         |                                ||                                                                                   |
> +        |         |                                || AMD P-States and ACPI hardware P-States always can be supported in one processor. |
> +        |         |                                | But AMD P-States has the higher priority and if it is enabled with                 |
> +        |         |                                | :c:macro:`MSR_AMD_CPPC_ENABLE` or ``cppc_set_enable``, it will respond to the      |
> +        |         |                                | request from AMD P-States.                                                         |
> +        +---------+--------------------------------+------------------------------------------------------------------------------------+
> +        | 2       | aput_check_perf                || Check if the each performance values are reasonable.                              |
> +        |         |                                || highest_perf >= nominal_perf > lowest_nonlinear_perf > lowest_perf > 0.           |
> +        +---------+--------------------------------+------------------------------------------------------------------------------------+
> +        | 3       | aput_check_freq                || Check if the each frequency values and max freq when set support boost mode       |
> +        |         |                                | are reasonable.                                                                    |
> +        |         |                                || max_freq >= nominal_freq > lowest_nonlinear_freq > min_freq > 0                   |
> +        |         |                                || If boost is not active but supported, this maximum frequency will be larger than  |
> +        |         |                                | the one in ``cpuinfo``.                                                            |
> +        +---------+--------------------------------+------------------------------------------------------------------------------------+
> +
> +#. How to execute the tests
> +
> +   We use test module in the kselftest frameworks to implement it.
> +   We create amd-pstate-ut module and tie it into kselftest.(for
> +   details refer to Linux Kernel Selftests [4]_).
> +
> +    1. Build ::
> +
> +        jasminemeng@jasmine-meng:~/amd-brahma$ cd linux
> +        jasminemeng@jasmine-meng:~/amd-brahma/linux$ make modules M=tools/testing/selftests/amd-pstate/amd-pstate-ut
> +          CC [M]  tools/testing/selftests/amd-pstate/amd-pstate-ut/amd-pstate-ut.o
> +          MODPOST tools/testing/selftests/amd-pstate/amd-pstate-ut/Module.symvers
> +          CC [M]  tools/testing/selftests/amd-pstate/amd-pstate-ut/amd-pstate-ut.mod.o
> +          LD [M]  tools/testing/selftests/amd-pstate/amd-pstate-ut/amd-pstate-ut.ko
> +          BTF [M] tools/testing/selftests/amd-pstate/amd-pstate-ut/amd-pstate-ut.ko
> +        jasminemeng@jasmine-meng:~/amd-brahma/linux$ make -C tools/testing/selftests
> +
> +    #. Installation & Steps ::
> +
> +        jasmine@jasmine-MayanDAP-RMB:~/amd-brahma/linux$ make -C tools/testing/selftests install INSTALL_PATH=~/kselftest
> +        jasmine@jasmine-MayanDAP-RMB:~$ sudo cp amd-pstate-ut.ko /lib/modules/5.18.0-rc2+/

We should not mention a specfic kernel version "5.18.0-rc2+" here.

> +        jasmine@jasmine-MayanDAP-RMB:~$ sudo depmod
> +        jasmine@jasmine-MayanDAP-RMB:~$ sudo ./kselftest/run_kselftest.sh -c amd-pstate

"Can we move "insmod/rmmod amd-pstate-ut.ko" stuff into script amd_pstate_ut.sh?

Thanks,
Ray

> +        TAP version 13
> +        1..1
> +        # selftests: amd-pstate: amd-pstate-ut.sh
> +        # amd-pstate-ut: ok
> +        ok 1 selftests: amd-pstate: amd-pstate-ut.sh
> +
> +    #. Results ::
> +
> +         jasmine@jasmine-MayanDAP-RMB:~$ dmesg | grep "amd-pstate-ut" | tee log.txt
> +         [76697.480217] amd-pstate-ut: loaded.
> +         [76697.480222] amd-pstate-ut: ****** Begin 1             acpi_cpc_valid          ******
> +         [76697.480227] amd-pstate-ut: ****** End   1             acpi_cpc_valid          ******
> +         [76697.480228] amd-pstate-ut: ****** Begin 2             check_enabled           ******
> +         [76697.480253] amd-pstate-ut: ****** End   2             check_enabled           ******
> +         [76697.480255] amd-pstate-ut: ****** Begin 3             check_perf              ******
> +         [76697.480554] amd-pstate-ut: ****** End   3             check_perf              ******
> +         [76697.480556] amd-pstate-ut: ****** Begin 4             check_freq              ******
> +         [76697.480558] amd-pstate-ut: ****** End   4             check_freq              ******
> +         [76697.480559] amd-pstate-ut: all 4 tests passed
> +         [76697.482507] amd-pstate-ut: unloaded.
> +
>  
>  Reference
>  ===========
> @@ -405,3 +489,6 @@ Reference
>  
>  .. [3] Processor Programming Reference (PPR) for AMD Family 19h Model 51h, Revision A1 Processors
>         https://www.amd.com/system/files/TechDocs/56569-A1-PUB.zip
> +
> +.. [4] Linux Kernel Selftests,
> +       https://www.kernel.org/doc/html/latest/dev-tools/kselftest.html
> -- 
> 2.25.1
> 

      reply	other threads:[~2022-04-28  9:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-27 13:53 [PATCH V4 0/3] Add unit test module for AMD P-State driver Meng Li
2022-04-27 13:53 ` [PATCH V4 1/3] cpufreq: amd-pstate: Expose struct amd_cpudata Meng Li
2022-04-28  7:25   ` Huang Rui
2022-04-27 13:53 ` [PATCH V4 2/3] selftests: amd-pstate: Add test module for amd-pstate driver Meng Li
2022-04-28  9:55   ` Huang Rui
2022-04-27 13:53 ` [PATCH V4 3/3] Documentation: amd-pstate: Add unit test introduction Meng Li
2022-04-28  9:14   ` Huang Rui [this message]

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=Ympa/YusPdnYhfRH@amd.com \
    --to=ray.huang@amd.com \
    --cc=Alexander.Deucher@amd.com \
    --cc=Deepak.Sharma@amd.com \
    --cc=Jinzhou.Su@amd.com \
    --cc=Li.Meng@amd.com \
    --cc=Mario.Limonciello@amd.com \
    --cc=Nathan.Fontenot@amd.com \
    --cc=Perry.Yuan@amd.com \
    --cc=Xiaojian.Du@amd.com \
    --cc=bp@alien8.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=skhan@linuxfoundation.org \
    --cc=viresh.kumar@linaro.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 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.