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. | ||
Then go into i915tool 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 | ||
use picocom -b 115200 /dev/ttyUSB0 or stty to set the bauds of the Serial port. | use picocom -b 115200 /dev/ttyUSB0 or stty to set the bauds of the Serial port. |
Revision as of 10:42, 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. 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