1. 26 4月, 2008 1 次提交
  2. 21 4月, 2008 1 次提交
  3. 20 4月, 2008 1 次提交
  4. 06 2月, 2008 1 次提交
  5. 02 2月, 2008 1 次提交
  6. 30 1月, 2008 2 次提交
  7. 30 10月, 2007 1 次提交
  8. 23 10月, 2007 1 次提交
  9. 18 10月, 2007 2 次提交
  10. 16 10月, 2007 1 次提交
  11. 11 10月, 2007 2 次提交
  12. 12 8月, 2007 1 次提交
  13. 22 7月, 2007 21 次提交
  14. 03 5月, 2007 1 次提交
  15. 13 2月, 2007 1 次提交
  16. 11 1月, 2007 1 次提交
  17. 21 12月, 2006 1 次提交
    • I
      [PATCH] x86_64: fix boot time hang in detect_calgary() · 136f1e7a
      Ingo Molnar 提交于
      if CONFIG_CALGARY_IOMMU is built into the kernel via
      CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT, or is enabled via the
      iommu=calgary boot option, then the detect_calgary() function runs to
      detect the presence of a Calgary IOMMU.
      
      detect_calgary() first searches the BIOS EBDA area for a "rio_table_hdr"
      BIOS table. It has this parsing algorithm for the EBDA:
      
      	while (offset) {
      		...
      		/* The next offset is stored in the 1st word. 0 means no more */
       		offset = *((unsigned short *)(ptr + offset));
      	}
      
      got that? Lets repeat it slowly: we've got a BIOS-supplied data
      structure, plus Linux kernel code that will only break out of an
      infinite parsing loop once the BIOS gives a zero offset. Ok?
      
      Translation: what an excellent opportunity for BIOS writers to lock up
      the Linux boot process in an utterly hard to debug place! Indeed the
      BIOS jumped on that opportunity on my box, which has the following EBDA
      chaining layout:
      
        384, 65282, 65535, 65535, 65535, 65535, 65535, 65535 ...
      
      see the pattern? So my, definitely non-Calgary system happily locks up
      in detect_calgary()!
      
      the patch below fixes the boot hang by trusting the BIOS-supplied data
      structure a bit less: the parser always has to make forward progress,
      and if it doesnt, we break out of the loop and i get the expected kernel
      message:
      
        Calgary: Unable to locate Rio Grande Table in EBDA - bailing!
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Acked-by: NMuli Ben-Yehuda <muli@il.ibm.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      136f1e7a