From nobody Thu Dec 18 01:51:58 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1739287554; cv=none; d=zohomail.com; s=zohoarc; b=PBi03xWG1W4wilbWTbjn6pCLIPWZi70Pb92iWCjujuZxo/YdPLI6BH0P1NpB4wk5OHCH9/6ahwUVIun4wqNT5OCC5/jKvpqMXaOH6PK4KkOltUsw4evg9Vk4U0nRlufdQLSsVflSt0h8PpqhD31Df4EWmJ38BkdRQzayE1wxW/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739287554; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7+JonyeTS6PhmJUJZ7cwFOpKA9QAKAShpmEQryox7lg=; b=Rp4WbU2Z1Lau0CCky4/lo0XnfRkG9uCix6MijhRZ8wCguE0o5NpbTgOMt1Khzxaqdn7WrNEtQQ9/jX9wdEZk9ybn3SAsc0zIg4L1jIBUcASXJjCX1RaJEOE/cnS4DZ1QX4UPR3ST9gqu7b26TrK5A9CLHxqsn6uYFBFD5xPjGEA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1739287554758985.2552621343624; Tue, 11 Feb 2025 07:25:54 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.885682.1295493 (Exim 4.92) (envelope-from ) id 1ths8j-0001pG-Uv; Tue, 11 Feb 2025 15:25:33 +0000 Received: by outflank-mailman (output) from mailman id 885682.1295493; Tue, 11 Feb 2025 15:25:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ths8j-0001p9-Ry; Tue, 11 Feb 2025 15:25:33 +0000 Received: by outflank-mailman (input) for mailman id 885682; Tue, 11 Feb 2025 15:25:32 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1ths8i-0001oz-JK for xen-devel@lists.xenproject.org; Tue, 11 Feb 2025 15:25:32 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 6e09128c-e88c-11ef-a075-877d107080fb; Tue, 11 Feb 2025 16:25:31 +0100 (CET) Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 93FCA37363; Tue, 11 Feb 2025 12:04:41 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5851313782; Tue, 11 Feb 2025 12:04:41 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id A7geFNk8q2e3GgAAD6G6ig (envelope-from ); Tue, 11 Feb 2025 12:04:41 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 6e09128c-e88c-11ef-a075-877d107080fb DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1739275481; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7+JonyeTS6PhmJUJZ7cwFOpKA9QAKAShpmEQryox7lg=; b=f1ygNHlEKOh+wqzr5Bw8tgj1xvQeSPm0CX93J6GGbGyWsio/hs85hO7PYIhiK977tm6t8F 2E7TbMOFvyFWF0MKDWeFPcG2nCkH3JdwQMmabolIhf+HnOHKL1ZyED/NwEhn4gApyiHLIu 1fkS/q8EFadYRtjyu3cSGL3TSp5O49g= Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=f1ygNHlE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1739275481; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7+JonyeTS6PhmJUJZ7cwFOpKA9QAKAShpmEQryox7lg=; b=f1ygNHlEKOh+wqzr5Bw8tgj1xvQeSPm0CX93J6GGbGyWsio/hs85hO7PYIhiK977tm6t8F 2E7TbMOFvyFWF0MKDWeFPcG2nCkH3JdwQMmabolIhf+HnOHKL1ZyED/NwEhn4gApyiHLIu 1fkS/q8EFadYRtjyu3cSGL3TSp5O49g= From: Juergen Gross To: linux-kernel@vger.kernel.org, iommu@lists.linux.dev Cc: Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , xen-devel@lists.xenproject.org, Jan Vejvalka Subject: [PATCH 1/2] xen/swiotlb: relax alignment requirements Date: Tue, 11 Feb 2025 13:04:31 +0100 Message-ID: <20250211120432.29493-2-jgross@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250211120432.29493-1-jgross@suse.com> References: <20250211120432.29493-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 93FCA37363 X-Spam-Score: -3.01 X-Rspamd-Action: no action X-Spamd-Result: default: False [-3.01 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MX_GOOD(-0.01)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; TO_DN_SOME(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[]; DKIM_TRACE(0.00)[suse.com:+]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; RCPT_COUNT_SEVEN(0.00)[7]; RCVD_VIA_SMTP_AUTH(0.00)[]; RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received]; ASN(0.00)[asn:25478, ipnet:::/0, country:RU]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Flag: NO X-Spam-Level: X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1739287556409019000 Content-Type: text/plain; charset="utf-8" When mapping a buffer for DMA via .map_page or .map_sg DMA operations, there is no need to check the machine frames to be aligned according to the mapped areas size. All what is needed in these cases is that the buffer is contiguous at machine level. So carve out the alignment check from range_straddles_page_boundary() and move it to a helper called by xen_swiotlb_alloc_coherent() and xen_swiotlb_free_coherent() directly. Fixes: 9f40ec84a797 ("xen/swiotlb: add alignment check for dma buffers") Reported-by: Jan Vejvalka Tested-by: Jan Vejvalka Signed-off-by: Juergen Gross Reviewed-by: Stefano Stabellini --- drivers/xen/swiotlb-xen.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index a337edcf8faf..26c62e0d34e9 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -74,19 +74,21 @@ static inline phys_addr_t xen_dma_to_phys(struct device= *dev, return xen_bus_to_phys(dev, dma_to_phys(dev, dma_addr)); } =20 +static inline bool range_requires_alignment(phys_addr_t p, size_t size) +{ + phys_addr_t algn =3D 1ULL << (get_order(size) + PAGE_SHIFT); + phys_addr_t bus_addr =3D pfn_to_bfn(XEN_PFN_DOWN(p)) << XEN_PAGE_SHIFT; + + return IS_ALIGNED(p, algn) && !IS_ALIGNED(bus_addr, algn); +} + static inline int range_straddles_page_boundary(phys_addr_t p, size_t size) { unsigned long next_bfn, xen_pfn =3D XEN_PFN_DOWN(p); unsigned int i, nr_pages =3D XEN_PFN_UP(xen_offset_in_page(p) + size); - phys_addr_t algn =3D 1ULL << (get_order(size) + PAGE_SHIFT); =20 next_bfn =3D pfn_to_bfn(xen_pfn); =20 - /* If buffer is physically aligned, ensure DMA alignment. */ - if (IS_ALIGNED(p, algn) && - !IS_ALIGNED((phys_addr_t)next_bfn << XEN_PAGE_SHIFT, algn)) - return 1; - for (i =3D 1; i < nr_pages; i++) if (pfn_to_bfn(++xen_pfn) !=3D ++next_bfn) return 1; @@ -156,7 +158,8 @@ xen_swiotlb_alloc_coherent(struct device *dev, size_t s= ize, =20 *dma_handle =3D xen_phys_to_dma(dev, phys); if (*dma_handle + size - 1 > dma_mask || - range_straddles_page_boundary(phys, size)) { + range_straddles_page_boundary(phys, size) || + range_requires_alignment(phys, size)) { if (xen_create_contiguous_region(phys, order, fls64(dma_mask), dma_handle) !=3D 0) goto out_free_pages; @@ -182,7 +185,8 @@ xen_swiotlb_free_coherent(struct device *dev, size_t si= ze, void *vaddr, size =3D ALIGN(size, XEN_PAGE_SIZE); =20 if (WARN_ON_ONCE(dma_handle + size - 1 > dev->coherent_dma_mask) || - WARN_ON_ONCE(range_straddles_page_boundary(phys, size))) + WARN_ON_ONCE(range_straddles_page_boundary(phys, size) || + range_requires_alignment(phys, size))) return; =20 if (TestClearPageXenRemapped(virt_to_page(vaddr))) --=20 2.43.0 From nobody Thu Dec 18 01:51:58 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1739285319; cv=none; d=zohomail.com; s=zohoarc; b=ag2t5sRe3NmZwt55rN4ZIF1sMrYPr8q479ZpCUkIhpmh9KN1elJ/WxPZpKnHxaSH8Djge5ryYIKM/PHjtDXuR6VlnIKy/JKnn6zzwH2a58nFnH0HVdnT7I3C7klwutHpTGxVQ1giR9osTK6UjHcs988GktDKAPEom6J+xCNOUeM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739285319; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dd93zxOHd1VhtU6mAQSadywTP6rstYV/DWhGEd1EtSQ=; b=Vi4LOcY8b+feuAlOdrzhyfqgIGvfju+vHfMINR1T0Tt6dTKX5p1P1d1/jRES9txVLshgCtAhzogR5xueuZ/2/cNNcrhwASIALKrM+mKZajtyTqxyRwX5NrVhtJBGoCQ4W/UEBgRv9frc6YCyuc6xVw2HbUysOacF0yG81/4/Poo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1739285319684274.15045827321956; Tue, 11 Feb 2025 06:48:39 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.885635.1295442 (Exim 4.92) (envelope-from ) id 1thrYj-0001eL-AJ; Tue, 11 Feb 2025 14:48:21 +0000 Received: by outflank-mailman (output) from mailman id 885635.1295442; Tue, 11 Feb 2025 14:48:21 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1thrYj-0001eE-7U; Tue, 11 Feb 2025 14:48:21 +0000 Received: by outflank-mailman (input) for mailman id 885635; Tue, 11 Feb 2025 14:48:20 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1thrYi-0001e8-2U for xen-devel@lists.xenproject.org; Tue, 11 Feb 2025 14:48:20 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 38f80ff2-e887-11ef-b3ef-695165c68f79; Tue, 11 Feb 2025 15:48:14 +0100 (CET) Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5B9D93E9A0; Tue, 11 Feb 2025 12:04:47 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id F29BD13AA6; Tue, 11 Feb 2025 12:04:46 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id TPfMOd48q2e+GgAAD6G6ig (envelope-from ); Tue, 11 Feb 2025 12:04:46 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 38f80ff2-e887-11ef-b3ef-695165c68f79 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1739275487; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dd93zxOHd1VhtU6mAQSadywTP6rstYV/DWhGEd1EtSQ=; b=QWakJvfkC5i24MEMDLBVgyRlvu7G2gCf2hX7ThuqrvKd9Nu5oTpNA+H8WHPqrIpHmOX9Vd nQ5LmKooy+yXN7ajnbq7w43O3KiaP9VkD5bVcQg5u1okl6Ug5HCtJ2ZB3IjL+5PSuHf5A3 qI0HzkA5q247LxPRLfjX/7iyTSkB5Ik= Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=QWakJvfk DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1739275487; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dd93zxOHd1VhtU6mAQSadywTP6rstYV/DWhGEd1EtSQ=; b=QWakJvfkC5i24MEMDLBVgyRlvu7G2gCf2hX7ThuqrvKd9Nu5oTpNA+H8WHPqrIpHmOX9Vd nQ5LmKooy+yXN7ajnbq7w43O3KiaP9VkD5bVcQg5u1okl6Ug5HCtJ2ZB3IjL+5PSuHf5A3 qI0HzkA5q247LxPRLfjX/7iyTSkB5Ik= From: Juergen Gross To: linux-kernel@vger.kernel.org, x86@kernel.org, iommu@lists.linux.dev Cc: Juergen Gross , Stefano Stabellini , Boris Ostrovsky , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Oleksandr Tyshchenko , xen-devel@lists.xenproject.org Subject: [PATCH 2/2] xen/swiotlb: don't destroy contiguous region in all cases Date: Tue, 11 Feb 2025 13:04:32 +0100 Message-ID: <20250211120432.29493-3-jgross@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250211120432.29493-1-jgross@suse.com> References: <20250211120432.29493-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 5B9D93E9A0 X-Spam-Score: -3.01 X-Rspamd-Action: no action X-Spamd-Result: default: False [-3.01 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MX_GOOD(-0.01)[]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; FUZZY_BLOCKED(0.00)[rspamd.com]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; MIME_TRACE(0.00)[0:+]; RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; RCPT_COUNT_TWELVE(0.00)[13]; ARC_NA(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received]; FROM_EQ_ENVFROM(0.00)[]; ASN(0.00)[asn:25478, ipnet:::/0, country:RU]; RCVD_TLS_ALL(0.00)[]; DKIM_TRACE(0.00)[suse.com:+]; TO_DN_SOME(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.com:dkim,suse.com:mid,suse.com:email] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Flag: NO X-Spam-Level: X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1739285322074019000 Content-Type: text/plain; charset="utf-8" In case xen_swiotlb_alloc_coherent() needed to create a contiguous region only for other reason than the memory not being compliant with the device's DMA mask, there is no reason why this contiguous region should be destroyed by xen_swiotlb_free_coherent() later. Destroying this region should be done only, if the memory of the region was allocated with more stringent placement requirements than the memory it did replace. Signed-off-by: Juergen Gross --- arch/x86/include/asm/xen/swiotlb-xen.h | 5 +++-- arch/x86/xen/mmu_pv.c | 18 ++++++++++++------ drivers/xen/swiotlb-xen.c | 11 +++++++---- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/arch/x86/include/asm/xen/swiotlb-xen.h b/arch/x86/include/asm/= xen/swiotlb-xen.h index abde0f44df57..a353f20c7e79 100644 --- a/arch/x86/include/asm/xen/swiotlb-xen.h +++ b/arch/x86/include/asm/xen/swiotlb-xen.h @@ -4,8 +4,9 @@ =20 int xen_swiotlb_fixup(void *buf, unsigned long nslabs); int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order, - unsigned int address_bits, - dma_addr_t *dma_handle); + unsigned int address_bits, + dma_addr_t *dma_handle, + unsigned int *address_bits_in); void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order); =20 #endif /* _ASM_X86_SWIOTLB_XEN_H */ diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c index 2c70cd35e72c..fb586238f7c4 100644 --- a/arch/x86/xen/mmu_pv.c +++ b/arch/x86/xen/mmu_pv.c @@ -2208,19 +2208,22 @@ void __init xen_init_mmu_ops(void) static unsigned long discontig_frames[1<coherent_dma_mask; + unsigned int address_bits =3D fls64(dma_mask), address_bits_in; int order =3D get_order(size); phys_addr_t phys; void *ret; @@ -160,10 +162,11 @@ xen_swiotlb_alloc_coherent(struct device *dev, size_t= size, if (*dma_handle + size - 1 > dma_mask || range_straddles_page_boundary(phys, size) || range_requires_alignment(phys, size)) { - if (xen_create_contiguous_region(phys, order, fls64(dma_mask), - dma_handle) !=3D 0) + if (xen_create_contiguous_region(phys, order, address_bits, + dma_handle, &address_bits_in)) goto out_free_pages; - SetPageXenRemapped(virt_to_page(ret)); + if (address_bits_in > address_bits) + SetPageXenRemapped(virt_to_page(ret)); } =20 memset(ret, 0, size); --=20 2.43.0