[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] microcode: Check whether the microcode is correct.
On Wed, Aug 07, 2013 at 03:17:07PM +0100, Jan Beulich wrote: > >>> On 19.07.13 at 05:59, Konrad Rzeszutek Wilk <konrad@xxxxxxxxxx> wrote: > > --- a/xen/arch/x86/microcode.c > > +++ b/xen/arch/x86/microcode.c > > @@ -433,24 +433,40 @@ static int __init microcode_presmp_init(void) > > { > > if ( ucode_mod.mod_end || ucode_blob.size ) > > { > > - void *data; > > - size_t len; > > - > > - if ( ucode_blob.size ) > > - { > > - len = ucode_blob.size; > > - data = ucode_blob.data; > > - } > > - else > > - { > > - len = ucode_mod.mod_end; > > - data = ucode_mod_map(&ucode_mod); > > - } > > - if ( data ) > > - microcode_update_cpu(data, len); > > - > > - if ( !ucode_blob.size ) > > - ucode_mod_map(NULL); > > + int rc; > > + do { > > + void *data = NULL; > > + size_t len; > > + > > + rc = 0; > > + if ( ucode_blob.size ) > > + { > > + len = ucode_blob.size; > > + data = ucode_blob.data; > > + } > > + else if ( ucode_mod.mod_end ) > > + { > > + len = ucode_mod.mod_end; > > + data = ucode_mod_map(&ucode_mod); > > + } > > + if ( data ) > > + rc = microcode_update_cpu(data, len); > > else rc = -ENOMEM (yielding the initialization above pointless). > > > + > > + if ( !ucode_blob.size && ucode_mod.mod_end ) > > + ucode_mod_map(NULL); > > + > > + if ( rc == -EINVAL ) > > if ( rc ) > > > + { > > + if ( ucode_blob.size ) /* That was tried first */ > > + { > > + ucode_blob.size = 0; > > + xfree(ucode_blob.data); > > + continue; > > + } > > + if ( ucode_mod.mod_end ) > > + ucode_mod.mod_end = 0; > > + } > > + } while ( rc ); > > } > > > > register_cpu_notifier(µcode_percpu_nfb); > > This may need re-doing anyway I we can agree that allowing both > location specifications at the same time is bogus and should hence > be dropped. Right. Lets continue the discussion on that "both location specifications" on the first patch and I can redo this based on the result of that discussion. > > Jan > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |