差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
linux:kernel:tracekconfig [2013/06/21 12:01] tony 建立 |
linux:kernel:tracekconfig [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 2: | 行 2: | ||
====== Trace KConfig - Plug and Play support選項不能選 ====== | ====== Trace KConfig - Plug and Play support選項不能選 ====== | ||
===== Problem ===== | ===== Problem ===== | ||
- | 這問題的發生一開始是因為想存取某個isa io port卻出現ioperm的錯誤。透過cat /proc/ioports卻發現那些port並沒被linux找到。比較其它可行的機器後,發現這台搭配2.6.9 kernel的RHEL4u8(真的會有人用嗎?)根本沒找到任何pnp裝置。我想: 那我自己去enable CONFIG_PNP吧! 不幸滴,透過make menuconfig指令卻無法對Device Drivers>Plug and Play support做選擇,這到底是怎回事? | + | 這問題的發生一開始是因為想存取某個isa io port卻出現ioperm的錯誤。透過cat /proc/ioports卻發現那些port並沒被linux找到。比較其它可行的機器後,發現這台搭配2.6.9 kernel的RHEL4u8(真的會有人用嗎?)根本沒找到任何pnp裝置。\\ |
+ | {{:linux:kernel:ioports_pnp.png|}}\\ | ||
+ | \\ | ||
+ | 我想: 那我自己去enable CONFIG_PNP吧! 不幸滴,透過make menuconfig指令卻無法對Device Drivers>Plug and Play support做選擇,這到底是怎回事?\\ | ||
+ | {{:linux:kernel:menuconfig_pnp.png?600|}} | ||
===== How to? ===== | ===== How to? ===== | ||
+ | 於是我開始Trace Makefile與Kconfig,看看是怎麼回事。首先至kernel source root下,看看drivers/pnp/Kconfig:\\ | ||
+ | {{:linux:kernel:kconfig_pnp.png|}}\\ | ||
+ | \\ | ||
+ | default為y這行是我加的,只是想確認是否能讓.confg產生CONFIG_PNP=y的設定。但事實上,CONFIG_PNP是相依於CONFIG_ISA(CONFIG_PNP與CONFIG_ISAPNP都會在pnp.h或isapnp.h中被使用到)。接著我就開始trace CONFIG_ISA的定義,CONFIG_ISA的宣告在arch下。我關注的是arch/i386與arch/x84_64下的Kconfig。首先是arch/i386/Kconfig,看起來宣告正常,除了在VOYAGER、VISWS、XEN這三種版本的kernel上:\\ | ||
+ | {{:linux:kernel:kconfig_arch_2.6.9_i386_isa.png|}}\\ | ||
+ | \\ | ||
+ | 接著看64位元版本,arch/x86_64/Kconfig:\\ | ||
+ | {{:linux:kernel:kconfig_arch_2.6.9_x64.png|}}\\ | ||
+ | 一開始註解就說明64位元不支援ISA,如果要enable必須自己去修kernel driver,這就是root cause。最後當然是請User升級kernel拉。\\ | ||
+ | |||
+ | 友藏內心獨白: linux的portable就是那坨config。 | ||
+ | ===== Resource ===== | ||
+ | * [[http://www.hansenpartnership.com/voyager/|VOYAGER]] | ||
+ | ===== ===== | ||
+ | ---- | ||
+ | \\ | ||
+ | ~~DISQUS~~ |