From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kirti Wankhede Subject: Re: [PATCH v10 01/19] vfio: Mediated device Core driver Date: Sat, 29 Oct 2016 15:36:36 +0530 Message-ID: References: <1477517366-27871-1-git-send-email-kwankhede@nvidia.com> <1477517366-27871-2-git-send-email-kwankhede@nvidia.com> <581425F9.5070902@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------9E51F6BEDC26C1804717BA15" Cc: , , , , , , , , To: Jike Song Return-path: In-Reply-To: <581425F9.5070902@intel.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org --------------9E51F6BEDC26C1804717BA15 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit On 10/29/2016 10:00 AM, Jike Song wrote: > On 10/27/2016 05:29 AM, Kirti Wankhede wrote: >> +int mdev_register_device(struct device *dev, const struct parent_ops *ops) >> +{ >> + int ret; >> + struct parent_device *parent; >> + >> + /* check for mandatory ops */ >> + if (!ops || !ops->create || !ops->remove || !ops->supported_type_groups) >> + return -EINVAL; >> + >> + dev = get_device(dev); >> + if (!dev) >> + return -EINVAL; >> + >> + mutex_lock(&parent_list_lock); >> + >> + /* Check for duplicate */ >> + parent = __find_parent_device(dev); >> + if (parent) { >> + ret = -EEXIST; >> + goto add_dev_err; >> + } >> + >> + parent = kzalloc(sizeof(*parent), GFP_KERNEL); >> + if (!parent) { >> + ret = -ENOMEM; >> + goto add_dev_err; >> + } >> + >> + kref_init(&parent->ref); >> + mutex_init(&parent->lock); >> + >> + parent->dev = dev; >> + parent->ops = ops; >> + >> + ret = parent_create_sysfs_files(parent); >> + if (ret) { >> + mutex_unlock(&parent_list_lock); >> + mdev_put_parent(parent); >> + return ret; >> + } >> + >> + ret = class_compat_create_link(mdev_bus_compat_class, dev, NULL); >> + if (ret) >> + dev_warn(dev, "Failed to create compatibility class link\n"); >> + > > Hi Kirti, > > Like I replied to previous version: > > http://www.spinics.net/lists/kvm/msg139331.html > Hi Jike, I saw your reply but by that time v10 version of patch series was out for review. > You can always check if mdev_bus_compat_class already registered > here, and register it if not yet. Same logic should be adopted to > mdev_init. > > Current implementation will simply panic if configured as builtin, > which is rare but far from impossible. > Can you verify attached patch with v10 patch-set whether this works for you? I'll incorporate this change in my next version. Thanks, Kirti --------------9E51F6BEDC26C1804717BA15 Content-Type: text/plain; charset="UTF-8"; name="0001-Register-mdev_bus-class-on-first-mdev_device_registe.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*1="tch"; filename*0="0001-Register-mdev_bus-class-on-first-mdev_device_registe.pa" RnJvbTogS2lydGkgV2Fua2hlZGUgPGt3YW5raGVkZUBudmlkaWEuY29tPgpEYXRlOiBTYXQs IDI5IE9jdCAyMDE2IDE1OjEyOjAxICswNTMwClN1YmplY3Q6IFtQQVRDSCAxLzFdIFJlZ2lz dGVyIG1kZXZfYnVzIGNsYXNzIG9uIGZpcnN0IG1kZXZfZGV2aWNlX3JlZ2lzdGVyCgpTaWdu ZWQtb2ZmLWJ5OiBLaXJ0aSBXYW5raGVkZSA8a3dhbmtoZWRlQG52aWRpYS5jb20+ClNpZ25l ZC1vZmYtYnk6IE5lbyBKaWEgPGNqaWFAbnZpZGlhLmNvbT4KLS0tCiBkcml2ZXJzL3ZmaW8v bWRldi9tZGV2X2NvcmUuYyB8IDMwICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfY29yZS5jIGIvZHJpdmVycy92Zmlv L21kZXYvbWRldl9jb3JlLmMKaW5kZXggOWQ4ZmE1YzkxYzJlLi41NGM1OWYzMjUzMzYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfY29yZS5jCisrKyBiL2RyaXZlcnMv dmZpby9tZGV2L21kZXZfY29yZS5jCkBAIC0xODcsMTMgKzE4NywxOCBAQCBpbnQgbWRldl9y ZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgcGFyZW50 X29wcyAqb3BzKQogCXBhcmVudC0+ZGV2ID0gZGV2OwogCXBhcmVudC0+b3BzID0gb3BzOwog Ci0JcmV0ID0gcGFyZW50X2NyZWF0ZV9zeXNmc19maWxlcyhwYXJlbnQpOwotCWlmIChyZXQp IHsKLQkJbXV0ZXhfdW5sb2NrKCZwYXJlbnRfbGlzdF9sb2NrKTsKLQkJbWRldl9wdXRfcGFy ZW50KHBhcmVudCk7Ci0JCXJldHVybiByZXQ7CisJaWYgKCFtZGV2X2J1c19jb21wYXRfY2xh c3MpIHsKKwkJbWRldl9idXNfY29tcGF0X2NsYXNzID0gY2xhc3NfY29tcGF0X3JlZ2lzdGVy KCJtZGV2X2J1cyIpOworCQlpZiAoIW1kZXZfYnVzX2NvbXBhdF9jbGFzcykgeworCQkJcmV0 ID0gLUVOT01FTTsKKwkJCWdvdG8gYWRkX2Rldl9lcnI7CisJCX0KIAl9CiAKKwlyZXQgPSBw YXJlbnRfY3JlYXRlX3N5c2ZzX2ZpbGVzKHBhcmVudCk7CisJaWYgKHJldCkKKwkJZ290byBh ZGRfZGV2X2VycjsKKwogCXJldCA9IGNsYXNzX2NvbXBhdF9jcmVhdGVfbGluayhtZGV2X2J1 c19jb21wYXRfY2xhc3MsIGRldiwgTlVMTCk7CiAJaWYgKHJldCkKIAkJZGV2X3dhcm4oZGV2 LCAiRmFpbGVkIHRvIGNyZWF0ZSBjb21wYXRpYmlsaXR5IGNsYXNzIGxpbmtcbiIpOwpAQCAt MjA2LDcgKzIxMSwxMCBAQCBpbnQgbWRldl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRldmlj ZSAqZGV2LCBjb25zdCBzdHJ1Y3QgcGFyZW50X29wcyAqb3BzKQogCiBhZGRfZGV2X2VycjoK IAltdXRleF91bmxvY2soJnBhcmVudF9saXN0X2xvY2spOwotCXB1dF9kZXZpY2UoZGV2KTsK KwlpZiAocGFyZW50KQorCQltZGV2X3B1dF9wYXJlbnQocGFyZW50KTsKKwllbHNlCisJCXB1 dF9kZXZpY2UoZGV2KTsKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChtZGV2X3Jl Z2lzdGVyX2RldmljZSk7CkBAIC0zNTQsMTIgKzM2Miw2IEBAIHN0YXRpYyBpbnQgX19pbml0 IG1kZXZfaW5pdCh2b2lkKQogCQlyZXR1cm4gcmV0OwogCX0KIAotCW1kZXZfYnVzX2NvbXBh dF9jbGFzcyA9IGNsYXNzX2NvbXBhdF9yZWdpc3RlcigibWRldl9idXMiKTsKLQlpZiAoIW1k ZXZfYnVzX2NvbXBhdF9jbGFzcykgewotCQltZGV2X2J1c191bnJlZ2lzdGVyKCk7Ci0JCXJl dHVybiAtRU5PTUVNOwotCX0KLQogCS8qCiAJICogQXR0ZW1wdCB0byBsb2FkIGtub3duIHZm aW9fbWRldi4gIFRoaXMgZ2l2ZXMgdXMgYSB3b3JraW5nIGVudmlyb25tZW50CiAJICogd2l0 aG91dCB0aGUgdXNlciBuZWVkaW5nIHRvIGV4cGxpY2l0bHkgbG9hZCB2ZmlvX21kZXYgZHJp dmVyLgpAQCAtMzcxLDcgKzM3Myw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG1kZXZfaW5pdCh2 b2lkKQogCiBzdGF0aWMgdm9pZCBfX2V4aXQgbWRldl9leGl0KHZvaWQpCiB7Ci0JY2xhc3Nf Y29tcGF0X3VucmVnaXN0ZXIobWRldl9idXNfY29tcGF0X2NsYXNzKTsKKwlpZiAobWRldl9i dXNfY29tcGF0X2NsYXNzKQorCQljbGFzc19jb21wYXRfdW5yZWdpc3RlcihtZGV2X2J1c19j b21wYXRfY2xhc3MpOworCiAJbWRldl9idXNfdW5yZWdpc3RlcigpOwogfQogCi0tIAoyLjcu MAoK --------------9E51F6BEDC26C1804717BA15--