<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.jackslab.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.jackslab.org/index.php?action=history&amp;feed=atom&amp;title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013%3A_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0</id>
		<title>捉虫日记 0013: insmod failed on RMI XLR 最初现象的精确重现 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.jackslab.org/index.php?action=history&amp;feed=atom&amp;title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013%3A_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0"/>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;action=history"/>
		<updated>2026-09-11T06:57:18Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.19.2</generator>

	<entry>
		<id>http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=18583&amp;oldid=prev</id>
		<title>Comcat：/* 分析 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=18583&amp;oldid=prev"/>
				<updated>2025-12-04T03:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;分析&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 valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←上一版本&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;2025年12月4日 (四) 03:47的版本&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第299行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第299行：&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;== Reference ==&lt;/ins&gt;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* [[GNU/Linux 内核移植捉虫笔记 (Linux Kernel Debug Notes)]]&lt;/ins&gt;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&amp;#160;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&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;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&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;&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=18582&amp;oldid=prev</id>
		<title>Comcat：/* Reference */</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=18582&amp;oldid=prev"/>
				<updated>2025-12-04T03:47:37Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Reference&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 valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←上一版本&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;2025年12月4日 (四) 03:47的版本&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第235行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第235行：&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;108:&amp;#160; &amp;#160; 00000000&amp;#160; &amp;#160;  nop&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;108:&amp;#160; &amp;#160; 00000000&amp;#160; &amp;#160;  nop&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;&amp;lt;/pre&amp;gt;&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;&amp;lt;/pre&amp;gt;&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== Reference ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;* [[GNU/Linux 内核移植捉虫笔记 (Linux Kernel Debug Notes)]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=18581&amp;oldid=prev</id>
		<title>Comcat：/* 缘起 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=18581&amp;oldid=prev"/>
				<updated>2025-12-04T03:47:29Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;缘起&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 valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←上一版本&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;2025年12月4日 (四) 03:47的版本&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第235行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第235行：&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;108:&amp;#160; &amp;#160; 00000000&amp;#160; &amp;#160;  nop&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;108:&amp;#160; &amp;#160; 00000000&amp;#160; &amp;#160;  nop&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;&amp;lt;/pre&amp;gt;&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;&amp;lt;/pre&amp;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;&amp;lt;br&amp;gt;&amp;lt;br&amp;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;&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;== Reference ==&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;* [[GNU/Linux 内核移植捉虫笔记 (Linux Kernel Debug Notes)]]&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&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;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=2299&amp;oldid=prev</id>
		<title>Comcat：以“== 缘起 ==  这个问题的最终原因终于找到：PCI IDE 驱动在不经意间将位于物理地址 0x0 处的 TLB Refill handler 修改了，且改动的很...”为内容创建页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/index.php?title=%E6%8D%89%E8%99%AB%E6%97%A5%E8%AE%B0_0013:_insmod_failed_on_RMI_XLR_%E6%9C%80%E5%88%9D%E7%8E%B0%E8%B1%A1%E7%9A%84%E7%B2%BE%E7%A1%AE%E9%87%8D%E7%8E%B0&amp;diff=2299&amp;oldid=prev"/>
				<updated>2014-05-19T09:05:17Z</updated>
		
		<summary type="html">&lt;p&gt;以“== 缘起 ==  这个问题的最终原因终于找到：PCI IDE 驱动在不经意间将位于物理地址 0x0 处的 TLB Refill handler 修改了，且改动的很...”为内容创建页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 缘起 ==&lt;br /&gt;
&lt;br /&gt;
这个问题的最终原因终于找到：PCI IDE 驱动在不经意间将位于物理地址 0x0 处的 TLB Refill handler 修改了，且改动的很小就 0x1 和 0x3 处的 2 个字节。&lt;br /&gt;
&lt;br /&gt;
最初的现象是这样：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mounting local filesystems: [ OK ]&lt;br /&gt;
Enabling /etc/fstab swaps: [ OK ]&lt;br /&gt;
CPU 0 Unable to handle kernel paging request at virtual address 0000000000000000, epc == ffffffff800000d0, ra == ffffffff80000008&lt;br /&gt;
Oops[#1]:&lt;br /&gt;
Cpu 0&lt;br /&gt;
$ 0   : 0000000000000000 000000002aab0748 0000000000000000 ffffff0000000000&lt;br /&gt;
$ 4   : c000000000000000 000000002aaaa000 0000000000011d88 ffffffffffffffbf&lt;br /&gt;
$ 8   : 7f454c4602020100 0000000000000000 0001000800000001 0000000000000000&lt;br /&gt;
$12   : 0000000000000000 ffffffff834056fc ffffffff83485048 0000000000002af8&lt;br /&gt;
$16   : 000000002aaaa000 0000000000006748 000000002aaaa000 0000000000417148&lt;br /&gt;
$20   : c000000000000000 0000000000417100 0000000000417330 000000002aaaa000&lt;br /&gt;
$24   : 0000000000000008 ffffffff835e2710                                 &lt;br /&gt;
$28   : a800000126710000 a800000126713d20 000000000041733c ffffffff80000008&lt;br /&gt;
Hi    : 0000000000000007&lt;br /&gt;
Lo    : 0000000000000001&lt;br /&gt;
epc   : ffffffff800000d0 0xffffffff800000d0&lt;br /&gt;
    Not tainted&lt;br /&gt;
ra    : ffffffff80000008 0xffffffff80000008&lt;br /&gt;
Status: 10005ce3    KX SX UX KERNEL EXL IE&lt;br /&gt;
Cause : 00808008&lt;br /&gt;
BadVA : 0000000000000000&lt;br /&gt;
PrId : 000c0b04 (RMI Phoenix)&lt;br /&gt;
Modules linked in:&lt;br /&gt;
Process modprobe (pid: 1573, threadinfo=a800000126710000, task=a8000001266aafe8, tls=000000002aaafec0)&lt;br /&gt;
Stack : a800000126716710 a8000001265e2438 a8000001265e23f0 a8000001265e2dc8&lt;br /&gt;
        a8000001265e3150 a8000001265e3140 a8000001265587c0 0000000000007000&lt;br /&gt;
        a8000001265e2dc8 ffffffff834b25e8 0000000000007000 ffffffff8340fb68&lt;br /&gt;
        a8000001276686c0 ffffffff834bdcec a800000127668598 a8000001265e3140&lt;br /&gt;
        000000002aaaa000 a8000001265e3150 a8000001265e23f0 0000000008100073&lt;br /&gt;
        a8000001265587c0 ffffffff834bfb3c 0000000000000000 0000000000000003&lt;br /&gt;
        0000000000000000 ffffffff8340ff98 a800000127668598 000000002aaaa000&lt;br /&gt;
        a800000126725380 ffffffff836169e8 0000000010005ce1 a800000126558824&lt;br /&gt;
        000000002aaaa000 a800000126725380 0000000000006748 0000000000417148&lt;br /&gt;
        000000002aaaa000 ffffffff838c0000 0000000000000000 0000000000417100&lt;br /&gt;
        ...&lt;br /&gt;
Call Trace:&lt;br /&gt;
[&amp;lt;ffffffff834b25e8&amp;gt;] vma_prio_tree_insert+0x28/0x60&lt;br /&gt;
[&amp;lt;ffffffff8340fb68&amp;gt;] _spin_unlock+0x18/0x38&lt;br /&gt;
[&amp;lt;ffffffff834bdcec&amp;gt;] vma_link+0x13c/0x218&lt;br /&gt;
[&amp;lt;ffffffff834bfb3c&amp;gt;] mmap_region+0x67c/0x728&lt;br /&gt;
[&amp;lt;ffffffff8340ff98&amp;gt;] _spin_lock_irqsave+0x20/0xf8&lt;br /&gt;
[&amp;lt;ffffffff836169e8&amp;gt;] __up_write+0x40/0x2c8&lt;br /&gt;
[&amp;lt;ffffffff834850bc&amp;gt;] sys_init_module+0x74/0x1b0&lt;br /&gt;
[&amp;lt;ffffffff8340394c&amp;gt;] handle_sys+0x16c/0x188&lt;br /&gt;
[&amp;lt;ffffffff834056f4&amp;gt;] __bzero+0x90/0x11c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code: df7b0000 335a0ff0 037ad82d &amp;lt;df7a0000&amp;gt; df7b0008 001ad1ba 409a1000 001bd9ba 409b1800&lt;br /&gt;
INIT: Entering runlevel: 3&lt;br /&gt;
Entering non-interactive startup&lt;br /&gt;
Starting system logger: [ OK ]&lt;br /&gt;
Starting kernel logger: [ OK ]&lt;br /&gt;
Starting portmap: [ OK ]&lt;br /&gt;
Mounting other filesystems: [ OK ]&lt;br /&gt;
Starting sshd:       &amp;lt;------------- kernel hung up here&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
当初的原始分析还是比较符合事实的：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
From the dumped context, we can get the information:&lt;br /&gt;
&lt;br /&gt;
    Cause: 00808008             ----&amp;gt; TLB load exception&lt;br /&gt;
    BadVA: 0000000000000000     ----&amp;gt; access 0x0&lt;br /&gt;
    epc: ffffffff800000d0       ----&amp;gt; in TLB refill handler&lt;br /&gt;
&lt;br /&gt;
Decode the dumped Code (df7b0000 335a0ff0 037ad82d &amp;lt;df7a0000&amp;gt; ...) the&lt;br /&gt;
related instruction is:&lt;br /&gt;
&lt;br /&gt;
   c:   df7b0000    ld k1,0(k1)&lt;br /&gt;
10:   335a0ff0    andi    k0,k0,0xff0&lt;br /&gt;
14:   037ad82d    daddu   k1,k1,k0&lt;br /&gt;
18:   df7a0000    ld k0,0(k1)        &amp;lt;--- cause the exception, so we can guess k1 ==0&lt;br /&gt;
1c:   df7b0008    ld k1,8(k1)&lt;br /&gt;
20:   001ad1ba    dsrl    k0,k0,0x6&lt;br /&gt;
24:   409a1000    mtc0    k0,c0_entrylo0&lt;br /&gt;
28:   001bd9ba    dsrl    k1,k1,0x6&lt;br /&gt;
2c:   409b1800    mtc0    k1,c0_entrylo1&lt;br /&gt;
&lt;br /&gt;
Obviously it's the last part of TLB refill handler.&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
当时百思不得其解的是 TLB Refill handler 索引到了 PMD 的空项（等于是到 0x0 处去读取页表）&lt;br /&gt;
&lt;br /&gt;
TLB Refill handler 到底会不会索引到 PMD 空项的问题，后来和 WuFei 的闲聊中清晰了，Linux/MIPS 上是不可能出现的，init 进程的最初 pgd 的所有项都是指向 invalid_pmd_table，而这个 invalid_pmd_table 的所有项都是指向 invalid_pte_table，后面的子进程都是继承至 init，因此 Linux/MIPS 之进程页表建立过程应该是这样的：&lt;br /&gt;
&lt;br /&gt;
访问地址 vaddr_x --&amp;gt; TLB Miss --&amp;gt; TLB refill handler --&amp;gt; 为 vaddr 填充一个无效项(invalid_pte_table 的项都为 0，因此 v==0) --&amp;gt; re-access vaddr_x --&amp;gt; TLB Invalidate exception --&amp;gt; general exception entry (offset 0x180, ExcCode: tlbl/tlbs) --&amp;gt; handle_tlbl/tlbs --&amp;gt; do_page_fault --&amp;gt; handle_mm_fault --&amp;gt; alloc_pmd/pte ...&lt;br /&gt;
&lt;br /&gt;
即：在上面的 call trace 里，k1 的值不可能为 0，其值的底线是 invalid_pte_table 的地址。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. 未被破坏的 TLB Refill handler&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    @0xffffffff80000000                       &lt;br /&gt;
   c:    07610005     bgez    k1,24 &amp;lt;main+0x24&amp;gt; /* vaddr[61] != 1 (0xc000..0000 ~ 0xdfff..ffff), branch */   &lt;br /&gt;
