From: "Michael Brown" <mcb30@ipxe.org>
To: devel@edk2.groups.io, kraxel@redhat.com,
Laszlo Ersek <lersek@redhat.com>
Cc: Pedro Falcato <pedro.falcato@gmail.com>,
ray.ni@intel.com, Michael D Kinney <michael.d.kinney@intel.com>,
Nate DeSimone <nathaniel.l.desimone@intel.com>,
Rahul Kumar <rahul1.kumar@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/6] UefiCpuPkg/LocalApicTimerDxe: Duplicate OvmfPkg/LocalApicTimerDxe driver
Date: Tue, 16 Jan 2024 09:48:58 +0000 [thread overview]
Message-ID: <0102018d11ac8fe8-1ce1e102-af57-426f-bafc-7297bec4799a-000000@eu-west-1.amazonses.com> (raw)
In-Reply-To: <tjjmhfovfwnimwt67ez2sw2h5vtct6tai7q3iud37nh27dyjy2@vaudcc3wojm7>
On 16/01/2024 08:47, Gerd Hoffmann wrote:
> I think the reason is that the next timer interrupt arriving while the
> handler is running still is *much* more likely in virtual machines
> because the vCPU does not get 100% of the of the physical CPU time
> slice.
The interrupt handler can run for an arbitrary length of time, because
the call to RestoreTPL() can end up calling an application callback
which in turn waits on further timer interrupts.
This is a legitimate use case within UEFI, so all timer interrupt
handlers (not just in virtual machines) need to allow for the
possibility that nested interrupts will occur.
> So on OVMF we will continue to need NestedInterruptTplLib. I like the
> idea to have a Null version of the library, so OVMF does not need its
> own version of the driver just because of NestedInterruptTplLib.
I agree that there should not need to be two versions of LocalApicTimerDxe.
I would suggest moving NestedInterruptTplLib from OvmfPkg to MdeModulePkg.
The code is complex, but for the caller the complexity is completely
hidden behind the calls to NestedInterruptRaiseTPL() and
NestedInterruptRestoreTPL(), which straightforwardly replace what would
otherwise be (unsafe) calls to RaiseTPL() and RestoreTPL(), as shown in
https://github.com/tianocore/edk2/commit/a086f4a#diff-1418ec21e24e4ce2f3d621113585e3bea11fbcfa3b77d54046e61be7928e0c92
For a new CPU architecture, the only requirement is to provide a short
fragment (~5 lines) of code that can clear the interrupts-enabled flag
in the EFI_SYSTEM_CONTEXT, as shown in
OvmfPkg/Library/NestedInterruptTplLib/Iret.c.
I'm happy to send a patch to migrate NestedInterruptTplLib to
MdeModulePkg, so that it can be consumed outside of OvmfPkg. Shall I do
this?
Thanks,
Michael
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#113883): https://edk2.groups.io/g/devel/message/113883
Mute This Topic: https://groups.io/mt/103734961/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2024-01-16 9:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-15 8:03 [edk2-devel] Add LocalApicTimerDxe driver in UefiCpuPkg Ni, Ray
2024-01-15 8:03 ` [edk2-devel] [PATCH 1/6] UefiCpuPkg/LocalApicTimerDxe: Duplicate OvmfPkg/LocalApicTimerDxe driver Ni, Ray
2024-01-15 8:59 ` Pedro Falcato
2024-01-15 18:10 ` Michael D Kinney
2024-01-16 10:02 ` Laszlo Ersek
2024-01-16 17:17 ` Michael D Kinney
2024-01-15 19:30 ` Laszlo Ersek
2024-01-16 8:47 ` Gerd Hoffmann
2024-01-16 9:48 ` Michael Brown [this message]
2024-01-16 14:34 ` Laszlo Ersek
2024-01-16 15:16 ` Michael Brown
2024-01-16 15:37 ` Laszlo Ersek
2024-01-17 7:11 ` Ni, Ray
2024-01-17 10:46 ` Michael Brown
2024-01-19 13:14 ` Ni, Ray
2024-01-19 17:42 ` Michael Brown
2024-01-19 23:44 ` Ni, Ray
2024-01-20 0:49 ` Michael Brown
2024-01-22 10:15 ` Gerd Hoffmann
2024-01-15 8:03 ` [edk2-devel] [PATCH 2/6] UefiCpuPkg/LocalApicTimerDxe: Remove NestedInterruptTplLib call Ni, Ray
2024-01-15 8:03 ` [edk2-devel] [PATCH 3/6] UefiCpuPkg: Add LocalApicTimerDxe driver in DSC file Ni, Ray
2024-01-15 8:03 ` [edk2-devel] [PATCH 4/6] UefiCpuPkg/LocalApicTimerDxe: Enhance Timer Frequency calculation logic Ni, Ray
2024-01-15 8:03 ` [edk2-devel] [PATCH 5/6] UefiCpuPkg/LocalApicTimerDxe: warn if APIC Timer is used by other code Ni, Ray
2024-01-15 8:03 ` [edk2-devel] [PATCH 6/6] UefiCpuPkg/LocalApicTimerDxe: Passing fixed timer period is not a bug Ni, Ray
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-list 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=0102018d11ac8fe8-1ce1e102-af57-426f-bafc-7297bec4799a-000000@eu-west-1.amazonses.com \
--to=devel@edk2.groups.io \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox