From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F41A2C432C0 for ; Tue, 3 Dec 2019 10:39:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CE89D20659 for ; Tue, 3 Dec 2019 10:39:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726190AbfLCKjx (ORCPT ); Tue, 3 Dec 2019 05:39:53 -0500 Received: from mx2.suse.de ([195.135.220.15]:39104 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725773AbfLCKjx (ORCPT ); Tue, 3 Dec 2019 05:39:53 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 36A81B25A; Tue, 3 Dec 2019 10:39:51 +0000 (UTC) Subject: Re: [PATCH v1] xen-pciback: optionally allow interrupt enable flag writes To: =?UTF-8?Q?Marek_Marczykowski-G=c3=b3recki?= Cc: xen-devel@lists.xenproject.org, Ross Lagerwall , YueHaibing , Simon Gaiser , Stefano Stabellini , Boris Ostrovsky , Juergen Gross , open list References: <20191203054222.7966-1-marmarek@invisiblethingslab.com> From: Jan Beulich Message-ID: <9ccf765b-f828-52db-6778-18e605a80a02@suse.com> Date: Tue, 3 Dec 2019 11:40:03 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <20191203054222.7966-1-marmarek@invisiblethingslab.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03.12.2019 06:41, Marek Marczykowski-Górecki wrote: > @@ -117,6 +118,35 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data) > pci_clear_mwi(dev); > } > > + if (dev_data && dev_data->allow_interrupt_control) { > + if (!(cmd->val & PCI_COMMAND_INTX_DISABLE) && > + (value & PCI_COMMAND_INTX_DISABLE)) { > + pci_intx(dev, 0); > + } else if ((cmd->val & PCI_COMMAND_INTX_DISABLE) && > + !(value & PCI_COMMAND_INTX_DISABLE)) { > + /* Do not allow enabling INTx together with MSI or MSI-X. */ > + /* Do not trust dev->msi(x)_enabled here, as enabling could be done > + * bypassing the pci_*msi* functions, by the qemu. > + */ > + err = pci_read_config_word(dev, > + dev->msi_cap + PCI_MSI_FLAGS, > + &cap_value); > + if (!err && (cap_value & PCI_MSI_FLAGS_ENABLE)) > + err = -EBUSY; > + if (!err) > + err = pci_read_config_word(dev, > + dev->msix_cap + PCI_MSIX_FLAGS, > + &cap_value); What about a device without MSI and/or MSI-X? Wouldn't you read from (close to) config space offset 0 in this case, interpreting some unrelated bit(s) as the MSI / MSI-X enable one(s)? Just as an initial implementation related remark. I'm still to think about the idea as a whole, albeit I find the argument pretty convincing at the first glance of devices being able to raise MSI anyway even when disabled as per the config space setting. (Of course, as with any config space settings, devices providing backdoor access would open similar avenues.) Jan From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C57E4C432C0 for ; Tue, 3 Dec 2019 10:40:12 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9E2CA20659 for ; Tue, 3 Dec 2019 10:40:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E2CA20659 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ic5b1-00051q-7A; Tue, 03 Dec 2019 10:39:55 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ic5az-00051f-En for xen-devel@lists.xenproject.org; Tue, 03 Dec 2019 10:39:53 +0000 X-Inumbo-ID: 3befbbff-15b9-11ea-81d9-12813bfff9fa Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3befbbff-15b9-11ea-81d9-12813bfff9fa; Tue, 03 Dec 2019 10:39:52 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 36A81B25A; Tue, 3 Dec 2019 10:39:51 +0000 (UTC) To: =?UTF-8?Q?Marek_Marczykowski-G=c3=b3recki?= References: <20191203054222.7966-1-marmarek@invisiblethingslab.com> From: Jan Beulich Message-ID: <9ccf765b-f828-52db-6778-18e605a80a02@suse.com> Date: Tue, 3 Dec 2019 11:40:03 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <20191203054222.7966-1-marmarek@invisiblethingslab.com> Content-Language: en-US Subject: Re: [Xen-devel] [PATCH v1] xen-pciback: optionally allow interrupt enable flag writes X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Stefano Stabellini , YueHaibing , open list , Simon Gaiser , Ross Lagerwall , xen-devel@lists.xenproject.org, Boris Ostrovsky Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gMDMuMTIuMjAxOSAwNjo0MSwgTWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tpICB3cm90ZToK PiBAQCAtMTE3LDYgKzExOCwzNSBAQCBzdGF0aWMgaW50IGNvbW1hbmRfd3JpdGUoc3RydWN0IHBj aV9kZXYgKmRldiwgaW50IG9mZnNldCwgdTE2IHZhbHVlLCB2b2lkICpkYXRhKQo+ICAJCXBjaV9j bGVhcl9td2koZGV2KTsKPiAgCX0KPiAgCj4gKwlpZiAoZGV2X2RhdGEgJiYgZGV2X2RhdGEtPmFs bG93X2ludGVycnVwdF9jb250cm9sKSB7Cj4gKwkJaWYgKCEoY21kLT52YWwgJiBQQ0lfQ09NTUFO RF9JTlRYX0RJU0FCTEUpICYmCj4gKwkJICAgICh2YWx1ZSAmIFBDSV9DT01NQU5EX0lOVFhfRElT QUJMRSkpIHsKPiArCQkJcGNpX2ludHgoZGV2LCAwKTsKPiArCQl9IGVsc2UgaWYgKChjbWQtPnZh bCAmIFBDSV9DT01NQU5EX0lOVFhfRElTQUJMRSkgJiYKPiArCQkgICAgISh2YWx1ZSAmIFBDSV9D T01NQU5EX0lOVFhfRElTQUJMRSkpIHsKPiArCQkJLyogRG8gbm90IGFsbG93IGVuYWJsaW5nIElO VHggdG9nZXRoZXIgd2l0aCBNU0kgb3IgTVNJLVguICovCj4gKwkJCS8qIERvIG5vdCB0cnVzdCBk ZXYtPm1zaSh4KV9lbmFibGVkIGhlcmUsIGFzIGVuYWJsaW5nIGNvdWxkIGJlIGRvbmUKPiArCQkJ ICogYnlwYXNzaW5nIHRoZSBwY2lfKm1zaSogZnVuY3Rpb25zLCBieSB0aGUgcWVtdS4KPiArCQkJ ICovCj4gKwkJCWVyciA9IHBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwKPiArCQkJCQkJICAgZGV2 LT5tc2lfY2FwICsgUENJX01TSV9GTEFHUywKPiArCQkJCQkJICAgJmNhcF92YWx1ZSk7Cj4gKwkJ CWlmICghZXJyICYmIChjYXBfdmFsdWUgJiBQQ0lfTVNJX0ZMQUdTX0VOQUJMRSkpCj4gKwkJCQll cnIgPSAtRUJVU1k7Cj4gKwkJCWlmICghZXJyKQo+ICsJCQkJZXJyID0gcGNpX3JlYWRfY29uZmln X3dvcmQoZGV2LAo+ICsJCQkJCQkJICAgZGV2LT5tc2l4X2NhcCArIFBDSV9NU0lYX0ZMQUdTLAo+ ICsJCQkJCQkJICAgJmNhcF92YWx1ZSk7CgpXaGF0IGFib3V0IGEgZGV2aWNlIHdpdGhvdXQgTVNJ IGFuZC9vciBNU0ktWD8gV291bGRuJ3QgeW91IHJlYWQKZnJvbSAoY2xvc2UgdG8pIGNvbmZpZyBz cGFjZSBvZmZzZXQgMCBpbiB0aGlzIGNhc2UsIGludGVycHJldGluZwpzb21lIHVucmVsYXRlZCBi aXQocykgYXMgdGhlIE1TSSAvIE1TSS1YIGVuYWJsZSBvbmUocyk/CgpKdXN0IGFzIGFuIGluaXRp YWwgaW1wbGVtZW50YXRpb24gcmVsYXRlZCByZW1hcmsuIEknbSBzdGlsbCB0bwp0aGluayBhYm91 dCB0aGUgaWRlYSBhcyBhIHdob2xlLCBhbGJlaXQgSSBmaW5kIHRoZSBhcmd1bWVudApwcmV0dHkg Y29udmluY2luZyBhdCB0aGUgZmlyc3QgZ2xhbmNlIG9mIGRldmljZXMgYmVpbmcgYWJsZSB0bwpy YWlzZSBNU0kgYW55d2F5IGV2ZW4gd2hlbiBkaXNhYmxlZCBhcyBwZXIgdGhlIGNvbmZpZyBzcGFj ZQpzZXR0aW5nLiAoT2YgY291cnNlLCBhcyB3aXRoIGFueSBjb25maWcgc3BhY2Ugc2V0dGluZ3Ms IGRldmljZXMKcHJvdmlkaW5nIGJhY2tkb29yIGFjY2VzcyB3b3VsZCBvcGVuIHNpbWlsYXIgYXZl bnVlcy4pCgpKYW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=