History log of /device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
967efdcdc3a3a22550563acb9ec77f565b3dbee0 28-Feb-2015 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmPkg: allow HYP timer interrupt to be omitted

The DT binding for the ARM generic timer describes the secure,
non-secure, virtual and hypervisor timer interrupts, respectively.
However, under virtualization, only the virtual timer is usable, and
the device tree may omit the hypervisor timer interrupt. (Other timer
interrupts cannot be omitted simply due to the fact that the virtual
timer is listed third)

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Olivier Martin <olivier.martin@arm.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16953 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
b1a633434ddc5fc28de817debd963f7845fb78c7 18-Sep-2014 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmPkg/TimerDxe: add workaround for KVM timer interrupt handling

KVM on ARM currently masks the timer interrupt on the timer side when
delivering an interrupt to the guest. This itself is a workaround for an
issue where the interrupt is reraised and trapped by the host as soon as
the guest is entered, resulting in the guest being starved.

Work around this by calling ArmGenericTimerEnable () after servicing each
interrupt. The virtual version of ArmGenericTimerCounterLib will then
make sure to unmask the interrupt again.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16144 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
7a1e861e2925b9c006bcf8f95bd0d720a8c48328 10-Sep-2014 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmPkg/TimerDxe: Read timer frequency from CPU

The PCD gArmTokenSpaceGuid.PcdArmArchTimerFreqInHz is used in the
SEC phase (if applicable) to write the platform's counter frequency
to the CNTFRQ system register, as this needs to be done by the highest
exception level implemented.

Under virtualization, we should be able to rely on the host to have
initialized this register to a sane value, as we run at EL1 and only
use the virtual timer, so the PcdArmArchTimerFreqInHz PCD has little
meaning here.

So in either case, by the time we enter the DXE phase, we can use the
CNTFRQ system register to read the frequency instead of looking at the
PCD.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16090 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
4f6d34b434c0f063c68bdd4445da9097358b9afc 09-Sep-2014 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmPkg: Move TimerDxe and ArmArchTimerLib to new ArmGenericTimerCounterLib

Move TimerDxe and ArmArchTimerLib to ArmGenericTimerCounterLib, and update all
platforms to select the physical counter instance they have been using
implicitly all along.

Contributed-under: TianoCore Contribution Agreement 1.0
Acked-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-By: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16078 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
2785509b57d9ff92321c1083aab4a5ffc9519961 09-Sep-2014 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmPkg/TimerDxe: Register the virt and hyp timer interrupts at init time.

Change-Id: I1162dc60140278c0b3da837bf325e3789ababf54
Contributed-under: TianoCore Contribution Agreement 1.0
Acked-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16077 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
d4bb43cee15895da3d53009396f1a53aae15c056 09-Sep-2014 Ard Biesheuvel <ard.biesheuvel@linaro.org> ArmPkg: Renamed ArmArchTimerLib.h to ArmArchTimer.h

The ArmArchTimerLib.h include file is not directly related to the TimerLib
instance ArmArchTimerLib, so the name is confusing. Rename to ArmArchTimer.h
instead.

Contributed-under: TianoCore Contribution Agreement 1.0
Acked-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16073 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
c6c4df80de577bdf301363d83bc74dc0453f1ca9 27-Aug-2014 Olivier Martin <olivier.martin@arm.com> ArmPkg/TimerDxe: Fixed real time period

Prior to this change, the TimerPeriod was re-initialize at the
end of the interrupt handling with the value of the period.
It means the real timer period was: Timer Interrupt Processing
time + Timer Period

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15923 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
09c1b24c2f6c95f8c0b952dfd3caa25fd8aa578b 27-Aug-2014 Olivier Martin <olivier.martin@arm.com> ArmPkg/TimerDxe: Fixed the reloading of the period

Prior to this change the period was restored to the default period.
This change restores the latest 'set period'.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15922 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
33292af5f13b18ef5124f32a7bbf0b05b2d519c5 27-Aug-2014 Olivier Martin <olivier.martin@arm.com> ArmPkg/TimerDxe: Changed calculation to allow 1KHz granularity frequency

Prior to this change the frequency was rounded to 1Mhz.
This change rounds the timer frequency to 1KHz.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15921 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
3402aac7d985bf8a9f9d3c639f3fe93609380513 19-Aug-2014 Ronald Cron <ronald.cron@arm.com> ARM Packages: Removed trailing spaces

Trailing spaces create issue/warning when generating/applying patches.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ronald Cron <ronald.cron@arm.com>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15833 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
25402f5d0660acde3ee382a36b065945251990dc 18-Jul-2013 Harry Liebel <Harry.Liebel@arm.com> ArmPkg: Added Aarch64 support

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Harry Liebel <Harry.Liebel@arm.com>
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14486 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
e703b085f6a3a2e7a61be97d9154437520b3ae75 19-Jun-2013 Olivier Martin <olivier.martin@arm.com> ArmPkg/Drivers/TimerDxe: Improve Timer initialisation.

- Registering a interrupt handler implicitly enables said interrupt. This
is in the UEFI Spec. No need to enable the interrupts a second time.
- Make sure the Timer is completely disabled before configuring it. Only
enable after configuration is complete.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14433 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
1e57a46299244793beb27e74be171d1540606999 25-Jan-2013 oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> ARM Packages: Fixed line endings

This large code change only modifies the line endings to be CRLF to be
compliant with the EDK2 coding convention document.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14088 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
b34e4db38206407f13442b5f61cead6ce0d3c99c 27-Sep-2012 oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> ARM Packages: Minor typo, mispellings and coding style changes

Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13752 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
ae42bc88eecf25c449e3af7188e5fc7dc78f2b8f 04-Jul-2012 oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> ArmPkg/TimerDxe: Fixed incorrect TimerTicks calculation

Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13498 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
81be6e070f4d9b3cb3bb756302c3090d406744ba 02-Nov-2011 oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> ArmPkg/ArmCpuLib: Fix GCC/XCode builds



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12626 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c
da9675a241ab9856377b9bd63504b2d5333b3c7a 27-Sep-2011 oliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524> ArmPkg: Add ARM Architectural Timer support

ARM Architectural Timer support is defined by the ARM Generic Timer Specification.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12455 6f19259b-4bc3-4df7-8a09-765794883524
/device/linaro/bootloader/edk2/ArmPkg/Drivers/TimerDxe/TimerDxe.c