From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hollis Blanchard Subject: Re: Virtio_pci in kernel ignore endian of PCI I/O space? Date: Tue, 02 Sep 2008 09:15:56 -0500 Message-ID: <1220364956.26357.33.camel@localhost.localdomain> References: Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Cc: kvm-ppc@vger.kernel.org, kvm To: Liu Yu-B13201 Return-path: Received: from e33.co.us.ibm.com ([32.97.110.151]:38316 "EHLO e33.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751121AbYIBOQL (ORCPT ); Tue, 2 Sep 2008 10:16:11 -0400 In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: On Tue, 2008-09-02 at 15:29 +0800, Liu Yu-B13201 wrote: > Hollis, > > I noticed fuction virtio_blk_update_config() (qemu/hw/virtio-blk.c) in > qemu > updated the virtio disk's capacity in little endian. > But virtblk_probe() (drivers/block/virtio_blk.c) in kernel read the > capacity from I/O space without convertion. Sigh, I don't remember why this works any more. There was discussion on this on kvm-ppc-devel in April (unfortunately it was right at the month line, so the threading is broken, but see e.g. http://marc.info/?l=kvm-ppc&m=120716463602156), and ultimately cpu_to_le64() was added to qemu. However, a couple weeks later, the swapping that the kernel was doing was removed (see http://thread.gmane.org/gmane.linux.kernel.virtualization/5776/focus=5801). However, the code is actually working today on 440 (and reporting a sane number of blocks). Also, this patch (http://article.gmane.org/gmane.linux.kernel.virtualization/6126/match=virtio%5fblk+fix+endianess+annotations) suggests that struct virtio_blk_config is no longer LE, so I'm thinking your problem must be in qemu. AFAICS the kernel is basically just doing memcpy in a few places. > Since E500 is big endian, this bring the misunderstanding between qemu > and guest. What are you using for PCI emulation in qemu? I don't think it should matter in this case, since the kernel is doing 1-byte reads in vp_get(), but endianness gets very convoluted wherever qemu is involved. :( -- Hollis Blanchard IBM Linux Technology Center