10:    3c1bc000     lui    k1,0xc000        -----&amp;gt; at delay slot, commit new value to k1 after reading k1 (bgez)&lt;br /&gt;
                                           &lt;br /&gt;
                                            # vaddr is at 0xe000000000000000 ~ 0xffffffffffffffff&lt;br /&gt;
14:    035bd02f     dsubu    k0,k0,k1        /* k0 = vaddr - 0xffffffffc0000000 */&lt;br /&gt;
18:    3c1b8396     lui    k1,0x8396&lt;br /&gt;
1c:    10000023     b    ac &amp;lt;main+0xac&amp;gt;        ----&amp;gt; @@@&lt;br /&gt;
20:    277ba000     addiu    k1,k1,-24576    /* 0xffffffff8395a000, module_pg_dir */&lt;br /&gt;
&lt;br /&gt;
24:    001bd83c     dsll32    k1,k1,0x0        /* (0xffffffffc0000000 &amp;lt;&amp;lt; 32) */&lt;br /&gt;
28:    035bd02f     dsubu    k0,k0,k1        /* k0 = vaddr - 0xc000000000000000 */&lt;br /&gt;
2c:    1000001f     b    ac &amp;lt;main+0xac&amp;gt;        ----&amp;gt; @@@&lt;br /&gt;
30:    3c1b8396     lui    k1,0x8396            /* 0xffffffff83960000, swapper_pg_current */&lt;br /&gt;
    ...&lt;br /&gt;
    ...&lt;br /&gt;
    ...&lt;br /&gt;
    @0xffffffff80000080&lt;br /&gt;
8c:    403a4000     dmfc0    k0,c0_badvaddr        &lt;br /&gt;
&lt;br /&gt;
90:    0740001a     bltz    k0,fc &amp;lt;main+0xfc&amp;gt;    /* if badvaddr &amp;gt;= 0x80000000 00000000 branch */&lt;br /&gt;
&lt;br /&gt;
94:   403b2000    dmfc0   k1,c0_context&lt;br /&gt;
98:   001bddfa    dsrl    k1,k1,0x17      /* get (smp_processor_id() &amp;lt;&amp;lt; 3) (26-23), see asm/mmu_context.h */&lt;br /&gt;
9c:   3c1a8396    lui k0,0x8396           /* swapper_pg_current = 0xffffffff83960000 */&lt;br /&gt;
a0:   037ad82d    daddu   k1,k1,k0        /* seem like is p_tmp = swapper_pg_current[smp_processor_id()] */&lt;br /&gt;
a4:   403a4000    dmfc0   k0,c0_badvaddr&lt;br /&gt;
a8:   df7b2000    ld k1,8192(k1)         /*&lt;br /&gt;
                                             * pgd = *((void *)(p_tmp + 8192), 8 bytes per pgd entry, pgd_current = 0xffffffff83962000,&lt;br /&gt;
                                             * 0x2000 = 8192&lt;br /&gt;
                                             * actually it's pgd = pgd_current[smp_processor_id()]&lt;br /&gt;
                                             */&lt;br /&gt;
&lt;br /&gt;
@@@&lt;br /&gt;
ac:    001ad6fa     dsrl    k0,k0,0x1b        # &amp;gt;&amp;gt; 27&lt;br /&gt;
b0:    335a1ff8     andi    k0,k0,0x1ff8    /* get (vaddr[39:30] &amp;lt;&amp;lt; 3), for indexing pgd */&lt;br /&gt;
b4:    037ad82d     daddu    k1,k1,k0        /* index pgd */&lt;br /&gt;
&lt;br /&gt;
b8:    403a4000     dmfc0    k0,c0_badvaddr&lt;br /&gt;
bc:    df7b0000     ld    k1,0(k1)            /* get p_pmd */&lt;br /&gt;
c0:    001ad4ba     dsrl    k0,k0,0x12&lt;br /&gt;
c4:    335a0ff8     andi    k0,k0,0xff8        /* get (vaddr[29:21] &amp;lt;&amp;lt; 3), for indexing pmd */&lt;br /&gt;
c8:    037ad82d     daddu    k1,k1,k0        /* index pmd */&lt;br /&gt;
&lt;br /&gt;
cc:    403aa000     dmfc0    k0,c0_xcontext   &lt;br /&gt;
d0:    df7b0000     ld    k1,0(k1)            /* get p_pt */       &lt;br /&gt;
d4:    335a0ff0     andi    k0,k0,0xff0        /* get (va[20:13] &amp;lt;&amp;lt; 4), actually use va[20:12] index the pt, va[12]=0, for indexing pt */&lt;br /&gt;
d8:    037ad82d     daddu    k1,k1,k0        /* index pt */&lt;br /&gt;
&lt;br /&gt;
dc:    df7a0000     ld    k0,0(k1)            /* get even page addr */    &amp;lt;-------------&lt;br /&gt;
e0:    df7b0008     ld    k1,8(k1)            /* get odd page addr */&lt;br /&gt;
&lt;br /&gt;
e4:    001ad1ba     dsrl    k0,k0,0x6        /* ignore the low 6 bits, it's for os */&lt;br /&gt;
e8:    409a1000     mtc0    k0,c0_entrylo0    /* tlb even page entry */&lt;br /&gt;
ec:    001bd9ba     dsrl    k1,k1,0x6        /* same as above */&lt;br /&gt;
f0:    409b1800     mtc0    k1,c0_entrylo1    /* tlb odd page entry */&lt;br /&gt;
f4:    42000006     tlbwr                    /* random write tlb */&lt;br /&gt;
f8:    42000018     eret                   &lt;br /&gt;
&lt;br /&gt;
fc:    001ad8b8     dsll    k1,k0,0x2        # go here, vaddr is in xkphys or xkseg (&amp;gt;0x8000..0000)&lt;br /&gt;
                                            # 0x8000..0000 ~ 0xc000..0000 is xkphys, unmapped,&lt;br /&gt;
                                            # so vaddr &amp;gt; 0xc000..0000; vaddr &amp;lt;&amp;lt; 2&lt;br /&gt;
100:    1000ffc2     b    c &amp;lt;main+0xc&amp;gt;&lt;br /&gt;
&lt;br /&gt;
104:    00000000     nop&lt;br /&gt;
108:    00000000     nop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. 被破坏后的 TLB Refill handler&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@0xffffffff80000000&lt;br /&gt;
   c:    07130025     bgezall    t8,a4 &amp;lt;main+0xa4&amp;gt;&lt;br /&gt;
10:    3c1bc000     lui    k1,0xc000              # vaddr 0xe000..0000 ~ 0xffff..ffff, MODULE_START&lt;br /&gt;
14:    035bd02f     dsubu    k0,k0,k1&lt;br /&gt;
18:    3c1b8396     lui    k1,0x8396&lt;br /&gt;
1c:    10000023     b    ac &amp;lt;main+0xac&amp;gt;&lt;br /&gt;
20:    277ba000     addiu    k1,k1,-24576    # k1 --&amp;gt; module_pg_dir&lt;br /&gt;
&lt;br /&gt;
24:    001bd83c     dsll32    k1,k1,0x0         # vaddr 0xc000..0000 ~ 0xdfff..ffff, VMALLOC_START&lt;br /&gt;
28:    035bd02f     dsubu    k0,k0,k1&lt;br /&gt;
2c:    1000001f     b    ac &amp;lt;main+0xac&amp;gt;&lt;br /&gt;
30:    3c1b8396     lui    k1,0x8396              # k1 --&amp;gt; swapper_pg_current&lt;br /&gt;
    ...&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
@0xffffffff80000080&lt;br /&gt;
8c:    403a4000     dmfc0    k0,c0_badvaddr&lt;br /&gt;
90:    0740001a     bltz    k0,fc &amp;lt;main+0xfc&amp;gt;&lt;br /&gt;
94:    403b2000     dmfc0    k1,c0_context&lt;br /&gt;
98:    001bddfa     dsrl    k1,k1,0x17&lt;br /&gt;
9c:    3c1a8396     lui    k0,0x8396&lt;br /&gt;
a0:    037ad82d     daddu    k1,k1,k0&lt;br /&gt;
&lt;br /&gt;
a4:    403a4000     dmfc0    k0,c0_badvaddr&lt;br /&gt;
a8:    df7b2000     ld    k1,8192(k1)&lt;br /&gt;
&lt;br /&gt;
@@@&lt;br /&gt;
ac:    001ad6fa     dsrl    k0,k0,0x1b&lt;br /&gt;
b0:    335a1ff8     andi    k0,k0,0x1ff8&lt;br /&gt;
b4:    037ad82d     daddu    k1,k1,k0&lt;br /&gt;
&lt;br /&gt;
b8:    403a4000     dmfc0    k0,c0_badvaddr&lt;br /&gt;
bc:    df7b0000     ld    k1,0(k1)&lt;br /&gt;
c0:    001ad4ba     dsrl    k0,k0,0x12&lt;br /&gt;
c4:    335a0ff8     andi    k0,k0,0xff8&lt;br /&gt;
c8:    037ad82d     daddu    k1,k1,k0&lt;br /&gt;
&lt;br /&gt;
cc:    403aa000     dmfc0    k0,c0_xcontext&lt;br /&gt;
d0:    df7b0000     ld    k1,0(k1)&lt;br /&gt;
d4:    335a0ff0     andi    k0,k0,0xff0&lt;br /&gt;
d8:    037ad82d     daddu    k1,k1,k0&lt;br /&gt;
&lt;br /&gt;
dc:    df7a0000     ld    k0,0(k1)&lt;br /&gt;
e0:    df7b0008     ld    k1,8(k1)&lt;br /&gt;
&lt;br /&gt;
e4:    001ad1ba     dsrl    k0,k0,0x6&lt;br /&gt;
e8:    409a1000     mtc0    k0,c0_entrylo0&lt;br /&gt;
ec:    001bd9ba     dsrl    k1,k1,0x6&lt;br /&gt;
f0:    409b1800     mtc0    k1,c0_entrylo1&lt;br /&gt;
f4:    42000006     tlbwr&lt;br /&gt;
f8:    42000018     eret&lt;br /&gt;
&lt;br /&gt;
fc:    001ad8b8     dsll    k1,k0,0x2&lt;br /&gt;
&lt;br /&gt;
100:    1000ffc2     b    c &amp;lt;main+0xc&amp;gt;&lt;br /&gt;
104:    00000000     nop&lt;br /&gt;
108:    00000000     nop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 分析 ==&lt;br /&gt;
&lt;br /&gt;
MIPS64 的 TLB Refill Exception 入口在 0xffffffff80000080 处，当访问的虚拟地址在 0x80000000 00000000 以上时，跳到 fc: 处，地址左移 2 位后，直接到 bgezall    t8,a4，这样跳转就取决于 t8 的值，而与原始的 k1 无关了。&lt;br /&gt;
&lt;br /&gt;
这样在 module 或 vmalloc 时 （皆在 0x8000..0000 之上），当 t8 小于 0 时，bgezall 不跳转，往后的逻辑依然正确，即：依然进入原模块用的 module_pg_dir PGD 入口；但当 t8 使 bgezall 跳转时，则 BadVaddr 左移 2 位后的值（置于 k1），却成了 pgd 的入口地址，这样 TLB Refill handler 就用了一个不可知的 PGD 和 PMD，PMD 项为空也就理所当然了。&lt;br /&gt;
&lt;br /&gt;
至于为何当初为何能在极短的时间内能找到一个 workaround，也是歪打正着，上天庇佑也未可知 :)&lt;br /&gt;
workaround 的原理如下：&lt;br /&gt;
&lt;br /&gt;
其用一个极简的函数位于 0xFFFFFFFF80000080 处：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+LEAF(phnx_tlb_refill)&lt;br /&gt;
+   .set mips64&lt;br /&gt;
+   dla k0, phoenix_btlb_refill&lt;br /&gt;
+   jr k0&lt;br /&gt;
+   nop&lt;br /&gt;
+END(phnx_tlb_refill)&lt;br /&gt;
&lt;br /&gt;
--- a/arch/mips/mm/tlbex.c&lt;br /&gt;
+++ b/arch/mips/mm/tlbex.c&lt;br /&gt;
@@ -29,6 +29,12 @@&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;uasm.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
+#define CONFIG_RMI_INSMOD_WKAROUND&lt;br /&gt;
+&lt;br /&gt;
+#ifdef CONFIG_RMI_INSMOD_WKAROUND&lt;br /&gt;
+extern void phnx_tlb_refill(void);&lt;br /&gt;
+#endif&lt;br /&gt;
+&lt;br /&gt;
static inline int r45k_bvahwbug(void)&lt;br /&gt;
{&lt;br /&gt;
    /* XXX: We should probe for the presence of this bug, but we don't. */&lt;br /&gt;
@@ -672,7 +678,7 @@ static void __cpuinit build_update_entries(u32 **p, unsigned int tmp,&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-static void __cpuinit build_r4000_tlb_refill_handler(void)&lt;br /&gt;
+static void __cpuinit __maybe_unused build_r4000_tlb_refill_handler(void)&lt;br /&gt;
{&lt;br /&gt;
    u32 *p = tlb_handler;&lt;br /&gt;
    struct uasm_label *l = labels;&lt;br /&gt;
@@ -1268,7 +1274,11 @@ void __cpuinit build_tlb_refill_handler(void)&lt;br /&gt;
        break;&lt;br /&gt;
&lt;br /&gt;
    default:&lt;br /&gt;
+#ifndef CONFIG_RMI_INSMOD_WKAROUND&lt;br /&gt;
        build_r4000_tlb_refill_handler();&lt;br /&gt;
+#else&lt;br /&gt;
+       memcpy((void *)(ebase + 0x80), phnx_tlb_refill, 0x80);&lt;br /&gt;
+#endif&lt;br /&gt;
        if (!run_once) {&lt;br /&gt;
            build_r4000_tlb_load_handler();&lt;br /&gt;
            build_r4000_tlb_store_handler();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
真正的 TLB Refill handler (phoenix_btlb_refill) 在一个独立的文件中，由于物理内存 0x1 和 0x3 处没有实际的 TLB Refill handler 指令，因此就将问题避开了。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	</feed>