From patchwork Mon Sep 30 13:32:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Pau Monne X-Patchwork-Id: 11166721 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 B76581709 for ; Mon, 30 Sep 2019 13:34:37 +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 93D12215EA for ; Mon, 30 Sep 2019 13:34:37 +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="dGn5ksUm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 93D12215EA 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 1iEvnk-0005RK-QA; Mon, 30 Sep 2019 13:33:20 +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 1iEvnj-0005Qf-QR for xen-devel@lists.xenproject.org; Mon, 30 Sep 2019 13:33:19 +0000 X-Inumbo-ID: dc343989-e386-11e9-96d3-12813bfff9fa Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by localhost (Halon) with ESMTPS id dc343989-e386-11e9-96d3-12813bfff9fa; Mon, 30 Sep 2019 13:33:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1569850399; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=kYTI4qE9ejCoyWrAGaX6Ul8JDVd6U0+fwKNPCPeurkY=; b=dGn5ksUmSDvrLxVEYENhnuCuw+3QnBpDztaxSnaChCBvQxhYMF5LA1EA KPpbzH7LBodKjmEf00zKLqzL7dYW8xdppFg1FIipHHWwBy6OecpGa5gDb BG4hE1aWegBrm5qZUV3rRtmACO7NkudmzesAUBSUAk1JHCtO3YGrzBHKG c=; Authentication-Results: esa1.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 (esa1.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=esa1.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="roger.pau@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa1.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=esa1.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 (esa1.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=esa1.hc3370-68.iphmx.com; envelope-from="roger.pau@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: HWGHOfWUL/uMuQCw/W/Se4LjlDcHfKHnkK/laupzBK3FMBx+C+ND/ywdXqC2fj3E02V18sk4dk kodGsOwtXIQgdr4knxJYnGsJbd+muEF33Hpz5RtuWlab8J5elUAKQl4YN5Q9I0mmU69WdE2fvJ ua9g5/CF/taeQMou010Qn75gmY/lGIznhTFw5LUnkx2+0jZ3avw3QKo06PHupMPXKk1JKFid6o AUJq3od5nnAlzl4Z+n3enfB12be1RQxmhlXITjNQ97ztmIvqx+BauPo4ngRAt9DKE+8oPKoQpI vIU= X-SBRS: 2.7 X-MesageID: 6322255 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,567,1559534400"; d="scan'208";a="6322255" From: Roger Pau Monne To: Date: Mon, 30 Sep 2019 15:32:28 +0200 Message-ID: <20190930133238.49868-1-roger.pau@citrix.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v3 00/10] 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 , Paul Durrant , George Dunlap , Andrew Cooper , Konrad Rzeszutek Wilk , Ian Jackson , Tim Deegan , Julien Grall , 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_v3 Thanks, Roger. Roger Pau Monne (10): 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 | 348 ++++++++++++++++++++-------- xen/arch/x86/hvm/stdvga.c | 8 +- xen/arch/x86/mm/p2m.c | 20 +- xen/arch/x86/physdev.c | 5 +- xen/drivers/passthrough/x86/iommu.c | 2 +- xen/drivers/vpci/header.c | 60 ++--- xen/drivers/vpci/vpci.c | 70 +++++- 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, 495 insertions(+), 446 deletions(-)