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

Yazen Ghannam <[email protected]>
Newsgroups org.kernel.vger.stable,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Mon, Aug 24, 2026 at 04:05:40PM -0400, Jason Andryuk wrote:
> Hi,
> 
> On 2026-08-14 17:42, 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]>
> 
> Any feedback here?
> 
> Thanks,
> Jason
> 
> > ---
> > 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;
> > +	}

Minor nit: add a newline after the closing brace.

> >   	count = 0;
> >   	node = 0;
> 

Overall, looks good to me.

Reviewed-by: Yazen Ghannam <[email protected]>

Thanks,
Yazen
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.