libdrm+kernel patches/fixes from wayland porting work

Jeff Frasca <[email protected]> Thu, 30 Jan 2025 23:13:45 -0800
Newsgroups gmane.os.netbsd.devel.x11
Message-ID <CAOyJ0LkpRQZsZs_S38-i6nVyE=E_7GA43vqvQk131qPLrHAbWg@mail.gmail.com>
--00000000000008b941062cfb4bd2
Content-Type: text/plain; charset="UTF-8"

I am back on my project of trying to get my wlroots style Wayland
compositor running on NetBSD.

A little background, my compositor uses an OpenGLESv2 renderer
to draw everything to the screen.  It takes DMA-BUF handles from
client programs and uses those for rendering, to avoid a lot of
data copying and trips into and out of the graphics hardware.
The short answer is, the contraption is a DRM master, and all the
wayland programs need to be hardware accelerated.  Which means the
full accelerated pipeline needs to be working.

My experience with NetBSD is that X11 ends up running anything with
OpenGL via the LLVMpipe software renderer, and I think I figured
out why.

The libdrm routines that Mesa uses to initialize itself for both the
compositor and the client apps leans heavily on the GET_UNIQUE ioctl.
However, only the master node has a unique string, and the render
nodes do not.  For both the compositor and the client, Mesa calls
GET_UNIQUE on the render node's device fd, gets back an error and
then gives up on setting up full acceleration.

OpenBSD and DragonflyBSD solve this by hardcoding the bus type as
PCI and using a second ioctl to get the PCI device information.

I went and implemented an analogous ioctl for NetBSD and modified
libdrm to use it.  This allowed me to get my compositor up and
running against 10.1.

I did my work using libdrm+Mesa from pkgsrc-2024q4 rather than
xsrc, but I ported my patch back to the libdrm in the xsrc tree.
It looks like there are calls to drmSetInterfaceVersion hiding in
xorg-server and some of the video drivers, so this might turn on all
sorts of code paths that haven't really been used, and thus break
stuff, but also, it's necessary for full graphics acceleration,
so it could make everyone's workstations even more awesome!  :-)

I've included three patches, one for the kernel code and two for
libdrm.  The one for pkgsrc is meant to replace the diff portion
of the patch for xf86drm.c in x11/libdrm.  xsrc-10.1-xf86drm_c.patch
should be a direct patch for the version of xf86drm.c in the NetBSD
sources.  Let me know if you need to rebase them onto current, or
if there are any other questions/concerns.

Thanks!
Jeff

--00000000000008b941062cfb4bd2
Content-Type: application/octet-stream; 
	name="syssrc-10.1-pciinfo_ioctl.patch"
Content-Disposition: attachment; filename="syssrc-10.1-pciinfo_ioctl.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_m6kfh2201>
X-Attachment-Id: f_m6kfh2201

