From nobody Thu May 2 20:53:25 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1660642760; cv=none; d=zohomail.com; s=zohoarc; b=F39NvvL3FnGb/5wn2K6duUleGTrxevIm4yn3a+hUewe+PcKA3xGjFoeyzpF0h64/v+616AAUh2tifrdVywNYji1LLtCj8F4BAPBFTDeaN9EWLA9q11JGOd/PQU1w5s7nLItf8Zy7b6MpKtpSR4ibDPvuHYWvkM8Lw9ILf5zTlQQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1660642760; h=Content-Type:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=F9l/Lza+GcuQ/N6yTTp2h8rEGkAGDZZo0keA34OVn7g=; b=j6sUTHgsG0RpBHz4mSebOfvpvkaoLWpho92dgN0ZmZRuAFStk7RCvV2u96gqW61F0mwdM3cBQN37jd6dXTkm3RgrRTRVxEK+FocpaMg2f+f3StXP0xZrr3Esx5BycJGA+SzeBVldrwSQmyCDZt2vFuXsF9Wn9mtuEVHjWYnj2Dk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1660642760485945.1421930442956; Tue, 16 Aug 2022 02:39:20 -0700 (PDT) Received: from localhost ([::1]:49232 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oNt2d-0002g2-CT for importer2@patchew.org; Tue, 16 Aug 2022 05:39:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34694) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oNt0s-0001Wd-PJ for qemu-devel@nongnu.org; Tue, 16 Aug 2022 05:37:32 -0400 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]:39678) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oNt0q-0005bS-0u for qemu-devel@nongnu.org; Tue, 16 Aug 2022 05:37:29 -0400 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-32fd97c199fso111401437b3.6 for ; Tue, 16 Aug 2022 02:37:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc; bh=F9l/Lza+GcuQ/N6yTTp2h8rEGkAGDZZo0keA34OVn7g=; b=pxmi8GWC2LYXgrU9p3G+Jg2rHsH8f5AQCGBn1QV51hJ6QXYvo7dUVjHT6ek/ZiE/Cl IFIJz1hScpU4zX/71hh6BqPzGrJwY0j673av8lPKxNOAtrcG7FJnF9yo0jOL1UqVZquu yqC52lPp78yLyZZrBDZGAlJ0lCkrn+ttxkblRMbu36/+IkgGaTBaGYiNJZI7fqyER3Lf Iv24Q+mq0xBBm3eZ5QSGhpTkHV5DsLbIvvZhyASIFu1dAZTDq8Qn7c+LJsPKsB7fnrl4 +6oeeeErVrd7izPI5fcmqCz/rB8UP+ROPq8Gv3aUTaRp815rSTJ4MJwB5nrU9JQwe+sD aezA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc; bh=F9l/Lza+GcuQ/N6yTTp2h8rEGkAGDZZo0keA34OVn7g=; b=2Iq2LU3n4jqFYR73TzLLb384m9kIa9hIRmWAJHbIOsvaLGEBnA0oNmTf4X72nfvjaw ZADB/xiKtmanuZwoSEMmg97ZVEtXM6mnUnInuaHcbb18+/BmbGKCl9tFCH2kreKAEuZN jbSfTJkeWkD0SUq5KhfWjpbZpIRSoyhRc39kaCNDj4jP71YaS6cY84dMVZ3PRA0V/zSH ZZohhugmKrQrQnr8XBXTiPHjrHRAZpS0oqdu4LDmcp9WaNrfhrgQdx6WeG1T39nE0jk/ 3GQV8/Y1KvJtcYNaqhn2OmZaHW9jTibj3QwuGCvG03+9bw6x8LA7Zk2Q6PvC8sTO6nzx Tlxg== X-Gm-Message-State: ACgBeo0hmLZNHcZwOAUj1ESHVM/OL5uuztwd7n3k+fiKtIl2JWVQdxgr H+UKeCDPmuyImpp5bdvY1hkamTt8xFshwYdPK30= X-Google-Smtp-Source: AA6agR4suT0btzNxb268GYujKMFCKimokkf38uxioyAs0/jIIgc/lV3q9P9UkOuvUyg3WhxXMp1aJ9nYwlbWXmrSHoE= X-Received: by 2002:a81:1d09:0:b0:31d:a40:8332 with SMTP id d9-20020a811d09000000b0031d0a408332mr17035960ywd.138.1660642646000; Tue, 16 Aug 2022 02:37:26 -0700 (PDT) MIME-Version: 1.0 From: Paul Schlacter Date: Tue, 16 Aug 2022 17:37:14 +0800 Message-ID: Subject: [PATCH v3] xio3130_upstream: Add ACS, Access Control Services, capability To: "Michael S. Tsirkin" , marcel.apfelbaum@gmail.com, fam@euphon.net, kwolf@redhat.com, stefanha@redhat.com, k.jensen@samsung.com, f4bug@amsat.org, its@irrelevant.dk, xypron.glpk@gmx.de, imammedo@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com, kbusch@kernel.org, hreitz@redhat.com, ani@anisinha.ca Content-Type: multipart/alternative; boundary="00000000000003893805e6587f91" Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::112a; envelope-from=wlfightup@gmail.com; helo=mail-yw1-x112a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1660642761598100001 Content-Transfer-Encoding: quoted-printable --00000000000003893805e6587f91 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 djIgLT4gdjM6Ci0gQWRkIHRoZSBtaXNzaW5nIGNvZGUgaW4gVjIuCgp2MSAtPiB2MjoKLSBBbGxv dyBBQ1MgdG8gYmUgZGlzYWJsZWQuCi0gU3VnZ2VzdGVkIGJ5IE1pY2hhZWwgUy4gVHNpcmtpbiwg dXNlIGRpc2FibGUtYWNzIHRvIHNldCBwcm9wZXJ0eS4KCnYxOgotIEFkZCBBQ1MgKEFjY2VzcyBD b250cm9sIFNlcnZpY2VzKSBjYXBhYmlsaXR5LgoKSWYgaXQgaXMgYSBwY2llIGRldmljZSwgY2hl Y2sgdGhhdCBhbGwgZGV2aWNlcyBvbiB0aGUgcGF0aCBmcm9tCgp0aGUgZGV2aWNlIHRvIHRoZSBy b290IGNvbXBsZXggaGF2ZSBBQ1MgZW5hYmxlZCwgYW5kIHRoZW4gdGhlCgpkZXZpY2Ugd2lsbCBi ZWNvbWUgYW4gaW9tbXVfZ3JvdXAuCgppdCB3aWxsIGhhdmUgdGhlIGVmZmVjdCBvZiBpc29sYXRp b24KCgoKClNpZ25lZC1vZmYtYnk6IHdsZmlnaHR1cCA8d2xmaWdodHVwQGdtYWlsLmNvbT4KClNp Z25lZC1vZmYtYnk6IHdhbmdsaWFuZyA8d2FuZ2xpYW5nNDBAYmFpZHUuY29tPgoKLS0tCgogaHcv cGNpLWJyaWRnZS94aW8zMTMwX3Vwc3RyZWFtLmMgfCAxMyArKysrKysrKysrKysrCgogMSBmaWxl IGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKCgpkaWZmIC0tZ2l0IGEvaHcvcGNpLWJyaWRnZS94 aW8zMTMwX3Vwc3RyZWFtLmMKYi9ody9wY2ktYnJpZGdlL3hpbzMxMzBfdXBzdHJlYW0uYwoKaW5k ZXggNWZmNDZlZjA1MC4uNTQzM2QwNmZiMyAxMDA2NDQKCi0tLSBhL2h3L3BjaS1icmlkZ2UveGlv MzEzMF91cHN0cmVhbS5jCgorKysgYi9ody9wY2ktYnJpZGdlL3hpbzMxMzBfdXBzdHJlYW0uYwoK QEAgLTI0LDYgKzI0LDcgQEAKCiAjaW5jbHVkZSAiaHcvcGNpL21zaS5oIgoKICNpbmNsdWRlICJo dy9wY2kvcGNpZS5oIgoKICNpbmNsdWRlICJody9wY2kvcGNpZV9wb3J0LmgiCgorI2luY2x1ZGUg Imh3L3FkZXYtcHJvcGVydGllcy5oIgoKICNpbmNsdWRlICJtaWdyYXRpb24vdm1zdGF0ZS5oIgoK ICNpbmNsdWRlICJxZW11L21vZHVsZS5oIgoKCgpAQCAtMzcsNiArMzgsOCBAQAoKICNkZWZpbmUg WElPMzEzMF9TU1ZJRF9TU0lEICAgICAgICAgICAgICAwCgogI2RlZmluZSBYSU8zMTMwX0VYUF9P RkZTRVQgICAgICAgICAgICAgIDB4OTAKCiAjZGVmaW5lIFhJTzMxMzBfQUVSX09GRlNFVCAgICAg ICAgICAgICAgMHgxMDAKCisjZGVmaW5lIFhJTzMxMzBfQUNTX09GRlNFVCBcCgorICAgICAgICAo WElPMzEzMF9BRVJfT0ZGU0VUICsgUENJX0VSUl9TSVpFT0YpCgoKCiBzdGF0aWMgdm9pZCB4aW8z MTMwX3Vwc3RyZWFtX3dyaXRlX2NvbmZpZyhQQ0lEZXZpY2UgKmQsIHVpbnQzMl90IGFkZHJlc3Ms CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFs LCBpbnQgbGVuKQoKQEAgLTU3LDYgKzYwLDcgQEAgc3RhdGljIHZvaWQgeGlvMzEzMF91cHN0cmVh bV9yZXNldChEZXZpY2VTdGF0ZSAqcWRldikKCiBzdGF0aWMgdm9pZCB4aW8zMTMwX3Vwc3RyZWFt X3JlYWxpemUoUENJRGV2aWNlICpkLCBFcnJvciAqKmVycnApCgogewoKICAgICBQQ0lFUG9ydCAq cCA9M0QgUENJRV9QT1JUKGQpOwoKKyAgICBQQ0lFU2xvdCAqcyA9M0QgUENJRV9TTE9UKGQpOwoK ICAgICBpbnQgcmM7CgoKCiAgICAgcGNpX2JyaWRnZV9pbml0Zm4oZCwgVFlQRV9QQ0lFX0JVUyk7 CgpAQCAtOTIsNiArOTYsOSBAQCBzdGF0aWMgdm9pZCB4aW8zMTMwX3Vwc3RyZWFtX3JlYWxpemUo UENJRGV2aWNlICpkLCBFcnJvcgoqKmVycnApCgogICAgICAgICBnb3RvIGVycjsKCiAgICAgfQoK CgorICAgIGlmICghcy0+ZGlzYWJsZV9hY3MpIHsKCisgICAgICAgIHBjaWVfYWNzX2luaXQoZCwg WElPMzEzMF9BQ1NfT0ZGU0VUKTsKCisgICAgfQoKICAgICByZXR1cm47CgoKCiBlcnI6CgpAQCAt MTEwLDYgKzExNywxMSBAQCBzdGF0aWMgdm9pZCB4aW8zMTMwX3Vwc3RyZWFtX2V4aXRmbihQQ0lE ZXZpY2UgKmQpCgogICAgIHBjaV9icmlkZ2VfZXhpdGZuKGQpOwoKIH0KCgoKK3N0YXRpYyBQcm9w ZXJ0eSB4aW8zMTMwX3Vwc3RyZWFtX3Byb3BzW10gPTNEIHsKCisgICAgREVGSU5FX1BST1BfQk9P TCgiZGlzYWJsZS1hY3MiLCBQQ0lFU2xvdCwgZGlzYWJsZV9hY3MsIGZhbHNlKSwKCisgICAgREVG SU5FX1BST1BfRU5EX09GX0xJU1QoKQoKK307CgorCgogc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNj cmlwdGlvbiB2bXN0YXRlX3hpbzMxMzBfdXBzdHJlYW0gPTNEIHsKCiAgICAgLm5hbWUgPTNEICJ4 aW8zMTMwLWV4cHJlc3MtdXBzdHJlYW0tcG9ydCIsCgogICAgIC5wcmlvcml0eSA9M0QgTUlHX1BS SV9QQ0lfQlVTLAoKQEAgLTEzOSw2ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCB4aW8zMTMwX3Vwc3Ry ZWFtX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MKKmtsYXNzLCB2b2lkICpkYXRhKQoKICAgICBkYy0+ ZGVzYyA9M0QgIlRJIFgzMTMwIFVwc3RyZWFtIFBvcnQgb2YgUENJIEV4cHJlc3MgU3dpdGNoIjsK CiAgICAgZGMtPnJlc2V0ID0zRCB4aW8zMTMwX3Vwc3RyZWFtX3Jlc2V0OwoKICAgICBkYy0+dm1z ZCA9M0QgJnZtc3RhdGVfeGlvMzEzMF91cHN0cmVhbTsKCisgICAgZGV2aWNlX2NsYXNzX3NldF9w cm9wcyhkYywgeGlvMzEzMF91cHN0cmVhbV9wcm9wcyk7CgogfQoKCgogc3RhdGljIGNvbnN0IFR5 cGVJbmZvIHhpbzMxMzBfdXBzdHJlYW1faW5mbyA9M0QgewoKLS09MjAKCjIuMjQuMyAoQXBwbGUg R2l0LTEyOCk= --00000000000003893805e6587f91 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
v2 -> v3:
- Add the missing code in V2.

