From owner-freebsd-arch@FreeBSD.ORG Wed Sep 24 12:27:34 2014 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0DEF0456 for ; Wed, 24 Sep 2014 12:27:34 +0000 (UTC) Received: from mail-qg0-x22f.google.com (mail-qg0-x22f.google.com [IPv6:2607:f8b0:400d:c04::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C5283234 for ; Wed, 24 Sep 2014 12:27:33 +0000 (UTC) Received: by mail-qg0-f47.google.com with SMTP id z107so5832062qgd.34 for ; Wed, 24 Sep 2014 05:27:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=tjvLRvh+OU6At2W0C840Us81+mvhZoQBiOWFSD7E7bI=; b=zX1ksxPR0gaXoW14s3JWaD7bPNBJrFvOY64F0u5HRzj4yjirrfyiRedjXoUm1yP2nL Q/2OK3V+g7yEQXnuHyLYBoCDO24KU5Zpid2HptKHuiTKZTuOqFlM7ex8tXIUAYQ2ROlT 5ck5P7g91dtYWXnijUN2lHpm48DaGr7p4U1+FIZy9A4Bq/IVfhb2J90QA8a+zbAUCUoz lSImOxY3f40HhDmB1cxoaJMWUi87ySL40N7qKD2tsqE4YUX6k8Z68jQMvXQd9iTWnGD7 JbfRpySR4q8lwN5b7NzvPvxJ8Z+WMW8/zjWvWWAYNbZRmnaDuES+pU+mUz2aaTjoptKL AUhQ== MIME-Version: 1.0 X-Received: by 10.229.100.68 with SMTP id x4mr8240965qcn.29.1411561652949; Wed, 24 Sep 2014 05:27:32 -0700 (PDT) Received: by 10.140.23.242 with HTTP; Wed, 24 Sep 2014 05:27:32 -0700 (PDT) Date: Wed, 24 Sep 2014 14:27:32 +0200 Message-ID: Subject: vm_page_array and VM_PHYSSEG_SPARSE From: Svatopluk Kraus To: freebsd-arch@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.18-1 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Sep 2014 12:27:34 -0000 Hi, I and Michal are finishing new ARM pmap-v6 code. There is one problem we've dealt with somehow, but now we would like to do it better. It's about physical pages which are allocated before vm subsystem is initialized. While later on these pages could be found in vm_page_array when VM_PHYSSEG_DENSE memory model is used, it's not true for VM_PHYSSEG_SPARSE memory model. And ARM world uses VM_PHYSSEG_SPARSE model. It really would be nice to utilize vm_page_array for such preallocated physical pages even when VM_PHYSSEG_SPARSE memory model is used. Things could be much easier then. In our case, it's about pages which are used for level 2 page tables. In VM_PHYSSEG_SPARSE model, we have two sets of such pages. First ones are preallocated and second ones are allocated after vm subsystem was inited. We must deal with each set differently. So code is more complex and so is debugging. Thus we need some method how to say that some part of physical memory should be included in vm_page_array, but the pages from that region should not be put to free list during initialization. We think that such possibility could be utilized in general. There could be a need for some physical space which: (1) is needed only during boot and later on it can be freed and put to vm subsystem, (2) is needed for something else and vm_page_array code could be used without some kind of its duplication. There is already some code which deals with blacklisted pages in vm_page.c file. So the easiest way how to deal with presented situation is to add some callback to this part of code which will be able to either exclude whole phys_avail[i], phys_avail[i+1] region or single pages. As the biggest phys_avail region is used for vm subsystem allocations, there should be some more coding. (However, blacklisted pages are not dealt with on that part of region.) We would like to know if there is any objection: (1) to deal with presented problem, (2) to deal with the problem presented way. Some help is very appreciated. Thanks Svatopluk Kraus