diff --git a/docs/README.md b/docs/README.md index 7eaeec0..ad8ed0d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -55,7 +55,9 @@ rather than restate it. Roughly in the order things happen at runtime: 15. **[drivers.md](device-driver-development/drivers.md) — writing a driver.** The payoff: a driver is an ordinary ring-3 process that claims a device, maps its registers, and **sleeps until its hardware interrupts it**. The claim is the capability; `irq_ack` is the - unmask. + unmask. The condensed version: the + [new-driver checklist](device-driver-development/new-driver-checklist.md) — + the minimum steps from boot-log line to mapped registers. 16. **[driver-model.md](device-driver-development/driver-model.md) — buses, classes and host controllers.** How real driver stacks factor into three shapes and how families share code. The three primitives it proposed are long since built (M13 capability passing, diff --git a/docs/device-driver-development/drivers.md b/docs/device-driver-development/drivers.md index 2caab33..895d2ab 100644 --- a/docs/device-driver-development/drivers.md +++ b/docs/device-driver-development/drivers.md @@ -4,7 +4,9 @@ In a monolithic kernel a driver is a function call away from everything: it runs ring 0, dereferences any physical address, and its interrupt handler *is* the ISR. In danos a driver is **an ordinary ring-3 process**. It has its own address space, it can crash without taking the kernel with it, and — the point of this document — it -can be restarted ([resilience](../os-development/resilience.md)). +can be restarted ([resilience](../os-development/resilience.md)). This document is +the reasoning; the condensed do-this-then-that version is the +[new-driver checklist](new-driver-checklist.md). That leaves three questions the kernel has to answer, because a process can't answer them for itself: diff --git a/etc/device-list/intel_gpu_device_ids.csv b/etc/device-list/intel_gpu_device_ids.csv new file mode 100644 index 0000000..c3f9b5d --- /dev/null +++ b/etc/device-list/intel_gpu_device_ids.csv @@ -0,0 +1,339 @@ +Vendor ID,Device ID,Graphics Family,GPU Name +0x8086,0x0152,HD Graphics,Xeon E3-1200 v2/3rd Gen Core GT1 +0x8086,0x0155,HD Graphics,Xeon E3-1200 v2/3rd Gen Core +0x8086,0x0156,HD Graphics,Ivy Bridge mobile GT1 +0x8086,0x0157,HD Graphics,Ivy Bridge mobile GT1 +0x8086,0x015a,HD Graphics,Xeon E3-1200 v2/Ivy Bridge +0x8086,0x0162,HD Graphics,Ivy Bridge GT2 (HD Graphics 4000) +0x8086,0x0166,HD Graphics,Ivy Bridge mobile GT2 (HD Graphics 4000) +0x8086,0x016a,HD Graphics,Xeon E3-1200 v2/3rd Gen Core GT3 +0x8086,0x0402,HD Graphics,Xeon E3-1200 v3/4th Gen Core GT1 +0x8086,0x0406,HD Graphics,Haswell GT1 +0x8086,0x040a,HD Graphics,Xeon E3-1200 v3 GT1 +0x8086,0x040b,HD Graphics,Haswell GT1 +0x8086,0x040e,HD Graphics,Haswell GT1 +0x8086,0x0412,HD Graphics,Xeon E3-1200 v3/4th Gen Core GT2 +0x8086,0x0416,HD Graphics,4th Gen Core GT2 +0x8086,0x041a,HD Graphics,Xeon E3-1200 v3 GT2 +0x8086,0x041b,HD Graphics,Haswell GT2 +0x8086,0x041e,HD Graphics,4th Gen Core Family GT2 +0x8086,0x0422,HD Graphics,Haswell GT3 +0x8086,0x0426,HD Graphics,Haswell GT3 +0x8086,0x042a,HD Graphics,Haswell GT3 +0x8086,0x042b,HD Graphics,Haswell GT3 +0x8086,0x042e,HD Graphics,Haswell GT3 +0x8086,0x0a02,HD Graphics,Haswell-ULT GT1 +0x8086,0x0a06,HD Graphics,Haswell-ULT GT1 +0x8086,0x0a0a,HD Graphics,Haswell-ULT GT1 +0x8086,0x0a0b,HD Graphics,Haswell-ULT GT1 +0x8086,0x0a0e,HD Graphics,Haswell-ULT GT1 +0x8086,0x0a12,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a16,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a1a,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a1b,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a1e,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a22,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a26,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a2a,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a2b,HD Graphics,Haswell-ULT GT2 +0x8086,0x0a2e,HD Graphics,Haswell-ULT GT2 +0x8086,0x0d02,Iris Pro Graphics,Crystal Well GT1 +0x8086,0x0d06,Iris Pro Graphics,Crystal Well GT2 +0x8086,0x0d0a,Iris Pro Graphics,Crystal Well GT2 +0x8086,0x0d0b,Iris Pro Graphics,Crystal Well GT2 +0x8086,0x0d0e,Iris Pro Graphics,Crystal Well GT2 +0x8086,0x0d12,Iris Pro Graphics,Crystal Well GT3 (Iris Pro 5200) +0x8086,0x0d16,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d1a,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d1b,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d1e,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d22,Iris Pro Graphics,Crystal Well (Iris Pro 5200) +0x8086,0x0d26,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d2a,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d2b,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d2e,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d32,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d36,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x0d3a,Iris Pro Graphics,Crystal Well GT3 +0x8086,0x1602,HD Graphics,Broadwell-U GT1 +0x8086,0x1606,HD Graphics,Broadwell-U GT1 +0x8086,0x160a,HD Graphics,Broadwell-U GT1 +0x8086,0x160b,HD Graphics,Broadwell-U GT1 +0x8086,0x160d,HD Graphics,Broadwell-U GT1 +0x8086,0x160e,HD Graphics,Broadwell-U GT1 +0x8086,0x1612,HD Graphics,Broadwell-H GT2 (HD Graphics 5600) +0x8086,0x1616,HD Graphics,Broadwell-U GT2 (HD Graphics 5500) +0x8086,0x161a,HD Graphics,Broadwell-U GT2 +0x8086,0x161b,HD Graphics,Broadwell-U GT2 +0x8086,0x161d,HD Graphics,Broadwell-U GT2 +0x8086,0x161e,HD Graphics,Broadwell-Y GT2 (HD Graphics 5300) +0x8086,0x1622,Iris Pro Graphics,Broadwell-DT/H GT3 (Iris Pro 6200) +0x8086,0x1626,HD Graphics,Broadwell-U GT3 (HD Graphics 6000) +0x8086,0x162a,Iris Pro Graphics,Broadwell-DT GT3 (Iris Pro P6300) +0x8086,0x162b,Iris Graphics,Broadwell-U GT3 (Iris 6100) +0x8086,0x162d,HD Graphics,Broadwell-U GT3 +0x8086,0x162e,HD Graphics,Broadwell-U GT3 +0x8086,0x1632,HD Graphics,Broadwell-U GT3 +0x8086,0x1636,HD Graphics,Broadwell-U GT3 +0x8086,0x163a,HD Graphics,Broadwell-U GT3 +0x8086,0x163b,HD Graphics,Broadwell-U GT3 +0x8086,0x163d,HD Graphics,Broadwell-U GT3 +0x8086,0x163e,HD Graphics,Broadwell-U GT3 +0x8086,0x1902,HD Graphics,Skylake-S GT1 (HD Graphics 510) +0x8086,0x1906,HD Graphics,Skylake-U GT1 (HD Graphics 510) +0x8086,0x190a,HD Graphics,Skylake-DT GT1 +0x8086,0x190b,HD Graphics,Skylake GT1 (HD Graphics 510) +0x8086,0x190e,HD Graphics,Skylake GT1 +0x8086,0x1912,HD Graphics,Skylake-S GT2 (HD Graphics 530) +0x8086,0x1913,HD Graphics,Skylake GT2 +0x8086,0x1915,HD Graphics,Skylake GT2 +0x8086,0x1916,HD Graphics,Skylake-U GT2 (HD Graphics 520) +0x8086,0x1917,HD Graphics,Skylake GT2 +0x8086,0x191a,HD Graphics,Skylake GT2 +0x8086,0x191b,HD Graphics,Skylake-H GT2 (HD Graphics 530) +0x8086,0x191d,HD Graphics,Skylake-DT/H GT2 (HD Graphics P530) +0x8086,0x191e,HD Graphics,Skylake-Y GT2 (HD Graphics 515) +0x8086,0x1921,HD Graphics,Skylake GT2 (HD Graphics 520) +0x8086,0x1923,HD Graphics,Skylake GT2 (HD Graphics 535) +0x8086,0x1926,Iris Graphics,Skylake-U GT3 (Iris Graphics 540) +0x8086,0x1927,Iris Graphics,Skylake-U GT3 (Iris Graphics 550) +0x8086,0x192a,Iris Graphics,Skylake GT3 +0x8086,0x192b,Iris Graphics,Skylake GT3 (Iris Graphics 555) +0x8086,0x192d,Iris Graphics,Skylake-H GT3 (Iris Graphics P555) +0x8086,0x1932,Iris Pro Graphics,Skylake GT4 (Iris Pro 580) +0x8086,0x193a,Iris Pro Graphics,Skylake-H GT4 (Iris Pro P580) +0x8086,0x193b,Iris Pro Graphics,Skylake-H GT4 (Iris Pro 580) +0x8086,0x193d,Iris Pro Graphics,Skylake-H GT4 (Iris Pro P580) +0x8086,0x1a84,UHD Graphics,Skylake-DT +0x8086,0x1a85,UHD Graphics,Skylake-DT +0x8086,0x5902,HD Graphics,Kaby Lake-S GT1 (HD Graphics 610) +0x8086,0x5906,HD Graphics,Kaby Lake-U GT1 (HD Graphics 610) +0x8086,0x5908,HD Graphics,Kaby Lake GT1 +0x8086,0x590a,HD Graphics,Kaby Lake GT1 +0x8086,0x590b,HD Graphics,Kaby Lake GT1 (HD Graphics 610) +0x8086,0x590e,HD Graphics,Kaby Lake GT1 +0x8086,0x5912,HD Graphics,Kaby Lake-S GT2 (HD Graphics 630) +0x8086,0x5913,HD Graphics,Kaby Lake GT2 +0x8086,0x5915,HD Graphics,Kaby Lake GT2 +0x8086,0x5916,HD Graphics,Kaby Lake-U GT2 (HD Graphics 620) +0x8086,0x5917,UHD Graphics,Kaby Lake-R GT2 (UHD Graphics 620) +0x8086,0x591a,HD Graphics,Kaby Lake GT2 +0x8086,0x591b,HD Graphics,Kaby Lake-H GT2 (HD Graphics 630) +0x8086,0x591c,UHD Graphics,Kaby Lake GT2 (UHD Graphics 615) +0x8086,0x591d,HD Graphics,Kaby Lake-DT GT2 (HD Graphics P630) +0x8086,0x591e,HD Graphics,Kaby Lake-Y GT2 (HD Graphics 615) +0x8086,0x5921,HD Graphics,Kaby Lake GT2 (HD Graphics 620) +0x8086,0x5923,HD Graphics,Kaby Lake GT2 (HD Graphics 635) +0x8086,0x5926,Iris Plus Graphics,Kaby Lake-U GT3 (Iris Plus 640) +0x8086,0x5927,Iris Plus Graphics,Kaby Lake-U GT3 (Iris Plus 650) +0x8086,0x592a,Iris Plus Graphics,Kaby Lake GT3 +0x8086,0x592b,Iris Plus Graphics,Kaby Lake GT3 +0x8086,0x5932,Iris Plus Graphics,Kaby Lake GT3 +0x8086,0x593a,Iris Plus Graphics,Kaby Lake GT3 +0x8086,0x593b,Iris Plus Graphics,Kaby Lake GT3 +0x8086,0x593d,Iris Plus Graphics,Kaby Lake GT3 +0x8086,0x5a40,Intel Graphics,Apollolake +0x8086,0x5a41,Intel Graphics,Apollolake +0x8086,0x5a42,Intel Graphics,Apollolake +0x8086,0x5a44,Intel Graphics,Apollolake +0x8086,0x5a49,Intel Graphics,Apollolake +0x8086,0x5a4a,Intel Graphics,Apollolake +0x8086,0x5a4c,Intel Graphics,Apollolake +0x8086,0x5a50,Intel Graphics,Apollolake +0x8086,0x5a51,Intel Graphics,Apollolake +0x8086,0x5a52,Intel Graphics,Apollolake +0x8086,0x5a54,Intel Graphics,Apollolake +0x8086,0x5a59,Intel Graphics,Apollolake +0x8086,0x5a5a,Intel Graphics,Apollolake +0x8086,0x5a5c,Intel Graphics,Apollolake +0x8086,0x5a71,Intel Graphics,Apollolake +0x8086,0x5a79,Intel Graphics,Apollolake +0x8086,0x5a84,HD Graphics,Apollo Lake GT1 (HD Graphics 505) +0x8086,0x5a85,HD Graphics,Apollo Lake GT1 (HD Graphics 500) +0x8086,0x3184,UHD Graphics,GeminiLake (UHD Graphics 605) +0x8086,0x3185,UHD Graphics,GeminiLake (UHD Graphics 600) +0x8086,0x3e90,UHD Graphics,Coffee Lake-S GT1 (UHD Graphics 610) +0x8086,0x3e91,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics 630) +0x8086,0x3e92,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics 630) +0x8086,0x3e93,UHD Graphics,Coffee Lake-S GT1 (UHD Graphics 610) +0x8086,0x3e94,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics P630) +0x8086,0x3e96,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics P630) +0x8086,0x3e98,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics 630) +0x8086,0x3e99,UHD Graphics,Coffee Lake GT2 +0x8086,0x3e9a,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics P630) +0x8086,0x3e9b,UHD Graphics,Coffee Lake-H GT2 (UHD Graphics 630) +0x8086,0x3e9c,UHD Graphics,Coffee Lake-S GT1 (UHD Graphics 610) +0x8086,0x3ea0,UHD Graphics,Whiskey Lake-U GT2 (UHD Graphics 620) +0x8086,0x3ea1,UHD Graphics,Whiskey Lake-U GT1 (UHD Graphics 610) +0x8086,0x3ea2,UHD Graphics,Whiskey Lake GT1 +0x8086,0x3ea3,UHD Graphics,Whiskey Lake GT1 +0x8086,0x3ea4,UHD Graphics,Whiskey Lake GT1 +0x8086,0x3ea5,Iris Plus Graphics,Coffee Lake-U GT3e (Iris Plus 655) +0x8086,0x3ea6,Iris Plus Graphics,Coffee Lake-U GT3 (Iris Plus 645) +0x8086,0x3ea7,Iris Plus Graphics,Whiskey Lake GT3 +0x8086,0x3ea8,Iris Plus Graphics,Coffee Lake-U GT3 (Iris Plus 655) +0x8086,0x3ea9,UHD Graphics,Coffee Lake-U GT2 (UHD Graphics 620) +0x8086,0x87c0,UHD Graphics,9th Gen Core (UHD Graphics 617) +0x8086,0x87ca,UHD Graphics,9th Gen Core (UHD Graphics 617) +0x8086,0x8a50,Iris Plus Graphics,Ice Lake Gen1 +0x8086,0x8a51,Iris Plus Graphics,Ice Lake GT2 (Iris Plus G7) +0x8086,0x8a52,Iris Plus Graphics,Ice Lake GT2 (Iris Plus G7) +0x8086,0x8a53,Iris Plus Graphics,Ice Lake GT2 (Iris Plus G7) +0x8086,0x8a54,Iris Plus Graphics,Ice Lake GT2 +0x8086,0x8a56,Iris Plus Graphics,Ice Lake GT1 (Iris Plus G1) +0x8086,0x8a57,Iris Plus Graphics,Ice Lake GT1 +0x8086,0x8a58,UHD Graphics,Ice Lake-Y GT1 (UHD Graphics G1) +0x8086,0x8a59,UHD Graphics,Ice Lake GT1 +0x8086,0x8a5a,Iris Plus Graphics,Ice Lake GT4 (Iris Plus G4) +0x8086,0x8a5b,Iris Plus Graphics,Ice Lake GT4 +0x8086,0x8a5c,Iris Plus Graphics,Ice Lake GT4 (Iris Plus G4) +0x8086,0x8a5d,Iris Plus Graphics,Ice Lake GT4 +0x8086,0x8a70,Iris Plus Graphics,Ice Lake +0x8086,0x8a71,Iris Plus Graphics,Ice Lake +0x8086,0x9a40,Iris Xe Graphics,Tiger Lake-UP4 GT2 +0x8086,0x9a49,Iris Xe Graphics,Tiger Lake-LP GT2 +0x8086,0x9a59,Iris Xe Graphics,Tiger Lake GT2 +0x8086,0x9a60,UHD Graphics,Tiger Lake-H GT1 +0x8086,0x9a68,UHD Graphics,Tiger Lake-H GT1 +0x8086,0x9a70,UHD Graphics,Tiger Lake-H GT1 +0x8086,0x9a78,UHD Graphics,Tiger Lake-LP GT2 (UHD Graphics G4) +0x8086,0x9ac0,Iris Xe Graphics,Tiger Lake +0x8086,0x9ac9,Iris Xe Graphics,Tiger Lake +0x8086,0x9ad9,Iris Xe Graphics,Tiger Lake +0x8086,0x9af8,Iris Xe Graphics,Tiger Lake +0x8086,0x9b21,UHD Graphics,Comet Lake-U GT2 (UHD Graphics 620) +0x8086,0x9b41,UHD Graphics,Comet Lake-U GT2 +0x8086,0x9ba0,UHD Graphics,Comet Lake GT1 +0x8086,0x9ba2,UHD Graphics,Comet Lake GT1 +0x8086,0x9ba4,UHD Graphics,Comet Lake-H GT1 (UHD Graphics 610) +0x8086,0x9ba5,UHD Graphics,Comet Lake GT1 +0x8086,0x9ba8,UHD Graphics,Comet Lake-S GT1 (UHD Graphics 610) +0x8086,0x9baa,UHD Graphics,Comet Lake GT1 +0x8086,0x9bab,UHD Graphics,Comet Lake GT1 +0x8086,0x9bac,UHD Graphics,Comet Lake GT1 +0x8086,0x9bc0,UHD Graphics,Comet Lake GT2 +0x8086,0x9bc2,UHD Graphics,Comet Lake GT2 +0x8086,0x9bc4,UHD Graphics,Comet Lake-H GT2 +0x8086,0x9bc5,UHD Graphics,Comet Lake-S GT2 (UHD Graphics 630) +0x8086,0x9bc6,UHD Graphics,Comet Lake-S GT2 (UHD Graphics P630) +0x8086,0x9bc8,UHD Graphics,Comet Lake-S GT2 (UHD Graphics 630) +0x8086,0x9bca,UHD Graphics,Comet Lake GT2 +0x8086,0x9bcb,UHD Graphics,Comet Lake GT2 +0x8086,0x9bcc,UHD Graphics,Comet Lake GT2 +0x8086,0x9be6,UHD Graphics,Comet Lake-S GT2 (UHD Graphics P630) +0x8086,0x9bf6,UHD Graphics,Coffee Lake-S GT2 (UHD Graphics P630) +0x8086,0x4555,UHD Graphics,Elkhart Lake GT2 (UHD Graphics Gen11 16EU) +0x8086,0x4571,UHD Graphics,Elkhart Lake GT2 (UHD Graphics Gen11 32EU) +0x8086,0x4500,Intel Graphics,Elkhart Lake GT1 +0x8086,0x4541,Intel Graphics,Elkhart Lake GT1 +0x8086,0x4551,Intel Graphics,Elkhart Lake GT1 +0x8086,0x4557,Intel Graphics,Elkhart Lake GT1 +0x8086,0x4570,Intel Graphics,Elkhart Lake GT1 +0x8086,0x4c80,Intel Graphics,Rocket Lake +0x8086,0x4c8a,UHD Graphics,Rocket Lake-S GT1 (UHD Graphics 750) +0x8086,0x4c8b,UHD Graphics,Rocket Lake-S GT1 (UHD Graphics 730) +0x8086,0x4c8c,Intel Graphics,Rocket Lake GT1 +0x8086,0x4c90,UHD Graphics,Rocket Lake-S GT1 (UHD Graphics P750) +0x8086,0x4c9a,UHD Graphics,Rocket Lake-S +0x8086,0x4e51,Intel Graphics,Jasper Lake GT1 +0x8086,0x4e55,UHD Graphics,Jasper Lake +0x8086,0x4e57,Intel Graphics,Jasper Lake GT1 +0x8086,0x4e61,UHD Graphics,Jasper Lake +0x8086,0x4e71,UHD Graphics,Jasper Lake +0x8086,0x4626,Intel Graphics,Alder Lake-P GT1 +0x8086,0x4628,UHD Graphics,Alder Lake-UP3 GT2 +0x8086,0x462a,Intel Graphics,Alder Lake-P GT1 +0x8086,0x4680,UHD Graphics,Alder Lake-S GT1 (UHD Graphics 770) +0x8086,0x4681,Intel Graphics,Alder Lake-S GT1 +0x8086,0x4682,UHD Graphics,Alder Lake-S GT1 (UHD Graphics 730) +0x8086,0x4683,Intel Graphics,Alder Lake-S GT1 +0x8086,0x4688,UHD Graphics,Alder Lake-HX GT1 (UHD Graphics 770) +0x8086,0x4689,Intel Graphics,Alder Lake-HX GT1 +0x8086,0x468a,Intel Graphics,Alder Lake-S +0x8086,0x468b,Intel Graphics,Alder Lake-S +0x8086,0x4690,UHD Graphics,Alder Lake-S GT1 (UHD Graphics 770) +0x8086,0x4691,Intel Graphics,Alder Lake-S GT1 +0x8086,0x4692,UHD Graphics,Alder Lake-S GT1 (UHD Graphics 730) +0x8086,0x4693,UHD Graphics,Alder Lake-S GT1 (UHD Graphics 710) +0x8086,0x46a0,Intel Graphics,Alder Lake-P GT2 +0x8086,0x46a1,UHD Graphics,Alder Lake-P GT1 +0x8086,0x46a2,Intel Graphics,Alder Lake-P GT1 +0x8086,0x46a3,UHD Graphics,Alder Lake-P GT1 +0x8086,0x46a6,Iris Xe Graphics,Alder Lake-P GT2 +0x8086,0x46a8,Iris Xe Graphics,Alder Lake-UP3 GT2 +0x8086,0x46aa,Iris Xe Graphics,Alder Lake-UP4 GT2 +0x8086,0x46b0,Iris Xe Graphics,Alder Lake-P +0x8086,0x46b1,Iris Xe Graphics,Alder Lake-P +0x8086,0x46b2,Intel Graphics,Alder Lake-P GT1 +0x8086,0x46b3,UHD Graphics,Alder Lake-UP3 GT1 +0x8086,0x46c0,Intel Graphics,Alder Lake-M GT1 +0x8086,0x46c1,Iris Xe Graphics,Alder Lake-M +0x8086,0x46c2,Intel Graphics,Alder Lake-M GT1 +0x8086,0x46c3,UHD Graphics,Alder Lake-UP4 GT1 +0x8086,0x46d0,UHD Graphics,Alder Lake-N +0x8086,0x46d1,UHD Graphics,Alder Lake-N +0x8086,0x46d2,UHD Graphics,Alder Lake-N +0x8086,0x46d3,Intel Graphics,Alder Lake-N +0x8086,0x46d4,Intel Graphics,Alder Lake-N +0x8086,0x7d40,Intel Graphics,Meteor Lake-M +0x8086,0x7d41,Intel Graphics,Arrow Lake-U +0x8086,0x7d45,Intel Graphics,Meteor Lake-P +0x8086,0x7d51,Arc Pro Graphics,Arrow Lake-P (Arc Pro 130T/140T) +0x8086,0x7d55,Intel Arc Graphics,Meteor Lake-P +0x8086,0x7d60,Intel Graphics,Meteor Lake-M +0x8086,0x7d67,Intel Graphics,Arrow Lake-S +0x8086,0x7dd1,Intel Graphics,Arrow Lake-P +0x8086,0x7dd5,Intel Graphics,Meteor Lake-P +0x8086,0xa720,UHD Graphics,Raptor Lake-P +0x8086,0xa721,UHD Graphics,Raptor Lake-P +0x8086,0xa780,UHD Graphics,Raptor Lake-S GT1 (UHD Graphics 770) +0x8086,0xa781,UHD Graphics,Raptor Lake-S +0x8086,0xa782,UHD Graphics,Raptor Lake-S +0x8086,0xa783,UHD Graphics,Raptor Lake-S +0x8086,0xa788,UHD Graphics,Raptor Lake-S +0x8086,0xa789,UHD Graphics,Raptor Lake-S +0x8086,0xa78a,UHD Graphics,Raptor Lake-S +0x8086,0xa78b,UHD Graphics,Raptor Lake-S +0x8086,0xa7a0,Iris Xe Graphics,Raptor Lake-P +0x8086,0xa7a1,Iris Xe Graphics,Raptor Lake-P +0x8086,0xa7a8,UHD Graphics,Raptor Lake-P +0x8086,0xa7a9,UHD Graphics,Raptor Lake-P +0x8086,0xa7aa,Intel Graphics,Raptor Lake-P +0x8086,0xa7ab,Intel Graphics,Raptor Lake-P +0x8086,0xa7ac,Intel Graphics,Raptor Lake-U +0x8086,0xa7ad,Intel Graphics,Raptor Lake-U +0x8086,0xb640,Intel Graphics,Arrow Lake-H +0x8086,0x4905,Iris Xe MAX Graphics,DG1 +0x8086,0x4906,Iris Xe Graphics,DG1 +0x8086,0x4907,Intel Graphics,DG1 Server +0x8086,0x4908,Iris Xe Graphics,DG1 +0x8086,0x4909,Iris Xe MAX Graphics,DG1 (Iris Xe MAX 100) +0x8086,0x5690,Arc Graphics,DG2 (Arc A770M) +0x8086,0x5691,Arc Graphics,DG2 (Arc A730M) +0x8086,0x5692,Arc Graphics,DG2 (Arc A550M) +0x8086,0x5693,Arc Graphics,DG2 (Arc A370M) +0x8086,0x5694,Arc Graphics,DG2 (Arc A350M) +0x8086,0x5695,Iris Xe MAX Graphics,DG2 (Iris Xe MAX A200M) +0x8086,0x5696,Arc Graphics,DG2 (Arc A570M) +0x8086,0x5697,Arc Graphics,DG2 (Arc A530M) +0x8086,0x5698,Arc Graphics,DG2 (Arc Xe Graphics) +0x8086,0x56a0,Arc Graphics,DG2 (Arc A770) +0x8086,0x56a1,Arc Graphics,DG2 (Arc A750) +0x8086,0x56a2,Arc Graphics,DG2 (Arc A580) +0x8086,0x56a3,Arc Graphics,DG2 (Arc Xe Graphics) +0x8086,0x56a4,Arc Graphics,DG2 (Arc Xe Graphics) +0x8086,0x56a5,Arc Graphics,DG2 (Arc A380) +0x8086,0x56a6,Arc Graphics,DG2 (Arc A310) +0x8086,0x56b0,Arc Pro Graphics,DG2 (Arc Pro A30M) +0x8086,0x56b1,Arc Pro Graphics,DG2 (Arc Pro A40/A50) +0x8086,0x56b2,Arc Pro Graphics,DG2 (Arc Pro A60M) +0x8086,0x56b3,Arc Pro Graphics,DG2 (Arc Pro A60) +0x8086,0x56ba,Arc Graphics,DG2 (Arc A380E) +0x8086,0x56bb,Arc Graphics,DG2 (Arc A310E) +0x8086,0x56bc,Arc Graphics,DG2 (Arc A370E) +0x8086,0x56bd,Arc Graphics,DG2 (Arc A350E) +0x8086,0x56be,Arc Graphics,DG2 (Arc A750E) +0x8086,0x56bf,Arc Graphics,DG2 (Arc A580E) +0x8086,0x56c0,Arc Graphics,DG2 (Data Center GPU Flex 170) +0x8086,0x56c1,Arc Graphics,DG2 (Data Center GPU Flex 140) +0x8086,0x56c2,Arc Graphics,DG2 (Data Center GPU Flex 170V) diff --git a/etc/devices.csv b/etc/devices.csv index 44afff1..7b73dcb 100644 --- a/etc/devices.csv +++ b/etc/devices.csv @@ -25,6 +25,7 @@ # # bus base class prog_if vendor device subsystem hid driver pci, 0C, 03, 30, *, *, *, *, /system/drivers/usb-xhci-bus +pci, 03, 00, 00, 8086, 4C8A, *, *, /system/drivers/intel-uhd-graphics-750 pci, 03, 80, *, 1AF4, 1050, *, *, /system/drivers/virtio-gpu usb, 03, 01, 01, *, *, *, *, /system/drivers/usb-hid-keyboard usb, 03, 01, 02, *, *, *, *, /system/drivers/usb-hid-mouse diff --git a/system/drivers/intel-uhd-graphics-750/intel-uhd-graphics-750.zig b/system/drivers/intel-uhd-graphics-750/intel-uhd-graphics-750.zig new file mode 100644 index 0000000..0ef4bb2 --- /dev/null +++ b/system/drivers/intel-uhd-graphics-750/intel-uhd-graphics-750.zig @@ -0,0 +1,82 @@ +//! /system/drivers/intel-uhd-graphics-750 — spawned by the device manager with +//! the device-tree id as argv[1]; claims that device and no other. + +const std = @import("std"); +const device = @import("driver"); +const ipc = @import("ipc"); +const memory = @import("memory"); +const process = @import("process"); +const service = @import("service"); + +/// No protocol yet: the kernel's IPC ceiling (MESSAGE_MAXIMUM) sizes the buffers. +const message_maximum = 256; + +var controller_id: u64 = 0; +var register_base: usize = 0; + +fn initialise(endpoint: ipc.Handle) bool { + _ = endpoint; // needed later, for irq binding and timers + + if (!device.claim(controller_id)) { + std.log.err("unable to claim device {d}", .{controller_id}); + return false; + } + + // Fetch our own descriptor back for the device's resources. + const buffer = memory.allocator().alloc(device.DeviceDescriptor, 64) catch return false; + defer memory.allocator().free(buffer); + const total = device.enumerate(buffer); + const descriptor = for (buffer[0..@min(total, buffer.len)]) |d| { + if (d.id == controller_id) break d; + } else { + std.log.err("device {d} not in the device tree", .{controller_id}); + return false; + }; + + // Log every resource BEFORE choosing one (see step 5). + var register_index: u64 = 0; + for (descriptor.resources[0..@intCast(descriptor.resource_count)], 0..) |resource, index| { + std.log.info("resource {d}: kind={d} start=0x{x} len=0x{x}", .{ + index, resource.kind, resource.start, resource.len, + }); + // The 16 MiB window is GTTMMADR, the register BAR (this device also has + // a 256 MiB memory BAR, GMADR — "first memory resource" would be wrong). + if (resource.kind == @intFromEnum(device.ResourceKind.memory) and + resource.len == 16 * 1024 * 1024) register_index = index; + } + if (register_index == 0) { + std.log.err("register BAR not found", .{}); + return false; + } + + register_base = device.mmioMap(controller_id, register_index) orelse { + std.log.err("mmio_map failed", .{}); + return false; + }; + std.log.info("registers mapped at 0x{x}", .{register_base}); + return true; +} + +fn onMessage(message: []const u8, reply: []u8, sender: u32, capability: ?ipc.Handle) usize { + _ = message; + _ = reply; + _ = sender; + _ = capability; + return 0; // no protocol yet; the zero-length ping is answered by the harness +} + +pub fn main(init: process.Init) void { + const argument = init.arguments.get(1) orelse { + std.log.err("missing device id (argv[1])", .{}); + return; + }; + controller_id = std.fmt.parseInt(u64, argument, 10) catch { + std.log.err("malformed device id '{s}'", .{argument}); + return; + }; + service.run(message_maximum, .{ + .init = initialise, + .on_message = onMessage, + // .on_notification only once an IRQ or timer is bound + }); +}