Message ID | 1410874095-11814-1-git-send-email-bpicco@meloft.net |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
From: Bob Picco <bpicco@meloft.net> Date: Tue, 16 Sep 2014 09:28:15 -0400 > From: bob picco <bpicco@meloft.net> > > We have seen an issue with guest boot into LDOM that causes early boot failures > because of no matching rules for node identitity of the memory. I analyzed this > on my T4 and concluded there might not be a solution. I saw the issue in > mainline too when booting into the control/primary domain - with guests > configured. Note, this could be a firmware bug on some older machines. > > I'll provide a full explanation of the issues below. Should we not find a > matching BEST latency group for a real address (RA) then we will assume node 0. > On the T4-2 here with the information provided I can't see an alternative. > > Technically the LDOM shown below should match the MBLOCK to the > favorable latency group. However other factors must be considered too. Were > the memory controllers configured "fine" grained interleave or "coarse" > grain interleaved - T4. Also should a "group" MD node be considered a NUMA > node? > > There has to be at least one Machine Description (MD) "group" and hence one > NUMA node. The group can have one or more latency groups (lg) - more than one > memory controller. The current code chooses the smallest latency as the most > favorable per group. The latency and lg information is in MLGROUP below. > MBLOCK is the base and size of the RAs for the machine as fetched from OBP > /memory "available" property. My machine has one MBLOCK but more would be > possible - with holes? ... > Signed-off-by: Bob Picco <bob.picco@oracle.com> > --- > V2: remove Oracle only accessible URL. Applied. -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index eaf7cf5..87047fb 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c @@ -840,7 +840,10 @@ static int find_node(unsigned long addr) if ((addr & p->mask) == p->val) return i; } - return -1; + /* The following condition has been observed on LDOM guests.*/ + WARN_ONCE(1, "find_node: A physical address doesn't match a NUMA node" + " rule. Some physical memory will be owned by node 0."); + return 0; } static u64 memblock_nid_range(u64 start, u64 end, int *nid)