From patchwork Tue Sep 3 16:14:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Roger_Pau_Monn=C3=A9?= X-Patchwork-Id: 11128355 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9151C14F7 for ; Tue, 3 Sep 2019 16:16: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 6926E22CF8 for ; Tue, 3 Sep 2019 16:16:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="PQj+MkQ0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6926E22CF8 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.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 1i5BS7-0001rB-Ce; Tue, 03 Sep 2019 16:14:43 +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 1i5BS5-0001qu-4b for xen-devel@lists.xenproject.org; Tue, 03 Sep 2019 16:14:41 +0000 X-Inumbo-ID: ee18a6c4-ce65-11e9-ab97-12813bfff9fa Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id ee18a6c4-ce65-11e9-ab97-12813bfff9fa; Tue, 03 Sep 2019 16:14:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1567527280; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=0eni99MPQmJJMYfH5QGPQyVoCanHcUMXSTNEATGMuqU=; b=PQj+MkQ0eOSgmaBzdo6nik/ohRV1UbUtfao1f1LTBRpM+YCcYuqegcLC EMygTsOpzTEFgGyCe0rKKXYgjuOwgDNvcEPSTVClgiKADfvncBj8EKGQO R0sMEWi78OP25CHKSg6AFkPqq5Ynvoxnv14y+7PMX9LAeEHNnQPfw/NwW g=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=roger.pau@citrix.com; spf=Pass smtp.mailfrom=roger.pau@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of roger.pau@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of roger.pau@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: NrsleqQ6yeIswxATxZooaXrzMu20v3NFsydr3s6xhvD5aeiWdYKeX+MT3nAVFPEWAx6oeLPoaF 3UYSZSfYcq+MM9aSMqaD2wNNsOkJS9FE141qN7mf40rUdBiaY9yvXfuguKCBVuoGjlMFVpt3Jt YKvdAt4Iyw2z2Ih9Mkny7epf4H4buCp3WuoYGkG0MKKAknmIFbH0+jcM5q65ixVi4U4rNwLpHY MUKL4WD3mwUIR0XyXavx7wHkFzvfMDhnUlqYzQpimTgbos+PZUVYWVWzc+nY31OQntJ9qm4RYQ cvI= X-SBRS: 2.7 X-MesageID: 5068879 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,463,1559534400"; d="scan'208";a="5068879" From: Roger Pau Monne To: Date: Tue, 3 Sep 2019 18:14:17 +0200 Message-ID: <20190903161428.7159-1-roger.pau@citrix.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v2 00/11] ioreq: add support for internal servers 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: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Roger Pau Monne Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Such internal servers are implemented by a single function that handles ioreqs inside the hypervisor. The motivation behind this change is to switch vPCI to become an internal ioreq server, so that accesses to the PCI config space can be multiplexed between devices handled by vPCI and devices handled by other ioreq servers. The implementation is fairly simple and limited to what's needed by vPCI, but can be expanded in the future if other more complex users appear. The series can also be found at: git://xenbits.xen.org/people/royger/xen.git ioreq_vpci_v2 Thanks, Roger. Roger Pau Monne (11): ioreq: fix hvm_all_ioreq_servers_add_vcpu fail path cleanup ioreq: terminate cf8 handling at hypervisor level ioreq: switch selection and forwarding to use ioservid_t ioreq: add fields to allow internal ioreq servers ioreq: add internal ioreq initialization support ioreq: allow dispatching ioreqs to internal servers ioreq: allow registering internal ioreq server handler ioreq: allow decoding accesses to MMCFG regions vpci: register as an internal ioreq server ioreq: split the code to detect PCI config space accesses ioreq: provide support for long-running operations... tools/tests/vpci/Makefile | 5 +- tools/tests/vpci/emul.h | 4 + xen/arch/x86/hvm/dm.c | 19 +- xen/arch/x86/hvm/dom0_build.c | 9 +- xen/arch/x86/hvm/emulate.c | 14 +- xen/arch/x86/hvm/hvm.c | 7 +- xen/arch/x86/hvm/io.c | 248 ++-------------- xen/arch/x86/hvm/ioreq.c | 434 ++++++++++++++++++++-------- xen/arch/x86/hvm/stdvga.c | 8 +- xen/arch/x86/mm/p2m.c | 20 +- xen/arch/x86/physdev.c | 6 +- xen/drivers/passthrough/x86/iommu.c | 2 +- xen/drivers/vpci/header.c | 61 ++-- xen/drivers/vpci/vpci.c | 75 ++++- xen/include/asm-x86/hvm/domain.h | 35 ++- xen/include/asm-x86/hvm/io.h | 29 +- xen/include/asm-x86/hvm/ioreq.h | 17 +- xen/include/asm-x86/hvm/vcpu.h | 3 +- xen/include/asm-x86/p2m.h | 9 +- xen/include/public/hvm/dm_op.h | 1 + xen/include/xen/vpci.h | 28 +- 21 files changed, 559 insertions(+), 475 deletions(-)