qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] virtio breakage with 2.6.25 guest kernel


From: Mark McLoughlin
Subject: Re: [Qemu-devel] virtio breakage with 2.6.25 guest kernel
Date: Tue, 13 Jan 2009 13:48:28 +0000

Hi Alex,

(Dropping address@hidden - it's address@hidden now anyway)

On Tue, 2009-01-13 at 14:33 +0100, Alexander Graf wrote:

> while I don't fully understand the problem, here's what I experience so far:
> 
> When using an openSUSE 11.0 kernel (2.6.25) in the guest, virtio on tap
> breaks with current KVM git, while it used to work before (haven't
> bisected, definitely worked in kvm-78, but is probably due to Anthony's
> rewrite). It shows the following message (comes from qemu):
> 
> virtio-net header not in first element
> 
> This is because qemu expects a message with mergeable rx bufs (12
> bytes), but if I see things correctly the old kernel doesn't support
> that feature (sends 10 bytes). I put in some debug messages on IO
> reads/writes in the qemu virtio handler and got these:
> 
> virtio IO read: 0 = 0x100bba3
> virtio IO write: 0x4 = 0x100bba3
> virtio: setting features 0x100bba3
> 
> So I believe the feature masking is somewhat non-functional? Or did I
> read the masking code in qemu's virtio-net wrong?
> 
> Basically for me, current KVM git broke old guest support, which is a
> clear regression and should not happen. Does anybody with more expertise
> in virtio want to take on this?

Yeah, I noticed this one last week.

The issue here is that 2.6.25 virtio erroneously says it supports all
features supported by the host - i.e. it's a guest kernel bug.

With recent qemu, that causes us to enable mergeable receive buffers and
the guest barfs. See:

        mask = ioread32(vp_dev->ioaddr + VIRTIO_PCI_HOST_FEATURES);
        if (mask & (1 << bit)) {
                mask |= (1 << bit);
                iowrite32(mask, vp_dev->ioaddr + VIRTIO_PCI_GUEST_FEATURES);

This got fixed in 2.6.26 by:

  
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c45a6816

I did consider forwarding this to address@hidden, but apparently
the 2.6.25.x series is finished now anyway.

Cheers,
Mark.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]