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--