All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fix build when CONFIG_COMPAT disabled
@ 2007-01-11 15:42 Jan Beulich
  2007-01-11 15:47 ` Keir Fraser
  0 siblings, 1 reply; 7+ messages in thread
From: Jan Beulich @ 2007-01-11 15:42 UTC (permalink / raw)
  To: xen-devel; +Cc: John Levon

Properly conditionalize two places where compat-only structure fields get
accessed, and avoid compiler warnings on unused variables in two other
places.

Signed-off-by: Jan Beulich <jbeulich@novell.com>

Index: 2007-01-08/xen/arch/x86/mm.c
===================================================================
--- 2007-01-08.orig/xen/arch/x86/mm.c	2007-01-09 17:00:55.000000000 +0100
+++ 2007-01-08/xen/arch/x86/mm.c	2007-01-11 15:33:22.000000000 +0100
@@ -1143,10 +1143,12 @@ static int alloc_l4_table(struct page_in
     pl4e[l4_table_offset(PERDOMAIN_VIRT_START)] =
         l4e_from_page(virt_to_page(d->arch.mm_perdomain_l3),
                       __PAGE_HYPERVISOR);
+#ifdef CONFIG_COMPAT
     if ( IS_COMPAT(d) )
         pl4e[l4_table_offset(COMPAT_ARG_XLAT_VIRT_BASE)] =
             l4e_from_page(virt_to_page(d->arch.mm_arg_xlat_l3),
                           __PAGE_HYPERVISOR);
+#endif
 
     return 1;
 
@@ -1376,7 +1378,7 @@ static int mod_l2_entry(l2_pgentry_t *pl
         if ( !l2e_has_changed(ol2e, nl2e, _PAGE_PRESENT))
             return UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, pfn, current);
 
-        if ( unlikely(!get_page_from_l2e(nl2e, pfn, current->domain)) )
+        if ( unlikely(!get_page_from_l2e(nl2e, pfn, d)) )
             return 0;
 
         if ( unlikely(!UPDATE_ENTRY(l2, pl2e, ol2e, nl2e, pfn, current)) )
@@ -1439,7 +1441,7 @@ static int mod_l3_entry(l3_pgentry_t *pl
         if (!l3e_has_changed(ol3e, nl3e, _PAGE_PRESENT))
             return UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, pfn, current);
 
-        if ( unlikely(!get_page_from_l3e(nl3e, pfn, current->domain)) )
+        if ( unlikely(!get_page_from_l3e(nl3e, pfn, d)) )
             return 0;
 
         if ( unlikely(!UPDATE_ENTRY(l3, pl3e, ol3e, nl3e, pfn, current)) )
Index: 2007-01-08/xen/include/asm-x86/config.h
===================================================================
--- 2007-01-08.orig/xen/include/asm-x86/config.h	2007-01-08 14:54:33.000000000 +0100
+++ 2007-01-08/xen/include/asm-x86/config.h	2007-01-11 15:27:04.000000000 +0100
@@ -208,7 +208,11 @@ extern unsigned long _end; /* standard E
 
 /* This is not a fixed value, just a lower limit. */
 #define __HYPERVISOR_COMPAT_VIRT_START 0xF5800000
+#ifdef CONFIG_COMPAT
 #define HYPERVISOR_COMPAT_VIRT_START(d) ((d)->arch.hv_compat_vstart)
+#else
+#define HYPERVISOR_COMPAT_VIRT_START(d) 0
+#endif
 #define MACH2PHYS_COMPAT_VIRT_START    HYPERVISOR_COMPAT_VIRT_START
 #define MACH2PHYS_COMPAT_VIRT_END      0xFFE00000
 #define MACH2PHYS_COMPAT_NR_ENTRIES(d) \

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] fix build when CONFIG_COMPAT disabled
  2007-01-11 15:42 [PATCH] fix build when CONFIG_COMPAT disabled Jan Beulich
@ 2007-01-11 15:47 ` Keir Fraser
  2007-01-11 16:17   ` John Levon
  2007-01-11 16:31   ` Jan Beulich
  0 siblings, 2 replies; 7+ messages in thread
From: Keir Fraser @ 2007-01-11 15:47 UTC (permalink / raw)
  To: Jan Beulich, xen-devel; +Cc: John Levon




On 11/1/07 15:42, "Jan Beulich" <jbeulich@novell.com> wrote:

> Properly conditionalize two places where compat-only structure fields get
> accessed, and avoid compiler warnings on unused variables in two other
> places.

