From nobody Fri Nov 29 18:45:05 2024 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=1726469295; cv=none; d=zohomail.com; s=zohoarc; b=KsJfKIuZhblfbeuXAxPdam8ZWIjpfOk3c8J85jfNgGBg2SbAahY/hnfXji+9/8JqfPgeTqF7ZGka/Y6L9KKdIZsOnpv1eLYpwe//zq+4+m9ZqNk3Q8k8KjpcdsdwjDmHhhdZfoHHrftevA9ggTZMbl4ZQJE9V0SAuEbWl2inYT0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726469295; 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=JBszN+nYRysjyJMENOdUJD1nUJzImv2ssH2bNj79Urk=; b=gmdI4AZwijrqRvNpNaonvNiC9wTWJpkQEaZsVCZkfITltX8WwvKnumcriPFSnuMhZf570kjl+01ka8xdh221cHKizrG/z8cvALpBSfaQ8hG4tFm5VEraNfpx1E+POPpwYXR9n1rNj0nwh+i9t+CKgNDDMbzS6PdBgelET39Ikx8= 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 1726469295969293.89064553158335; Sun, 15 Sep 2024 23:48:15 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.799168.1209033 (Exim 4.92) (envelope-from ) id 1sq5Wh-0004tz-Gr; Mon, 16 Sep 2024 06:47:59 +0000 Received: by outflank-mailman (output) from mailman id 799168.1209033; Mon, 16 Sep 2024 06:47:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1sq5Wh-0004ts-Du; Mon, 16 Sep 2024 06:47:59 +0000 Received: by outflank-mailman (input) for mailman id 799168; Mon, 16 Sep 2024 06:47:58 +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 1sq5Wg-0004f9-QN for xen-devel@lists.xenproject.org; Mon, 16 Sep 2024 06:47:58 +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 9b354572-73f7-11ef-99a2-01e77a169b0f; Mon, 16 Sep 2024 08:47:57 +0200 (CEST) Received: from imap1.dmz-prg2.suse.org (unknown [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 C6E1721BAD; Mon, 16 Sep 2024 06:47:56 +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 8EA3C139CE; Mon, 16 Sep 2024 06:47:56 +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 GDVLIZzU52aJIAAAD6G6ig (envelope-from ); Mon, 16 Sep 2024 06:47:56 +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: 9b354572-73f7-11ef-99a2-01e77a169b0f DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1726469276; 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=JBszN+nYRysjyJMENOdUJD1nUJzImv2ssH2bNj79Urk=; b=bJtJLvyxBCA/NavfnlL2lyJw0Yw5R6IYBFkPb2dMF851JftbNmyZSJDysFgHUGo4x8uOdy yzKePk68c8JC8S3HaVI58smWpnFeKHHtm/EBuzieqmrpKEdq8Fd7mMXAQ1TrXzeDxEjttJ uwLg+sRHwYkSDjS7RAXQAJjl+Wv19C4= Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1726469276; 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=JBszN+nYRysjyJMENOdUJD1nUJzImv2ssH2bNj79Urk=; b=bJtJLvyxBCA/NavfnlL2lyJw0Yw5R6IYBFkPb2dMF851JftbNmyZSJDysFgHUGo4x8uOdy yzKePk68c8JC8S3HaVI58smWpnFeKHHtm/EBuzieqmrpKEdq8Fd7mMXAQ1TrXzeDxEjttJ uwLg+sRHwYkSDjS7RAXQAJjl+Wv19C4= 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 Subject: [PATCH v2 1/2] xen/swiotlb: add alignment check for dma buffers Date: Mon, 16 Sep 2024 08:47:47 +0200 Message-ID: <20240916064748.18071-2-jgross@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240916064748.18071-1-jgross@suse.com> References: <20240916064748.18071-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam-Level: X-Spamd-Result: default: False [-6.80 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[99.99%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-0.997]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; TO_DN_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_FIVE(0.00)[6]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -6.80 X-Spam-Flag: NO X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1726469297092116600 Content-Type: text/plain; charset="utf-8" When checking a memory buffer to be consecutive in machine memory, the alignment needs to be checked, too. Failing to do so might result in DMA memory not being aligned according to its requested size, leading to error messages like: 4xxx 0000:2b:00.0: enabling device (0140 -> 0142) 4xxx 0000:2b:00.0: Ring address not aligned 4xxx 0000:2b:00.0: Failed to initialise service qat_crypto 4xxx 0000:2b:00.0: Resetting device qat_dev0 4xxx: probe of 0000:2b:00.0 failed with error -14 Fixes: 9435cce87950 ("xen/swiotlb: Add support for 64KB page granularity") Signed-off-by: Juergen Gross Reviewed-by: Stefano Stabellini --- V2: - use 1ULL for creating align mask in order to cover ARM32 LPAE - fix case of XEN_PAGE_SIZE !=3D PAGE_SIZE (Jan Beulich) --- drivers/xen/swiotlb-xen.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index 35155258a7e2..ddf5b1df632e 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -78,9 +78,15 @@ static inline int range_straddles_page_boundary(phys_add= r_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(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; --=20 2.43.0 From nobody Fri Nov 29 18:45:05 2024 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; 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=fail(p=quarantine dis=quarantine) header.from=suse.com Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1726469303381195.31615027126986; Sun, 15 Sep 2024 23:48:23 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.799169.1209042 (Exim 4.92) (envelope-from ) id 1sq5Wn-0005Cb-OA; Mon, 16 Sep 2024 06:48:05 +0000 Received: by outflank-mailman (output) from mailman id 799169.1209042; Mon, 16 Sep 2024 06:48:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1sq5Wn-0005CU-LI; Mon, 16 Sep 2024 06:48:05 +0000 Received: by outflank-mailman (input) for mailman id 799169; Mon, 16 Sep 2024 06:48:05 +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 1sq5Wm-0005Bn-VU for xen-devel@lists.xenproject.org; Mon, 16 Sep 2024 06:48:04 +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 9e8d3a5b-73f7-11ef-a0b6-8be0dac302b0; Mon, 16 Sep 2024 08:48:03 +0200 (CEST) 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 7837C21BEC; Mon, 16 Sep 2024 06:48:02 +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 39020139CE; Mon, 16 Sep 2024 06:48:02 +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 DrJuDKLU52aOIAAAD6G6ig (envelope-from ); Mon, 16 Sep 2024 06:48:02 +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: 9e8d3a5b-73f7-11ef-a0b6-8be0dac302b0 Authentication-Results: smtp-out1.suse.de; none 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 Beulich Subject: [PATCH v2 2/2] xen/swiotlb: fix allocated size Date: Mon, 16 Sep 2024 08:47:48 +0200 Message-ID: <20240916064748.18071-3-jgross@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240916064748.18071-1-jgross@suse.com> References: <20240916064748.18071-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Spam-Flag: NO X-Spam-Score: -4.00 X-Rspamd-Queue-Id: 7837C21BEC X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Action: no action X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Level: X-ZM-MESSAGEID: 1726469305028116600 Content-Type: text/plain; charset="utf-8" The allocated size in xen_swiotlb_alloc_coherent() and xen_swiotlb_free_coherent() is calculated wrong for the case of XEN_PAGE_SIZE not matching PAGE_SIZE. Fix that. Fixes: 7250f422da04 ("xen-swiotlb: use actually allocated size on check phy= sical continuous") Reported-by: Jan Beulich Signed-off-by: Juergen Gross Reviewed-by: Jan Beulich Reviewed-by: Stefano Stabellini --- V2: - new patch --- drivers/xen/swiotlb-xen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index ddf5b1df632e..faa2fb7c74ae 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -147,7 +147,7 @@ xen_swiotlb_alloc_coherent(struct device *dev, size_t s= ize, void *ret; =20 /* Align the allocation to the Xen page size */ - size =3D 1UL << (order + XEN_PAGE_SHIFT); + size =3D ALIGN(size, XEN_PAGE_SIZE); =20 ret =3D (void *)__get_free_pages(flags, get_order(size)); if (!ret) @@ -179,7 +179,7 @@ xen_swiotlb_free_coherent(struct device *dev, size_t si= ze, void *vaddr, int order =3D get_order(size); =20 /* Convert the size to actually allocated. */ - size =3D 1UL << (order + XEN_PAGE_SHIFT); + 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))) --=20 2.43.0