Intel_gpu.patch 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. diff --git a/package/firmware/linux-firmware/intel.mk b/package/firmware/linux-firmware/intel.mk
  2. index 923701c703d..7f60014ea6c 100644
  3. --- a/package/firmware/linux-firmware/intel.mk
  4. +++ b/package/firmware/linux-firmware/intel.mk
  5. @@ -176,3 +176,95 @@ define Package/e100-firmware/install
  6. $(INSTALL_DATA) $(PKG_BUILD_DIR)/e100/d102e_ucode.bin $(1)/lib/firmware/e100/
  7. endef
  8. $(eval $(call BuildPackage,e100-firmware))
  9. +
  10. +Package/i915-firmware = $(call Package/firmware-default,Intel GPU firmware)
  11. +define Package/i915-firmware/install
  12. + $(INSTALL_DIR) $(1)/lib/firmware/i915
  13. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_09.bin $(1)/lib/firmware/i915/
  14. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_09.bin $(1)/lib/firmware/i915/
  15. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_10.bin $(1)/lib/firmware/i915/
  16. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_12.bin $(1)/lib/firmware/i915/
  17. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_guc_62.0.3.bin $(1)/lib/firmware/i915/
  18. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adls_dmc_ver2_01.bin $(1)/lib/firmware/i915/
  19. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_dmc_ver1_07.bin $(1)/lib/firmware/i915/
  20. + ln -s /lib/firmware/i915/bxt_dmc_ver1_07.bin $(1)/lib/firmware/i915/bxt_dmc_ver1.bin
  21. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_32.0.3.bin $(1)/lib/firmware/i915/
  22. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_33.0.0.bin $(1)/lib/firmware/i915/
  23. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_49.0.1.bin $(1)/lib/firmware/i915/
  24. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_62.0.0.bin $(1)/lib/firmware/i915/
  25. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_ver8_7.bin $(1)/lib/firmware/i915/
  26. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_ver9_29.bin $(1)/lib/firmware/i915/
  27. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_2.0.0.bin $(1)/lib/firmware/i915/
  28. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_ver01_07_1398.bin $(1)/lib/firmware/i915/
  29. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_ver01_8_2893.bin $(1)/lib/firmware/i915/
  30. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_33.0.0.bin $(1)/lib/firmware/i915/
  31. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_49.0.1.bin $(1)/lib/firmware/i915/
  32. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_62.0.0.bin $(1)/lib/firmware/i915/
  33. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_huc_4.0.0.bin $(1)/lib/firmware/i915/
  34. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cnl_dmc_ver1_06.bin $(1)/lib/firmware/i915/
  35. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cnl_dmc_ver1_07.bin $(1)/lib/firmware/i915/
  36. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_dmc_ver2_02.bin $(1)/lib/firmware/i915/
  37. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_guc_49.0.1.bin $(1)/lib/firmware/i915/
  38. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_guc_62.0.0.bin $(1)/lib/firmware/i915/
  39. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_huc_7.7.1.bin $(1)/lib/firmware/i915/
  40. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_huc_7.9.3.bin $(1)/lib/firmware/i915/
  41. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_33.0.4.bin $(1)/lib/firmware/i915/
  42. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_49.0.1.bin $(1)/lib/firmware/i915/
  43. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_62.0.0.bin $(1)/lib/firmware/i915/
  44. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_huc_9.0.0.bin $(1)/lib/firmware/i915/
  45. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_dmc_ver1_04.bin $(1)/lib/firmware/i915/
  46. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_32.0.3.bin $(1)/lib/firmware/i915/
  47. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_33.0.0.bin $(1)/lib/firmware/i915/
  48. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_49.0.1.bin $(1)/lib/firmware/i915/
  49. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_62.0.0.bin $(1)/lib/firmware/i915/
  50. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_huc_4.0.0.bin $(1)/lib/firmware/i915/
  51. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_huc_ver03_01_2893.bin $(1)/lib/firmware/i915/
  52. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_07.bin $(1)/lib/firmware/i915/
  53. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_09.bin $(1)/lib/firmware/i915/
  54. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_32.0.3.bin $(1)/lib/firmware/i915/
  55. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_33.0.0.bin $(1)/lib/firmware/i915/
  56. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_49.0.1.bin $(1)/lib/firmware/i915/
  57. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_62.0.0.bin $(1)/lib/firmware/i915/
  58. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_huc_9.0.0.bin $(1)/lib/firmware/i915/
  59. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_huc_ver8_4_3238.bin $(1)/lib/firmware/i915/
  60. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_dmc_ver1_01.bin $(1)/lib/firmware/i915/
  61. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_dmc_ver1_04.bin $(1)/lib/firmware/i915/
  62. + ln -s /lib/firmware/i915/kbl_dmc_ver1_04.bin $(1)/lib/firmware/i915/kbl_dmc_ver1.bin
  63. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_32.0.3.bin $(1)/lib/firmware/i915/
  64. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_33.0.0.bin $(1)/lib/firmware/i915/
  65. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_49.0.1.bin $(1)/lib/firmware/i915/
  66. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_62.0.0.bin $(1)/lib/firmware/i915/
  67. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_ver9_14.bin $(1)/lib/firmware/i915/
  68. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_ver9_39.bin $(1)/lib/firmware/i915/
  69. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_huc_4.0.0.bin $(1)/lib/firmware/i915/
  70. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_huc_ver02_00_1810.bin $(1)/lib/firmware/i915/
  71. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/rkl_dmc_ver2_02.bin $(1)/lib/firmware/i915/
  72. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/rkl_dmc_ver2_03.bin $(1)/lib/firmware/i915/
  73. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_23.bin $(1)/lib/firmware/i915/
  74. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_26.bin $(1)/lib/firmware/i915/
  75. + ln -s /lib/firmware/i915/skl_dmc_ver1_26.bin $(1)/lib/firmware/i915/skl_dmc_ver1.bin
  76. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_27.bin $(1)/lib/firmware/i915/
  77. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_32.0.3.bin $(1)/lib/firmware/i915/
  78. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_33.0.0.bin $(1)/lib/firmware/i915/
  79. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_49.0.1.bin $(1)/lib/firmware/i915/
  80. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_62.0.0.bin $(1)/lib/firmware/i915/
  81. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver1.bin $(1)/lib/firmware/i915/
  82. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver4.bin $(1)/lib/firmware/i915/
  83. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver6_1.bin $(1)/lib/firmware/i915/
  84. + ln -s /lib/firmware/i915/skl_guc_ver6_1.bin $(1)/lib/firmware/i915/skl_guc_ver6.bin
  85. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver9_33.bin $(1)/lib/firmware/i915/
  86. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_huc_2.0.0.bin $(1)/lib/firmware/i915/
  87. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_huc_ver01_07_1398.bin $(1)/lib/firmware/i915/
  88. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_04.bin $(1)/lib/firmware/i915/
  89. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_06.bin $(1)/lib/firmware/i915/
  90. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_08.bin $(1)/lib/firmware/i915/
  91. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_12.bin $(1)/lib/firmware/i915/
  92. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_35.2.0.bin $(1)/lib/firmware/i915/
  93. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_49.0.1.bin $(1)/lib/firmware/i915/
  94. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_62.0.0.bin $(1)/lib/firmware/i915/
  95. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.0.12.bin $(1)/lib/firmware/i915/
  96. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.0.3.bin $(1)/lib/firmware/i915/
  97. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.5.0.bin $(1)/lib/firmware/i915/
  98. + $(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.9.3.bin $(1)/lib/firmware/i915/
  99. +endef
  100. +$(eval $(call BuildPackage,i915-firmware))
  101. diff --git a/package/kernel/linux/modules/virt.mk b/package/kernel/linux/modules/virt.mk
  102. index 5ed0d5dbbf2..a853a8c7980 100644
  103. --- a/package/kernel/linux/modules/virt.mk
  104. +++ b/package/kernel/linux/modules/virt.mk
  105. @@ -72,3 +72,64 @@ define KernelPackage/kvm-amd/description
  106. endef
  107. $(eval $(call KernelPackage,kvm-amd))
  108. +
  109. +define KernelPackage/vfio-mdev
  110. + SUBMENU:=Virtualization
  111. + TITLE:=VFIO driver support to to virtualize devices
  112. + DEPENDS:=@TARGET_x86_64
  113. + KCONFIG:= \
  114. + CONFIG_IOMMU_API=y \
  115. + CONFIG_MMU=y \
  116. + CONFIG_VFIO=y \
  117. + CONFIG_VFIO_NOIOMMU=y \
  118. + CONFIG_VFIO_PCI=y \
  119. + CONFIG_VFIO_PCI_IGD=y \
  120. + CONFIG_VFIO_MDEV \
  121. + CONFIG_VFIO_MDEV_DEVICE
  122. + FILES:= \
  123. + $(LINUX_DIR)/drivers/vfio/mdev/mdev.ko \
  124. + $(LINUX_DIR)/drivers/vfio/mdev/[email protected]
  125. + AUTOLOAD:=$(call AutoProbe,mdev vfio_mdev)
  126. +endef
  127. +
  128. +define KernelPackage/vfio-mdev/description
  129. + Provides a framework to virtualize devices.
  130. +endef
  131. +
  132. +$(eval $(call KernelPackage,vfio-mdev))
  133. +
  134. +define KernelPackage/i915-gvt
  135. + SUBMENU:=Virtualization
  136. + TITLE:=Enable KVM/VFIO support for Intel GVT-g
  137. + DEPENDS:=@TARGET_x86_64 +kmod-kvm-intel +kmod-drm-i915 +kmod-vfio-mdev
  138. + KCONFIG:= \
  139. + CONFIG_DRM_I915_GVT_KVMGT=m
  140. + FILES:=$(LINUX_DIR)/drivers/gpu/drm/i915/gvt/kvmgt.ko
  141. + AUTOLOAD:=$(call AutoProbe,kvmgt)
  142. +endef
  143. +
  144. +define KernelPackage/i915-gvt/description
  145. + Intel GVT-g is a technology that provides mediated device
  146. + passthrough for Intel GPUs (Broadwell and newer). It can
  147. + be used to virtualize the GPU for multiple guest virtual
  148. + machines, effectively providing near-native graphics performance
  149. + in the virtual machine and still letting your host use the
  150. + virtualized GPU normally.
  151. +
  152. + Choose this option if you want to enable Intel GVT-g graphics
  153. + virtualization technology host support with integrated graphics.
  154. + With GVT-g, it's possible to have one integrated graphics
  155. + device shared by multiple VMs under different hypervisors.
  156. +
  157. + Note that at least one hypervisor like Xen or KVM is required for
  158. + this driver to work, and it only supports newer device from
  159. + Broadwell+. For further information and setup guide, you can
  160. + visit: http://01.org/igvt-g.
  161. +
  162. + Now it's just a stub to support the modifications of i915 for
  163. + GVT device model. It requires at least one MPT modules for Xen/KVM
  164. + and other components of GVT device model to work. Use it under
  165. + you own risk.
  166. +endef
  167. +
  168. +$(eval $(call KernelPackage,i915-gvt))
  169. diff --git a/target/linux/x86/64/config-5.15 b/target/linux/x86/64/config-5.15
  170. index d168f3608ed7..21250d5fbfb8 100644
  171. --- a/target/linux/x86/64/config-5.15
  172. +++ b/target/linux/x86/64/config-5.15
  173. @@ -113,30 +113,16 @@ CONFIG_DRM_FBDEV_EMULATION=y
  174. CONFIG_DRM_FBDEV_OVERALLOC=100
  175. CONFIG_DRM_GEM_SHMEM_HELPER=y
  176. # CONFIG_DRM_HYPERV is not set
  177. -CONFIG_DRM_I915=y
  178. -CONFIG_DRM_I915_CAPTURE_ERROR=y
  179. -CONFIG_DRM_I915_COMPRESS_ERROR=y
  180. -# CONFIG_DRM_I915_DEBUG is not set
  181. -# CONFIG_DRM_I915_DEBUG_GUC is not set
  182. -# CONFIG_DRM_I915_DEBUG_MMIO is not set
  183. -# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
  184. -# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
  185. -CONFIG_DRM_I915_FENCE_TIMEOUT=10000
  186. CONFIG_DRM_I915_FORCE_PROBE=""
  187. -CONFIG_DRM_I915_GVT=y
  188. +CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
  189. +CONFIG_DRM_I915_FENCE_TIMEOUT=10000
  190. +CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
  191. CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
  192. -# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
  193. -CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
  194. CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
  195. CONFIG_DRM_I915_REQUEST_TIMEOUT=20000
  196. -# CONFIG_DRM_I915_SELFTEST is not set
  197. +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
  198. CONFIG_DRM_I915_STOP_TIMEOUT=100
  199. -# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
  200. -# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
  201. CONFIG_DRM_I915_TIMESLICE_DURATION=1
  202. -CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
  203. -CONFIG_DRM_I915_USERPTR=y
  204. -# CONFIG_DRM_I915_WERROR is not set
  205. CONFIG_DRM_KMS_HELPER=y
  206. CONFIG_DRM_MIPI_DSI=y
  207. CONFIG_DRM_PANEL=y
  208. @@ -174,6 +160,7 @@ CONFIG_FB_CMDLINE=y
  209. CONFIG_FB_DEFERRED_IO=y
  210. CONFIG_FB_EFI=y
  211. CONFIG_FB_HYPERV=y
  212. +# CONFIG_FB_INTEL is not set
  213. CONFIG_FB_MODE_HELPERS=y
  214. CONFIG_FB_SIMPLE=y
  215. CONFIG_FB_SYS_COPYAREA=y
  216. @@ -420,6 +407,7 @@ CONFIG_THERMAL_WRITABLE_TRIPS=y
  217. # CONFIG_TOSHIBA_BT_RFKILL is not set
  218. CONFIG_TREE_RCU=y
  219. CONFIG_TREE_SRCU=y
  220. +# CONFIG_UACCE is not set
  221. # CONFIG_UCLAMP_TASK is not set
  222. CONFIG_UCS2_STRING=y
  223. # CONFIG_UNWINDER_ORC is not set