<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/asm-x86/pgtable_64.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-03T18:02:44Z</updated>
<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: add pgd_large() on 64-bit, for consistency</title>
<updated>2008-02-19T15:18:32Z</updated>
<author>
<name>H. Peter Anvin</name>
</author>
<published>2008-02-19T15:18:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e00fc542eb694e448249361ef63c190e74f53574'/>
<id>urn:sha1:e00fc542eb694e448249361ef63c190e74f53574</id>
<content type='text'>
In order to have it at all levels, add pgd_large() which only
returns 0.

Signed-off-by: H. Peter Anvin &lt;hpa@zytor.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: zap invalid and unused pmds in early boot</title>
<updated>2008-02-18T19:54:14Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-02-15T16:29:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=31eedd823c1bf3650c450346a0d0c39431034eb9'/>
<id>urn:sha1:31eedd823c1bf3650c450346a0d0c39431034eb9</id>
<content type='text'>
The early boot code maps KERNEL_TEXT_SIZE (currently 40MB) starting
from __START_KERNEL_map. The kernel itself only needs _text to _end
mapped in the high alias. On relocatible kernels the ASM setup code
adjusts the compile time created high mappings to the relocation. This
creates invalid pmd entries for negative offsets:

0xffffffff80000000 -&gt; pmd entry: ffffffffff2001e3
It points outside of the physical address space and is marked present.

This starts at the virtual address __START_KERNEL_map and goes up to
the point where the first valid physical address (0x0) is mapped.

Zap the mappings before _text and after _end right away in early
boot. This removes also the invalid entries.

Furthermore it simplifies the range check for high aliases.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&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: remove now unused clear_kernel_mapping</title>
<updated>2008-02-04T15:48:08Z</updated>
<author>
<name>Andi Kleen</name>
</author>
<published>2008-02-04T15:48:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bde1965ce8c63e17cc284e1af616c85aba483f11'/>
<id>urn:sha1:bde1965ce8c63e17cc284e1af616c85aba483f11</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: 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: clean up arch/x86/mm/pageattr.c</title>
<updated>2008-01-30T12:34:04Z</updated>
<author>
<name>Ingo Molnar</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=e4b71dcf54fa90fc30fb901bbce7e38a46467af7'/>
<id>urn:sha1:e4b71dcf54fa90fc30fb901bbce7e38a46467af7</id>
<content type='text'>
do some leftover cleanups in the now unified arch/x86/mm/pageattr.c
file.

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: introduce native_set_pte_atomic() on 64-bit too</title>
<updated>2008-01-30T12:34:01Z</updated>
<author>
<name>Ingo Molnar</name>
</author>
<published>2008-01-30T12:34:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b65e6390fb99ca93877ffc1c84e93c857f32dafc'/>
<id>urn:sha1:b65e6390fb99ca93877ffc1c84e93c857f32dafc</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>
</feed>
