rpms/kernel/devel kernel-2.6.spec, 1.2171, 1.2172 linux-2.6-xen.patch, 1.14, 1.15

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Apr 27 07:42:54 UTC 2006


Author: quintela

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv6266

Modified Files:
	kernel-2.6.spec linux-2.6-xen.patch 
Log Message:
rebase linux-2.6-xen cset 22432


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2171
retrieving revision 1.2172
diff -u -r1.2171 -r1.2172
--- kernel-2.6.spec	27 Apr 2006 03:17:56 -0000	1.2171
+++ kernel-2.6.spec	27 Apr 2006 07:42:31 -0000	1.2172
@@ -9,7 +9,7 @@
 # Whether to apply the Xen patches, leave this enabled.
 %define includexen 1
 # Whether to build the Xen kernels, disable if you want.
-%define buildxen 0
+%define buildxen 1
 %define buildxenPAE 0
 %define builddoc 0
 %define buildkdump 1
@@ -1706,6 +1706,11 @@
 %endif
 
 %changelog
+* Thr Apr 27 2006 Juan Quintela <quintela at redhat.com>
+- Enable xen again
+- rebase linux-2.6-xen linux-2.6-xen
+- fix & enable xenoprof
+
 * Wed Apr 26 2006 Dave Jones <davej at redhat.com>
 - 2.6.17rc3
 - 2.6.17rc2-git8

