Hello community,

here is the log from the commit of package xen for openSUSE:Factory checked in 
at 2013-08-01 16:10:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
 and      /work/SRC/openSUSE:Factory/.xen.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xen"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes  2013-07-04 09:14:04.000000000 
+0200
+++ /work/SRC/openSUSE:Factory/.xen.new/xen.changes     2013-08-01 
16:10:24.000000000 +0200
@@ -1,0 +2,45 @@
+Wed Jul 31 11:34:14 MDT 2013 - [email protected]
+
+- Spec file cleanups
+  xen.spec 
+- Renamed xend-sysconfig.patch to xencommons-sysconfig.patch
+
+-------------------------------------------------------------------
+Mon Jul 29 16:46:33 MDT 2013 - [email protected]
+
+- Added support for systemd with the following service files
+  xenstored.service
+  blktapctrl.service
+  xend.service
+  xenconsoled.service
+  xen-watchdog.service
+  xendomains.service
+  xencommons.service
+
+-------------------------------------------------------------------
+Fri Jul 12 11:05:11 MDT 2013 - [email protected]
+
+- Upstream patches from Jan
+  51d277a3-x86-don-t-pass-negative-time-to-gtime_to_gtsc-try-2.patch
+  51d27807-iommu-amd-Fix-logic-for-clearing-the-IOMMU-interrupt-bits.patch
+  51d27841-iommu-amd-Workaround-for-erratum-787.patch
+  51daa074-Revert-hvmloader-always-include-HPET-table.patch 
+
+-------------------------------------------------------------------
+Fri Jul 12 09:31:01 MDT 2013 - [email protected]
+
+- Dropped deprecated or unnecessary patches
+  pvdrv-import-shared-info.patch 
+  minios-fixups.patch
+
+-------------------------------------------------------------------
+Tue Jul  9 13:06:27 MDT 2013 - [email protected]
+
+- Update to Xen 4.3.0 FCS 
+
+-------------------------------------------------------------------
+Fri Jul  5 14:31:51 UTC 2013 - [email protected]
+
+- Enable ARM targets for Xen
+
+-------------------------------------------------------------------

Old:
----
  minios-fixups.patch
  pvdrv-import-shared-info.patch
  xend-sysconfig.patch

New:
----
  51d277a3-x86-don-t-pass-negative-time-to-gtime_to_gtsc-try-2.patch
  51d27807-iommu-amd-Fix-logic-for-clearing-the-IOMMU-interrupt-bits.patch
  51d27841-iommu-amd-Workaround-for-erratum-787.patch
  51daa074-Revert-hvmloader-always-include-HPET-table.patch
  blktapctrl.service
  xen-watchdog.service
  xencommons-sysconfig.patch
  xencommons.service
  xenconsoled.service
  xend.service
  xendomains.service
  xenstored.service

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xen.spec ++++++
++++ 940 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/xen/xen.spec
++++ and /work/SRC/openSUSE:Factory/.xen.new/xen.spec

++++++ 51d277a3-x86-don-t-pass-negative-time-to-gtime_to_gtsc-try-2.patch ++++++
# Commit 5ad914bc867c5a6a4957869c89918f4e1f9dd9c4
# Date 2013-07-02 08:48:03 +0200
# Author Jan Beulich <[email protected]>
# Committer Jan Beulich <[email protected]>
x86: don't pass negative time to gtime_to_gtsc() (try 2)

