On 1 July 2014 17:18, Ard Biesheuvel <[email protected]> wrote:
> On 1 July 2014 17:11, Matt Fleming <[email protected]> wrote:
>> On Thu, 26 Jun, at 04:23:36PM, Ard Biesheuvel wrote:
>>> In order to move from the #include "../../../xxxxx.c" anti-pattern used by
>>> both the x86 and arm64 versions of the stub to a static library linked into
>>> either the kernel proper (arm64) or a separate boot executable (x86), there
>>> is some prepatory work required.
>>>
>>> This patch does the following:
>>> - move forward declarations of functions shared between the arch specific 
>>> and
>>>   the generic parts of the stub to include/linux/efi.h
>>> - move forward declarations of functions shared between various .c files of 
>>> the
>>>   generic stub code to a new local header file called "efistub.h"
>>> - add #includes to all .c files which were formerly relying on the 
>>> #includor to
>>>   include the correct header files
>>> - remove all static modifiers from functions which will need to be 
>>> externally
>>>   visible once we move to a static library
>>>
>>> Signed-off-by: Ard Biesheuvel <[email protected]>
>>
>> [...]
>>
>>> diff --git a/include/linux/efi.h b/include/linux/efi.h
>>> index 0ceb816bdfc2..3a64f2f85821 100644
>>> --- a/include/linux/efi.h
>>> +++ b/include/linux/efi.h
>>> @@ -1163,4 +1163,46 @@ static inline void
>>>  efi_runtime_map_setup(void *map, int nr_entries, u32 desc_size) {}
>>>  #endif
>>>
>>> +/* prototypes shared between arch specific and generic stub code */
>>> +
>>> +#define pr_efi(sys_table, msg)     efi_printk(sys_table, "EFI stub: "msg)
>>> +#define pr_efi_err(sys_table, msg) efi_printk(sys_table, "EFI stub: ERROR: 
>>> "msg)
>>> +
>>> +void efi_printk(efi_system_table_t *sys_table_arg, char *str);
>>> +
>>> +void efi_free(efi_system_table_t *sys_table_arg, unsigned long size,
>>> +           unsigned long addr);
>>> +
>>> +char *efi_convert_cmdline(efi_system_table_t *sys_table_arg,
>>> +                       efi_loaded_image_t *image, int *cmd_line_len);
>>> +
>>
>> We've been very good so far at not splattering include/linux/efi.h with
>> any of the EFI boot stub prototypes, and it would be awesome if we
>> didn't have to start now.
>>
>> Is there any way we could avoid doing this? Arguably everything should
>> be in the new efistub.h, no?
>>
>
> There are bits that are shared between code under arch/xxx and
> drivers/firmware/efi, and what those bits are is different between the
> archs. I used <asm/efi.h> just for convenience, but perhaps we could
> add <asm/efistub.h> for each arch, and #include it in both "efistub.h"
> under drivers/firmware/efi and the stub bits that live under arch/xxx?
> Then any other users of <asm/efi.h> won't have to see it.
>

... but that wasn't your question ....

The reason this can't live in "efistub.h" is that it gets included by
bits under arch/xxx
So perhaps moving the local "efistub.h" to <linux/efistub.h> would be
appropriate, yes.
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to