[Fedora-xen] fedora-xen-ia64 integration, step 1

Aron Griffis aron at hp.com
Fri Jun 2 15:32:05 UTC 2006

Hi Dave and Juan,

I'd like to get started on the path to integrating the fedora-xen-ia64
work into fedora.  There are a number of pieces that I'll be trying to
pull together over the next few days.  The biggest/hardest piece is
the kernel rpm.

I've split the changes into two parts:
    1. generic fixes and enablement
    2. ia64 xen integration

This mail contains the first part.  For the second part, I'd like to
request that Juan updates his patch to the most recent xen-unstable
first.  Then I'll work on making it build on ia64 and send back
whatever changes are necessary, including the ia64-xen[0U] configs.

Once the kernel rpm is working, it should be a relatively simple
matter to make the remainder of modifications to "turn on" xen-ia64.
Sound reasonable?


This patch makes the following changes to the kernel specfile:

    - abstract xenlinux build using xen_flags, xen_target and
      xen_image instead of assuming x86 behavior

    - add xen_* overrides to %ifarch ia64, won't be used until
      buildxen is flipped on for ia64

    - run the xen-mkbuildtree-pre hook following applying the xen
      patch.  This touches a couple files on ia64 but doesn't
      interfere with any patching down the line.  (I and others have
      been submitting patches to xen-ia64-devel and xen-devel to
      further reduce its function, but it should be harmless as-is.)

    - update numerous hardcoded references to /boot to use
      %{image_install_path} instead.  But make an exception for the
      xenU kernels which never need to be available for system

    - build the hypervisor with %{?_smp_mflags} (it works fine)

Signed-off-by: Aron Griffis <aron at hp.com>

--- kernel-2.6.spec.orig	2006-06-01 19:12:59.000000000 -0400
+++ kernel-2.6.spec	2006-06-02 11:18:33.000000000 -0400
@@ -32,6 +32,9 @@
 %define xen_version 20060524
 %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
@@ -127,11 +130,15 @@
 %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
@@ -834,6 +841,15 @@
 # Delete the rest of the backup files, they just confuse the build later
 find -name "*.p.xen" | xargs rm -f
+# Run the xen-mkbuildtree-pre hook, if it exists for this architecture.
+# Hopefully this is kept clean (or non-existent) so that patches aren't confused
+# further down the line.  Presently it's used only for ia64, and only for files
+# that we aren't interested in patching.
+if [[ -f "arch/%{_arch}/xen-mkbuildtree-pre" ]]; then
+    chmod +x arch/%{_arch}/xen-mkbuildtree-pre
+    arch/%{_arch}/xen-mkbuildtree-pre
 # 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
@@ -1157,7 +1173,13 @@
     mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
     install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
     install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
-    cp $KernelImage $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
+    if [[ "$Flavour" == *xenU* ]]; then
+      # xenU kernels should always install to /boot
+      # because they're never needed for system boot
+      cp $KernelImage $RPM_BUILD_ROOT/boot/vmlinuz-$KernelVer
+    else
+      cp $KernelImage $RPM_BUILD_ROOT/%{image_install_path}/vmlinuz-$KernelVer
+    fi
     if [ -f arch/$Arch/boot/zImage.stub ]; then
       cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
@@ -1293,15 +1315,15 @@
 %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 %{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
-  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 ..
@@ -1310,31 +1332,31 @@
 cd linux-%{kversion}.%{_target_cpu}
 %if %{buildup}
-BuildKernel %make_target %kernel_image
+BuildKernel %{make_target} %{kernel_image}
 %if %{buildpae}
-BuildKernel %make_target %kernel_image PAE
+BuildKernel %{make_target} %{kernel_image} PAE
 %if %{buildsmp}
-BuildKernel %make_target %kernel_image smp
+BuildKernel %{make_target} %{kernel_image} smp
 %if %{includexen}
 %if %{buildxenPAE}
-BuildKernel vmlinuz vmlinuz xen0-PAE
-BuildKernel vmlinuz vmlinuz xenU-PAE
+BuildKernel %{xen_target} %{xen_image} xen0-PAE
+BuildKernel %{xen_target} %{xen_image} xenU-PAE
 %if %{buildxen}
-BuildKernel vmlinuz vmlinuz xen0
-BuildKernel vmlinuz vmlinuz xenU
+BuildKernel %{xen_target} %{xen_image} xen0
+BuildKernel %{xen_target} %{xen_image} xenU
 %if %{buildkdump}
-BuildKernel %make_target %kernel_image kdump
+BuildKernel %{make_target} %{kernel_image} kdump
@@ -1443,7 +1465,7 @@
 %post xen0
 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade %{rpmversion}-%{release}-xen0
-/sbin/new-kernel-pkg --package kernel-xen0 --mkinitrd --depmod --install --multiboot=/boot/xen.gz-%{KVERREL} %{KVERREL}xen0
+/sbin/new-kernel-pkg --package kernel-xen0 --mkinitrd --depmod --install --multiboot=/%{image_install_path}/xen.gz-%{KVERREL} %{KVERREL}xen0
 [ ! -x /sbin/ldconfig ] || /sbin/ldconfig -X
 %post xen0-devel
@@ -1469,7 +1491,7 @@
 %post xen0-PAE
 [ ! -x /usr/sbin/module_upgrade ] || /usr/sbin/module_upgrade %{rpmversion}-%{release}-xen0-PAE
-/sbin/new-kernel-pkg --package kernel-xen0-PAE --mkinitrd --depmod --install --multiboot=/boot/xen.gz-%{KVERREL}-PAE %{KVERREL}xen0-PAE
+/sbin/new-kernel-pkg --package kernel-xen0-PAE --mkinitrd --depmod --install --multiboot=/%{image_install_path}/xen.gz-%{KVERREL}-PAE %{KVERREL}xen0-PAE
 [ ! -x /sbin/ldconfig ] || /sbin/ldconfig -X
 %post xen0-PAE-devel
@@ -1611,7 +1633,7 @@
 %dir /lib/modules/%{KVERREL}xen0
@@ -1628,7 +1650,7 @@
 %files xenU
 %dir /lib/modules/%{KVERREL}xenU
@@ -1651,7 +1673,7 @@
 %dir /lib/modules/%{KVERREL}xen0-PAE
@@ -1668,7 +1690,7 @@
 %files xenU-PAE
 %dir /lib/modules/%{KVERREL}xenU-PAE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/fedora-xen/attachments/20060602/e7ec9a75/attachment.sig>

More information about the Fedora-xen mailing list