cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

debugging.rst (1694B)


      1=================
      2PA-RISC Debugging
      3=================
      4
      5okay, here are some hints for debugging the lower-level parts of
      6linux/parisc.
      7
      8
      91. Absolute addresses
     10=====================
     11
     12A lot of the assembly code currently runs in real mode, which means
     13absolute addresses are used instead of virtual addresses as in the
     14rest of the kernel.  To translate an absolute address to a virtual
     15address you can lookup in System.map, add __PAGE_OFFSET (0x10000000
     16currently).
     17
     18
     192. HPMCs
     20========
     21
     22When real-mode code tries to access non-existent memory, you'll get
     23an HPMC instead of a kernel oops.  To debug an HPMC, try to find
     24the System Responder/Requestor addresses.  The System Requestor
     25address should match (one of the) processor HPAs (high addresses in
     26the I/O range); the System Responder address is the address real-mode
     27code tried to access.
     28
     29Typical values for the System Responder address are addresses larger
     30than __PAGE_OFFSET (0x10000000) which mean a virtual address didn't
     31get translated to a physical address before real-mode code tried to
     32access it.
     33
     34
     353. Q bit fun
     36============
     37
     38Certain, very critical code has to clear the Q bit in the PSW.  What
     39happens when the Q bit is cleared is the CPU does not update the
     40registers interruption handlers read to find out where the machine
     41was interrupted - so if you get an interruption between the instruction
     42that clears the Q bit and the RFI that sets it again you don't know
     43where exactly it happened.  If you're lucky the IAOQ will point to the
     44instruction that cleared the Q bit, if you're not it points anywhere
     45at all.  Usually Q bit problems will show themselves in unexplainable
     46system hangs or running off the end of physical memory.