Hi Danilo, On Thu, Jul 20, 2023 at 02:14:22AM +0200, Danilo Krummrich wrote: > Add infrastructure to keep track of GPU virtual address (VA) mappings > with a decicated VA space manager implementation. > > New UAPIs, motivated by Vulkan sparse memory bindings graphics drivers > start implementing, allow userspace applications to request multiple and > arbitrary GPU VA mappings of buffer objects. The DRM GPU VA manager is > intended to serve the following purposes in this context. > > 1) Provide infrastructure to track GPU VA allocations and mappings, > making using an interval tree (RB-tree). > > 2) Generically connect GPU VA mappings to their backing buffers, in > particular DRM GEM objects. > > 3) Provide a common implementation to perform more complex mapping > operations on the GPU VA space. In particular splitting and merging > of GPU VA mappings, e.g. for intersecting mapping requests or partial > unmap requests. > > Acked-by: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> > Acked-by: Matthew Brost <matthew.brost@xxxxxxxxx> > Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > Tested-by: Matthew Brost <matthew.brost@xxxxxxxxx> > Tested-by: Donald Robson <donald.robson@xxxxxxxxxx> > Suggested-by: Dave Airlie <airlied@xxxxxxxxxx> > Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx> For some reason this breaks the drm_exec kunit patches: $ ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/gpu/drm/tests --cross_compile aarch64-linux-gnu- --arch arm64 --raw_output drm_exec.test_lock [13:31:14] Configuring KUnit Kernel ... [13:31:14] Building KUnit Kernel ... Populating config with: $ make ARCH=arm64 O=.kunit olddefconfig CROSS_COMPILE=aarch64-linux-gnu- Building with: $ make ARCH=arm64 O=.kunit --jobs=32 CROSS_COMPILE=aarch64-linux-gnu- [13:31:16] Starting KUnit Kernel (1/1)... Running tests with: $ qemu-system-aarch64 -nodefaults -m 1024 -kernel .kunit/arch/arm64/boot/Image.gz -append 'kunit.filter_glob=drm_exec.test_lock kunit.enable=1 console=ttyAMA0 kunit_shutdown=reboot' -no-reboot -nographic -serial stdio -machine virt -cpu cortex-a57 KTAP version 1 1..1 KTAP version 1 # Subtest: drm_exec 1..1 Unable to handle kernel NULL pointer dereference at virtual address 00000000000000b0 Mem abort info: ESR = 0x0000000096000005 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x05: level 1 translation fault Data abort info: ISV = 0, ISS = 0x00000005 CM = 0, WnR = 0 [00000000000000b0] user address but active_mm is swapper Internal error: Oops: 0000000096000005 [#1] SMP CPU: 0 PID: 21 Comm: kunit_try_catch Tainted: G N 6.4.0-rc7-02032-ge6303f323b1a #17 Hardware name: linux,dummy-virt (DT) pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : drm_gem_private_object_init+0x54/0xa8 lr : drm_gem_private_object_init+0x44/0xa8 sp : ffffffc008763c10 x29: ffffffc008763c10 x28: 0000000000000000 x27: 0000000000000000 x26: 0000000000000000 x25: 0000000000000000 x24: ffffffc00800bb90 x23: ffffffc00820d3e4 x22: ffffff8000fb8880 x21: ffffffc008763db8 x20: ffffffc0086171d8 x19: ffffffc008763cb8 x18: ffffffffffffffff x17: ffffffc0085b0da8 x16: 000000005a832b7d x15: 0000000000000000 x14: 0000000000000001 x13: 0000000000000000 x12: ffffff8000cbe380 x11: ffffff8000ca0000 x10: 00000000000007b0 x9 : 0000000000000000 x8 : ffffffc008763cb8 x7 : 0000000000000000 x6 : 000000000000003f x5 : 0000000000000040 x4 : 0000000000000008 x3 : 0000000000000030 x2 : ffffffc0085b9118 x1 : 0000000000000000 x0 : 0000000000000000 Call trace: drm_gem_private_object_init+0x54/0xa8 test_lock+0x58/0xf4 kunit_try_run_case+0x48/0xa8 kunit_generic_run_threadfn_adapter+0x20/0x2c kthread+0xd4/0xd8 ret_from_fork+0x10/0x20 Code: f9407e60 b40002a0 f9401a80 b9406a81 (b940b000) ---[ end trace 0000000000000000 ]--- ^CERROR:root:Build interruption occurred. Cleaning console. qemu-system-aarch64: terminating on signal 2 [13:31:17] Elapsed time: 3.396s total, 0.001s configuring, 1.978s building, 1.417s running Maxime
Attachment:
signature.asc
Description: PGP signature