Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Jul 2013 18:51:14 -0600
From:      Chris Torek <torek@torek.net>
To:        Neel Natu <neelnatu@gmail.com>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, freebsd-hackers@freebsd.org, kib@freebsd.org, alc@freebsd.org
Subject:   Re: expanding amd64 past the 1TB limit
Message-ID:  <201307150051.r6F0pEKj032863@elf.torek.net>
In-Reply-To: Your message of "Thu, 11 Jul 2013 00:41:38 -0700." <CAFgRE9HycyTL-Mch9KF08Df6qFzzCTb-aU0AkKQhi7F5gtGevA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
>The changes associated with pt_p, pd_p and p4_p are cosmetic and IMHO
>detract from the meat of the change.
>
>My preference would be for the cosmetic changes to be committed
>separately from the changes that rearrange the KVA.

I can split these out.

>> -       DMPDPphys = allocpages(firstaddr, NDMPML4E);
>> +       ndmpdpphys = howmany(ndmpdp, NPML4EPG);
>
>NPDPEPG should be used here instead of NPML4EPG even though they are
>numerically identical.

Ah, late-night editing thinko. :-)

>> + * KERNBASE.  Similarly, if KMPL4I < (base+N), extra level 4 PDEs are
>
>level 2 PDE's, right?

Er, yes (and L1s of course), and that should be < (base+N-1).

The idea here is that if for some reason KERNBASE were "in the
middle" of the NKPML4E entries, you'd have, at least initially
when only a few things are valid at VM_MIN_ADDRESS and at
KERNBASE:

             L4 table    L3 page              ... mapping:
            +-------+                         VM_MIN_KERNEL_ADDRESS
  KPMLBASE  |   * ---> [valid at 0 --> L2, then all-0s]
            +-------+
            |   * ---> [all-0s]
            +-------+
            |   * ---> [all-0s]
            +-------+
            |  ...  |
            +-------+                         KERNBASE
    KPML4I  |   * ---> [mostly-0s; the KDPDI'th --> L2]
            +-------+
  base+N-1  |   * ---> [all-0s]
            +-------+                         VM_MAX_KERNEL_ADDRESS

but then eventually allocating something between KERNBASE and
VM_MAX_KERNEL_ADDRESS would cause that last page of "all-0s" to
get filled in, etc.  Of course KPML4I should be the very last
(511'th) L4 table entry always, unless the kernel grows really
huge :-)

I'll fix the comments in the split-up patch.

Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307150051.r6F0pEKj032863>