From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Meneghel Rodrigues Subject: Re: [PATCH kvm-unit-test] get memory size from fwcfg Date: Mon, 11 Feb 2013 14:13:09 -0200 Message-ID: <51191895.5050007@redhat.com> References: <20130211131032.GA7837@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, mtosatti@redhat.com To: Gleb Natapov Return-path: Received: from mx1.redhat.com ([209.132.183.28]:43545 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757839Ab3BKQNN (ORCPT ); Mon, 11 Feb 2013 11:13:13 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r1BGDDUS014272 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 11 Feb 2013 11:13:13 -0500 In-Reply-To: <20130211131032.GA7837@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 02/11/2013 11:10 AM, Gleb Natapov wrote: > Upstream test device does not implement port 0xd1. I remember sending a similar patch a while ago, but it seems like it didn't get applied. One thing that does occur to me - we will have to keep testing RHEL5, RHEL6 and Fedora with their old test devices. This change seems backwards compatible, since instead of using port 0xd1 we're getting RAM size from the firmware, which should work for both cases. Given all that, this patch looks good to me. ACK. Reviewed-by: Lucas Meneghel Rodrigues > Signed-off-by: Gleb Natapov > diff --git a/lib/x86/vm.c b/lib/x86/vm.c > index 71b70fd..2852c6c 100644 > --- a/lib/x86/vm.c > +++ b/lib/x86/vm.c > @@ -1,3 +1,4 @@ > +#include "fwcfg.h" > #include "vm.h" > #include "libcflat.h" > > @@ -185,16 +186,9 @@ static void setup_mmu(unsigned long len) > printf("cr4 = %x\n", read_cr4()); > } > > -static unsigned int inl(unsigned short port) > -{ > - unsigned int val; > - asm volatile("inl %w1, %0" : "=a"(val) : "Nd"(port)); > - return val; > -} > - > void setup_vm() > { > - end_of_memory = inl(0xd1); > + end_of_memory = fwcfg_get_u64(FW_CFG_RAM_SIZE); > free_memory(&edata, end_of_memory - (unsigned long)&edata); > setup_mmu(end_of_memory); > } > diff --git a/x86/rmap_chain.c b/x86/rmap_chain.c > index 9add9b8..0df1bcb 100644 > --- a/x86/rmap_chain.c > +++ b/x86/rmap_chain.c > @@ -1,6 +1,7 @@ > /* test long rmap chains */ > > #include "libcflat.h" > +#include "fwcfg.h" > #include "vm.h" > #include "smp.h" > > @@ -21,7 +22,7 @@ int main (void) > > setup_vm(); > > - nr_pages = inl(0xd1) / PAGE_SIZE; > + nr_pages = fwcfg_get_u64(FW_CFG_RAM_SIZE) / PAGE_SIZE; > nr_pages -= 1000; > target_page = alloc_page(); > > -- > Gleb. >