User:GNUtoo: Difference between revisions
Jump to navigation
Jump to search
Line 75: | Line 75: | ||
[*] Log IO accesses | [*] Log IO accesses | ||
Build and flash coreboot. | Build and flash coreboot. | ||
Get the tarball that contains the generated code, extract it. | |||
Also get the i915_regs.h header and put it in final/ | |||
Then go into i915tool(the official one, not the one in coreboot repository) and apply some patches for the x60 or redo them for your mainboard. | Then go into i915tool(the official one, not the one in coreboot repository) and apply some patches for the x60 or redo them for your mainboard. | ||
$ cd i915tool/x60 | $ cd i915tool/x60 |
Revision as of 10:44, 21 May 2013
- I did the port to the M4A785T-M
- I've an x60
- I've an alix.1C
scripts to help getting rid of the vbios of the x60
Script 1: generate the io access for the coreboot driver
- follow "Case study: new laptop (not complete, sorry)" in https://docs.google.com/document/d/1g8FMob25VZYxbWri2iFB8YiSL8gwF9vKJH3HGxr0xQU/edit?pli=1
- pacman -S plan9port
- cp /opt/plan9/bin/ssam ./
- replace the following line in ./ssam:
#!/usr/local/plan9/bin/rc
by the following line:
#!/opt/plan9/bin/rc
- create the ssamfix file with:
,s/\[ *[0-9]+\..[0-9]+\]//g ,s/^ *//g y/^[RWU]/s/^/M /g ,s/\nU/ ;;;UDELAY/g ,|uniq -c ,s/^ *//g ,s/(^[0-9]+) ([MRW])/\2 \1/g ,s/"/\\"/g ,s/^M ([0-9]+) *(\[.*)/{M, \1, "\2"},/g ,s/^M ([0-9]+) *(.*)/{M, \1, "\2"},/g ,s/: */:/g ,s/...UDELAY *([0-9]+)/\1/g ,s/^([RW]) ([0-9]+) (.*):0x([0-9a-f]+)(.*)/{\1, \2, "", \3, 0x\4, \5},/g
- run the following commands:
. /etc/profile.d/plan9.sh cat dmesg| ./ssam -f ssamfix > foo.c
Script2: compare the io access that were too fast
- Replace {V,0,}, with {V,7,}, in src/mainboard/vendor/device/i915io.c
- cat /dev/ttyUSB0 > accesses.txt
- Use that script against accesses.txt to find the guilty accesses:
#!/usr/bin/env python2 import sys,re def main(args): try: f = open(args[1],'ro') except: print args[0], " <file>" for line in f: if re.match("0x[0-9]*: Got .*, expect .*",line): line = line.replace('\r\n',).replace(", expect ",':').replace(": Got ",':') split = line.split(':') #print split if split[1] != split[2]: print line if __name__ == '__main__': main(sys.argv)
How to get semantic IOs
In i915tool:
- import your IOs in prettyregs.c
- compile prettyregs.c
- run prettyregs
How to get rid of the vbios of the x60 [New Version]
Apply the coreboot patches, or re-do them for your mainboard Then configure coreboot with:
[*] Output verbose x86emu debug messages [ ] Trace JMP/RETF [ ] Trace all opcodes [ ] Log Plug&Play accesses [ ] Log Disk I/O [ ] Log PMM [ ] Debug VESA BIOS Extensions [ ] Redirect INT10 output to console [ ] Log intXX calls [ ] Log special memory accesses [ ] Log all memory accesses [*] Log IO accesses
Build and flash coreboot. Get the tarball that contains the generated code, extract it. Also get the i915_regs.h header and put it in final/ Then go into i915tool(the official one, not the one in coreboot repository) and apply some patches for the x60 or redo them for your mainboard.
$ cd i915tool/x60
use picocom -b 115200 /dev/ttyUSB0 or stty to set the bauds of the Serial port. Then get logs:
$ cat /dev/ttyUSB0 | tee coreboot.log
Then remove the binary symbols, dos2unix will help identifying where they are:
$ dos2unix coreboot.log dos2unix: Binary symbol found at line 136332 dos2unix: Skipping binary file coreboot.log
Then do:
$ dos2unix coreboot.log
Then remove the lines before and after the log, the log looks like that:
[0047229e]c000:51cb outl(0x80001014, 0x0cf8) [0047325f]c000:51d4 inw(0x0cfc) = 0x50a1