Re: [PATCH v2 1/2] x86/amd_node: Avoid divide by zero on virtualized systems

Borislav Petkov <[email protected]>
Newsgroups org.kernel.vger.stable,org.kernel.vger.linux-kernel
Message-ID <20260825040039.GAao0TZ6b8j0kp2RKk@fat_crate.local>
On Fri, Aug 14, 2026 at 05:42:52PM -0400, Jason Andryuk wrote:
> On a virtualized system, the number of nodes does not have a
> relationship to the number of roots.  A Xen PVH dom0 can calculate
> roots_per_node as 0, which crashes with a divide by zero in:
> 
>     if (count++ % roots_per_node)
> 
> The issue is seen with Xen, but it could affect other systems.
> 
> Change roots_per_node == 0 to 1 to allow the system to boot.  Print a
> warning when this is performed for non-virtualized systems.
> 
> Fixes: 0a4b61d9c2e4 ("x86/amd_node: Fix AMD root device caching")
> Cc: [email protected]
> Suggested-by: Borislav Petkov <[email protected]>
> Signed-off-by: Jason Andryuk <[email protected]>
> ---
> v2:
> Print as a warning instead of error
> Use "!" instead of "== 0".
> 
> X86_FEATURE_XENPV is only for PV, but this is observed with a PVH dom0.
> ---
>  arch/x86/kernel/amd_node.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/x86/kernel/amd_node.c b/arch/x86/kernel/amd_node.c
> index 0be01725a2a4..c3e214925d9c 100644
> --- a/arch/x86/kernel/amd_node.c
> +++ b/arch/x86/kernel/amd_node.c
> @@ -287,6 +287,11 @@ static int __init amd_smn_init(void)
>  		return -ENOMEM;
>  
>  	roots_per_node = num_roots / num_nodes;
> +	if (!roots_per_node) {
> +		if (!cpu_feature_enabled(X86_FEATURE_HYPERVISOR))
> +			pr_warn(FW_BUG "Error detecting roots per node.");
> +		roots_per_node = 1;
> +	}
>  
>  	count = 0;
>  	node = 0;
> -- 

https://sashiko.dev/#/patchset/20260814214255.83127-1-jason.andryuk%40amd.com

And this one specifically (the other two are being addressed):

"Are we missing a newline character at the end of this warning message?
Without a trailing \n in the format string, subsequent kernel messages might
be appended to the same line, resulting in malformed dmesg output."

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.