[U-Boot] [PATCH 24/69] x86: Move Intel Management Engine code to a common place
Simon Glass
sjg at chromium.org
Sat Mar 12 06:04:31 CET 2016
Hi Bin,
On 10 March 2016 at 22:27, Bin Meng <bmeng.cn at gmail.com> wrote:
> Hi Simon,
>
> On Mon, Mar 7, 2016 at 10:28 AM, Simon Glass <sjg at chromium.org> wrote:
>> Some of the Intel ME code is common to several Intel CPUs. Move it into a
>> common location. Add a header file for report_platform.c also.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>> arch/x86/cpu/intel_common/Makefile | 2 +
>> .../cpu/{ivybridge => intel_common}/me_status.c | 20 +-
>> .../{ivybridge => intel_common}/report_platform.c | 2 +-
>> arch/x86/cpu/ivybridge/Makefile | 2 -
>> arch/x86/cpu/ivybridge/early_me.c | 31 +-
>> arch/x86/cpu/ivybridge/sdram.c | 3 +-
>> arch/x86/include/asm/arch-ivybridge/me.h | 333 +-----------------
>> arch/x86/include/asm/arch-ivybridge/sandybridge.h | 2 -
>> arch/x86/include/asm/me_common.h | 372 +++++++++++++++++++++
>> arch/x86/include/asm/report_platform.h | 19 ++
>> 10 files changed, 417 insertions(+), 369 deletions(-)
>> rename arch/x86/cpu/{ivybridge => intel_common}/me_status.c (93%)
>> rename arch/x86/cpu/{ivybridge => intel_common}/report_platform.c (98%)
>> create mode 100644 arch/x86/include/asm/me_common.h
>> create mode 100644 arch/x86/include/asm/report_platform.h
>>
>> diff --git a/arch/x86/cpu/intel_common/Makefile b/arch/x86/cpu/intel_common/Makefile
>> index e9a2b29..50023fe 100644
>> --- a/arch/x86/cpu/intel_common/Makefile
>> +++ b/arch/x86/cpu/intel_common/Makefile
>> @@ -7,6 +7,8 @@
>> obj-$(CONFIG_HAVE_MRC) += car.o
>> obj-y += cpu_common.o
>> obj-y += lpc_common.o
>> +obj-$(CONFIG_HAVE_MRC) += me_status.o
>> ifndef CONFIG_TARGET_EFI
>> obj-y += microcode_intel.o
>> endif
>> +obj-$(CONFIG_HAVE_MRC) += report_platform.o
>> diff --git a/arch/x86/cpu/ivybridge/me_status.c b/arch/x86/cpu/intel_common/me_status.c
>> similarity index 93%
>> rename from arch/x86/cpu/ivybridge/me_status.c
>> rename to arch/x86/cpu/intel_common/me_status.c
>> index 15cf69f..130d219 100644
>> --- a/arch/x86/cpu/ivybridge/me_status.c
>> +++ b/arch/x86/cpu/intel_common/me_status.c
>> @@ -128,7 +128,14 @@ static const char *const me_progress_policy_values[] = {
>> [0x10] = "Required VSCC values for flash parts do not match",
>> };
>>
>> -void intel_me_status(struct me_hfs *hfs, struct me_gmes *gmes)
>> +
>> +/**
>> + * _intel_me_status() - Check Intel Management Engine status
>> + *
>> + * struct hfs: Firmware status
>> + * struct gmes: Management engine status
>> + */
>> +static void _intel_me_status(struct me_hfs *hfs, struct me_gmes *gmes)
>> {
>> /* Check Current States */
>> debug("ME: FW Partition Table : %s\n",
>> @@ -193,3 +200,14 @@ void intel_me_status(struct me_hfs *hfs, struct me_gmes *gmes)
>> }
>> debug("\n");
>> }
>> +
>> +void intel_me_status(struct udevice *me_dev)
>> +{
>> + struct me_hfs hfs;
>> + struct me_gmes gmes;
>> +
>> + pci_read_dword_ptr(me_dev, &hfs, PCI_ME_HFS);
>> + pci_read_dword_ptr(me_dev, &gmes, PCI_ME_GMES);
>
> The call to pci_read_dword_ptr() looks odd. Why not use the dm_pci_xx
> APIs directly?
It's because these are structus - in fact we are writing to a bitfield
here. It could perhaps use a union.
Regards,
Simon
More information about the U-Boot
mailing list