Should we bother to #ifdef where we don't need to? It's ugly and the
compiler should be able to remove dead code where a condition evaluates to
zero at compile time: we already have IS_COMPAT(d) hardcoded to zero if
!CONFIG_COMPAT, which is enough to give the compiler a fair chance.

 -- Keir

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] fix build when CONFIG_COMPAT disabled
  2007-01-11 15:47 ` Keir Fraser
@ 2007-01-11 16:17   ` John Levon
  2007-01-11 16:31   ` Jan Beulich
  1 sibling, 0 replies; 7+ messages in thread
From: John Levon @ 2007-01-11 16:17 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel, Jan Beulich

On Thu, Jan 11, 2007 at 03:47:25PM +0000, Keir Fraser wrote:

> > Properly conditionalize two places where compat-only structure fields get
> > accessed, and avoid compiler warnings on unused variables in two other
> > places.
> 
> Should we bother to #ifdef where we don't need to? It's ugly and the
> compiler should be able to remove dead code where a condition evaluates to
> zero at compile time: we already have IS_COMPAT(d) hardcoded to zero if
> !CONFIG_COMPAT, which is enough to give the compiler a fair chance.
> 
>  -- Keir

The problem is the COMPAT_ARG_XLAT_VIRT_BASE used in that chunk.

regards
john

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] fix build when CONFIG_COMPAT disabled
  2007-01-11 15:47 ` Keir Fraser
  2007-01-11 16:17   ` John Levon
@ 2007-01-11 16:31   ` Jan Beulich
  2007-01-11 17:57     ` Keir Fraser
  1 sibling, 1 reply; 7+ messages in thread
From: Jan Beulich @ 2007-01-11 16:31 UTC (permalink / raw)
  To: xen-devel, Keir Fraser; +Cc: John Levon

>>> Keir Fraser <keir@xensource.com> 11.01.07 16:47 >>>
>On 11/1/07 15:42, "Jan Beulich" <jbeulich@novell.com> wrote:
>
>> Properly conditionalize two places where compat-only structure fields get
>> accessed, and avoid compiler warnings on unused variables in two other
>> places.
>
>Should we bother to #ifdef where we don't need to? It's ugly and the
>compiler should be able to remove dead code where a condition evaluates to
>zero at compile time: we already have IS_COMPAT(d) hardcoded to zero if
>!CONFIG_COMPAT, which is enough to give the compiler a fair chance.

Generally no, but in the one case in the patch we have to, as the structure
member (mm_arg_xlat_l3) doesn't exist without CONFIG_COMPAT.

Jan

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] fix build when CONFIG_COMPAT disabled
  2007-01-11 16:31   ` Jan Beulich
@ 2007-01-11 17:57     ` Keir Fraser
  2007-01-12  0:10       ` John Levon
  2007-01-12  7:49       ` Jan Beulich
  0 siblings, 2 replies; 7+ messages in thread
From: Keir Fraser @ 2007-01-11 17:57 UTC (permalink / raw)
  To: Jan Beulich, xen-devel, Keir Fraser; +Cc: John Levon

On 11/1/07 16:31, "Jan Beulich" <jbeulich@novell.com> wrote:

>> Should we bother to #ifdef where we don't need to? It's ugly and the
>> compiler should be able to remove dead code where a condition evaluates to
>> zero at compile time: we already have IS_COMPAT(d) hardcoded to zero if
>> !CONFIG_COMPAT, which is enough to give the compiler a fair chance.
> 
> Generally no, but in the one case in the patch we have to, as the structure
> member (mm_arg_xlat_l3) doesn't exist without CONFIG_COMPAT.

CONFIG_COMPAT isn't a real config option though. It's a function of the
architecture we're building for. So we don't need ifdef CONFIG_COMPAT in any
x86/64-specific code.

I'm very keen to get rid of CONFIG_* where possible. In x86 code we can
variously remove ifdefs or turn them into CONFIG_X86_64. We probably need to
keep CONFIG_COMPAT in some common code I guess.

This really follows my view that much of this new code should simply be
viewed as an always-on x86/64 extension, and that code should be propagated
down into arch/x86 and arch/x86/x86_64 as much as possible to reflect that.

 -- Keir

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] fix build when CONFIG_COMPAT disabled
  2007-01-11 17:57     ` Keir Fraser
@ 2007-01-12  0:10       ` John Levon
  2007-01-12  7:49       ` Jan Beulich
  1 sibling, 0 replies; 7+ messages in thread
From: John Levon @ 2007-01-12  0:10 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel, Jan Beulich

On Thu, Jan 11, 2007 at 05:57:45PM +0000, Keir Fraser wrote:

> CONFIG_COMPAT isn't a real config option though. It's a function of the
> architecture we're building for. So we don't need ifdef CONFIG_COMPAT in any
> x86/64-specific code.

Assuming we can get it at least building on non-Linux, it's fine by me.
Rewriting in Python was less painful than I suspected, so there's just
the pragma issue left.

regards
john

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] fix build when CONFIG_COMPAT disabled
  2007-01-11 17:57     ` Keir Fraser
  2007-01-12  0:10       ` John Levon
@ 2007-01-12  7:49       ` Jan Beulich
  1 sibling, 0 replies; 7+ messages in thread
From: Jan Beulich @ 2007-01-12  7:49 UTC (permalink / raw)
  To: xen-devel, Keir Fraser; +Cc: John Levon

>CONFIG_COMPAT isn't a real config option though. It's a function of the
>architecture we're building for. So we don't need ifdef CONFIG_COMPAT in any
>x86/64-specific code.

Okay, I didn't view it that way - I really thought that it wouldn't be bad to be
able to turn off optional features like HVM or COMPAT...

Jan

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-01-12  7:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-11 15:42 [PATCH] fix build when CONFIG_COMPAT disabled Jan Beulich
2007-01-11 15:47 ` Keir Fraser
2007-01-11 16:17   ` John Levon
2007-01-11 16:31   ` Jan Beulich
2007-01-11 17:57     ` Keir Fraser
2007-01-12  0:10       ` John Levon
2007-01-12  7:49       ` Jan Beulich

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.