From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49101) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ui3nE-0007M3-Cp for qemu-devel@nongnu.org; Thu, 30 May 2013 10:25:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ui3n9-0001vW-K0 for qemu-devel@nongnu.org; Thu, 30 May 2013 10:25:28 -0400 Date: Thu, 30 May 2013 10:25:02 -0400 From: Luiz Capitulino Message-ID: <20130530102502.68546308@redhat.com> In-Reply-To: <51A760A8.3050307@suse.de> References: <20130528141922.135a6dd0@redhat.com> <20130530085932.5db02527@redhat.com> <51A75122.9020305@redhat.com> <20130530091645.08e47dbb@redhat.com> <51A75DD4.8070908@suse.de> <20130530101427.698e1d0d@redhat.com> <51A760A8.3050307@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] walk_pml4e(): fix abort on bad PML4E/PDPTE/PDE/PTE addresses List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas =?UTF-8?B?RsOkcmJlcg==?= Cc: qiaonuohan@cn.fujitsu.com, Laszlo Ersek , qemu-stable@nongnu.org, qemu-devel On Thu, 30 May 2013 16:22:32 +0200 Andreas F=C3=A4rber wrote: > Am 30.05.2013 16:14, schrieb Luiz Capitulino: > > On Thu, 30 May 2013 16:10:28 +0200 > > Andreas F=C3=A4rber wrote: > >=20 > >> Am 30.05.2013 15:16, schrieb Luiz Capitulino: > >>> On Thu, 30 May 2013 15:16:18 +0200 > >>> Laszlo Ersek wrote: > >>> > >>>> On 05/30/13 14:59, Luiz Capitulino wrote: > >>>>> On Tue, 28 May 2013 14:19:22 -0400 > >>>>> Luiz Capitulino wrote: > >>>>> > >>>>>> The code used to walk IA-32e page-tables, and possibly PAE page-ta= bles, > >>>>>> uses the bit mask ~0xfff to get the next PML4E/PDPTE/PDE/PTE addre= ss. > >>>>>> > >>>>>> However, as we use a uint64_t to store the resulting address, that= mask > >>>>>> gets expanded to 0xfffffffffffff000 which not only ends up selecti= ng > >>>>>> reserved bits but also selects the XD bit (execute-disable) which > >>>>>> happens to be enabled by Windows 8, causing qemu_get_ram_ptr() to = abort. > >>>>>> > >>>>>> This commit fixes that problem by replacing ~0xfff by a correct ma= sk > >>>>>> that only selects the address bit range (ie. bits 51:12). > >>>>>> > >>>>>> Signed-off-by: Luiz Capitulino > >>>>> > >>>>> Ping? Wen? > >>>>> > >>>>> Would be nice get a Reviewed-by before merging... > >>>> > >>>> I didn't miss your submission and did find it OK, I just felt unsure > >>>> about stating so, because "simple" patches like this are prime terri= tory > >>>> to burn someone's R-b's worth (ie. to expose a reviewer's lack of > >>>> information / experience). But hey, what can I lose? The patch does = look > >>>> good to me, so > >>> > >>> Thank you Laszlo! It's also new territory for me, that's why I'm aski= ng > >>> for reviews (otherwise I'd just sneak it in some pull request :-) > >> > >> Luiz, you aware aware that I have another fix by Nuohan queued that > >> seemed orthogonal? > >=20 > > Yes, they should be orthogonal. > >=20 > >> If someone reviews my refactoring series (which > >> resent that patch) I would like to send out a PULL for that rather soo= n, > >> since it blocks further CPU work. I would then include your fix as well > >> to avoid merge conflicts. > >=20 > > Thanks, although I was going to include it in my tomorrow's QMP pull > > request. Will this disturb your work? >=20 > I hope not - could you then please pick up Nuohan's bugfix as well? Sure. > Still I'd be interested in your review - and I have one more patch to > add that I created offline yesterday wrt first paging-enabled CPU. You can CC me.