From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43564) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b4Xrp-0006ei-AA for qemu-devel@nongnu.org; Sun, 22 May 2016 14:12:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b4Xrk-0003iz-4v for qemu-devel@nongnu.org; Sun, 22 May 2016 14:12:44 -0400 Received: from mout.web.de ([212.227.17.12]:52513) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b4Xrj-0003iu-Pq for qemu-devel@nongnu.org; Sun, 22 May 2016 14:12:40 -0400 References: <1463912514-12658-1-git-send-email-davidkiarie4@gmail.com> <1463912514-12658-2-git-send-email-davidkiarie4@gmail.com> From: Jan Kiszka Message-ID: <5741F689.9040108@web.de> Date: Sun, 22 May 2016 20:12:25 +0200 MIME-Version: 1.0 In-Reply-To: <1463912514-12658-2-git-send-email-davidkiarie4@gmail.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="B5nU0b4tDJ5p8N53mxfsIF5i8jrm9xAFI" Subject: Re: [Qemu-devel] [V11 1/4] hw/i386: Introduce AMD IOMMU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Kiarie , qemu-devel@nongnu.org Cc: mst@redhat.com, marcel@redhat.com, peterx@redhat.com, valentine.sinitsyn@gmail.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --B5nU0b4tDJ5p8N53mxfsIF5i8jrm9xAFI From: Jan Kiszka To: David Kiarie , qemu-devel@nongnu.org Cc: mst@redhat.com, marcel@redhat.com, peterx@redhat.com, valentine.sinitsyn@gmail.com Message-ID: <5741F689.9040108@web.de> Subject: Re: [V11 1/4] hw/i386: Introduce AMD IOMMU References: <1463912514-12658-1-git-send-email-davidkiarie4@gmail.com> <1463912514-12658-2-git-send-email-davidkiarie4@gmail.com> In-Reply-To: <1463912514-12658-2-git-send-email-davidkiarie4@gmail.com> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: quoted-printable On 2016-05-22 12:21, David Kiarie wrote: > +static void amdvi_page_walk(AMDVIAddressSpace *as, uint64_t *dte, > + IOMMUTLBEntry *ret, unsigned perms, > + hwaddr addr) > +{ > + unsigned level, present, pte_perms, oldlevel; > + uint64_t pte =3D dte[0], pte_addr, page_mask; > + > + /* make sure the DTE has TV =3D 1 */ > + if (pte & AMDVI_DEV_TRANSLATION_VALID) { > + level =3D get_pte_translation_mode(pte); > + if (level >=3D 7) { > + AMDVI_DPRINTF(MMU, "error: translation level 0x%"PRIu8 " d= etected" > + " while translating 0x%"PRIx64, level, addr)= ; > + return; > + } > + if (level =3D=3D 0) { > + goto no_remap; > + } > + > + /* we are at the leaf page table or page table encodes a huge = page */ > + while (level > 0) { > + pte_perms =3D amdvi_get_perms(pte); > + present =3D pte & 1; > + if (!present || perms !=3D (perms & pte_perms)) { > + amdvi_page_fault(as->iommu_state, as->devfn, addr, per= ms); > + AMDVI_DPRINTF(CUSTOM, "error: page fault accessing vir= tual " > + "addr 0x%"PRIx64, addr); > + return; > + } > + > + /* go to the next lower level */ > + pte_addr =3D pte & AMDVI_DEV_PT_ROOT_MASK; > + /* add offset and load pte */ > + pte_addr +=3D ((addr >> (3 + 9 * level)) & 0x1FF) << 3; > + pte =3D ldq_phys(&address_space_memory, pte_addr); I think this should be address_space_ldq_le. ldq_phys is for usage by CPUs only (and it breaks the build over master). Jan --B5nU0b4tDJ5p8N53mxfsIF5i8jrm9xAFI 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 iEYEARECAAYFAldB9owACgkQitSsb3rl5xT2bQCg06YmGBE0vTmfBcg9qHTNDHjQ +ewAnA36RCM6RfxI5evPxgr97U9GoGU/ =Fueh -----END PGP SIGNATURE----- --B5nU0b4tDJ5p8N53mxfsIF5i8jrm9xAFI--