ZGlmZiAtcnUgc3lzL2V4dGVybmFsL2JzZC9kcm0yL2Rpc3QvZHJtL2RybV9pbnRlcm5hbC5oLm9y
aWcgc3lzL2V4dGVybmFsL2JzZC9kcm0yL2Rpc3QvZHJtL2RybV9pbnRlcm5hbC5oCi0tLSBzeXMv
ZXh0ZXJuYWwvYnNkL2RybTIvZGlzdC9kcm0vZHJtX2ludGVybmFsLmgub3JpZwkyMDIxLTEyLTE5
IDAzOjEwOjA5LjAwMDAwMDAwMCAtMDgwMAorKysgc3lzL2V4dGVybmFsL2JzZC9kcm0yL2Rpc3Qv
ZHJtL2RybV9pbnRlcm5hbC5oCTIwMjUtMDEtMjYgMjE6MzY6MjMuNjAyNDI0NDM2IC0wODAwCkBA
IC01NSw2ICs1NSw3IEBACiAJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogdm9p
ZCBkcm1fcGNpX2FncF9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogaW50IGRybV9w
Y2lfc2V0X2J1c2lkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fbWFzdGVyICpt
YXN0ZXIpOworaW50IGRybV9nZXRwY2lpbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg
KmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKIAogI2Vsc2UKIApAQCAtNzQsNiAr
NzUsMTIgQEAKIAlyZXR1cm4gLUVJTlZBTDsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgZHJtX2dl
dHBjaWluZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgdm9pZCAqZGF0YSwgc3RydWN0
IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKICNlbmRpZgog
CiAvKiBkcm1fcHJpbWUuYyAqLwpkaWZmIC1ydSBzeXMvZXh0ZXJuYWwvYnNkL2RybTIvZGlzdC9k
cm0vZHJtX2lvY3RsLmMub3JpZyBzeXMvZXh0ZXJuYWwvYnNkL2RybTIvZGlzdC9kcm0vZHJtX2lv
Y3RsLmMKLS0tIHN5cy9leHRlcm5hbC9ic2QvZHJtMi9kaXN0L2RybS9kcm1faW9jdGwuYy5vcmln
CTIwMjItMTAtMTUgMDg6MTk6MjguMDAwMDAwMDAwIC0wNzAwCisrKyBzeXMvZXh0ZXJuYWwvYnNk
L2RybTIvZGlzdC9kcm0vZHJtX2lvY3RsLmMJMjAyNS0wMS0yNiAyMTozOTozOC4xMjIyMDQzNjUg
LTA4MDAKQEAgLTU5OCw2ICs1OTgsOSBAQAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxf
ZGVzYyBkcm1faW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfVkVSU0lPTiwg
ZHJtX3ZlcnNpb24sIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RM
X0dFVF9VTklRVUUsIGRybV9nZXR1bmlxdWUsIDApLAorI2lmZGVmIF9fTmV0QlNEX18KKwlEUk1f
SU9DVExfREVGKERSTV9JT0NUTF9HRVRfUENJSU5GTywgZHJtX2dldHBjaWluZm8sIERSTV9SRU5E
RVJfQUxMT1cpLAorI2VuZGlmCiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfR0VUX01BR0lDLCBk
cm1fZ2V0bWFnaWMsIDApLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX0lSUV9CVVNJRCwgZHJt
X2lycV9ieV9idXNpZCwgRFJNX01BU1RFUnxEUk1fUk9PVF9PTkxZKSwKIApkaWZmIC1ydSBzeXMv
ZXh0ZXJuYWwvYnNkL2RybTIvZGlzdC9pbmNsdWRlL3VhcGkvZHJtL2RybS5oLm9yaWcgc3lzL2V4
dGVybmFsL2JzZC9kcm0yL2Rpc3QvaW5jbHVkZS91YXBpL2RybS9kcm0uaAotLS0gc3lzL2V4dGVy
bmFsL2JzZC9kcm0yL2Rpc3QvaW5jbHVkZS91YXBpL2RybS9kcm0uaC5vcmlnCTIwMjEtMTItMjAg
MDQ6NTY6MDcuMDAwMDAwMDAwIC0wODAwCisrKyBzeXMvZXh0ZXJuYWwvYnNkL2RybTIvZGlzdC9p
bmNsdWRlL3VhcGkvZHJtL2RybS5oCTIwMjUtMDEtMjYgMjI6MTU6MTIuMzIyNjYxNTAzIC0wODAw
CkBAIC04NjEsNiArODYxLDkgQEAKICNkZWZpbmUgRFJNX0lPQ1RMX0dFTV9PUEVOCQlEUk1fSU9X
UigweDBiLCBzdHJ1Y3QgZHJtX2dlbV9vcGVuKQogI2RlZmluZSBEUk1fSU9DVExfR0VUX0NBUAkJ
RFJNX0lPV1IoMHgwYywgc3RydWN0IGRybV9nZXRfY2FwKQogI2RlZmluZSBEUk1fSU9DVExfU0VU
X0NMSUVOVF9DQVAJRFJNX0lPVyggMHgwZCwgc3RydWN0IGRybV9zZXRfY2xpZW50X2NhcCkKKyNp
ZiBkZWZpbmVkKF9fTmV0QlNEX18pCisjZGVmaW5lIERSTV9JT0NUTF9HRVRfUENJSU5GTwkJRFJN
X0lPV1IoMHgwZSwgc3RydWN0IGRybV9wY2lpbmZvKQorI2VuZGlmCiAKICNkZWZpbmUgRFJNX0lP
Q1RMX1NFVF9VTklRVUUJCURSTV9JT1coIDB4MTAsIHN0cnVjdCBkcm1fdW5pcXVlKQogI2RlZmlu
ZSBEUk1fSU9DVExfQVVUSF9NQUdJQwkJRFJNX0lPVyggMHgxMSwgc3RydWN0IGRybV9hdXRoKQpA
QCAtMTAyNCw2ICsxMDI3LDE1IEBACiAJX191MzIgY3J0Y19pZDsgLyogMCBvbiBvbGRlciBrZXJu
ZWxzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhpcyAqLwogfTsKIAorI2lmZGVmIF9fTmV0QlNEX18K
K3N0cnVjdCBkcm1fcGNpaW5mbyB7CisJdV9pbnQJCWRvbWFpbjsKKwl1X2ludAkJYnVzOworCXVf
aW50CQlkZXY7CisJdV9pbnQJCWZ1bmM7Cit9OworI2VuZGlmCisKIC8qIEV2ZW50IGRlbGl2ZXJl
ZCBhdCBzZXF1ZW5jZS4gVGltZSBzdGFtcCBtYXJrcyB3aGVuIHRoZSBmaXJzdCBwaXhlbAogICog
b2YgdGhlIHJlZnJlc2ggY3ljbGUgbGVhdmVzIHRoZSBkaXNwbGF5IGVuZ2luZSBmb3IgdGhlIGRp
c3BsYXkKICAqLwpkaWZmIC1ydSBzeXMvZXh0ZXJuYWwvYnNkL2RybTIvcGNpL2RybV9wY2lfYnVz
aWQuYy5vcmlnIHN5cy9leHRlcm5hbC9ic2QvZHJtMi9wY2kvZHJtX3BjaV9idXNpZC5jCi0tLSBz
eXMvZXh0ZXJuYWwvYnNkL2RybTIvcGNpL2RybV9wY2lfYnVzaWQuYy5vcmlnCTIwMjItMDctMjMg
MDE6NDU6MDMuMDAwMDAwMDAwIC0wNzAwCisrKyBzeXMvZXh0ZXJuYWwvYnNkL2RybTIvcGNpL2Ry
bV9wY2lfYnVzaWQuYwkyMDI1LTAxLTI2IDIyOjE0OjU4LjYxNTQyNjExMyAtMDgwMApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L3Bj
aS5oPgogCisjaW5jbHVkZSA8ZHJtL2RybS5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXV0aC5oPgog
I2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSAiLi4vZGlzdC9kcm0vZHJtX2lu
dGVybmFsLmgiCkBAIC02MCwzICs2MSwyNCBAQAogCiAJcmV0dXJuIDA7CiB9CisKKy8qCisgKiBH
ZXQgYnVzIGluZm9ybWF0aW9uIGRpcmVjdGx5CisgKi8KK2ludAorZHJtX2dldHBjaWluZm8oc3Ry
dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3By
aXYpCit7CisJc3RydWN0IGRybV9wY2lpbmZvICppbmZvID0gZGF0YTsKKwljb25zdCBzdHJ1Y3Qg
cGNpX2F0dGFjaF9hcmdzICpjb25zdCBwYSA9ICZkZXYtPnBkZXYtPnBkX3BhOworCisJaWYgKGRl
di0+cGRldiA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT1RUWTsKKworCWluZm8tPmRvbWFpbiA9IGRl
dmljZV91bml0KGRldmljZV9wYXJlbnQoZGV2LT5kZXYpKTsKKwlpbmZvLT5idXMgPSBwYS0+cGFf
YnVzOworCWluZm8tPmRldiA9IHBhLT5wYV9kZXZpY2U7CisJaW5mby0+ZnVuYyA9IHBhLT5wYV9m
dW5jdGlvbjsKKworCXJldHVybiAwOworfQorCg==
--00000000000008b941062cfb4bd2
Content-Type: application/octet-stream; name="xsrc-10.1-xf86drm_c.patch"
Content-Disposition: attachment; filename="xsrc-10.1-xf86drm_c.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_m6kfh2262>
X-Attachment-Id: f_m6kfh2262

