From: Chao Gao <chao.gao@intel.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
xen-devel@lists.xenproject.org,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Brian Woods <brian.woods@amd.com>
Subject: Re: [PATCH v4 2/6] microcode: save all microcodes which pass sanity check
Date: Fri, 30 Nov 2018 15:55:09 +0800 [thread overview]
Message-ID: <20181130075507.GA32365@gao-cwp> (raw)
In-Reply-To: <20181129092210.fn3ogj5kdsgqlumk@mac>
On Thu, Nov 29, 2018 at 10:22:10AM +0100, Roger Pau Monné wrote:
>On Thu, Nov 29, 2018 at 10:40:32AM +0800, Chao Gao wrote:
>> On Wed, Nov 28, 2018 at 01:00:14PM +0100, Roger Pau Monné wrote:
>> >On Wed, Nov 28, 2018 at 01:34:12PM +0800, Chao Gao wrote:
>> >> ... and search caches to find a suitable one when loading.
>> >
>> >Why do you need to save all of them? You are only going to load a
>> >single microcode, so I don't understand the need to cache them all.
>
>I think the above question needs an answer.
Out of consideraton for a mixed-family system. Anyway, Since Jan commented
that we gave up support of a mixed-family system, we only need to save
a single microcode for offlined or hot-plugged cpus.
>
>> >IMO making such modifications to the AMD code without testing it is
>> >very dangerous. Could you get an AMD system or ask an AMD dev to test
>> >it? I would try with the AMD SVM maintainers.
>>
>> It is improbable for me to find an AMD machine in my team. I will copy AMD
>> SVM maintainers in the coming versions and ask them to help to test this
>> series.
>
>I'm Cc'ing them now in case they want to provide some feedback.
>
>> >> +static int save_patch(struct ucode_patch *new_patch)
>> >> +{
>> >> + struct ucode_patch *ucode_patch;
>> >> + struct microcode_amd *new_mc = new_patch->data;
>> >> + struct microcode_header_amd *new_header = new_mc->mpb;
>> >> +
>> >> + list_for_each_entry(ucode_patch, µcode_cache, list)
>> >> + {
>> >> + struct microcode_amd *old_mc = ucode_patch->data;
>> >> + struct microcode_header_amd *old_header = old_mc->mpb;
>> >> +
>> >> + if ( new_header->processor_rev_id == old_header->processor_rev_id )
>> >> + {
>> >> + if ( new_header->patch_id <= old_header->patch_id )
>> >> + return -1;
>> >> + list_replace(&ucode_patch->list, &new_patch->list);
>> >> + free_ucode_patch(ucode_patch);
>> >> + return 0;
>> >> + }
>> >> + }
>> >
>> >This could be made common code with a specific hook for AMD and Intel
>> >in order to do the comparison, so that at least the loop over the
>> >list of ucode entries could be shared.
>>
>> Something like pt_pirq_iterate()? Will give it a try.
>
>Yes, that might also be helpful. I was thinking of adding such a
>comparison hook in microcode_ops, also having something like
>pt_pirq_iterate will be helpful if you need to iterate over the cache
>in other functions.
As I am going to remove the microcode cache list, I needn't to iterate
over a list.
Thanks
Chao
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2018-11-30 7:52 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-28 5:34 [PATCH v4 0/6] improve late microcode loading Chao Gao
2018-11-28 5:34 ` [PATCH v4 1/6] microcode/intel: extend microcode_update_match() Chao Gao
2018-11-28 10:58 ` Roger Pau Monné
2018-11-29 2:00 ` Chao Gao
2018-11-29 9:14 ` Roger Pau Monné
2018-11-28 5:34 ` [PATCH v4 2/6] microcode: save all microcodes which pass sanity check Chao Gao
2018-11-28 12:00 ` Roger Pau Monné
2018-11-29 2:40 ` Chao Gao
2018-11-29 9:22 ` Roger Pau Monné
2018-11-30 7:55 ` Chao Gao [this message]
2018-11-30 9:32 ` Jan Beulich
2019-01-15 15:07 ` Andrew Cooper
2018-12-04 22:39 ` Woods, Brian
2018-12-05 7:38 ` Chao Gao
2018-11-29 10:19 ` Jan Beulich
2019-01-15 15:15 ` Andrew Cooper
2018-11-28 5:34 ` [PATCH v4 3/6] microcode: delete 'mc' field from struct ucode_cpu_info Chao Gao
2018-11-28 12:32 ` Roger Pau Monné
2018-11-28 5:34 ` [PATCH v4 4/6] microcode: don't call apply_microcode() in cpu_request_microcode() Chao Gao
2018-11-28 15:02 ` Roger Pau Monné
2018-11-29 4:28 ` Chao Gao
2018-11-29 9:46 ` Roger Pau Monné
2018-11-30 8:57 ` Chao Gao
2018-11-30 9:38 ` Jan Beulich
2018-11-28 5:34 ` [PATCH v4 5/6] microcode: delete microcode pointer and size from microcode_info Chao Gao
2018-11-28 15:04 ` Roger Pau Monné
2018-11-28 5:34 ` [PATCH v4 6/6] x86/microcode: Synchronize late microcode loading Chao Gao
2018-11-28 15:22 ` Roger Pau Monné
2018-11-29 4:43 ` Chao Gao
2018-11-29 9:56 ` Roger Pau Monné
2018-11-29 22:43 ` Boris Ostrovsky
2018-11-30 9:46 ` Jan Beulich
2018-11-30 16:49 ` Boris Ostrovsky
2018-11-30 9:01 ` Chao Gao
2019-01-15 15:24 ` Andrew Cooper
2019-01-15 16:24 ` Roger Pau Monné
2018-12-11 17:01 ` Jan Beulich
2018-12-11 18:16 ` Raj, Ashok
2018-12-12 7:26 ` Jan Beulich
2018-12-13 2:10 ` Boris Ostrovsky
2018-12-12 4:53 ` Chao Gao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181130075507.GA32365@gao-cwp \
--to=chao.gao@intel.com \
--cc=andrew.cooper3@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=brian.woods@amd.com \
--cc=jbeulich@suse.com \
--cc=roger.pau@citrix.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.