linux-2.6-xen.patch:
 arch/i386/Kconfig                                   |   94 
 arch/i386/Kconfig.cpu                               |    2 
 arch/i386/Kconfig.debug                             |    1 
 arch/i386/Makefile                                  |   24 
 arch/i386/boot-xen/Makefile                         |   21 
 arch/i386/kernel/Makefile                           |   22 
 arch/i386/kernel/acpi/Makefile                      |    4 
 arch/i386/kernel/acpi/boot-xen.c                    | 1170 ++++++++
 arch/i386/kernel/apic-xen.c                         |  160 +
 arch/i386/kernel/asm-offsets.c                      |   10 
 arch/i386/kernel/cpu/Makefile                       |    5 
 arch/i386/kernel/cpu/common-xen.c                   |  732 +++++
 arch/i386/kernel/cpu/mtrr/Makefile                  |    7 
 arch/i386/kernel/cpu/mtrr/main-xen.c                |  197 +
 arch/i386/kernel/early_printk-xen.c                 |    2 
 arch/i386/kernel/entry-xen.S                        |  903 ++++++
 arch/i386/kernel/entry.S                            |   10 
 arch/i386/kernel/fixup.c                            |   96 
 arch/i386/kernel/head-xen.S                         |  171 +
 arch/i386/kernel/init_task-xen.c                    |   51 
 arch/i386/kernel/io_apic-xen.c                      | 2748 ++++++++++++++++++++
 arch/i386/kernel/ioport-xen.c                       |  122 
 arch/i386/kernel/irq-xen.c                          |  306 ++
 arch/i386/kernel/irq.c                              |    4 
 arch/i386/kernel/ldt-xen.c                          |  269 +
 arch/i386/kernel/microcode-xen.c                    |  148 +
 arch/i386/kernel/mpparse-xen.c                      | 1176 ++++++++
 arch/i386/kernel/pci-dma-xen.c                      |  354 ++
 arch/i386/kernel/process-xen.c                      |  824 +++++
 arch/i386/kernel/quirks-xen.c                       |   48 
 arch/i386/kernel/setup-xen.c                        | 1854 +++++++++++++
 arch/i386/kernel/smp-xen.c                          |  613 ++++
 arch/i386/kernel/swiotlb.c                          |  674 ++++
 arch/i386/kernel/sysenter.c                         |  102 
 arch/i386/kernel/time-xen.c                         | 1097 +++++++
 arch/i386/kernel/traps-xen.c                        | 1137 ++++++++
 arch/i386/kernel/traps.c                            |    9 
 arch/i386/kernel/vm86.c                             |    8 
 arch/i386/kernel/vsyscall-note-xen.S                |   32 
 arch/i386/mach-xen/Makefile                         |    5 
 arch/i386/mach-xen/setup.c                          |   49 
 arch/i386/mm/Makefile                               |    8 
 arch/i386/mm/fault-xen.c                            |  683 ++++
 arch/i386/mm/highmem-xen.c                          |  123 
 arch/i386/mm/hypervisor.c                           |  424 +++
 arch/i386/mm/init-xen.c                             |  855 ++++++
 arch/i386/mm/ioremap-xen.c                          |  486 +++
 arch/i386/mm/pageattr.c                             |    2 
 arch/i386/mm/pgtable-xen.c                          |  652 ++++
 arch/i386/mm/pgtable.c                              |   12 
 arch/i386/oprofile/Makefile                         |    4 
 arch/i386/oprofile/xenoprof.c                       |  441 +++
 arch/i386/pci/Makefile                              |    9 
 arch/i386/pci/irq-xen.c                             | 1205 ++++++++
 arch/i386/pci/pcifront.c                            |   55 
 arch/i386/power/Makefile                            |    4 
 arch/ia64/Kconfig                                   |   51 
 arch/ia64/Makefile                                  |   16 
 arch/ia64/hp/sim/Makefile                           |    2 
 arch/ia64/kernel/entry.S                            |   32 
 arch/ia64/kernel/head.S                             |    6 
 arch/ia64/kernel/pal.S                              |    5 
 arch/ia64/kernel/sal.c                              |    3 
 arch/ia64/kernel/setup.c                            |   32 
 arch/ia64/xen/Makefile                              |    5 
 arch/ia64/xen/drivers/Makefile                      |   20 
 arch/ia64/xen/drivers/README                        |    2 
 arch/ia64/xen/drivers/coreMakefile                  |   26 
 arch/ia64/xen/drivers/evtchn_ia64.c                 |  273 +
 arch/ia64/xen/drivers/patches/blkback.c.patch       |   33 
 arch/ia64/xen/drivers/patches/console.c.patch       |   11 
 arch/ia64/xen/drivers/patches/devmem.c.patch        |    2 
 arch/ia64/xen/drivers/patches/gnttab.c.patch        |   33 
 arch/ia64/xen/drivers/patches/privcmd.c.patch       |   30 
 arch/ia64/xen/drivers/xenia64_init.c                |   55 
 arch/ia64/xen/hypercall.S                           |  365 ++
 arch/ia64/xen/xen_ksyms.c                           |   12 
 arch/ia64/xen/xenconsole.c                          |   19 
 arch/ia64/xen/xenentry.S                            |  850 ++++++
 arch/ia64/xen/xenhpski.c                            |   19 
 arch/ia64/xen/xenivt.S                              | 2032 ++++++++++++++
 arch/ia64/xen/xenminstate.h                         |  367 ++
 arch/ia64/xen/xenpal.S                              |   73 
 arch/ia64/xen/xensetup.S                            |   35 
 arch/um/kernel/physmem.c                            |    4 
 arch/x86_64/Kconfig                                 |   60 
 arch/x86_64/Makefile                                |   20 
 arch/x86_64/ia32/Makefile                           |   20 
 arch/x86_64/ia32/ia32entry-xen.S                    |  725 +++++
 arch/x86_64/ia32/syscall32-xen.c                    |  128 
 arch/x86_64/ia32/syscall32_syscall-xen.S            |   28 
 arch/x86_64/ia32/vsyscall-int80.S                   |   58 
 arch/x86_64/ia32/vsyscall-sigreturn.S               |    2 
 arch/x86_64/kernel/Makefile                         |   19 
 arch/x86_64/kernel/acpi/Makefile                    |    1 
 arch/x86_64/kernel/apic-xen.c                       |  198 +
 arch/x86_64/kernel/asm-offsets.c                    |    2 
 arch/x86_64/kernel/e820-xen.c                       |  777 +++++
 arch/x86_64/kernel/early_printk-xen.c               |  304 ++
 arch/x86_64/kernel/entry-xen.S                      | 1141 ++++++++
 arch/x86_64/kernel/entry.S                          |    2 
 arch/x86_64/kernel/genapic-xen.c                    |  144 +
 arch/x86_64/kernel/genapic_xen.c                    |  162 +
 arch/x86_64/kernel/head-xen.S                       |  164 +
 arch/x86_64/kernel/head64-xen.c                     |  140 +
 arch/x86_64/kernel/init_task.c                      |    3 
 arch/x86_64/kernel/io_apic-xen.c                    | 2229 ++++++++++++++++
 arch/x86_64/kernel/ioport-xen.c                     |   58 
 arch/x86_64/kernel/irq-xen.c                        |  163 +
 arch/x86_64/kernel/irq.c                            |    4 
 arch/x86_64/kernel/ldt-xen.c                        |  282 ++
 arch/x86_64/kernel/mpparse-xen.c                    | 1002 +++++++
 arch/x86_64/kernel/pci-swiotlb-xen.c                |   54 
 arch/x86_64/kernel/process-xen.c                    |  802 +++++
 arch/x86_64/kernel/setup-xen.c                      | 1679 ++++++++++++
 arch/x86_64/kernel/setup64-xen.c                    |  360 ++
 arch/x86_64/kernel/smp-xen.c                        |  596 ++++
 arch/x86_64/kernel/smp.c                            |    4 
 arch/x86_64/kernel/traps-xen.c                      | 1025 +++++++
 arch/x86_64/kernel/vsyscall-xen.c                   |  239 +
 arch/x86_64/kernel/x8664_ksyms-xen.c                |  155 +
 arch/x86_64/kernel/xen_entry.S                      |   40 
 arch/x86_64/mm/Makefile                             |   10 
 arch/x86_64/mm/fault-xen.c                          |  644 ++++
 arch/x86_64/mm/init-xen.c                           | 1176 ++++++++
 arch/x86_64/mm/pageattr-xen.c                       |  390 ++
 arch/x86_64/oprofile/Makefile                       |    5 
 arch/x86_64/pci/Makefile                            |   12 
 drivers/Makefile                                    |    1 
 drivers/acpi/Kconfig                                |    3 
 drivers/char/mem.c                                  |    6 
 drivers/char/tpm/Kconfig                            |   14 
 drivers/char/tpm/Makefile                           |    1 
 drivers/char/tpm/tpm.c                              |   44 
 drivers/char/tpm/tpm.h                              |    7 
 drivers/char/tpm/tpm_xen.c                          |  536 +++
 drivers/char/tty_io.c                               |    7 
 drivers/firmware/Kconfig                            |    2 
 drivers/oprofile/buffer_sync.c                      |   39 
 drivers/oprofile/cpu_buffer.c                       |   26 
 drivers/oprofile/cpu_buffer.h                       |    8 
 drivers/oprofile/event_buffer.h                     |    3 
 drivers/oprofile/oprof.c                            |   19 
 drivers/oprofile/oprof.h                            |    2 
 drivers/oprofile/oprofile_files.c                   |   82 
 drivers/pci/Kconfig                                 |    1 
 drivers/serial/Kconfig                              |    1 
 drivers/video/Kconfig                               |    2 
 drivers/xen/Kconfig                                 |  223 +
 drivers/xen/Makefile                                |   22 
 drivers/xen/balloon/Makefile                        |    2 
 drivers/xen/balloon/balloon.c                       |  592 ++++
 drivers/xen/blkback/Makefile                        |    3 
 drivers/xen/blkback/blkback.c                       |  597 ++++
 drivers/xen/blkback/common.h                        |  145 +
 drivers/xen/blkback/interface.c                     |  181 +
 drivers/xen/blkback/vbd.c                           |  126 
 drivers/xen/blkback/xenbus.c                        |  421 +++
 drivers/xen/blkfront/Kconfig                        |    6 
 drivers/xen/blkfront/Makefile                       |    5 
 drivers/xen/blkfront/blkfront.c                     |  819 +++++
 drivers/xen/blkfront/block.h                        |  165 +
 drivers/xen/blkfront/vbd.c                          |  327 ++
 drivers/xen/blktap/Makefile                         |    3 
 drivers/xen/blktap/blktap.c                         |  910 ++++++
 drivers/xen/blktap/common.h                         |  110 
 drivers/xen/blktap/interface.c                      |  143 +
 drivers/xen/blktap/xenbus.c                         |  233 +
 drivers/xen/char/Makefile                           |    2 
 drivers/xen/char/mem.c                              |  192 +
 drivers/xen/console/Makefile                        |    2 
 drivers/xen/console/console.c                       |  648 ++++
 drivers/xen/console/xencons_ring.c                  |  151 +
 drivers/xen/core/Makefile                           |   11 
 drivers/xen/core/evtchn.c                           |  867 ++++++
 drivers/xen/core/features.c                         |   29 
 drivers/xen/core/gnttab.c                           |  471 +++
 drivers/xen/core/hypervisor_sysfs.c                 |   57 
 drivers/xen/core/reboot.c                           |  381 ++
 drivers/xen/core/skbuff.c                           |  144 +
 drivers/xen/core/smpboot.c                          |  576 ++++
 drivers/xen/core/xen_proc.c                         |   29 
 drivers/xen/core/xen_sysfs.c                        |  311 ++
 drivers/xen/evtchn/Makefile                         |    2 
 drivers/xen/evtchn/evtchn.c                         |  464 +++
 drivers/xen/net_driver_util.c                       |   68 
 drivers/xen/netback/Makefile                        |    5 
 drivers/xen/netback/common.h                        |  133 
 drivers/xen/netback/interface.c                     |  328 ++
 drivers/xen/netback/loopback.c                      |  254 +
 drivers/xen/netback/netback.c                       |  864 ++++++
 drivers/xen/netback/xenbus.c                        |  366 ++
 drivers/xen/netfront/Kconfig                        |    6 
 drivers/xen/netfront/Makefile                       |    4 
 drivers/xen/netfront/netfront.c                     | 1522 +++++++++++
 drivers/xen/pciback/Makefile                        |   10 
 drivers/xen/pciback/conf_space.c                    |  345 ++
 drivers/xen/pciback/conf_space.h                    |   97 
 drivers/xen/pciback/conf_space_header.c             |  267 +
 drivers/xen/pciback/passthrough.c                   |  157 +
 drivers/xen/pciback/pci_stub.c                      |  695 +++++
 drivers/xen/pciback/pciback.h                       |   89 
 drivers/xen/pciback/pciback_ops.c                   |   97 
 drivers/xen/pciback/vpci.c                          |  204 +
 drivers/xen/pciback/xenbus.c                        |  453 +++
 drivers/xen/pcifront/Makefile                       |    7 
 drivers/xen/pcifront/pci.c                          |   46 
 drivers/xen/pcifront/pci_op.c                       |  272 +
 drivers/xen/pcifront/pcifront.h                     |   40 
 drivers/xen/pcifront/xenbus.c                       |  294 ++
 drivers/xen/privcmd/Makefile                        |    2 
 drivers/xen/privcmd/privcmd.c                       |  303 ++
 drivers/xen/tpmback/Makefile                        |    4 
 drivers/xen/tpmback/common.h                        |   92 
 drivers/xen/tpmback/interface.c                     |  193 +
 drivers/xen/tpmback/tpmback.c                       | 1061 +++++++
 drivers/xen/tpmback/xenbus.c                        |  316 ++
 drivers/xen/tpmfront/Makefile                       |    2 
 drivers/xen/tpmfront/tpmfront.c                     |  767 +++++
 drivers/xen/tpmfront/tpmfront.h                     |   40 
 drivers/xen/util.c                                  |   80 
 drivers/xen/xenbus/Makefile                         |   12 
 drivers/xen/xenbus/xenbus_backend_client.c          |  144 +
 drivers/xen/xenbus/xenbus_client.c                  |  284 ++
 drivers/xen/xenbus/xenbus_comms.c                   |  218 +
 drivers/xen/xenbus/xenbus_comms.h                   |   53 
 drivers/xen/xenbus/xenbus_dev.c                     |  255 +
 drivers/xen/xenbus/xenbus_probe.c                   | 1093 +++++++
 drivers/xen/xenbus/xenbus_xs.c                      |  856 ++++++
 fs/Kconfig                                          |    1 
 include/asm-i386/a.out.h                            |    2 
 include/asm-i386/apic.h                             |    2 
 include/asm-i386/elf.h                              |    7 
 include/asm-i386/fixmap.h                           |   13 
 include/asm-i386/mach-default/mach_traps.h          |   12 
 include/asm-i386/mach-xen/asm/agp.h                 |   37 
 include/asm-i386/mach-xen/asm/desc.h                |  164 +
 include/asm-i386/mach-xen/asm/dma-mapping.h         |  156 +
 include/asm-i386/mach-xen/asm/fixmap.h              |  156 +
 include/asm-i386/mach-xen/asm/floppy.h              |  147 +
 include/asm-i386/mach-xen/asm/highmem.h             |   81 
 include/asm-i386/mach-xen/asm/hw_irq.h              |   73 
 include/asm-i386/mach-xen/asm/hypercall.h           |  357 ++
 include/asm-i386/mach-xen/asm/hypervisor.h          |  224 +
 include/asm-i386/mach-xen/asm/io.h                  |  390 ++
 include/asm-i386/mach-xen/asm/kmap_types.h          |   32 
 include/asm-i386/mach-xen/asm/mmu.h                 |   21 
 include/asm-i386/mach-xen/asm/mmu_context.h         |  105 
 include/asm-i386/mach-xen/asm/page.h                |  326 ++
 include/asm-i386/mach-xen/asm/param.h               |   24 
 include/asm-i386/mach-xen/asm/pci.h                 |  154 +
 include/asm-i386/mach-xen/asm/pgalloc.h             |   64 
 include/asm-i386/mach-xen/asm/pgtable-2level-defs.h |   21 
 include/asm-i386/mach-xen/asm/pgtable-2level.h      |   85 
 include/asm-i386/mach-xen/asm/pgtable-3level-defs.h |   25 
 include/asm-i386/mach-xen/asm/pgtable-3level.h      |  183 +
 include/asm-i386/mach-xen/asm/pgtable.h             |  520 +++
 include/asm-i386/mach-xen/asm/processor.h           |  754 +++++
 include/asm-i386/mach-xen/asm/ptrace.h              |   90 
 include/asm-i386/mach-xen/asm/scatterlist.h         |   22 
 include/asm-i386/mach-xen/asm/segment.h             |  117 
 include/asm-i386/mach-xen/asm/setup.h               |   64 
 include/asm-i386/mach-xen/asm/smp.h                 |  104 
 include/asm-i386/mach-xen/asm/spinlock.h            |  200 +
 include/asm-i386/mach-xen/asm/swiotlb.h             |   43 
 include/asm-i386/mach-xen/asm/synch_bitops.h        |  141 +
 include/asm-i386/mach-xen/asm/system.h              |  576 ++++
 include/asm-i386/mach-xen/asm/tlbflush.h            |  102 
 include/asm-i386/mach-xen/asm/vga.h                 |   20 
 include/asm-i386/mach-xen/irq_vectors.h             |  125 
 include/asm-i386/mach-xen/mach_traps.h              |   33 
 include/asm-i386/mach-xen/setup_arch_post.h         |   69 
 include/asm-i386/mach-xen/setup_arch_pre.h          |    5 
 include/asm-i386/page.h                             |    4 
 include/asm-i386/pgtable-2level-defs.h              |    2 
 include/asm-i386/pgtable-3level-defs.h              |    2 
 include/asm-ia64/fixmap.h                           |    2 
 include/asm-ia64/gcc_intrin.h                       |   60 
 include/asm-ia64/hypercall.h                        |  274 +
 include/asm-ia64/hypervisor.h                       |  138 +
 include/asm-ia64/intel_intrin.h                     |   68 
 include/asm-ia64/meminit.h                          |    5 
 include/asm-ia64/pal.h                              |    1 
 include/asm-ia64/privop.h                           |   59 
 include/asm-ia64/processor.h                        |    1 
 include/asm-ia64/synch_bitops.h                     |   61 
 include/asm-ia64/system.h                           |    4 
 include/asm-ia64/xen/privop.h                       |  277 ++
 include/asm-um/page.h                               |    2 
 include/asm-x86_64/apic.h                           |    2 
 include/asm-x86_64/hw_irq.h                         |    2 
 include/asm-x86_64/mach-xen/asm/arch_hooks.h        |   27 
 include/asm-x86_64/mach-xen/asm/bootsetup.h         |   42 
 include/asm-x86_64/mach-xen/asm/desc.h              |  263 +
 include/asm-x86_64/mach-xen/asm/dma-mapping.h       |  191 +
 include/asm-x86_64/mach-xen/asm/dmi.h               |   29 
 include/asm-x86_64/mach-xen/asm/fixmap.h            |  114 
 include/asm-x86_64/mach-xen/asm/floppy.h            |  206 +
 include/asm-x86_64/mach-xen/asm/hw_irq.h            |  141 +
 include/asm-x86_64/mach-xen/asm/hypercall.h         |  357 ++
 include/asm-x86_64/mach-xen/asm/hypervisor.h        |    2 
 include/asm-x86_64/mach-xen/asm/io.h                |  328 ++
 include/asm-x86_64/mach-xen/asm/irq.h               |   39 
 include/asm-x86_64/mach-xen/asm/mmu.h               |   33 
 include/asm-x86_64/mach-xen/asm/mmu_context.h       |  134 
 include/asm-x86_64/mach-xen/asm/msr.h               |  399 ++
 include/asm-x86_64/mach-xen/asm/nmi.h               |   75 
 include/asm-x86_64/mach-xen/asm/page.h              |  317 ++
 include/asm-x86_64/mach-xen/asm/param.h             |   23 
 include/asm-x86_64/mach-xen/asm/pci.h               |  174 +
 include/asm-x86_64/mach-xen/asm/pgalloc.h           |  226 +
 include/asm-x86_64/mach-xen/asm/pgtable.h           |  564 ++++
 include/asm-x86_64/mach-xen/asm/processor.h         |  494 +++
 include/asm-x86_64/mach-xen/asm/ptrace.h            |  125 
 include/asm-x86_64/mach-xen/asm/smp.h               |  153 +
 include/asm-x86_64/mach-xen/asm/synch_bitops.h      |    2 
 include/asm-x86_64/mach-xen/asm/system.h            |  428 +++
 include/asm-x86_64/mach-xen/asm/timer.h             |   67 
 include/asm-x86_64/mach-xen/asm/tlbflush.h          |  104 
 include/asm-x86_64/mach-xen/asm/vga.h               |   20 
 include/asm-x86_64/mach-xen/asm/xor.h               |  328 ++
 include/asm-x86_64/mach-xen/irq_vectors.h           |  123 
 include/asm-x86_64/mach-xen/mach_time.h             |  111 
 include/asm-x86_64/mach-xen/mach_timer.h            |   48 
 include/asm-x86_64/mach-xen/setup_arch_post.h       |   58 
 include/asm-x86_64/mach-xen/setup_arch_pre.h        |    5 
 include/linux/gfp.h                                 |    6 
 include/linux/highmem.h                             |    6 
 include/linux/mm.h                                  |   13 
 include/linux/oprofile.h                            |    8 
 include/linux/pfn.h                                 |    2 
 include/linux/skbuff.h                              |   13 
 include/xen/balloon.h                               |   73 
 include/xen/driver_util.h                           |   26 
 include/xen/evtchn.h                                |  126 
 include/xen/features.h                              |   20 
 include/xen/foreign_page.h                          |   40 
 include/xen/gnttab.h                                |  160 +
 include/xen/hypervisor_sysfs.h                      |   32 
 include/xen/interface/acm.h                         |  187 +
 include/xen/interface/acm_ops.h                     |   98 
 include/xen/interface/arch-ia64.h                   |  337 ++
 include/xen/interface/arch-x86_32.h                 |  200 +
 include/xen/interface/arch-x86_64.h                 |  273 +
 include/xen/interface/callback.h                    |   63 
 include/xen/interface/dom0_ops.h                    |  533 +++
 include/xen/interface/event_channel.h               |  211 +
 include/xen/interface/features.h                    |   53 
 include/xen/interface/grant_table.h                 |  311 ++
 include/xen/interface/hvm/hvm_info_table.h          |   24 
 include/xen/interface/hvm/ioreq.h                   |   94 
 include/xen/interface/hvm/vmx_assist.h              |   97 
 include/xen/interface/io/blkif.h                    |   85 
 include/xen/interface/io/console.h                  |   33 
 include/xen/interface/io/netif.h                    |   84 
 include/xen/interface/io/pciif.h                    |   55 
 include/xen/interface/io/ring.h                     |  265 +
 include/xen/interface/io/tpmif.h                    |   56 
 include/xen/interface/io/xenbus.h                   |   42 
 include/xen/interface/io/xs_wire.h                  |   97 
 include/xen/interface/memory.h                      |  155 +
 include/xen/interface/nmi.h                         |   59 
 include/xen/interface/physdev.h                     |   71 
 include/xen/interface/sched.h                       |  100 
 include/xen/interface/sched_ctl.h                   |   64 
 include/xen/interface/trace.h                       |   86 
 include/xen/interface/vcpu.h                        |  119 
 include/xen/interface/version.h                     |   64 
 include/xen/interface/xen-compat.h                  |   31 
 include/xen/interface/xen.h                         |  461 +++
 include/xen/interface/xenoprof.h                    |   91 
 include/xen/net_driver_util.h                       |   58 
 include/xen/pcifront.h                              |   39 
 include/xen/public/evtchn.h                         |  101 
 include/xen/public/privcmd.h                        |   94 
 include/xen/tpmfe.h                                 |   40 
 include/xen/xen_proc.h                              |   23 
 include/xen/xenbus.h                                |  306 ++
 include/xen/xencons.h                               |   14 
 kernel/Kconfig.preempt                              |    1 
 kernel/irq/manage.c                                 |   24 
 lib/Kconfig.debug                                   |   31 
 lib/Makefile                                        |    3 
 mm/Kconfig                                          |    3 
 mm/highmem.c                                        |   11 
 mm/memory.c                                         |  116 
 mm/mmap.c                                           |    4 
 mm/page_alloc.c                                     |    6 
 net/core/dev.c                                      |   63 
 net/core/skbuff.c                                   |   41 
 net/ipv4/netfilter/ip_nat_proto_tcp.c               |    9 
 net/ipv4/netfilter/ip_nat_proto_udp.c               |   12 
 net/ipv4/xfrm4_output.c                             |    6 
 scripts/Makefile.xen                                |   14 
 394 files changed, 80578 insertions(+), 262 deletions(-)

