diff options
author | 2019-12-25 11:31:41 +0000 | |
---|---|---|
committer | 2019-12-25 11:31:41 +0000 | |
commit | a4e118acf302a673a7affcccef258b7778ea0e9c (patch) | |
tree | 91c2369df44bd11ce15d10e00032c41caeee61a9 /sys/dev/pci/drm/drm_linux.c | |
parent | Condense a few multi line comments into single line ones. While here (diff) | |
download | wireguard-openbsd-a4e118acf302a673a7affcccef258b7778ea0e9c.tar.xz wireguard-openbsd-a4e118acf302a673a7affcccef258b7778ea0e9c.zip |
Hook up the shrinker for inteldrm(4). This is a "light" version that only
drops graphics buffers that are cached and not in active use.
Help from beck@ for pointing out how to hook this up to our pagedaemon.
ok jsg@
Diffstat (limited to 'sys/dev/pci/drm/drm_linux.c')
-rw-r--r-- | sys/dev/pci/drm/drm_linux.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/sys/dev/pci/drm/drm_linux.c b/sys/dev/pci/drm/drm_linux.c index ffd8ded926d..1fb37929613 100644 --- a/sys/dev/pci/drm/drm_linux.c +++ b/sys/dev/pci/drm/drm_linux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: drm_linux.c,v 1.51 2019/11/30 11:19:17 visa Exp $ */ +/* $OpenBSD: drm_linux.c,v 1.52 2019/12/25 11:31:41 kettenis Exp $ */ /* * Copyright (c) 2013 Jonathan Gray <jsg@openbsd.org> * Copyright (c) 2015, 2016 Mark Kettenis <kettenis@openbsd.org> @@ -1867,3 +1867,28 @@ pci_resize_resource(struct pci_dev *pdev, int bar, int nsize) return 0; } + +TAILQ_HEAD(, shrinker) shrinkers = TAILQ_HEAD_INITIALIZER(shrinkers); + +int +register_shrinker(struct shrinker *shrinker) +{ + TAILQ_INSERT_TAIL(&shrinkers, shrinker, next); + return 0; +} + +void +drmbackoff(long npages) +{ + struct shrink_control sc; + struct shrinker *shrinker; + u_long ret; + + shrinker = TAILQ_FIRST(&shrinkers); + while (shrinker && npages > 0) { + sc.nr_to_scan = npages; + ret = shrinker->scan_objects(shrinker, &sc); + npages -= ret; + shrinker = TAILQ_NEXT(shrinker, next); + } +} |