<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/asm-x86/pgtable_32.h, branch linux-2.6.25.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.25.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.25.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-03-11T16:11:55Z</updated>
<entry>
<title>x86: remove quicklists</title>
<updated>2008-03-11T16:11:55Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-03-09T12:14:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=985a34bd75cc8c96e43f00dcdda7c3fdb51a3026'/>
<id>urn:sha1:985a34bd75cc8c96e43f00dcdda7c3fdb51a3026</id>
<content type='text'>
quicklists cause a serious memory leak on 32-bit x86,
as documented at:

  http://bugzilla.kernel.org/show_bug.cgi?id=9991

the reason is that the quicklist pool is a special-purpose
cache that grows out of proportion. It is not accounted for
anywhere and users have no way to even realize that it's
the quicklists that are causing RAM usage spikes. It was
supposed to be a relatively small pool, but as demonstrated
by KOSAKI Motohiro, they can grow as large as:

  Quicklists:    1194304 kB

given how much trouble this code has caused historically,
and given that Andrew objected to its introduction on x86
(years ago), the best option at this point is to remove them.

[ any performance benefits of caching constructed pgds should
  be implemented in a more generic way (possibly within the page
  allocator), while still allowing constructed pages to be
  allocated by other workloads. ]

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>Revert "x86: fix pmd_bad and pud_bad to support huge pages"</title>
<updated>2008-03-03T18:02:44Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2008-03-03T18:02:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a345b4ba2086bacc63884e5d72268415a97bcbff'/>
<id>urn:sha1:a345b4ba2086bacc63884e5d72268415a97bcbff</id>
<content type='text'>
This reverts commit cded932b75ab0a5f9181ee3da34a0a488d1a14fd.

Arjan bisected down a boot-time hang to this, saying:
  ".. it prevents the kernel to finish booting on my (Penryn based)
   laptop.  The boot stops right after freeing the init memory."

and while it's not clear exactly what triggers it, at this stage we're
better off just reverting it while Ingo tries to figure out what went
wrong.

Requested-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Cc: Hans Rosenfeld &lt;hans.rosenfeld@amd.com&gt;
Cc: Nish Aravamudan &lt;nish.aravamudan@gmail.com&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>x86: fix pmd_bad and pud_bad to support huge pages</title>
<updated>2008-02-29T17:55:39Z</updated>
<author>
<name>Hans Rosenfeld</name>
</author>
<published>2008-02-18T17:10:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cded932b75ab0a5f9181ee3da34a0a488d1a14fd'/>
<id>urn:sha1:cded932b75ab0a5f9181ee3da34a0a488d1a14fd</id>
<content type='text'>
I recently stumbled upon a problem in the support for huge pages. If a
program using huge pages does not explicitly unmap them, they remain
mapped (and therefore, are lost) after the program exits.

I observed that the free huge page count in /proc/meminfo decreased when
running my program, and it did not increase after the program exited.
After running the program a few times, no more huge pages could be
allocated.

The reason for this seems to be that the x86 pmd_bad and pud_bad
consider pmd/pud entries having the PSE bit set invalid. I think there
is nothing wrong with this bit being set, it just indicates that the
lowest level of translation has been reached. This bit has to be (and
is) checked after the basic validity of the entry has been checked, like
in this fragment from follow_page() in mm/memory.c:

  if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
          goto no_page_table;

  if (pmd_huge(*pmd)) {
          BUG_ON(flags &amp; FOLL_GET);
          page = follow_huge_pmd(mm, address, pmd, flags &amp; FOLL_WRITE);
          goto out;
  }

Note that this code currently doesn't work as intended if the pmd refers
to a huge page, the pmd_huge() check can not be reached if the page is
huge.

Extending pmd_bad() (and, for future 1GB page support, pud_bad()) to
allow for the PSE bit being set fixes this. For similar reasons,
allowing the NX bit being set is necessary, too. I have seen huge pages
having the NX bit set in their pmd entry, which would cause the same
problem.

Signed-Off-By: Hans Rosenfeld &lt;hans.rosenfeld@amd.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>x86: construct 32-bit boot time page tables in native format.</title>
<updated>2008-02-09T22:24:09Z</updated>
<author>
<name>Ian Campbell</name>
</author>
<published>2008-02-09T22:24:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=551889a6e2a24a9c06fd453ea03b57b7746ffdc0'/>
<id>urn:sha1:551889a6e2a24a9c06fd453ea03b57b7746ffdc0</id>
<content type='text'>
Specifically the boot time page tables in a CONFIG_X86_PAE=y enabled
kernel are in PAE format.

early_ioremap is updated to use the standard page table accessors.