Index: linux-2.6-xen.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-xen.patch,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- linux-2.6-xen.patch	26 Apr 2006 11:13:46 -0000	1.14
+++ linux-2.6-xen.patch	27 Apr 2006 07:42:33 -0000	1.15
@@ -8832,8 +8832,8 @@
 +#endif /* CONFIG_ACPI */
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/arch/i386/kernel/pci-dma-xen.c new/arch/i386/kernel/pci-dma-xen.c
 --- ../upstream/hg/linux-2.6/arch/i386/kernel/pci-dma-xen.c	1970-01-01 01:00:00.000000000 +0100
-+++ new/arch/i386/kernel/pci-dma-xen.c	2006-04-24 23:54:20.000000000 +0200
-@@ -0,0 +1,344 @@
++++ new/arch/i386/kernel/pci-dma-xen.c	2006-04-26 23:37:53.000000000 +0200
+@@ -0,0 +1,354 @@
 +/*
 + * Dynamic DMA mapping support.
 + *
@@ -8929,6 +8929,13 @@
 +}
 +EXPORT_SYMBOL(dma_unmap_sg);
 +
++/*
++ * XXX This file is also used by xenLinux/ia64. 
++ * "defined(__i386__) || defined (__x86_64__)" means "!defined(__ia64__)".
++ * This #if work around should be removed once this file is merbed back into
++ * i386' pci-dma or is moved to drivers/xen/core.
++ */
++#if defined(__i386__) || defined(__x86_64__)
 +dma_addr_t
 +dma_map_page(struct device *dev, struct page *page, unsigned long offset,
 +	     size_t size, enum dma_data_direction direction)
