From owner-svn-src-head@freebsd.org Tue Apr 18 13:46:02 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E5407D441DE; Tue, 18 Apr 2017 13:46:02 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5D466362; Tue, 18 Apr 2017 13:46:02 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id v3IDjuxI026851 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 18 Apr 2017 16:45:56 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua v3IDjuxI026851 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id v3IDjurb026849; Tue, 18 Apr 2017 16:45:56 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Tue, 18 Apr 2017 16:45:56 +0300 From: Konstantin Belousov To: Dexuan Cui Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" , Sepherosa Ziehau , Hongjiang Zhang Subject: Re: svn commit: r316767 - head/sys/amd64/amd64 Message-ID: <20170418134556.GY1788@kib.kiev.ua> References: <201704131549.v3DFnt9I004050@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.8.0 (2017-02-23) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Apr 2017 13:46:03 -0000 On Tue, Apr 18, 2017 at 12:41:09PM +0000, Dexuan Cui wrote: > > From: owner-svn-src-head@freebsd.org [mailto:owner-svn-src- > > head@freebsd.org] On Behalf Of Konstantin Belousov > > Sent: Thursday, April 13, 2017 23:50 > > > > Author: kib > > Date: Thu Apr 13 15:49:55 2017 > > New Revision: 316767 > > URL: > > > > Log: > > Map DMAP as nx. > > > > Demotions preserve PG_NX, so it is enough to set nx bit for initial > > lowest-level paging entries. > > > > Modified: > > head/sys/amd64/amd64/pmap.c > > Hi kib, > Unluckily this patch breaks Hyper-V VM: > > In dev/hyperv/vmbus/hyperv.c: hypercall_create() we allocate one > page and pass its physical address to the hypervisor, which initializes > the page with executable code. > > Later in dev/hyperv/vmbus/hyperv.c: hypercall_post_message(), we > "call" the executable code in the above page. > > Now with NX, the "call" gets a fault and as a result FreeBSD VM > can't boot on Hyper-V. > > It looks memory allocated by bus_dmamem_alloc() and malloc() > is not executable now. > > What else can we use? > I guess we can only use contigmalloc() or kmem_malloc() to > get a page that can be executable and use vtophys() to get its > physical address? Yes, the kmem_malloc() is considered to be a suitable substitution for regular malloc(9) if the executable mapping is needed. See r317072 for a similar fix for the same issue.