From: Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org> To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Cc: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org>, Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>, Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>, Jeremy Linton <jeremy.linton-5wv7dgnIgG8@public.gmane.org>, linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: [PATCH 1/3] efi: Introduce *_continue efi_memory_desc iterators Date: Tue, 31 May 2016 16:14:30 +0100 [thread overview] Message-ID: <1464707672-21882-2-git-send-email-catalin.marinas@arm.com> (raw) In-Reply-To: <1464707672-21882-1-git-send-email-catalin.marinas-5wv7dgnIgG8@public.gmane.org> The for_each_efi_memory_desc_continue() macro and corresponding "_in_map" allow iterating over an efi_memory_map from a given position. For code reuse between the existing iterator and the _continue variant, this patch also introduces efi_memory_desc_next_entry_map(). Cc: Matt Fleming <matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org> Signed-off-by: Catalin Marinas <catalin.marinas-5wv7dgnIgG8@public.gmane.org> --- include/linux/efi.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/include/linux/efi.h b/include/linux/efi.h index c2db3ca22217..4b0d880f1cd7 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -1002,11 +1002,16 @@ extern int efi_memattr_init(void); extern int efi_memattr_apply_permissions(struct mm_struct *mm, efi_memattr_perm_setter fn); +/* Find next entry in an efi_memory_map or NULL if md is last */ +#define efi_memory_desc_next_entry_map(m, md) \ + ((md) == (efi_memory_desc_t *)((m)->map_end - (m)->desc_size) \ + ? NULL : (void *)(md) + (m)->desc_size) + /* Iterate through an efi_memory_map */ #define for_each_efi_memory_desc_in_map(m, md) \ for ((md) = (m)->map; \ - (md) <= (efi_memory_desc_t *)((m)->map_end - (m)->desc_size); \ - (md) = (void *)(md) + (m)->desc_size) + (md); \ + (md) = efi_memory_desc_next_entry_map(m, md)) /** * for_each_efi_memory_desc - iterate over descriptors in efi.memmap @@ -1017,6 +1022,16 @@ extern int efi_memattr_apply_permissions(struct mm_struct *mm, #define for_each_efi_memory_desc(md) \ for_each_efi_memory_desc_in_map(&efi.memmap, md) +/* Continue iterating through an efi_memory_map */ +#define for_each_efi_memory_desc_in_map_continue(m, md) \ + for ((md) = efi_memory_desc_next_entry_map(m, md); \ + (md); \ + (md) = efi_memory_desc_next_entry_map(m, md)) + +/* Continue iterating through efi.memmap */ +#define for_each_efi_memory_desc_continue(md) \ + for_each_efi_memory_desc_in_map_continue(&efi.memmap, md) + /* * Format an EFI memory descriptor's type and attributes to a user-provided * character buffer, as per snprintf(), and return the buffer.
WARNING: multiple messages have this Message-ID (diff)
From: catalin.marinas@arm.com (Catalin Marinas) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/3] efi: Introduce *_continue efi_memory_desc iterators Date: Tue, 31 May 2016 16:14:30 +0100 [thread overview] Message-ID: <1464707672-21882-2-git-send-email-catalin.marinas@arm.com> (raw) In-Reply-To: <1464707672-21882-1-git-send-email-catalin.marinas@arm.com> The for_each_efi_memory_desc_continue() macro and corresponding "_in_map" allow iterating over an efi_memory_map from a given position. For code reuse between the existing iterator and the _continue variant, this patch also introduces efi_memory_desc_next_entry_map(). Cc: Matt Fleming <matt@codeblueprint.co.uk> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> --- include/linux/efi.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/include/linux/efi.h b/include/linux/efi.h index c2db3ca22217..4b0d880f1cd7 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -1002,11 +1002,16 @@ extern int efi_memattr_init(void); extern int efi_memattr_apply_permissions(struct mm_struct *mm, efi_memattr_perm_setter fn); +/* Find next entry in an efi_memory_map or NULL if md is last */ +#define efi_memory_desc_next_entry_map(m, md) \ + ((md) == (efi_memory_desc_t *)((m)->map_end - (m)->desc_size) \ + ? NULL : (void *)(md) + (m)->desc_size) + /* Iterate through an efi_memory_map */ #define for_each_efi_memory_desc_in_map(m, md) \ for ((md) = (m)->map; \ - (md) <= (efi_memory_desc_t *)((m)->map_end - (m)->desc_size); \ - (md) = (void *)(md) + (m)->desc_size) + (md); \ + (md) = efi_memory_desc_next_entry_map(m, md)) /** * for_each_efi_memory_desc - iterate over descriptors in efi.memmap @@ -1017,6 +1022,16 @@ extern int efi_memattr_apply_permissions(struct mm_struct *mm, #define for_each_efi_memory_desc(md) \ for_each_efi_memory_desc_in_map(&efi.memmap, md) +/* Continue iterating through an efi_memory_map */ +#define for_each_efi_memory_desc_in_map_continue(m, md) \ + for ((md) = efi_memory_desc_next_entry_map(m, md); \ + (md); \ + (md) = efi_memory_desc_next_entry_map(m, md)) + +/* Continue iterating through efi.memmap */ +#define for_each_efi_memory_desc_continue(md) \ + for_each_efi_memory_desc_in_map_continue(&efi.memmap, md) + /* * Format an EFI memory descriptor's type and attributes to a user-provided * character buffer, as per snprintf(), and return the buffer.
next prev parent reply other threads:[~2016-05-31 15:14 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-05-31 15:14 [PATCH 0/3] arm64: Avoid overlapping EFI regions Catalin Marinas 2016-05-31 15:14 ` Catalin Marinas [not found] ` <1464707672-21882-1-git-send-email-catalin.marinas-5wv7dgnIgG8@public.gmane.org> 2016-05-31 15:14 ` Catalin Marinas [this message] 2016-05-31 15:14 ` [PATCH 1/3] efi: Introduce *_continue efi_memory_desc iterators Catalin Marinas [not found] ` <1464707672-21882-2-git-send-email-catalin.marinas-5wv7dgnIgG8@public.gmane.org> 2016-06-01 10:34 ` Mark Rutland 2016-06-01 10:34 ` Mark Rutland 2016-06-01 10:43 ` Catalin Marinas 2016-06-01 10:43 ` Catalin Marinas [not found] ` <20160601104326.GA24749-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-02 14:36 ` Matt Fleming 2016-06-02 14:36 ` Matt Fleming [not found] ` <20160602143650.GG2658-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org> 2016-06-02 16:29 ` Catalin Marinas 2016-06-02 16:29 ` Catalin Marinas [not found] ` <20160602162925.GC24938-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-02 16:31 ` Jeremy Linton 2016-06-02 16:31 ` Jeremy Linton [not found] ` <57505F52.3040108-5wv7dgnIgG8@public.gmane.org> 2016-06-02 17:11 ` Catalin Marinas 2016-06-02 17:11 ` Catalin Marinas [not found] ` <20160602171152.GE24938-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-02 17:15 ` Jeremy Linton 2016-06-02 17:15 ` Jeremy Linton 2016-06-03 20:43 ` Matt Fleming 2016-06-03 20:43 ` Matt Fleming 2016-05-31 15:14 ` [PATCH 2/3] arm64: efi: Ensure efi_create_mapping() does not map overlapping regions Catalin Marinas 2016-05-31 15:14 ` Catalin Marinas [not found] ` <1464707672-21882-3-git-send-email-catalin.marinas-5wv7dgnIgG8@public.gmane.org> 2016-06-02 14:52 ` Matt Fleming 2016-06-02 14:52 ` Matt Fleming [not found] ` <20160602145246.GH2658-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org> 2016-06-02 16:56 ` Catalin Marinas 2016-06-02 16:56 ` Catalin Marinas [not found] ` <20160602165621.GD24938-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-03 20:56 ` Matt Fleming 2016-06-03 20:56 ` Matt Fleming 2016-06-06 9:43 ` Ard Biesheuvel 2016-06-06 9:43 ` Ard Biesheuvel [not found] ` <CAKv+Gu-Kiq30-BtQ_aYamLyTB6d8WWmnBM6bOM-+c+WciUnUwA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-06-06 17:09 ` Catalin Marinas 2016-06-06 17:09 ` Catalin Marinas [not found] ` <20160606170950.GD29910-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-06 17:26 ` Ard Biesheuvel 2016-06-06 17:26 ` Ard Biesheuvel 2016-06-06 17:42 ` Catalin Marinas 2016-06-06 17:42 ` Catalin Marinas [not found] ` <20160606174207.GH29910-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-06 21:18 ` Ard Biesheuvel 2016-06-06 21:18 ` Ard Biesheuvel [not found] ` <CAKv+Gu_3uKgFtvMryROwTMeGs=uXYU-OPrUC6LaNQiAKP=PZ3Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-06-28 16:05 ` Catalin Marinas 2016-06-28 16:05 ` Catalin Marinas [not found] ` <20160628160528.GG4585-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-28 16:12 ` Ard Biesheuvel 2016-06-28 16:12 ` Ard Biesheuvel [not found] ` <CAKv+Gu8RxZ2xpDC0pudewHu9Z5YTL8XbcjSPvGasRUQbhqm5qQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-06-29 9:39 ` Catalin Marinas 2016-06-29 9:39 ` Catalin Marinas [not found] ` <20160629093938.GB2522-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-29 10:03 ` Ard Biesheuvel 2016-06-29 10:03 ` Ard Biesheuvel [not found] ` <CAKv+Gu-=r=LJ17YKYAOMjaq4QuqN=g-yZmtPzUWDCF5zgezqdw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-06-29 10:50 ` Catalin Marinas 2016-06-29 10:50 ` Catalin Marinas [not found] ` <20160629105037.GC2522-M2fw3Uu6cmfZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org> 2016-06-29 11:03 ` Ard Biesheuvel 2016-06-29 11:03 ` Ard Biesheuvel [not found] ` <CAKv+Gu8yHSVa3N9Yy_ifd9qyEeG3NOM+XUpfiSf8c83OtzrLeQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-06-29 12:03 ` Catalin Marinas 2016-06-29 12:03 ` Catalin Marinas 2016-05-31 15:14 ` [PATCH 3/3] arm64: mm: Remove split_p*d() functions Catalin Marinas 2016-05-31 15:14 ` Catalin Marinas
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=1464707672-21882-2-git-send-email-catalin.marinas@arm.com \ --to=catalin.marinas-5wv7dgnigg8@public.gmane.org \ --cc=jeremy.linton-5wv7dgnIgG8@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \ --cc=matt-mF/unelCI9GS6iBeEJttW/XRex20P6io@public.gmane.org \ --cc=will.deacon-5wv7dgnIgG8@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: linkBe 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.