v1 -> v2:
- Allow ACS to be disabled.
- Suggested= by Michael S. Tsirkin, use disable-acs to set property.

v1:
- Ad= d ACS (Access Control Services) capability.

If it is a pcie de= vice, check that all devices on the path from

the device to= the root complex have ACS enabled, and then the

device wil= l become an iommu_group.

it will have the effect of isolati= on




Signed-off-by: wlfightup <wl= fightup@gmail.com>

Signed-off-by: wangliang <wangliang40@baidu.com>

=

---

=C2=A0hw/pci-bridge/xio3130_upstream.c | 13 +++++++++++++

=C2=A01 file changed, 13 ins= ertions(+)


diff --git a/hw= /pci-bridge/xio3130_upstream.c b/hw/pci-bridge/xio3130_upstream.c

index 5ff46ef050..5433d06fb3 100644

--- a/hw/pci-bridge/= xio3130_upstream.c

+++ b/hw/pci-bridge/xio3130_upstream.c

@@ -24,6 +24,7 @@

=C2=A0#include "hw/pci/msi.h"

=C2=A0#include "hw/pc= i/pcie.h"

= =C2=A0#include "hw/pci/pcie_port.h"

+#includ= e "hw/qdev-properties.h"

=C2=A0#include "migration/vmstate.h"

=C2=A0#includ= e "qemu/module.h"

=C2=A0

@@ -37,6 +38,8 @@

=C2=A0#defin= e XIO3130_SSVID_SSID=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0

=C2=A0#define XIO3130_EXP_OFFSET=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 0x90

=C2=A0#define XIO3130_AER_OFFSET=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0= x100

+#define XIO3130_ACS_OFFSET \

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 (XIO313= 0_AER_OFFSET + PCI_ERR_SIZEOF)

=C2=A0

=C2=A0static void xio3130_upstream_write_= config(PCIDevice *d, uint32_t address,

=C2=A0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 uint32_t val, int len)

@@ = -57,6 +60,7 @@ static void xio3130_upstream_reset(DeviceState *qdev)=

=C2=A0static voi= d xio3130_upstream_realize(PCIDevice *d, Error **errp)

=C2=A0{

=C2=A0=C2=A0 =C2=A0 PCIEPort= *p =3D PCIE_PORT(d);

+=C2=A0 =C2=A0 PCIESlot *s =3D PCIE_SLOT(d);

=C2=A0=C2=A0 =C2=A0 int rc;<= /span>

= =C2=A0

=C2= =A0=C2=A0 =C2=A0 pci_bridge_initfn(d, TYPE_PCIE_BUS);

= @@ -92,6 +96,9 @@ static void xio3130_upstream_realize(PCIDevice *d, Error = **errp)

=C2=A0=C2= =A0 =C2=A0 =C2=A0 =C2=A0 goto err;

=C2=A0=C2=A0 =C2=A0 }

=C2=A0

+=C2=A0 =C2=A0 if = (!s->disable_acs) {

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 pcie_acs_init(d, XIO3130_ACS_OFFS= ET);

+=C2=A0 =C2= =A0 }

=C2= =A0=C2=A0 =C2=A0 return;

=C2=A0

=C2=A0err:

@@ -110,6 +11= 7,11 @@ static void xio3130_upstream_exitfn(PCIDevice *d)

=C2=A0=C2=A0 =C2=A0 pci_bri= dge_exitfn(d);

= =C2=A0}

=C2=A0

+static Property xio3130_upstream= _props[] =3D {

+= =C2=A0 =C2=A0 DEFINE_PROP_BOOL("disable-acs", PCIESlot, di= sable_acs, false),

+=C2=A0 =C2=A0 DEFINE_PROP_END_OF_LIST()

+};<= /p>

+

=C2=A0static const VMStateDescription vmstate_xio3130_upstream =3D {<= /p>

=C2=A0=C2=A0 =C2=A0 .name =3D "xio3130-express-upstream-port",

=C2=A0=C2=A0 =C2=A0 .priorit= y =3D MIG_PRI_PCI_BUS,

@@ -139,6 +151,7 @@ static void xio313= 0_upstream_class_init(ObjectClass *klass, void *data)

=C2=A0=C2=A0 =C2=A0 dc->desc= =3D "TI X3130 Upstream Port of PCI Express Switch";

<= span class=3D"gmail-s1" style=3D"font-variant-ligatures:no-common-ligatures= ">=C2=A0=C2=A0 =C2=A0 dc= ->reset =3D xio3130_upstream_reset;

=C2=A0=C2=A0 =C2=A0 dc->vmsd =3D &vmsta= te_xio3130_upstream;

+=C2=A0 =C2=A0 device_class_set_props(dc, xio3130_upstream_props= );

=C2=A0}=

= =C2=A0

=C2= =A0static const TypeInfo xio3130_upstream_info =3D {

-= -=C2=A0

2.24.3 (Apple Git-1= 28)

--00000000000003893805e6587f91--