@@ -8958,6 +8965,7 @@
 +		swiotlb_unmap_page(dev, dma_address, size, direction);
 +}
 +EXPORT_SYMBOL(dma_unmap_page);
++#endif /* defined(__i386__) || defined(__x86_64__) */
 +
 +int
 +dma_mapping_error(dma_addr_t dma_addr)
@@ -9040,6 +9048,7 @@
 +}
 +EXPORT_SYMBOL(dma_free_coherent);
 +
++#ifdef ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
 +int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
 +				dma_addr_t device_addr, size_t size, int flags)
 +{
@@ -9116,6 +9125,7 @@
 +	return mem->virt_base + (pos << PAGE_SHIFT);
 +}
 +EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
++#endif /* ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY */
 +
 +dma_addr_t
 +dma_map_single(struct device *dev, void *ptr, size_t size,
@@ -20961,8 +20971,8 @@
  	bool
  	default y
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/arch/ia64/kernel/entry.S new/arch/ia64/kernel/entry.S
---- ../upstream/hg/linux-2.6/arch/ia64/kernel/entry.S	2006-04-17 19:14:56.000000000 +0200
-+++ new/arch/ia64/kernel/entry.S	2006-04-24 23:54:22.000000000 +0200
+--- ../upstream/hg/linux-2.6/arch/ia64/kernel/entry.S	2006-04-26 18:04:19.000000000 +0200
++++ new/arch/ia64/kernel/entry.S	2006-04-26 23:35:20.000000000 +0200
 @@ -181,7 +181,7 @@ END(sys_clone)
   *	called.  The code starting at .map relies on this.  The rest of the code
   *	doesn't care about the interrupt masking status.
@@ -29782,8 +29792,8 @@
 +}
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/arch/x86_64/kernel/head-xen.S new/arch/x86_64/kernel/head-xen.S
 --- ../upstream/hg/linux-2.6/arch/x86_64/kernel/head-xen.S	1970-01-01 01:00:00.000000000 +0100
