[edk2-devel] [edk2-platforms: PATCH V9] Platform/Intel: Correct CPU APIC IDs

Ni, Ray ray.ni at intel.com
Fri Aug 27 02:44:52 UTC 2021


> > +  //
> > +  // 5. Re-assigen AcpiProcessorId for AcpiProcessorUId uses purpose.
> > +  //
> > +  for (Socket = 0; Socket < MAX_SOCKET; Socket++) {

1. Or if you add a "Index = 0" to reset Index for each Socket, that also work.

> > +    for (CurrProcessor = 0, Index = 0; CurrProcessor < mNumberOfCpus; CurrProcessor++) {
> > +      if (mCpuApicIdOrderTable[CurrProcessor].Flags && (mCpuApicIdOrderTable[CurrProcessor].SocketNum == Socket)) {
> > +        mCpuApicIdOrderTable[CurrProcessor].AcpiProcessorId = (ProcessorInfoBuffer.Location.Package << mNumOfBitShift) +
> > Index;
> > +        Index++;
> >        }
> >      }
> > +  }
> 
> 1. I think you need to change above code to as below?
> UINTN IndexInSocket[MAX_SOCKET];
> 
> ZeroMem (IndexInSocket, sizeof (IndexInSocket));
> 
> for (Socket = 0; Socket < MAX_SOCKET; Socket++) {

2. My code is wrong. The for-loop above is not needed. I think you can simply make sure resetting "Index" to 0 for each socket in your original logic.

>   for (CurrProcessor = 0, Index = 0; CurrProcessor < mNumberOfCpus; CurrProcessor++) {
>      if (mCpuApicIdOrderTable[CurrProcessor].Flags && (mCpuApicIdOrderTable[CurrProcessor].SocketNum == Socket)) {
>         mCpuApicIdOrderTable[CurrProcessor].AcpiProcessorId = (ProcessorInfoBuffer.Location.Package << mNumOfBitShift) +
> IndexInSocket[Socket];
>         IndexInSocket[Socket]++;
>      }
> }
> 
> 2. Can you separate the code refinement change (looks like most of the changes below) in a separate patch?
> (No more comments)

Sending multiple patches together basically consists of several steps:
a. make changes and commit first patch that fix the bug
b. make changes and commit second patch that refines the existing code.
    (The 2nd change should not impact any behavior.)
c. "git format-patch -3" to generate three patch files.
d. use text editor to edit the number #0 patch file (cover letter) to describe briefly of the two patches
e. "git send-email *.patch"


> 
> >
> > -    //keep for debug purpose
> > -    DEBUG ((EFI_D_ERROR, "APIC ID Order Table ReOrdered\n"));
> > -    DebugDisplayReOrderTable();
> > +  //keep for debug purpose
> > +  DEBUG ((DEBUG_INFO, "APIC ID Order Table ReOrdered\n"));
> > +  DebugDisplayReOrderTable (mCpuApicIdOrderTable);
> >
> > -    mCpuOrderSorted = TRUE;
> > -  }
> > +  mCpuOrderSorted = TRUE;
> >
> >    return Status;
> >  }
> > @@ -602,11 +493,11 @@ InitializeMadtHeader (
> >    }
> >
> >    Status = InitializeHeader (
> > -    &MadtHeader->Header,
> > -    EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
> > -    EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION,
> > -    0
> > -    );
> > +             &MadtHeader->Header,
> > +             EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
> > +             EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION,
> > +             0
> > +             );
> >    if (EFI_ERROR (Status)) {
> >      return Status;
> >    }
> > @@ -784,11 +675,11 @@ BuildAcpiTable (
> >    // Allocate the memory needed for the table.
> >    //
> >    Status = AllocateTable (
> > -    TableSpecificHdrLength,
> > -    Structures,
> > -    StructureCount,
> > -    &InternalTable
> > -    );
> > +             TableSpecificHdrLength,
> > +             Structures,
> > +             StructureCount,
> > +             &InternalTable
> > +             );
> >    if (EFI_ERROR (Status)) {
> >      return Status;
> >    }
> > @@ -871,18 +762,22 @@ InstallMadtFromScratch (
> >    NewMadtTable = NULL;
> >    MaxMadtStructCount = 0;
> >
> > -  DetectApicIdMap();
> > +  mCpuApicIdOrderTable = AllocateZeroPool (mNumberOfCpus * sizeof (EFI_CPU_ID_ORDER_MAP));
> > +  if (mCpuApicIdOrderTable == NULL) {
> > +    DEBUG ((DEBUG_ERROR, "Could not allocate mCpuApicIdOrderTable structure pointer array\n"));
> > +    return EFI_OUT_OF_RESOURCES;
> > +  }
> >
> >    // Call for Local APIC ID Reorder
> >    Status = SortCpuLocalApicInTable ();
> >    if (EFI_ERROR (Status)) {
> > -    DEBUG ((EFI_D_ERROR, "SortCpuLocalApicInTable failed: %r\n", Status));
> > +    DEBUG ((DEBUG_ERROR, "SortCpuLocalApicInTable failed: %r\n", Status));
> >      goto Done;
> >    }
> >
> >    MaxMadtStructCount = (UINT32) (
> > -    MAX_CPU_NUM +    // processor local APIC structures
> > -    MAX_CPU_NUM +    // processor local x2APIC structures
> > +    mNumberOfCpus +  // processor local APIC structures
> > +    mNumberOfCpus +  // processor local x2APIC structures
> >      1 + PcdGet8(PcdPcIoApicCount) +   // I/O APIC structures
> >      2 +              // interrupt source override structures
> >      1 +              // local APIC NMI structures
> > @@ -906,11 +801,11 @@ InstallMadtFromScratch (
> >    //
> >    Status = InitializeMadtHeader (&MadtTableHeader);
> >    if (EFI_ERROR (Status)) {
> > -    DEBUG ((EFI_D_ERROR, "InitializeMadtHeader failed: %r\n", Status));
> > +    DEBUG ((DEBUG_ERROR, "InitializeMadtHeader failed: %r\n", Status));
> >      goto Done;
> >    }
> >
> > -  DEBUG ((EFI_D_INFO, "Number of CPUs detected = %d \n", mNumberOfCPUs));
> > +  DEBUG ((DEBUG_INFO, "Number of CPUs detected = %d \n", mNumberOfCpus));
> >
> >    //
> >    // Build Processor Local APIC Structures and Processor Local X2APIC Structures
> > @@ -923,7 +818,7 @@ InstallMadtFromScratch (
> >    ProcLocalX2ApicStruct.Reserved[0] = 0;
> >    ProcLocalX2ApicStruct.Reserved[1] = 0;
> >
> > -  for (Index = 0; Index < MAX_CPU_NUM; Index++) {
> > +  for (Index = 0; Index < mNumberOfCpus; Index++) {
> >      //
> >      // If x2APIC mode is not enabled, and if it is possible to express the
> >      // APIC ID as a UINT8, use a processor local APIC structure. Otherwise,
> > @@ -936,10 +831,10 @@ InstallMadtFromScratch (
> >
> >        ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >        Status = CopyStructure (
> > -        &MadtTableHeader.Header,
> > -        (STRUCTURE_HEADER *) &ProcLocalApicStruct,
> > -        &MadtStructs[MadtStructsIndex++]
> > -        );
> > +                 &MadtTableHeader.Header,
> > +                 (STRUCTURE_HEADER *) &ProcLocalApicStruct,
> > +                 &MadtStructs[MadtStructsIndex++]
> > +                 );
> >      } else if (mCpuApicIdOrderTable[Index].ApicId != 0xFFFFFFFF) {
> >        ProcLocalX2ApicStruct.Flags            = (UINT8) mCpuApicIdOrderTable[Index].Flags;
> >        ProcLocalX2ApicStruct.X2ApicId         = mCpuApicIdOrderTable[Index].ApicId;
> > @@ -947,13 +842,13 @@ InstallMadtFromScratch (
> >
> >        ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >        Status = CopyStructure (
> > -        &MadtTableHeader.Header,
> > -        (STRUCTURE_HEADER *) &ProcLocalX2ApicStruct,
> > -        &MadtStructs[MadtStructsIndex++]
> > -        );
> > +                 &MadtTableHeader.Header,
> > +                 (STRUCTURE_HEADER *) &ProcLocalX2ApicStruct,
> > +                 &MadtStructs[MadtStructsIndex++]
> > +                 );
> >      }
> >      if (EFI_ERROR (Status)) {
> > -      DEBUG ((EFI_D_ERROR, "CopyMadtStructure (local APIC/x2APIC) failed: %r\n", Status));
> > +      DEBUG ((DEBUG_ERROR, "CopyMadtStructure (local APIC/x2APIC) failed: %r\n", Status));
> >        goto Done;
> >      }
> >    }
> > @@ -965,44 +860,44 @@ InstallMadtFromScratch (
> >    IoApicStruct.Length = sizeof (EFI_ACPI_4_0_IO_APIC_STRUCTURE);
> >    IoApicStruct.Reserved = 0;
> >
> > -  PcIoApicEnable = PcdGet32(PcdPcIoApicEnable);
> > +  PcIoApicEnable = PcdGet32 (PcdPcIoApicEnable);
> >
> > -  if (FixedPcdGet32(PcdMaxCpuSocketCount) <= 4) {
> > +  if (FixedPcdGet32 (PcdMaxCpuSocketCount) <= 4) {
> >      IoApicStruct.IoApicId                  = PcdGet8(PcdIoApicId);
> >      IoApicStruct.IoApicAddress             = PcdGet32(PcdIoApicAddress);
> >      IoApicStruct.GlobalSystemInterruptBase = 0;
> >      ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >      Status = CopyStructure (
> > -      &MadtTableHeader.Header,
> > -      (STRUCTURE_HEADER *) &IoApicStruct,
> > -      &MadtStructs[MadtStructsIndex++]
> > -      );
> > +               &MadtTableHeader.Header,
> > +               (STRUCTURE_HEADER *) &IoApicStruct,
> > +               &MadtStructs[MadtStructsIndex++]
> > +               );
> >      if (EFI_ERROR (Status)) {
> > -      DEBUG ((EFI_D_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", Status));
> > +      DEBUG ((DEBUG_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", Status));
> >        goto Done;
> >      }
> >    }
> >
> >    for (PcIoApicIndex = 0; PcIoApicIndex < PcdGet8(PcdPcIoApicCount); PcIoApicIndex++) {
> > -      PcIoApicMask = (1 << PcIoApicIndex);
> > -      if ((PcIoApicEnable & PcIoApicMask) == 0) {
> > -        continue;
> > -      }
> > +    PcIoApicMask = (1 << PcIoApicIndex);
> > +    if ((PcIoApicEnable & PcIoApicMask) == 0) {
> > +      continue;
> > +    }
> >
> > -      IoApicStruct.IoApicId                  = (UINT8)(PcdGet8(PcdPcIoApicIdBase) + PcIoApicIndex);
> > -      IoApicStruct.IoApicAddress             = CurrentIoApicAddress;
> > -      CurrentIoApicAddress                   = (CurrentIoApicAddress & 0xFFFF8000) + 0x8000;
> > -      IoApicStruct.GlobalSystemInterruptBase = (UINT32)(24 + (PcIoApicIndex * 8));
> > -      ASSERT (MadtStructsIndex < MaxMadtStructCount);
> > -      Status = CopyStructure (
> > -        &MadtTableHeader.Header,
> > -        (STRUCTURE_HEADER *) &IoApicStruct,
> > -        &MadtStructs[MadtStructsIndex++]
> > -        );
> > -      if (EFI_ERROR (Status)) {
> > -        DEBUG ((EFI_D_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", Status));
> > -        goto Done;
> > -      }
> > +    IoApicStruct.IoApicId                  = (UINT8)(PcdGet8(PcdPcIoApicIdBase) + PcIoApicIndex);
> > +    IoApicStruct.IoApicAddress             = CurrentIoApicAddress;
> > +    CurrentIoApicAddress                   = (CurrentIoApicAddress & 0xFFFF8000) + 0x8000;
> > +    IoApicStruct.GlobalSystemInterruptBase = (UINT32)(24 + (PcIoApicIndex * 8));
> > +    ASSERT (MadtStructsIndex < MaxMadtStructCount);
> > +    Status = CopyStructure (
> > +               &MadtTableHeader.Header,
> > +               (STRUCTURE_HEADER *) &IoApicStruct,
> > +               &MadtStructs[MadtStructsIndex++]
> > +               );
> > +    if (EFI_ERROR (Status)) {
> > +      DEBUG ((DEBUG_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", Status));
> > +      goto Done;
> > +    }
> >    }
> >
> >    //
> > @@ -1021,12 +916,12 @@ InstallMadtFromScratch (
> >
> >    ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >    Status = CopyStructure (
> > -    &MadtTableHeader.Header,
> > -    (STRUCTURE_HEADER *) &IntSrcOverrideStruct,
> > -    &MadtStructs[MadtStructsIndex++]
> > -    );
> > +             &MadtTableHeader.Header,
> > +             (STRUCTURE_HEADER *) &IntSrcOverrideStruct,
> > +             &MadtStructs[MadtStructsIndex++]
> > +             );
> >    if (EFI_ERROR (Status)) {
> > -    DEBUG ((EFI_D_ERROR, "CopyMadtStructure (IRQ2 source override) failed: %r\n", Status));
> > +    DEBUG ((DEBUG_ERROR, "CopyMadtStructure (IRQ2 source override) failed: %r\n", Status));
> >      goto Done;
> >    }
> >
> > @@ -1040,12 +935,12 @@ InstallMadtFromScratch (
> >
> >    ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >    Status = CopyStructure (
> > -    &MadtTableHeader.Header,
> > -    (STRUCTURE_HEADER *) &IntSrcOverrideStruct,
> > -    &MadtStructs[MadtStructsIndex++]
> > -    );
> > +             &MadtTableHeader.Header,
> > +             (STRUCTURE_HEADER *) &IntSrcOverrideStruct,
> > +             &MadtStructs[MadtStructsIndex++]
> > +             );
> >    if (EFI_ERROR (Status)) {
> > -    DEBUG ((EFI_D_ERROR, "CopyMadtStructure (IRQ9 source override) failed: %r\n", Status));
> > +    DEBUG ((DEBUG_ERROR, "CopyMadtStructure (IRQ9 source override) failed: %r\n", Status));
> >      goto Done;
> >    }
> >
> > @@ -1060,12 +955,12 @@ InstallMadtFromScratch (
> >
> >    ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >    Status = CopyStructure (
> > -    &MadtTableHeader.Header,
> > -    (STRUCTURE_HEADER *) &LocalApciNmiStruct,
> > -    &MadtStructs[MadtStructsIndex++]
> > -    );
> > +             &MadtTableHeader.Header,
> > +             (STRUCTURE_HEADER *) &LocalApciNmiStruct,
> > +             &MadtStructs[MadtStructsIndex++]
> > +             );
> >    if (EFI_ERROR (Status)) {
> > -    DEBUG ((EFI_D_ERROR, "CopyMadtStructure (APIC NMI) failed: %r\n", Status));
> > +    DEBUG ((DEBUG_ERROR, "CopyMadtStructure (APIC NMI) failed: %r\n", Status));
> >      goto Done;
> >    }
> >
> > @@ -1084,10 +979,10 @@ InstallMadtFromScratch (
> >
> >      ASSERT (MadtStructsIndex < MaxMadtStructCount);
> >      Status = CopyStructure (
> > -      &MadtTableHeader.Header,
> > -      (STRUCTURE_HEADER *) &LocalX2ApicNmiStruct,
> > -      &MadtStructs[MadtStructsIndex++]
> > -      );
> > +               &MadtTableHeader.Header,
> > +               (STRUCTURE_HEADER *) &LocalX2ApicNmiStruct,
> > +               &MadtStructs[MadtStructsIndex++]
> > +               );
> >      if (EFI_ERROR (Status)) {
> >        DEBUG ((DEBUG_ERROR, "CopyMadtStructure (x2APIC NMI) failed: %r\n", Status));
> >        goto Done;
> > @@ -1098,14 +993,14 @@ InstallMadtFromScratch (
> >    // Build Madt Structure from the Madt Header and collection of pointers in MadtStructs[]
> >    //
> >    Status = BuildAcpiTable (
> > -    (EFI_ACPI_DESCRIPTION_HEADER *) &MadtTableHeader,
> > -    sizeof (EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER),
> > -    MadtStructs,
> > -    MadtStructsIndex,
> > -    (UINT8 **)&NewMadtTable
> > -    );
> > +             (EFI_ACPI_DESCRIPTION_HEADER *) &MadtTableHeader,
> > +             sizeof (EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER),
> > +             MadtStructs,
> > +             MadtStructsIndex,
> > +             (UINT8 **) &NewMadtTable
> > +             );
> >    if (EFI_ERROR (Status)) {
> > -    DEBUG ((EFI_D_ERROR, "BuildAcpiTable failed: %r\n", Status));
> > +    DEBUG ((DEBUG_ERROR, "BuildAcpiTable failed: %r\n", Status));
> >      goto Done;
> >    }
> >
> > @@ -1113,11 +1008,11 @@ InstallMadtFromScratch (
> >    // Publish Madt Structure to ACPI
> >    //
> >    Status = mAcpiTable->InstallAcpiTable (
> > -    mAcpiTable,
> > -    NewMadtTable,
> > -    NewMadtTable->Header.Length,
> > -    &TableHandle
> > -    );
> > +                         mAcpiTable,
> > +                         NewMadtTable,
> > +                         NewMadtTable->Header.Length,
> > +                         &TableHandle
> > +                         );
> >
> >  Done:
> >    //
> > @@ -1136,6 +1031,10 @@ Done:
> >      FreePool (NewMadtTable);
> >    }
> >
> > +  if (mCpuApicIdOrderTable != NULL) {
> > +    FreePool (mCpuApicIdOrderTable);
> > +  }
> > +
> >    return Status;
> >  }
> >
> > @@ -1155,8 +1054,8 @@ InstallMcfgFromScratch (
> >    PciSegmentInfo = GetPciSegmentInfo (&SegmentCount);
> >
> >    McfgTable = AllocateZeroPool (
> > -                sizeof(EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_HEADER) +
> > -
> > sizeof(EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_ALLOCATION_STRUCTURE) *
> > SegmentCount
> > +                sizeof (EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_HEADER) +
> > +                sizeof
> > (EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_ALLOCATION_STRUCTURE) *
> > SegmentCount
> >                  );
> >    if (McfgTable == NULL) {
> >      DEBUG ((DEBUG_ERROR, "Could not allocate MCFG structure\n"));
> > @@ -1164,11 +1063,11 @@ InstallMcfgFromScratch (
> >    }
> >
> >    Status = InitializeHeader (
> > -    &McfgTable->Header,
> > -
> >
> EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
> > -    EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION,
> > -    0
> > -    );
> > +             &McfgTable->Header,
> > +
> >
> EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
> > +             EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION,
> > +             0
> > +             );
> >    if (EFI_ERROR (Status)) {
> >      return Status;
> >    }
> > @@ -1192,11 +1091,11 @@ InstallMcfgFromScratch (
> >    // Publish Madt Structure to ACPI
> >    //
> >    Status = mAcpiTable->InstallAcpiTable (
> > -    mAcpiTable,
> > -    McfgTable,
> > -    McfgTable->Header.Length,
> > -    &TableHandle
> > -    );
> > +                         mAcpiTable,
> > +                         McfgTable,
> > +                         McfgTable->Header.Length,
> > +                         &TableHandle
> > +                         );
> >
> >    return Status;
> >  }
> > @@ -1280,7 +1179,7 @@ PlatformUpdateTables (
> >    switch (Table->Signature) {
> >
> >    case EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE:
> > -    ASSERT(FALSE);
> > +    ASSERT (FALSE);
> >      break;
> >
> >    case EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE:
> > @@ -1324,9 +1223,9 @@ PlatformUpdateTables (
> >        FadtHeader->XGpe1Blk.AccessSize = 0;
> >      }
> >
> > -    DEBUG(( EFI_D_ERROR, "ACPI FADT table @ address 0x%x\n", Table ));
> > -    DEBUG(( EFI_D_ERROR, "  IaPcBootArch 0x%x\n", FadtHeader->IaPcBootArch ));
> > -    DEBUG(( EFI_D_ERROR, "  Flags 0x%x\n", FadtHeader->Flags ));
> > +    DEBUG ((DEBUG_INFO, "ACPI FADT table @ address 0x%x\n", Table));
> > +    DEBUG ((DEBUG_INFO, "  IaPcBootArch 0x%x\n", FadtHeader->IaPcBootArch));
> > +    DEBUG ((DEBUG_INFO, "  Flags 0x%x\n", FadtHeader->Flags));
> >      break;
> >
> >    case EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE:
> > @@ -1346,12 +1245,12 @@ PlatformUpdateTables (
> >      HpetBlockId.Bits.VendorId       = HpetCapabilities.Bits.VendorId;
> >      HpetTable->EventTimerBlockId    = HpetBlockId.Uint32;
> >      HpetTable->MainCounterMinimumClockTickInPeriodicMode = (UINT16)HpetCapabilities.Bits.CounterClockPeriod;
> > -    DEBUG(( EFI_D_ERROR, "ACPI HPET table @ address 0x%x\n", Table ));
> > -    DEBUG(( EFI_D_ERROR, "  HPET base 0x%x\n", PcdGet32 (PcdHpetBaseAddress) ));
> > +    DEBUG ((DEBUG_INFO, "ACPI HPET table @ address 0x%x\n", Table));
> > +    DEBUG ((DEBUG_INFO, "  HPET base 0x%x\n", PcdGet32 (PcdHpetBaseAddress)));
> >      break;
> >
> >    case
> >
> EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE:
> > -    ASSERT(FALSE);
> > +    ASSERT (FALSE);
> >      break;
> >
> >    default:
> > @@ -1403,8 +1302,8 @@ IsHardwareChange (
> >    // pFADT->XDsdt
> >    //
> >    HWChangeSize = HandleCount + 1;
> > -  HWChange = AllocateZeroPool( sizeof(UINT32) * HWChangeSize );
> > -  ASSERT( HWChange != NULL );
> > +  HWChange = AllocateZeroPool (sizeof(UINT32) * HWChangeSize);
> > +  ASSERT(HWChange != NULL);
> >
> >    if (HWChange == NULL) return;
> >
> > @@ -1445,14 +1344,14 @@ IsHardwareChange (
> >    // Calculate CRC value with HWChange data.
> >    //
> >    Status = gBS->CalculateCrc32(HWChange, HWChangeSize, &CRC);
> > -  DEBUG((DEBUG_INFO, "CRC = %x and Status = %r\n", CRC, Status));
> > +  DEBUG ((DEBUG_INFO, "CRC = %x and Status = %r\n", CRC, Status));
> >
> >    //
> >    // Set HardwareSignature value based on CRC value.
> >    //
> >    FacsPtr = (EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *)(UINTN)pFADT->FirmwareCtrl;
> >    FacsPtr->HardwareSignature = CRC;
> > -  FreePool( HWChange );
> > +  FreePool (HWChange);
> >  }
> >
> >  VOID
> > @@ -1475,17 +1374,16 @@ UpdateLocalTable (
> >
> >      if (Version != EFI_ACPI_TABLE_VERSION_NONE) {
> >        Status = mAcpiTable->InstallAcpiTable (
> > -                              mAcpiTable,
> > -                              CurrentTable,
> > -                              CurrentTable->Length,
> > -                              &TableHandle
> > -                              );
> > +                             mAcpiTable,
> > +                             CurrentTable,
> > +                             CurrentTable->Length,
> > +                             &TableHandle
> > +                             );
> >        ASSERT_EFI_ERROR (Status);
> >      }
> >    }
> >  }
> >
> > -
> >  VOID
> >  EFIAPI
> >  AcpiEndOfDxeEvent (
> > @@ -1493,16 +1391,14 @@ AcpiEndOfDxeEvent (
> >    VOID                *ParentImageHandle
> >    )
> >  {
> > -
> >    if (Event != NULL) {
> > -    gBS->CloseEvent(Event);
> > +    gBS->CloseEvent (Event);
> >    }
> >
> > -
> >    //
> >    // Calculate Hardware Signature value based on current platform configurations
> >    //
> > -  IsHardwareChange();
> > +  IsHardwareChange ();
> >  }
> >
> >  /**
> > @@ -1526,7 +1422,6 @@ InstallAcpiPlatform (
> >    EFI_STATUS                    Status;
> >    EFI_EVENT                     EndOfDxeEvent;
> >
> > -
> >    Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **)&mMpService);
> >    ASSERT_EFI_ERROR (Status);
> >
> > @@ -1550,19 +1445,19 @@ InstallAcpiPlatform (
> >    // Determine the number of processors
> >    //
> >    mMpService->GetNumberOfProcessors (
> > -              mMpService,
> > -              &mNumberOfCPUs,
> > -              &mNumberOfEnabledCPUs
> > -              );
> > -  ASSERT (mNumberOfCPUs <= MAX_CPU_NUM && mNumberOfEnabledCPUs >= 1);
> > -  DEBUG ((DEBUG_INFO, "mNumberOfCPUs - %d\n", mNumberOfCPUs));
> > +                mMpService,
> > +                &mNumberOfCpus,
> > +                &mNumberOfEnabledCPUs
> > +                );
> > +
> > +  DEBUG ((DEBUG_INFO, "mNumberOfCpus - %d\n", mNumberOfCpus));
> >    DEBUG ((DEBUG_INFO, "mNumberOfEnabledCPUs - %d\n", mNumberOfEnabledCPUs));
> >
> >    DEBUG ((DEBUG_INFO, "mX2ApicEnabled - 0x%x\n", mX2ApicEnabled));
> >    DEBUG ((DEBUG_INFO, "mForceX2ApicId - 0x%x\n", mForceX2ApicId));
> >
> >    // support up to 64 threads/socket
> > -  AsmCpuidEx(CPUID_EXTENDED_TOPOLOGY, 1, &mNumOfBitShift, NULL, NULL, NULL);
> > +  AsmCpuidEx (CPUID_EXTENDED_TOPOLOGY, 1, &mNumOfBitShift, NULL, NULL, NULL);
> >    mNumOfBitShift &= 0x1F;
> >    DEBUG ((DEBUG_INFO, "mNumOfBitShift - 0x%x\n", mNumOfBitShift));
> >
> > diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h
> > b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h
> > index bd11f9e988..61f7470f80 100644
> > --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h
> > +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h
> > @@ -1,7 +1,7 @@
> >  /** @file
> >    This is an implementation of the ACPI platform driver.
> >
> > -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> > +Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
> >  SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> >  **/
> > @@ -35,6 +35,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> >  #include <Library/MemoryAllocationLib.h>
> >  #include <Library/AslUpdateLib.h>
> >  #include <Library/PciSegmentInfoLib.h>
> > +#include <Library/SortLib.h>
> > +#include <Library/LocalApicLib.h>
> >
> >  #include <Protocol/AcpiTable.h>
> >  #include <Protocol/MpService.h>
> > diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf
> > b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf
> > index 5d9c8cab50..95f6656af0 100644
> > --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf
> > +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf
> > @@ -1,7 +1,7 @@
> >  ### @file
> >  #  Component information file for AcpiPlatform module
> >  #
> > -# Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> > +# Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
> >  #
> >  # SPDX-License-Identifier: BSD-2-Clause-Patent
> >  #
> > @@ -43,6 +43,8 @@
> >    PciSegmentInfoLib
> >    AslUpdateLib
> >    BoardAcpiTableLib
> > +  SortLib
> > +  LocalApicLib
> >
> >  [Pcd]
> >    gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId
> > --
> > 2.32.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#79876): https://edk2.groups.io/g/devel/message/79876
Mute This Topic: https://groups.io/mt/85018230/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list