1okay, here are some hints for debugging the lower-level parts of
   51. Absolute addresses
   7A lot of the assembly code currently runs in real mode, which means
   8absolute addresses are used instead of virtual addresses as in the
   9rest of the kernel.  To translate an absolute address to a virtual
  10address you can lookup in, add __PAGE_OFFSET (0x10000000
  142. HPMCs
  16When real-mode code tries to access non-existent memory, you'll get
  17an HPMC instead of a kernel oops.  To debug an HPMC, try to find
  18the System Responder/Requestor addresses.  The System Requestor
  19address should match (one of the) processor HPAs (high addresses in
  20the I/O range); the System Responder address is the address real-mode
  21code tried to access.
  23Typical values for the System Responder address are addresses larger
  24than __PAGE_OFFSET (0x10000000) which mean a virtual address didn't
  25get translated to a physical address before real-mode code tried to
  26access it.
  293. Q bit fun
  31Certain, very critical code has to clear the Q bit in the PSW.  What
  32happens when the Q bit is cleared is the CPU does not update the
  33registers interruption handlers read to find out where the machine
  34was interrupted - so if you get an interruption between the instruction
  35that clears the Q bit and the RFI that sets it again you don't know
  36where exactly it happened.  If you're lucky the IAOQ will point to the
  37instruction that cleared the Q bit, if you're not it points anywhere
  38at all.  Usually Q bit problems will show themselves in unexplainable
  39system hangs or running off the end of physical memory.
  40 kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.