-+++ new/arch/x86_64/kernel/head-xen.S	2006-04-24 23:54:53.000000000 +0200
-@@ -0,0 +1,163 @@
++++ new/arch/x86_64/kernel/head-xen.S	2006-04-25 13:33:31.000000000 +0200
+@@ -0,0 +1,164 @@
 +/*
 + *  linux/arch/x86_64/kernel/head.S -- start in 32bit and switch to 64bit
 + *
@@ -29809,6 +29819,7 @@
 +#include <asm/cache.h>
 +
 +	.text
++	.section .bootstrap.text
 +	.code64
 +	.globl startup_64
 +startup_64:
@@ -41121,9 +41132,9 @@
  	help
  	  The Power Management Timer is available on all ACPI-capable,
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/char/mem.c new/drivers/char/mem.c
---- ../upstream/hg/linux-2.6/drivers/char/mem.c	2006-04-04 08:17:33.000000000 +0200
-+++ new/drivers/char/mem.c	2006-04-24 23:55:04.000000000 +0200
-@@ -102,6 +102,7 @@ static inline int valid_mmap_phys_addr_r
+--- ../upstream/hg/linux-2.6/drivers/char/mem.c	2006-04-26 18:04:19.000000000 +0200
++++ new/drivers/char/mem.c	2006-04-26 23:35:20.000000000 +0200
+@@ -103,6 +103,7 @@ static inline int valid_mmap_phys_addr_r
  }
  #endif
  
@@ -41131,7 +41142,7 @@
  /*
   * This funcion reads the *physical* memory. The f_pos points directly to the 
   * memory location. 
-@@ -224,6 +225,7 @@ static ssize_t write_mem(struct file * f
+@@ -225,6 +226,7 @@ static ssize_t write_mem(struct file * f
  	*ppos += written;
  	return written;
  }
@@ -41139,7 +41150,7 @@
  
  #ifndef __HAVE_PHYS_MEM_ACCESS_PROT
  static pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
-@@ -765,6 +767,7 @@ static int open_port(struct inode * inod
+@@ -778,6 +780,7 @@ static int open_port(struct inode * inod
  #define open_kmem	open_mem
  #define open_oldmem	open_mem
  
@@ -41147,7 +41158,7 @@
  static struct file_operations mem_fops = {
  	.llseek		= memory_lseek,
  	.read		= read_mem,
-@@ -772,6 +775,9 @@ static struct file_operations mem_fops =
+@@ -785,6 +788,9 @@ static struct file_operations mem_fops =
  	.mmap		= mmap_mem,
  	.open		= open_mem,
  };
@@ -41949,6 +41960,375 @@
  obj-$(CONFIG_IDE)		+= ide/
  obj-$(CONFIG_FC4)		+= fc4/
  obj-$(CONFIG_SCSI)		+= scsi/
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/buffer_sync.c new/drivers/oprofile/buffer_sync.c
+--- ../upstream/hg/linux-2.6/drivers/oprofile/buffer_sync.c	2006-01-09 15:53:59.000000000 +0100
++++ new/drivers/oprofile/buffer_sync.c	2006-04-27 01:41:32.000000000 +0200
+@@ -6,6 +6,10 @@
+  *
+  * @author John Levon <levon at movementarian.org>
+  *
++ * Modified by Aravind Menon for Xen
++ * These modifications are:
++ * Copyright (C) 2005 Hewlett-Packard Co.
++ *
+  * This is the core of the buffer management. Each
+  * CPU buffer is processed and entered into the
+  * global event buffer. Such processing is necessary
+@@ -275,15 +279,24 @@ static void add_cpu_switch(int i)
+ 	last_cookie = INVALID_COOKIE;
+ }
+ 
+-static void add_kernel_ctx_switch(unsigned int in_kernel)
++static void add_cpu_mode_switch(unsigned int cpu_mode)
+ {
+ 	add_event_entry(ESCAPE_CODE);
+-	if (in_kernel)
+-		add_event_entry(KERNEL_ENTER_SWITCH_CODE); 
+-	else
+-		add_event_entry(KERNEL_EXIT_SWITCH_CODE); 
++	switch (cpu_mode) {
++	case CPU_MODE_USER:
++		add_event_entry(USER_ENTER_SWITCH_CODE);
++		break;
++	case CPU_MODE_KERNEL:
++		add_event_entry(KERNEL_ENTER_SWITCH_CODE);
++		break;
++	case CPU_MODE_XEN:
++		add_event_entry(XEN_ENTER_SWITCH_CODE);
++		break;
++	default:
++		break;
++	}
+ }
+- 
++
+ static void
+ add_user_ctx_switch(struct task_struct const * task, unsigned long cookie)
+ {
+@@ -348,9 +361,9 @@ static int add_us_sample(struct mm_struc
+  * for later lookup from userspace.
+  */
+ static int
+-add_sample(struct mm_struct * mm, struct op_sample * s, int in_kernel)
++add_sample(struct mm_struct * mm, struct op_sample * s, int cpu_mode)
+ {
+-	if (in_kernel) {
++	if (cpu_mode >= CPU_MODE_KERNEL) {
+ 		add_sample_entry(s->eip, s->event);
+ 		return 1;
+ 	} else if (mm) {
+@@ -496,7 +509,7 @@ void sync_buffer(int cpu)
+ 	struct mm_struct *mm = NULL;
+ 	struct task_struct * new;
+ 	unsigned long cookie = 0;
+-	int in_kernel = 1;
++	int cpu_mode = 1;
+ 	unsigned int i;
+ 	sync_buffer_state state = sb_buffer_start;
+ 	unsigned long available;
+@@ -513,12 +526,12 @@ void sync_buffer(int cpu)
+ 		struct op_sample * s = &cpu_buf->buffer[cpu_buf->tail_pos];
+  
+ 		if (is_code(s->eip)) {
+-			if (s->event <= CPU_IS_KERNEL) {
++			if (s->event <= CPU_MODE_XEN) {
+ 				/* kernel/userspace switch */
+-				in_kernel = s->event;
++				cpu_mode = s->event;
+ 				if (state == sb_buffer_start)
+ 					state = sb_sample_start;
+-				add_kernel_ctx_switch(s->event);
++				add_cpu_mode_switch(s->event);
+ 			} else if (s->event == CPU_TRACE_BEGIN) {
+ 				state = sb_bt_start;
+ 				add_trace_begin();
+@@ -536,7 +549,7 @@ void sync_buffer(int cpu)
+ 			}
+ 		} else {
+ 			if (state >= sb_bt_start &&
+-			    !add_sample(mm, s, in_kernel)) {
++			    !add_sample(mm, s, cpu_mode)) {
+ 				if (state == sb_bt_start) {
+ 					state = sb_bt_ignore;
+ 					atomic_inc(&oprofile_stats.bt_lost_no_mapping);
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/cpu_buffer.c new/drivers/oprofile/cpu_buffer.c
+--- ../upstream/hg/linux-2.6/drivers/oprofile/cpu_buffer.c	2006-04-04 08:17:55.000000000 +0200
++++ new/drivers/oprofile/cpu_buffer.c	2006-04-27 01:41:32.000000000 +0200
+@@ -6,6 +6,10 @@
+  *
+  * @author John Levon <levon at movementarian.org>
+  *
++ * Modified by Aravind Menon for Xen
++ * These modifications are:
++ * Copyright (C) 2005 Hewlett-Packard Co.
++ *
+  * Each CPU has a local buffer that stores PC value/event
+  * pairs. We also log context switches when we notice them.
+  * Eventually each CPU's buffer is processed into the global
+@@ -57,7 +61,7 @@ int alloc_cpu_buffers(void)
+ 			goto fail;
+  
+ 		b->last_task = NULL;
+-		b->last_is_kernel = -1;
++		b->last_cpu_mode = -1;
+ 		b->tracing = 0;
+ 		b->buffer_size = buffer_size;
+ 		b->tail_pos = 0;
+@@ -113,7 +117,7 @@ void cpu_buffer_reset(struct oprofile_cp
+ 	 * collected will populate the buffer with proper
+ 	 * values to initialize the buffer
+ 	 */
+-	cpu_buf->last_is_kernel = -1;
++	cpu_buf->last_cpu_mode = -1;
+ 	cpu_buf->last_task = NULL;
+ }
+ 
+@@ -163,13 +167,13 @@ add_code(struct oprofile_cpu_buffer * bu
+  * because of the head/tail separation of the writer and reader
+  * of the CPU buffer.
+  *
+- * is_kernel is needed because on some architectures you cannot
++ * cpu_mode is needed because on some architectures you cannot
+  * tell if you are in kernel or user space simply by looking at
+- * pc. We tag this in the buffer by generating kernel enter/exit
+- * events whenever is_kernel changes
++ * pc. We tag this in the buffer by generating kernel/user (and xen)
++ *  enter events whenever cpu_mode changes
+  */
+ static int log_sample(struct oprofile_cpu_buffer * cpu_buf, unsigned long pc,
+-		      int is_kernel, unsigned long event)
++		      int cpu_mode, unsigned long event)
+ {
+ 	struct task_struct * task;
+ 
+@@ -180,16 +184,16 @@ static int log_sample(struct oprofile_cp
+ 		return 0;
+ 	}
+ 
+-	is_kernel = !!is_kernel;
++	WARN_ON(cpu_mode > CPU_MODE_XEN);
+ 
+ 	task = current;
+ 
+ 	/* notice a switch from user->kernel or vice versa */
+-	if (cpu_buf->last_is_kernel != is_kernel) {
+-		cpu_buf->last_is_kernel = is_kernel;
+-		add_code(cpu_buf, is_kernel);
++	if (cpu_buf->last_cpu_mode != cpu_mode) {
++		cpu_buf->last_cpu_mode = cpu_mode;
++		add_code(cpu_buf, cpu_mode);
+ 	}
+-
++	
+ 	/* notice a task switch */
+ 	if (cpu_buf->last_task != task) {
+ 		cpu_buf->last_task = task;
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/cpu_buffer.h new/drivers/oprofile/cpu_buffer.h
+--- ../upstream/hg/linux-2.6/drivers/oprofile/cpu_buffer.h	2005-11-07 20:02:49.000000000 +0100
++++ new/drivers/oprofile/cpu_buffer.h	2006-04-27 01:41:32.000000000 +0200
+@@ -36,7 +36,7 @@ struct oprofile_cpu_buffer {
+ 	volatile unsigned long tail_pos;
+ 	unsigned long buffer_size;
+ 	struct task_struct * last_task;
+-	int last_is_kernel;
++	int last_cpu_mode;
+ 	int tracing;
+ 	struct op_sample * buffer;
+ 	unsigned long sample_received;
+@@ -51,7 +51,9 @@ extern struct oprofile_cpu_buffer cpu_bu
+ void cpu_buffer_reset(struct oprofile_cpu_buffer * cpu_buf);
+ 
+ /* transient events for the CPU buffer -> event buffer */
+-#define CPU_IS_KERNEL 1
+-#define CPU_TRACE_BEGIN 2
++#define CPU_MODE_USER    0
++#define CPU_MODE_KERNEL  1
++#define CPU_MODE_XEN     2
++#define CPU_TRACE_BEGIN  3
+ 
+ #endif /* OPROFILE_CPU_BUFFER_H */
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/event_buffer.h new/drivers/oprofile/event_buffer.h
+--- ../upstream/hg/linux-2.6/drivers/oprofile/event_buffer.h	2005-11-07 20:02:49.000000000 +0100
++++ new/drivers/oprofile/event_buffer.h	2006-04-27 01:41:32.000000000 +0200
+@@ -29,11 +29,12 @@ void wake_up_buffer_waiter(void);
+ #define CPU_SWITCH_CODE 		2
+ #define COOKIE_SWITCH_CODE 		3
+ #define KERNEL_ENTER_SWITCH_CODE	4
+-#define KERNEL_EXIT_SWITCH_CODE		5
++#define USER_ENTER_SWITCH_CODE		5
+ #define MODULE_LOADED_CODE		6
+ #define CTX_TGID_CODE			7
+ #define TRACE_BEGIN_CODE		8
+ #define TRACE_END_CODE			9
++#define XEN_ENTER_SWITCH_CODE		10
+  
+ #define INVALID_COOKIE ~0UL
+ #define NO_COOKIE 0UL
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/oprof.c new/drivers/oprofile/oprof.c
+--- ../upstream/hg/linux-2.6/drivers/oprofile/oprof.c	2005-11-07 20:02:49.000000000 +0100
++++ new/drivers/oprofile/oprof.c	2006-04-27 02:09:53.000000000 +0200
+@@ -5,6 +5,10 @@
+  * @remark Read the file COPYING
+  *
+  * @author John Levon <levon at movementarian.org>
++ *
++ * Modified by Aravind Menon for Xen
++ * These modifications are:
++ * Copyright (C) 2005 Hewlett-Packard Co.
+  */
+ 
+ #include <linux/kernel.h>
+@@ -19,7 +23,7 @@
+ #include "cpu_buffer.h"
+ #include "buffer_sync.h"
+ #include "oprofile_stats.h"
+- 
++
+ struct oprofile_operations oprofile_ops;
+ 
+ unsigned long oprofile_started;
+@@ -33,6 +37,19 @@ static DECLARE_MUTEX(start_sem);
+  */
+ static int timer = 0;
+ 
++#ifdef CONFIG_XEN
++extern unsigned int adomains;
++extern int active_domains[MAX_OPROF_DOMAINS];
++
++int oprofile_set_active(void)
++{
++	if (oprofile_ops.set_active)
++		return oprofile_ops.set_active(active_domains, adomains);
++
++	return -EINVAL;
++}
++#endif
++
+ int oprofile_setup(void)
+ {
+ 	int err;
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/oprof.h new/drivers/oprofile/oprof.h
+--- ../upstream/hg/linux-2.6/drivers/oprofile/oprof.h	2005-11-07 20:02:49.000000000 +0100
++++ new/drivers/oprofile/oprof.h	2006-04-27 01:41:32.000000000 +0200
+@@ -35,5 +35,7 @@ void oprofile_create_files(struct super_
+ void oprofile_timer_init(struct oprofile_operations * ops);
+ 
+ int oprofile_set_backtrace(unsigned long depth);
++
++int oprofile_set_active(void);
+  
+ #endif /* OPROF_H */
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/oprofile/oprofile_files.c new/drivers/oprofile/oprofile_files.c
+--- ../upstream/hg/linux-2.6/drivers/oprofile/oprofile_files.c	2005-11-07 20:02:49.000000000 +0100
++++ new/drivers/oprofile/oprofile_files.c	2006-04-27 02:09:53.000000000 +0200
+@@ -5,15 +5,21 @@
+  * @remark Read the file COPYING
+  *
+  * @author John Levon <levon at movementarian.org>
++ *
++ * Modified by Aravind Menon for Xen
++ * These modifications are:
++ * Copyright (C) 2005 Hewlett-Packard Co.	
+  */
+ 
+ #include <linux/fs.h>
+ #include <linux/oprofile.h>
++#include <asm/uaccess.h>
++#include <linux/ctype.h>
+ 
+ #include "event_buffer.h"
+ #include "oprofile_stats.h"
+ #include "oprof.h"
+- 
++
+ unsigned long fs_buffer_size = 131072;
+ unsigned long fs_cpu_buffer_size = 8192;
+ unsigned long fs_buffer_watershed = 32768; /* FIXME: tune */
+@@ -117,11 +123,83 @@ static ssize_t dump_write(struct file * 
+ static struct file_operations dump_fops = {
+ 	.write		= dump_write,
+ };
+- 
++
++#ifdef CONFIG_XEN
++#define TMPBUFSIZE 512
++
++unsigned int adomains = 0;
++long active_domains[MAX_OPROF_DOMAINS];
++
++static ssize_t adomain_write(struct file * file, char const __user * buf, 
++			     size_t count, loff_t * offset)
++{
++	char tmpbuf[TMPBUFSIZE];
++	char * startp = tmpbuf;
++	char * endp = tmpbuf;
++	int i;
++	unsigned long val;
++	
++	if (*offset)
++		return -EINVAL;	
++	if (!count)
++		return 0;
++	if (count > TMPBUFSIZE - 1)
++		return -EINVAL;
++
++	memset(tmpbuf, 0x0, TMPBUFSIZE);
++
++	if (copy_from_user(tmpbuf, buf, count))
++		return -EFAULT;
++	
++	for (i = 0; i < MAX_OPROF_DOMAINS; i++)
++		active_domains[i] = -1;
++	adomains = 0;
++
++	while (1) {
++		val = simple_strtol(startp, &endp, 0);
++		if (endp == startp)
++			break;
++		while (ispunct(*endp))
++			endp++;
++		active_domains[adomains++] = val;
++		if (adomains >= MAX_OPROF_DOMAINS)
++			break;
++		startp = endp;
++	}
++	if (oprofile_set_active())
++		return -EINVAL; 
++	return count;
++}
++
++static ssize_t adomain_read(struct file * file, char __user * buf, 
++			    size_t count, loff_t * offset)
++{
++	char tmpbuf[TMPBUFSIZE];
++	size_t len = 0;
++	int i;
++	/* This is all screwed up if we run out of space */
++	for (i = 0; i < adomains; i++) 
++		len += snprintf(tmpbuf + len, TMPBUFSIZE - len, 
++				"%u ", (unsigned int)active_domains[i]);
++	len += snprintf(tmpbuf + len, TMPBUFSIZE - len, "\n");
++	return simple_read_from_buffer((void __user *)buf, count, 
++				       offset, tmpbuf, len);
++}
++
++
++static struct file_operations active_domain_ops = {
++	.read		= adomain_read,
++	.write		= adomain_write,
++};
++#endif /* CONFIG_XEN */
++
+ void oprofile_create_files(struct super_block * sb, struct dentry * root)
+ {
+ 	oprofilefs_create_file(sb, root, "enable", &enable_fops);
+ 	oprofilefs_create_file_perm(sb, root, "dump", &dump_fops, 0666);
++#ifdef CONFIG_XEN
++	oprofilefs_create_file(sb, root, "active_domains", &active_domain_ops);
++#endif
+ 	oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops);
+ 	oprofilefs_create_ulong(sb, root, "buffer_size", &fs_buffer_size);
+ 	oprofilefs_create_ulong(sb, root, "buffer_watershed", &fs_buffer_watershed);
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/pci/Kconfig new/drivers/pci/Kconfig
 --- ../upstream/hg/linux-2.6/drivers/pci/Kconfig	2006-04-04 08:17:56.000000000 +0200
 +++ new/drivers/pci/Kconfig	2006-04-24 23:55:35.000000000 +0200
@@ -55989,8 +56369,8 @@
 +}
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/xen/pciback/pciback.h new/drivers/xen/pciback/pciback.h
 --- ../upstream/hg/linux-2.6/drivers/xen/pciback/pciback.h	1970-01-01 01:00:00.000000000 +0100
-+++ new/drivers/xen/pciback/pciback.h	2006-04-24 23:56:01.000000000 +0200
-@@ -0,0 +1,78 @@
++++ new/drivers/xen/pciback/pciback.h	2006-04-26 23:37:53.000000000 +0200
+@@ -0,0 +1,89 @@
 +/*
 + * PCI Backend Common Data Structures & Function Declarations
 + *
@@ -56004,6 +56384,8 @@
 +#include <xen/xenbus.h>
 +#include <linux/list.h>
 +#include <linux/spinlock.h>
++#include <linux/workqueue.h>
++#include <asm/atomic.h>
 +#include <xen/interface/io/pciif.h>
 +
 +struct pci_dev_entry {
@@ -56011,6 +56393,9 @@
 +	struct pci_dev *dev;
 +};
 +
++#define _PDEVF_op_active 	(0)
++#define PDEVF_op_active 	(1<<(_PDEVF_op_active))
++
 +struct pciback_device {
 +	void *pci_dev_data;
 +	spinlock_t dev_lock;
@@ -56022,7 +56407,12 @@
 +
 +	int evtchn_irq;
 +
++	struct vm_struct *sh_area;
 +	struct xen_pci_sharedinfo *sh_info;
++
++	unsigned long flags;
++
++	struct work_struct op_work;
 +};
 +
 +struct pciback_dev_data {
@@ -56063,6 +56453,7 @@
 +
 +/* Handles events from front-end */
 +irqreturn_t pciback_handle_event(int irq, void *dev_id, struct pt_regs *regs);
++void pciback_do_op(void *data);
 +
 +int pciback_xenbus_register(void);
 +void pciback_xenbus_unregister(void);
@@ -56071,8 +56462,8 @@
 +#endif
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/xen/pciback/pciback_ops.c new/drivers/xen/pciback/pciback_ops.c
 --- ../upstream/hg/linux-2.6/drivers/xen/pciback/pciback_ops.c	1970-01-01 01:00:00.000000000 +0100
-+++ new/drivers/xen/pciback/pciback_ops.c	2006-04-24 23:56:01.000000000 +0200
-@@ -0,0 +1,74 @@
++++ new/drivers/xen/pciback/pciback_ops.c	2006-04-26 23:37:53.000000000 +0200
+@@ -0,0 +1,97 @@
 +/*
 + * PCI Backend Operations - respond to PCI requests from Frontend
 + *
@@ -56115,18 +56506,25 @@
 +	pciback_config_reset(dev);
 +}
 +
-+irqreturn_t pciback_handle_event(int irq, void *dev_id, struct pt_regs *regs)
++static inline void test_and_schedule_op(struct pciback_device *pdev)
 +{
-+	struct pciback_device *pdev = dev_id;
++	/* Check that frontend is requesting an operation and that we are not
++	 * already processing a request */
++	if (test_bit(_XEN_PCIF_active, (unsigned long *)&pdev->sh_info->flags)
++	    && !test_and_set_bit(_PDEVF_op_active, &pdev->flags))
++		schedule_work(&pdev->op_work);
++}
++
++/* Performing the configuration space reads/writes must not be done in atomic
++ * context because some of the pci_* functions can sleep (mostly due to ACPI
++ * use of semaphores). This function is intended to be called from a work
++ * queue in process context taking a struct pciback_device as a parameter */
++void pciback_do_op(void *data)
++{
++	struct pciback_device *pdev = data;
 +	struct pci_dev *dev;
 +	struct xen_pci_op *op = &pdev->sh_info->op;
 +
-+	if (unlikely(!test_bit(_XEN_PCIF_active,
-+			       (unsigned long *)&pdev->sh_info->flags))) {
-+		pr_debug("pciback: interrupt, but no active operation\n");
-+		goto out;
-+	}
-+
 +	dev = pciback_get_pci_dev(pdev, op->domain, op->bus, op->devfn);
 +
 +	if (dev == NULL)
@@ -56140,11 +56538,27 @@
 +	else
 +		op->err = XEN_PCI_ERR_not_implemented;
 +
++	/* Tell the driver domain that we're done. */ 
 +	wmb();
 +	clear_bit(_XEN_PCIF_active, (unsigned long *)&pdev->sh_info->flags);
 +	notify_remote_via_irq(pdev->evtchn_irq);
 +
-+      out:
++	/* Mark that we're done. */
++	smp_mb__before_clear_bit(); /* /after/ clearing PCIF_active */
++	clear_bit(_PDEVF_op_active, &pdev->flags);
++	smp_mb__after_clear_bit(); /* /before/ final check for work */
++
++	/* Check to see if the driver domain tried to start another request in
++	 * between clearing _XEN_PCIF_active and clearing _PDEVF_op_active. */
++	test_and_schedule_op(pdev);
++}
++
++irqreturn_t pciback_handle_event(int irq, void *dev_id, struct pt_regs *regs)
++{
++	struct pciback_device *pdev = dev_id;
++
++	test_and_schedule_op(pdev);
++
 +	return IRQ_HANDLED;
 +}
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/xen/pciback/pci_stub.c new/drivers/xen/pciback/pci_stub.c
@@ -57056,8 +57470,8 @@
 +}
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/xen/pciback/xenbus.c new/drivers/xen/pciback/xenbus.c
 --- ../upstream/hg/linux-2.6/drivers/xen/pciback/xenbus.c	1970-01-01 01:00:00.000000000 +0100
-+++ new/drivers/xen/pciback/xenbus.c	2006-04-24 23:56:01.000000000 +0200
-@@ -0,0 +1,441 @@
++++ new/drivers/xen/pciback/xenbus.c	2006-04-26 23:37:53.000000000 +0200
+@@ -0,0 +1,453 @@
 +/*
 + * PCI Backend Xenbus Setup - handles setup with frontend and xend
 + *
@@ -57086,10 +57500,13 @@
 +
 +	spin_lock_init(&pdev->dev_lock);
 +
++	pdev->sh_area = NULL;
 +	pdev->sh_info = NULL;
 +	pdev->evtchn_irq = INVALID_EVTCHN_IRQ;
 +	pdev->be_watching = 0;
 +
++	INIT_WORK(&pdev->op_work, pciback_do_op, pdev);
++
 +	if (pciback_init_devices(pdev)) {
 +		kfree(pdev);
 +		pdev = NULL;
@@ -57107,8 +57524,13 @@
 +	if (pdev->evtchn_irq != INVALID_EVTCHN_IRQ)
 +		unbind_from_irqhandler(pdev->evtchn_irq, pdev);
 +
++	/* If the driver domain started an op, make sure we complete it or
++	 * delete it before releasing the shared memory */
++	cancel_delayed_work(&pdev->op_work);
++	flush_scheduled_work();
++
 +	if (pdev->sh_info)
-+		xenbus_unmap_ring_vfree(pdev->xdev, pdev->sh_info);
++		xenbus_unmap_ring_vfree(pdev->xdev, pdev->sh_area);
 +
 +	pciback_release_devices(pdev);
 +
@@ -57123,15 +57545,19 @@
 +{
 +	int err = 0;
 +	int evtchn;
++	struct vm_struct *area;
++
 +	dev_dbg(&pdev->xdev->dev,
 +		"Attaching to frontend resources - gnt_ref=%d evtchn=%d\n",
 +		gnt_ref, remote_evtchn);
 +
-+	err =
-+	    xenbus_map_ring_valloc(pdev->xdev, gnt_ref,
-+				   (void **)&pdev->sh_info);
-+	if (err)
++	area = xenbus_map_ring_valloc(pdev->xdev, gnt_ref);
++	if (IS_ERR(area)) {
++		err = PTR_ERR(area);
 +		goto out;
++	}
++	pdev->sh_area = area;
++	pdev->sh_info = area->addr;
 +
 +	err = xenbus_bind_evtchn(pdev->xdev, remote_evtchn, &evtchn);
 +	if (err)
@@ -61100,8 +61526,8 @@
 +xenbus-objs += xenbus_dev.o
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/drivers/xen/xenbus/xenbus_backend_client.c new/drivers/xen/xenbus/xenbus_backend_client.c
 --- ../upstream/hg/linux-2.6/drivers/xen/xenbus/xenbus_backend_client.c	1970-01-01 01:00:00.000000000 +0100
-+++ new/drivers/xen/xenbus/xenbus_backend_client.c	2006-04-24 23:56:01.000000000 +0200
-@@ -0,0 +1,165 @@
++++ new/drivers/xen/xenbus/xenbus_backend_client.c	2006-04-26 23:37:53.000000000 +0200
+@@ -0,0 +1,144 @@
 +/******************************************************************************
 + * Backend-client-facing interface for the Xenbus driver.  In other words, the
 + * interface between the Xenbus and the device-specific code in the backend
@@ -61134,21 +61560,20 @@
 + * IN THE SOFTWARE.
 + */
 +
++#include <linux/err.h>
 +#include <xen/gnttab.h>
 +#include <xen/xenbus.h>
 +#include <xen/driver_util.h>
 +
 +/* Based on Rusty Russell's skeleton driver's map_page */
-+int xenbus_map_ring_valloc(struct xenbus_device *dev, int gnt_ref, void **vaddr)
++struct vm_struct *xenbus_map_ring_valloc(struct xenbus_device *dev, int gnt_ref)
 +{
 +	struct gnttab_map_grant_ref op;
 +	struct vm_struct *area;
 +
-+	*vaddr = NULL;
-+
 +	area = alloc_vm_area(PAGE_SIZE);
 +	if (!area)
-+		return -ENOMEM;
++		return ERR_PTR(-ENOMEM);
 +
 +	gnttab_set_map_op(&op, (unsigned long)area->addr, GNTMAP_host_map,
 +			  gnt_ref, dev->otherend_id);
@@ -61162,14 +61587,14 @@
 +		xenbus_dev_fatal(dev, op.status,
 +				 "mapping in shared page %d from domain %d",
 +				 gnt_ref, dev->otherend_id);
-+		return op.status;
++		BUG_ON(!IS_ERR(ERR_PTR(op.status)));
++		return ERR_PTR(op.status);
 +	}
 +
 +	/* Stuff the handle in an unused field */
 +	area->phys_addr = (unsigned long)op.handle;
 +
-+	*vaddr = area->addr;
-+	return 0;
++	return area;
 +}
 +EXPORT_SYMBOL_GPL(xenbus_map_ring_valloc);
 +
@@ -61196,31 +61621,11 @@
 +
 +
 +/* Based on Rusty Russell's skeleton driver's unmap_page */
-+int xenbus_unmap_ring_vfree(struct xenbus_device *dev, void *vaddr)
++int xenbus_unmap_ring_vfree(struct xenbus_device *dev, struct vm_struct *area)
 +{
-+	struct vm_struct *area;
 +	struct gnttab_unmap_grant_ref op;
 +
-+	/* It'd be nice if linux/vmalloc.h provided a find_vm_area(void *addr)
-+	 * method so that we don't have to muck with vmalloc internals here.
-+	 * We could force the user to hang on to their struct vm_struct from
-+	 * xenbus_map_ring_valloc, but these 6 lines considerably simplify
-+	 * this API.
-+	 */
-+	read_lock(&vmlist_lock);
-+	for (area = vmlist; area != NULL; area = area->next) {
-+		if (area->addr == vaddr)
-+			break;
-+	}
-+	read_unlock(&vmlist_lock);
-+
-+	if (!area) {
-+		xenbus_dev_error(dev, -ENOENT,
-+				 "can't find mapped virtual address %p", vaddr);
-+		return GNTST_bad_virt_addr;
-+	}
-+
-+	gnttab_set_unmap_op(&op, (unsigned long)vaddr, GNTMAP_host_map,
++	gnttab_set_unmap_op(&op, (unsigned long)area->addr, GNTMAP_host_map,
 +			    (grant_handle_t)area->phys_addr);
 +
 +	lock_vm_area(area);
@@ -72486,7 +72891,7 @@
 +#endif /* _ASM_HW_IRQ_H */
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/include/asm-x86_64/mach-xen/asm/hypercall.h new/include/asm-x86_64/mach-xen/asm/hypercall.h
 --- ../upstream/hg/linux-2.6/include/asm-x86_64/mach-xen/asm/hypercall.h	1970-01-01 01:00:00.000000000 +0100
-+++ new/include/asm-x86_64/mach-xen/asm/hypercall.h	2006-04-24 23:56:44.000000000 +0200
++++ new/include/asm-x86_64/mach-xen/asm/hypercall.h	2006-04-27 02:09:53.000000000 +0200
 @@ -0,0 +1,357 @@
 +/******************************************************************************
 + * hypercall.h
@@ -72829,9 +73234,9 @@
 +
 +static inline int
 +HYPERVISOR_xenoprof_op(
-+	int op, unsigned long arg1, unsigned long arg2)
++	int op, void *arg)
 +{
-+	return _hypercall3(int, xenoprof_op, op, arg1, arg2);
++	return _hypercall2(int, xenoprof_op, op, arg);
 +}
 +
 +#endif /* __HYPERCALL_H__ */
@@ -77402,6 +77807,31 @@
  #ifdef CONFIG_PROC_FS
  void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
  #else
+diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/include/linux/oprofile.h new/include/linux/oprofile.h
+--- ../upstream/hg/linux-2.6/include/linux/oprofile.h	2006-04-04 08:18:22.000000000 +0200
++++ new/include/linux/oprofile.h	2006-04-27 02:10:48.000000000 +0200
+@@ -16,6 +16,10 @@
+ #include <linux/types.h>
+ #include <linux/spinlock.h>
+ #include <asm/atomic.h>
++
++#ifdef CONFIG_XEN
++#include <xen/interface/xenoprof.h>
++#endif
+  
+ struct super_block;
+ struct dentry;
+@@ -27,6 +31,10 @@ struct oprofile_operations {
+ 	/* create any necessary configuration files in the oprofile fs.
+ 	 * Optional. */
+ 	int (*create_files)(struct super_block * sb, struct dentry * root);
++#ifdef CONFIG_XEN
++	/* setup active domains with Xen */
++	int (*set_active)(int *active_domains, unsigned int adomains);
++#endif
+ 	/* Do any necessary interrupt setup. Optional. */
+ 	int (*setup)(void);
+ 	/* Do any necessary interrupt shutdown. Optional. */
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/include/linux/pfn.h new/include/linux/pfn.h
 --- ../upstream/hg/linux-2.6/include/linux/pfn.h	2006-04-04 08:18:23.000000000 +0200
 +++ new/include/linux/pfn.h	2006-04-24 23:56:50.000000000 +0200
@@ -82944,7 +83374,7 @@
 +#endif
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/include/xen/xenbus.h new/include/xen/xenbus.h
 --- ../upstream/hg/linux-2.6/include/xen/xenbus.h	1970-01-01 01:00:00.000000000 +0100
-+++ new/include/xen/xenbus.h	2006-04-24 23:56:56.000000000 +0200
++++ new/include/xen/xenbus.h	2006-04-26 23:37:53.000000000 +0200
 @@ -0,0 +1,306 @@
 +/******************************************************************************
 + * xenbus.h
@@ -83176,8 +83606,8 @@
 + * or -ENOMEM on error. If an error is returned, device will switch to
 + * XenbusStateClosing and the error message will be saved in XenStore.
 + */
-+int xenbus_map_ring_valloc(struct xenbus_device *dev,
-+			   int gnt_ref, void **vaddr);
++struct vm_struct *xenbus_map_ring_valloc(struct xenbus_device *dev,
++					 int gnt_ref);
 +int xenbus_map_ring(struct xenbus_device *dev, int gnt_ref,
 +			   grant_handle_t *handle, void *vaddr);
 +
@@ -83189,7 +83619,7 @@
 + * Returns 0 on success and returns GNTST_* on error
 + * (see xen/include/interface/grant_table.h).
 + */
-+int xenbus_unmap_ring_vfree(struct xenbus_device *dev, void *vaddr);
++int xenbus_unmap_ring_vfree(struct xenbus_device *dev, struct vm_struct *);
 +int xenbus_unmap_ring(struct xenbus_device *dev,
 +		      grant_handle_t handle, void *vaddr);
 +
@@ -83633,8 +84063,8 @@
  	flush_cache_mm(mm);
  	tlb = tlb_gather_mmu(mm, 1);
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/mm/page_alloc.c new/mm/page_alloc.c
---- ../upstream/hg/linux-2.6/mm/page_alloc.c	2006-04-20 13:58:49.000000000 +0200
-+++ new/mm/page_alloc.c	2006-04-24 23:56:58.000000000 +0200
+--- ../upstream/hg/linux-2.6/mm/page_alloc.c	2006-04-26 18:04:20.000000000 +0200
++++ new/mm/page_alloc.c	2006-04-26 23:35:21.000000000 +0200
 @@ -437,7 +437,8 @@ static void __free_pages_ok(struct page 
  	int i;
  	int reserved = 0;
@@ -83657,7 +84087,7 @@
  		page->mapping = NULL;
 diff -urNp --exclude-from=/home/quintela/config/misc/dontdiff ../upstream/hg/linux-2.6/net/core/dev.c new/net/core/dev.c
 --- ../upstream/hg/linux-2.6/net/core/dev.c	2006-04-21 20:21:11.000000000 +0200
-+++ new/net/core/dev.c	2006-04-24 23:57:00.000000000 +0200
++++ new/net/core/dev.c	2006-04-26 23:37:54.000000000 +0200
 @@ -116,6 +116,12 @@
  #include <asm/current.h>
  #include <linux/audit.h>
@@ -83708,7 +84138,7 @@
 +	return -EPROTO;
 +}
 +#else
-+inline int skb_checksum_setup(struct sk_buff *skb) {}
++inline int skb_checksum_setup(struct sk_buff *skb) { return 0; }
 +#endif
 +
 +
@@ -83932,14 +84362,3 @@
 +	  )
 +# filterxen($1 = allobj, $2 = noobjs)
 +filterxen = $(filter-out $(2), $(1))
-diff -r c68722b17299 arch/x86_64/kernel/head-xen.S
---- a/arch/x86_64/kernel/head-xen.S	Wed Apr 19 11:47:47 2006 +0100
-+++ b/arch/x86_64/kernel/head-xen.S	Fri Apr 21 19:32:49 2006 -0400
-@@ -23,6 +23,7 @@
- #include <asm/cache.h>
- 
- 	.text
-+	.section .bootstrap.text
- 	.code64
- 	.globl startup_64
- startup_64:




More information about the fedora-cvs-commits mailing list