From: kernel test robot <lkp@intel.com>
To: Robin Murphy <robin.murphy@arm.com>
Cc: iommu@lists.linux-foundation.org, Joerg Roedel <jroedel@suse.de>,
kbuild-all@lists.01.org
Subject: [iommu:x86/vt-d 41/59] drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
Date: Fri, 20 Aug 2021 17:02:32 +0800 [thread overview]
Message-ID: <202108201729.pd6kChqu-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7076 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git x86/vt-d
head: 423d39d8518c1bba12e0889a92beeddbb1502392
commit: a8e5f04458c4e496eada2b029ce96713bb6c388d [41/59] iommu/io-pgtable: Remove non-strict quirk
config: nds32-buildonly-randconfig-r001-20210820 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 11.2.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git/commit/?id=a8e5f04458c4e496eada2b029ce96713bb6c388d
git remote add iommu https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
git fetch --no-tags iommu x86/vt-d
git checkout a8e5f04458c4e496eada2b029ce96713bb6c388d
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=nds32 SHELL=/bin/bash drivers/iommu/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from include/linux/init.h:5,
from arch/nds32/include/asm/nds32.h:11,
from arch/nds32/include/asm/irqflags.h:4,
from include/linux/irqflags.h:16,
from include/asm-generic/cmpxchg.h:15,
from ./arch/nds32/include/generated/asm/cmpxchg.h:1,
from include/asm-generic/atomic.h:12,
from ./arch/nds32/include/generated/asm/atomic.h:1,
from include/linux/atomic.h:7,
from drivers/iommu/io-pgtable-arm-v7s.c:24:
drivers/iommu/io-pgtable-arm-v7s.c: In function '__arm_v7s_unmap':
>> drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
703 | } else if (!gather->queued) {
| ^~
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
drivers/iommu/io-pgtable-arm-v7s.c:703:32: note: in expansion of macro 'if'
703 | } else if (!gather->queued) {
| ^~
>> drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
703 | } else if (!gather->queued) {
| ^~
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
drivers/iommu/io-pgtable-arm-v7s.c:703:32: note: in expansion of macro 'if'
703 | } else if (!gather->queued) {
| ^~
>> drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
703 | } else if (!gather->queued) {
| ^~
include/linux/compiler.h:69:10: note: in definition of macro '__trace_if_value'
69 | (cond) ? \
| ^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
| ^~~~~~~~~~~~~~
drivers/iommu/io-pgtable-arm-v7s.c:703:32: note: in expansion of macro 'if'
703 | } else if (!gather->queued) {
| ^~
vim +703 drivers/iommu/io-pgtable-arm-v7s.c
650
651 static size_t __arm_v7s_unmap(struct arm_v7s_io_pgtable *data,
652 struct iommu_iotlb_gather *gather,
653 unsigned long iova, size_t size, int lvl,
654 arm_v7s_iopte *ptep)
655 {
656 arm_v7s_iopte pte[ARM_V7S_CONT_PAGES];
657 struct io_pgtable *iop = &data->iop;
658 int idx, i = 0, num_entries = size >> ARM_V7S_LVL_SHIFT(lvl);
659
660 /* Something went horribly wrong and we ran out of page table */
661 if (WARN_ON(lvl > 2))
662 return 0;
663
664 idx = ARM_V7S_LVL_IDX(iova, lvl, &iop->cfg);
665 ptep += idx;
666 do {
667 pte[i] = READ_ONCE(ptep[i]);
668 if (WARN_ON(!ARM_V7S_PTE_IS_VALID(pte[i])))
669 return 0;
670 } while (++i < num_entries);
671
672 /*
673 * If we've hit a contiguous 'large page' entry at this level, it
674 * needs splitting first, unless we're unmapping the whole lot.
675 *
676 * For splitting, we can't rewrite 16 PTEs atomically, and since we
677 * can't necessarily assume TEX remap we don't have a software bit to
678 * mark live entries being split. In practice (i.e. DMA API code), we
679 * will never be splitting large pages anyway, so just wrap this edge
680 * case in a lock for the sake of correctness and be done with it.
681 */
682 if (num_entries <= 1 && arm_v7s_pte_is_cont(pte[0], lvl)) {
683 unsigned long flags;
684
685 spin_lock_irqsave(&data->split_lock, flags);
686 pte[0] = arm_v7s_split_cont(data, iova, idx, lvl, ptep);
687 spin_unlock_irqrestore(&data->split_lock, flags);
688 }
689
690 /* If the size matches this level, we're in the right place */
691 if (num_entries) {
692 size_t blk_size = ARM_V7S_BLOCK_SIZE(lvl);
693
694 __arm_v7s_set_pte(ptep, 0, num_entries, &iop->cfg);
695
696 for (i = 0; i < num_entries; i++) {
697 if (ARM_V7S_PTE_IS_TABLE(pte[i], lvl)) {
698 /* Also flush any partial walks */
699 io_pgtable_tlb_flush_walk(iop, iova, blk_size,
700 ARM_V7S_BLOCK_SIZE(lvl + 1));
701 ptep = iopte_deref(pte[i], lvl, data);
702 __arm_v7s_free_table(ptep, lvl + 1, data);
> 703 } else if (!gather->queued) {
704 io_pgtable_tlb_add_page(iop, gather, iova, blk_size);
705 }
706 iova += blk_size;
707 }
708 return size;
709 } else if (lvl == 1 && !ARM_V7S_PTE_IS_TABLE(pte[0], lvl)) {
710 /*
711 * Insert a table at the next level to map the old region,
712 * minus the part we want to unmap
713 */
714 return arm_v7s_split_blk_unmap(data, gather, iova, size, pte[0],
715 ptep);
716 }
717
718 /* Keep on walkin' */
719 ptep = iopte_deref(pte[0], lvl, data);
720 return __arm_v7s_unmap(data, gather, iova, size, lvl + 1, ptep);
721 }
722
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 30209 bytes --]
[-- Attachment #3: Type: text/plain, Size: 156 bytes --]
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [iommu:x86/vt-d 41/59] drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
Date: Fri, 20 Aug 2021 17:02:32 +0800 [thread overview]
Message-ID: <202108201729.pd6kChqu-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 7218 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git x86/vt-d
head: 423d39d8518c1bba12e0889a92beeddbb1502392
commit: a8e5f04458c4e496eada2b029ce96713bb6c388d [41/59] iommu/io-pgtable: Remove non-strict quirk
config: nds32-buildonly-randconfig-r001-20210820 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 11.2.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git/commit/?id=a8e5f04458c4e496eada2b029ce96713bb6c388d
git remote add iommu https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
git fetch --no-tags iommu x86/vt-d
git checkout a8e5f04458c4e496eada2b029ce96713bb6c388d
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=nds32 SHELL=/bin/bash drivers/iommu/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from include/linux/init.h:5,
from arch/nds32/include/asm/nds32.h:11,
from arch/nds32/include/asm/irqflags.h:4,
from include/linux/irqflags.h:16,
from include/asm-generic/cmpxchg.h:15,
from ./arch/nds32/include/generated/asm/cmpxchg.h:1,
from include/asm-generic/atomic.h:12,
from ./arch/nds32/include/generated/asm/atomic.h:1,
from include/linux/atomic.h:7,
from drivers/iommu/io-pgtable-arm-v7s.c:24:
drivers/iommu/io-pgtable-arm-v7s.c: In function '__arm_v7s_unmap':
>> drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
703 | } else if (!gather->queued) {
| ^~
include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
drivers/iommu/io-pgtable-arm-v7s.c:703:32: note: in expansion of macro 'if'
703 | } else if (!gather->queued) {
| ^~
>> drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
703 | } else if (!gather->queued) {
| ^~
include/linux/compiler.h:58:61: note: in definition of macro '__trace_if_var'
58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
| ^~~~
drivers/iommu/io-pgtable-arm-v7s.c:703:32: note: in expansion of macro 'if'
703 | } else if (!gather->queued) {
| ^~
>> drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued'
703 | } else if (!gather->queued) {
| ^~
include/linux/compiler.h:69:10: note: in definition of macro '__trace_if_value'
69 | (cond) ? \
| ^~~~
include/linux/compiler.h:56:28: note: in expansion of macro '__trace_if_var'
56 | #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
| ^~~~~~~~~~~~~~
drivers/iommu/io-pgtable-arm-v7s.c:703:32: note: in expansion of macro 'if'
703 | } else if (!gather->queued) {
| ^~
vim +703 drivers/iommu/io-pgtable-arm-v7s.c
650
651 static size_t __arm_v7s_unmap(struct arm_v7s_io_pgtable *data,
652 struct iommu_iotlb_gather *gather,
653 unsigned long iova, size_t size, int lvl,
654 arm_v7s_iopte *ptep)
655 {
656 arm_v7s_iopte pte[ARM_V7S_CONT_PAGES];
657 struct io_pgtable *iop = &data->iop;
658 int idx, i = 0, num_entries = size >> ARM_V7S_LVL_SHIFT(lvl);
659
660 /* Something went horribly wrong and we ran out of page table */
661 if (WARN_ON(lvl > 2))
662 return 0;
663
664 idx = ARM_V7S_LVL_IDX(iova, lvl, &iop->cfg);
665 ptep += idx;
666 do {
667 pte[i] = READ_ONCE(ptep[i]);
668 if (WARN_ON(!ARM_V7S_PTE_IS_VALID(pte[i])))
669 return 0;
670 } while (++i < num_entries);
671
672 /*
673 * If we've hit a contiguous 'large page' entry@this level, it
674 * needs splitting first, unless we're unmapping the whole lot.
675 *
676 * For splitting, we can't rewrite 16 PTEs atomically, and since we
677 * can't necessarily assume TEX remap we don't have a software bit to
678 * mark live entries being split. In practice (i.e. DMA API code), we
679 * will never be splitting large pages anyway, so just wrap this edge
680 * case in a lock for the sake of correctness and be done with it.
681 */
682 if (num_entries <= 1 && arm_v7s_pte_is_cont(pte[0], lvl)) {
683 unsigned long flags;
684
685 spin_lock_irqsave(&data->split_lock, flags);
686 pte[0] = arm_v7s_split_cont(data, iova, idx, lvl, ptep);
687 spin_unlock_irqrestore(&data->split_lock, flags);
688 }
689
690 /* If the size matches this level, we're in the right place */
691 if (num_entries) {
692 size_t blk_size = ARM_V7S_BLOCK_SIZE(lvl);
693
694 __arm_v7s_set_pte(ptep, 0, num_entries, &iop->cfg);
695
696 for (i = 0; i < num_entries; i++) {
697 if (ARM_V7S_PTE_IS_TABLE(pte[i], lvl)) {
698 /* Also flush any partial walks */
699 io_pgtable_tlb_flush_walk(iop, iova, blk_size,
700 ARM_V7S_BLOCK_SIZE(lvl + 1));
701 ptep = iopte_deref(pte[i], lvl, data);
702 __arm_v7s_free_table(ptep, lvl + 1, data);
> 703 } else if (!gather->queued) {
704 io_pgtable_tlb_add_page(iop, gather, iova, blk_size);
705 }
706 iova += blk_size;
707 }
708 return size;
709 } else if (lvl == 1 && !ARM_V7S_PTE_IS_TABLE(pte[0], lvl)) {
710 /*
711 * Insert a table at the next level to map the old region,
712 * minus the part we want to unmap
713 */
714 return arm_v7s_split_blk_unmap(data, gather, iova, size, pte[0],
715 ptep);
716 }
717
718 /* Keep on walkin' */
719 ptep = iopte_deref(pte[0], lvl, data);
720 return __arm_v7s_unmap(data, gather, iova, size, lvl + 1, ptep);
721 }
722
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30209 bytes --]
next reply other threads:[~2021-08-20 9:03 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-20 9:02 kernel test robot [this message]
2021-08-20 9:02 ` [iommu:x86/vt-d 41/59] drivers/iommu/io-pgtable-arm-v7s.c:703:43: error: 'struct iommu_iotlb_gather' has no member named 'queued' 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=202108201729.pd6kChqu-lkp@intel.com \
--to=lkp@intel.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jroedel@suse.de \
--cc=kbuild-all@lists.01.org \
--cc=robin.murphy@arm.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.