Re: [PATCH 9/9] x86/nmi: Improve NMI duration console print
From: Huang, Kai
Date: Mon Mar 31 2025 - 20:42:38 EST
On Thu, 2025-03-27 at 23:46 +0000, Mehta, Sohil wrote:
> Convert the last remaining printk() in nmi.c to pr_info(). Along with
> it, use timespec macros to calculate the NMI handler duration.
>
> Signed-off-by: Sohil Mehta <sohil.mehta@xxxxxxxxx>
I eventually figured out the reasons to use NSEC_PER_MSEC and NSEC_PER_USEC:
Reviewed-by: Kai Huang <kai.huang@xxxxxxxxx>
> ---
> arch/x86/kernel/nmi.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
> index 59ed74ec010e..be93ec7255bf 100644
> --- a/arch/x86/kernel/nmi.c
> +++ b/arch/x86/kernel/nmi.c
> @@ -119,12 +119,12 @@ static void nmi_check_duration(struct nmiaction *action, u64 duration)
>
> action->max_duration = duration;
>
> - remainder_ns = do_div(duration, (1000 * 1000));
> - decimal_msecs = remainder_ns / 1000;
> + /* Convert duration from nsec to msec */
> + remainder_ns = do_div(duration, NSEC_PER_MSEC);
> + decimal_msecs = remainder_ns / NSEC_PER_USEC;
>
> - printk_ratelimited(KERN_INFO
> - "INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n",
> - action->handler, duration, decimal_msecs);
> + pr_info_ratelimited("INFO: NMI handler (%ps) took too long to run: %lld.%03d msecs\n",
> + action->handler, duration, decimal_msecs);
> }
>
> static int nmi_handle(unsigned int type, struct pt_regs *regs)