LS0tIHhmODZkcm0uYy5vcmlnCTIwMjUtMDEtMzAgMjI6MDE6MzUuODMwNDcwMDgyIC0wODAwCisr
KyB4Zjg2ZHJtLmMJMjAyNS0wMS0zMCAyMjowNzowNi42Mzk5NjMzOTAgLTA4MDAKQEAgLTExOSw2
ICsxMTksMTUgQEAKIH07CiAKICNkZWZpbmUgRFJNX0lPQ1RMX0dFVF9QQ0lJTkZPCURSTV9JT1Io
MHgxNSwgc3RydWN0IGRybV9wY2lpbmZvKQorI2VsaWYgZGVmaW5lZChfX05ldEJTRF9fKQorc3Ry
dWN0IGRybV9wY2lpbmZvIHsKKwl1X2ludCAgICAgICAgICAgZG9tYWluOworCXVfaW50ICAgICAg
ICAgICBidXM7CisJdV9pbnQgICAgICAgICAgIGRldjsKKwl1X2ludCAgICAgICAgICAgZnVuYzsK
K307CisKKyNkZWZpbmUgRFJNX0lPQ1RMX0dFVF9QQ0lJTkZPICAgRFJNX0lPV1IoMHgwZSwgc3Ry
dWN0IGRybV9wY2lpbmZvKQogI2VuZGlmCiAKICNkZWZpbmUgRFJNX01TR19WRVJCT1NJVFkgMwpA
QCAtMzQ1NSw3ICszNDY0LDExIEBACiAgICAgaWYgKCFkZXZfbmFtZSkKICAgICAgICAgcmV0dXJu
IE5VTEw7CiAKKyNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCisgICAgbiA9IHNucHJpbnRmKGJ1Ziwg
c2l6ZW9mKGJ1ZiksIGRldl9uYW1lLCBEUk1fRElSX05BTUUsIG1pbiArIGRybUdldE1pbm9yQmFz
ZSh0eXBlKSk7CisjZWxzZQogICAgIG4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBkZXZf
bmFtZSwgRFJNX0RJUl9OQU1FLCBtaW4pOworI2VuZGlmCiAgICAgaWYgKG4gPT0gLTEgfHwgbiA+
PSBzaXplb2YoYnVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM1NzcsNjYgKzM1OTAs
NyBAQAogICAgICAgICBpZiAoc3Vic3lzdGVtX3R5cGUgPCAwKQogICAgICAgICAgICAgcmV0dXJu
IERSTV9CVVNfVklSVElPOwogICAgICB9Ci0jZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCi0gICAg
aW50IHR5cGUsIGZkOwotICAgIGRybVNldFZlcnNpb24gc3Y7Ci0gICAgY2hhciAqYnVmOwotICAg
IHVuc2lnbmVkIGRvbWFpbiwgYnVzLCBkZXY7Ci0gICAgaW50IGZ1bmM7Ci0gICAgaW50IHJldDsK
LQotICAgIC8qIEdldCB0aGUgdHlwZSBvZiBkZXZpY2Ugd2UncmUgbG9va2luZyBmb3IgdG8gcGlj
ayB0aGUgcmlnaHQgcGF0aG5hbWUuICAqLwotICAgIHR5cGUgPSBkcm1HZXRNaW5vclR5cGUobWFq
LCBtaW4pOwotICAgIGlmICh0eXBlID09IC0xKQotCXJldHVybiAtRU5PREVWOwotCi0gICAgLyog
T3BlbiB0aGUgZGV2aWNlLiAgRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBpdCBpZiBpdCdzIG5vdCB0aGVy
ZS4gICovCi0gICAgZmQgPSBkcm1PcGVuTWlub3IobWluLCAwLCB0eXBlKTsKLSAgICBpZiAoZmQg
PCAwKQotCXJldHVybiAtZXJybm87Ci0KLSAgICAvKgotICAgICAqIFNldCB0aGUgaW50ZXJmYWNl
IHZlcnNpb24gdG8gMS40IG9yIDEuMSwgd2hpY2ggaGFzIHRoZSBlZmZlY3Qgb2YKLSAgICAgKiBw
b3B1bGF0aW5nIHRoZSBidXMgaWQgZm9yIHVzLgotICAgICAqLwotICAgIHN2LmRybV9kaV9tYWpv
ciA9IDE7Ci0gICAgc3YuZHJtX2RpX21pbm9yID0gNDsKLSAgICBzdi5kcm1fZGRfbWFqb3IgPSAt
MTsKLSAgICBzdi5kcm1fZGRfbWlub3IgPSAtMTsKLSAgICBpZiAoZHJtU2V0SW50ZXJmYWNlVmVy
c2lvbihmZCwgJnN2KSkgewotCXN2LmRybV9kaV9tYWpvciA9IDE7Ci0Jc3YuZHJtX2RpX21pbm9y
ID0gMTsKLQlzdi5kcm1fZGRfbWFqb3IgPSAtMTsKLQlzdi5kcm1fZGRfbWlub3IgPSAtMTsKLQlp
ZiAoZHJtU2V0SW50ZXJmYWNlVmVyc2lvbihmZCwgJnN2KSkgewotCSAgICAvKgotCSAgICAgKiBX
ZSdyZSBwcm9iYWJseSBub3QgdGhlIG1hc3Rlci4gIEhvcGUgdGhlIG1hc3RlciBhbHJlYWR5Ci0J
ICAgICAqIHNldCB0aGUgdmVyc2lvbiB0byA+PTEuMSBzbyB0aGF0IHdlIGNhbiBnZXQgdGhlIGJ1
c2lkLgotCSAgICAgKi8KLQl9Ci0gICAgfQotCi0gICAgLyogR2V0IHRoZSBidXMgaWQuICAqLwot
ICAgIGJ1ZiA9IGRybUdldEJ1c2lkKGZkKTsKLQotICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUg
ZGV2aWNlIG5vdy4gICovCi0gICAgKHZvaWQpY2xvc2UoZmQpOwotCi0gICAgLyogSWYgdGhlcmUg
aXMgbm8gYnVzIGlkLCBmYWlsLiAgKi8KLSAgICBpZiAoYnVmID09IE5VTEwpCi0JcmV0dXJuIC1F
Tk9ERVY7Ci0KLSAgICAvKiBGaW5kIGEgc3RyaW5nIHdlIGtub3cgYWJvdXQ7IG90aGVyd2lzZSAt
RUlOVkFMLiAgKi8KLSAgICByZXQgPSAtRUlOVkFMOwotICAgIGlmIChzdHJuY21wKGJ1ZiwgInBj
aToiLCA0KSA9PSAwKQotCXJldCA9IERSTV9CVVNfUENJOwotCi0gICAgLyogV2UncmUgZG9uZSB3
aXRoIHRoZSBidXMgaWQuICAqLwotICAgIGZyZWUoYnVmKTsKLQotICAgIC8qIFN1Y2Nlc3Mgb3Ig
bm90LCB3ZSdyZSBkb25lLiAgKi8KLSAgICByZXR1cm4gcmV0OwotI2VsaWYgZGVmaW5lZChfX09w
ZW5CU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2VsaWYgZGVmaW5lZChfX09wZW5C
U0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pCiAg
ICAgcmV0dXJuIERSTV9CVVNfUENJOwogI2Vsc2UKICN3YXJuaW5nICJNaXNzaW5nIGltcGxlbWVu
dGF0aW9uIG9mIGRybVBhcnNlU3Vic3lzdGVtVHlwZSIKQEAgLTM3NDcsNzQgKzM3MDEsNyBAQAog
ICAgIGluZm8tPmZ1bmMgPSBmdW5jOwogCiAgICAgcmV0dXJuIDA7Ci0jZWxpZiBkZWZpbmVkKF9f
TmV0QlNEX18pCi0gICAgaW50IHR5cGUsIGZkOwotICAgIGRybVNldFZlcnNpb24gc3Y7Ci0gICAg
Y2hhciAqYnVmOwotICAgIHVuc2lnbmVkIGRvbWFpbiwgYnVzLCBkZXY7Ci0gICAgaW50IGZ1bmM7
Ci0gICAgaW50IHJldDsKLQotICAgIC8qIEdldCB0aGUgdHlwZSBvZiBkZXZpY2Ugd2UncmUgbG9v
a2luZyBmb3IgdG8gcGljayB0aGUgcmlnaHQgcGF0aG5hbWUuICAqLwotICAgIHR5cGUgPSBkcm1H
ZXRNaW5vclR5cGUobWFqLCBtaW4pOwotICAgIGlmICh0eXBlID09IC0xKQotCXJldHVybiAtRU5P
REVWOwotCi0gICAgLyogT3BlbiB0aGUgZGV2aWNlLiAgRG9uJ3QgdHJ5IHRvIGNyZWF0ZSBpdCBp
ZiBpdCdzIG5vdCB0aGVyZS4gICovCi0gICAgZmQgPSBkcm1PcGVuTWlub3IobWluLCAwLCB0eXBl
KTsKLSAgICBpZiAoZmQgPCAwKQotCXJldHVybiAtZXJybm87Ci0KLSAgICAvKgotICAgICAqIFNl
dCB0aGUgaW50ZXJmYWNlIHZlcnNpb24gdG8gMS40IG9yIDEuMSwgd2hpY2ggaGFzIHRoZSBlZmZl
Y3Qgb2YKLSAgICAgKiBwb3B1bGF0aW5nIHRoZSBidXMgaWQgZm9yIHVzLgotICAgICAqLwotICAg
IHN2LmRybV9kaV9tYWpvciA9IDE7Ci0gICAgc3YuZHJtX2RpX21pbm9yID0gNDsKLSAgICBzdi5k
cm1fZGRfbWFqb3IgPSAtMTsKLSAgICBzdi5kcm1fZGRfbWlub3IgPSAtMTsKLSAgICBpZiAoZHJt
U2V0SW50ZXJmYWNlVmVyc2lvbihmZCwgJnN2KSkgewotCXN2LmRybV9kaV9tYWpvciA9IDE7Ci0J
c3YuZHJtX2RpX21pbm9yID0gMTsKLQlzdi5kcm1fZGRfbWFqb3IgPSAtMTsKLQlzdi5kcm1fZGRf
bWlub3IgPSAtMTsKLQlpZiAoZHJtU2V0SW50ZXJmYWNlVmVyc2lvbihmZCwgJnN2KSkgewotICAg
ICAgICAgICAgLyoKLQkgICAgICogV2UncmUgcHJvYmFibHkgbm90IHRoZSBtYXN0ZXIuICBIb3Bl
IHRoZSBtYXN0ZXIgYWxyZWFkeQotCSAgICAgKiBzZXQgdGhlIHZlcnNpb24gdG8gPj0xLjEgc28g
dGhhdCB3ZSBjYW4gZ2V0IHRoZSBidXNpZC4KLQkgICAgICovCi0JfQotICAgIH0KLQotICAgIC8q
IEdldCB0aGUgYnVzIGlkLiAgKi8KLSAgICBidWYgPSBkcm1HZXRCdXNpZChmZCk7Ci0KLSAgICAv
KiBXZSdyZSBkb25lIHdpdGggdGhlIGRldmljZSBub3cuICAqLwotICAgICh2b2lkKWNsb3NlKGZk
KTsKLQotICAgIC8qIElmIHRoZXJlIGlzIG5vIGJ1cyBpZCwgZmFpbC4gICovCi0gICAgaWYgKGJ1
ZiA9PSBOVUxMKQotCXJldHVybiAtRU5PREVWOwotCi0gICAgLyogUGFyc2UgdGhlIGJ1cyBpZC4g
ICovCi0gICAgcmV0ID0gc3NjYW5mKGJ1ZiwgInBjaTolMDR4OiUwMng6JTAyeC4lZCIsICZkb21h
aW4sICZidXMsICZkZXYsICZmdW5jKTsKLQotICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgYnVz
IGlkLiAgKi8KLSAgICBmcmVlKGJ1Zik7Ci0KLSAgICAvKiBJZiBzY2FuZiBkaWRuJ3QgcmV0dXJu
IDQgLS0gZG9tYWluLCBidXMsIGRldiwgZnVuYyAtLSB0aGVuIGZhaWwuICAqLwotICAgIGlmIChy
ZXQgIT0gNCkKLQlyZXR1cm4gLUVOT0RFVjsKLQotICAgIC8qIFBvcHVsYXRlIHRoZSByZXN1bHRz
LiAgKi8KLSAgICBpbmZvLT5kb21haW4gPSBkb21haW47Ci0gICAgaW5mby0+YnVzID0gYnVzOwot
ICAgIGluZm8tPmRldiA9IGRldjsKLSAgICBpbmZvLT5mdW5jID0gZnVuYzsKLQotICAgIC8qIFN1
Y2Nlc3MhICAqLwotICAgIHJldHVybiAwOwotI2VsaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwg
ZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2VsaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVm
aW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fTmV0QlNEX18pCiAgICAgc3RydWN0IGRy
bV9wY2lpbmZvIHBpbmZvOwogICAgIGludCBmZCwgdHlwZTsKIAo=
--00000000000008b941062cfb4bd2
Content-Type: application/octet-stream; name="pkgsrc2024q4-xf86drm_c.patch"
Content-Disposition: attachment; filename="pkgsrc2024q4-xf86drm_c.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_m6kfh21q0>
X-Attachment-Id: f_m6kfh21q0

LS0tIHhmODZkcm0uYy5vcmlnCTIwMjQtMTItMDQgMTA6MzA6MzAuMDAwMDAwMDAwIC0wODAwCisr
KyB4Zjg2ZHJtLmMJMjAyNS0wMS0zMCAyMTo0NToyMC45Nzc5MjE3NTggLTA4MDAKQEAgLTg1LDcg
Kzg1LDEwIEBACiAjZW5kaWYKIAogI2lmZGVmIF9fTmV0QlNEX18KLSNkZWZpbmUgRFJNX01BSk9S
IDM0CisjZGVmaW5lIERSTV9NQUpPUiAxODAKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNs
dWRlIDxkZXYvcGNpL3BjaXJlZy5oPgorI2luY2x1ZGUgPHBjaS5oPgogI2VuZGlmCiAKICNpZmRl
ZiBfX09wZW5CU0RfXwpAQCAtMTE0LDYgKzExNywxNSBAQAogfTsKIAogI2RlZmluZSBEUk1fSU9D
VExfR0VUX1BDSUlORk8JRFJNX0lPUigweDE1LCBzdHJ1Y3QgZHJtX3BjaWluZm8pCisjZWxpZiBk
ZWZpbmVkKF9fTmV0QlNEX18pCitzdHJ1Y3QgZHJtX3BjaWluZm8geworICAgICAgICB1X2ludCAg
ICAgICAgICAgZG9tYWluOworICAgICAgICB1X2ludCAgICAgICAgICAgYnVzOworICAgICAgICB1
X2ludCAgICAgICAgICAgZGV2OworICAgICAgICB1X2ludCAgICAgICAgICAgZnVuYzsKK307CisK
KyNkZWZpbmUgRFJNX0lPQ1RMX0dFVF9QQ0lJTkZPICAgRFJNX0lPV1IoMHgwZSwgc3RydWN0IGRy
bV9wY2lpbmZvKQogI2VuZGlmCiAKICNkZWZpbmUgRFJNX01TR19WRVJCT1NJVFkgMwpAQCAtMzUw
Niw3ICszNTE4LDExIEBACiAgICAgaWYgKCFkZXZfbmFtZSkKICAgICAgICAgcmV0dXJuIE5VTEw7
CiAKKyNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCisgICAgbiA9IHNucHJpbnRmKGJ1Ziwgc2l6ZW9m
KGJ1ZiksIGRldl9uYW1lLCBEUk1fRElSX05BTUUsIG1pbiArIGRybUdldE1pbm9yQmFzZSh0eXBl
KSk7CisjZWxzZQogICAgIG4gPSBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBkZXZfbmFtZSwg
RFJNX0RJUl9OQU1FLCBtaW4pOworI2VuZGlmCiAgICAgaWYgKG4gPT0gLTEgfHwgbiA+PSBzaXpl
b2YoYnVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM2MjksNyArMzY0NSw3IEBACiAg
ICAgICAgICAgICByZXR1cm4gRFJNX0JVU19WSVJUSU87CiAgICAgIH0KICAgICByZXR1cm4gc3Vi
c3lzdGVtX3R5cGU7Ci0jZWxpZiBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fRHJh
Z29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCisjZWxpZiBkZWZpbmVkKF9fT3BlbkJT
RF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8
IGRlZmluZWQoX19OZXRCU0RfXykKICAgICByZXR1cm4gRFJNX0JVU19QQ0k7CiAjZWxzZQogI3dh
cm5pbmcgIk1pc3NpbmcgaW1wbGVtZW50YXRpb24gb2YgZHJtUGFyc2VTdWJzeXN0ZW1UeXBlIgpA
QCAtMzczNyw3ICszNzUzLDcgQEAKICAgICBpbmZvLT5mdW5jID0gZnVuYzsKIAogICAgIHJldHVy
biAwOwotI2VsaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9f
KQorI2VsaWYgZGVmaW5lZChfX09wZW5CU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8
fCBkZWZpbmVkKF9fTmV0QlNEX18pCiAgICAgc3RydWN0IGRybV9wY2lpbmZvIHBpbmZvOwogICAg
IGludCBmZCwgdHlwZTsKIApAQCAtMzkwNSw2ICszOTIxLDQ4IEBACiAgICAgICAgIHJldHVybiBw
YXJzZV9jb25maWdfc3lzZnNfZmlsZShtYWosIG1pbiwgZGV2aWNlKTsKIAogICAgIHJldHVybiAw
OworI2VsaWYgZGVmaW5lZChfX05ldEJTRF9fKQorICAgIGRybVBjaUJ1c0luZm8gYnVzaW5mbzsK
KyAgICBjaGFyIGZuYW1lW1BBVEhfTUFYXTsKKyAgICBpbnQgcGNpZmQ7CisgICAgcGNpcmVnX3Qg
aWQsIGNsYXNzLCBzdWJzeXM7CisgICAgaW50IHJldDsKKworICAgIC8qIEZpbmQgd2hlcmUgb24g
dGhlIGJ1cyB0aGUgZGV2aWNlIGxpdmVzLiAgKi8KKyAgICByZXQgPSBkcm1QYXJzZVBjaUJ1c0lu
Zm8obWFqLCBtaW4sICZidXNpbmZvKTsKKyAgICBpZiAocmV0KQorCXJldHVybiByZXQ7CisKKyAg
ICAvKiBPcGVuIHRoZSBwY2lOIGRldmljZSBub2RlIHRvIGdldCBhdCBpdHMgY29uZmlnIHJlZ2lz
dGVycy4gICovCisgICAgaWYgKHNucHJpbnRmKGZuYW1lLCBzaXplb2YgZm5hbWUsICIvZGV2L3Bj
aSV1IiwgYnVzaW5mby5kb21haW4pCisJPj0gc2l6ZW9mIGZuYW1lKQorCXJldHVybiAtRU5PREVW
OworICAgIGlmICgocGNpZmQgPSBvcGVuKGZuYW1lLCBPX1JET05MWSkpID09IC0xKQorCXJldHVy
biAtZXJybm87CisKKyAgICByZXQgPSAtMTsKKyAgICAvKiBSZWFkIHRoZSBpZCBhbmQgY2xhc3Mg
cGNpIGNvbmZpZyByZWdpc3RlcnMuICAqLworICAgIGlmIChwY2lidXNfY29uZl9yZWFkKHBjaWZk
LCBidXNpbmZvLmJ1cywgYnVzaW5mby5kZXYsIGJ1c2luZm8uZnVuYywKKwkgICAgUENJX0lEX1JF
RywgJmlkKSA9PSAtMSkKKwlnb3RvIG91dDsKKyAgICBpZiAocGNpYnVzX2NvbmZfcmVhZChwY2lm
ZCwgYnVzaW5mby5idXMsIGJ1c2luZm8uZGV2LCBidXNpbmZvLmZ1bmMsCisJICAgIFBDSV9DTEFT
U19SRUcsICZjbGFzcykgPT0gLTEpCisJZ290byBvdXQ7CisgICAgaWYgKHBjaWJ1c19jb25mX3Jl
YWQocGNpZmQsIGJ1c2luZm8uYnVzLCBidXNpbmZvLmRldiwgYnVzaW5mby5mdW5jLAorCSAgICBQ
Q0lfU1VCU1lTX0lEX1JFRywgJnN1YnN5cykgPT0gLTEpCisJZ290byBvdXQ7CisKKyAgICByZXQg
PSAwOworICAgIGRldmljZS0+dmVuZG9yX2lkID0gUENJX1ZFTkRPUihpZCk7CisgICAgZGV2aWNl
LT5kZXZpY2VfaWQgPSBQQ0lfUFJPRFVDVChpZCk7CisgICAgZGV2aWNlLT5zdWJ2ZW5kb3JfaWQg
PSBQQ0lfU1VCU1lTX1ZFTkRPUihzdWJzeXMpOworICAgIGRldmljZS0+c3ViZGV2aWNlX2lkID0g
UENJX1NVQlNZU19JRChzdWJzeXMpOworICAgIGRldmljZS0+cmV2aXNpb25faWQgPSBQQ0lfUkVW
SVNJT04oY2xhc3MpOworb3V0OgorICAgIGlmIChyZXQgPT0gLTEpCisJcmV0ID0gLWVycm5vOwor
ICAgIGNsb3NlKHBjaWZkKTsKKyAgICByZXR1cm4gcmV0OwogI2VsaWYgZGVmaW5lZChfX09wZW5C
U0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKQogICAgIHN0cnVjdCBkcm1fcGNpaW5mbyBw
aW5mbzsKICAgICBpbnQgZmQsIHR5cGU7Cg==
--00000000000008b941062cfb4bd2--