Fermi context switching units

Todo

convert

Present on:
cc0:
GF100:GK104
cc1:
GK104:GK208
cc2:
GK208:GM107
cc3:
GM107:
BAR0 address:
HUB:
0x409000
GPC:
0x502000 + idx * 0x8000

PMC interrupt line: ??? PMC enable bit: 12 [all of PGRAPH] Version:

cc0, cc1:
3
cc2, cc3:
5
Code segment size:
HUB cc0: 0x4000 HUB cc1, cc2: 0x5000 HUB cc3: 0x6000 GPC cc0: 0x2000 GPC cc1, cc2: 0x2800 GPC cc3: 0x3800
Data segment size:
HUB: 0x1000 GPC cc0-cc2: 0x800 GPC cc3: 0xc00
Fifo size:
HUB cc0-cc1: 0x10 HUB cc2-cc3: 0x8 GPC cc0-cc1: 0x8 GPC cc2-cc3: 0x4
Xfer slots:
8
Secretful:
no
Code TLB index bits:
8
Code ports:
1
Data ports:
cc0, cc1:
1
cc2, cc3:
4
IO addressing type:
indexed
Core clock:
HUB:
hub clock [GF100 clock #9]
GPC:
GPC clock [GF100 clock #0] [XXX: divider]

The IO register ranges:

400/10000:500/14000 CC misc CTXCTL support [graph/gf100-ctxctl/intro.txt] 500/14000:600/18000 FIFO command FIFO submission [graph/gf100-ctxctl/intro.txt] 600/18000:700/1c000 MC PGRAPH master control [graph/gf100-ctxctl/intro.txt] 700/1c000:800/20000 MMIO MMIO bus access [graph/gf100-ctxctl/mmio.txt] 800/20000:900/24000 MISC misc/unknown stuff [graph/gf100-ctxctl/intro.txt] 900/24000:a00/28000 STRAND context strand control [graph/gf100-ctxctl/strand.txt] a00/28000:b00/2c000 MEMIF memory interface [graph/gf100-ctxctl/memif.txt] b00/2c000:c00/30000 CSREQ PFIFO switch requests [graph/gf100-ctxctl/intro.txt] c00/30000:d00/34000 GRAPH PGRAPH status/control [graph/gf100-ctxctl/intro.txt] d80/36000:dc0/37000 ??? ??? - related to MEMIF? [XXX] [GK104-]

Registers in CC range: 400/10000 INTR interrupt signals 404/101xx INTR_ROUTE falcon interrupt routing 40c/1030x BAR_REQMASK[0] barrier required bits 410/1040x BAR_REQMASK[1] barrier required bits 414/1050x BAR barrier state 418/10600 BAR_SET[0] set barrier bits, barrier 0 41c/10700 BAR_SET[1] set barrier bits, barrier 1 420/10800 IDLE_STATUS CTXCTL subunit idle status 424/10900 USER_BUSY user busy flag 430/10c00 WATCHDOG watchdog timer 484/12100H ??? [XXX]

Registers in FIFO range: 500/14000 DATA FIFO command argument 504/14100 CMD FIFO command submission

Registers in MC range: 604/18100H HUB_UNITS PART/GPC count 608/18200G GPC_UNITS TPC/ZCULL count 60c/18300H ??? [XXX] 610/18400H ??? [XXX] 614/18500 RED_SWITCH enable/power/pause master control 618/18600G GPCID the id of containing GPC 620/18800 UC_CAPS falcon code and data size 698/1a600G ??? [XXX] 69c/1a700G ??? [XXX]

Registers in MISC range: 800/20000:820/20800 SCRATCH scratch registers 820/20000:820/21000 SCRATCH_SET set bits in scratch registers 840/20000:820/21800 SCRATCH_CLEAR clear bits in scratch registers 86c/21b00 ??? related to strands? [XXX] 870/21c00 ??? [XXX] 874/21d00 ??? [XXX] 878/21e00 ??? [XXX] 880/22000 STRANDS strand count 884/22100 ??? [XXX] 890/22400 ??? JOE? [XXX] 894/22500 ??? JOE? [XXX] 898/22600 ??? JOE? [XXX] 89c/22700 ??? JOE? [XXX] 8a0/22800 ??? [XXX] 8a4/22900 ??? [XXX] 8a8/22a00 ??? [XXX] 8b0/22c00 ??? [XXX] [GK104-] 8b4/22d00 ??? [XXX] [GK104-]

Registers in CSREQ range: b00/2c000H CHAN_CUR current channel b04/2c100H CHAN_NEXT next channel b08/2c200H INTR_EN interrupt enable? b0c/2c300H INTR interrupt b80/2e000H ??? [XXX] b84/2e100H ??? [XXX]

Registers in GRAPH range: c00/30000H CMD_STATUS some PGRAPH status bits? c08/30200H CMD_TRIGGER triggers misc commands to PGRAPH? c14/305xxH INTR_UP_ROUTE upstream interrupt routing c18/30600H INTR_UP_STATUS upstream interrupt status c1c/30700H INTR_UP_SET upstream interrupt trigger c20/30800H INTR_UP_CLEAR upstream interrupt clear c24/30900H INTR_UP_ENABLE upstream interrupt enable [XXX: more bits on GK104] c80/32000G VSTATUS_0 subunit verbose status c84/32100G VSTATUS_1 subunit verbose status c88/32200G VSTATUS_2 subunit verbose status c8c/32300G VSTATUS_3 subunit verbose status c90/32400G TRAP GPC trap status c94/32500G TRAP_EN GPC trap enable

Interrupts:
0-7: standard falcon intterrupts 8-15: controlled by INTR_ROUTE

[XXX: IO regs] [XXX: interrupts] [XXX: status bits]

[XXX: describe CTXCTL]

Signals

0x00-0x1f: engine dependent [XXX] 0x20: ZERO - always 0 0x21: ??? - bit 9 of reg 0x128 of corresponding IBUS piece [XXX] 0x22: STRAND - strand busy executing command [graph/gf100-ctxctl/strand.txt] 0x23: ???, affected by RED_SWITCH [XXX] 0x24: IB_UNK40, last state of IB_UNK40 bit, from DISPATCH.SUBCH reg 0x25: MMCTX - MMIO transfer complete [graph/gf100-ctxctl/mmio.txt] 0x26: MMIO_RD - MMIO read complete [graph/gf100-ctxctl/mmio.txt] 0x27: MMIO_WRS - MMIO synchronous write complete [graph/gf100-ctxctl/mmio.txt] 0x28: BAR_0 - barrier #0 reached [see below] 0x29: BAR_1 - barrier #1 reached [see below] 0x2a: ??? - related to PCOUNTER [XXX] 0x2b: WATCHDOG - watchdog timer expired [see below] 0x2c: ??? - related to MEMIF [XXX] 0x2d: ??? - related to MEMIF [XXX] 0x2e: ??? - related to MEMIF [XXX]