On 1/24/07, Avi Kivity <[EMAIL PROTECTED]> wrote:
> roucaries bastien wrote:
> >
> > It seems yes (10 boots).
>
> Good.  I'll commit the patch.
>
> > Nethertheless I think it is time to report
> > another bug (present without this patch therefore unrelated).
> > Unfortunatly I have no trace because it crash my machine and I do not
> > manage to find it.
> >
> > If I booot my debian guest with framebuffer activated after 20s to 15
> > minutes I see on my host screen a cloud of colorfull pixel. These
> > pixel flash and seems related to guest frame buffer (same colors
> > scheme but because it not the same resolution I can't read it). About
> > 3s latter my box crash and is dead (cap lock does not even toggles the
> > keyboard led). Therefore it seems that the guest achieve to write the
> > host memory :-(, the good point is that he does not poke to my hard
> > drive registers.
> >
> > This behavior is 100% reproductible. If I run the host and I switch to
> > the text console I can't even get a trace because the screen is
> > corrupted.
>
>
> You can start the guest in vnc mode (-vnc 1), so the host can remain in
> text mode, or use netconsole.
The problem is not switching between x and console but read the oops
because kvm write to video mem :-(. And I do not think netconsole
could help because my computer does not answer to irq, I suspect
something nasty. The only think that could help is nmi watchdog but
unfortunatly the bios declare timer interupt as XT-pic and not io-apic
(bios bug forwaded to asus), therefore no nmi.

Moreover I try vnc switch and kvm is stable, stange isn't.

To reproduce:
- use an preempt host kernel on amd64, kvm compiled as x86_64
- install a testing debian on a guest using sdl display, use
framebuffer install (default)
- wait....
- when you see colorfull pixel on the top of your sceen, kill kvm
(kill only accelerate the crash)
- wait 1s
- kernel will crash

I suspect I am seeing this colorfull pixel because I use a vesa driver
on X and the guest write to it. But I do not understand why because
lspci of guest say:
00:02.0 VGA compatible controller: Cirrus Logic GD 5446 (prog-if 00 [VGA])
        Flags: bus master, fast devsel, latency 0
        Memory at e0000000 (32-bit, prefetchable) [size=32M]
        Memory at e2000000 (32-bit, non-prefetchable) [size=4K]
and host:
02:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce Go
7600] (rev a1) (prog-if 00 [VGA])
        Subsystem: ASUSTeK Computer Inc. Unknown device 1322
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at de000000 (32-bit, non-prefetchable) [size=16M]
        Memory at c0000000 (64-bit, prefetchable) [size=256M]
        Memory at dd000000 (64-bit, non-prefetchable) [size=16M]

Memory resources do not overlap and other guest device are pio driven.
I do not understand this kind of crash. Any idea?

Thank you for your time

bastien

>
> Alternatively, please post exact instructions for reproducing.
>
>
>
> >> Index: paging_tmpl.h
> >> ===================================================================
> >> --- paging_tmpl.h       (revision 4320)
> >> +++ paging_tmpl.h       (working copy)
> >> @@ -443,31 +443,17 @@
> >> static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
> >> {
> >        struct guest_walker walker;
> > -       pt_element_t guest_pte;
> > -       gpa_t gpa;
> > +       gpa_t gpa = UNMAPPED_GVA;
> > +       int r;
> >
> > -       FNAME(walk_addr)(&walker, vcpu, vaddr, 0, 0, 0);
> > -       guest_pte = *walker.ptep;
> > -       FNAME(release_walker)(&walker);
> > +       r = FNAME(walk_addr)(&walker, vcpu, vaddr, 0, 0, 0);
> >
> > -       if (!is_present_pte(guest_pte))
> > -               return UNMAPPED_GVA;
> > -
> > -       if (walker.level == PT_DIRECTORY_LEVEL) {
> > -               ASSERT((guest_pte & PT_PAGE_SIZE_MASK));
> > -               ASSERT(PTTYPE == 64 || is_pse(vcpu));
> > -
> > -               gpa = (guest_pte & PT_DIR_BASE_ADDR_MASK) | (vaddr &
> > -                       (PT_LEVEL_MASK(PT_PAGE_TABLE_LEVEL) |
> > ~PAGE_MASK));
> > -
> > -               if (PTTYPE == 32 && is_cpuid_PSE36())
> > -                       gpa |= (guest_pte & PT32_DIR_PSE36_MASK) <<
> > -                                       (32 - PT32_DIR_PSE36_SHIFT);
> > -       } else {
> > -               gpa = (guest_pte & PT_BASE_ADDR_MASK);
> > -               gpa |= (vaddr & ~PAGE_MASK);
> > +       if (r) {
> > +               gpa = (gpa_t)walker.gfn << PAGE_SHIFT;
> > +               gpa |= vaddr & ~PAGE_MASK;
> >        }
> >
> > +       FNAME(release_walker)(&walker);
> >        return gpa;
> > }
>
>
> --
> error compiling committee.c: too many arguments to function
>
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to