[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V2 01/12] Create efi-shared.[ch], and move string functions



On Wed, Jul 23, 2014 at 9:31 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 22.07.14 at 02:43, <roy.franz@xxxxxxxxxx> wrote:
>> Create the files for EFI code that will be shared with the ARM stub,
>> and move string functions and some global variables.
>>
>> Signed-off-by: Roy Franz <roy.franz@xxxxxxxxxx>
>> ---
>>  xen/arch/x86/Rules.mk        |   1 +
>>  xen/arch/x86/efi/boot.c      | 127 +++-----------------------------------
>>  xen/common/Makefile          |   2 +
>>  xen/common/efi/Makefile      |   3 +
>>  xen/common/efi/efi-shared.c  | 142 
>> +++++++++++++++++++++++++++++++++++++++++++
>
> This clearly should be just efi.c or, provided you keep the separation
> between boot and runtime code, boot.c.
>
>>  xen/include/efi/efi-shared.h |  50 +++++++++++++++
>
> This one should at least get the efi- prefix dropped as being redundant
> with the efi/ one, or even be named internal.h.
>
>> --- a/xen/arch/x86/efi/boot.c
>> +++ b/xen/arch/x86/efi/boot.c
>> @@ -1,6 +1,7 @@
>>  #include "efi.h"
>>  #include <efi/efiprot.h>
>>  #include <efi/efipciio.h>
>> +#include <efi/efi-shared.h>
>>  #include <public/xen.h>
>>  #include <xen/compile.h>
>>  #include <xen/ctype.h>
>> @@ -44,25 +45,16 @@ typedef struct {
>>  extern char start[];
>>  extern u32 cpuid_ext_features;
>>
>> -union string {
>> -    CHAR16 *w;
>> -    char *s;
>> -    const char *cs;
>> -};
>>
>> -struct file {
>> -    UINTN size;
>> -    union {
>> -        EFI_PHYSICAL_ADDRESS addr;
>> -        void *ptr;
>> -    };
>> -};
>> +/* Variables supplied/used by shared EFI code. */
>> +extern CHAR16 __initdata newline[];
>> +extern EFI_BOOT_SERVICES *__initdata efi_bs;
>> +extern SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
>> +extern SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
>
> Why are these declarations not being moved into the shared
> header? Plus, with them being just declarations, they should not
> have the __initdata tags. And, with them being external now, they
> should be properly prefixed with efi_ or Efi.

moved/fixed
>
>> +
>>
>
> Please avoid introducing double blank lines (not just here).
>
>> -static EFI_BOOT_SERVICES *__initdata efi_bs;
>>  static EFI_HANDLE __initdata efi_ih;
>>
>> -static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdOut;
>> -static SIMPLE_TEXT_OUTPUT_INTERFACE *__initdata StdErr;
>
> In the end I'm not really happy anyway with them becoming non-
> static - rather than building separate .o-s in the common efi/
> directory, would it not be possible to just have the .c files there,
> but include them from the arch ones? This would also address the
> tool chain detection issue you described in the cover letter (without
> the addressing of which I can't see how things will ultimately work).
>
>> --- /dev/null
>> +++ b/xen/common/efi/efi-shared.c
>> @@ -0,0 +1,142 @@
>> +/* EFI code shared between architectures. */
>> +
>> +#include <asm/efibind.h>
>> +#include <efi/efidef.h>
>> +#include <efi/efierr.h>
>> +#include <efi/eficon.h>
>> +#include <efi/efidevp.h>
>> +#include <efi/eficapsule.h>
>> +#include <efi/efiapi.h>
>> +#include <xen/efi.h>
>> +#include <xen/spinlock.h>
>> +#include <asm/page.h>
>> +#include <efi/efiprot.h>
>> +#include <efi/efipciio.h>
>> +#include <efi/efi-shared.h>
>> +#include <public/xen.h>
>> +#include <efi/efi-shared.h>
>> +#include <xen/compile.h>
>> +#include <xen/ctype.h>
>> +#include <xen/init.h>
>> +#include <asm/processor.h>
>
> Looks like you blindly copied all includes - I'd prefer only those to be
> added that are actually needed.

fixed
>
>> --- /dev/null
>> +++ b/xen/include/efi/efi-shared.h
>> @@ -0,0 +1,50 @@
>> +#ifndef __EFI_SHARED_H__
>> +#define __EFI_SHARED_H__
>> +
>> +#include <efi/efidef.h>
>> +#include <xen/init.h>
>> +
>> +
>> +union string {
>> +    CHAR16 *w;
>> +    char *s;
>> +    const char *cs;
>> +};
>> +
>> +struct file {
>> +    UINTN size;
>> +    union {
>> +        EFI_PHYSICAL_ADDRESS addr;
>> +        void *ptr;
>> +    };
>> +};
>> +
>> +
>> +#define PrintStr(s) StdOut->OutputString(StdOut, s)
>> +#define PrintErr(s) StdErr->OutputString(StdErr, s)
>> +
>> +
>> +
>> +CHAR16 * FormatDec(UINT64 Val, CHAR16 *Buffer);
>> +CHAR16 * FormatHex(UINT64 Val, UINTN Width, CHAR16 *Buffer);
>> +
>> +void __init DisplayUint(UINT64 Val, INTN Width);
>> +CHAR16 *__init wstrcpy(CHAR16 *d, const CHAR16 *s);
>> +int __init wstrcmp(const CHAR16 *s1, const CHAR16 *s2);
>> +int __init wstrncmp(const CHAR16 *s1, const CHAR16 *s2, UINTN n);
>> +CHAR16 *__init s2w(union string *str);
>> +char *__init w2s(const union string *str);
>> +bool_t __init match_guid(const EFI_GUID *guid1, const EFI_GUID *guid2);
>
> Again no __init on declarations please. And hence no need to include
> xen/init.h here.

fixed.
>
> Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.