From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751518AbeBWHAS (ORCPT ); Fri, 23 Feb 2018 02:00:18 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:44015 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751353AbeBWHAQ (ORCPT ); Fri, 23 Feb 2018 02:00:16 -0500 X-Google-Smtp-Source: AG47ELskU+FRKOLG/aV+xIBWzEZSVGykD+apbX/jxTWE/mFXuNgWH08SeUc4mRKnpOqomPnTBLfJVw== Subject: Re: [PATCH 4/9] drm/xen-front: Implement Xen event channel handling To: Boris Ostrovsky , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, konrad.wilk@oracle.com Cc: Oleksandr Andrushchenko References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-5-git-send-email-andr2000@gmail.com> <395cdaef-db7e-139c-bbf1-28cb33f41f58@oracle.com> From: Oleksandr Andrushchenko Message-ID: <5145287f-40b0-c8e2-1b37-36d7e8cac908@gmail.com> Date: Fri, 23 Feb 2018 09:00:13 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <395cdaef-db7e-139c-bbf1-28cb33f41f58@oracle.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/23/2018 01:50 AM, Boris Ostrovsky wrote: > On 02/21/2018 03:03 AM, Oleksandr Andrushchenko wrote: >> + >> +static irqreturn_t evtchnl_interrupt_ctrl(int irq, void *dev_id) >> +{ >> + struct xen_drm_front_evtchnl *evtchnl = dev_id; >> + struct xen_drm_front_info *front_info = evtchnl->front_info; >> + struct xendispl_resp *resp; >> + RING_IDX i, rp; >> + unsigned long flags; >> + >> + spin_lock_irqsave(&front_info->io_lock, flags); >> + >> + if (unlikely(evtchnl->state != EVTCHNL_STATE_CONNECTED)) >> + goto out; > Do you need to check the state under lock? (in other routines too). not really, will move out of the lock in interrupt handlers other places (I assume you refer to be_stream_do_io) it is set under lock as a part of atomic operation, e.g. we get a new request pointer from the ring and reset completion So, those places still seem to be ok > ... > >> + >> +static void evtchnl_free(struct xen_drm_front_info *front_info, >> + struct xen_drm_front_evtchnl *evtchnl) >> +{ >> + unsigned long page = 0; >> + >> + if (evtchnl->type == EVTCHNL_TYPE_REQ) >> + page = (unsigned long)evtchnl->u.req.ring.sring; >> + else if (evtchnl->type == EVTCHNL_TYPE_EVT) >> + page = (unsigned long)evtchnl->u.evt.page; >> + if (!page) >> + return; >> + >> + evtchnl->state = EVTCHNL_STATE_DISCONNECTED; >> + >> + if (evtchnl->type == EVTCHNL_TYPE_REQ) { >> + /* release all who still waits for response if any */ >> + evtchnl->u.req.resp_status = -EIO; >> + complete_all(&evtchnl->u.req.completion); >> + } >> + >> + if (evtchnl->irq) >> + unbind_from_irqhandler(evtchnl->irq, evtchnl); >> + >> + if (evtchnl->port) >> + xenbus_free_evtchn(front_info->xb_dev, evtchnl->port); >> + >> + /* end access and free the page */ >> + if (evtchnl->gref != GRANT_INVALID_REF) >> + gnttab_end_foreign_access(evtchnl->gref, 0, page); >> + >> + if (evtchnl->type == EVTCHNL_TYPE_REQ) >> + evtchnl->u.req.ring.sring = NULL; >> + else >> + evtchnl->u.evt.page = NULL; >> + >> + memset(evtchnl, 0, sizeof(*evtchnl)); > Since you are zeroing out the structure you don't need to set fields to > zero. good catch, thank you > I also think you need to free the page. it is freed by gnttab_end_foreign_access, please see [1] > -boris [1] https://elixir.bootlin.com/linux/v4.11-rc1/source/drivers/xen/grant-table.c#L380 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH 4/9] drm/xen-front: Implement Xen event channel handling Date: Fri, 23 Feb 2018 09:00:13 +0200 Message-ID: <5145287f-40b0-c8e2-1b37-36d7e8cac908@gmail.com> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> <1519200222-20623-5-git-send-email-andr2000@gmail.com> <395cdaef-db7e-139c-bbf1-28cb33f41f58@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C4126EFDC for ; Fri, 23 Feb 2018 07:00:16 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id g72so10925338lfg.5 for ; Thu, 22 Feb 2018 23:00:16 -0800 (PST) In-Reply-To: <395cdaef-db7e-139c-bbf1-28cb33f41f58@oracle.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Boris Ostrovsky , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, konrad.wilk@oracle.com Cc: Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org T24gMDIvMjMvMjAxOCAwMTo1MCBBTSwgQm9yaXMgT3N0cm92c2t5IHdyb3RlOgo+IE9uIDAyLzIx LzIwMTggMDM6MDMgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyb3RlOgo+PiArCj4+ICtz dGF0aWMgaXJxcmV0dXJuX3QgZXZ0Y2hubF9pbnRlcnJ1cHRfY3RybChpbnQgaXJxLCB2b2lkICpk ZXZfaWQpCj4+ICt7Cj4+ICsJc3RydWN0IHhlbl9kcm1fZnJvbnRfZXZ0Y2hubCAqZXZ0Y2hubCA9 IGRldl9pZDsKPj4gKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9pbmZvICpmcm9udF9pbmZvID0gZXZ0 Y2hubC0+ZnJvbnRfaW5mbzsKPj4gKwlzdHJ1Y3QgeGVuZGlzcGxfcmVzcCAqcmVzcDsKPj4gKwlS SU5HX0lEWCBpLCBycDsKPj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsJc3Bpbl9s b2NrX2lycXNhdmUoJmZyb250X2luZm8tPmlvX2xvY2ssIGZsYWdzKTsKPj4gKwo+PiArCWlmICh1 bmxpa2VseShldnRjaG5sLT5zdGF0ZSAhPSBFVlRDSE5MX1NUQVRFX0NPTk5FQ1RFRCkpCj4+ICsJ CWdvdG8gb3V0Owo+IERvIHlvdSBuZWVkIHRvIGNoZWNrIHRoZSBzdGF0ZSB1bmRlciBsb2NrPyAo aW4gb3RoZXIgcm91dGluZXMgdG9vKS4Kbm90IHJlYWxseSwgd2lsbCBtb3ZlIG91dCBvZiB0aGUg bG9jayBpbiBpbnRlcnJ1cHQgaGFuZGxlcnMKb3RoZXIgcGxhY2VzIChJIGFzc3VtZSB5b3UgcmVm ZXIgdG8gYmVfc3RyZWFtX2RvX2lvKQppdCBpcyBzZXQgdW5kZXIgbG9jayBhcyBhIHBhcnQgb2Yg YXRvbWljIG9wZXJhdGlvbiwgZS5nLgp3ZSBnZXQgYSBuZXcgcmVxdWVzdCBwb2ludGVyIGZyb20g dGhlIHJpbmcgYW5kIHJlc2V0IGNvbXBsZXRpb24KU28sIHRob3NlIHBsYWNlcyBzdGlsbCBzZWVt IHRvIGJlIG9rCj4gLi4uCj4KPj4gKwo+PiArc3RhdGljIHZvaWQgZXZ0Y2hubF9mcmVlKHN0cnVj dCB4ZW5fZHJtX2Zyb250X2luZm8gKmZyb250X2luZm8sCj4+ICsJCXN0cnVjdCB4ZW5fZHJtX2Zy b250X2V2dGNobmwgKmV2dGNobmwpCj4+ICt7Cj4+ICsJdW5zaWduZWQgbG9uZyBwYWdlID0gMDsK Pj4gKwo+PiArCWlmIChldnRjaG5sLT50eXBlID09IEVWVENITkxfVFlQRV9SRVEpCj4+ICsJCXBh Z2UgPSAodW5zaWduZWQgbG9uZylldnRjaG5sLT51LnJlcS5yaW5nLnNyaW5nOwo+PiArCWVsc2Ug aWYgKGV2dGNobmwtPnR5cGUgPT0gRVZUQ0hOTF9UWVBFX0VWVCkKPj4gKwkJcGFnZSA9ICh1bnNp Z25lZCBsb25nKWV2dGNobmwtPnUuZXZ0LnBhZ2U7Cj4+ICsJaWYgKCFwYWdlKQo+PiArCQlyZXR1 cm47Cj4+ICsKPj4gKwlldnRjaG5sLT5zdGF0ZSA9IEVWVENITkxfU1RBVEVfRElTQ09OTkVDVEVE Owo+PiArCj4+ICsJaWYgKGV2dGNobmwtPnR5cGUgPT0gRVZUQ0hOTF9UWVBFX1JFUSkgewo+PiAr CQkvKiByZWxlYXNlIGFsbCB3aG8gc3RpbGwgd2FpdHMgZm9yIHJlc3BvbnNlIGlmIGFueSAqLwo+ PiArCQlldnRjaG5sLT51LnJlcS5yZXNwX3N0YXR1cyA9IC1FSU87Cj4+ICsJCWNvbXBsZXRlX2Fs bCgmZXZ0Y2hubC0+dS5yZXEuY29tcGxldGlvbik7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGV2dGNo bmwtPmlycSkKPj4gKwkJdW5iaW5kX2Zyb21faXJxaGFuZGxlcihldnRjaG5sLT5pcnEsIGV2dGNo bmwpOwo+PiArCj4+ICsJaWYgKGV2dGNobmwtPnBvcnQpCj4+ICsJCXhlbmJ1c19mcmVlX2V2dGNo bihmcm9udF9pbmZvLT54Yl9kZXYsIGV2dGNobmwtPnBvcnQpOwo+PiArCj4+ICsJLyogZW5kIGFj Y2VzcyBhbmQgZnJlZSB0aGUgcGFnZSAqLwo+PiArCWlmIChldnRjaG5sLT5ncmVmICE9IEdSQU5U X0lOVkFMSURfUkVGKQo+PiArCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzKGV2dGNobmwtPmdy ZWYsIDAsIHBhZ2UpOwo+PiArCj4+ICsJaWYgKGV2dGNobmwtPnR5cGUgPT0gRVZUQ0hOTF9UWVBF X1JFUSkKPj4gKwkJZXZ0Y2hubC0+dS5yZXEucmluZy5zcmluZyA9IE5VTEw7Cj4+ICsJZWxzZQo+ PiArCQlldnRjaG5sLT51LmV2dC5wYWdlID0gTlVMTDsKPj4gKwo+PiArCW1lbXNldChldnRjaG5s LCAwLCBzaXplb2YoKmV2dGNobmwpKTsKPiBTaW5jZSB5b3UgYXJlIHplcm9pbmcgb3V0IHRoZSBz dHJ1Y3R1cmUgeW91IGRvbid0IG5lZWQgdG8gc2V0IGZpZWxkcyB0bwo+IHplcm8uCmdvb2QgY2F0 Y2gsIHRoYW5rIHlvdQo+IEkgYWxzbyB0aGluayB5b3UgbmVlZCB0byBmcmVlIHRoZSBwYWdlLgpp dCBpcyBmcmVlZCBieSBnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzLCBwbGVhc2Ugc2VlIFsxXQo+ IC1ib3JpcwoKWzFdIApodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92NC4xMS1yYzEv c291cmNlL2RyaXZlcnMveGVuL2dyYW50LXRhYmxlLmMjTDM4MApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK