On 2/6/07, Alex Williamson <alex.williamson@xxxxxx> wrote:
On Tue, 2007-02-06 at 06:27 +0100, Tristan Gingold wrote:
> > >(XEN) lookup_domain_mpa: d 0xf000000007af4080 id 1 current
> > >0xf000000007ac8000 i0
> > >(XEN) lookup_domain_mpa: bad mpa 0xffffc09e279 (=> 0x1fff4000)
> > >(XEN) Warning: UC to WB for mpaddr=ffffc09e279
> > >(XEN) lookup_domain_mpa: d 0xf000000007af4080 id 1 current
> > >0xf000000007ac8000 i0
> DomU was trying to access lpt2.
Perhaps we should be less verbose about I/O port space accesses.
Unfortunately it's pretty normal for an OS to do some poking in port
space. Something like the patch below would help reduce the noise.
Thanks,
Don't get me wrong, I like verboseness especially when an OS is trying
to do something that xen doesn't support yet, this helped quite a bit
in debugging what was going on.
Even though I'm a bit confused as to why this would cause a domU to
hang forever. I built the domU with some custom filesystems that
aren't in the default kernel, those filesystems happen to grab lots of
memory from the kernel. Why might something like this cause the domU
to hang? (when I say hang I mean stop, no console output no oopse or
bugs nothing from xen from the console, can't ping, everything just
stopped).
Alex
Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
---
diff -r b3ae332e6dbd xen/arch/ia64/xen/mm.c
--- a/xen/arch/ia64/xen/mm.c Tue Feb 06 09:28:07 2007 -0700
+++ b/xen/arch/ia64/xen/mm.c Tue Feb 06 11:26:16 2007 -0700
@@ -525,7 +525,9 @@ u64 translate_domain_pte(u64 pteval, u64
This can happen when domU tries to touch i/o
port space. Also prevents possible address
aliasing issues. */
- printk("Warning: UC to WB for mpaddr=%lx\n", mpaddr);
+ if (!(mpaddr - IO_PORTS_PADDR < IO_PORTS_SIZE))
+ gdprintk(XENLOG_WARNING, "Warning: UC to WB "
+ "for mpaddr=%lx\n", mpaddr);
pteval = (pteval & ~_PAGE_MA_MASK) | _PAGE_MA_WB;
}
break;
@@ -690,7 +692,6 @@ unsigned long lookup_domain_mpa(struct d
if (pte != NULL) {
pte_t tmp_pte = *pte;// pte is volatile. copy the value.
if (pte_present(tmp_pte)) {
-//printk("lookup_domain_page: found mapping for %lx,
pte=%lx\n",mpaddr,pte_val(*pte));
if (entry != NULL)
p2m_entry_set(entry, pte, tmp_pte);
return pte_val(tmp_pte);
@@ -698,14 +699,24 @@ unsigned long lookup_domain_mpa(struct d
return GPFN_INV_MASK;
}
- printk("%s: d 0x%p id %d current 0x%p id %d\n",
- __func__, d, d->domain_id, current, current->vcpu_id);
- if (mpaddr < d->arch.convmem_end)
- printk("%s: non-allocated mpa 0x%lx (< 0x%lx)\n", __func__,
- mpaddr, d->arch.convmem_end);
- else
- printk("%s: bad mpa 0x%lx (=> 0x%lx)\n", __func__,
- mpaddr, d->arch.convmem_end);
+ if (mpaddr < d->arch.convmem_end) {
+ gdprintk(XENLOG_WARNING, "d 0x%p id %d current 0x%p id %d\n",
+ d, d->domain_id, current, current->vcpu_id);
+ gdprintk(XENLOG_WARNING, "non-allocated mpa 0x%lx (< 0x%lx)\n",
+ mpaddr, d->arch.convmem_end);
+ } else if (mpaddr - IO_PORTS_PADDR < IO_PORTS_SIZE) {
+ /* Log I/O port probing, but complain less loudly about it */
+ gdprintk(XENLOG_INFO, "d 0x%p id %d current 0x%p id %d\n",
+ d, d->domain_id, current, current->vcpu_id);
+ gdprintk(XENLOG_INFO, "bad mpa 0x%lx (=> 0x%lx)\n",
+ mpaddr, d->arch.convmem_end);
+ } else {
+ gdprintk(XENLOG_WARNING, "d 0x%p id %d current 0x%p id %d\n",
+ d, d->domain_id, current, current->vcpu_id);
+ gdprintk(XENLOG_WARNING, "bad mpa 0x%lx (=> 0x%lx)\n",
+ mpaddr, d->arch.convmem_end);
+ }
+
if (entry != NULL)
p2m_entry_set(entry, NULL, __pte(0));
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|