差異處
這裏顯示兩個版本的差異處。
linux:kernel:tracekconfig [2013/06/21 13:50] tony |
linux:kernel:tracekconfig [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>Linux Linux-kernel}} | ||
- | ====== Trace KConfig - Plug and Play support選項不能選 ====== | ||
- | ===== Problem ===== | ||
- | 這問題的發生一開始是因為想存取某個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? ===== | ||
- | 於是我開始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那坨config實在是很portable。 | ||
- | |||
- | ===== ===== | ||
- | ---- | ||
- | \\ | ||
- | ~~DISQUS~~ |