From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:50734) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5KE9-00059E-3t for qemu-devel@nongnu.org; Sun, 18 Sep 2011 12:28:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R5KE7-0001OV-OQ for qemu-devel@nongnu.org; Sun, 18 Sep 2011 12:28:21 -0400 Received: from fmmailgate01.web.de ([217.72.192.221]:59906) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R5KE7-0001OM-9M for qemu-devel@nongnu.org; Sun, 18 Sep 2011 12:28:19 -0400 Message-ID: <4E761C20.4040609@web.de> Date: Sun, 18 Sep 2011 18:28:16 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <4E75E7A4.50702@web.de> <4E75E96E.90101@web.de> <4E761051.9000204@redhat.com> <4E76119F.5040004@web.de> <4E761220.3080707@redhat.com> In-Reply-To: <4E761220.3080707@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigCA69AE06F3C4EFF0B8309113" Sender: jan.kiszka@web.de Subject: Re: [Qemu-devel] [PATCH v2 1/2] memory: Fix old portio word accesses List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: qemu-devel , Richard Henderson This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigCA69AE06F3C4EFF0B8309113 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable On 2011-09-18 17:45, Avi Kivity wrote: > On 09/18/2011 06:43 PM, Jan Kiszka wrote: >> On 2011-09-18 17:37, Avi Kivity wrote: >> > On 09/18/2011 03:51 PM, Jan Kiszka wrote: >> >> From: Jan Kiszka >> >> >> >> As we register old portio regions via ioport_register, we are also= >> >> responsible for providing the word access wrapper. >> >> >> >> Signed-off-by: Jan Kiszka >> >> --- >> >> >> >> Oops, was lacking a shift for word reads. >> >> >> >> memory.c | 10 ++++++++++ >> >> 1 files changed, 10 insertions(+), 0 deletions(-) >> >> >> >> diff --git a/memory.c b/memory.c >> >> index b3ee232..aef4702 100644 >> >> --- a/memory.c >> >> +++ b/memory.c >> >> @@ -397,6 +397,11 @@ static void memory_region_iorange_read(IORang= e >> >> *iorange, >> >> *data =3D ((uint64_t)1<< (width * 8)) - 1; >> >> if (mrp) { >> >> *data =3D mrp->read(mr->opaque, offset + mr->offset)= ; >> >> + } else if (width =3D=3D 2) { >> >> + mrp =3D find_portio(mr, offset, 1, false); >> >> + assert(mrp); >> >> + *data =3D mrp->read(mr->opaque, offset + mr->offset) = | >> >> + (mrp->read(mr->opaque, offset + mr->offset + >> >> 1)<< 8); >> >> } >> > >> > What about width 4? >> >> This is PIO, limited by the x86 address space to 16 bit. Will add a >> comment. >=20 > x86 PIO is not limited to 16 bits, just ISA, which memory.c knows > nothing about. Confused address and data, the former is limited 16, the latter can be 32 as well. But I guess only ISA models made use of the core's split up service, and that's why QEMU limited itself accordingly. >=20 >> > Why not use access_with_adjusted_size()? >> >> Because of different accessor prototypes. >> >=20 > Can be thunked. There is a different issue, a_w_a_s() can use small > accesses to emulate large ones, but not vice versa. It needs fixing > anyway. >=20 IIRC, that's a feature: Devices not implementing small accesses tend to refuse them in reality. Jan --------------enigCA69AE06F3C4EFF0B8309113 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk52HCAACgkQitSsb3rl5xQO+gCfeS5SvmTYcOvJBPBUPQ8s/Dt3 0ssAoKDycWzDUFR/FvG4KSgK4WbiIh6N =tm9j -----END PGP SIGNATURE----- --------------enigCA69AE06F3C4EFF0B8309113--