This mostly reverts commit eb60be3d ("x86: don't pass negative time to
gtime_to_gtsc()") and instead corrects __update_vcpu_system_time()'s
handling of this_cpu(cpu_time).stime_local_stamp dating back before the
start of a HVM guest (which would otherwise lead to a negative value
getting passed to gtime_to_gtsc(), causing scale_delta() to produce
meaningless output).

Flushing the value to zero was wrong, and printing a message for
something that can validly happen wasn't very useful either.

Signed-off-by: Jan Beulich <[email protected]>
Acked-by: Keir Fraser <[email protected]>

--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -823,16 +823,13 @@ static void __update_vcpu_system_time(st
             struct pl_time *pl = &v->domain->arch.hvm_domain.pl_time;
 
             stime += pl->stime_offset + v->arch.hvm_vcpu.stime_offset;
-            if ( (s64)stime < 0 )
-            {
-                printk(XENLOG_G_WARNING "d%dv%d: bogus time %" PRId64
-                       " (offsets %" PRId64 "/%" PRId64 ")\n",
-                       d->domain_id, v->vcpu_id, stime,
-                      pl->stime_offset, v->arch.hvm_vcpu.stime_offset);
-                stime = 0;
-            }
+            if ( stime >= 0 )
+                tsc_stamp = gtime_to_gtsc(d, stime);
+            else
+                tsc_stamp = -gtime_to_gtsc(d, -stime);
         }
-        tsc_stamp = gtime_to_gtsc(d, stime);
+        else
+            tsc_stamp = gtime_to_gtsc(d, stime);
     }
     else
     {
++++++ 51d27807-iommu-amd-Fix-logic-for-clearing-the-IOMMU-interrupt-bits.patch 
++++++
# Commit 2823a0c7dfc979db316787e1dd42a8845e5825c0
# Date 2013-07-02 08:49:43 +0200
# Author Suravee Suthikulpanit <[email protected]>
# Committer Jan Beulich <[email protected]>
iommu/amd: Fix logic for clearing the IOMMU interrupt bits

The IOMMU interrupt bits in the IOMMU status registers are
"read-only, and write-1-to-clear (RW1C).  Therefore, the existing
logic which reads the register, set the bit, and then writing back
the values could accidentally clear certain bits if it has been set.

The correct logic would just be writing only the value which only
set the interrupt bits, and leave the rest to zeros.

This patch also, clean up #define masks as Jan has suggested.

Signed-off-by: Suravee Suthikulpanit <[email protected]>

With iommu_interrupt_handler() properly having got switched its readl()
from status to control register, the subsequent writel() needed to be
switched too (and the RW1C comment there was bogus).

Some of the cleanup went too far - undone.

Further, with iommu_interrupt_handler() now actually disabling the
interrupt sources, they also need to get re-enabled by the tasklet once
it finished processing the respective log. This also implies re-running
the tasklet so that log entries added between reading the log and re-
enabling the interrupt will get handled in a timely manner.

Finally, guest write emulation to the status register needs to be done
with the RW1C (and RO for all other bits) semantics in mind too.

Signed-off-by: Jan Beulich <[email protected]>
Reviewed-by: Tim Deegan <[email protected]>
Acked-by: Suravee Suthikulpanit <[email protected]>

--- a/xen/drivers/passthrough/amd/iommu_cmd.c
+++ b/xen/drivers/passthrough/amd/iommu_cmd.c
@@ -75,11 +75,9 @@ static void flush_command_buffer(struct 
     u32 cmd[4], status;
     int loop_count, comp_wait;
 
-    /* clear 'ComWaitInt' in status register (WIC) */
-    set_field_in_reg_u32(IOMMU_CONTROL_ENABLED, 0,
-                         IOMMU_STATUS_COMP_WAIT_INT_MASK,
-                         IOMMU_STATUS_COMP_WAIT_INT_SHIFT, &status);
-    writel(status, iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+    /* RW1C 'ComWaitInt' in status register */
+    writel(IOMMU_STATUS_COMP_WAIT_INT_MASK,
+           iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
 
     /* send an empty COMPLETION_WAIT command to flush command buffer */
     cmd[3] = cmd[2] = 0;
@@ -103,9 +101,9 @@ static void flush_command_buffer(struct 
 
     if ( comp_wait )
     {
-        /* clear 'ComWaitInt' in status register (WIC) */
-        status &= IOMMU_STATUS_COMP_WAIT_INT_MASK;
-        writel(status, iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+        /* RW1C 'ComWaitInt' in status register */
+        writel(IOMMU_STATUS_COMP_WAIT_INT_MASK,
+               iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
         return;
     }
     AMD_IOMMU_DEBUG("Warning: ComWaitInt bit did not assert!\n");
--- a/xen/drivers/passthrough/amd/iommu_guest.c
+++ b/xen/drivers/passthrough/amd/iommu_guest.c
@@ -754,7 +754,14 @@ static void guest_iommu_mmio_write64(str
         u64_to_reg(&iommu->ppr_log.reg_tail, val);
         break;
     case IOMMU_STATUS_MMIO_OFFSET:
-        u64_to_reg(&iommu->reg_status, val);
+        val &= IOMMU_STATUS_EVENT_OVERFLOW_MASK |
+               IOMMU_STATUS_EVENT_LOG_INT_MASK |
+               IOMMU_STATUS_COMP_WAIT_INT_MASK |
+               IOMMU_STATUS_PPR_LOG_OVERFLOW_MASK |
+               IOMMU_STATUS_PPR_LOG_INT_MASK |
+               IOMMU_STATUS_GAPIC_LOG_OVERFLOW_MASK |
+               IOMMU_STATUS_GAPIC_LOG_INT_MASK;
+        u64_to_reg(&iommu->reg_status, reg_to_u64(iommu->reg_status) & ~val);
         break;
 
     default:
--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -344,13 +344,13 @@ static void set_iommu_ppr_log_control(st
         writeq(0, iommu->mmio_base + IOMMU_PPR_LOG_TAIL_OFFSET);
 
         iommu_set_bit(&entry, IOMMU_CONTROL_PPR_ENABLE_SHIFT);
-        iommu_set_bit(&entry, IOMMU_CONTROL_PPR_INT_SHIFT);
+        iommu_set_bit(&entry, IOMMU_CONTROL_PPR_LOG_INT_SHIFT);
         iommu_set_bit(&entry, IOMMU_CONTROL_PPR_LOG_ENABLE_SHIFT);
     }
     else
     {
         iommu_clear_bit(&entry, IOMMU_CONTROL_PPR_ENABLE_SHIFT);
-        iommu_clear_bit(&entry, IOMMU_CONTROL_PPR_INT_SHIFT);
+        iommu_clear_bit(&entry, IOMMU_CONTROL_PPR_LOG_INT_SHIFT);
         iommu_clear_bit(&entry, IOMMU_CONTROL_PPR_LOG_ENABLE_SHIFT);
     }
 
@@ -410,7 +410,7 @@ static void iommu_reset_log(struct amd_i
                             void (*ctrl_func)(struct amd_iommu *iommu, int))
 {
     u32 entry;
-    int log_run, run_bit, of_bit;
+    int log_run, run_bit;
     int loop_count = 1000;
 
     BUG_ON(!iommu || ((log != &iommu->event_log) && (log != &iommu->ppr_log)));
@@ -419,10 +419,6 @@ static void iommu_reset_log(struct amd_i
         IOMMU_STATUS_EVENT_LOG_RUN_SHIFT :
         IOMMU_STATUS_PPR_LOG_RUN_SHIFT;
 
-    of_bit = ( log == &iommu->event_log ) ?
-        IOMMU_STATUS_EVENT_OVERFLOW_SHIFT :
-        IOMMU_STATUS_PPR_LOG_OVERFLOW_SHIFT;
-
     /* wait until EventLogRun bit = 0 */
     do {
         entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
@@ -439,9 +435,10 @@ static void iommu_reset_log(struct amd_i
 
     ctrl_func(iommu, IOMMU_CONTROL_DISABLED);
 
-    /*clear overflow bit */
-    iommu_clear_bit(&entry, of_bit);
-    writel(entry, iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+    /* RW1C overflow bit */
+    writel(log == &iommu->event_log ? IOMMU_STATUS_EVENT_OVERFLOW_MASK
+                                    : IOMMU_STATUS_PPR_LOG_OVERFLOW_MASK,
+           iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
 
     /*reset event log base address */
     log->head = 0;
@@ -611,22 +608,33 @@ static void iommu_check_event_log(struct
     u32 entry;
     unsigned long flags;
 
+    /* RW1C interrupt status bit */
+    writel(IOMMU_STATUS_EVENT_LOG_INT_MASK,
+           iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+
     iommu_read_log(iommu, &iommu->event_log,
                    sizeof(event_entry_t), parse_event_log_entry);
 
     spin_lock_irqsave(&iommu->lock, flags);
     
-    /*check event overflow */
+    /* Check event overflow. */
     entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
-
     if ( iommu_get_bit(entry, IOMMU_STATUS_EVENT_OVERFLOW_SHIFT) )
         iommu_reset_log(iommu, &iommu->event_log, set_iommu_event_log_control);
-
-    /* reset interrupt status bit */
-    entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
-    iommu_set_bit(&entry, IOMMU_STATUS_EVENT_LOG_INT_SHIFT);
-
-    writel(entry, iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+    else
+    {
+        entry = readl(iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET);
+        if ( !(entry & IOMMU_CONTROL_EVENT_LOG_INT_MASK) )
+        {
+            entry |= IOMMU_CONTROL_EVENT_LOG_INT_MASK;
+            writel(entry, iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET);
+            /*
+             * Re-schedule the tasklet to handle eventual log entries added
+             * between reading the log above and re-enabling the interrupt.
+             */
+            tasklet_schedule(&amd_iommu_irq_tasklet);
+        }
+    }
 
     spin_unlock_irqrestore(&iommu->lock, flags);
 }
@@ -681,22 +689,33 @@ static void iommu_check_ppr_log(struct a
     u32 entry;
     unsigned long flags;
 
+    /* RW1C interrupt status bit */
+    writel(IOMMU_STATUS_PPR_LOG_INT_MASK,
+           iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+
     iommu_read_log(iommu, &iommu->ppr_log,
                    sizeof(ppr_entry_t), parse_ppr_log_entry);
     
     spin_lock_irqsave(&iommu->lock, flags);
 
-    /*check event overflow */
+    /* Check event overflow. */
     entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
-
     if ( iommu_get_bit(entry, IOMMU_STATUS_PPR_LOG_OVERFLOW_SHIFT) )
         iommu_reset_log(iommu, &iommu->ppr_log, set_iommu_ppr_log_control);
-
-    /* reset interrupt status bit */
-    entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
-    iommu_set_bit(&entry, IOMMU_STATUS_PPR_LOG_INT_SHIFT);
-
-    writel(entry, iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+    else
+    {
+        entry = readl(iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET);
+        if ( !(entry & IOMMU_CONTROL_PPR_LOG_INT_MASK) )
+        {
+            entry |= IOMMU_CONTROL_PPR_LOG_INT_MASK;
+            writel(entry, iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET);
+            /*
+             * Re-schedule the tasklet to handle eventual log entries added
+             * between reading the log above and re-enabling the interrupt.
+             */
+            tasklet_schedule(&amd_iommu_irq_tasklet);
+        }
+    }
 
     spin_unlock_irqrestore(&iommu->lock, flags);
 }
@@ -733,11 +752,14 @@ static void iommu_interrupt_handler(int 
 
     spin_lock_irqsave(&iommu->lock, flags);
 
-    /* Silence interrupts from both event and PPR logging */
-    entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
-    iommu_clear_bit(&entry, IOMMU_STATUS_EVENT_LOG_INT_SHIFT);
-    iommu_clear_bit(&entry, IOMMU_STATUS_PPR_LOG_INT_SHIFT);
-    writel(entry, iommu->mmio_base+IOMMU_STATUS_MMIO_OFFSET);
+    /*
+     * Silence interrupts from both event and PPR by clearing the
+     * enable logging bits in the control register
+     */
+    entry = readl(iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET);
+    iommu_clear_bit(&entry, IOMMU_CONTROL_EVENT_LOG_INT_SHIFT);
+    iommu_clear_bit(&entry, IOMMU_CONTROL_PPR_LOG_INT_SHIFT);
+    writel(entry, iommu->mmio_base + IOMMU_CONTROL_MMIO_OFFSET);
 
     spin_unlock_irqrestore(&iommu->lock, flags);
 
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-defs.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-defs.h
@@ -336,14 +336,17 @@
 #define IOMMU_CONTROL_ISOCHRONOUS_SHIFT                        11
 #define IOMMU_CONTROL_COMMAND_BUFFER_ENABLE_MASK       0x00001000
 #define IOMMU_CONTROL_COMMAND_BUFFER_ENABLE_SHIFT      12
+#define IOMMU_CONTROL_PPR_LOG_ENABLE_MASK              0x00002000
+#define IOMMU_CONTROL_PPR_LOG_ENABLE_SHIFT             13
+#define IOMMU_CONTROL_PPR_LOG_INT_MASK                 0x00004000
+#define IOMMU_CONTROL_PPR_LOG_INT_SHIFT                        14
+#define IOMMU_CONTROL_PPR_ENABLE_MASK                  0x00008000
+#define IOMMU_CONTROL_PPR_ENABLE_SHIFT                 15
+#define IOMMU_CONTROL_GT_ENABLE_MASK                   0x00010000
+#define IOMMU_CONTROL_GT_ENABLE_SHIFT                  16
 #define IOMMU_CONTROL_RESTART_MASK                     0x80000000
 #define IOMMU_CONTROL_RESTART_SHIFT                    31
 
-#define IOMMU_CONTROL_PPR_LOG_ENABLE_SHIFT      13
-#define IOMMU_CONTROL_PPR_INT_SHIFT             14
-#define IOMMU_CONTROL_PPR_ENABLE_SHIFT          15
-#define IOMMU_CONTROL_GT_ENABLE_SHIFT           16
-
 /* Exclusion Register */
 #define IOMMU_EXCLUSION_BASE_LOW_OFFSET                0x20
 #define IOMMU_EXCLUSION_BASE_HIGH_OFFSET       0x24
@@ -395,9 +398,18 @@
 #define IOMMU_STATUS_EVENT_LOG_RUN_SHIFT       3
 #define IOMMU_STATUS_CMD_BUFFER_RUN_MASK       0x00000010
 #define IOMMU_STATUS_CMD_BUFFER_RUN_SHIFT      4
+#define IOMMU_STATUS_PPR_LOG_OVERFLOW_MASK      0x00000020
 #define IOMMU_STATUS_PPR_LOG_OVERFLOW_SHIFT     5
+#define IOMMU_STATUS_PPR_LOG_INT_MASK           0x00000040
 #define IOMMU_STATUS_PPR_LOG_INT_SHIFT          6
+#define IOMMU_STATUS_PPR_LOG_RUN_MASK           0x00000080
 #define IOMMU_STATUS_PPR_LOG_RUN_SHIFT          7
+#define IOMMU_STATUS_GAPIC_LOG_OVERFLOW_MASK    0x00000100
+#define IOMMU_STATUS_GAPIC_LOG_OVERFLOW_SHIFT   8
+#define IOMMU_STATUS_GAPIC_LOG_INT_MASK         0x00000200
+#define IOMMU_STATUS_GAPIC_LOG_INT_SHIFT        9
+#define IOMMU_STATUS_GAPIC_LOG_RUN_MASK         0x00000400
+#define IOMMU_STATUS_GAPIC_LOG_RUN_SHIFT        10
 
 /* I/O Page Table */
 #define IOMMU_PAGE_TABLE_ENTRY_SIZE    8
++++++ 51d27841-iommu-amd-Workaround-for-erratum-787.patch ++++++
# Commit 9eabb0735400e2b6059dfa3f0b47a426f61f570a
# Date 2013-07-02 08:50:41 +0200
# Author Suravee Suthikulpanit <[email protected]>
# Committer Jan Beulich <[email protected]>
iommu/amd: Workaround for erratum 787

The IOMMU interrupt handling in bottom half must clear the PPR log interrupt
and event log interrupt bits to re-enable the interrupt. This is done by
writing 1 to the memory mapped register to clear the bit. Due to hardware bug,
if the driver tries to clear this bit while the IOMMU hardware also setting
this bit, the conflict will result with the bit being set. If the interrupt
handling code does not make sure to clear this bit, subsequent changes in the
event/PPR logs will no longer generating interrupts, and would result if
buffer overflow. After clearing the bits, the driver must read back
the register to verify.

Signed-off-by: Suravee Suthikulpanit <[email protected]>

Adjust to apply on top of heavily modified patch 1. Adjust flow to get away
with a single readl() in each instance of the status register checks.

Signed-off-by: Jan Beulich <[email protected]>
Reviewed-by: Tim Deegan <[email protected]>
Acked-by: Suravee Suthikulpanit <[email protected]>

--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -636,6 +636,14 @@ static void iommu_check_event_log(struct
         }
     }
 
+    /*
+     * Workaround for erratum787:
+     * Re-check to make sure the bit has been cleared.
+     */
+    entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+    if ( entry & IOMMU_STATUS_EVENT_LOG_INT_MASK )
+        tasklet_schedule(&amd_iommu_irq_tasklet);
+
     spin_unlock_irqrestore(&iommu->lock, flags);
 }
 
@@ -717,6 +725,14 @@ static void iommu_check_ppr_log(struct a
         }
     }
 
+    /*
+     * Workaround for erratum787:
+     * Re-check to make sure the bit has been cleared.
+     */
+    entry = readl(iommu->mmio_base + IOMMU_STATUS_MMIO_OFFSET);
+    if ( entry & IOMMU_STATUS_PPR_LOG_INT_MASK )
+        tasklet_schedule(&amd_iommu_irq_tasklet);
+
     spin_unlock_irqrestore(&iommu->lock, flags);
 }
 
++++++ 51daa074-Revert-hvmloader-always-include-HPET-table.patch ++++++
References: bnc#817799

# Commit 4867685f7916bb594a67f2f64a28bbf5ecb4949c
# Date 2013-07-08 13:20:20 +0200
# Author Jan Beulich <[email protected]>
# Committer Jan Beulich <[email protected]>
Revert "hvmloader: always include HPET table"

This reverts commit e4fd0475a08fda414da27c4e57b568f147cfc07e.

Conflicts:
        tools/firmware/hvmloader/acpi/build.c

Signed-off-by: Jan Beulich <[email protected]>
Acked-by: Keir Fraser <[email protected]>

--- a/tools/firmware/hvmloader/acpi/build.c
+++ b/tools/firmware/hvmloader/acpi/build.c
@@ -268,11 +268,13 @@ static int construct_secondary_tables(un
         table_ptrs[nr_tables++] = (unsigned long)madt;
     }
 
-    /* HPET. Always included in DSDT, so always include it here too. */
-    /* (And it's unconditionally required by Windows SVVP tests.) */
-    hpet = construct_hpet();
-    if (!hpet) return -1;
-    table_ptrs[nr_tables++] = (unsigned long)hpet;
+    /* HPET. */
+    if ( hpet_exists(ACPI_HPET_ADDRESS) )
+    {
+        hpet = construct_hpet();
+        if (!hpet) return -1;
+        table_ptrs[nr_tables++] = (unsigned long)hpet;
+    }
 
     /* WAET. */
     waet = construct_waet();
++++++ blktapctrl.service ++++++
[Unit]
Description=blktapctrl daemon
RefuseManualStop=true
ConditionPathExists=/proc/xen

[Service]
Type=forking
Environment=BLKTAPCTRL_ARGS=
EnvironmentFile=-/etc/sysconfig/blktapctrl
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=/usr/sbin/blktapctrl $BLKTAPCTRL_ARGS

[Install]
WantedBy=multi-user.target
++++++ disable_emulated_device.patch ++++++
--- /var/tmp/diff_new_pack.xDP8sH/_old  2013-08-01 16:10:26.000000000 +0200
+++ /var/tmp/diff_new_pack.xDP8sH/_new  2013-08-01 16:10:26.000000000 +0200
@@ -1,8 +1,6 @@
-Index: 
xen-4.2.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-===================================================================
---- 
xen-4.2.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.2.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-@@ -424,6 +424,11 @@ static int __devinit platform_pci_init(s
+--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+@@ -419,6 +419,11 @@ static int __devinit platform_pci_init(s
        platform_mmio = mmio_addr;
        platform_mmiolen = mmio_len;
  

++++++ magic_ioport_compat.patch ++++++
--- /var/tmp/diff_new_pack.xDP8sH/_old  2013-08-01 16:10:26.000000000 +0200
+++ /var/tmp/diff_new_pack.xDP8sH/_new  2013-08-01 16:10:26.000000000 +0200
@@ -2,11 +2,9 @@
 
 Signed-off-by: K. Y. Srinivasan <[email protected]>
 
-Index: 
xen-4.2.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-===================================================================
---- 
xen-4.2.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.2.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-@@ -321,7 +321,10 @@ static int check_platform_magic(struct d
+--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+@@ -316,7 +316,10 @@ static int check_platform_magic(struct d
  
        if (magic != XEN_IOPORT_MAGIC_VAL) {
                err = "unrecognised magic value";

++++++ qemu-xen-dir-remote.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tools/qemu-xen-dir-remote/hw/xen_disk.c 
new/tools/qemu-xen-dir-remote/hw/xen_disk.c
--- old/tools/qemu-xen-dir-remote/hw/xen_disk.c 2013-06-28 00:04:09.000000000 
+0200
+++ new/tools/qemu-xen-dir-remote/hw/xen_disk.c 2013-07-09 20:58:25.000000000 
+0200
@@ -94,6 +94,7 @@
     char                *type;
     char                *dev;
     char                *devtype;
+    bool                directiosafe;
     const char          *fileproto;
     const char          *filename;
     int                 ring_ref;
@@ -702,6 +703,7 @@
 {
     struct XenBlkDev *blkdev = container_of(xendev, struct XenBlkDev, xendev);
     int info = 0;
+    char *directiosafe = NULL;
 
     /* read xenstore entries */
     if (blkdev->params == NULL) {
@@ -734,6 +736,8 @@
     if (blkdev->devtype == NULL) {
         blkdev->devtype = xenstore_read_be_str(&blkdev->xendev, "device-type");
     }
+    directiosafe = xenstore_read_be_str(&blkdev->xendev, "direct-io-safe");
+    blkdev->directiosafe = (directiosafe && atoi(directiosafe));
 
     /* do we have all we need? */
     if (blkdev->params == NULL ||
@@ -761,6 +765,8 @@
     xenstore_write_be_int(&blkdev->xendev, "feature-flush-cache", 1);
     xenstore_write_be_int(&blkdev->xendev, "feature-persistent", 1);
     xenstore_write_be_int(&blkdev->xendev, "info", info);
+
+    g_free(directiosafe);
     return 0;
 
 out_error:
@@ -774,6 +780,8 @@
     blkdev->dev = NULL;
     g_free(blkdev->devtype);
     blkdev->devtype = NULL;
+    g_free(directiosafe);
+    blkdev->directiosafe = false;
     return -1;
 }
 
@@ -783,7 +791,11 @@
     int pers, index, qflags;
 
     /* read-only ? */
-    qflags = BDRV_O_CACHE_WB | BDRV_O_NATIVE_AIO;
+    if (blkdev->directiosafe) {
+        qflags = BDRV_O_NOCACHE | BDRV_O_NATIVE_AIO;
+    } else {
+        qflags = BDRV_O_CACHE_WB;
+    }
     if (strcmp(blkdev->mode, "w") == 0) {
         qflags |= BDRV_O_RDWR;
     }

++++++ qemu-xen-traditional-dir-remote.tar.bz2 ++++++

++++++ seabios-dir-remote.tar.bz2 ++++++

++++++ x86-cpufreq-report.patch ++++++
--- /var/tmp/diff_new_pack.xDP8sH/_old  2013-08-01 16:10:33.000000000 +0200
+++ /var/tmp/diff_new_pack.xDP8sH/_new  2013-08-01 16:10:33.000000000 +0200
@@ -1,7 +1,5 @@
-Index: xen-4.3.0-testing/xen/arch/x86/platform_hypercall.c
-===================================================================
---- xen-4.3.0-testing.orig/xen/arch/x86/platform_hypercall.c
-+++ xen-4.3.0-testing/xen/arch/x86/platform_hypercall.c
+--- a/xen/arch/x86/platform_hypercall.c
++++ b/xen/arch/x86/platform_hypercall.c
 @@ -25,7 +25,7 @@
  #include <xen/irq.h>
  #include <asm/current.h>
@@ -45,7 +43,7 @@
 +            op->u.get_cpu_freq.freq = 0;
 +            break;
 +        }
-+        if ( copy_field_to_guest(u_xenpf_op, op, u.get_cpu_freq.freq) )
++        if ( __copy_field_to_guest(u_xenpf_op, op, u.get_cpu_freq.freq) )
 +            ret = -EFAULT;
 +    }
 +    break;
@@ -53,10 +51,8 @@
      default:
          ret = -ENOSYS;
          break;
-Index: xen-4.3.0-testing/xen/include/public/platform.h
-===================================================================
---- xen-4.3.0-testing.orig/xen/include/public/platform.h
-+++ xen-4.3.0-testing/xen/include/public/platform.h
+--- a/xen/include/public/platform.h
++++ b/xen/include/public/platform.h
 @@ -527,6 +527,16 @@ struct xenpf_core_parking {
  typedef struct xenpf_core_parking xenpf_core_parking_t;
  DEFINE_XEN_GUEST_HANDLE(xenpf_core_parking_t);

++++++ xen-4.3.0-testing-src.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/ChangeLog 
new/xen-4.3.0-testing/ChangeLog
--- old/xen-4.3.0-testing/ChangeLog     2013-06-27 23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/ChangeLog     2013-07-09 20:57:12.000000000 +0200
@@ -1,5 +1,7 @@
-commit 442ba0b2f6c16945ad496b31bf18a9e85d199d18
-Author: Ian Jackson <[email protected]>
-Date:   Thu Jun 27 11:08:07 2013 +0100
+commit f8cc9c2b713b1739b1d3d324716547fa639dce86
+Author: George Dunlap <[email protected]>
+Date:   Tue Jul 9 11:46:56 2013 +0100
 
-    QEMU_UPSTREAM_REVISION update
+    release: Remove -rc from README ASCII art
+    
+    Signed-off-by: George Dunlap <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/Config.mk 
new/xen-4.3.0-testing/Config.mk
--- old/xen-4.3.0-testing/Config.mk     2013-06-27 23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/Config.mk     2013-07-09 20:57:12.000000000 +0200
@@ -10,7 +10,7 @@
 -include $(XEN_ROOT)/.config
 
 # A debug build of Xen and tools?
-debug ?= y
+debug ?= n
 debug_symbols ?= $(debug)
 
 # Test coverage support
@@ -197,22 +197,22 @@
 # near the place in the Xen Makefiles where the file is used.
 
 ifeq ($(GIT_HTTP),y)
-QEMU_REMOTE=http://xenbits.xen.org/git-http/qemu-xen-unstable.git
+QEMU_REMOTE=http://xenbits.xen.org/git-http/qemu-xen-4.3-testing.git
 else
-QEMU_REMOTE=git://xenbits.xen.org/qemu-xen-unstable.git
+QEMU_REMOTE=git://xenbits.xen.org/qemu-xen-4.3-testing.git
 endif
 
 ifeq ($(GIT_HTTP),y)
 OVMF_UPSTREAM_URL ?= http://xenbits.xen.org/git-http/ovmf.git
-QEMU_UPSTREAM_URL ?= http://xenbits.xen.org/git-http/qemu-upstream-unstable.git
+QEMU_UPSTREAM_URL ?= 
http://xenbits.xen.org/git-http/qemu-upstream-4.3-testing.git
 SEABIOS_UPSTREAM_URL ?= http://xenbits.xen.org/git-http/seabios.git
 else
 OVMF_UPSTREAM_URL ?= git://xenbits.xen.org/ovmf.git
-QEMU_UPSTREAM_URL ?= git://xenbits.xen.org/qemu-upstream-unstable.git
+QEMU_UPSTREAM_URL ?= git://xenbits.xen.org/qemu-upstream-4.3-testing.git
 SEABIOS_UPSTREAM_URL ?= git://xenbits.xen.org/seabios.git
 endif
 OVMF_UPSTREAM_REVISION ?= b0855f925c6e2e0b21fbb03fab4b5fb5b6876871
-QEMU_UPSTREAM_REVISION ?= 1c514a7734b7f98625a0d18d5e8ee7581f26e50c
+QEMU_UPSTREAM_REVISION ?= qemu-xen-4.3.0
 SEABIOS_UPSTREAM_TAG ?= 3a28511b46f0c2af5fae1b6ed2b0c19d7913cee3
 # Wed Jun 26 16:30:45 2013 +0100
 # xen: Don't perform SMP setup.
@@ -224,7 +224,7 @@
 # CONFIG_QEMU ?= `pwd`/$(XEN_ROOT)/../qemu-xen.git
 CONFIG_QEMU ?= $(QEMU_REMOTE)
 
-QEMU_TAG ?= 13c144d96e825f145e5b37f97e5f6210c2c645e9
+QEMU_TAG ?= xen-4.3.0
 # Mon Jun 17 17:39:51 2013 +0100
 # qemu-xen-traditional: disable docs
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/README new/xen-4.3.0-testing/README
--- old/xen-4.3.0-testing/README        2013-06-27 23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/README        2013-07-09 20:57:12.000000000 +0200
@@ -1,9 +1,9 @@
 #################################
 __  __            _  _    _____                
-\ \/ /___ _ __   | || |  |___ /       _ __ ___ 
- \  // _ \ '_ \  | || |_   |_ \ _____| '__/ __|
- /  \  __/ | | | |__   _| ___) |_____| | | (__ 
-/_/\_\___|_| |_|    |_|(_)____/      |_|  \___|
+\ \/ /___ _ __   | || |  |___ /
+ \  // _ \ '_ \  | || |_   |_ \
+ /  \  __/ | | | |__   _| ___) |
+/_/\_\___|_| |_|    |_|(_)____/
                              
 #################################
 
@@ -19,6 +19,16 @@
 GPL. Since its initial public release, Xen has grown a large
 development community, spearheaded by xen.org (http://www.xen.org).
 
+The 4.3 release offers a number of improvements, including NUMA
+scheduling affinity, openvswitch integration, and defaulting to
+qemu-xen rather than qemu-traditional for non-stubdom guests.
+(qemu-xen is kept very close to the upstream project.)  We also have a
+number of updates to vTPM, and improvements to XSM and Flask to allow
+greater disaggregation.  Additionally, 4.3 contains a basic version of
+Xen for the new ARM server architecture, both 32- and 64-bit.  And as
+always, there are a number of performance, stability, and security
+improvements under-the hood.
+
 This file contains some quick-start instructions to install Xen on
 your system. For more information see http:/www.xen.org/ and
 http://wiki.xen.org/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/docs/Makefile 
new/xen-4.3.0-testing/docs/Makefile
--- old/xen-4.3.0-testing/docs/Makefile 2013-06-27 23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/docs/Makefile 2013-07-09 20:57:12.000000000 +0200
@@ -2,7 +2,7 @@
 include $(XEN_ROOT)/Config.mk
 -include $(XEN_ROOT)/config/Docs.mk
 
-VERSION                = xen-unstable
+VERSION                := $(shell $(MAKE) -C $(XEN_ROOT)/xen 
--no-print-directory xenversion)
 
 DOC_MAN5SRC    := $(wildcard man/*.pod.5)
 DOC_MAN1SRC    := $(wildcard man/*.pod.1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/docs/man/xl.pod.1 
new/xen-4.3.0-testing/docs/man/xl.pod.1
--- old/xen-4.3.0-testing/docs/man/xl.pod.1     2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/docs/man/xl.pod.1     2013-07-09 20:57:12.000000000 
+0200
@@ -910,8 +910,6 @@
 
 =item B<-p [pool] -d>...       : Illegal
 
-=item
-
 =back
 
 =item B<sched-credit2> [I<OPTIONS>]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xen-4.3.0-testing/tools/hotplug/Linux/init.d/xendomains 
new/xen-4.3.0-testing/tools/hotplug/Linux/init.d/xendomains
--- old/xen-4.3.0-testing/tools/hotplug/Linux/init.d/xendomains 2013-06-27 
23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/tools/hotplug/Linux/init.d/xendomains 2013-07-09 
20:57:12.000000000 +0200
@@ -206,7 +206,7 @@
     done
 }
 
-LIST_GREP='((domain\|(domid\|(name\|^{$\|"name":\|"domid":'
+LIST_GREP='(domain\|(domid\|(name\|^    {$\|"name":\|"domid":'
 parseln()
 {
     if [[ "$1" =~ '(domain' ]] || [[ "$1" = "{" ]]; then
@@ -237,7 +237,7 @@
                RC=0
                ;;
        esac
-    done < <($CMD list -l | grep $LIST_GREP)
+    done < <($CMD list -l | grep "$LIST_GREP")
     return $RC
 }
 
@@ -319,7 +319,7 @@
        if test "$state" != "-b---d" -a "$state" != "-----d"; then
            return 1;
        fi
-    done < <($CMD list -l | grep $LIST_GREP)
+    done < <($CMD list -l | grep "$LIST_GREP")
     return 0
 }
 
@@ -450,7 +450,7 @@
            fi
            kill $WDOG_PID >/dev/null 2>&1
        fi
-    done < <($CMD list -l | grep $LIST_GREP)
+    done < <($CMD list -l | grep "$LIST_GREP")
 
     # NB. this shuts down ALL Xen domains (politely), not just the ones in
     # AUTODIR/*
@@ -487,7 +487,7 @@
                return 0
                ;;
        esac
-    done < <($CMD list -l | grep $LIST_GREP)
+    done < <($CMD list -l | grep "$LIST_GREP")
     return 1
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/tools/libxc/xenctrl.h 
new/xen-4.3.0-testing/tools/libxc/xenctrl.h
--- old/xen-4.3.0-testing/tools/libxc/xenctrl.h 2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/tools/libxc/xenctrl.h 2013-07-09 20:57:12.000000000 
+0200
@@ -966,8 +966,8 @@
 int xc_evtchn_status(xc_interface *xch, xc_evtchn_status_t *status);
 
 /*
- * Return a handle to the event channel driver, or -1 on failure, in which case
- * errno will be set appropriately.
+ * Return a handle to the event channel driver, or NULL on failure, in
+ * which case errno will be set appropriately.
  *
  * Note:
  * After fork a child process must not use any opened xc evtchn
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/tools/libxl/libxl_pci.c 
new/xen-4.3.0-testing/tools/libxl/libxl_pci.c
--- old/xen-4.3.0-testing/tools/libxl/libxl_pci.c       2013-06-27 
23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/tools/libxl/libxl_pci.c       2013-07-09 
20:57:12.000000000 +0200
@@ -1036,6 +1036,18 @@
     int num_assigned, i, rc;
     int stubdomid = 0;
 
+    if (libxl__domain_type(gc, domid) == LIBXL_DOMAIN_TYPE_HVM) {
+        rc = xc_test_assign_device(ctx->xch, domid, pcidev_encode_bdf(pcidev));
+        if (rc) {
+            LIBXL__LOG(ctx, LIBXL__LOG_ERROR,
+                       "PCI device %04x:%02x:%02x.%u %s?",
+                       pcidev->domain, pcidev->bus, pcidev->dev, pcidev->func,
+                       errno == ENOSYS ? "cannot be assigned - no IOMMU"
+                                       : "already assigned to a different 
guest");
+            goto out;
+        }
+    }
+
     rc = libxl__device_pci_setdefault(gc, pcidev);
     if (rc) goto out;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/tools/misc/xencov.c 
new/xen-4.3.0-testing/tools/misc/xencov.c
--- old/xen-4.3.0-testing/tools/misc/xencov.c   2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/tools/misc/xencov.c   2013-07-09 20:57:12.000000000 
+0200
@@ -24,7 +24,6 @@
 #include <unistd.h>
 #include <errno.h>
 #include <err.h>
-#include <sys/mman.h>
 
 static xc_interface *gcov_xch = NULL;
 
@@ -35,16 +34,17 @@
         err(1, "opening interface");
 }
 
-int gcov_get_info(int op, struct xen_sysctl *sys, void *ptr)
+int gcov_get_info(int op, struct xen_sysctl *sys, struct xc_hypercall_buffer 
*ptr)
 {
     struct xen_sysctl_coverage_op *cov;
+    DECLARE_HYPERCALL_BUFFER_ARGUMENT(ptr);
 
     memset(sys, 0, sizeof(*sys));
     sys->cmd = XEN_SYSCTL_coverage_op;
 
     cov = &sys->u.coverage_op;
     cov->cmd = op;
-    cov->u.raw_info.p = ptr;
+    set_xen_guest_handle(cov->u.raw_info, ptr);
 
     return xc_sysctl(gcov_xch, sys);
 }
@@ -52,10 +52,8 @@
 static void gcov_read(const char *fn, int reset)
 {
     struct xen_sysctl sys;
-    unsigned page_size = sysconf(_SC_PAGESIZE);
     uint32_t total_len;
-    uint8_t *p;
-    size_t size;
+    DECLARE_HYPERCALL_BUFFER(uint8_t, p);
     FILE *f;
     int op = reset ? XEN_SYSCTL_COVERAGE_read_and_reset :
                      XEN_SYSCTL_COVERAGE_read;
@@ -71,16 +69,13 @@
         errx(1, "coverage size too big %u bytes\n", total_len);
 
     /* allocate */
-    size = total_len + page_size;
-    size -= (size % page_size);
-    p = mmap(0, size, PROT_WRITE|PROT_READ,
-             MAP_PRIVATE|MAP_ANON|MAP_LOCKED, -1, 0);
-    if ( p == (uint8_t *) -1 )
-        err(1, "mapping memory for coverage");
+    p = xc_hypercall_buffer_alloc(gcov_xch, p, total_len);
+    if ( p == NULL )
+        err(1, "allocating memory for coverage");
 
     /* get data */
     memset(p, 0, total_len);
-    if ( gcov_get_info(op, &sys, p) < 0 )
+    if ( gcov_get_info(op, &sys, HYPERCALL_BUFFER(p)) < 0 )
         err(1, "getting coverage information");
 
     /* write to a file */
@@ -94,6 +89,7 @@
         err(1, "writing coverage to file");
     if (f != stdout)
         fclose(f);
+    xc_hypercall_buffer_free(gcov_xch, p);
 }
 
 static void gcov_reset(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xen-4.3.0-testing/tools/pygrub/examples/fedora-19.grub2 
new/xen-4.3.0-testing/tools/pygrub/examples/fedora-19.grub2
--- old/xen-4.3.0-testing/tools/pygrub/examples/fedora-19.grub2 1970-01-01 
01:00:00.000000000 +0100
+++ new/xen-4.3.0-testing/tools/pygrub/examples/fedora-19.grub2 2013-07-09 
20:57:12.000000000 +0200
@@ -0,0 +1,117 @@
+#
+# DO NOT EDIT THIS FILE
+#
+# It is automatically generated by grub2-mkconfig using templates
+# from /etc/grub.d and settings from /etc/default/grub
+#
+
+### BEGIN /etc/grub.d/00_header ###
+if [ -s $prefix/grubenv ]; then
+  load_env
+fi
+if [ "${next_entry}" ] ; then
+   set default="${next_entry}"
+   set next_entry=
+   save_env next_entry
+   set boot_once=true
+else
+   set default="${saved_entry}"
+fi
+
+if [ x"${feature_menuentry_id}" = xy ]; then
+  menuentry_id_option="--id"
+else
+  menuentry_id_option=""
+fi
+
+export menuentry_id_option
+
+if [ "${prev_saved_entry}" ]; then
+  set saved_entry="${prev_saved_entry}"
+  save_env saved_entry
+  set prev_saved_entry=
+  save_env prev_saved_entry
+  set boot_once=true
+fi
+
+function savedefault {
+  if [ -z "${boot_once}" ]; then
+    saved_entry="${chosen}"
+    save_env saved_entry
+  fi
+}
+
+function load_video {
+  if [ x$feature_all_video_module = xy ]; then
+    insmod all_video
+  else
+    insmod efi_gop
+    insmod efi_uga
+    insmod ieee1275_fb
+    insmod vbe
+    insmod vga
+    insmod video_bochs
+    insmod video_cirrus
+  fi
+}
+
+terminal_output console
+set timeout=5
+### END /etc/grub.d/00_header ###
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry 'Fedora, with Linux 3.9.6-301.fc19.i686.PAE' --class fedora --class 
gnu-linux --class gnu --class os $menuentry_id_option 
'gnulinux-3.9.6-301.fc19.i686.PAE-advanced-738519ba-06da-4402-9b68-a1c1efada512'
 {
+       load_video
+       set gfxpayload=keep
+       insmod gzio
+       insmod part_msdos
+       insmod ext2
+       set root='hd0,msdos1'
+       if [ x$feature_platform_search_hint = xy ]; then
+         search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  
5001334f-de37-4b0b-bd2b-c1cea036f293
+       else
+         search --no-floppy --fs-uuid --set=root 
5001334f-de37-4b0b-bd2b-c1cea036f293
+       fi
+       linux   /vmlinuz-3.9.6-301.fc19.i686.PAE root=/dev/mapper/fedora-root 
ro rd.lvm.lv=fedora/swap rd.md=0 rd.dm=0 vconsole.keymap=us  rd.luks=0 
vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root 
+       initrd  /initramfs-3.9.6-301.fc19.i686.PAE.img
+}
+menuentry 'Fedora, with Linux 0-rescue-8d62a0261d8147dc84eb89292ebc1666' 
--class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 
'gnulinux-0-rescue-8d62a0261d8147dc84eb89292ebc1666-advanced-738519ba-06da-4402-9b68-a1c1efada512'
 {
+       load_video
+       insmod gzio
+       insmod part_msdos
+       insmod ext2
+       set root='hd0,msdos1'
+       if [ x$feature_platform_search_hint = xy ]; then
+         search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  
5001334f-de37-4b0b-bd2b-c1cea036f293
+       else
+         search --no-floppy --fs-uuid --set=root 
5001334f-de37-4b0b-bd2b-c1cea036f293
+       fi
+       linux   /vmlinuz-0-rescue-8d62a0261d8147dc84eb89292ebc1666 
root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap rd.md=0 rd.dm=0 
vconsole.keymap=us  rd.luks=0 vconsole.font=latarcyrheb-sun16 
rd.lvm.lv=fedora/root 
+       initrd  /initramfs-0-rescue-8d62a0261d8147dc84eb89292ebc1666.img
+}
+
+### END /etc/grub.d/10_linux ###
+
+### BEGIN /etc/grub.d/20_linux_xen ###
+
+### END /etc/grub.d/20_linux_xen ###
+
+### BEGIN /etc/grub.d/20_ppc_terminfo ###
+### END /etc/grub.d/20_ppc_terminfo ###
+
+### BEGIN /etc/grub.d/30_os-prober ###
+### END /etc/grub.d/30_os-prober ###
+
+### BEGIN /etc/grub.d/40_custom ###
+# This file provides an easy way to add custom menu entries.  Simply type the
+# menu entries you want to add after this comment.  Be careful not to change
+# the 'exec tail' line above.
+### END /etc/grub.d/40_custom ###
+
+### BEGIN /etc/grub.d/41_custom ###
+if [ -f  ${config_directory}/custom.cfg ]; then
+  source ${config_directory}/custom.cfg
+elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
+  source $prefix/custom.cfg;
+fi
+### END /etc/grub.d/41_custom ###
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/tools/pygrub/src/GrubConf.py 
new/xen-4.3.0-testing/tools/pygrub/src/GrubConf.py
--- old/xen-4.3.0-testing/tools/pygrub/src/GrubConf.py  2013-06-27 
23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/tools/pygrub/src/GrubConf.py  2013-07-09 
20:57:12.000000000 +0200
@@ -427,6 +427,8 @@
                 if self.commands[com] is not None:
                     if arg.strip() == "${saved_entry}":
                         arg = "0"
+                    elif arg.strip() == "${next_entry}":
+                        arg = "0"
                     setattr(self, self.commands[com], arg.strip())
                 else:
                     logging.info("Ignored directive %s" %(com,))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/Makefile 
new/xen-4.3.0-testing/xen/Makefile
--- old/xen-4.3.0-testing/xen/Makefile  2013-06-27 23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/xen/Makefile  2013-07-09 20:57:12.000000000 +0200
@@ -2,7 +2,7 @@
 # All other places this is stored (eg. compile.h) should be autogenerated.
 export XEN_VERSION       = 4
 export XEN_SUBVERSION    = 3
-export XEN_EXTRAVERSION ?= -unstable$(XEN_VENDORVERSION)
+export XEN_EXTRAVERSION ?= .0$(XEN_VENDORVERSION)
 export XEN_FULLVERSION   = $(XEN_VERSION).$(XEN_SUBVERSION)$(XEN_EXTRAVERSION)
 -include xen-version
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/arch/arm/domain_build.c 
new/xen-4.3.0-testing/xen/arch/arm/domain_build.c
--- old/xen-4.3.0-testing/xen/arch/arm/domain_build.c   2013-06-27 
23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/xen/arch/arm/domain_build.c   2013-07-09 
20:57:12.000000000 +0200
@@ -477,6 +477,7 @@
     void *fdt;
     int new_size;
     int ret;
+    paddr_t end;
 
     kinfo->unassigned_mem = dom0_mem;
 
@@ -502,17 +503,26 @@
         goto err;
 
     /*
-     * Put the device tree at the beginning of the first bank.  It
-     * must be below 4 GiB.
+     * DTB must be load below 4GiB and far enough from linux (Linux uses
+     * the space after it to decompress)
+     * Load the DTB at the end of the first bank, while ensuring it is
+     * also below 4G
      */
-    kinfo->dtb_paddr = kinfo->mem.bank[0].start + 0x100;
-    if ( kinfo->dtb_paddr + fdt_totalsize(kinfo->fdt) > (1ull << 32) )
+    end = kinfo->mem.bank[0].start + kinfo->mem.bank[0].size;
+    end = MIN(1ull << 32, end);
+    kinfo->dtb_paddr = end - fdt_totalsize(kinfo->fdt);
+    /* Align the address to 2Mb. Linux only requires 4 byte alignment */
+    kinfo->dtb_paddr &= ~((2 << 20) - 1);
+
+    if ( fdt_totalsize(kinfo->fdt) > end )
     {
-        printk("Not enough memory below 4 GiB for the device tree.");
+        printk(XENLOG_ERR "Not enough memory in the first bank for "
+               "the device tree.");
         ret = -FDT_ERR_XEN(EINVAL);
         goto err;
     }
 
+
     return 0;
 
   err:
@@ -525,6 +535,9 @@
 {
     void * __user dtb_virt = (void * __user)(register_t)kinfo->dtb_paddr;
 
+    printk("Loading dom0 DTB to 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
+           kinfo->dtb_paddr, kinfo->dtb_paddr + fdt_totalsize(kinfo->fdt));
+
     raw_copy_to_guest(dtb_virt, kinfo->fdt, fdt_totalsize(kinfo->fdt));
     xfree(kinfo->fdt);
 }
@@ -559,10 +572,12 @@
     if ( rc < 0 )
         return rc;
 
+    if ( kinfo.check_overlap )
+        kinfo.check_overlap(&kinfo);
+
     /* The following loads use the domain's p2m */
     p2m_load_VTTBR(d);
 
-    kinfo.dtb_paddr = kinfo.zimage.load_addr + kinfo.zimage.len;
     kernel_load(&kinfo);
     dtb_load(&kinfo);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/arch/arm/gic.c 
new/xen-4.3.0-testing/xen/arch/arm/gic.c
--- old/xen-4.3.0-testing/xen/arch/arm/gic.c    2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/xen/arch/arm/gic.c    2013-07-09 20:57:12.000000000 
+0200
@@ -117,12 +117,10 @@
 
 static void gic_irq_shutdown(struct irq_desc *desc)
 {
-    uint32_t enabler;
     int irq = desc->irq;
 
     /* Disable routing */
-    enabler = GICD[GICD_ICENABLER + irq / 32];
-    GICD[GICD_ICENABLER + irq / 32] = enabler | (1u << (irq % 32));
+    GICD[GICD_ICENABLER + irq / 32] = (1u << (irq % 32));
 }
 
 static void gic_irq_enable(struct irq_desc *desc)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/arch/arm/kernel.c 
new/xen-4.3.0-testing/xen/arch/arm/kernel.c
--- old/xen-4.3.0-testing/xen/arch/arm/kernel.c 2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/xen/arch/arm/kernel.c 2013-07-09 20:57:12.000000000 
+0200
@@ -12,6 +12,7 @@
 #include <xen/sched.h>
 #include <asm/byteorder.h>
 #include <asm/setup.h>
+#include <xen/libfdt/libfdt.h>
 
 #include "kernel.h"
 
@@ -64,6 +65,21 @@
     clear_fixmap(FIXMAP_MISC);
 }
 
+static void kernel_zimage_check_overlap(struct kernel_info *info)
+{
+    paddr_t zimage_start = info->zimage.load_addr;
+    paddr_t zimage_end = info->zimage.load_addr + info->zimage.len;
+    paddr_t dtb_start = info->dtb_paddr;
+    paddr_t dtb_end = info->dtb_paddr + fdt_totalsize(info->fdt);
+
+    if ( (dtb_start > zimage_end) || (dtb_end < zimage_start) )
+        return;
+
+    panic(XENLOG_ERR "The kernel(0x%"PRIpaddr"-0x%"PRIpaddr
+          ") is overlapping the DTB(0x%"PRIpaddr"-0x%"PRIpaddr")\n",
+          zimage_start, zimage_end, dtb_start, dtb_end);
+}
+
 static void kernel_zimage_load(struct kernel_info *info)
 {
     paddr_t load_addr = info->zimage.load_addr;
@@ -152,6 +168,7 @@
 
     info->entry = info->zimage.load_addr;
     info->load = kernel_zimage_load;
+    info->check_overlap = kernel_zimage_check_overlap;
 
     return 0;
 }
@@ -197,6 +214,7 @@
      */
     info->entry = info->elf.parms.virt_entry;
     info->load = kernel_elf_load;
+    info->check_overlap = NULL;
 
     if ( elf_check_broken(&info->elf.elf) )
         printk("Xen: warning: ELF kernel broken: %s\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/arch/arm/kernel.h 
new/xen-4.3.0-testing/xen/arch/arm/kernel.h
--- old/xen-4.3.0-testing/xen/arch/arm/kernel.h 2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/xen/arch/arm/kernel.h 2013-07-09 20:57:12.000000000 
+0200
@@ -38,6 +38,8 @@
     };
 
     void (*load)(struct kernel_info *info);
+    /* Callback to check overlap between the kernel and the device tree */
+    void (*check_overlap)(struct kernel_info *kinfo);
     int load_attr;
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/arch/arm/vgic.c 
new/xen-4.3.0-testing/xen/arch/arm/vgic.c
--- old/xen-4.3.0-testing/xen/arch/arm/vgic.c   2013-06-27 23:40:26.000000000 
+0200
+++ new/xen-4.3.0-testing/xen/arch/arm/vgic.c   2013-07-09 20:57:12.000000000 
+0200
@@ -88,7 +88,7 @@
         d->arch.vgic.nr_lines = 0; /* We don't need SPIs for the guest */
 
     d->arch.vgic.shared_irqs =
-        xmalloc_array(struct vgic_irq_rank, DOMAIN_NR_RANKS(d));
+        xzalloc_array(struct vgic_irq_rank, DOMAIN_NR_RANKS(d));
     d->arch.vgic.pending_irqs =
         xzalloc_array(struct pending_irq, d->arch.vgic.nr_lines);
     for (i=0; i<d->arch.vgic.nr_lines; i++)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xen-4.3.0-testing/xen/arch/x86/hvm/vmx/vvmx.c 
new/xen-4.3.0-testing/xen/arch/x86/hvm/vmx/vvmx.c
--- old/xen-4.3.0-testing/xen/arch/x86/hvm/vmx/vvmx.c   2013-06-27 
23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/xen/arch/x86/hvm/vmx/vvmx.c   2013-07-09 
20:57:12.000000000 +0200
@@ -864,6 +864,13 @@
     GUEST_SYSENTER_EIP,
 };
 
+static const u16 gpdptr_fields[] = {
+    GUEST_PDPTR0,
+    GUEST_PDPTR1,
+    GUEST_PDPTR2,
+    GUEST_PDPTR3,
+};
+
 /*
  * Context: shadow -> virtual VMCS
  */
@@ -1053,18 +1060,6 @@
                      (__get_vvmcs(vvmcs, CR4_READ_SHADOW) & cr_gh_mask);
     __vmwrite(CR4_READ_SHADOW, cr_read_shadow);
 
-    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
-         (v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
-    {
-        static const u16 gpdptr_fields[] = {
-            GUEST_PDPTR0,
-            GUEST_PDPTR1,
-            GUEST_PDPTR2,
-            GUEST_PDPTR3,
-        };
-        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
-    }
-
     /* TODO: CR3 target control */
 }
 
@@ -1159,6 +1154,10 @@
     if ( lm_l1 != lm_l2 )
         paging_update_paging_modes(v);
 
+    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
+         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
+        vvmcs_to_shadow_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
+
     regs->eip = __get_vvmcs(vvmcs, GUEST_RIP);
     regs->esp = __get_vvmcs(vvmcs, GUEST_RSP);
     regs->eflags = __get_vvmcs(vvmcs, GUEST_RFLAGS);
@@ -1294,6 +1293,10 @@
     sync_vvmcs_guest_state(v, regs);
     sync_exception_state(v);
 
+    if ( nvmx_ept_enabled(v) && hvm_pae_enabled(v) &&
+         !(v->arch.hvm_vcpu.guest_efer & EFER_LMA) )
+        shadow_to_vvmcs_bulk(v, ARRAY_SIZE(gpdptr_fields), gpdptr_fields);
+
     vmx_vmcs_switch(v->arch.hvm_vmx.vmcs, nvcpu->nv_n1vmcx);
 
     nestedhvm_vcpu_exit_guestmode(v);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/xen-4.3.0-testing/xen/drivers/passthrough/amd/pci_amd_iommu.c 
new/xen-4.3.0-testing/xen/drivers/passthrough/amd/pci_amd_iommu.c
--- old/xen-4.3.0-testing/xen/drivers/passthrough/amd/pci_amd_iommu.c   
2013-06-27 23:40:26.000000000 +0200
+++ new/xen-4.3.0-testing/xen/drivers/passthrough/amd/pci_amd_iommu.c   
2013-07-09 20:57:12.000000000 +0200
@@ -223,8 +223,19 @@
     {
         if ( amd_iommu_perdev_intremap )
         {
-            printk("AMD-Vi: Enabling per-device vector maps\n");
-            opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_PERDEV;
+            /* Per-device vector map logic is broken for devices with multiple
+             * MSI-X interrupts (and would also be for multiple MSI, if Xen
+             * supported it).
+             *
+             * Until this is fixed, use global vector tables as far as the irq
+             * logic is concerned to avoid the buggy behaviour of per-device
+             * maps in map_domain_pirq(), and use per-device tables as far as
+             * intremap code is concerned to avoid the security issue.
+             */
+            printk(XENLOG_WARNING "AMD-Vi: per-device vector map logic is 
broken.  "
+                   "Using per-device-global maps instead until a fix is 
found.\n");
+
+            opt_irq_vector_map = OPT_IRQ_VECTOR_MAP_GLOBAL;
         }
         else
         {
@@ -235,6 +246,10 @@
     else
     {
         printk("AMD-Vi: Not overriding irq_vector_map setting\n");
+
+        if ( opt_irq_vector_map != OPT_IRQ_VECTOR_MAP_GLOBAL )
+            printk(XENLOG_WARNING "AMD-Vi: per-device vector map logic is 
broken.  "
+                   "Use irq_vector_map=global to work around.\n");
     }
     if ( !amd_iommu_perdev_intremap )
         printk(XENLOG_WARNING "AMD-Vi: Using global interrupt remap table is 
not recommended (see XSA-36)!\n");

++++++ xen-watchdog.service ++++++
[Unit]
Description=Xen-watchdog - run xen watchdog daemon
After=xend.service
ConditionPathExists=/proc/xen

[Service]
Type=forking
ExecStart=/usr/sbin/xenwatchdogd 30 15
KillSignal=USR1

[Install]
WantedBy=multi-user.target
++++++ xen-xmexample.patch ++++++
--- /var/tmp/diff_new_pack.xDP8sH/_old  2013-08-01 16:10:36.000000000 +0200
+++ /var/tmp/diff_new_pack.xDP8sH/_new  2013-08-01 16:10:36.000000000 +0200
@@ -351,12 +351,3 @@
  
  The basic structure of every B<xl> command is almost always:
  
-@@ -910,8 +911,6 @@ The following is the effect of combining
- 
- =item B<-p [pool] -d>...       : Illegal
- 
--=item
--
- =back
- 
- =item B<sched-credit2> [I<OPTIONS>]

++++++ xen.sles11sp1.fate311487.xen_platform_pci.dmistring.patch ++++++
--- /var/tmp/diff_new_pack.xDP8sH/_old  2013-08-01 16:10:36.000000000 +0200
+++ /var/tmp/diff_new_pack.xDP8sH/_new  2013-08-01 16:10:36.000000000 +0200
@@ -9,10 +9,8 @@
  unmodified_drivers/linux-2.6/platform-pci/platform-pci.c |   13 +++++++++++++
  1 file changed, 13 insertions(+)
 
-Index: 
xen-4.2.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-===================================================================
---- 
xen-4.2.0-testing.orig/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
-+++ xen-4.2.0-testing/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
++++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
 @@ -27,6 +27,7 @@
  #include <linux/pci.h>
  #include <linux/init.h>
@@ -21,7 +19,7 @@
  #include <linux/interrupt.h>
  #include <linux/vmalloc.h>
  #include <linux/mm.h>
-@@ -477,6 +478,18 @@ static struct pci_device_id platform_pci
+@@ -472,6 +473,18 @@ static struct pci_device_id platform_pci
  
  MODULE_DEVICE_TABLE(pci, platform_pci_tbl);
  


++++++ xencommons-sysconfig.patch ++++++
Index: xen-4.2.0-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons
===================================================================
--- xen-4.2.0-testing.orig/tools/hotplug/Linux/init.d/sysconfig.xencommons
+++ xen-4.2.0-testing/tools/hotplug/Linux/init.d/sysconfig.xencommons
@@ -1,14 +1,30 @@
+## Path: System/Virtualization
+## Type: string
+## Default: "none"
+#
 # Log xenconsoled messages (cf xl dmesg)
 #XENCONSOLED_TRACE=[none|guest|hv|all]
 
+## Type: string
+## Default: xenstored
+#
 # Select xenstored implementation
 #XENSTORED=[oxenstored|xenstored]
 
+## Type: string
+## Default: Not defined, tracing off
+#
 # Log xenstored messages
 #XENSTORED_TRACE=[yes|on|1]
 
+## Type: string
+## Default: "/var/lib/xenstored"
+#
 # Running xenstored on XENSTORED_ROOTDIR
 #XENSTORED_ROOTDIR=/var/lib/xenstored
 
+## Type: string
+## Default: Not defined, xenbackendd debug mode off
+#
 # Running xenbackendd in debug mode
 #XENBACKENDD_DEBUG=[yes|on|1]
++++++ xencommons.service ++++++
[Unit]
Description=Xencommons - Script to start and stop xenstored and xenconsoled
ConditionPathExists=/proc/xen

[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=-/etc/init.d/xencommons start
ExecStop=/etc/init.d/xencommons stop

[Install]
WantedBy=multi-user.target
++++++ xenconsoled.service ++++++
[Unit]
Description=Xenconsoled - handles logging from guest consoles and hypervisor
After=xenstored.service
ConditionPathExists=/proc/xen

[Service]
Type=simple
Environment=XENCONSOLED_ARGS=
Environment=XENCONSOLED_LOG=none
Environment=XENCONSOLED_LOG_DIR=/var/log/xen/console
EnvironmentFile=-/etc/sysconfig/xenconsoled
PIDFile=/var/run/xenconsoled.pid
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=/usr/sbin/xenconsoled --log=${XENCONSOLED_LOG} 
--log-dir=${XENCONSOLED_LOG_DIR} $XENCONSOLED_ARGS

[Install]
WantedBy=multi-user.target
++++++ xend.service ++++++
[Unit]
Description=Xend - Starts and stops the Xen management daemon
Before=libvirtd.service libvirt-guests.service
ConditionPathExists=/proc/xen

[Service]
Type=forking
PIDFile=/var/run/xend.pid
Environment=HOME=/root
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=/usr/sbin/xend

[Install]
WantedBy=multi-user.target
++++++ xendomains.service ++++++
[Unit]
Description=Xendomains - start and stop Xen VMs on boot and shutdown
Requires=xenstored.service xenconsoled.service
After=xenstored.service xenconsoled.service
ConditionPathExists=/proc/xen

[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=-/etc/init.d/xendomains start
ExecStop=/etc/init.d/xendomains stop

[Install]
WantedBy=multi-user.target
++++++ xenstored.service ++++++
[Unit]
Description=Xenstored - daemon managing xenstore file system
Before=libvirtd.service libvirt-guests.service
RefuseManualStop=true
ConditionPathExists=/proc/xen

[Service]
Type=forking
Environment=XENSTORED_ARGS=
EnvironmentFile=-/etc/sysconfig/xenstored
PIDFile=/var/run/xenstored.pid
ExecStartPre=/bin/grep -q control_d /proc/xen/capabilities
ExecStart=/usr/sbin/xenstored --pid-file /var/run/xenstored.pid $XENSTORED_ARGS

[Install]
WantedBy=multi-user.target
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to