All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
Cc: "linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v3 0/7] efi: run UEFI services with interrupts enabled
Date: Fri, 18 Dec 2015 14:20:40 +0100	[thread overview]
Message-ID: <CAKv+Gu8Hu4JTMU0Tp18T=hqEkwSAO7V0PU9oDRrMsy2Vx-a=kg@mail.gmail.com> (raw)
In-Reply-To: <20151218131543.GC2638-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>

On 18 December 2015 at 14:15, Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org> wrote:
> On Mon, 14 Dec, at 11:40:24AM, Ard Biesheuvel wrote:
>> The UEFI spec does not require interrupts to be disabled when invoking
>> runtime services. The reason we have been doing so is because EFI pstore
>> may call SetVariable() from interrupt context, which may result in deadlock
>> if another runtime services call was in progress on the same cpu.
>
>> The EFI pstore has already been updated to use a non-blocking path and fail
>> gracefully rather than spin forever, so we can update the ordinary blocking
>> wrappers to run with interrupts enabled instead. This aims to prevent excessive
>> interrupt latencies on uniprocessor platforms with slow variable stores.
>>
>> Changes since v2:
>> - folded Matt's suggestion for patch #4, to bail rather than try to trigger a
>>   garbage collection in the nonblocking case when there is insufficient space
>> - rebased onto v4.4-rc5
>>
>> Changes since v1:
>> - added nonblocking QueryVariableInfo() wrapper variant, and updated
>>   efi_query_variable_store() to use it when called in nonblocking context
>> - add patch to drop the rtc_lock spinlock
>> - add patch to drop redundant efi_set_variable_nonblocking_t typedef
>> - drop BUG_ONs in patch #7
>>
>> Ard Biesheuvel (7):
>>   efi: expose non-blocking set_variable() wrapper to efivars
>>   efi: remove redundant efi_set_variable_nonblocking prototype
>>   efi: runtime-wrappers: add a nonblocking version of QueryVariableInfo
>>   efi: add nonblocking option to efi_query_variable_store()
>>   efi: runtime-wrappers: remove out of date comment regarding in_nmi()
>>   efi: runtime-wrapper: get rid of the rtc_lock spinlock
>>   efi: runtime-wrappers: run UEFI Runtime Services with interrupts
>>     enabled
>>
>>  arch/x86/platform/efi/quirks.c          |  33 +++++-
>>  drivers/firmware/efi/efi.c              |   1 +
>>  drivers/firmware/efi/runtime-wrappers.c | 115 +++++++-------------
>>  drivers/firmware/efi/vars.c             |  16 ++-
>>  include/linux/efi.h                     |  21 ++--
>>  5 files changed, 100 insertions(+), 86 deletions(-)
>
> Thanks Ard, this all looks good to me. I've queued this up. It's a
> little late for v4.5 now, so this will probably be targeting v4.6.

Either is fine by me, as long as it is in the pipeline.

Thanks,
Ard.

      parent reply	other threads:[~2015-12-18 13:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-14 10:40 [PATCH v3 0/7] efi: run UEFI services with interrupts enabled ard
     [not found] ` <1450089631-26791-1-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-12-14 10:40   ` [PATCH v3 1/7] efi: expose non-blocking set_variable() wrapper to efivars ard
2015-12-14 10:40   ` [PATCH v3 2/7] efi: remove redundant efi_set_variable_nonblocking prototype ard
2015-12-14 10:40   ` [PATCH v3 3/7] efi: runtime-wrappers: add a nonblocking version of QueryVariableInfo ard
     [not found]     ` <1450089631-26791-4-git-send-email-ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-12-18 13:08       ` Matt Fleming
2015-12-14 10:40   ` [PATCH v3 4/7] efi: add nonblocking option to efi_query_variable_store() ard
2015-12-14 10:40   ` [PATCH v3 5/7] efi: runtime-wrappers: remove out of date comment regarding in_nmi() ard
2015-12-14 10:40   ` [PATCH v3 6/7] efi: runtime-wrapper: get rid of the rtc_lock spinlock ard
2015-12-14 10:40   ` [PATCH v3 7/7] efi: runtime-wrappers: run UEFI Runtime Services with interrupts enabled ard
2015-12-18 13:15   ` [PATCH v3 0/7] efi: run UEFI services " Matt Fleming
     [not found]     ` <20151218131543.GC2638-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>
2015-12-18 13:20       ` Ard Biesheuvel [this message]

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-all 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='CAKv+Gu8Hu4JTMU0Tp18T=hqEkwSAO7V0PU9oDRrMsy2Vx-a=kg@mail.gmail.com' \
    --to=ard.biesheuvel-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.