From patchwork Tue Feb 11 11:27:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andrew Cooper X-Patchwork-Id: 11375249 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 CC0EC14E3 for ; Tue, 11 Feb 2020 11:33:52 +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 A87FB20714 for ; Tue, 11 Feb 2020 11:33:52 +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="JiQSfMMi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A87FB20714 Authentication-Results: mail.kernel.org; dmarc=fail (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 1j1ThT-0001i0-Uh; Tue, 11 Feb 2020 11:27:31 +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 1j1ThS-0001hv-Rm for xen-devel@lists.xenproject.org; Tue, 11 Feb 2020 11:27:30 +0000 X-Inumbo-ID: 7c9834c6-4cc1-11ea-b573-12813bfff9fa Received: from esa3.hc3370-68.iphmx.com (unknown [216.71.145.155]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 7c9834c6-4cc1-11ea-b573-12813bfff9fa; Tue, 11 Feb 2020 11:27:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1581420450; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=77z3sSGYgVGyw1+TviMiHLMehlZL8cObMlNcm54s09Y=; b=JiQSfMMiK/oSWu3bPfOrAFIn6K/cd/dNKGdrZIGp4WO/9TbiABuNKLln B41IqUx2kcwxUb3p8LoSpxnb9CLVgkSIWWQ835y9Ga7UwQi1AhAVU5fly nmI8Z9cNyFcPo7nCIEh5M08djQaO2EecdceuRTCL4qfmK3rCQIDZrxZOO s=; Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa3.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa3.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa3.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@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 ip4:168.245.78.127 ~all" Received-SPF: None (esa3.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=esa3.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: Q9iZaZqYgPl+/wPpywjCAcA4wRj/OpbDn9aQFyNwFpTp/Fn/+/mje5DMEcGS3ltHrMltLO76nM Df3AATb1c/jrTEisN37kah49+lw8u6AllqfNy2Tolr6xlo+fLzHuUqO8EpSCzJfMItJKNXFBhe 5iG5/B/Wwai5IThiTZp4qxP0En0GyWx+BDqcQ26QuUr0kTwACtk5yK6oNV65gD9YRPsibEig20 wMwikqU5uLiFgAEDDTsKwb0VECx79PtbiMtTgUg95iYteZqvYrr0TRUYz37/JtaOKisGrt+8T3 TbQ= X-SBRS: 2.7 X-MesageID: 12256870 X-Ironport-Server: esa3.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.70,428,1574139600"; d="scan'208";a="12256870" From: Andrew Cooper To: Xen-devel Date: Tue, 11 Feb 2020 11:27:26 +0000 Message-ID: <20200211112726.26639-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Subject: [Xen-devel] [PATCH] AMD/IOMMU: Clean up the allocation helpers 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: Andrew Cooper , Wei Liu , Jan Beulich , =?utf-8?q?Roger_Pau_Monn=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Conform to style, drop unnecessary local variables, and avoid opencoding clear_domain_page(). Signed-off-by: Andrew Cooper Reviewed-by: Paul Durrant Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Wei Liu CC: Roger Pau Monné Avoiding opencoding clear_domain_page() drops a surprising quantity of code. add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-269 (-269) Function old new delta amd_iommu_alloc_root.part 167 116 -51 iommu_pde_from_dfn 1061 955 -106 amd_iommu_quarantine_init 694 582 -112 Total: Before=3019031, After=3018762, chg -0.01% --- xen/drivers/passthrough/amd/iommu.h | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/amd/iommu.h index 1abfdc685a..16af40b8cd 100644 --- a/xen/drivers/passthrough/amd/iommu.h +++ b/xen/drivers/passthrough/amd/iommu.h @@ -341,34 +341,28 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT; } -static inline struct page_info* alloc_amd_iommu_pgtable(void) +static inline struct page_info *alloc_amd_iommu_pgtable(void) { - struct page_info *pg; - void *vaddr; - - pg = alloc_domheap_page(NULL, 0); - if ( pg == NULL ) - return 0; - vaddr = __map_domain_page(pg); - memset(vaddr, 0, PAGE_SIZE); - unmap_domain_page(vaddr); + struct page_info *pg = alloc_domheap_page(NULL, 0); + + if ( pg ) + clear_domain_page(page_to_mfn(pg)); + return pg; } static inline void free_amd_iommu_pgtable(struct page_info *pg) { - if ( pg != 0 ) + if ( pg ) free_domheap_page(pg); } -static inline void* __alloc_amd_iommu_tables(int order) +static inline void *__alloc_amd_iommu_tables(unsigned int order) { - void *buf; - buf = alloc_xenheap_pages(order, 0); - return buf; + return alloc_xenheap_pages(order, 0); } -static inline void __free_amd_iommu_tables(void *table, int order) +static inline void __free_amd_iommu_tables(void *table, unsigned int order) { free_xenheap_pages(table, order); }