From: "Heiko Stübner" <heiko@sntech.de>
To: kernel test robot <lkp@intel.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-kernel@vger.kernel.org,
Palmer Dabbelt <palmer@rivosinc.com>,
Christoph Hellwig <hch@lst.de>, Guo Ren <guoren@kernel.org>
Subject: Re: kernel/dma/pool.c:105:9: error: call to undeclared function 'pgprot_dmacoherent'; ISO C99 and later do not support implicit function declarations
Date: Wed, 07 Sep 2022 17:55:47 +0200 [thread overview]
Message-ID: <3064082.22IY78Rhhi@diego> (raw)
In-Reply-To: <202209070536.lIefsBuR-lkp@intel.com>
Am Dienstag, 6. September 2022, 23:21:48 CEST schrieb kernel test robot:
> Hi Heiko,
>
> First bad commit (maybe != root cause):
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: d2ec799d1c1be847d6a70704fe586ac4d14265c8
> commit: 1631ba1259d6d7f49b6028f2a1a0fa02be1c522a riscv: Add support for non-coherent devices using zicbom extension
> date: 6 weeks ago
> config: riscv-randconfig-r031-20220906 (https://download.01.org/0day-ci/archive/20220907/202209070536.lIefsBuR-lkp@intel.com/config)
> compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project c55b41d5199d2394dd6cdb8f52180d8b81d809d4)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # install riscv cross compiling tool for clang build
> # apt-get install binutils-riscv64-linux-gnu
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1631ba1259d6d7f49b6028f2a1a0fa02be1c522a
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 1631ba1259d6d7f49b6028f2a1a0fa02be1c522a
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash kernel/
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>
I've send
https://lore.kernel.org/r/20220907154932.2858518-1-heiko@sntech.de
as a fix just now.
Both the core svpbmt and zicbom already depend on CONFIG_MMU, while the
t-head variant did not. So it was possible with a non-MMU-build to:
- enable the T-Head CMO variant, which would
- select CONFIG_RISCV_DMA_NONCOHERENT pulling in
- CONFIG_DMA_DIRECT_REMAP
and therefore run into that issue.
The above patch just adjust the dependency for the variant implementation
to match the core extensions.
Heiko
>
> All errors (new ones prefixed by >>):
>
> In file included from kernel/dma/pool.c:8:
> In file included from include/linux/dma-map-ops.h:9:
> In file included from include/linux/dma-mapping.h:10:
> In file included from include/linux/scatterlist.h:9:
> In file included from arch/riscv/include/asm/io.h:136:
> include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> val = __raw_readb(PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
> ~~~~~~~~~~ ^
> include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
> #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
> ^
> In file included from kernel/dma/pool.c:8:
> In file included from include/linux/dma-map-ops.h:9:
> In file included from include/linux/dma-mapping.h:10:
> In file included from include/linux/scatterlist.h:9:
> In file included from arch/riscv/include/asm/io.h:136:
> include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
> ~~~~~~~~~~ ^
> include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
> #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
> ^
> In file included from kernel/dma/pool.c:8:
> In file included from include/linux/dma-map-ops.h:9:
> In file included from include/linux/dma-mapping.h:10:
> In file included from include/linux/scatterlist.h:9:
> In file included from arch/riscv/include/asm/io.h:136:
> include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> __raw_writeb(value, PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:1024:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
> ~~~~~~~~~~ ^
> >> kernel/dma/pool.c:105:9: error: call to undeclared function 'pgprot_dmacoherent'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> pgprot_dmacoherent(PAGE_KERNEL),
> ^
> >> kernel/dma/pool.c:105:9: error: passing 'int' to parameter of incompatible type 'pgprot_t'
> pgprot_dmacoherent(PAGE_KERNEL),
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dma-map-ops.h:235:76: note: passing argument to parameter 'prot' here
> void *dma_common_contiguous_remap(struct page *page, size_t size, pgprot_t prot,
> ^
> 7 warnings and 2 errors generated.
>
>
> vim +/pgprot_dmacoherent +105 kernel/dma/pool.c
>
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 78
> 54adadf9b08571 David Rientjes 2020-04-20 79 static int atomic_pool_expand(struct gen_pool *pool, size_t pool_size,
> 54adadf9b08571 David Rientjes 2020-04-20 80 gfp_t gfp)
> e860c299ac0d73 David Rientjes 2020-04-14 81 {
> 54adadf9b08571 David Rientjes 2020-04-20 82 unsigned int order;
> 892fc9f6835ecf Dan Carpenter 2020-08-26 83 struct page *page = NULL;
> e860c299ac0d73 David Rientjes 2020-04-14 84 void *addr;
> 54adadf9b08571 David Rientjes 2020-04-20 85 int ret = -ENOMEM;
> 54adadf9b08571 David Rientjes 2020-04-20 86
> 54adadf9b08571 David Rientjes 2020-04-20 87 /* Cannot allocate larger than MAX_ORDER-1 */
> 54adadf9b08571 David Rientjes 2020-04-20 88 order = min(get_order(pool_size), MAX_ORDER-1);
> 54adadf9b08571 David Rientjes 2020-04-20 89
> 54adadf9b08571 David Rientjes 2020-04-20 90 do {
> 54adadf9b08571 David Rientjes 2020-04-20 91 pool_size = 1 << (PAGE_SHIFT + order);
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 92 if (cma_in_zone(gfp))
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 93 page = dma_alloc_from_contiguous(NULL, 1 << order,
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 94 order, false);
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 95 if (!page)
> c84dc6e68a1d24 David Rientjes 2020-04-14 96 page = alloc_pages(gfp, order);
> 54adadf9b08571 David Rientjes 2020-04-20 97 } while (!page && order-- > 0);
> e860c299ac0d73 David Rientjes 2020-04-14 98 if (!page)
> e860c299ac0d73 David Rientjes 2020-04-14 99 goto out;
> e860c299ac0d73 David Rientjes 2020-04-14 100
> c84dc6e68a1d24 David Rientjes 2020-04-14 101 arch_dma_prep_coherent(page, pool_size);
> e860c299ac0d73 David Rientjes 2020-04-14 102
> 76a19940bd62a8 David Rientjes 2020-04-14 103 #ifdef CONFIG_DMA_DIRECT_REMAP
> c84dc6e68a1d24 David Rientjes 2020-04-14 104 addr = dma_common_contiguous_remap(page, pool_size,
> e860c299ac0d73 David Rientjes 2020-04-14 @105 pgprot_dmacoherent(PAGE_KERNEL),
> e860c299ac0d73 David Rientjes 2020-04-14 106 __builtin_return_address(0));
> e860c299ac0d73 David Rientjes 2020-04-14 107 if (!addr)
> 54adadf9b08571 David Rientjes 2020-04-20 108 goto free_page;
> 76a19940bd62a8 David Rientjes 2020-04-14 109 #else
> 76a19940bd62a8 David Rientjes 2020-04-14 110 addr = page_to_virt(page);
> 76a19940bd62a8 David Rientjes 2020-04-14 111 #endif
> 76a19940bd62a8 David Rientjes 2020-04-14 112 /*
> 76a19940bd62a8 David Rientjes 2020-04-14 113 * Memory in the atomic DMA pools must be unencrypted, the pools do not
> 2f5388a29be82a Christoph Hellwig 2020-08-17 114 * shrink so no re-encryption occurs in dma_direct_free().
> 76a19940bd62a8 David Rientjes 2020-04-14 115 */
> 76a19940bd62a8 David Rientjes 2020-04-14 116 ret = set_memory_decrypted((unsigned long)page_to_virt(page),
> 76a19940bd62a8 David Rientjes 2020-04-14 117 1 << order);
> 76a19940bd62a8 David Rientjes 2020-04-14 118 if (ret)
> 76a19940bd62a8 David Rientjes 2020-04-14 119 goto remove_mapping;
> 54adadf9b08571 David Rientjes 2020-04-20 120 ret = gen_pool_add_virt(pool, (unsigned long)addr, page_to_phys(page),
> 54adadf9b08571 David Rientjes 2020-04-20 121 pool_size, NUMA_NO_NODE);
> e860c299ac0d73 David Rientjes 2020-04-14 122 if (ret)
> 76a19940bd62a8 David Rientjes 2020-04-14 123 goto encrypt_mapping;
> e860c299ac0d73 David Rientjes 2020-04-14 124
> 2edc5bb3c5cc42 David Rientjes 2020-04-14 125 dma_atomic_pool_size_add(gfp, pool_size);
> e860c299ac0d73 David Rientjes 2020-04-14 126 return 0;
> e860c299ac0d73 David Rientjes 2020-04-14 127
> 76a19940bd62a8 David Rientjes 2020-04-14 128 encrypt_mapping:
> 76a19940bd62a8 David Rientjes 2020-04-14 129 ret = set_memory_encrypted((unsigned long)page_to_virt(page),
> 76a19940bd62a8 David Rientjes 2020-04-14 130 1 << order);
> 76a19940bd62a8 David Rientjes 2020-04-14 131 if (WARN_ON_ONCE(ret)) {
> 76a19940bd62a8 David Rientjes 2020-04-14 132 /* Decrypt succeeded but encrypt failed, purposely leak */
> 76a19940bd62a8 David Rientjes 2020-04-14 133 goto out;
> 76a19940bd62a8 David Rientjes 2020-04-14 134 }
> e860c299ac0d73 David Rientjes 2020-04-14 135 remove_mapping:
> 76a19940bd62a8 David Rientjes 2020-04-14 136 #ifdef CONFIG_DMA_DIRECT_REMAP
> c84dc6e68a1d24 David Rientjes 2020-04-14 137 dma_common_free_remap(addr, pool_size);
> 76a19940bd62a8 David Rientjes 2020-04-14 138 #endif
> 76a19940bd62a8 David Rientjes 2020-04-14 139 free_page: __maybe_unused
> c84dc6e68a1d24 David Rientjes 2020-04-14 140 __free_pages(page, order);
> e860c299ac0d73 David Rientjes 2020-04-14 141 out:
> 54adadf9b08571 David Rientjes 2020-04-20 142 return ret;
> 54adadf9b08571 David Rientjes 2020-04-20 143 }
> 54adadf9b08571 David Rientjes 2020-04-20 144
>
> :::::: The code at line 105 was first introduced by commit
> :::::: e860c299ac0d738b44ff91693f11e63080a29698 dma-remap: separate DMA atomic pools from direct remap code
>
> :::::: TO: David Rientjes <rientjes@google.com>
> :::::: CC: Christoph Hellwig <hch@lst.de>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Heiko Stübner <heiko@sntech.de>
To: kbuild-all@lists.01.org
Subject: Re: kernel/dma/pool.c:105:9: error: call to undeclared function 'pgprot_dmacoherent'; ISO C99 and later do not support implicit function declarations
Date: Wed, 07 Sep 2022 17:55:47 +0200 [thread overview]
Message-ID: <3064082.22IY78Rhhi@diego> (raw)
In-Reply-To: <202209070536.lIefsBuR-lkp@intel.com>
[-- Attachment #1: Type: text/plain, Size: 12265 bytes --]
Am Dienstag, 6. September 2022, 23:21:48 CEST schrieb kernel test robot:
> Hi Heiko,
>
> First bad commit (maybe != root cause):
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: d2ec799d1c1be847d6a70704fe586ac4d14265c8
> commit: 1631ba1259d6d7f49b6028f2a1a0fa02be1c522a riscv: Add support for non-coherent devices using zicbom extension
> date: 6 weeks ago
> config: riscv-randconfig-r031-20220906 (https://download.01.org/0day-ci/archive/20220907/202209070536.lIefsBuR-lkp(a)intel.com/config)
> compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project c55b41d5199d2394dd6cdb8f52180d8b81d809d4)
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # install riscv cross compiling tool for clang build
> # apt-get install binutils-riscv64-linux-gnu
> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1631ba1259d6d7f49b6028f2a1a0fa02be1c522a
> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> git fetch --no-tags linus master
> git checkout 1631ba1259d6d7f49b6028f2a1a0fa02be1c522a
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash kernel/
>
> If you fix the issue, kindly add following tag where applicable
> Reported-by: kernel test robot <lkp@intel.com>
I've send
https://lore.kernel.org/r/20220907154932.2858518-1-heiko(a)sntech.de
as a fix just now.
Both the core svpbmt and zicbom already depend on CONFIG_MMU, while the
t-head variant did not. So it was possible with a non-MMU-build to:
- enable the T-Head CMO variant, which would
- select CONFIG_RISCV_DMA_NONCOHERENT pulling in
- CONFIG_DMA_DIRECT_REMAP
and therefore run into that issue.
The above patch just adjust the dependency for the variant implementation
to match the core extensions.
Heiko
>
> All errors (new ones prefixed by >>):
>
> In file included from kernel/dma/pool.c:8:
> In file included from include/linux/dma-map-ops.h:9:
> In file included from include/linux/dma-mapping.h:10:
> In file included from include/linux/scatterlist.h:9:
> In file included from arch/riscv/include/asm/io.h:136:
> include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> val = __raw_readb(PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
> ~~~~~~~~~~ ^
> include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu'
> #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
> ^
> In file included from kernel/dma/pool.c:8:
> In file included from include/linux/dma-map-ops.h:9:
> In file included from include/linux/dma-mapping.h:10:
> In file included from include/linux/scatterlist.h:9:
> In file included from arch/riscv/include/asm/io.h:136:
> include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
> ~~~~~~~~~~ ^
> include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu'
> #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
> ^
> In file included from kernel/dma/pool.c:8:
> In file included from include/linux/dma-map-ops.h:9:
> In file included from include/linux/dma-mapping.h:10:
> In file included from include/linux/scatterlist.h:9:
> In file included from arch/riscv/include/asm/io.h:136:
> include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> __raw_writeb(value, PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
> ~~~~~~~~~~ ^
> include/asm-generic/io.h:1024:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
> return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
> ~~~~~~~~~~ ^
> >> kernel/dma/pool.c:105:9: error: call to undeclared function 'pgprot_dmacoherent'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> pgprot_dmacoherent(PAGE_KERNEL),
> ^
> >> kernel/dma/pool.c:105:9: error: passing 'int' to parameter of incompatible type 'pgprot_t'
> pgprot_dmacoherent(PAGE_KERNEL),
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dma-map-ops.h:235:76: note: passing argument to parameter 'prot' here
> void *dma_common_contiguous_remap(struct page *page, size_t size, pgprot_t prot,
> ^
> 7 warnings and 2 errors generated.
>
>
> vim +/pgprot_dmacoherent +105 kernel/dma/pool.c
>
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 78
> 54adadf9b08571 David Rientjes 2020-04-20 79 static int atomic_pool_expand(struct gen_pool *pool, size_t pool_size,
> 54adadf9b08571 David Rientjes 2020-04-20 80 gfp_t gfp)
> e860c299ac0d73 David Rientjes 2020-04-14 81 {
> 54adadf9b08571 David Rientjes 2020-04-20 82 unsigned int order;
> 892fc9f6835ecf Dan Carpenter 2020-08-26 83 struct page *page = NULL;
> e860c299ac0d73 David Rientjes 2020-04-14 84 void *addr;
> 54adadf9b08571 David Rientjes 2020-04-20 85 int ret = -ENOMEM;
> 54adadf9b08571 David Rientjes 2020-04-20 86
> 54adadf9b08571 David Rientjes 2020-04-20 87 /* Cannot allocate larger than MAX_ORDER-1 */
> 54adadf9b08571 David Rientjes 2020-04-20 88 order = min(get_order(pool_size), MAX_ORDER-1);
> 54adadf9b08571 David Rientjes 2020-04-20 89
> 54adadf9b08571 David Rientjes 2020-04-20 90 do {
> 54adadf9b08571 David Rientjes 2020-04-20 91 pool_size = 1 << (PAGE_SHIFT + order);
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 92 if (cma_in_zone(gfp))
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 93 page = dma_alloc_from_contiguous(NULL, 1 << order,
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 94 order, false);
> d7e673ec2c8e0e Nicolas Saenz Julienne 2020-08-14 95 if (!page)
> c84dc6e68a1d24 David Rientjes 2020-04-14 96 page = alloc_pages(gfp, order);
> 54adadf9b08571 David Rientjes 2020-04-20 97 } while (!page && order-- > 0);
> e860c299ac0d73 David Rientjes 2020-04-14 98 if (!page)
> e860c299ac0d73 David Rientjes 2020-04-14 99 goto out;
> e860c299ac0d73 David Rientjes 2020-04-14 100
> c84dc6e68a1d24 David Rientjes 2020-04-14 101 arch_dma_prep_coherent(page, pool_size);
> e860c299ac0d73 David Rientjes 2020-04-14 102
> 76a19940bd62a8 David Rientjes 2020-04-14 103 #ifdef CONFIG_DMA_DIRECT_REMAP
> c84dc6e68a1d24 David Rientjes 2020-04-14 104 addr = dma_common_contiguous_remap(page, pool_size,
> e860c299ac0d73 David Rientjes 2020-04-14 @105 pgprot_dmacoherent(PAGE_KERNEL),
> e860c299ac0d73 David Rientjes 2020-04-14 106 __builtin_return_address(0));
> e860c299ac0d73 David Rientjes 2020-04-14 107 if (!addr)
> 54adadf9b08571 David Rientjes 2020-04-20 108 goto free_page;
> 76a19940bd62a8 David Rientjes 2020-04-14 109 #else
> 76a19940bd62a8 David Rientjes 2020-04-14 110 addr = page_to_virt(page);
> 76a19940bd62a8 David Rientjes 2020-04-14 111 #endif
> 76a19940bd62a8 David Rientjes 2020-04-14 112 /*
> 76a19940bd62a8 David Rientjes 2020-04-14 113 * Memory in the atomic DMA pools must be unencrypted, the pools do not
> 2f5388a29be82a Christoph Hellwig 2020-08-17 114 * shrink so no re-encryption occurs in dma_direct_free().
> 76a19940bd62a8 David Rientjes 2020-04-14 115 */
> 76a19940bd62a8 David Rientjes 2020-04-14 116 ret = set_memory_decrypted((unsigned long)page_to_virt(page),
> 76a19940bd62a8 David Rientjes 2020-04-14 117 1 << order);
> 76a19940bd62a8 David Rientjes 2020-04-14 118 if (ret)
> 76a19940bd62a8 David Rientjes 2020-04-14 119 goto remove_mapping;
> 54adadf9b08571 David Rientjes 2020-04-20 120 ret = gen_pool_add_virt(pool, (unsigned long)addr, page_to_phys(page),
> 54adadf9b08571 David Rientjes 2020-04-20 121 pool_size, NUMA_NO_NODE);
> e860c299ac0d73 David Rientjes 2020-04-14 122 if (ret)
> 76a19940bd62a8 David Rientjes 2020-04-14 123 goto encrypt_mapping;
> e860c299ac0d73 David Rientjes 2020-04-14 124
> 2edc5bb3c5cc42 David Rientjes 2020-04-14 125 dma_atomic_pool_size_add(gfp, pool_size);
> e860c299ac0d73 David Rientjes 2020-04-14 126 return 0;
> e860c299ac0d73 David Rientjes 2020-04-14 127
> 76a19940bd62a8 David Rientjes 2020-04-14 128 encrypt_mapping:
> 76a19940bd62a8 David Rientjes 2020-04-14 129 ret = set_memory_encrypted((unsigned long)page_to_virt(page),
> 76a19940bd62a8 David Rientjes 2020-04-14 130 1 << order);
> 76a19940bd62a8 David Rientjes 2020-04-14 131 if (WARN_ON_ONCE(ret)) {
> 76a19940bd62a8 David Rientjes 2020-04-14 132 /* Decrypt succeeded but encrypt failed, purposely leak */
> 76a19940bd62a8 David Rientjes 2020-04-14 133 goto out;
> 76a19940bd62a8 David Rientjes 2020-04-14 134 }
> e860c299ac0d73 David Rientjes 2020-04-14 135 remove_mapping:
> 76a19940bd62a8 David Rientjes 2020-04-14 136 #ifdef CONFIG_DMA_DIRECT_REMAP
> c84dc6e68a1d24 David Rientjes 2020-04-14 137 dma_common_free_remap(addr, pool_size);
> 76a19940bd62a8 David Rientjes 2020-04-14 138 #endif
> 76a19940bd62a8 David Rientjes 2020-04-14 139 free_page: __maybe_unused
> c84dc6e68a1d24 David Rientjes 2020-04-14 140 __free_pages(page, order);
> e860c299ac0d73 David Rientjes 2020-04-14 141 out:
> 54adadf9b08571 David Rientjes 2020-04-20 142 return ret;
> 54adadf9b08571 David Rientjes 2020-04-20 143 }
> 54adadf9b08571 David Rientjes 2020-04-20 144
>
> :::::: The code at line 105 was first introduced by commit
> :::::: e860c299ac0d738b44ff91693f11e63080a29698 dma-remap: separate DMA atomic pools from direct remap code
>
> :::::: TO: David Rientjes <rientjes@google.com>
> :::::: CC: Christoph Hellwig <hch@lst.de>
>
>
next prev parent reply other threads:[~2022-09-07 16:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-06 21:21 kernel/dma/pool.c:105:9: error: call to undeclared function 'pgprot_dmacoherent'; ISO C99 and later do not support implicit function declarations kernel test robot
2022-09-07 15:55 ` Heiko Stübner [this message]
2022-09-07 15:55 ` Heiko Stübner
-- strict thread matches above, loose matches on Subject: below --
2022-08-13 12:36 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3064082.22IY78Rhhi@diego \
--to=heiko@sntech.de \
--cc=guoren@kernel.org \
--cc=hch@lst.de \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=llvm@lists.linux.dev \
--cc=palmer@rivosinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.