[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RESEND v5 04/24] x86: refactor psr: implement CPU init and free flow.
>>> On 31.01.17 at 03:44, <konrad.wilk@xxxxxxxxxx> wrote: > On Thu, Jan 19, 2017 at 02:01:06PM +0800, Yi Sun wrote: >> @@ -127,6 +130,13 @@ struct feat_node { >> struct list_head list; >> }; >> >> +struct cpuid_leaf_regs { >> + unsigned int eax; >> + unsigned int ebx; >> + unsigned int ecx; >> + unsigned int edx; >> +}; > > Could you use 'struct cpuid_leaf' in x86_emulate.h ? > > It would only require "#include <asm/x86_emulate.h>" I believe. Indeed - I recall specifically having asked for that. >> static int psr_cpu_prepare(unsigned int cpu) >> { >> + if ( !socket_info ) >> + return 0; >> + >> + /* Malloc memory for the global feature head here. */ >> + if ( feat_l3_cat == NULL && >> + (feat_l3_cat = xzalloc(struct feat_node)) == NULL ) > > /me scratches his head. > > Lets say we have a two socket machine. Each socket has > two CPUs (so total of 4 CPUs). > > On CPU0 (in psr_presmp_init) it allocates feat_l3_cat. Then > later in (in psr_presmp_init) you call psr_cpu_init which > sets feat_l3_cat to NULL (and 'feat' is feat_l3_cat). > > When CPU1 starts up then, psr_cpu_prepare is called > which means we allocate a new feat_l3_cat. 'cpu_init_work' > short-circuits (as info->feat_mask has a value) and does not > do anything. > > When CPU2 (socket two), starts up then feat_l3_cat (as 'feat') > is used (in psr_cpu_init and again sets feat_l3_cat to NULL). > > The last CPU3 (socket #2) starts up, and since feat_l3_cat is > NULL - it is allocated. But in 'cpu_init_work' it short-circuits > so we don't use third allocated 'feat_l3_cat' . > > And we have an 'feat_l3_cat' that is not used for anything.. > > In other words - a memory leak. Granted a very small one. I did recommend to do it that way, to simplify things a little. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |