<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/hgf1011" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/hgf1011" type="application/rss+xml"></fs:self_link><lastBuildDate>Mon, 27 Jun 2011 07:46:00 GMT</lastBuildDate><title>Dig into computer system.</title><description>每一个考验、问题、错误，有一天都会变成美丽的玫瑰花瓣，就像枝干上都是刺，痛苦会导向光明，变成美丽。</description><link>http://blog.csdn.net/blogrss.aspx?username=hgf1011</link><item><title>EFI Performance Monitor</title><link>http://blog.csdn.net/hgf1011/archive/2011/06/27/6570418.aspx</link><description>In order to reduce platform's boot speed, BIOS Engineer need to optimize the platform firmware. But before that, BIOS Engineer should know where is the bottleneck. The functions defined in EDK (PERF_START, PERF_END) is used to help BIOS Engineer to figure out it.&lt;img src=&quot;http://www1.feedsky.com/t1/528061641/hgf1011/csdn.net/s.gif?r=http://blog.csdn.net/hgf1011/archive/2011/06/27/6570418.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Mon, 27 Jun 2011 15:46:00 +0800</pubDate><author>peter</author><guid isPermaLink="false">http://blog.csdn.net/hgf1011/archive/2011/06/27/6570418.aspx</guid><dc:creator>peter</dc:creator><fs:srclink>http://blog.csdn.net/hgf1011/archive/2011/06/27/6570418.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hgf1011/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/hgf1011/~1104831/528061641/1104829</fs:itemid></item><item><title>EFI LIST</title><link>http://blog.csdn.net/hgf1011/archive/2010/12/16/6080136.aspx</link><description>List是一个非常常见的数据结构，学过C的童鞋肯定都会非常熟悉这个东东，上学的时候老师都会教我们按照如下的方式定义一个双向List。

typedef struct  _list_node {

struct _list_node * Flink;

struct _list_node * Blink;

uint32   data;

}list;&lt;img src=&quot;http://www1.feedsky.com/t1/528061654/hgf1011/csdn.net/s.gif?r=http://blog.csdn.net/hgf1011/archive/2010/12/16/6080136.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 16 Dec 2010 15:04:00 +0800</pubDate><author>peter</author><guid isPermaLink="false">http://blog.csdn.net/hgf1011/archive/2010/12/16/6080136.aspx</guid><dc:creator>peter</dc:creator><fs:srclink>http://blog.csdn.net/hgf1011/archive/2010/12/16/6080136.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hgf1011/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/hgf1011/~1104831/528061654/1104829</fs:itemid></item><item><title>INT15 A20 Control</title><link>http://blog.csdn.net/hgf1011/archive/2010/11/07/5993447.aspx</link><description>INT15是一个Misc  Function， 很多乱七八糟的功能都被放在 INT15中实现。比较常见的有这样几个功能：1.CPU Micro Code Update ；2.VBIOS  call back Function；3. A20 Control   Function。 之前我并不知道INT15 A20 Control Function的功能,一次偶然机会 在debug 一个PXE网络ghost的问题 发现每次DOS下的ghost软件运行到一半就报错了， 然后利用DOS下的单步执行的功能就发现每次执行完加载HIMEM.SYS之后就挂了，而HIMEM.SYS是一个和高端内存相关的一只Driver 于是就怀疑可能和A20有关，后来按照CRB Release History Update了一个INT15CB的bin文件 bug就解了，当时因为赶时间就没有仔细去找原因，也不太明白为什么，直到最近查文档才偶然发现原来INT15 有一直A20 Control Function。A20 Control Function调用的格式如下所示：
INT 15 AX=2400 disable A2&lt;img src=&quot;http://www1.feedsky.com/t1/528061658/hgf1011/csdn.net/s.gif?r=http://blog.csdn.net/hgf1011/archive/2010/11/07/5993447.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Sun, 07 Nov 2010 17:03:00 +0800</pubDate><author>peter</author><guid isPermaLink="false">http://blog.csdn.net/hgf1011/archive/2010/11/07/5993447.aspx</guid><dc:creator>peter</dc:creator><fs:srclink>http://blog.csdn.net/hgf1011/archive/2010/11/07/5993447.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hgf1011/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/hgf1011/~1104831/528061658/1104829</fs:itemid></item><item><title>MSI (Message Signaled Interrupts)</title><link>http://blog.csdn.net/hgf1011/archive/2010/11/02/5982354.aspx</link><description>之前有提到因功能需求的增加，越来越多的PCI/PCIE设备被加入进来，导致中断资源的缺失。后来就出现了IRQ Routing 以及MSI等技术手段用于解决这些问题。看上去MSI较通常使用Interrupt Pin的方式比较起来似乎有优势，MSI是通过向Host发MSG的方式产生IRQ request，再送达Host/PCI Bridge之前它和普通的Memory Write并没有什么区别，Host收到以后再将该Memory Write转化成Interrupt送抵各个CPU，传统使用Interrupt Pin的方式通常需要专门的Interrupt Trace而且还要和其它的PCI device分享PIC/APIC Interrupt Controller等。当然MSI也不是没有缺点，它有一个比较严重的问题就是没法保证Interrupt Latency，因为它的产生方式和Memory Write一样，所以MSG可能会被Host/Loading Cache这样就可能会出现Latency，另外当Loading重的时候也可能会出现比较大的Latency。&lt;img src=&quot;http://www1.feedsky.com/t1/528061663/hgf1011/csdn.net/s.gif?r=http://blog.csdn.net/hgf1011/archive/2010/11/02/5982354.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 02 Nov 2010 16:16:00 +0800</pubDate><author>peter</author><guid isPermaLink="false">http://blog.csdn.net/hgf1011/archive/2010/11/02/5982354.aspx</guid><dc:creator>peter</dc:creator><fs:srclink>http://blog.csdn.net/hgf1011/archive/2010/11/02/5982354.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hgf1011/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/hgf1011/~1104831/528061663/1104829</fs:itemid></item><item><title>PCI IRQ Routing</title><link>http://blog.csdn.net/hgf1011/archive/2010/10/29/5974351.aspx</link><description>在计算机发展的历史中，很多技术的出现都是为了解决当前所面临的问题而产生和发展出来的，PCI IRQ Routing也不例外，随着计算机系统的功能需求的增加，越来越多的PCI/PCIE设备被加入到系统中来，可是PIC mode下却只有15 个IRQ可供使用（即使是APIC，目前也只是有24个INTIN），而且在早期device都是直接拉线到8259  IRQ，所以一旦确定就没法改变，没有灵活性。于是中断共享就是这种情况下解决这一问题的一个方法（当然其他的方法如使用MSI,SIRQ等也都可以实现中断的复用），可是中断共享了以后又会有新的问题出现 那就是如何分配这些中断的使用 才能够达到负载均衡（Loading Banlance），上述的这些问题就使得PCI IRQ Routing应运而生了。&lt;img src=&quot;http://www1.feedsky.com/t1/528061672/hgf1011/csdn.net/s.gif?r=http://blog.csdn.net/hgf1011/archive/2010/10/29/5974351.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Fri, 29 Oct 2010 15:23:00 +0800</pubDate><author>peter</author><guid isPermaLink="false">http://blog.csdn.net/hgf1011/archive/2010/10/29/5974351.aspx</guid><dc:creator>peter</dc:creator><fs:srclink>http://blog.csdn.net/hgf1011/archive/2010/10/29/5974351.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/hgf1011/feed.aspx</fs:srcfeed><fs:itemid>csdn.net/hgf1011/~1104831/528061672/1104829</fs:itemid></item></channel></rss>
