From: kbuild test robot <lkp@intel.com>
To: Davidlohr Bueso <dave@stgolabs.net>
Cc: kbuild-all@01.org, akpm@linux-foundation.org, walken@google.com,
peterz@infradead.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, dri-devel@lists.freedesktop.org,
linux-rdma@vger.kernel.org, dave@stgolabs.net,
"Christian König" <christian.koenig@amd.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"David Airlie" <airlied@linux.ie>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Doug Ledford" <dledford@redhat.com>,
"Joerg Roedel" <joro@8bytes.org>,
"Jérôme Glisse" <jglisse@redhat.com>,
"Davidlohr Bueso" <dbueso@suse.de>
Subject: Re: [PATCH 09/11] lib/interval-tree: convert interval_tree to half closed intervals
Date: Fri, 4 Oct 2019 06:50:52 +0800 [thread overview]
Message-ID: <201910040653.Gpn4Ra6Z%lkp@intel.com> (raw)
In-Reply-To: <20191003201858.11666-10-dave@stgolabs.net>
[-- Attachment #1: Type: text/plain, Size: 19110 bytes --]
Hi Davidlohr,
I love your patch! Yet something to improve:
[auto build test ERROR on next-20191003]
url: https://github.com/0day-ci/linux/commits/Davidlohr-Bueso/lib-interval-tree-move-to-half-closed-intervals/20191004-042411
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/linux/swab.h:5:0,
from include/uapi/linux/byteorder/big_endian.h:13,
from include/linux/byteorder/big_endian.h:5,
from arch/arm64/include/uapi/asm/byteorder.h:21,
from include/asm-generic/bitops/le.h:6,
from arch/arm64/include/asm/bitops.h:29,
from include/linux/bitops.h:26,
from include/linux/kernel.h:12,
from include/linux/clk.h:13,
from include/linux/amba/bus.h:14,
from drivers//iommu/virtio-iommu.c:10:
drivers//iommu/virtio-iommu.c: In function 'viommu_replay_mappings':
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:130:32: note: in definition of macro '__swab64'
(__builtin_constant_p((__u64)(x)) ? \
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:24:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:25:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:26:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:27:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:28:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
^
--
In file included from include/linux/swab.h:5:0,
from include/uapi/linux/byteorder/big_endian.h:13,
from include/linux/byteorder/big_endian.h:5,
from arch/arm64/include/uapi/asm/byteorder.h:21,
from include/asm-generic/bitops/le.h:6,
from arch/arm64/include/asm/bitops.h:29,
from include/linux/bitops.h:26,
from include/linux/kernel.h:12,
from include/linux/clk.h:13,
from include/linux/amba/bus.h:14,
from drivers/iommu/virtio-iommu.c:10:
drivers/iommu/virtio-iommu.c: In function 'viommu_replay_mappings':
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:130:32: note: in definition of macro '__swab64'
(__builtin_constant_p((__u64)(x)) ? \
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:24:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:25:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:26:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:27:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:28:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:29:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:30:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:31:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56)))
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:132:12: note: in definition of macro '__swab64'
__fswab64(x))
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
vim +403 drivers//iommu/virtio-iommu.c
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 379
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 380 /*
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 381 * viommu_replay_mappings - re-send MAP requests
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 382 *
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 383 * When reattaching a domain that was previously detached from all endpoints,
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 384 * mappings were deleted from the device. Re-create the mappings available in
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 385 * the internal tree.
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 386 */
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 387 static int viommu_replay_mappings(struct viommu_domain *vdomain)
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 388 {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 389 int ret = 0;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 390 unsigned long flags;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 391 struct viommu_mapping *mapping;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 392 struct interval_tree_node *node;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 393 struct virtio_iommu_req_map map;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 394
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 395 spin_lock_irqsave(&vdomain->mappings_lock, flags);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 396 node = interval_tree_iter_first(&vdomain->mappings, 0, -1UL);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 397 while (node) {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 398 mapping = container_of(node, struct viommu_mapping, iova);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 399 map = (struct virtio_iommu_req_map) {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 400 .head.type = VIRTIO_IOMMU_T_MAP,
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 401 .domain = cpu_to_le32(vdomain->id),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 402 .virt_start = cpu_to_le64(mapping->iova.start),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 @403 .virt_end = cpu_to_le64(mapping->iova.last),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 404 .phys_start = cpu_to_le64(mapping->paddr),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 405 .flags = cpu_to_le32(mapping->flags),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 406 };
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 407
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 408 ret = viommu_send_req_sync(vdomain->viommu, &map, sizeof(map));
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 409 if (ret)
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 410 break;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 411
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 412 node = interval_tree_iter_next(node, 0, -1UL);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 413 }
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 414 spin_unlock_irqrestore(&vdomain->mappings_lock, flags);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 415
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 416 return ret;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 417 }
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 418
:::::: The code at line 403 was first introduced by commit
:::::: edcd69ab9a323b7ac7a86e1c44b6c9c46598391f iommu: Add virtio-iommu driver
:::::: TO: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
:::::: CC: Michael S. Tsirkin <mst@redhat.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 67355 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
Cc: "Jérôme Glisse" <jglisse@redhat.com>,
dave@stgolabs.net, "Davidlohr Bueso" <dbueso@suse.de>,
peterz@infradead.org, "David Airlie" <airlied@linux.ie>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-mm@kvack.org, "Doug Ledford" <dledford@redhat.com>,
kbuild-all@01.org, "Alex Deucher" <alexander.deucher@amd.com>,
akpm@linux-foundation.org, walken@google.com,
"Christian König" <christian.koenig@amd.com>,
linux-rdma@vger.kernel.org
Subject: Re: [PATCH 09/11] lib/interval-tree: convert interval_tree to half closed intervals
Date: Fri, 4 Oct 2019 06:50:52 +0800 [thread overview]
Message-ID: <201910040653.Gpn4Ra6Z%lkp@intel.com> (raw)
In-Reply-To: <20191003201858.11666-10-dave@stgolabs.net>
[-- Attachment #1: Type: text/plain, Size: 19110 bytes --]
Hi Davidlohr,
I love your patch! Yet something to improve:
[auto build test ERROR on next-20191003]
url: https://github.com/0day-ci/linux/commits/Davidlohr-Bueso/lib-interval-tree-move-to-half-closed-intervals/20191004-042411
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/linux/swab.h:5:0,
from include/uapi/linux/byteorder/big_endian.h:13,
from include/linux/byteorder/big_endian.h:5,
from arch/arm64/include/uapi/asm/byteorder.h:21,
from include/asm-generic/bitops/le.h:6,
from arch/arm64/include/asm/bitops.h:29,
from include/linux/bitops.h:26,
from include/linux/kernel.h:12,
from include/linux/clk.h:13,
from include/linux/amba/bus.h:14,
from drivers//iommu/virtio-iommu.c:10:
drivers//iommu/virtio-iommu.c: In function 'viommu_replay_mappings':
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:130:32: note: in definition of macro '__swab64'
(__builtin_constant_p((__u64)(x)) ? \
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:24:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:25:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:26:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:27:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:28:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
^
--
In file included from include/linux/swab.h:5:0,
from include/uapi/linux/byteorder/big_endian.h:13,
from include/linux/byteorder/big_endian.h:5,
from arch/arm64/include/uapi/asm/byteorder.h:21,
from include/asm-generic/bitops/le.h:6,
from arch/arm64/include/asm/bitops.h:29,
from include/linux/bitops.h:26,
from include/linux/kernel.h:12,
from include/linux/clk.h:13,
from include/linux/amba/bus.h:14,
from drivers/iommu/virtio-iommu.c:10:
drivers/iommu/virtio-iommu.c: In function 'viommu_replay_mappings':
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:130:32: note: in definition of macro '__swab64'
(__builtin_constant_p((__u64)(x)) ? \
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:24:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:25:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:26:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:27:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:28:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:29:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:30:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:31:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56)))
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:132:12: note: in definition of macro '__swab64'
__fswab64(x))
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
vim +403 drivers//iommu/virtio-iommu.c
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 379
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 380 /*
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 381 * viommu_replay_mappings - re-send MAP requests
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 382 *
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 383 * When reattaching a domain that was previously detached from all endpoints,
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 384 * mappings were deleted from the device. Re-create the mappings available in
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 385 * the internal tree.
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 386 */
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 387 static int viommu_replay_mappings(struct viommu_domain *vdomain)
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 388 {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 389 int ret = 0;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 390 unsigned long flags;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 391 struct viommu_mapping *mapping;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 392 struct interval_tree_node *node;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 393 struct virtio_iommu_req_map map;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 394
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 395 spin_lock_irqsave(&vdomain->mappings_lock, flags);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 396 node = interval_tree_iter_first(&vdomain->mappings, 0, -1UL);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 397 while (node) {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 398 mapping = container_of(node, struct viommu_mapping, iova);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 399 map = (struct virtio_iommu_req_map) {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 400 .head.type = VIRTIO_IOMMU_T_MAP,
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 401 .domain = cpu_to_le32(vdomain->id),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 402 .virt_start = cpu_to_le64(mapping->iova.start),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 @403 .virt_end = cpu_to_le64(mapping->iova.last),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 404 .phys_start = cpu_to_le64(mapping->paddr),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 405 .flags = cpu_to_le32(mapping->flags),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 406 };
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 407
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 408 ret = viommu_send_req_sync(vdomain->viommu, &map, sizeof(map));
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 409 if (ret)
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 410 break;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 411
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 412 node = interval_tree_iter_next(node, 0, -1UL);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 413 }
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 414 spin_unlock_irqrestore(&vdomain->mappings_lock, flags);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 415
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 416 return ret;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 417 }
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 418
:::::: The code at line 403 was first introduced by commit
:::::: edcd69ab9a323b7ac7a86e1c44b6c9c46598391f iommu: Add virtio-iommu driver
:::::: TO: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
:::::: CC: Michael S. Tsirkin <mst@redhat.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 67355 bytes --]
[-- Attachment #3: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 09/11] lib/interval-tree: convert interval_tree to half closed intervals
Date: Fri, 04 Oct 2019 06:50:52 +0800 [thread overview]
Message-ID: <201910040653.Gpn4Ra6Z%lkp@intel.com> (raw)
In-Reply-To: <20191003201858.11666-10-dave@stgolabs.net>
[-- Attachment #1: Type: text/plain, Size: 19430 bytes --]
Hi Davidlohr,
I love your patch! Yet something to improve:
[auto build test ERROR on next-20191003]
url: https://github.com/0day-ci/linux/commits/Davidlohr-Bueso/lib-interval-tree-move-to-half-closed-intervals/20191004-042411
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/linux/swab.h:5:0,
from include/uapi/linux/byteorder/big_endian.h:13,
from include/linux/byteorder/big_endian.h:5,
from arch/arm64/include/uapi/asm/byteorder.h:21,
from include/asm-generic/bitops/le.h:6,
from arch/arm64/include/asm/bitops.h:29,
from include/linux/bitops.h:26,
from include/linux/kernel.h:12,
from include/linux/clk.h:13,
from include/linux/amba/bus.h:14,
from drivers//iommu/virtio-iommu.c:10:
drivers//iommu/virtio-iommu.c: In function 'viommu_replay_mappings':
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:130:32: note: in definition of macro '__swab64'
(__builtin_constant_p((__u64)(x)) ? \
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:24:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:25:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:26:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:27:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
>> drivers//iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:28:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
^
--
In file included from include/linux/swab.h:5:0,
from include/uapi/linux/byteorder/big_endian.h:13,
from include/linux/byteorder/big_endian.h:5,
from arch/arm64/include/uapi/asm/byteorder.h:21,
from include/asm-generic/bitops/le.h:6,
from arch/arm64/include/asm/bitops.h:29,
from include/linux/bitops.h:26,
from include/linux/kernel.h:12,
from include/linux/clk.h:13,
from include/linux/amba/bus.h:14,
from drivers/iommu/virtio-iommu.c:10:
drivers/iommu/virtio-iommu.c: In function 'viommu_replay_mappings':
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:130:32: note: in definition of macro '__swab64'
(__builtin_constant_p((__u64)(x)) ? \
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:24:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:25:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:26:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:27:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:28:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:29:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:30:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) | \
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:31:12: note: in definition of macro '___constant_swab64'
(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56)))
^
>> include/uapi/linux/byteorder/big_endian.h:31:43: note: in expansion of macro '__swab64'
#define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
^~~~~~~~
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:41: error: 'struct interval_tree_node' has no member named 'last'
.virt_end = cpu_to_le64(mapping->iova.last),
^
include/uapi/linux/swab.h:132:12: note: in definition of macro '__swab64'
__fswab64(x))
^
>> include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64'
#define cpu_to_le64 __cpu_to_le64
^~~~~~~~~~~~~
drivers/iommu/virtio-iommu.c:403:16: note: in expansion of macro 'cpu_to_le64'
.virt_end = cpu_to_le64(mapping->iova.last),
^~~~~~~~~~~
vim +403 drivers//iommu/virtio-iommu.c
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 379
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 380 /*
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 381 * viommu_replay_mappings - re-send MAP requests
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 382 *
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 383 * When reattaching a domain that was previously detached from all endpoints,
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 384 * mappings were deleted from the device. Re-create the mappings available in
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 385 * the internal tree.
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 386 */
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 387 static int viommu_replay_mappings(struct viommu_domain *vdomain)
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 388 {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 389 int ret = 0;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 390 unsigned long flags;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 391 struct viommu_mapping *mapping;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 392 struct interval_tree_node *node;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 393 struct virtio_iommu_req_map map;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 394
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 395 spin_lock_irqsave(&vdomain->mappings_lock, flags);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 396 node = interval_tree_iter_first(&vdomain->mappings, 0, -1UL);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 397 while (node) {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 398 mapping = container_of(node, struct viommu_mapping, iova);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 399 map = (struct virtio_iommu_req_map) {
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 400 .head.type = VIRTIO_IOMMU_T_MAP,
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 401 .domain = cpu_to_le32(vdomain->id),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 402 .virt_start = cpu_to_le64(mapping->iova.start),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 @403 .virt_end = cpu_to_le64(mapping->iova.last),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 404 .phys_start = cpu_to_le64(mapping->paddr),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 405 .flags = cpu_to_le32(mapping->flags),
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 406 };
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 407
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 408 ret = viommu_send_req_sync(vdomain->viommu, &map, sizeof(map));
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 409 if (ret)
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 410 break;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 411
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 412 node = interval_tree_iter_next(node, 0, -1UL);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 413 }
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 414 spin_unlock_irqrestore(&vdomain->mappings_lock, flags);
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 415
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 416 return ret;
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 417 }
edcd69ab9a323b Jean-Philippe Brucker 2019-01-15 418
:::::: The code at line 403 was first introduced by commit
:::::: edcd69ab9a323b7ac7a86e1c44b6c9c46598391f iommu: Add virtio-iommu driver
:::::: TO: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
:::::: CC: Michael S. Tsirkin <mst@redhat.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 67355 bytes --]
next prev parent reply other threads:[~2019-10-03 22:51 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-03 20:18 [PATCH -next 00/11] lib/interval-tree: move to half closed intervals Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 01/11] mm: introduce vma_interval_tree_foreach_stab() Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 02/11] lib/interval-tree: add an equivalent tree with [a,b) intervals Davidlohr Bueso
2019-10-04 11:02 ` Michel Lespinasse
2019-10-03 20:18 ` [PATCH 03/11] drm/amdgpu: convert amdgpu_vm_it to half closed intervals Davidlohr Bueso
2019-10-04 6:54 ` Koenig, Christian
2019-10-04 6:54 ` Koenig, Christian
2019-10-04 11:36 ` Michel Lespinasse
2019-10-04 12:39 ` Christian König
2019-10-03 20:18 ` [PATCH 04/11] drm: convert drm_mm_interval_tree " Davidlohr Bueso
2019-10-03 20:18 ` Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 05/11] IB/hfi1: convert __mmu_int_rb " Davidlohr Bueso
2019-10-04 11:50 ` Michel Lespinasse
2019-10-04 19:41 ` Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 06/11] IB,usnic: convert usnic_uiom_interval_tree " Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 07/11] vhost: convert vhost_umem_interval_tree " Davidlohr Bueso
2019-10-03 20:18 ` Davidlohr Bueso
2019-10-04 12:10 ` Michel Lespinasse
2019-10-04 19:44 ` Davidlohr Bueso
2019-10-04 19:44 ` Davidlohr Bueso
2019-10-10 5:49 ` Jason Wang
2019-10-10 5:49 ` Jason Wang
2019-10-10 5:49 ` Jason Wang
2019-10-03 20:18 ` Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 08/11] mm: convert vma_interval_tree " Davidlohr Bueso
2019-10-03 20:41 ` Matthew Wilcox
2019-10-04 12:30 ` Michel Lespinasse
2019-10-03 20:18 ` [PATCH 09/11] lib/interval-tree: convert interval_tree " Davidlohr Bueso
2019-10-03 22:50 ` kbuild test robot [this message]
2019-10-03 22:50 ` kbuild test robot
2019-10-03 22:50 ` kbuild test robot
2019-10-04 6:57 ` Koenig, Christian
2019-10-04 6:57 ` Koenig, Christian
2019-10-04 7:20 ` Koenig, Christian
2019-10-04 7:20 ` Koenig, Christian
2019-10-08 16:59 ` Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 10/11] lib: drop interval_tree_generic.h Davidlohr Bueso
2019-10-03 20:18 ` [PATCH 11/11] x86/mm, pat: convert pat tree to generic interval tree Davidlohr Bueso
2019-10-07 15:33 ` Ingo Molnar
2019-10-07 15:33 ` Ingo Molnar
2019-10-21 23:24 ` Davidlohr Bueso
2019-10-03 20:32 ` [PATCH -next 00/11] lib/interval-tree: move to half closed intervals Matthew Wilcox
2019-10-03 21:10 ` Davidlohr Bueso
2019-10-04 12:43 ` Michel Lespinasse
2019-10-04 0:26 ` Jason Gunthorpe
2019-10-04 2:48 ` Davidlohr Bueso
2019-10-04 13:15 ` Michel Lespinasse
2019-10-04 13:15 ` Michel Lespinasse
2019-10-04 16:03 ` Matthew Wilcox
2019-10-04 19:35 ` Davidlohr Bueso
2019-10-04 17:45 ` Jason Gunthorpe
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=201910040653.Gpn4Ra6Z%lkp@intel.com \
--to=lkp@intel.com \
--cc=airlied@linux.ie \
--cc=akpm@linux-foundation.org \
--cc=alexander.deucher@amd.com \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dave@stgolabs.net \
--cc=dbueso@suse.de \
--cc=dledford@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jglisse@redhat.com \
--cc=joro@8bytes.org \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-rdma@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=walken@google.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.