genode/repos/os/src/drivers
Sebastian Sumpf 3daa94ff2e gpu/intel: Add support for Gen9+
This commit contains features and buf fixes:

* Catch errors during resource allocation

* Because Mesa tries to allocate fence (hardware) registers for each
  batch buffer execution, do not allocate new fences for buffer objects
  that are already fenced

* Add support for global hardware status page. Each context additionally
  has a per-process hardware status page, which we used to set the
  global hardware status page during Vgpu switch. This was obviously
  wrong. There is only one global hardware status page (set once during
  initialization) and a distinct per-process page for contexts.

* Write the sequence number of the currently executing batch buffer to
  dword 52 of the per-process hardware status page. We use the pipe line
  command with QW_WRITE (quad word write), GLOBAL_GTT_IVB disabled
  (address space is per-process address space), and STORE_DATA_INDEX
  enabled (write goes to offset of hardware status page). This command
  used to write to the scratch page. But Linux now uses the first
  reserved word of the per-process hardware status page.

* Add Gen9+ WaEnableGapsTsvCreditFix workaround. This sets the "GAPS TSV
  Credit fix Enable" bit of the Arbiter control register (GARBCNTLREG)
  as described by the documentation this bit should be set by the BIOS
  but is not on most Gen9/9.5 platforms. Not setting this bit leads to
  random GPU hangs.

* Increase the context size from 20 to 22 pages for Gen9. On Gen8 the
  hardware context is 20 pages (1 hardware status page + 19 ring context
  register pages). On Gen9 the size of the ring context registers has
  increased by two pages to 21 pages or 81.3125 KBytes as the IGD
  documentation states.

* The logical ring size in the ring buffer control of the execlist
  context has to be programmed with number of pages - 1. So 0 is 1 page.
  We programmed the actual number of pages before, leading to ring
  buffer execution of NOOPs if page behind our ring buffer was empty or
  GPU hangs if there was data on the page.

issue #4260
2021-10-13 14:46:50 +02:00
..
acpi acpi_drv: use expanding reporter 2021-04-20 12:10:58 +02:00
ahci platform_session: cache arg for alloc_dma_buffer 2021-04-20 12:10:57 +02:00
audio/spec/linux Avoid use of deprecated Xml_node methods 2020-05-18 10:16:14 +02:00
framebuffer ram_fb_drv: RAM framebuffer driver for Qemu 2021-08-30 15:00:38 +02:00
gpio Streamline platform-device API on ARM 2021-04-20 12:10:58 +02:00
gpu/intel gpu/intel: Add support for Gen9+ 2021-10-13 14:46:50 +02:00
i2c i2c: extend API to support transactions 2021-05-28 14:16:45 +02:00
nic linux_nic_drv: optionally report MAC address 2021-05-28 14:16:45 +02:00
nvme platform_session: cache arg for alloc_dma_buffer 2021-04-20 12:10:57 +02:00
platform imx8mq_platform_drv: introduce reset domains 2021-05-28 14:16:45 +02:00
ps2 platform driver: make device info XML optional 2021-05-05 11:31:16 +02:00
rtc rtc_drv: defer init until first use 2021-04-20 12:03:03 +02:00
sd_card platform driver: make device info XML optional 2021-05-05 11:31:16 +02:00
touch/synaptics_dsx platform driver: make device info XML optional 2021-05-05 11:31:16 +02:00
uart Retire Exynos 5 support (fix #3725) 2020-04-17 12:53:57 +02:00
usb_block usb_block: fix upper block-number range check 2020-08-25 11:50:11 +02:00
virtdev_rom platform driver: make device info XML optional 2021-05-05 11:31:16 +02:00