Clear any mappings beyond max_low_pfn from the boot page tables in
native_pagetable_setup_start because the initial mappings can extend
beyond the range of physical memory and into the vmalloc area.

Derived from patches by Eric Biederman and H. Peter Anvin.

[ jeremy@goop.org: PAE swapper_pg_dir needs to be page-sized fix ]

Signed-off-by: Ian Campbell &lt;ijc@hellion.org.uk&gt;
Cc: H. Peter Anvin &lt;hpa@zytor.com&gt;
Cc: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Cc: Andi Kleen &lt;andi@firstfloor.org&gt;
Cc: Mika PenttilÃÂ¤ &lt;mika.penttila@kolumbus.fi&gt;
Cc: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>i386: Resolve dependency of asm-i386/pgtable.h on highmem.h</title>
<updated>2008-02-05T17:44:14Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2008-02-05T06:28:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0b7a96114bd5991d355a1f1c1d3d9c0c9d9c1cfc'/>
<id>urn:sha1:0b7a96114bd5991d355a1f1c1d3d9c0c9d9c1cfc</id>
<content type='text'>
pgtable.h does not include highmem.h but uses various constants from
highmem.h.  We cannot include highmem.h because highmem.h will in turn include
many other include files that also depend on pgtable.h

So move the definitions from highmem.h into pgtable.h.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>x86: add pgtable accessor functions for gbpages</title>
<updated>2008-02-04T15:48:09Z</updated>
<author>
<name>Andi Kleen</name>
</author>
<published>2008-02-04T15:48:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=61e19a347ad4bcdda615ef77ef9c3e656e254f3d'/>
<id>urn:sha1:61e19a347ad4bcdda615ef77ef9c3e656e254f3d</id>
<content type='text'>
Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>x86: use the same pgd_list for PAE and 64-bit</title>
<updated>2008-01-30T12:34:11Z</updated>
<author>
<name>Jeremy Fitzhardinge</name>
</author>
<published>2008-01-30T12:34:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e3ed910db221768f8fd6192b13373e17d61bcdf0'/>
<id>urn:sha1:e3ed910db221768f8fd6192b13373e17d61bcdf0</id>
<content type='text'>
Use a standard list threaded through page-&gt;lru for maintaining the pgd
list on PAE.  This is the same as 64-bit, and seems saner than using a
non-standard list via page-&gt;index.

Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>x86: don't special-case pmd allocations as much</title>
<updated>2008-01-30T12:34:11Z</updated>
<author>
<name>Jeremy Fitzhardinge</name>
</author>
<published>2008-01-30T12:34:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6194ba6ff6ccf8d5c54c857600843c67aa82c407'/>
<id>urn:sha1:6194ba6ff6ccf8d5c54c857600843c67aa82c407</id>
<content type='text'>
In x86 PAE mode, stop treating pmds as a special case.  Previously
they were always allocated and freed with the pgd.  The modifies the
code to be the same as 64-bit mode, where they are allocated on
demand.

This is a step on the way to unifying 32/64-bit pagetable allocation
as much as possible.

There is a complicating wart, however.  When you install a new
reference to a pmd in the pgd, the processor isn't guaranteed to see
it unless you reload cr3.  Since reloading cr3 also has the
side-effect of flushing the tlb, this is an expense that we want to
avoid whereever possible.

This patch simply avoids reloading cr3 unless the update is to the
current pagetable.  Later patches will optimise this further.

Signed-off-by: Jeremy Fitzhardinge &lt;jeremy@xensource.com&gt;
Cc: Andi Kleen &lt;ak@suse.de&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: H. Peter Anvin &lt;hpa@zytor.com&gt;
Cc: William Irwin &lt;wli@holomorphy.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>x86: clean up lookup_address() declarations</title>
<updated>2008-01-30T12:34:04Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-01-30T12:34:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0a663088cd6ff9e89f285ae7689e6eee46cfb54c'/>
<id>urn:sha1:0a663088cd6ff9e89f285ae7689e6eee46cfb54c</id>
<content type='text'>
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>x86: remove set_kernel_exec()</title>
<updated>2008-01-30T12:33:53Z</updated>
<author>
<name>Andi Kleen</name>
</author>
<published>2008-01-30T12:33:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=934d15854d04e8ca2495d8f5698164df990d5d66'/>
<id>urn:sha1:934d15854d04e8ca2495d8f5698164df990d5d66</id>
<content type='text'>
The SMP trampoline always runs in real mode, so making it executable
in the page tables doesn't make much sense because it executes
before page tables are set up. That was the only user of
set_kernel_exec(). Remove set_kernel_exec().

Signed-off-by: Andi Kleen &lt;ak@suse.de&gt;
Acked-by: Jan Beulich &lt;jbeulich@novell.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
</feed>
