mirror of https://github.com/acidanthera/audk.git
OvmfPkg: Switch timer in build time for OvmfPkg
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3711 Discussion in https://bugzilla.tianocore.org/show_bug.cgi?id=1496 shows that 8254TimerDxe was not written for OVMF. It was moved over from PcAtChipsetPkg to OvmfPkg in 2019. Probably because OVMF was the only user left. Most likely the reason OVMF used 8254TimerDxe initially was that it could just use the existing driver in PcAtChipsetPkg. And it simply hasn't been changed ever. CSM support was moved in 2019 too. (CSM support depends on 8254/8259 drivers). So 8254TimerDxe will be used when CSM_ENABLE=TRUE. There are 4 .dsc which include the 8254Timer. - OvmfPkg/AmdSev/AmdSevX64.dsc - OvmfPkg/OvmfPkgIa32.dsc - OvmfPkg/OvmfPkgIa32X64.dsc - OvmfPkg/OvmfPkgX64.dsc For the three OvmfPkg* configs using 8254TimerDxe with CSM_ENABLE=TRUE and LapicTimerDxe otherwise. For the AmdSev config it doesn't make sense to support a CSM. So use the lapic timer unconditionally. Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Cc: Erdem Aktas <erdemaktas@google.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Suggested-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Min Xu <min.m.xu@intel.com>
This commit is contained in:
parent
299c44cd4f
commit
c37cbc030d
|
@ -574,6 +574,8 @@
|
||||||
|
|
||||||
!include OvmfPkg/OvmfTpmPcds.dsc.inc
|
!include OvmfPkg/OvmfTpmPcds.dsc.inc
|
||||||
|
|
||||||
|
gEfiMdePkgTokenSpaceGuid.PcdFSBClock|100000000
|
||||||
|
|
||||||
[PcdsDynamicHii]
|
[PcdsDynamicHii]
|
||||||
!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc
|
!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc
|
||||||
|
|
||||||
|
@ -642,10 +644,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
OvmfPkg/8254TimerDxe/8254Timer.inf
|
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
||||||
|
|
|
@ -206,10 +206,9 @@ INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
|
||||||
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||||
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||||
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||||
|
|
|
@ -174,7 +174,7 @@ TimerDriverSetTimerPeriod (
|
||||||
//
|
//
|
||||||
DisableApicTimerInterrupt ();
|
DisableApicTimerInterrupt ();
|
||||||
} else {
|
} else {
|
||||||
TimerFrequency = PcdGet32 (PcdFSBClock) / DivideValue;
|
TimerFrequency = PcdGet32 (PcdFSBClock) / (UINT32)DivideValue;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Convert TimerPeriod into local APIC counts
|
// Convert TimerPeriod into local APIC counts
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
## @file
|
## @file
|
||||||
# Local APIC timer driver that provides Timer Arch protocol.
|
# Local APIC timer driver that provides Timer Arch protocol.
|
||||||
|
# PcdFSBClock is defined in MdePkg and it should be set by the consumer.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved.<BR>
|
||||||
# Copyright (c) 2019, Citrix Systems, Inc.
|
# Copyright (c) 2019, Citrix Systems, Inc.
|
||||||
|
|
|
@ -645,6 +645,10 @@
|
||||||
# Set ConfidentialComputing defaults
|
# Set ConfidentialComputing defaults
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0
|
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0
|
||||||
|
|
||||||
|
!if $(CSM_ENABLE) == FALSE
|
||||||
|
gEfiMdePkgTokenSpaceGuid.PcdFSBClock|100000000
|
||||||
|
!endif
|
||||||
|
|
||||||
[PcdsDynamicHii]
|
[PcdsDynamicHii]
|
||||||
!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc
|
!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc
|
||||||
|
|
||||||
|
@ -725,10 +729,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
|
!ifdef $(CSM_ENABLE)
|
||||||
|
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
||||||
OvmfPkg/8254TimerDxe/8254Timer.inf
|
OvmfPkg/8254TimerDxe/8254Timer.inf
|
||||||
|
!else
|
||||||
|
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
|
!endif
|
||||||
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
||||||
|
|
|
@ -206,10 +206,14 @@ INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
|
||||||
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||||
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||||
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
!ifdef $(CSM_ENABLE)
|
||||||
|
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
||||||
|
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
||||||
|
!else
|
||||||
|
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
|
!endif
|
||||||
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||||
|
|
|
@ -653,6 +653,10 @@
|
||||||
# Set ConfidentialComputing defaults
|
# Set ConfidentialComputing defaults
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0
|
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0
|
||||||
|
|
||||||
|
!if $(CSM_ENABLE) == FALSE
|
||||||
|
gEfiMdePkgTokenSpaceGuid.PcdFSBClock|100000000
|
||||||
|
!endif
|
||||||
|
|
||||||
[PcdsDynamicDefault.X64]
|
[PcdsDynamicDefault.X64]
|
||||||
# IPv4 and IPv6 PXE Boot support.
|
# IPv4 and IPv6 PXE Boot support.
|
||||||
gEfiNetworkPkgTokenSpaceGuid.PcdIPv4PXESupport|0x01
|
gEfiNetworkPkgTokenSpaceGuid.PcdIPv4PXESupport|0x01
|
||||||
|
@ -739,10 +743,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
|
!ifdef $(CSM_ENABLE)
|
||||||
|
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
||||||
OvmfPkg/8254TimerDxe/8254Timer.inf
|
OvmfPkg/8254TimerDxe/8254Timer.inf
|
||||||
|
!else
|
||||||
|
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
|
!endif
|
||||||
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
||||||
|
|
|
@ -210,10 +210,14 @@ INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
|
||||||
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||||
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||||
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
!ifdef $(CSM_ENABLE)
|
||||||
|
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
||||||
|
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
||||||
|
!else
|
||||||
|
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
|
!endif
|
||||||
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||||
|
|
|
@ -670,6 +670,10 @@
|
||||||
# Set ConfidentialComputing defaults
|
# Set ConfidentialComputing defaults
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0
|
gEfiMdePkgTokenSpaceGuid.PcdConfidentialComputingGuestAttr|0
|
||||||
|
|
||||||
|
!if $(CSM_ENABLE) == FALSE
|
||||||
|
gEfiMdePkgTokenSpaceGuid.PcdFSBClock|100000000
|
||||||
|
!endif
|
||||||
|
|
||||||
[PcdsDynamicHii]
|
[PcdsDynamicHii]
|
||||||
!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc
|
!include OvmfPkg/OvmfTpmPcdsHii.dsc.inc
|
||||||
|
|
||||||
|
@ -751,10 +755,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
|
!ifdef $(CSM_ENABLE)
|
||||||
|
OvmfPkg/8259InterruptControllerDxe/8259.inf
|
||||||
OvmfPkg/8254TimerDxe/8254Timer.inf
|
OvmfPkg/8254TimerDxe/8254Timer.inf
|
||||||
|
!else
|
||||||
|
OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
|
!endif
|
||||||
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf {
|
||||||
|
|
|
@ -233,10 +233,14 @@ INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
|
||||||
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
|
||||||
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
|
||||||
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
INF MdeModulePkg/Universal/EbcDxe/EbcDxe.inf
|
||||||
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
|
||||||
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
INF UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.inf
|
||||||
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
INF UefiCpuPkg/CpuDxe/CpuDxe.inf
|
||||||
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
!ifdef $(CSM_ENABLE)
|
||||||
|
INF OvmfPkg/8259InterruptControllerDxe/8259.inf
|
||||||
|
INF OvmfPkg/8254TimerDxe/8254Timer.inf
|
||||||
|
!else
|
||||||
|
INF OvmfPkg/LocalApicTimerDxe/LocalApicTimerDxe.inf
|
||||||
|
!endif
|
||||||
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
INF OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf
|
||||||
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
INF OvmfPkg/PciHotPlugInitDxe/PciHotPlugInit.inf
|
||||||
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
INF MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf
|
||||||
|
|
Loading…
Reference in New Issue