Please take our Survey
logo       

Choosing A Webhost:
A web hosting service is a type of Internet hosting service that allows individuals and organizations to provide their own website accessible via the World Wide Web. Web hosts are companies that provide space on a server they own for use by their clients as well as providing Internet connectivity, typically in a data center. Web hosts can also provide data center space and connectivity to the Internet for servers they do not own to be located in their data center, called colocation. more...

[RFC] enable xen-ia64 in fedora kernel cvs: msg#00151

Subject: [RFC] enable xen-ia64 in fedora kernel cvs
This patch enables xen-ia64 support in the fedora kernel.  It applies
to the cvs tree checked out according to the instructions at
http://people.redhat.com/davej/

This is *nearly* ready to be applied.  AFAIK, the only nagging issue
is that it doesn't boot because of the hypervisor/kernel mismatch.
(Full description of the problem at 
https://www.redhat.com/archives/fedora-ia64-list/2006-June/msg00026.html)

To fix this for the moment, I think all that needs to happen is for
Juan to generate a new linux-2.6-xen.patch from the linux-2.6.tip-xen
repository, and then take a new snapshot of the hypervisor from
xen-unstable.  That should bring the two into near enough proximity
for ia64 to boot again.

Juan, could you do this ASAP?  It would be a great help since I could
follow up with a version of this patch suitable for integration.

Regarding long-term solution, I think it would be best for Juan to
take maintainership of the linux-2.6.tip-xen repository.  That would
allow him to sync it to xen-unstable at the same time that he takes
the hypervisor snapshot.  The result should always be a matched pair.

I'd be interested to hear comments regarding this suggestion and this
patch.

 b/devel/configs/config-xen-ia64        |   19 +++++++++
 b/devel/linux-2.6-xen-ia64-fixes.patch |   63 +++++++++++++++++++++++++++++++++
 b/devel/xen-ia64-fixes.patch           |   13 ++++++
 devel/Makefile.config                  |   18 +++++++--
 devel/kernel-2.6.spec                  |   57 ++++++++++++++++++++---------
 5 files changed, 149 insertions(+), 21 deletions(-)

diff -r 73280cc9332c -r ab31e6d960bb devel/Makefile.config
--- a/devel/Makefile.config     Tue Jun 27 15:01:33 2006 -0400
+++ b/devel/Makefile.config     Tue Jun 27 15:50:47 2006 -0400
@@ -13,7 +13,8 @@ CONFIGFILES   = \
        $(CFG)-ppc.config $(CFG)-ppc-smp.config \
        $(CFG)-ppc64.config $(CFG)-ppc64-kdump.config $(CFG)-ia64.config \
        $(CFG)-i686-xen-PAE.config \
-       $(CFG)-i686-xen.config $(CFG)-x86_64-xen.config
+       $(CFG)-i686-xen.config $(CFG)-x86_64-xen.config \
+       $(CFG)-ia64-xen.config
 
 PLATFORMS      = x86 x86_64 powerpc powerpc32 powerpc64 s390 ia64 # sparc 
sparc64
 TEMPFILES      = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
@@ -21,8 +22,10 @@ configs: $(CONFIGFILES)
 configs: $(CONFIGFILES)
        @rm -f kernel-*-config
        @rm -f $(TEMPFILES)
-       @rm -f temp-xen-generic temp-x86-xen-generic temp-x86_64-xen-generic \
-               temp-generic temp-x86_64-xen-generic-tmp
+       @rm -f temp-generic temp-xen-generic \
+               temp-x86-xen-generic \
+               temp-x86_64-xen-generic temp-x86_64-xen-generic-tmp \
+               temp-ia64-xen-generic temp-ia64-xen-generic-tmp
 
 # Augment the clean target to clean up our own cruft
 clean ::
@@ -69,6 +72,12 @@ temp-x86_64-xen-generic-tmp: configs/con
        perl scripts/merge.pl $^ > $@
 
 temp-x86_64-xen-generic: configs/config-xen-x86_64 temp-x86_64-xen-generic-tmp
+       perl scripts/merge.pl $^ > $@
+
+temp-ia64-xen-generic-tmp: configs/config-xen-generic temp-ia64-generic
+       perl scripts/merge.pl $^ > $@
+
+temp-ia64-xen-generic: configs/config-xen-ia64 temp-ia64-xen-generic-tmp
        perl scripts/merge.pl $^ > $@
 
 kernel-$(VERSION)-i686.config: configs/config-i686 temp-x86-generic
@@ -134,3 +143,6 @@ kernel-$(VERSION)-x86_64-xen.config: con
 kernel-$(VERSION)-x86_64-xen.config: configs/config-xen-xen 
temp-x86_64-xen-generic
        perl scripts/merge.pl $^ x86_64 > $@
 
+kernel-$(VERSION)-ia64-xen.config: configs/config-xen-xen temp-ia64-xen-generic
+       perl scripts/merge.pl $^ ia64 > $@
+
diff -r 73280cc9332c -r ab31e6d960bb devel/kernel-2.6.spec
--- a/devel/kernel-2.6.spec     Tue Jun 27 15:01:33 2006 -0400
+++ b/devel/kernel-2.6.spec     Tue Jun 27 15:50:47 2006 -0400
@@ -37,6 +37,9 @@ Summary: The Linux kernel (the core of t
 %define xen_version 20060610
 %define make_target bzImage
 %define kernel_image x86
+%define xen_flags verbose=y debug=y crash_debug=y
+%define xen_target vmlinuz
+%define xen_image vmlinuz
 
 %define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}
 
@@ -55,10 +58,14 @@ Summary: The Linux kernel (the core of t
 %define all_arch_configs $RPM_SOURCE_DIR/kernel-%{kversion}-*.config
 %endif
 
-# Xen and kdump only build on i686 and x86_64 ...
+# kdump only builds on i686 and x86_64
 %ifnarch i686 x86_64
+%define buildkdump 0
+%endif
+
+# Xen only builds on i686, x86_64 and ia64 ...
+%ifnarch i686 x86_64 ia64
 %define buildxen 0
-%define buildkdump 0
 %endif
 
 %ifarch ppc64
@@ -140,11 +147,15 @@ Summary: The Linux kernel (the core of t
 %endif
 
 %ifarch ia64
-%define all_arch_configs $RPM_SOURCE_DIR/kernel-%{kversion}-ia64.config
+%define all_arch_configs $RPM_SOURCE_DIR/kernel-%{kversion}-ia64*.config
 %define image_install_path boot/efi/EFI/redhat
 %define signmodules 1
 %define make_target compressed
 %define kernel_image vmlinux.gz
+# ia64 doesn't building with debug=y at the moment
+%define xen_flags verbose=y crash_debug=y
+%define xen_target compressed
+%define xen_image vmlinux.gz
 %endif
 
 #
@@ -246,6 +257,8 @@ Source36: kernel-%{kversion}-i686-xen-PA
 #Source67: kernel-%{kversion}-sparc64.config
 #Source68: kernel-%{kversion}-sparc64-smp.config
 
+Source133: kernel-%{kversion}-ia64-xen.config
+
 #
 # Patches 0 through 100 are meant for core subsystem upgrades
 #
@@ -288,6 +301,7 @@ Patch703: linux-2.6-xen-move-vdso-fixmap
 Patch703: linux-2.6-xen-move-vdso-fixmap.patch
 Patch704: linux-2.6-xen-vsyscall_base.patch
 Patch706: linux-2.6-xen_remap_vma_flags.patch
+Patch707: linux-2.6-xen-ia64-fixes.patch
 
 #
 # Patches 800 through 899 are reserved for bugfixes to the core system
@@ -439,6 +453,7 @@ Patch10001: linux-2.6-random-patches.pat
 
 # Xen hypervisor patches
 Patch20000: xen-sched-sedf.patch
+Patch20001: xen-ia64-fixes.patch
 
 
 # END OF PATCH DEFINITIONS
@@ -717,6 +732,7 @@ cp -rl xen-%{xen_version} xen
 
 # Any necessary hypervisor patches go here
 %patch20000 -p0
+%patch20001 -p0
 %endif
 
 cd linux-%{kversion}.%{_target_cpu}
@@ -784,11 +800,10 @@ cd linux-%{kversion}.%{_target_cpu}
 #
 %patch700 -p1 -b .p.xen
 #
-# ... and back out all the ia64-specific sections, as they currently prevent
+# ... and back out all the tpm-specific sections, as they currently prevent
 # non-xen builds from working.
-# Now also with tpm
-#
-for f in `find drivers/char/tpm arch/ia64/ include/asm-ia64/ 
include/xen/interface/arch-ia64.h* -type f -name "*.p.xen"` ; do \
+#
+for f in `find drivers/char/tpm -type f -name "*.p.xen"` ; do \
     g=`dirname $f`/`basename $f .p.xen`; \
     mv "$f" "$g"; \
     if [ ! -s "$g" ] ; then rm -f "$g" ; fi; \
@@ -796,6 +811,11 @@ done
 # Delete the rest of the backup files, they just confuse the build later
 find -name "*.p.xen" | xargs rm -f
 
+# These are fixed in xen-ia64-unstable, can go away when that
+# propagates to Juan's patch
+ln -sf ../../../../xen/include/asm-ia64/asm-xsi-offsets.h include/asm-ia64/xen/
+ln -sf ../../../arch/ia64/xen/drivers/xenia64_init.c drivers/xen/core/
+
 #
 # Xen includes a patch which moves the vsyscall fixmap into a user-space VA,
 # freeing user-space from reliance on an absolute fixmap area and so allowing
@@ -811,6 +831,7 @@ find -name "*.p.xen" | xargs rm -f
 %patch702 -p1
 %patch704 -p1
 %patch706 -p1
+%patch707 -p1
 
 %endif
 
@@ -1266,15 +1287,15 @@ mkdir -p $RPM_BUILD_ROOT/boot
 %if %{includexen}
 %if %{buildxen}
   cd xen
-  mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
+  mkdir -p $RPM_BUILD_ROOT/%{image_install_path} $RPM_BUILD_ROOT/boot
 %if %{buildxenPAE}
-  make debug=y verbose=y crash_debug=y pae=y
-  install -m 644 xen.gz $RPM_BUILD_ROOT/boot/xen.gz-%{KVERREL}-PAE
+  make %{?_smp_mflags} %{xen_flags} pae=y
+  install -m 644 xen.gz 
$RPM_BUILD_ROOT/%{image_install_path}/xen.gz-%{KVERREL}-PAE
   install -m 755 xen-syms $RPM_BUILD_ROOT/boot/xen-syms-%{KVERREL}-PAE
   make clean
 %endif
-  make debug=y verbose=y crash_debug=y
-  install -m 644 xen.gz $RPM_BUILD_ROOT/boot/xen.gz-%{KVERREL}
+  make %{?_smp_mflags} %{xen_flags}
+  install -m 644 xen.gz $RPM_BUILD_ROOT/%{image_install_path}/xen.gz-%{KVERREL}
   install -m 755 xen-syms $RPM_BUILD_ROOT/boot/xen-syms-%{KVERREL}
   cd ..
 %endif
@@ -1296,11 +1317,11 @@ BuildKernel %make_target %kernel_image s
 
 %if %{includexen}
 %if %{buildxenPAE}
-BuildKernel vmlinuz vmlinuz xen-PAE
+BuildKernel %xen_target %xen_image xen-PAE
 %endif
 
 %if %{buildxen}
-BuildKernel vmlinuz vmlinuz xen
+BuildKernel %xen_target %xen_image xen
 %endif
 %endif
 
@@ -1405,7 +1426,7 @@ fi
 %post xen
 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade 
%{rpmversion}-%{release}-xen
 if [ -e /proc/xen/xsd_kva -o ! -d /proc/xen ]; then 
-       /sbin/new-kernel-pkg --package kernel-xen --mkinitrd --depmod --install 
--multiboot=/boot/xen.gz-%{KVERREL} %{KVERREL}xen
+       /sbin/new-kernel-pkg --package kernel-xen --mkinitrd --depmod --install 
--multiboot=/%{image_install_path}/xen.gz-%{KVERREL} %{KVERREL}xen
 else 
        /sbin/new-kernel-pkg --package kernel-xen --mkinitrd --depmod --install 
%{KVERREL}xen
 fi
@@ -1422,7 +1443,7 @@ fi
 %post xen-PAE
 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade 
%{rpmversion}-%{release}-xen-PAE
 if [ -e /proc/xen/xsd_kva ]; then 
-       /sbin/new-kernel-pkg --package kernel-xen-PAE --mkinitrd --depmod 
--install --multiboot=/boot/xen.gz-%{KVERREL}-PAE %{KVERREL}xen-PAE
+       /sbin/new-kernel-pkg --package kernel-xen-PAE --mkinitrd --depmod 
--install --multiboot=/%{image_install_path}/xen.gz-%{KVERREL}-PAE 
%{KVERREL}xen-PAE
 else 
        /sbin/new-kernel-pkg --package kernel-xen-PAE --mkinitrd --depmod 
--install %{KVERREL}xen-PAE
 fi
@@ -1551,7 +1572,7 @@ fi
 /boot/symvers-%{KVERREL}xen.gz
 /boot/symsets-%{KVERREL}xen.tar.gz
 /boot/config-%{KVERREL}xen
-/boot/xen.gz-%{KVERREL}
+/%{image_install_path}/xen.gz-%{KVERREL}
 /boot/xen-syms-%{KVERREL}
 %dir /lib/modules/%{KVERREL}xen
 /lib/modules/%{KVERREL}xen/kernel
@@ -1576,7 +1597,7 @@ fi
 /boot/symvers-%{KVERREL}xen-PAE.gz
 /boot/symsets-%{KVERREL}xen-PAE.tar.gz
 /boot/config-%{KVERREL}xen-PAE
-/boot/xen.gz-%{KVERREL}-PAE
+/%{image_install_path}/xen.gz-%{KVERREL}-PAE
 /boot/xen-syms-%{KVERREL}-PAE
 %dir /lib/modules/%{KVERREL}xen-PAE
 /lib/modules/%{KVERREL}xen-PAE/kernel
diff -r 73280cc9332c -r ab31e6d960bb devel/configs/config-xen-ia64
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/configs/config-xen-ia64     Tue Jun 27 15:50:47 2006 -0400
@@ -0,0 +1,19 @@
+# override i686 xen
+
+# CONFIG_X86 is not set
+# CONFIG_X86_XEN is not set
+CONFIG_IA64=y
+CONFIG_XEN=y
+CONFIG_XEN_IA64_DOM0_VP=y
+CONFIG_XEN_DISABLE_SERIAL=y
+
+# override ia64 generic
+
+# CONFIG_IA64_GENERIC is not set
+CONFIG_IA64_DIG=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FORCE_MAX_ZONEORDER=11
+
+# internal #defines conflict with xen-ia64
+# CONFIG_FB_NEOMAGIC is not set
diff -r 73280cc9332c -r ab31e6d960bb devel/linux-2.6-xen-ia64-fixes.patch
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/linux-2.6-xen-ia64-fixes.patch      Tue Jun 27 15:50:47 2006 -0400
@@ -0,0 +1,63 @@
+--- linux-2.6.17.ia64.orig/arch/ia64/xen/xenentry.S    2006-06-21 
16:56:36.000000000 -0400
++++ linux-2.6.17.ia64/arch/ia64/xen/xenentry.S 2006-06-21 20:59:47.000000000 
-0400
+@@ -819,9 +819,6 @@ skip_rbs_switch:
+       st8 [r2]=r8
+       st8 [r3]=r10
+ .work_pending:
+-      tbit.nz p6,p0=r31,TIF_SIGDELAYED                // signal delayed from  
MCA/INIT/NMI/PMI context?
+-(p6)  br.cond.sptk.few .sigdelayed
+-      ;;
+       tbit.z p6,p0=r31,TIF_NEED_RESCHED               // 
current_thread_info()->need_resched==0?
+ (p6)  br.cond.sptk.few .notify
+ #ifdef CONFIG_PREEMPT
+@@ -857,17 +854,6 @@ skip_rbs_switch:
+ (pLvSys)br.cond.sptk.few  .work_pending_syscall_end
+       br.cond.sptk.many .work_processed_kernel        // don't re-check
+ 
+-// There is a delayed signal that was detected in MCA/INIT/NMI/PMI context 
where
+-// it could not be delivered.  Deliver it now.  The signal might be for us and
+-// may set TIF_SIGPENDING, so redrive ia64_leave_* after processing the 
delayed
+-// signal.
+-
+-.sigdelayed:
+-      br.call.sptk.many rp=do_sigdelayed
+-      cmp.eq p6,p0=r0,r0                              // p6 <- 1, always 
re-check
+-(pLvSys)br.cond.sptk.few  .work_pending_syscall_end
+-      br.cond.sptk.many .work_processed_kernel        // re-check
+-
+ .work_pending_syscall_end:
+       adds r2=PT(R8)+16,r12
+       adds r3=PT(R10)+16,r12
+--- linux-2.6.17.ia64.orig/include/asm-ia64/io.h       2006-06-21 
16:56:36.000000000 -0400
++++ linux-2.6.17.ia64/include/asm-ia64/io.h    2006-06-21 18:11:00.000000000 
-0400
+@@ -450,28 +450,14 @@ __writeq (unsigned long val, volatile vo
+ # define outl_p               outl
+ #endif
+ 
+-/*
+- * An "address" in IO memory space is not clearly either an integer or a 
pointer. We will
+- * accept both, thus the casts.
+- *
+- * On ia-64, we access the physical I/O memory space through the uncached 
kernel region.
+- */
+-static inline void __iomem *
+-ioremap (unsigned long offset, unsigned long size)
+-{
+-#ifdef CONFIG_XEN
+-      offset = HYPERVISOR_ioremap(offset, size);
+-#endif
+-      return (void __iomem *) (__IA64_UNCACHED_OFFSET | (offset));
+-}
++extern void __iomem * ioremap(unsigned long offset, unsigned long size);
++extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long 
size);
+ 
+ static inline void
+ iounmap (volatile void __iomem *addr)
+ {
+ }
+ 
+-#define ioremap_nocache(o,s)  ioremap(o,s)
+-
+ /* Use normal IO mappings for DMI */
+ #define dmi_ioremap ioremap
+ #define dmi_iounmap(x,l) iounmap(x)
diff -r 73280cc9332c -r ab31e6d960bb devel/xen-ia64-fixes.patch
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/xen-ia64-fixes.patch        Tue Jun 27 15:50:47 2006 -0400
@@ -0,0 +1,13 @@
+--- xen.orig/include/asm-ia64/xenpage.h        2006-05-03 15:05:40.000000000 
-0400
++++ xen/include/asm-ia64/xenpage.h     2006-06-22 12:15:40.000000000 -0400
+@@ -28,6 +28,10 @@
+ #define page_to_virt(_page)   maddr_to_virt(page_to_maddr(_page))
+ #define maddr_to_page(kaddr)  mfn_to_page(((kaddr) >> PAGE_SHIFT))
+ 
++/* Convert between Xen-heap virtual addresses and machine frame numbers. */
++#define virt_to_mfn(va)               (virt_to_maddr(va) >> PAGE_SHIFT)
++#define mfn_to_virt(mfn)      maddr_to_virt(mfn << PAGE_SHIFT)
++
+ #ifndef __ASSEMBLY__
+ typedef union xen_va {
+       struct {

Attachment: pgp3jAQZYIsQh.pgp
Description: PGP signature

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
qnx.openqnx.dev...    gcc.libstdc++.c...    solaris.opensol...    information-ret...    misc.misterhous...    web.catalyst.ge...    apache.webservi...    redhat.release....    hardware.lirc/2...    kernel.autofs/2...    technology.sust...    linux.vdr/2003-...    editors.lyx.gen...    org.user-groups...    netbsd.devel.pk...    xdg.devel/2004-...    version-control...    jakarta.slide.d...    debian.packages...    creativecommons...    ports.ppc.embed...    bug-tracking.bu...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe