# HG changeset patch
# User emellor@ewan
# Node ID 41b1f86628a043fe273fbe62203fc679a5014bdc
# Parent 82e8a1d7230fbbbd3128880e0914aef11658a432
# Parent b20219e27f92473589263d89576e1b045f3d1f6a
Merge.
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c Fri Sep 30
09:48:49 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/process.c Fri Sep 30
09:50:19 2005
@@ -129,6 +129,7 @@
* race between pending interrupts and restoration of handler.
*/
#ifdef CONFIG_SMP
+ local_irq_enable(); /* XXX Needed for smp_resume(). Clean me up. */
smp_resume();
#endif
cpu_set(smp_processor_id(), cpu_online_map);
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/arch/xen/i386/kernel/smpboot.c
--- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/smpboot.c Fri Sep 30
09:48:49 2005
+++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/smpboot.c Fri Sep 30
09:50:19 2005
@@ -446,27 +446,6 @@
static int cpucount;
-
-static irqreturn_t ldebug_interrupt(
- int irq, void *dev_id, struct pt_regs *regs)
-{
- return IRQ_HANDLED;
-}
-
-static DEFINE_PER_CPU(int, ldebug_irq);
-static char ldebug_name[NR_CPUS][15];
-
-void ldebug_setup(void)
-{
- int cpu = smp_processor_id();
-
- per_cpu(ldebug_irq, cpu) = bind_virq_to_irq(VIRQ_DEBUG);
- sprintf(ldebug_name[cpu], "ldebug%d", cpu);
- BUG_ON(request_irq(per_cpu(ldebug_irq, cpu), ldebug_interrupt,
- SA_INTERRUPT, ldebug_name[cpu], NULL));
-}
-
-
extern void local_setup_timer(void);
/*
@@ -484,7 +463,6 @@
while (!cpu_isset(smp_processor_id(), smp_commenced_mask))
rep_nop();
local_setup_timer();
- ldebug_setup();
smp_intr_init();
local_irq_enable();
/*
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/arch/xen/kernel/reboot.c
--- a/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c Fri Sep 30 09:48:49 2005
+++ b/linux-2.6-xen-sparse/arch/xen/kernel/reboot.c Fri Sep 30 09:50:19 2005
@@ -95,6 +95,8 @@
return -EOPNOTSUPP;
}
#endif
+
+ xenbus_suspend();
preempt_disable();
#ifdef CONFIG_SMP
@@ -140,8 +142,6 @@
}
#endif
- xenbus_suspend();
-
gnttab_suspend();
#ifdef __i386__
@@ -187,10 +187,6 @@
irq_resume();
- xencons_resume();
-
- xenbus_resume();
-
time_resume();
#ifdef CONFIG_SMP
@@ -199,6 +195,10 @@
#endif
__sti();
+
+ xencons_resume();
+
+ xenbus_resume();
#ifdef CONFIG_SMP
out_reenable_cpus:
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c Fri Sep 30
09:48:49 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c Fri Sep 30
09:50:19 2005
@@ -771,11 +771,14 @@
virt_to_mfn(&phys_to_machine_mapping[i]);
}
HYPERVISOR_shared_info->arch.max_pfn = max_pfn;
-
-
-
-
-
+ }
+
+ if ( ! (xen_start_info->flags & SIF_INITDOMAIN))
+ {
+ acpi_disabled = 1;
+#ifdef CONFIG_ACPI_BOOT
+ acpi_ht = 0;
+#endif
}
#endif
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c
--- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c Fri Sep 30
09:48:49 2005
+++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/smpboot.c Fri Sep 30
09:50:19 2005
@@ -445,25 +445,6 @@
}
#ifdef CONFIG_XEN
-static irqreturn_t ldebug_interrupt(
- int irq, void *dev_id, struct pt_regs *regs)
-{
- return IRQ_HANDLED;
-}
-
-static DEFINE_PER_CPU(int, ldebug_irq);
-static char ldebug_name[NR_CPUS][15];
-
-void ldebug_setup(void)
-{
- int cpu = smp_processor_id();
-
- per_cpu(ldebug_irq, cpu) = bind_virq_to_irq(VIRQ_DEBUG);
- sprintf(ldebug_name[cpu], "ldebug%d", cpu);
- BUG_ON(request_irq(per_cpu(ldebug_irq, cpu), ldebug_interrupt,
- SA_INTERRUPT, ldebug_name[cpu], NULL));
-}
-
extern void local_setup_timer(void);
#endif
@@ -498,7 +479,6 @@
enable_APIC_timer();
#else
local_setup_timer();
- ldebug_setup();
smp_intr_init();
local_irq_enable();
#endif
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c Fri Sep 30
09:48:49 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/tpmfront/tpmfront.c Fri Sep 30
09:50:19 2005
@@ -293,9 +293,9 @@
tp->tx = NULL;
}
- if (tpm->irq)
+ if (tp->irq)
unbind_evtchn_from_irqhandler(tp->irq, NULL);
- tp->evtchn = tpm->irq = 0;
+ tp->evtchn = tp->irq = 0;
}
diff -r 82e8a1d7230f -r 41b1f86628a0
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c Fri Sep 30
09:48:49 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c Fri Sep 30
09:50:19 2005
@@ -650,7 +650,6 @@
int err = 0;
/* Initialize xenstore comms unless already done. */
- printk("store_evtchn = %i\n", xen_start_info->store_evtchn);
err = xs_init();
if (err) {
printk("XENBUS: Error initializing xenstore comms:"
diff -r 82e8a1d7230f -r 41b1f86628a0 tools/debugger/gdb/README
--- a/tools/debugger/gdb/README Fri Sep 30 09:48:49 2005
+++ b/tools/debugger/gdb/README Fri Sep 30 09:50:19 2005
@@ -20,10 +20,18 @@
To debug a running guest:
1. Use 'xm list' to discover its domain id ($domid).
- 2. Run 'gdbserver-xen 127.0.0.1:9999 --attach $domid'
- 3. Run 'gdb /path/to/vmlinux-syms-2.6.xx-xenU'
+ 2. Run 'gdbserver-xen 127.0.0.1:9999 --attach $domid'.
+ 3. Run 'gdb /path/to/vmlinux-syms-2.6.xx-xenU'.
4. From within the gdb client session:
# directory /path/to/linux-2.6.xx-xenU [*]
# target remote 127.0.0.1:9999
# bt
# disass
+
+To debug a crashed guest:
+ 1. Add '(enable-dump yes)' to /etc/xen/xend-config.sxp before
+ starting xend.
+ 2. When the domain crashes, a core file is written to
+ '/var/xen/dump/<domain-name>.<domain-id>.core'.
+ 3. Run 'gdbserver-xen 127.0.0.1:9999 --file <core-file>'.
+ 4. Connect to the server as for a running guest.
diff -r 82e8a1d7230f -r 41b1f86628a0 xen/arch/x86/shadow32.c
--- a/xen/arch/x86/shadow32.c Fri Sep 30 09:48:49 2005
+++ b/xen/arch/x86/shadow32.c Fri Sep 30 09:50:19 2005
@@ -1836,7 +1836,7 @@
}
#endif
- FSH_LOG("%s(gpfn=%lx, mfn=%lx) c=%08x t=%08x", __func__,
+ FSH_LOG("%s(gpfn=%lx, mfn=%lx) c=%08x t=%08lx", __func__,
gpfn, mfn, page->count_info, page->u.inuse.type_info);
// XXX this will require some more thought... Cross-domain sharing and
@@ -3017,7 +3017,7 @@
l1_pgentry_t guest_pte = *p_guest_pte;
l1_pgentry_t shadow_pte = *p_shadow_pte;
l1_pgentry_t snapshot_pte = p_snapshot_pte ? *p_snapshot_pte : l1e_empty();
- l1_pgentry_t eff_guest_pte;
+ l1_pgentry_t eff_guest_pte = l1e_empty();
unsigned long mask, eff_guest_pfn, eff_guest_mfn, shadow_mfn;
int errors = 0, guest_writable;
int page_table_page;
@@ -3074,7 +3074,7 @@
if ( (l1e_get_flags(shadow_pte) & _PAGE_RW ) && !guest_writable )
{
- printk("eff_guest_pfn=%lx eff_guest_mfn=%lx shadow_mfn=%lx t=0x%08x
page_table_page=%d\n",
+ printk("eff_guest_pfn=%lx eff_guest_mfn=%lx shadow_mfn=%lx t=%lx
page_table_page=%d\n",
eff_guest_pfn, eff_guest_mfn, shadow_mfn,
frame_table[eff_guest_mfn].u.inuse.type_info,
page_table_page);
@@ -3085,7 +3085,7 @@
(l1e_get_flags(shadow_pte) & _PAGE_RW ) &&
!(guest_writable && (l1e_get_flags(eff_guest_pte) & _PAGE_DIRTY)) )
{
- printk("eff_guest_pfn=%lx eff_guest_mfn=%lx shadow_mfn=%lx t=0x%08x
page_table_page=%d\n",
+ printk("eff_guest_pfn=%lx eff_guest_mfn=%lx shadow_mfn=%lx t=%lx
page_table_page=%d\n",
eff_guest_pfn, eff_guest_mfn, shadow_mfn,
frame_table[eff_guest_mfn].u.inuse.type_info,
page_table_page);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|