On 27/06/18 15:58, Jan Beulich wrote: >>>> On 27.06.18 at 15:55, <andrew.coop...@citrix.com> wrote: >> @@ -316,6 +319,33 @@ static void __init calculate_raw_policy(void) >> cpuid_count_leaf(7, i, &p->feat.raw[i]); >> } >> >> + if ( p->basic.max_leaf >= 0xb ) >> + { >> + union { >> + struct cpuid_leaf l; >> + struct cpuid_topo_leaf t; >> + } u; >> + >> + for ( i = 0; i < ARRAY_SIZE(p->topo.raw); ++i ) >> + { >> + cpuid_count_leaf(0xb, i, &u.l); >> + >> + if ( u.t.type == 0 ) >> + break; >> + >> + p->topo.subleaf[i] = u.t; >> + } >> + >> + /* >> + * The choice of CPUID_GUEST_NR_TOPO is per the manual. It may need >> + * to grow for future harware. > Missing d.
Where? I'm afraid that after repeated re-reads, I can't spot any issue. > >> @@ -108,7 +109,11 @@ struct cpuid_policy >> uint64_t :64, :64; /* Leaf 0x9 - DCA */ >> >> /* Leaf 0xa - Intel PMU. */ >> - uint8_t pmu_version; >> + uint8_t pmu_version, _pmu[15]; >> + >> + uint64_t :64, :64; /* Leaf 0xb - Topology. */ >> + uint64_t :64, :64; /* Leaf 0xc - rsvd */ >> + uint64_t :64, :64; /* Leaf 0xd - XSTATE. */ > I don't understand why you add the latter two lines, neither in general > nor in the particular context of this patch. This is part of reducing the effort for people extending the CPUID leaves, by keeping the .basic union in line with max_leaf. There are further non-subleaf leaves beyond this point (0x15/0x16) and I've noticed several mistakes with newer submitted series. I'd much rather do this myself once now, than attempt to explain it to others during code review. ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel