From: Jeremy Fitzhardinge Subject: Re: [PATCH 00 of 36] x86/paravirt: groundwork for 64-bit Xen support Date: Wed, 25 Jun 2008 13:12:25 -0700 Message-ID: <4862A6A9.1030109@goop.org> References: <20080625084253.GA11524@elte.hu> <20080625152212.GA3442@elte.hu> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20080625152212.GA3442@elte.hu> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Ingo Molnar Cc: Nick Piggin , Mark McLoughlin , xen-devel , Eduardo Habkost , Vegard Nossum , Stephen Tweedie , x86@kernel.org, LKML , Yinghai Lu List-Id: xen-devel@lists.xenproject.org Ingo Molnar wrote: > * Ingo Molnar wrote: > > =20 >> Anyway, that's all theory - i'll try out your patchset in -tip to see=20 >> what breaks in practice ;-) >> =20 > > i've put the commits (and a good number of dependent commits) into the=20 > new tip/x86/xen-64bit topic branch. > > It quickly broke the build in testing: > > include/asm/pgalloc.h: In function =E2=80=98paravirt_pgd_free': > include/asm/pgalloc.h:14: error: parameter name omitted > arch/x86/kernel/entry_64.S: In file included from=20 > arch/x86/kernel/traps_64.c:51:include/asm/pgalloc.h: In function =E2=80= =98paravirt_pgd_free': > include/asm/pgalloc.h:14: error: parameter name omitted > =20 No, looks like my fault. The non-PARAVIRT version of=20 paravirt_pgd_free() is: static inline void paravirt_pgd_free(struct mm_struct *mm, pgd_t *) {} but C doesn't like missing parameter names, even if unused. This should fix it: diff -r 19b73cc5fdf4 include/asm-x86/pgalloc.h --- a/include/asm-x86/pgalloc.h Wed Jun 25 11:24:41 2008 -0400 +++ b/include/asm-x86/pgalloc.h Wed Jun 25 13:11:56 2008 -0700 @@ -11,7 +11,7 @@ #include #else #define paravirt_pgd_alloc(mm) __paravirt_pgd_alloc(mm) -static inline void paravirt_pgd_free(struct mm_struct *mm, pgd_t *) {} +static inline void paravirt_pgd_free(struct mm_struct *mm, pgd_t *pgd) {= } static inline void paravirt_alloc_pte(struct mm_struct *mm, unsigned lon= g pfn) {} static inline void paravirt_alloc_pmd(struct mm_struct *mm, unsigned lon= g pfn) {} static inline void paravirt_alloc_pmd_clone(unsigned long pfn, unsigned = long clonepfn,