From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Subject: [RFC i-g-t v3 3/5] igt_kms: Add helpers for watching for sysfs hotplug events Date: Wed, 30 Nov 2016 20:24:46 -0500 Message-ID: <20161201012448.16334-4-lyude@redhat.com> References: <20161201012448.16334-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 08DCD6E320 for ; Thu, 1 Dec 2016 01:24:55 +0000 (UTC) In-Reply-To: <20161201012448.16334-1-lyude@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Lyude List-Id: intel-gfx@lists.freedesktop.org VGhpcyBhZGRzIHNvbWUgYmFzaWMgaGVscGVycyBmb3IgY29ubmVjdGluZyB0byB1ZGV2IGFuZCB3 YXRjaGluZyBmb3IKc3lzZnMgaG90cGx1ZyBldmVudHMuCgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8 bHl1ZGVAcmVkaGF0LmNvbT4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gUmVtb3ZlIHVudXNlZCBhcmcg ZnJvbSBkb2N1bWVudGF0aW9uCi0tLQogbGliL2lndF9rbXMuYyB8IDEwOCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2tt cy5oIHwgICA2ICsrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA5ODk3MDRlLi5jYTM3 YzQ3IDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21zLmMKQEAgLTM4 LDYgKzM4LDEwIEBACiAjZWxpZiBIQVZFX1NZU19LRF9ICiAjaW5jbHVkZSA8c3lzL2tkLmg+CiAj ZW5kaWYKKyNpZmRlZiBIQVZFX1VERVYKKyNpbmNsdWRlIDxsaWJ1ZGV2Lmg+CisjaW5jbHVkZSA8 cG9sbC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAK QEAgLTI3NjAsNiArMjc2NCwxMTAgQEAgdm9pZCBpZ3RfcmVzZXRfY29ubmVjdG9ycyh2b2lkKQog CQkJICAgICAgImRldGVjdCIpOwogfQogCisjaWZkZWYgSEFWRV9VREVWCitzdGF0aWMgc3RydWN0 IHVkZXZfbW9uaXRvciAqaG90cGx1Z19tb247CisKKy8qKgorICogaWd0X3dhdGNoX2hvdHBsdWc6 CisgKgorICogQmVnaW4gbW9uaXRvcmluZyB1ZGV2IGZvciBob3RwbHVnIGV2ZW50cy4KKyAqLwor dm9pZCBpZ3Rfd2F0Y2hfaG90cGx1Zyh2b2lkKQoreworCXN0cnVjdCB1ZGV2ICp1ZGV2OworCWlu dCByZXQsIGZsYWdzLCBmZDsKKworCWlmIChob3RwbHVnX21vbikKKwkJaWd0X2NsZWFudXBfaG90 cGx1ZygpOworCisJdWRldiA9IHVkZXZfbmV3KCk7CisJaWd0X2Fzc2VydCh1ZGV2ICE9IE5VTEwp OworCisJaG90cGx1Z19tb24gPSB1ZGV2X21vbml0b3JfbmV3X2Zyb21fbmV0bGluayh1ZGV2LCAi dWRldiIpOworCWlndF9hc3NlcnQoaG90cGx1Z19tb24gIT0gTlVMTCk7CisKKwlyZXQgPSB1ZGV2 X21vbml0b3JfZmlsdGVyX2FkZF9tYXRjaF9zdWJzeXN0ZW1fZGV2dHlwZShob3RwbHVnX21vbiwK KwkJCQkJCQkgICAgICAiZHJtIiwKKwkJCQkJCQkgICAgICAiZHJtX21pbm9yIik7CisJaWd0X2Fz c2VydF9lcShyZXQsIDApOworCXJldCA9IHVkZXZfbW9uaXRvcl9maWx0ZXJfdXBkYXRlKGhvdHBs dWdfbW9uKTsKKwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7CisJcmV0ID0gdWRldl9tb25pdG9yX2Vu YWJsZV9yZWNlaXZpbmcoaG90cGx1Z19tb24pOworCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKKwor CS8qIFNldCB0aGUgZmQgZm9yIHVkZXYgYXMgbm9uIGJsb2NraW5nICovCisJZmQgPSB1ZGV2X21v bml0b3JfZ2V0X2ZkKGhvdHBsdWdfbW9uKTsKKwlmbGFncyA9IGZjbnRsKGZkLCBGX0dFVEZMLCAw KTsKKwlpZ3RfYXNzZXJ0KGZsYWdzKTsKKworCWZsYWdzIHw9IE9fTk9OQkxPQ0s7CisJaWd0X2Fz c2VydF9uZXEoZmNudGwoZmQsIEZfU0VURkwsIGZsYWdzKSwgLTEpOworfQorCisvKioKKyAqIGln dF9ob3RwbHVnX2RldGVjdGVkOgorICogQHRpbWVvdXRfc2VjczogSG93IGxvbmcgdG8gd2FpdCBm b3IgYSBob3RwbHVnIGV2ZW50IHRvIG9jY3VyLgorICoKKyAqIEFzc2VydCB0aGF0IGEgaG90cGx1 ZyBldmVudCB3YXMgcmVjZWl2ZWQgc2luY2Ugd2UgbGFzdCBjaGVja2VkIHRoZSBtb25pdG9yLgor ICoKKyAqIFJldHVybnM6IHRydWUgaWYgYSBzeXNmcyBob3RwbHVnIGV2ZW50IHdhcyByZWNlaXZl ZCwgZmFsc2UgaWYgd2UgdGltZWQgb3V0CisgKi8KK2Jvb2wgaWd0X2hvdHBsdWdfZGV0ZWN0ZWQo aW50IHRpbWVvdXRfc2VjcykKK3sKKwlzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldjsKKwljb25zdCBj aGFyICpob3RwbHVnX3ZhbDsKKwlzdHJ1Y3QgcG9sbGZkIGZkID0geworCQkuZmQgPSB1ZGV2X21v bml0b3JfZ2V0X2ZkKGhvdHBsdWdfbW9uKSwKKwkJLmV2ZW50cyA9IFBPTExJTgorCX07CisJYm9v bCBob3RwbHVnX3JlY2VpdmVkID0gZmFsc2U7CisKKwkvKiBHbyB0aHJvdWdoIGFsbCBvZiB0aGUg ZXZlbnRzIHBlbmRpbmcgb24gdGhlIHVkZXYgbW9uaXRvci4gT25jZSB3ZQorCSAqIHJlY2VpdmUg YSBob3RwbHVnLCB3ZSBjb250aW51ZSBnb2luZyB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBldmVu dHMKKwkgKiBzbyB0aGF0IHJlZHVuZGFudCBob3RwbHVnIGV2ZW50cyBkb24ndCBjaGFuZ2UgdGhl IHJlc3VsdHMgb2YgZnV0dXJlCisJICogY2hlY2tzCisJICovCisJd2hpbGUgKCFob3RwbHVnX3Jl Y2VpdmVkICYmIHBvbGwoJmZkLCAxLCB0aW1lb3V0X3NlY3MgKiAxMDAwKSkgeworCQlkZXYgPSB1 ZGV2X21vbml0b3JfcmVjZWl2ZV9kZXZpY2UoaG90cGx1Z19tb24pOworCisJCWhvdHBsdWdfdmFs ID0gdWRldl9kZXZpY2VfZ2V0X3Byb3BlcnR5X3ZhbHVlKGRldiwgIkhPVFBMVUciKTsKKwkJaWYg KGhvdHBsdWdfdmFsICYmIGF0b2koaG90cGx1Z192YWwpID09IDEpCisJCQlob3RwbHVnX3JlY2Vp dmVkID0gdHJ1ZTsKKworCQl1ZGV2X2RldmljZV91bnJlZihkZXYpOworCX0KKworCXJldHVybiBo b3RwbHVnX3JlY2VpdmVkOworfQorCisvKioKKyAqIGlndF9mbHVzaF9ob3RwbHVnczoKKyAqCisg KiBHZXQgcmlkIG9mIGFueSBwZW5kaW5nIGhvdHBsdWcgZXZlbnRzCisgKi8KK3ZvaWQgaWd0X2Zs dXNoX2hvdHBsdWdzKHZvaWQpCit7CisJc3RydWN0IHVkZXZfZGV2aWNlICpkZXY7CisKKwl3aGls ZSAoKGRldiA9IHVkZXZfbW9uaXRvcl9yZWNlaXZlX2RldmljZShob3RwbHVnX21vbikpKQorCQl1 ZGV2X2RldmljZV91bnJlZihkZXYpOworfQorCisvKioKKyAqIGlndF9jbGVhbnVwX2hvdHBsdWc6 CisgKgorICogQ2xlYW51cCB0aGUgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSAjaWd0X3dhdGNoX2hv dHBsdWcKKyAqLwordm9pZCBpZ3RfY2xlYW51cF9ob3RwbHVnKHZvaWQpCit7CisJc3RydWN0IHVk ZXYgKnVkZXYgPSB1ZGV2X21vbml0b3JfZ2V0X3VkZXYoaG90cGx1Z19tb24pOworCisJdWRldl9t b25pdG9yX3VucmVmKGhvdHBsdWdfbW9uKTsKKwlob3RwbHVnX21vbiA9IE5VTEw7CisJdWRldl91 bnJlZih1ZGV2KTsKK30KKyNlbmRpZgorCiAvKioKICAqIGttc3Rlc3RfZ2V0X3ZibF9mbGFnOgog ICogQHBpcGVfaWQ6IFBpcGUgdG8gY29udmVydCB0byBmbGFnIHJlcHJlc2VudGF0aW9uLgpkaWZm IC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5kZXggNjQyMmFkYy4uOTUz OTVjZCAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC00 NzksNSArNDc5LDExIEBAIHVpbnQzMl90IGttc3Rlc3RfZ2V0X3ZibF9mbGFnKHVpbnQzMl90IHBp cGVfaWQpOwogY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYmFzZV9lZGlkKHZvaWQp OwogY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYWx0X2VkaWQodm9pZCk7CiAKKyNp ZmRlZiBIQVZFX1VERVYKK3ZvaWQgaWd0X3dhdGNoX2hvdHBsdWcodm9pZCk7Citib29sIGlndF9o b3RwbHVnX2RldGVjdGVkKGludCB0aW1lb3V0X3NlY3MpOwordm9pZCBpZ3RfZmx1c2hfaG90cGx1 Z3Modm9pZCk7Cit2b2lkIGlndF9jbGVhbnVwX2hvdHBsdWcodm9pZCk7CisjZW5kaWYKIAogI2Vu ZGlmIC8qIF9fSUdUX0tNU19IX18gKi8KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK