<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.linux-mips.org/mediawiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.linux-mips.org/wiki?title=Highmem&amp;feed=atom&amp;action=history</id>
		<title>Highmem - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.linux-mips.org/wiki?title=Highmem&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;action=history"/>
		<updated>2013-05-24T05:21:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=10368&amp;oldid=prev</id>
		<title>Vomlehn: /* Problems */</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=10368&amp;oldid=prev"/>
				<updated>2008-04-04T23:35:29Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Problems&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 23:35, 4 April 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;resize &lt;/del&gt;in lowmem; this can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;reside &lt;/ins&gt;in lowmem; this can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While creation and teardown of mappings already are a significant overhead, the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While creation and teardown of mappings already are a significant overhead, the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vomlehn</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=10291&amp;oldid=prev</id>
		<title>Ralf: /* Problems */</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=10291&amp;oldid=prev"/>
				<updated>2008-02-14T12:22:24Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Problems&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:22, 14 February 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Problems ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Problems ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one 32-byte (i.e. sizeof (struct page)) entry per [[Page_size|page]] of memory.&amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Entries &lt;/del&gt;are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one 32-byte (i.e. sizeof (struct page)) entry per [[Page_size|page]] of memory.&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;On Linux&amp;amp;nbsp;2.4 struct page used to be ''twice'' as large.&amp;#160; &lt;/ins&gt;are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=10290&amp;oldid=prev</id>
		<title>Vomlehn: /* Problems */</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=10290&amp;oldid=prev"/>
				<updated>2008-02-14T00:11:44Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Problems&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 00:11, 14 February 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Problems ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Problems ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;64&lt;/del&gt;-byte entry per [[Page_size|page]] of memory.&amp;#160; Entries are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;32&lt;/ins&gt;-byte &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(i.e. sizeof (struct page)) &lt;/ins&gt;entry per [[Page_size|page]] of memory.&amp;#160; Entries are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vomlehn</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=9614&amp;oldid=prev</id>
		<title>Vomlehn: /* Problems */</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=9614&amp;oldid=prev"/>
				<updated>2007-12-14T22:15:17Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Problems&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:15, 14 December 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; this can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; this can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While creation and teardown of mappings already are a significant overhead the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While creation and teardown of mappings already are a significant overhead&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/ins&gt;the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vomlehn</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=9613&amp;oldid=prev</id>
		<title>Vomlehn: /* Problems */</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=9613&amp;oldid=prev"/>
				<updated>2007-12-14T22:14:25Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Problems&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:14, 14 December 2007&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 10:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/del&gt;can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;this &lt;/ins&gt;can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While creation and teardown of mappings already are a significant overhead the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;While creation and teardown of mappings already are a significant overhead the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vomlehn</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=8347&amp;oldid=prev</id>
		<title>Ralf: Fix link to &quot;Page size&quot; page.</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=8347&amp;oldid=prev"/>
				<updated>2006-08-29T13:54:00Z</updated>
		
		<summary type="html">&lt;p&gt;Fix link to &amp;quot;Page size&amp;quot; page.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:54, 29 August 2006&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Problems ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Problems ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one 64-byte entry per [[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pagesize&lt;/del&gt;|page]] of memory.&amp;#160; Entries are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one 64-byte entry per [[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Page_size&lt;/ins&gt;|page]] of memory.&amp;#160; Entries are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=6212&amp;oldid=prev</id>
		<title>Ralf at 12:28, 5 November 2004</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=6212&amp;oldid=prev"/>
				<updated>2004-11-05T12:28:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:28, 5 November 2004&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== See Also ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Jaguar ATX]] for some creative abuse of the kernel's highmem facilities.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=97&amp;oldid=prev</id>
		<title>Ralf at 12:26, 5 November 2004</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=97&amp;oldid=prev"/>
				<updated>2004-11-05T12:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:26, 5 November 2004&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; the can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; the can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;While creation and teardown of mappings already are a significant overhead the cacheflushes necessary to deal with [[cache aliases]] would dwarf that.&amp;#160; Therefore Linux/MIPS supports highmem only on systems that don't suffer from cache aliases.&amp;#160; A highmem kernel will boot on such a system but only use the lowmem.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=96&amp;oldid=prev</id>
		<title>Ralf: /* Problems */</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=96&amp;oldid=prev"/>
				<updated>2004-11-05T09:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Problems&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:51, 5 November 2004&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Certain systems where memory may be outside the low 4GB physical address space will need to enable support for 64-bit physical addresses in pagetables also.&amp;#160; This will nearly double the size of pagetables.&amp;#160; Again pagetables resize in lowmem; the can be a large consumer of lowmem for system that make heavy use of mmap.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Alternatives ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	<entry>
		<id>//www.linux-mips.org/wiki?title=Highmem&amp;diff=94&amp;oldid=prev</id>
		<title>Ralf at 09:48, 5 November 2004</title>
		<link rel="alternate" type="text/html" href="http://www.linux-mips.org/wiki?title=Highmem&amp;diff=94&amp;oldid=prev"/>
				<updated>2004-11-05T09:48:04Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:48, 5 November 2004&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Memory Managment on Linux/MIPS ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Memory Managment on Linux/MIPS ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;32-bit Linux/MIPS kernels assume the entire low memory to be accessible through KSEG0 which limits lowmem to at most 512MB.&amp;#160; Typical MIPS systems reserve part of that address space for other uses so a lowmem limit of 256MB is a common value.&amp;#160; Memory beyond that can be used by 64-bit kernels or 32-bit kernels with highmem support enabled.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;32-bit Linux/MIPS kernels assume the entire low memory to be accessible through KSEG0 which limits lowmem to at most 512MB.&amp;#160; Typical MIPS systems reserve part of that address space for other uses so a lowmem limit of 256MB is a common value.&amp;#160; Memory beyond that can be used by 64-bit kernels or 32-bit kernels with highmem support enabled.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== Problems ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Linux allocates a large array named mem_map[] in lowmem.&amp;#160; On 32-bit kernels it contains one 64-byte entry per [[pagesize|page]] of memory.&amp;#160; Entries are allocated even for reserved memory ranges.&amp;#160; This consumption of lowmem means memory pressure on lowmem will rise with the amount of highmem.&amp;#160; In practice at most a ratio of 1:4 to 1:8 has been found to perform well.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Highmem is accessed through temporary mappings.&amp;#160; Creation and teardown of such mappings are are not for free and mappings are only permitted to exist for a short time.&amp;#160; This means any kernel software using highmem needs to be written with special care or performance and stability of the entire system are at stake.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== Alternatives ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;64-bit kernels use XKPHYS to access their lowmem.&amp;#160; Due to the size of XKPHYS the entire physical memory is directly accessible so highmem isn't needed with 64-bit kernels.&amp;#160; 64-bit kernels have somewhat larger code and data resulting in a slight slowdown.&amp;#160; This however is by far preferable over the impact of highmem.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ralf</name></author>	</entry>

	</feed>