From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [Qemu-devel] [PATCH 16/23] ioport: register ranges by byte aligned addresses always Date: Tue, 26 Jul 2011 13:59:58 +0300 Message-ID: <4E2E9E2E.7050404@redhat.com> References: <1311602584-23409-1-git-send-email-avi@redhat.com> <1311602584-23409-17-git-send-email-avi@redhat.com> <4E2DC209.9070103@codemonkey.ws> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org To: Anthony Liguori Return-path: Received: from mx1.redhat.com ([209.132.183.28]:24021 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752414Ab1GZLAF (ORCPT ); Tue, 26 Jul 2011 07:00:05 -0400 In-Reply-To: <4E2DC209.9070103@codemonkey.ws> Sender: kvm-owner@vger.kernel.org List-ID: On 07/25/2011 10:20 PM, Anthony Liguori wrote: > On 07/25/2011 09:02 AM, Avi Kivity wrote: >> The I/O port space is byte addressable, even for word and long accesses. >> >> An example is the VMware svga card, which has long ports on offsets 0, >> 1, and 2. >> >> Signed-off-by: Avi Kivity > > I've always thought this was odd but didn't know of a specific > circumstance where it broke a device. > > This was a big problem with the old API. Devices don't register their > interest in specific sizes. They may ignore certain size accesses but > that's a device specific behavior. In fact there's on counterexample - 440FX consumes dword accesses on port cf8 but forwards byte and word accesses to the PCI bus. This cannot be implemented with the current API (it requires the opaque to be equal for all word sizes). The new API doesn't support it either; if we need to, we can re-issue the access but using the PCI address space instead of the root I/O address space. (of course this is purely theoretical) -- error compiling committee.c: too many arguments to function