From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.2 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 644A2C2B9F4 for ; Mon, 14 Jun 2021 12:04:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4130161208 for ; Mon, 14 Jun 2021 12:04:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233366AbhFNMGx (ORCPT ); Mon, 14 Jun 2021 08:06:53 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:55208 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232977AbhFNMGv (ORCPT ); Mon, 14 Jun 2021 08:06:51 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 15EC4A5m099471; Mon, 14 Jun 2021 12:04:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : mime-version : content-type; s=corp-2020-01-29; bh=mdlMmyqEE4DXsTzal67kMC06Y3asTLPKia/p10d3n3U=; b=PGLRLRrciCKxXYlTDGXYSv9X6vwnDqlotSuyp4hZAH+iPHg2tNXuBoNMBbJdsZvJQrAN mko4c4HxjSO7HBLkXVzeP6rOLU0EBew2UrIQ1wjV2Fu1FkVvneWcwkzXqwANnVOj9lB0 nG3WLN4wWbWRrY8Pu2AFScGArOuZeWp9wDEUbTqwL4obqxjFC5oTYMB1AanzrmkZNNBl e7k+iw1gDuRWv09R3M0F/TCTl/QFx+5Yz1T5IWxvB8AZxsYWUvIL6xCEBwqaWdNLQDp1 8+r/0bMcwJBDH4fo8qzYMon8p0Tgf0t8xqo8T1agIYf3M4aTtQQBqy71YKoWST1tA/1+ kg== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by aserp2120.oracle.com with ESMTP id 394mvnb5rs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 14 Jun 2021 12:04:40 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 15EBuih6001062; Mon, 14 Jun 2021 12:04:39 GMT Received: from pps.reinject (localhost [127.0.0.1]) by userp3030.oracle.com with ESMTP id 394j1t2an1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 14 Jun 2021 12:04:39 +0000 Received: from userp3030.oracle.com (userp3030.oracle.com [127.0.0.1]) by pps.reinject (8.16.0.36/8.16.0.36) with SMTP id 15EC4c1M026243; Mon, 14 Jun 2021 12:04:38 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userp3030.oracle.com with ESMTP id 394j1t2amf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 14 Jun 2021 12:04:38 +0000 Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id 15EC4aPe002959; Mon, 14 Jun 2021 12:04:36 GMT Received: from kadam (/41.212.42.34) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 14 Jun 2021 12:04:35 +0000 Date: Mon, 14 Jun 2021 15:04:29 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Christoph Hellwig Cc: lkp@intel.com, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Robin Murphy Subject: drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previously assumed 'hwdev' could be null (see line 308) Message-ID: <202106130525.akNbMu0d-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.9.4 (2018-02-28) X-Proofpoint-ORIG-GUID: Qj9L9ioOEn8aM1SsMFM9JV0Zs1ZrodNe X-Proofpoint-GUID: Qj9L9ioOEn8aM1SsMFM9JV0Zs1ZrodNe X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10014 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 impostorscore=0 mlxscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 bulkscore=0 priorityscore=1501 clxscore=1011 mlxlogscore=999 phishscore=0 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106140084 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 43cb5d49a99b3ecd9fef9826899aac948c3048da commit: 7bc5c428a660d4d1bc95ba54bf4cb6bccf8c3029 dma-direct: remove __dma_to_phys config: x86_64-randconfig-m001-20210612 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previously assumed 'hwdev' could be null (see line 308) vim +/hwdev +315 drivers/xen/swiotlb-xen.c dceb1a6819ab2c Christoph Hellwig 2017-05-21 276 static void * b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 277 xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size, baa676fcf8d555 Andrzej Pietrasiewicz 2012-03-27 278 dma_addr_t *dma_handle, gfp_t flags, 00085f1efa387a Krzysztof Kozlowski 2016-08-03 279 unsigned long attrs) b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 280 { b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 281 void *ret; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 282 int order = get_order(size); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 283 u64 dma_mask = DMA_BIT_MASK(32); 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 284 phys_addr_t phys; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 285 dma_addr_t dev_addr; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 286 b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 287 /* b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 288 * Ignore region specifiers - the kernel's ideas of b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 289 * pseudo-phys memory layout has nothing to do with the b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 290 * machine physical layout. We can't allocate highmem b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 291 * because we can't return a pointer to it. b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 292 */ b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 293 flags &= ~(__GFP_DMA | __GFP_HIGHMEM); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 294 7250f422da0480 Joe Jin 2018-10-16 295 /* Convert the size to actually allocated. */ 7250f422da0480 Joe Jin 2018-10-16 296 size = 1UL << (order + XEN_PAGE_SHIFT); 7250f422da0480 Joe Jin 2018-10-16 297 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 298 /* On ARM this function returns an ioremap'ped virtual address for 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 299 * which virt_to_phys doesn't return the corresponding physical 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 300 * address. In fact on ARM virt_to_phys only works for kernel direct 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 301 * mapped RAM memory. Also see comment below. 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 302 */ 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 303 ret = xen_alloc_coherent_pages(hwdev, size, dma_handle, flags, attrs); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 304 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 305 if (!ret) 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 306 return ret; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 307 b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 @308 if (hwdev && hwdev->coherent_dma_mask) ^^^^^ Hopefully this check can be removed. 038d07a283d623 Christoph Hellwig 2018-03-19 309 dma_mask = hwdev->coherent_dma_mask; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 310 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 311 /* At this point dma_handle is the dma address, next we are 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 312 * going to set it to the machine address. 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 313 * Do not use virt_to_phys(ret) because on ARM it doesn't correspond 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 314 * to *dma_handle. */ 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 @315 phys = dma_to_phys(hwdev, *dma_handle); ^^^^^ dma_to_phys() does not check. 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 316 dev_addr = xen_phys_to_dma(hwdev, phys); 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 317 if (((dev_addr + size - 1 <= dma_mask)) && 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 318 !range_straddles_page_boundary(phys, size)) 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 319 *dma_handle = dev_addr; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 320 else { 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 321 if (xen_create_contiguous_region(phys, order, 69908907b02efe Stefano Stabellini 2013-10-09 322 fls64(dma_mask), dma_handle) != 0) { 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 323 xen_free_coherent_pages(hwdev, size, ret, (dma_addr_t)phys, attrs); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 324 return NULL; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 325 } 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 326 *dma_handle = phys_to_dma(hwdev, *dma_handle); b877ac9815a8fe Juergen Gross 2019-06-14 327 SetPageXenRemapped(virt_to_page(ret)); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 328 } 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 329 memset(ret, 0, size); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 330 return ret; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 331 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7917880571291755943==" MIME-Version: 1.0 From: kernel test robot Subject: drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previously assumed 'hwdev' could be null (see line 308) Date: Sun, 13 Jun 2021 05:36:29 +0800 Message-ID: <202106130525.akNbMu0d-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============7917880571291755943== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Christoph Hellwig CC: Robin Murphy tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = master head: 43cb5d49a99b3ecd9fef9826899aac948c3048da commit: 7bc5c428a660d4d1bc95ba54bf4cb6bccf8c3029 dma-direct: remove __dma_t= o_phys date: 9 months ago :::::: branch date: 2 hours ago :::::: commit date: 9 months ago config: x86_64-randconfig-m001-20210612 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previo= usly assumed 'hwdev' could be null (see line 308) vim +/hwdev +315 drivers/xen/swiotlb-xen.c dceb1a6819ab2c Christoph Hellwig 2017-05-21 275 = dceb1a6819ab2c Christoph Hellwig 2017-05-21 276 static void * b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 277 xen_swiotlb_alloc_coh= erent(struct device *hwdev, size_t size, baa676fcf8d555 Andrzej Pietrasiewicz 2012-03-27 278 dma_addr_t *dma= _handle, gfp_t flags, 00085f1efa387a Krzysztof Kozlowski 2016-08-03 279 unsigned long a= ttrs) b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 280 { b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 281 void *ret; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 282 int order =3D get_or= der(size); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 283 u64 dma_mask =3D DMA= _BIT_MASK(32); 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 284 phys_addr_t phys; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 285 dma_addr_t dev_addr; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 286 = b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 287 /* b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 288 * Ignore region spec= ifiers - the kernel's ideas of b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 289 * pseudo-phys memory= layout has nothing to do with the b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 290 * machine physical l= ayout. We can't allocate highmem b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 291 * because we can't r= eturn a pointer to it. b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 292 */ b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 293 flags &=3D ~(__GFP_D= MA | __GFP_HIGHMEM); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 294 = 7250f422da0480 Joe Jin 2018-10-16 295 /* Convert the size = to actually allocated. */ 7250f422da0480 Joe Jin 2018-10-16 296 size =3D 1UL << (ord= er + XEN_PAGE_SHIFT); 7250f422da0480 Joe Jin 2018-10-16 297 = 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 298 /* On ARM this funct= ion returns an ioremap'ped virtual address for 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 299 * which virt_to_phy= s doesn't return the corresponding physical 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 300 * address. In fact = on ARM virt_to_phys only works for kernel direct 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 301 * mapped RAM memory= . Also see comment below. 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 302 */ 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 303 ret =3D xen_alloc_co= herent_pages(hwdev, size, dma_handle, flags, attrs); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 304 = 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 305 if (!ret) 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 306 return ret; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 307 = b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 @308 if (hwdev && hwdev->= coherent_dma_mask) 038d07a283d623 Christoph Hellwig 2018-03-19 309 dma_mask =3D hwdev-= >coherent_dma_mask; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 310 = 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 311 /* At this point dma= _handle is the dma address, next we are 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 312 * going to set it t= o the machine address. 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 313 * Do not use virt_t= o_phys(ret) because on ARM it doesn't correspond 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 314 * to *dma_handle. */ 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 @315 phys =3D dma_to_phys= (hwdev, *dma_handle); 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 316 dev_addr =3D xen_phy= s_to_dma(hwdev, phys); 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 317 if (((dev_addr + siz= e - 1 <=3D dma_mask)) && 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 318 !range_straddles= _page_boundary(phys, size)) 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 319 *dma_handle =3D dev= _addr; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 320 else { 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 321 if (xen_create_cont= iguous_region(phys, order, 69908907b02efe Stefano Stabellini 2013-10-09 322 fls64(dma_mask= ), dma_handle) !=3D 0) { 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 323 xen_free_coherent_= pages(hwdev, size, ret, (dma_addr_t)phys, attrs); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 324 return NULL; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 325 } 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 326 *dma_handle =3D phy= s_to_dma(hwdev, *dma_handle); b877ac9815a8fe Juergen Gross 2019-06-14 327 SetPageXenRemapped(= virt_to_page(ret)); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 328 } 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 329 memset(ret, 0, size); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 330 return ret; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 331 } b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 332 = :::::: The code@line 315 was first introduced by commit :::::: 91ffe4ad534ab2262cbcfb339c5ae190c7ac0e7c swiotlb-xen: introduce phys= _to_dma/dma_to_phys translations :::::: TO: Stefano Stabellini :::::: CC: Juergen Gross --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============7917880571291755943== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 0FMZarGJeUkuAo68+A9Ame2XS1gCAA== --===============7917880571291755943==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6855412387907777166==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previously assumed 'hwdev' could be null (see line 308) Date: Mon, 14 Jun 2021 15:04:29 +0300 Message-ID: <202106130525.akNbMu0d-lkp@intel.com> List-Id: --===============6855412387907777166== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = master head: 43cb5d49a99b3ecd9fef9826899aac948c3048da commit: 7bc5c428a660d4d1bc95ba54bf4cb6bccf8c3029 dma-direct: remove __dma_t= o_phys config: x86_64-randconfig-m001-20210612 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/xen/swiotlb-xen.c:315 xen_swiotlb_alloc_coherent() error: we previo= usly assumed 'hwdev' could be null (see line 308) vim +/hwdev +315 drivers/xen/swiotlb-xen.c dceb1a6819ab2c Christoph Hellwig 2017-05-21 276 static void * b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 277 xen_swiotlb_alloc_coh= erent(struct device *hwdev, size_t size, baa676fcf8d555 Andrzej Pietrasiewicz 2012-03-27 278 dma_addr_t *dma= _handle, gfp_t flags, 00085f1efa387a Krzysztof Kozlowski 2016-08-03 279 unsigned long a= ttrs) b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 280 { b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 281 void *ret; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 282 int order =3D get_or= der(size); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 283 u64 dma_mask =3D DMA= _BIT_MASK(32); 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 284 phys_addr_t phys; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 285 dma_addr_t dev_addr; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 286 = b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 287 /* b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 288 * Ignore region spec= ifiers - the kernel's ideas of b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 289 * pseudo-phys memory= layout has nothing to do with the b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 290 * machine physical l= ayout. We can't allocate highmem b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 291 * because we can't r= eturn a pointer to it. b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 292 */ b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 293 flags &=3D ~(__GFP_D= MA | __GFP_HIGHMEM); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 294 = 7250f422da0480 Joe Jin 2018-10-16 295 /* Convert the size = to actually allocated. */ 7250f422da0480 Joe Jin 2018-10-16 296 size =3D 1UL << (ord= er + XEN_PAGE_SHIFT); 7250f422da0480 Joe Jin 2018-10-16 297 = 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 298 /* On ARM this funct= ion returns an ioremap'ped virtual address for 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 299 * which virt_to_phy= s doesn't return the corresponding physical 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 300 * address. In fact = on ARM virt_to_phys only works for kernel direct 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 301 * mapped RAM memory= . Also see comment below. 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 302 */ 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 303 ret =3D xen_alloc_co= herent_pages(hwdev, size, dma_handle, flags, attrs); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 304 = 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 305 if (!ret) 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 306 return ret; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 307 = b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 @308 if (hwdev && hwdev->= coherent_dma_mask) ^^^^^ Hopefully this check can be removed. 038d07a283d623 Christoph Hellwig 2018-03-19 309 dma_mask =3D hwdev-= >coherent_dma_mask; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 310 = 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 311 /* At this point dma= _handle is the dma address, next we are 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 312 * going to set it t= o the machine address. 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 313 * Do not use virt_t= o_phys(ret) because on ARM it doesn't correspond 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 314 * to *dma_handle. */ 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 @315 phys =3D dma_to_phys= (hwdev, *dma_handle); = ^^^^^ dma_to_phys() does not check. 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 316 dev_addr =3D xen_phy= s_to_dma(hwdev, phys); 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 317 if (((dev_addr + siz= e - 1 <=3D dma_mask)) && 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 318 !range_straddles= _page_boundary(phys, size)) 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 319 *dma_handle =3D dev= _addr; 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 320 else { 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 321 if (xen_create_cont= iguous_region(phys, order, 69908907b02efe Stefano Stabellini 2013-10-09 322 fls64(dma_mask= ), dma_handle) !=3D 0) { 1b65c4e5a9af1a Stefano Stabellini 2013-10-10 323 xen_free_coherent_= pages(hwdev, size, ret, (dma_addr_t)phys, attrs); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 324 return NULL; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 325 } 91ffe4ad534ab2 Stefano Stabellini 2020-07-10 326 *dma_handle =3D phy= s_to_dma(hwdev, *dma_handle); b877ac9815a8fe Juergen Gross 2019-06-14 327 SetPageXenRemapped(= virt_to_page(ret)); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 328 } 6810df88dcfc22 Konrad Rzeszutek Wilk 2011-08-25 329 memset(ret, 0, size); b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 330 return ret; b097186fd29d5b Konrad Rzeszutek Wilk 2010-05-11 331 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --===============6855412387907777166==--