I've attached a patch to fix this issues (pr136271_fix.patch), but even after this was done the kernel still failed to build because of a linking issue. The linking failure is due to sys/i386/xen/pmap.c lacking a definition for pmap_page_set_memattr. The attached xen_pmap_fix.patch will add the definition which I copied out of src/sys/i386/i386/pmap.c. I don't know if this was reasonable to do, but it did compile and the kernel did at least attempt to boot on a Xen 3.2.1 machine I have.

- Chris Thunes

Adrian Chadd wrote:
I'm sure it's my fault and I'm sure it will be easy to fix. I'm just
busy on other projects at the moment.

I'll commit a patch if someone figures out the fix and attaches it to
the relevant PR.

Thanks,



adrian

2009/7/18 Yury A. Buldakov <yury.bulda...@gmail.com>:
%subj

While doing
 make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=XEN

or
 cd /usr/src/sys/i386/compile/XEN
 make

build fails with:
------
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xdr/xdr_mbuf.c
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xdr/xdr_mem.c
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xdr/xdr_reference.c
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xdr/xdr_sizeof.c
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xen/gnttab.c
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xen/features.c
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector -Werror  ../../../xen/evtchn/evtchn.c
cc1: warnings being treated as errors
../../../xen/evtchn/evtchn.c:653: warning: initialization from
incompatible pointer type
*** Error code 1

Stop in /usr/src/sys/i386/compile/XEN.
-----

If I try to build it with
make WEARROR=
I got this
-----
...
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector   vnode_if.c
:> hack.c
cc -shared -nostdlib hack.c -o hack.So
rm -f hack.c
MAKE=make sh ../../../conf/newvers.sh XEN
cc -c -O2 -pipe -fno-strict-aliasing  -std=c99  -Wall -Wredundant-decls
-Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
-Wpointer-arith -Winline -
Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I.
-I../../.. -I../../../contrib/altq -D_KERNEL
-DHAVE_KERNEL_OPTION_HEADERS -include o
pt_global.h -fno-common -finline-limit=8000 --param
inline-unit-growth=100 --param large-function-growth=1000
-mno-align-long-strings -mpreferred-stack-boun
dary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
-fstack-protector   vers.c
linking kernel
device_pager.o(.text+0x1a9): In function `dev_pager_getpages':
: undefined reference to `pmap_page_set_memattr'
device_pager.o(.text+0x1c5): In function `dev_pager_getpages':
: undefined reference to `pmap_page_set_memattr'
device_pager.o(.text+0x2a8): In function `dev_pager_getpages':
: undefined reference to `pmap_page_set_memattr'
device_pager.o(.text+0x4c0): In function `dev_pager_dealloc':
: undefined reference to `pmap_page_set_memattr'
vm_contig.o(.text+0x776): In function `kmem_alloc_contig':
: undefined reference to `pmap_page_set_memattr'
vm_page.o(.text+0x1536): more undefined references to
`pmap_page_set_memattr' follow
*** Error code 1

Stop in /usr/src/sys/i386/compile/XEN.
-----
My config is almost default XEN config with commented out debug-related
options.
_______________________________________________
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

_______________________________________________
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"
diff -burN src-old/sys/xen/evtchn/evtchn.c src/sys/xen/evtchn/evtchn.c
--- src-old/sys/xen/evtchn/evtchn.c     2009-05-30 08:53:13.000000000 +0000
+++ src/sys/xen/evtchn/evtchn.c 2009-07-19 14:28:54.000000000 +0000
@@ -626,7 +626,7 @@
 static int      xenpic_source_pending(struct intsrc *isrc); 
 static void     xenpic_suspend(struct pic* pic); 
 static void     xenpic_resume(struct pic* pic); 
-static void     xenpic_assign_cpu(struct intsrc *, u_int apic_id);
+static int      xenpic_assign_cpu(struct intsrc *, u_int apic_id);
 
 
 struct pic xenpic_dynirq_template  =  { 
@@ -752,10 +752,11 @@
        TODO; 
 }
 
-static void 
+static int
 xenpic_assign_cpu(struct intsrc *isrc, u_int apic_id)
 { 
        TODO; 
+       return 0;
 }
 
 void
--- src-old/sys/i386/xen/pmap.c 2009-07-12 19:31:20.000000000 -0400
+++ src/sys/i386/xen/pmap.c     2009-07-19 17:27:51.000000000 -0400
@@ -3921,6 +3921,24 @@
        kmem_free(kernel_map, base, size);
 }
 
+/*
+ * Sets the memory attribute for the specified page.
+ */
+void
+pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma)
+{
+
+       m->md.pat_mode = ma;
+
+       /*
+        * Flush CPU caches to make sure any data isn't cached that shouldn't
+        * be, etc.
+        */    
+       /* If "Self Snoop" is supported, do nothing. */
+       if (!(cpu_feature & CPUID_SS))
+               pmap_invalidate_cache();
+}
+
 int
 pmap_change_attr(va, size, mode)
        vm_offset_t va;
_______________________________________________
freebsd-xen@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to