* Memory reclaim and XFS objects
From: Alexey Lyashkov @ 2019-06-20 13:06 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: linux-xfs
Hi Darrick,
own customers hit a system hung after several OOM conditionals.
Looking into crash dump, i found a large number threads (334) stick in xfs_reclaim_inodes_ag in waiting a mutex.
example of it.
PID: 2 TASK: ffff88de5b7c1160 CPU: 6 COMMAND: "kthreadd"
#0 [ffff88de5b7cf488] __schedule at ffffffff81b2d932
#1 [ffff88de5b7cf518] schedule_preempt_disabled at ffffffff81b2ed79
#2 [ffff88de5b7cf528] __mutex_lock_slowpath at ffffffff81b2cc77
#3 [ffff88de5b7cf580] mutex_lock at ffffffff81b2c05f
#4 [ffff88de5b7cf598] xfs_reclaim_inodes_ag at ffffffffc0366f1c [xfs]
#5 [ffff88de5b7cf730] xfs_reclaim_inodes_nr at ffffffffc03680c3 [xfs]
#6 [ffff88de5b7cf750] xfs_fs_free_cached_objects at ffffffffc037a169 [xfs]
#7 [ffff88de5b7cf760] super_cache_scan at ffffffff81640e4e
#8 [ffff88de5b7cf7a0] shrink_slab at ffffffff815bd3f3
#9 [ffff88de5b7cf868] shrink_zone at ffffffff815c0cb0
#10 [ffff88de5b7cf8e0] do_try_to_free_pages at ffffffff815c1230
#11 [ffff88de5b7cf988] try_to_free_pages at ffffffff815c1775
#12 [ffff88de5b7cfa18] __alloc_pages_slowpath at ffffffff81b250fd
#13 [ffff88de5b7cfb08] __alloc_pages_nodemask at ffffffff815b4d35
#14 [ffff88de5b7cfbc0] new_slab at ffffffff81611c46
#15 [ffff88de5b7cfc00] ___slab_alloc at ffffffff8161210c
#16 [ffff88de5b7cfcd0] __slab_alloc at ffffffff81b26903
#17 [ffff88de5b7cfd10] kmem_cache_alloc_node at ffffffff81612ac9
#18 [ffff88de5b7cfd60] copy_process at ffffffff81491be9
#19 [ffff88de5b7cfde8] do_fork at ffffffff81493751
#20 [ffff88de5b7cfe60] kernel_thread at ffffffff81493a06
#21 [ffff88de5b7cfe70] create_kthread at ffffffff814bf664
#22 [ffff88de5b7cfe88] kthreadd at ffffffff814c0315
# grep -c xfs_reclaim_inodes_nr bt.log
334
Looking in code, it looks result of race between different threads who want to do reclaim in same time,
but each thread don’t able to flush own nr objects limit.
I think xfs_reclaim_inodes_nr don’t need to have SYNC_WAIT as shrink_slab have own loop to flush additional objects in case first loop ins’t flush all.
What you think about this change?
Thanks for response,
Alex
^ permalink raw reply
* [RFC v2 07/14] arm64/mm: Introduce NUM_ASIDS
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
At the moment ASID_FIRST_VERSION is used to know the number of ASIDs
supported. As we are going to move the ASID allocator in a separate, it
would be better to use a different name for external users.
This patch adds NUM_ASIDS and implements ASID_FIRST_VERSION using it.
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
arch/arm64/mm/context.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index d128f02644b0..beba8e5b4100 100644
--- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c
@@ -48,7 +48,9 @@ static DEFINE_PER_CPU(atomic64_t, active_asids);
static DEFINE_PER_CPU(u64, reserved_asids);
#define ASID_MASK(info) (~GENMASK((info)->bits - 1, 0))
-#define ASID_FIRST_VERSION(info) (1UL << ((info)->bits))
+#define NUM_ASIDS(info) (1UL << ((info)->bits))
+
+#define ASID_FIRST_VERSION(info) NUM_ASIDS(info)
#ifdef CONFIG_UNMAP_KERNEL_AT_EL0
#define ASID_PER_CONTEXT 2
@@ -56,7 +58,7 @@ static DEFINE_PER_CPU(u64, reserved_asids);
#define ASID_PER_CONTEXT 1
#endif
-#define NUM_CTXT_ASIDS(info) (ASID_FIRST_VERSION(info) >> (info)->ctxt_shift)
+#define NUM_CTXT_ASIDS(info) (NUM_ASIDS(info) >> (info)->ctxt_shift)
#define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift)
#define idx2asid(info, idx) (((idx) << (info)->ctxt_shift) & ~ASID_MASK(info))
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* Re: [dpdk-dev] [PATCH 2/2] examples/ipsec-secgw: fix not working inline ipsec modes
From: Akhil Goyal @ 2019-06-20 13:08 UTC (permalink / raw)
To: Mariusz Drost, radu.nicolau@intel.com, wenzhuo.lu@intel.com,
konstantin.ananyev@intel.com
Cc: dev@dpdk.org
In-Reply-To: <20190604100644.13724-3-mariuszx.drost@intel.com>
Hi Marius,
> Application ipsec-secgw is not working for IPv4 transport mode and for
> IPv6 both transport and tunnel mode.
>
> IPv6 tunnel mode is not working due to wrongly assigned fields of
> security association patterns, as it was IPv4, during creation of
> inline crypto session.
>
> IPv6 and IPv4 transport mode is iterating through security capabilities
> until it reaches tunnel, which causes session to be created as tunnel,
> instead of transport. Another issue, is that config file does not
> provide source and destination ip addresses for transport mode, which
> are required by NIC to perform inline crypto. It uses default addresses
> stored in security association (all zeroes), which causes dropped
> packages.
>
> To fix that, reorganization of code in create_session() is needed,
> to behave appropriately to given protocol (IPv6/IPv4). Change in
> iteration through security capabilities is also required, to check
> for expected mode (not only tunnel).
>
> For lack of addresses issue, some resolving mechanism is needed.
> Approach is to store addresses in security association, as it is
> for tunnel mode. Difference is that they are obtained from sp rules,
> instead of config file. To do that, sp[4/6]_spi_present() function
> is used to find addresses based on spi value, and then stored in
> corresponding sa rule. This approach assumes, that every sp rule
> for inline crypto have valid addresses, as well as range of addresses
> is not supported.
>
> New flags for ipsec_sa structure are required to distinguish between
> IPv4 and IPv6 transport modes. Because of that, there is need to
> change all checks done on these flags, so they work as expected.
>
> Fixes: ec17993a145a ("examples/ipsec-secgw: support security offload")
> Fixes: 9a0752f498d2 ("net/ixgbe: enable inline IPsec")
>
This is a very well written description. Thanks. This helps in review of the patch.
I have a few small comments, rest all is fine.
> Signed-off-by: Mariusz Drost <mariuszx.drost@intel.com>
> ---
> examples/ipsec-secgw/esp.c | 12 +--
> examples/ipsec-secgw/ipsec.c | 19 +++--
> examples/ipsec-secgw/ipsec.h | 21 +++++-
> examples/ipsec-secgw/sa.c | 142 ++++++++++++++++++++++++++---------
> examples/ipsec-secgw/sp4.c | 24 +++++-
> examples/ipsec-secgw/sp6.c | 42 ++++++++++-
> 6 files changed, 205 insertions(+), 55 deletions(-)
>
> diff --git a/examples/ipsec-secgw/esp.c b/examples/ipsec-secgw/esp.c
> index f11d095ba..764e08dcf 100644
> --- a/examples/ipsec-secgw/esp.c
> +++ b/examples/ipsec-secgw/esp.c
> @@ -192,7 +192,7 @@ esp_inbound_post(struct rte_mbuf *m, struct ipsec_sa
> *sa,
> }
> }
>
> - if (unlikely(sa->flags == TRANSPORT)) {
> + if (unlikely(IS_TRANSPORT(sa->flags))) {
> ip = rte_pktmbuf_mtod(m, struct ip *);
> ip4 = (struct ip *)rte_pktmbuf_adj(m,
> sizeof(struct rte_esp_hdr) + sa->iv_len);
> @@ -233,13 +233,13 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa
> *sa,
>
> ip4 = rte_pktmbuf_mtod(m, struct ip *);
> if (likely(ip4->ip_v == IPVERSION)) {
> - if (unlikely(sa->flags == TRANSPORT)) {
> + if (unlikely(IS_TRANSPORT(sa->flags))) {
> ip_hdr_len = ip4->ip_hl * 4;
> nlp = ip4->ip_p;
> } else
> nlp = IPPROTO_IPIP;
> } else if (ip4->ip_v == IP6_VERSION) {
> - if (unlikely(sa->flags == TRANSPORT)) {
> + if (unlikely(IS_TRANSPORT(sa->flags))) {
> /* XXX No option headers supported */
> ip_hdr_len = sizeof(struct ip6_hdr);
> ip6 = (struct ip6_hdr *)ip4;
> @@ -258,13 +258,13 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa
> *sa,
> pad_len = pad_payload_len + ip_hdr_len - rte_pktmbuf_pkt_len(m);
>
> RTE_ASSERT(sa->flags == IP4_TUNNEL || sa->flags == IP6_TUNNEL ||
> - sa->flags == TRANSPORT);
> + IS_TRANSPORT(sa->flags));
I can see that at multiple places, sa->flags are accessed without your defined macros. Could you please update this at all places, so that it will be uniform across the application.
>
> if (likely(sa->flags == IP4_TUNNEL))
> ip_hdr_len = sizeof(struct ip);
> else if (sa->flags == IP6_TUNNEL)
> ip_hdr_len = sizeof(struct ip6_hdr);
> - else if (sa->flags != TRANSPORT) {
> + else if (!IS_TRANSPORT(sa->flags)) {
> RTE_LOG(ERR, IPSEC_ESP, "Unsupported SA flags: 0x%x\n",
> sa->flags);
> return -EINVAL;
> @@ -291,7 +291,7 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa,
> rte_prefetch0(padding);
> }
>
> - switch (sa->flags) {
> + switch (WITHOUT_TRANSPORT_VERSION(sa->flags)) {
I do not get the intent of this macro " WITHOUT_TRANSPORT_VERSION ". could you explain this in comments or some better name of the macro.
> case IP4_TUNNEL:
> ip4 = ip4ip_outbound(m, sizeof(struct rte_esp_hdr) + sa->iv_len,
> &sa->src, &sa->dst);
Regards,
Akhil
^ permalink raw reply
* [RFC v2 08/14] arm64/mm: Split asid_inits in 2 parts
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
Move out the common initialization of the ASID allocator in a separate
function.
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
arch/arm64/mm/context.c | 43 +++++++++++++++++++++++++++++++------------
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index beba8e5b4100..81bc3d365436 100644
--- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c
@@ -271,31 +271,50 @@ asmlinkage void post_ttbr_update_workaround(void)
CONFIG_CAVIUM_ERRATUM_27456));
}
-static int asids_init(void)
+/*
+ * Initialize the ASID allocator
+ *
+ * @info: Pointer to the asid allocator structure
+ * @bits: Number of ASIDs available
+ * @asid_per_ctxt: Number of ASIDs to allocate per-context. ASIDs are
+ * allocated contiguously for a given context. This value should be a power of
+ * 2.
+ */
+static int asid_allocator_init(struct asid_info *info,
+ u32 bits, unsigned int asid_per_ctxt)
{
- struct asid_info *info = &asid_info;
-
- info->bits = get_cpu_asid_bits();
- info->ctxt_shift = ilog2(ASID_PER_CONTEXT);
+ info->bits = bits;
+ info->ctxt_shift = ilog2(asid_per_ctxt);
/*
* Expect allocation after rollover to fail if we don't have at least
- * one more ASID than CPUs. ASID #0 is reserved for init_mm.
+ * one more ASID than CPUs. ASID #0 is always reserved.
*/
WARN_ON(NUM_CTXT_ASIDS(info) - 1 <= num_possible_cpus());
atomic64_set(&info->generation, ASID_FIRST_VERSION(info));
info->map = kcalloc(BITS_TO_LONGS(NUM_CTXT_ASIDS(info)),
sizeof(*info->map), GFP_KERNEL);
if (!info->map)
- panic("Failed to allocate bitmap for %lu ASIDs\n",
- NUM_CTXT_ASIDS(info));
-
- info->active = &active_asids;
- info->reserved = &reserved_asids;
+ return -ENOMEM;
raw_spin_lock_init(&info->lock);
+ return 0;
+}
+
+static int asids_init(void)
+{
+ u32 bits = get_cpu_asid_bits();
+
+ if (!asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT))
+ panic("Unable to initialize ASID allocator for %lu ASIDs\n",
+ 1UL << bits);
+
+ asid_info.active = &active_asids;
+ asid_info.reserved = &reserved_asids;
+
pr_info("ASID allocator initialised with %lu entries\n",
- NUM_CTXT_ASIDS(info));
+ NUM_CTXT_ASIDS(&asid_info));
+
return 0;
}
early_initcall(asids_init);
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* [RFC v2 09/14] arm64/mm: Split the function check_and_switch_context in 3 parts
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
The function check_and_switch_context is used to:
1) Check whether the ASID is still valid
2) Generate a new one if it is not valid
3) Switch the context
While the latter is specific to the MM subsystem, the rest could be part
of the generic ASID allocator.
After this patch, the function is now split in 3 parts which corresponds
to the use of the functions:
1) asid_check_context: Check if the ASID is still valid
2) asid_new_context: Generate a new ASID for the context
3) check_and_switch_context: Call 1) and 2) and switch the context
1) and 2) have not been merged in a single function because we want to
avoid to add a branch in when the ASID is still valid. This will matter
when the code will be moved in separate file later on as 1) will reside
in the header as a static inline function.
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
Will wants to avoid to add a branch when the ASID is still valid. So
1) and 2) are in separates function. The former will move to a new
header and make static inline.
---
arch/arm64/mm/context.c | 51 +++++++++++++++++++++++++++++++++++++------------
1 file changed, 39 insertions(+), 12 deletions(-)
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index 81bc3d365436..fbef5a5c5624 100644
--- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c
@@ -204,16 +204,21 @@ static u64 new_context(struct asid_info *info, atomic64_t *pasid)
return idx2asid(info, asid) | generation;
}
-void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
+static void asid_new_context(struct asid_info *info, atomic64_t *pasid,
+ unsigned int cpu);
+
+/*
+ * Check the ASID is still valid for the context. If not generate a new ASID.
+ *
+ * @pasid: Pointer to the current ASID batch
+ * @cpu: current CPU ID. Must have been acquired throught get_cpu()
+ */
+static void asid_check_context(struct asid_info *info,
+ atomic64_t *pasid, unsigned int cpu)
{
- unsigned long flags;
u64 asid, old_active_asid;
- struct asid_info *info = &asid_info;
- if (system_supports_cnp())
- cpu_set_reserved_ttbr0();
-
- asid = atomic64_read(&mm->context.id);
+ asid = atomic64_read(pasid);
/*
* The memory ordering here is subtle.
@@ -234,14 +239,30 @@ void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
!((asid ^ atomic64_read(&info->generation)) >> info->bits) &&
atomic64_cmpxchg_relaxed(&active_asid(info, cpu),
old_active_asid, asid))
- goto switch_mm_fastpath;
+ return;
+
+ asid_new_context(info, pasid, cpu);
+}
+
+/*
+ * Generate a new ASID for the context.
+ *
+ * @pasid: Pointer to the current ASID batch allocated. It will be updated
+ * with the new ASID batch.
+ * @cpu: current CPU ID. Must have been acquired through get_cpu()
+ */
+static void asid_new_context(struct asid_info *info, atomic64_t *pasid,
+ unsigned int cpu)
+{
+ unsigned long flags;
+ u64 asid;
raw_spin_lock_irqsave(&info->lock, flags);
/* Check that our ASID belongs to the current generation. */
- asid = atomic64_read(&mm->context.id);
+ asid = atomic64_read(pasid);
if ((asid ^ atomic64_read(&info->generation)) >> info->bits) {
- asid = new_context(info, &mm->context.id);
- atomic64_set(&mm->context.id, asid);
+ asid = new_context(info, pasid);
+ atomic64_set(pasid, asid);
}
if (cpumask_test_and_clear_cpu(cpu, &info->flush_pending))
@@ -249,8 +270,14 @@ void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
atomic64_set(&active_asid(info, cpu), asid);
raw_spin_unlock_irqrestore(&info->lock, flags);
+}
+
+void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
+{
+ if (system_supports_cnp())
+ cpu_set_reserved_ttbr0();
-switch_mm_fastpath:
+ asid_check_context(&asid_info, &mm->context.id, cpu);
arm64_apply_bp_hardening();
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* [RFC v2 10/14] arm64/mm: Introduce a callback to flush the local context
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
Flushing the local context will vary depending on the actual user of the ASID
allocator. Introduce a new callback to flush the local context and move
the call to flush local TLB in it.
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
arch/arm64/mm/context.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index fbef5a5c5624..3df63a28856c 100644
--- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c
@@ -39,6 +39,8 @@ static struct asid_info
cpumask_t flush_pending;
/* Number of ASID allocated by context (shift value) */
unsigned int ctxt_shift;
+ /* Callback to locally flush the context. */
+ void (*flush_cpu_ctxt_cb)(void);
} asid_info;
#define active_asid(info, cpu) *per_cpu_ptr((info)->active, cpu)
@@ -266,7 +268,7 @@ static void asid_new_context(struct asid_info *info, atomic64_t *pasid,
}
if (cpumask_test_and_clear_cpu(cpu, &info->flush_pending))
- local_flush_tlb_all();
+ info->flush_cpu_ctxt_cb();
atomic64_set(&active_asid(info, cpu), asid);
raw_spin_unlock_irqrestore(&info->lock, flags);
@@ -298,6 +300,11 @@ asmlinkage void post_ttbr_update_workaround(void)
CONFIG_CAVIUM_ERRATUM_27456));
}
+static void asid_flush_cpu_ctxt(void)
+{
+ local_flush_tlb_all();
+}
+
/*
* Initialize the ASID allocator
*
@@ -308,10 +315,12 @@ asmlinkage void post_ttbr_update_workaround(void)
* 2.
*/
static int asid_allocator_init(struct asid_info *info,
- u32 bits, unsigned int asid_per_ctxt)
+ u32 bits, unsigned int asid_per_ctxt,
+ void (*flush_cpu_ctxt_cb)(void))
{
info->bits = bits;
info->ctxt_shift = ilog2(asid_per_ctxt);
+ info->flush_cpu_ctxt_cb = flush_cpu_ctxt_cb;
/*
* Expect allocation after rollover to fail if we don't have at least
* one more ASID than CPUs. ASID #0 is always reserved.
@@ -332,7 +341,8 @@ static int asids_init(void)
{
u32 bits = get_cpu_asid_bits();
- if (!asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT))
+ if (!asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT,
+ asid_flush_cpu_ctxt))
panic("Unable to initialize ASID allocator for %lu ASIDs\n",
1UL << bits);
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* [LTP] [PATCH 1/2] syscalls/futex_cmp_requeue01.c: Add new test
From: Cyril Hrubis @ 2019-06-20 13:09 UTC (permalink / raw)
To: ltp
In-Reply-To: <1559573519-4644-1-git-send-email-ice_yangxiao@163.com>
Hi!
> diff --git a/runtest/syscalls b/runtest/syscalls
> index 762b15b..fd5f1ec 100644
> --- a/runtest/syscalls
> +++ b/runtest/syscalls
> @@ -1546,6 +1546,7 @@ writev07 writev07
> perf_event_open01 perf_event_open01
> perf_event_open02 perf_event_open02
>
> +futex_cmp_requeue01 futex_cmp_requeue01
> futex_wait01 futex_wait01
> futex_wait02 futex_wait02
> futex_wait03 futex_wait03
> diff --git a/testcases/kernel/syscalls/futex/.gitignore b/testcases/kernel/syscalls/futex/.gitignore
> index dbc2d52..4666a2c 100644
> --- a/testcases/kernel/syscalls/futex/.gitignore
> +++ b/testcases/kernel/syscalls/futex/.gitignore
> @@ -1,3 +1,4 @@
> +/futex_cmp_requeue01
> /futex_wait01
> /futex_wait02
> /futex_wait03
> diff --git a/testcases/kernel/syscalls/futex/Makefile b/testcases/kernel/syscalls/futex/Makefile
> index 6e72daf..c4d5033 100644
> --- a/testcases/kernel/syscalls/futex/Makefile
> +++ b/testcases/kernel/syscalls/futex/Makefile
> @@ -18,6 +18,7 @@
>
> top_srcdir ?= ../../../..
>
> +futex_cmp_requeue01: LDLIBS+=-lrt
> futex_wait02: LDLIBS+=-lrt
> futex_wake03: LDLIBS+=-lrt
> futex_wait03: CFLAGS+=-pthread
> diff --git a/testcases/kernel/syscalls/futex/futex_cmp_requeue01.c b/testcases/kernel/syscalls/futex/futex_cmp_requeue01.c
> new file mode 100644
> index 0000000..88b71cd
> --- /dev/null
> +++ b/testcases/kernel/syscalls/futex/futex_cmp_requeue01.c
> @@ -0,0 +1,110 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2019 Xiao Yang <ice_yangxiao@163.com>
> + *
> + * Description:
> + * Testcase to check the basic functionality of futex(FUTEX_CMP_REQUEUE).
> + * futex(FUTEX_CMP_REQUEUE) can wake up the number of waiters specified
> + * by val argument and then requeue the number of waiters limited by val2
> + * argument(i.e. move some remaining waiters from uaddr to uaddr2 address).
> + */
> +
> +#include <errno.h>
> +#include <sys/wait.h>
> +#include <stdlib.h>
> +#include <linux/futex.h>
> +#include <sys/time.h>
> +
> +#include "tst_timer_test.h"
> +#include "tst_test.h"
> +#include "futextest.h"
> +#include "futexes_comm.h"
> +
> +#define NUM_WAITERS 3
> +
> +static struct tcase {
> + int set_wakes;
> + int set_requeues;
> + int exp_ret;
> + int exp_wakes;
> + int exp_requeues;
> +} tcases[] = {
> + {1, 2, 3, 1, 2},
> + {2, 1, 3, 2, 1},
> + {0, 3, 3, 0, 3},
> + {1, 1, 2, 1, 1},
> + {0, 2, 2, 0, 2},
> + {0, 1, 1, 0, 1},
I wonder if we should add some tests with slightly bigger numbers here,
something as 100 processes should be still small enough even for
embedded hardware...
> +};
> +
> +static void do_child(void)
> +{
> + struct timespec usec = tst_ms_to_timespec(2000);
> + int pid = getpid();
> +
> + if (!futex_wait(&futexes[0], futexes[0], &usec, 0))
> + tst_res(TINFO, "process %d was woken up", pid);
> + else
> + tst_res(TINFO, "process %d wasn't woken up, errno %s",
> + pid, tst_strerrno(errno));
You can use TINFO | TERRNO instead of the "%s" and tst_strerrno(errno)
here.
> + exit(0);
> +}
> +
> +static void verify_futex_cmp_requeue(unsigned int n)
> +{
> + int pid[NUM_WAITERS];
> + int i;
> + int manu_wakes1, manu_wakes2;
> + struct tcase *tc = &tcases[n];
> +
> + for (i = 0; i < NUM_WAITERS; i++) {
> + pid[i] = SAFE_FORK();
> + if (!pid[i])
> + do_child();
> + }
> +
> + for (i = 0; i < NUM_WAITERS; i++)
> + TST_PROCESS_STATE_WAIT(pid[i], 'S');
> +
> + TEST(futex_cmp_requeue(&futexes[0], futexes[0], &futexes[1],
> + tc->set_wakes, tc->set_requeues, 0));
> + if (TST_RET != tc->exp_ret) {
> + tst_res(TFAIL, "futex_cmp_requeue() returned %ld, expected %d",
> + TST_RET, tc->exp_ret);
> + goto end;
> + }
> +
> + manu_wakes1 = futex_wake(&futexes[1], NUM_WAITERS, 0);
^
num_wakes1 ?
manu_wakes1 sounds strange
> + if (manu_wakes1 != tc->exp_requeues) {
> + tst_res(TFAIL,
> + "futex_cmp_requeue() requeues %d waiter(s), expected %d",
> + manu_wakes1, tc->exp_requeues);
> + goto end;
> + }
> +
> + manu_wakes2 = futex_wake(&futexes[0], NUM_WAITERS, 0);
> + if (NUM_WAITERS - manu_wakes1 - manu_wakes2 != tc->exp_wakes) {
> + tst_res(TFAIL,
> + "futex_cmp_requeue() woke %d waiter(s), expected %d",
> + NUM_WAITERS - manu_wakes1 - manu_wakes2,
> + tc->exp_wakes);
> + goto end;
> + }
> +
> + tst_res(TPASS,
> + "futex_cmp_requeue() woke %d waiter(s) and requeued %d waiter(s)",
> + tc->exp_wakes, tc->exp_requeues);
> +
> +end:
shouldn't we just do futex_wake() with INT_MAX here for both addresses,
otherwise we will just hang here in the waitpid in case we got here from
one of the goto jumps.
> + for (i = 0; i < NUM_WAITERS; i++)
> + SAFE_WAITPID(pid[i], NULL, 0);
We may as well be pedantic here and check that the processes has exitted
with 0.
> +}
> +
> +static struct tst_test test = {
> + .setup = setup_futexes,
> + .cleanup = cleanup_futexes,
> + .tcnt = ARRAY_SIZE(tcases),
> + .test = verify_futex_cmp_requeue,
> + .forks_child = 1,
> +};
> diff --git a/testcases/kernel/syscalls/futex/futexes_comm.h b/testcases/kernel/syscalls/futex/futexes_comm.h
> new file mode 100644
> index 0000000..fe07bc4
> --- /dev/null
> +++ b/testcases/kernel/syscalls/futex/futexes_comm.h
> @@ -0,0 +1,43 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2019 Xiao Yang <ice_yangxiao@163.com>
> + *
> + * Setup futexes in shared memory needed for synchronization
> + * between multiple processes.
> + */
> +
> +#include <sys/mman.h>
> +#include <sys/stat.h>
> +#include <fcntl.h>
> +
> +static futex_t *futexes;
> +
> +static void setup_futexes(void)
> +{
> + int fd;
> +
> + fd = shm_open("/LTP_futexes", O_RDWR | O_CREAT | O_EXCL, 0755);
> + if (fd < 0) {
> + tst_brk(TBROK | TERRNO,
> + "shm_open(/LTP_futexes, O_RDWR|O_CREAT|O_EXCL, 775)");
> + }
> +
> + if (shm_unlink("/LTP_futexes"))
> + tst_brk(TBROK | TERRNO, "shm_unlink(/LTP_futexes)");
> +
> + SAFE_FTRUNCATE(fd, sizeof(futex_t) * 2);
> +
> + futexes = SAFE_MMAP(NULL, sizeof(futex_t) * 2, PROT_READ | PROT_WRITE,
> + MAP_ANONYMOUS | MAP_SHARED, fd, 0);
> +
> + SAFE_CLOSE(fd);
> +
> + futexes[0] = FUTEX_INITIALIZER;
> + futexes[1] = FUTEX_INITIALIZER + 1;
Sigh, looks like this is new library version of the futex_common.h.
However the futex_common.h is flaved in the very same way this copy is.
There is actually no point in passing a file descriptor to a mmap() with
MAP_ANONYMOUS flag, so you can just get rid for this header and just do:
futexes = SAFE_MMAP(NULL, sizeof(futex_t) * 2, PROT_READ | PROT_WRITE,
MAP_ANONYMOUS | MAP_SHARED, -1, 0);
Directly in the test setup, there is no point in having a header just
for one mmap().
And I will fix the old futex tests.
> +}
> +
> +static void cleanup_futexes(void)
> +{
> + if (futexes)
> + SAFE_MUNMAP((void *)futexes, sizeof(futex_t) * 2);
^
This is useless cast.
> +}
Other than that it looks good.
--
Cyril Hrubis
chrubis@suse.cz
^ permalink raw reply
* [RFC v2 11/14] arm64: Move the ASID allocator code in a separate file
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
We will want to re-use the ASID allocator in a separate context (e.g
allocating VMID). So move the code in a new file.
The function asid_check_context has been moved in the header as a static
inline function because we want to avoid add a branch when checking if the
ASID is still valid.
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
This code will be used in the virt code for allocating VMID. I am not
entirely sure where to place it. Lib could potentially be a good place but I
am not entirely convinced the algo as it is could be used by other
architecture.
Looking at x86, it seems that it will not be possible to re-use because
the number of PCID (aka ASID) could be smaller than the number of CPUs.
See commit message 10af6235e0d327d42e1bad974385197817923dc1 "x86/mm:
Implement PCID based optimization: try to preserve old TLB entries using
PCI".
Changes in v2:
- Rename the header from asid.h to lib_asid.h
---
arch/arm64/include/asm/lib_asid.h | 77 +++++++++++++
arch/arm64/lib/Makefile | 2 +
arch/arm64/lib/asid.c | 185 ++++++++++++++++++++++++++++++
arch/arm64/mm/context.c | 235 +-------------------------------------
4 files changed, 267 insertions(+), 232 deletions(-)
create mode 100644 arch/arm64/include/asm/lib_asid.h
create mode 100644 arch/arm64/lib/asid.c
diff --git a/arch/arm64/include/asm/lib_asid.h b/arch/arm64/include/asm/lib_asid.h
new file mode 100644
index 000000000000..c18e9eca500e
--- /dev/null
+++ b/arch/arm64/include/asm/lib_asid.h
@@ -0,0 +1,77 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_ASM_LIB_ASID_H
+#define __ASM_ASM_LIB_ASID_H
+
+#include <linux/atomic.h>
+#include <linux/compiler.h>
+#include <linux/cpumask.h>
+#include <linux/percpu.h>
+#include <linux/spinlock.h>
+
+struct asid_info
+{
+ atomic64_t generation;
+ unsigned long *map;
+ atomic64_t __percpu *active;
+ u64 __percpu *reserved;
+ u32 bits;
+ /* Lock protecting the structure */
+ raw_spinlock_t lock;
+ /* Which CPU requires context flush on next call */
+ cpumask_t flush_pending;
+ /* Number of ASID allocated by context (shift value) */
+ unsigned int ctxt_shift;
+ /* Callback to locally flush the context. */
+ void (*flush_cpu_ctxt_cb)(void);
+};
+
+#define NUM_ASIDS(info) (1UL << ((info)->bits))
+#define NUM_CTXT_ASIDS(info) (NUM_ASIDS(info) >> (info)->ctxt_shift)
+
+#define active_asid(info, cpu) *per_cpu_ptr((info)->active, cpu)
+
+void asid_new_context(struct asid_info *info, atomic64_t *pasid,
+ unsigned int cpu);
+
+/*
+ * Check the ASID is still valid for the context. If not generate a new ASID.
+ *
+ * @pasid: Pointer to the current ASID batch
+ * @cpu: current CPU ID. Must have been acquired throught get_cpu()
+ */
+static inline void asid_check_context(struct asid_info *info,
+ atomic64_t *pasid, unsigned int cpu)
+{
+ u64 asid, old_active_asid;
+
+ asid = atomic64_read(pasid);
+
+ /*
+ * The memory ordering here is subtle.
+ * If our active_asid is non-zero and the ASID matches the current
+ * generation, then we update the active_asid entry with a relaxed
+ * cmpxchg. Racing with a concurrent rollover means that either:
+ *
+ * - We get a zero back from the cmpxchg and end up waiting on the
+ * lock. Taking the lock synchronises with the rollover and so
+ * we are forced to see the updated generation.
+ *
+ * - We get a valid ASID back from the cmpxchg, which means the
+ * relaxed xchg in flush_context will treat us as reserved
+ * because atomic RmWs are totally ordered for a given location.
+ */
+ old_active_asid = atomic64_read(&active_asid(info, cpu));
+ if (old_active_asid &&
+ !((asid ^ atomic64_read(&info->generation)) >> info->bits) &&
+ atomic64_cmpxchg_relaxed(&active_asid(info, cpu),
+ old_active_asid, asid))
+ return;
+
+ asid_new_context(info, pasid, cpu);
+}
+
+int asid_allocator_init(struct asid_info *info,
+ u32 bits, unsigned int asid_per_ctxt,
+ void (*flush_cpu_ctxt_cb)(void));
+
+#endif
diff --git a/arch/arm64/lib/Makefile b/arch/arm64/lib/Makefile
index 33c2a4abda04..37169d541ab5 100644
--- a/arch/arm64/lib/Makefile
+++ b/arch/arm64/lib/Makefile
@@ -5,6 +5,8 @@ lib-y := clear_user.o delay.o copy_from_user.o \
memcmp.o strcmp.o strncmp.o strlen.o strnlen.o \
strchr.o strrchr.o tishift.o
+lib-y += asid.o
+
ifeq ($(CONFIG_KERNEL_MODE_NEON), y)
obj-$(CONFIG_XOR_BLOCKS) += xor-neon.o
CFLAGS_REMOVE_xor-neon.o += -mgeneral-regs-only
diff --git a/arch/arm64/lib/asid.c b/arch/arm64/lib/asid.c
new file mode 100644
index 000000000000..7252e4fdd5e9
--- /dev/null
+++ b/arch/arm64/lib/asid.c
@@ -0,0 +1,185 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Generic ASID allocator.
+ *
+ * Based on arch/arm/mm/context.c
+ *
+ * Copyright (C) 2002-2003 Deep Blue Solutions Ltd, all rights reserved.
+ * Copyright (C) 2012 ARM Ltd.
+ */
+
+#include <linux/slab.h>
+
+#include <asm/lib_asid.h>
+
+#define reserved_asid(info, cpu) *per_cpu_ptr((info)->reserved, cpu)
+
+#define ASID_MASK(info) (~GENMASK((info)->bits - 1, 0))
+#define ASID_FIRST_VERSION(info) (1UL << ((info)->bits))
+
+#define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift)
+#define idx2asid(info, idx) (((idx) << (info)->ctxt_shift) & ~ASID_MASK(info))
+
+static void flush_context(struct asid_info *info)
+{
+ int i;
+ u64 asid;
+
+ /* Update the list of reserved ASIDs and the ASID bitmap. */
+ bitmap_clear(info->map, 0, NUM_CTXT_ASIDS(info));
+
+ for_each_possible_cpu(i) {
+ asid = atomic64_xchg_relaxed(&active_asid(info, i), 0);
+ /*
+ * If this CPU has already been through a
+ * rollover, but hasn't run another task in
+ * the meantime, we must preserve its reserved
+ * ASID, as this is the only trace we have of
+ * the process it is still running.
+ */
+ if (asid == 0)
+ asid = reserved_asid(info, i);
+ __set_bit(asid2idx(info, asid), info->map);
+ reserved_asid(info, i) = asid;
+ }
+
+ /*
+ * Queue a TLB invalidation for each CPU to perform on next
+ * context-switch
+ */
+ cpumask_setall(&info->flush_pending);
+}
+
+static bool check_update_reserved_asid(struct asid_info *info, u64 asid,
+ u64 newasid)
+{
+ int cpu;
+ bool hit = false;
+
+ /*
+ * Iterate over the set of reserved ASIDs looking for a match.
+ * If we find one, then we can update our mm to use newasid
+ * (i.e. the same ASID in the current generation) but we can't
+ * exit the loop early, since we need to ensure that all copies
+ * of the old ASID are updated to reflect the mm. Failure to do
+ * so could result in us missing the reserved ASID in a future
+ * generation.
+ */
+ for_each_possible_cpu(cpu) {
+ if (reserved_asid(info, cpu) == asid) {
+ hit = true;
+ reserved_asid(info, cpu) = newasid;
+ }
+ }
+
+ return hit;
+}
+
+static u64 new_context(struct asid_info *info, atomic64_t *pasid)
+{
+ static u32 cur_idx = 1;
+ u64 asid = atomic64_read(pasid);
+ u64 generation = atomic64_read(&info->generation);
+
+ if (asid != 0) {
+ u64 newasid = generation | (asid & ~ASID_MASK(info));
+
+ /*
+ * If our current ASID was active during a rollover, we
+ * can continue to use it and this was just a false alarm.
+ */
+ if (check_update_reserved_asid(info, asid, newasid))
+ return newasid;
+
+ /*
+ * We had a valid ASID in a previous life, so try to re-use
+ * it if possible.
+ */
+ if (!__test_and_set_bit(asid2idx(info, asid), info->map))
+ return newasid;
+ }
+
+ /*
+ * Allocate a free ASID. If we can't find one, take a note of the
+ * currently active ASIDs and mark the TLBs as requiring flushes. We
+ * always count from ASID #2 (index 1), as we use ASID #0 when setting
+ * a reserved TTBR0 for the init_mm and we allocate ASIDs in even/odd
+ * pairs.
+ */
+ asid = find_next_zero_bit(info->map, NUM_CTXT_ASIDS(info), cur_idx);
+ if (asid != NUM_CTXT_ASIDS(info))
+ goto set_asid;
+
+ /* We're out of ASIDs, so increment the global generation count */
+ generation = atomic64_add_return_relaxed(ASID_FIRST_VERSION(info),
+ &info->generation);
+ flush_context(info);
+
+ /* We have more ASIDs than CPUs, so this will always succeed */
+ asid = find_next_zero_bit(info->map, NUM_CTXT_ASIDS(info), 1);
+
+set_asid:
+ __set_bit(asid, info->map);
+ cur_idx = asid;
+ return idx2asid(info, asid) | generation;
+}
+
+/*
+ * Generate a new ASID for the context.
+ *
+ * @pasid: Pointer to the current ASID batch allocated. It will be updated
+ * with the new ASID batch.
+ * @cpu: current CPU ID. Must have been acquired through get_cpu()
+ */
+void asid_new_context(struct asid_info *info, atomic64_t *pasid,
+ unsigned int cpu)
+{
+ unsigned long flags;
+ u64 asid;
+
+ raw_spin_lock_irqsave(&info->lock, flags);
+ /* Check that our ASID belongs to the current generation. */
+ asid = atomic64_read(pasid);
+ if ((asid ^ atomic64_read(&info->generation)) >> info->bits) {
+ asid = new_context(info, pasid);
+ atomic64_set(pasid, asid);
+ }
+
+ if (cpumask_test_and_clear_cpu(cpu, &info->flush_pending))
+ info->flush_cpu_ctxt_cb();
+
+ atomic64_set(&active_asid(info, cpu), asid);
+ raw_spin_unlock_irqrestore(&info->lock, flags);
+}
+
+/*
+ * Initialize the ASID allocator
+ *
+ * @info: Pointer to the asid allocator structure
+ * @bits: Number of ASIDs available
+ * @asid_per_ctxt: Number of ASIDs to allocate per-context. ASIDs are
+ * allocated contiguously for a given context. This value should be a power of
+ * 2.
+ */
+int asid_allocator_init(struct asid_info *info,
+ u32 bits, unsigned int asid_per_ctxt,
+ void (*flush_cpu_ctxt_cb)(void))
+{
+ info->bits = bits;
+ info->ctxt_shift = ilog2(asid_per_ctxt);
+ info->flush_cpu_ctxt_cb = flush_cpu_ctxt_cb;
+ /*
+ * Expect allocation after rollover to fail if we don't have at least
+ * one more ASID than CPUs. ASID #0 is always reserved.
+ */
+ WARN_ON(NUM_CTXT_ASIDS(info) - 1 <= num_possible_cpus());
+ atomic64_set(&info->generation, ASID_FIRST_VERSION(info));
+ info->map = kcalloc(BITS_TO_LONGS(NUM_CTXT_ASIDS(info)),
+ sizeof(*info->map), GFP_KERNEL);
+ if (!info->map)
+ return -ENOMEM;
+
+ raw_spin_lock_init(&info->lock);
+
+ return 0;
+}
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index 3df63a28856c..b745cf356fe1 100644
--- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c
@@ -23,46 +23,21 @@
#include <linux/mm.h>
#include <asm/cpufeature.h>
+#include <asm/lib_asid.h>
#include <asm/mmu_context.h>
#include <asm/smp.h>
#include <asm/tlbflush.h>
-static struct asid_info
-{
- atomic64_t generation;
- unsigned long *map;
- atomic64_t __percpu *active;
- u64 __percpu *reserved;
- u32 bits;
- raw_spinlock_t lock;
- /* Which CPU requires context flush on next call */
- cpumask_t flush_pending;
- /* Number of ASID allocated by context (shift value) */
- unsigned int ctxt_shift;
- /* Callback to locally flush the context. */
- void (*flush_cpu_ctxt_cb)(void);
-} asid_info;
-
-#define active_asid(info, cpu) *per_cpu_ptr((info)->active, cpu)
-#define reserved_asid(info, cpu) *per_cpu_ptr((info)->reserved, cpu)
-
static DEFINE_PER_CPU(atomic64_t, active_asids);
static DEFINE_PER_CPU(u64, reserved_asids);
-#define ASID_MASK(info) (~GENMASK((info)->bits - 1, 0))
-#define NUM_ASIDS(info) (1UL << ((info)->bits))
-
-#define ASID_FIRST_VERSION(info) NUM_ASIDS(info)
-
#ifdef CONFIG_UNMAP_KERNEL_AT_EL0
#define ASID_PER_CONTEXT 2
#else
#define ASID_PER_CONTEXT 1
#endif
-#define NUM_CTXT_ASIDS(info) (NUM_ASIDS(info) >> (info)->ctxt_shift)
-#define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift)
-#define idx2asid(info, idx) (((idx) << (info)->ctxt_shift) & ~ASID_MASK(info))
+static struct asid_info asid_info;
/* Get the ASIDBits supported by the current CPU */
static u32 get_cpu_asid_bits(void)
@@ -102,178 +77,6 @@ void verify_cpu_asid_bits(void)
}
}
-static void flush_context(struct asid_info *info)
-{
- int i;
- u64 asid;
-
- /* Update the list of reserved ASIDs and the ASID bitmap. */
- bitmap_clear(info->map, 0, NUM_CTXT_ASIDS(info));
-
- for_each_possible_cpu(i) {
- asid = atomic64_xchg_relaxed(&active_asid(info, i), 0);
- /*
- * If this CPU has already been through a
- * rollover, but hasn't run another task in
- * the meantime, we must preserve its reserved
- * ASID, as this is the only trace we have of
- * the process it is still running.
- */
- if (asid == 0)
- asid = reserved_asid(info, i);
- __set_bit(asid2idx(info, asid), info->map);
- reserved_asid(info, i) = asid;
- }
-
- /*
- * Queue a TLB invalidation for each CPU to perform on next
- * context-switch
- */
- cpumask_setall(&info->flush_pending);
-}
-
-static bool check_update_reserved_asid(struct asid_info *info, u64 asid,
- u64 newasid)
-{
- int cpu;
- bool hit = false;
-
- /*
- * Iterate over the set of reserved ASIDs looking for a match.
- * If we find one, then we can update our mm to use newasid
- * (i.e. the same ASID in the current generation) but we can't
- * exit the loop early, since we need to ensure that all copies
- * of the old ASID are updated to reflect the mm. Failure to do
- * so could result in us missing the reserved ASID in a future
- * generation.
- */
- for_each_possible_cpu(cpu) {
- if (reserved_asid(info, cpu) == asid) {
- hit = true;
- reserved_asid(info, cpu) = newasid;
- }
- }
-
- return hit;
-}
-
-static u64 new_context(struct asid_info *info, atomic64_t *pasid)
-{
- static u32 cur_idx = 1;
- u64 asid = atomic64_read(pasid);
- u64 generation = atomic64_read(&info->generation);
-
- if (asid != 0) {
- u64 newasid = generation | (asid & ~ASID_MASK(info));
-
- /*
- * If our current ASID was active during a rollover, we
- * can continue to use it and this was just a false alarm.
- */
- if (check_update_reserved_asid(info, asid, newasid))
- return newasid;
-
- /*
- * We had a valid ASID in a previous life, so try to re-use
- * it if possible.
- */
- if (!__test_and_set_bit(asid2idx(info, asid), info->map))
- return newasid;
- }
-
- /*
- * Allocate a free ASID. If we can't find one, take a note of the
- * currently active ASIDs and mark the TLBs as requiring flushes. We
- * always count from ASID #2 (index 1), as we use ASID #0 when setting
- * a reserved TTBR0 for the init_mm and we allocate ASIDs in even/odd
- * pairs.
- */
- asid = find_next_zero_bit(info->map, NUM_CTXT_ASIDS(info), cur_idx);
- if (asid != NUM_CTXT_ASIDS(info))
- goto set_asid;
-
- /* We're out of ASIDs, so increment the global generation count */
- generation = atomic64_add_return_relaxed(ASID_FIRST_VERSION(info),
- &info->generation);
- flush_context(info);
-
- /* We have more ASIDs than CPUs, so this will always succeed */
- asid = find_next_zero_bit(info->map, NUM_CTXT_ASIDS(info), 1);
-
-set_asid:
- __set_bit(asid, info->map);
- cur_idx = asid;
- return idx2asid(info, asid) | generation;
-}
-
-static void asid_new_context(struct asid_info *info, atomic64_t *pasid,
- unsigned int cpu);
-
-/*
- * Check the ASID is still valid for the context. If not generate a new ASID.
- *
- * @pasid: Pointer to the current ASID batch
- * @cpu: current CPU ID. Must have been acquired throught get_cpu()
- */
-static void asid_check_context(struct asid_info *info,
- atomic64_t *pasid, unsigned int cpu)
-{
- u64 asid, old_active_asid;
-
- asid = atomic64_read(pasid);
-
- /*
- * The memory ordering here is subtle.
- * If our active_asid is non-zero and the ASID matches the current
- * generation, then we update the active_asid entry with a relaxed
- * cmpxchg. Racing with a concurrent rollover means that either:
- *
- * - We get a zero back from the cmpxchg and end up waiting on the
- * lock. Taking the lock synchronises with the rollover and so
- * we are forced to see the updated generation.
- *
- * - We get a valid ASID back from the cmpxchg, which means the
- * relaxed xchg in flush_context will treat us as reserved
- * because atomic RmWs are totally ordered for a given location.
- */
- old_active_asid = atomic64_read(&active_asid(info, cpu));
- if (old_active_asid &&
- !((asid ^ atomic64_read(&info->generation)) >> info->bits) &&
- atomic64_cmpxchg_relaxed(&active_asid(info, cpu),
- old_active_asid, asid))
- return;
-
- asid_new_context(info, pasid, cpu);
-}
-
-/*
- * Generate a new ASID for the context.
- *
- * @pasid: Pointer to the current ASID batch allocated. It will be updated
- * with the new ASID batch.
- * @cpu: current CPU ID. Must have been acquired through get_cpu()
- */
-static void asid_new_context(struct asid_info *info, atomic64_t *pasid,
- unsigned int cpu)
-{
- unsigned long flags;
- u64 asid;
-
- raw_spin_lock_irqsave(&info->lock, flags);
- /* Check that our ASID belongs to the current generation. */
- asid = atomic64_read(pasid);
- if ((asid ^ atomic64_read(&info->generation)) >> info->bits) {
- asid = new_context(info, pasid);
- atomic64_set(pasid, asid);
- }
-
- if (cpumask_test_and_clear_cpu(cpu, &info->flush_pending))
- info->flush_cpu_ctxt_cb();
-
- atomic64_set(&active_asid(info, cpu), asid);
- raw_spin_unlock_irqrestore(&info->lock, flags);
-}
-
void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
{
if (system_supports_cnp())
@@ -305,38 +108,6 @@ static void asid_flush_cpu_ctxt(void)
local_flush_tlb_all();
}
-/*
- * Initialize the ASID allocator
- *
- * @info: Pointer to the asid allocator structure
- * @bits: Number of ASIDs available
- * @asid_per_ctxt: Number of ASIDs to allocate per-context. ASIDs are
- * allocated contiguously for a given context. This value should be a power of
- * 2.
- */
-static int asid_allocator_init(struct asid_info *info,
- u32 bits, unsigned int asid_per_ctxt,
- void (*flush_cpu_ctxt_cb)(void))
-{
- info->bits = bits;
- info->ctxt_shift = ilog2(asid_per_ctxt);
- info->flush_cpu_ctxt_cb = flush_cpu_ctxt_cb;
- /*
- * Expect allocation after rollover to fail if we don't have at least
- * one more ASID than CPUs. ASID #0 is always reserved.
- */
- WARN_ON(NUM_CTXT_ASIDS(info) - 1 <= num_possible_cpus());
- atomic64_set(&info->generation, ASID_FIRST_VERSION(info));
- info->map = kcalloc(BITS_TO_LONGS(NUM_CTXT_ASIDS(info)),
- sizeof(*info->map), GFP_KERNEL);
- if (!info->map)
- return -ENOMEM;
-
- raw_spin_lock_init(&info->lock);
-
- return 0;
-}
-
static int asids_init(void)
{
u32 bits = get_cpu_asid_bits();
@@ -344,7 +115,7 @@ static int asids_init(void)
if (!asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT,
asid_flush_cpu_ctxt))
panic("Unable to initialize ASID allocator for %lu ASIDs\n",
- 1UL << bits);
+ NUM_ASIDS(&asid_info));
asid_info.active = &active_asids;
asid_info.reserved = &reserved_asids;
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* [RFC v2 12/14] arm64/lib: asid: Allow user to update the context under the lock
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
Some users of the ASID allocator (e.g VMID) will require to update the
context when a new ASID is generated. This has to be protected by a lock
to prevent concurrent modification.
Rather than introducing yet another lock, it is possible to re-use the
allocator lock for that purpose. This patch introduces a new callback
that will be call when updating the context.
Signed-off-by: Julien Grall <julien.grall@arm.com>
---
arch/arm64/include/asm/lib_asid.h | 12 ++++++++----
arch/arm64/lib/asid.c | 10 ++++++++--
arch/arm64/mm/context.c | 11 ++++++++---
3 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/arch/arm64/include/asm/lib_asid.h b/arch/arm64/include/asm/lib_asid.h
index c18e9eca500e..810f0b05a8da 100644
--- a/arch/arm64/include/asm/lib_asid.h
+++ b/arch/arm64/include/asm/lib_asid.h
@@ -23,6 +23,8 @@ struct asid_info
unsigned int ctxt_shift;
/* Callback to locally flush the context. */
void (*flush_cpu_ctxt_cb)(void);
+ /* Callback to call when a context is updated */
+ void (*update_ctxt_cb)(void *ctxt);
};
#define NUM_ASIDS(info) (1UL << ((info)->bits))
@@ -31,7 +33,7 @@ struct asid_info
#define active_asid(info, cpu) *per_cpu_ptr((info)->active, cpu)
void asid_new_context(struct asid_info *info, atomic64_t *pasid,
- unsigned int cpu);
+ unsigned int cpu, void *ctxt);
/*
* Check the ASID is still valid for the context. If not generate a new ASID.
@@ -40,7 +42,8 @@ void asid_new_context(struct asid_info *info, atomic64_t *pasid,
* @cpu: current CPU ID. Must have been acquired throught get_cpu()
*/
static inline void asid_check_context(struct asid_info *info,
- atomic64_t *pasid, unsigned int cpu)
+ atomic64_t *pasid, unsigned int cpu,
+ void *ctxt)
{
u64 asid, old_active_asid;
@@ -67,11 +70,12 @@ static inline void asid_check_context(struct asid_info *info,
old_active_asid, asid))
return;
- asid_new_context(info, pasid, cpu);
+ asid_new_context(info, pasid, cpu, ctxt);
}
int asid_allocator_init(struct asid_info *info,
u32 bits, unsigned int asid_per_ctxt,
- void (*flush_cpu_ctxt_cb)(void));
+ void (*flush_cpu_ctxt_cb)(void),
+ void (*update_ctxt_cb)(void *ctxt));
#endif
diff --git a/arch/arm64/lib/asid.c b/arch/arm64/lib/asid.c
index 7252e4fdd5e9..dd2c6e4c1ff0 100644
--- a/arch/arm64/lib/asid.c
+++ b/arch/arm64/lib/asid.c
@@ -130,9 +130,10 @@ static u64 new_context(struct asid_info *info, atomic64_t *pasid)
* @pasid: Pointer to the current ASID batch allocated. It will be updated
* with the new ASID batch.
* @cpu: current CPU ID. Must have been acquired through get_cpu()
+ * @ctxt: Context to update when calling update_context
*/
void asid_new_context(struct asid_info *info, atomic64_t *pasid,
- unsigned int cpu)
+ unsigned int cpu, void *ctxt)
{
unsigned long flags;
u64 asid;
@@ -149,6 +150,9 @@ void asid_new_context(struct asid_info *info, atomic64_t *pasid,
info->flush_cpu_ctxt_cb();
atomic64_set(&active_asid(info, cpu), asid);
+
+ info->update_ctxt_cb(ctxt);
+
raw_spin_unlock_irqrestore(&info->lock, flags);
}
@@ -163,11 +167,13 @@ void asid_new_context(struct asid_info *info, atomic64_t *pasid,
*/
int asid_allocator_init(struct asid_info *info,
u32 bits, unsigned int asid_per_ctxt,
- void (*flush_cpu_ctxt_cb)(void))
+ void (*flush_cpu_ctxt_cb)(void),
+ void (*update_ctxt_cb)(void *ctxt))
{
info->bits = bits;
info->ctxt_shift = ilog2(asid_per_ctxt);
info->flush_cpu_ctxt_cb = flush_cpu_ctxt_cb;
+ info->update_ctxt_cb = update_ctxt_cb;
/*
* Expect allocation after rollover to fail if we don't have at least
* one more ASID than CPUs. ASID #0 is always reserved.
diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c
index b745cf356fe1..527ea82983d7 100644
--- a/arch/arm64/mm/context.c
+++ b/arch/arm64/mm/context.c
@@ -82,7 +82,7 @@ void check_and_switch_context(struct mm_struct *mm, unsigned int cpu)
if (system_supports_cnp())
cpu_set_reserved_ttbr0();
- asid_check_context(&asid_info, &mm->context.id, cpu);
+ asid_check_context(&asid_info, &mm->context.id, cpu, mm);
arm64_apply_bp_hardening();
@@ -108,12 +108,17 @@ static void asid_flush_cpu_ctxt(void)
local_flush_tlb_all();
}
+static void asid_update_ctxt(void *ctxt)
+{
+ /* Nothing to do */
+}
+
static int asids_init(void)
{
u32 bits = get_cpu_asid_bits();
- if (!asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT,
- asid_flush_cpu_ctxt))
+ if (asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT,
+ asid_flush_cpu_ctxt, asid_update_ctxt))
panic("Unable to initialize ASID allocator for %lu ASIDs\n",
NUM_ASIDS(&asid_info));
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* Re: [PATCH] watchdog: wdat_wdt: Convert to use SPDX identifier
From: Guenter Roeck @ 2019-06-20 13:10 UTC (permalink / raw)
To: Mika Westerberg, Wim Van Sebroeck; +Cc: linux-watchdog
In-Reply-To: <20190620092213.4551-1-mika.westerberg@linux.intel.com>
On 6/20/19 2:22 AM, Mika Westerberg wrote:
> This gets rid of the unnecessary license boilerplate.
>
> No functional changes intended.
>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
> ---
> drivers/watchdog/wdat_wdt.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c
> index 430ee4e9b185..476f79ccb6cf 100644
> --- a/drivers/watchdog/wdat_wdt.c
> +++ b/drivers/watchdog/wdat_wdt.c
> @@ -1,12 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0
> /*
> * ACPI Hardware Watchdog (WDAT) driver.
> *
> * Copyright (C) 2016, Intel Corporation
> * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> */
>
> #include <linux/acpi.h>
>
^ permalink raw reply
* [RFC v2 13/14] arm/kvm: Introduce a new VMID allocator
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Russell King, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
A follow-up patch will replace the KVM VMID allocator with the arm64 ASID
allocator.
To avoid as much as possible duplication, the arm KVM code will directly
compile arch/arm64/lib/asid.c. The header is a verbatim to copy to
avoid breaking the assumption that architecture port has self-containers
headers.
Signed-off-by: Julien Grall <julien.grall@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
---
I hit a warning when compiling the ASID code:
linux/arch/arm/kvm/../../arm64/lib/asid.c:17: warning: "ASID_MASK" redefined
#define ASID_MASK(info) (~GENMASK((info)->bits - 1, 0))
In file included from linux/include/linux/mm_types.h:18,
from linux/include/linux/mmzone.h:21,
from linux/include/linux/gfp.h:6,
from linux/include/linux/slab.h:15,
from linux/arch/arm/kvm/../../arm64/lib/asid.c:11:
linux/arch/arm/include/asm/mmu.h:26: note: this is the location of the previous definition
#define ASID_MASK ((~0ULL) << ASID_BITS)
I haven't yet resolved because I am not sure of the best way to go.
AFAICT ASID_MASK is only used in mm/context.c. So I am wondering whether
it would be acceptable to move the define.
Changes in v2:
- Re-use arm64/lib/asid.c rather than duplication the code.
---
arch/arm/include/asm/lib_asid.h | 81 +++++++++++++++++++++++++++++++++++++++++
arch/arm/kvm/Makefile | 1 +
2 files changed, 82 insertions(+)
create mode 100644 arch/arm/include/asm/lib_asid.h
diff --git a/arch/arm/include/asm/lib_asid.h b/arch/arm/include/asm/lib_asid.h
new file mode 100644
index 000000000000..79bce4686d21
--- /dev/null
+++ b/arch/arm/include/asm/lib_asid.h
@@ -0,0 +1,81 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ARM_LIB_ASID_H__
+#define __ARM_LIB_ASID_H__
+
+#include <linux/atomic.h>
+#include <linux/compiler.h>
+#include <linux/cpumask.h>
+#include <linux/percpu.h>
+#include <linux/spinlock.h>
+
+struct asid_info
+{
+ atomic64_t generation;
+ unsigned long *map;
+ atomic64_t __percpu *active;
+ u64 __percpu *reserved;
+ u32 bits;
+ /* Lock protecting the structure */
+ raw_spinlock_t lock;
+ /* Which CPU requires context flush on next call */
+ cpumask_t flush_pending;
+ /* Number of ASID allocated by context (shift value) */
+ unsigned int ctxt_shift;
+ /* Callback to locally flush the context. */
+ void (*flush_cpu_ctxt_cb)(void);
+ /* Callback to call when a context is updated */
+ void (*update_ctxt_cb)(void *ctxt);
+};
+
+#define NUM_ASIDS(info) (1UL << ((info)->bits))
+#define NUM_CTXT_ASIDS(info) (NUM_ASIDS(info) >> (info)->ctxt_shift)
+
+#define active_asid(info, cpu) *per_cpu_ptr((info)->active, cpu)
+
+void asid_new_context(struct asid_info *info, atomic64_t *pasid,
+ unsigned int cpu, void *ctxt);
+
+/*
+ * Check the ASID is still valid for the context. If not generate a new ASID.
+ *
+ * @pasid: Pointer to the current ASID batch
+ * @cpu: current CPU ID. Must have been acquired throught get_cpu()
+ */
+static inline void asid_check_context(struct asid_info *info,
+ atomic64_t *pasid, unsigned int cpu,
+ void *ctxt)
+{
+ u64 asid, old_active_asid;
+
+ asid = atomic64_read(pasid);
+
+ /*
+ * The memory ordering here is subtle.
+ * If our active_asid is non-zero and the ASID matches the current
+ * generation, then we update the active_asid entry with a relaxed
+ * cmpxchg. Racing with a concurrent rollover means that either:
+ *
+ * - We get a zero back from the cmpxchg and end up waiting on the
+ * lock. Taking the lock synchronises with the rollover and so
+ * we are forced to see the updated generation.
+ *
+ * - We get a valid ASID back from the cmpxchg, which means the
+ * relaxed xchg in flush_context will treat us as reserved
+ * because atomic RmWs are totally ordered for a given location.
+ */
+ old_active_asid = atomic64_read(&active_asid(info, cpu));
+ if (old_active_asid &&
+ !((asid ^ atomic64_read(&info->generation)) >> info->bits) &&
+ atomic64_cmpxchg_relaxed(&active_asid(info, cpu),
+ old_active_asid, asid))
+ return;
+
+ asid_new_context(info, pasid, cpu, ctxt);
+}
+
+int asid_allocator_init(struct asid_info *info,
+ u32 bits, unsigned int asid_per_ctxt,
+ void (*flush_cpu_ctxt_cb)(void),
+ void (*update_ctxt_cb)(void *ctxt));
+
+#endif /* __ARM_LIB_ASID_H__ */
diff --git a/arch/arm/kvm/Makefile b/arch/arm/kvm/Makefile
index 531e59f5be9c..6ab49bd84531 100644
--- a/arch/arm/kvm/Makefile
+++ b/arch/arm/kvm/Makefile
@@ -40,3 +40,4 @@ obj-y += $(KVM)/arm/vgic/vgic-its.o
obj-y += $(KVM)/arm/vgic/vgic-debug.o
obj-y += $(KVM)/irqchip.o
obj-y += $(KVM)/arm/arch_timer.o
+obj-y += ../../arm64/lib/asid.o
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* Re: [PATCH 1/2] auxdisplay/cfag12864bfb.c: Convert to use vm_map_pages_zero()
From: Miguel Ojeda @ 2019-06-20 13:10 UTC (permalink / raw)
To: Souptick Joarder; +Cc: linux-kernel, Matthew Wilcox
In-Reply-To: <1558887028-4026-1-git-send-email-jrdr.linux@gmail.com>
On Sun, May 26, 2019 at 6:05 PM Souptick Joarder <jrdr.linux@gmail.com> wrote:
>
> While using mmap, the incorrect values of length and vm_pgoff are
> ignored and this driver goes ahead with mapping cfag12864b_buffer
> to user vma.
>
> Convert vm_insert_pages() to use vm_map_pages_zero(). We could later
> "fix" these drivers to behave according to the normal vm_pgoff
> offsetting simply by removing the _zero suffix on the function name and
> if that causes regressions, it gives us an easy way to revert.
>
> Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
> ---
> v2: Fixed minor typo.
Almost forgot about these two -- picking both v2s for a PR later. Not
sure what happened with the mm/ related one I sent, is it in Andrew's
tree?
Cheers,
Miguel
^ permalink raw reply
* [RFC v2 14/14] kvm/arm: Align the VMID allocation with the arm64 ASID one
From: Julien Grall @ 2019-06-20 13:06 UTC (permalink / raw)
To: linux-kernel, linux-arm-kernel, kvmarm
Cc: suzuki.poulose, marc.zyngier, catalin.marinas, julien.thierry,
will.deacon, Julien Grall, james.morse
In-Reply-To: <20190620130608.17230-1-julien.grall@arm.com>
At the moment, the VMID algorithm will send an SGI to all the CPUs to
force an exit and then broadcast a full TLB flush and I-Cache
invalidation.
This patch re-use the new ASID allocator. The
benefits are:
- CPUs are not forced to exit at roll-over. Instead the VMID will be
marked reserved and the context will be flushed at next exit. This
will reduce the IPIs traffic.
- Context invalidation is now per-CPU rather than broadcasted.
With the new algo, the code is now adapted:
- The function __kvm_flush_vm_context() has been renamed to
__kvm_flush_cpu_vmid_context and now only flushing the current CPU context.
- The call to update_vttbr() will be done with preemption disabled
as the new algo requires to store information per-CPU.
- The TLBs associated to EL1 will be flushed when booting a CPU to
deal with stale information. This was previously done on the
allocation of the first VMID of a new generation.
The measurement was made on a Seattle based SoC (8 CPUs), with the
number of VMID limited to 4-bit. The test involves running concurrently 40
guests with 2 vCPUs. Each guest will then execute hackbench 5 times
before exiting.
The performance difference between the current algo and the new one are:
- 2.5% less exit from the guest
- 22.4% more flush, although they are now local rather than
broadcasted
- 0.11% faster (just for the record)
Signed-off-by: Julien Grall <julien.grall@arm.com>
----
Looking at the __kvm_flush_vm_context, it might be possible to
reduce more the overhead by removing the I-Cache flush for other
cache than VIPT. This has been left aside for now.
---
arch/arm/include/asm/kvm_asm.h | 2 +-
arch/arm/include/asm/kvm_host.h | 5 +-
arch/arm/include/asm/kvm_hyp.h | 1 +
arch/arm/kvm/hyp/tlb.c | 8 +--
arch/arm64/include/asm/kvm_asid.h | 8 +++
arch/arm64/include/asm/kvm_asm.h | 2 +-
arch/arm64/include/asm/kvm_host.h | 5 +-
arch/arm64/kvm/hyp/tlb.c | 10 ++--
virt/kvm/arm/arm.c | 112 +++++++++++++-------------------------
9 files changed, 61 insertions(+), 92 deletions(-)
create mode 100644 arch/arm64/include/asm/kvm_asid.h
diff --git a/arch/arm/include/asm/kvm_asm.h b/arch/arm/include/asm/kvm_asm.h
index f615830f9f57..c2a2e6ef1e2f 100644
--- a/arch/arm/include/asm/kvm_asm.h
+++ b/arch/arm/include/asm/kvm_asm.h
@@ -53,7 +53,7 @@ struct kvm_vcpu;
extern char __kvm_hyp_init[];
extern char __kvm_hyp_init_end[];
-extern void __kvm_flush_vm_context(void);
+extern void __kvm_flush_cpu_vmid_context(void);
extern void __kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa);
extern void __kvm_tlb_flush_vmid(struct kvm *kvm);
extern void __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu);
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index f80418ddeb60..7b894ff16688 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -50,8 +50,8 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
void kvm_reset_coprocs(struct kvm_vcpu *vcpu);
struct kvm_vmid {
- /* The VMID generation used for the virt. memory system */
- u64 vmid_gen;
+ /* The ASID used for the ASID allocator */
+ atomic64_t asid;
u32 vmid;
};
@@ -259,7 +259,6 @@ unsigned long __kvm_call_hyp(void *hypfn, ...);
ret; \
})
-void force_vm_exit(const cpumask_t *mask);
int __kvm_arm_vcpu_get_events(struct kvm_vcpu *vcpu,
struct kvm_vcpu_events *events);
diff --git a/arch/arm/include/asm/kvm_hyp.h b/arch/arm/include/asm/kvm_hyp.h
index 87bcd18df8d5..c3d1011ca1bf 100644
--- a/arch/arm/include/asm/kvm_hyp.h
+++ b/arch/arm/include/asm/kvm_hyp.h
@@ -75,6 +75,7 @@
#define TLBIALLIS __ACCESS_CP15(c8, 0, c3, 0)
#define TLBIALL __ACCESS_CP15(c8, 0, c7, 0)
#define TLBIALLNSNHIS __ACCESS_CP15(c8, 4, c3, 4)
+#define TLBIALLNSNH __ACCESS_CP15(c8, 4, c7, 4)
#define PRRR __ACCESS_CP15(c10, 0, c2, 0)
#define NMRR __ACCESS_CP15(c10, 0, c2, 1)
#define AMAIR0 __ACCESS_CP15(c10, 0, c3, 0)
diff --git a/arch/arm/kvm/hyp/tlb.c b/arch/arm/kvm/hyp/tlb.c
index 8e4afba73635..42b9ab47fc94 100644
--- a/arch/arm/kvm/hyp/tlb.c
+++ b/arch/arm/kvm/hyp/tlb.c
@@ -71,9 +71,9 @@ void __hyp_text __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu)
write_sysreg(0, VTTBR);
}
-void __hyp_text __kvm_flush_vm_context(void)
+void __hyp_text __kvm_flush_cpu_vmid_context(void)
{
- write_sysreg(0, TLBIALLNSNHIS);
- write_sysreg(0, ICIALLUIS);
- dsb(ish);
+ write_sysreg(0, TLBIALLNSNH);
+ write_sysreg(0, ICIALLU);
+ dsb(nsh);
}
diff --git a/arch/arm64/include/asm/kvm_asid.h b/arch/arm64/include/asm/kvm_asid.h
new file mode 100644
index 000000000000..8b586e43c094
--- /dev/null
+++ b/arch/arm64/include/asm/kvm_asid.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ARM64_KVM_ASID_H__
+#define __ARM64_KVM_ASID_H__
+
+#include <asm/asid.h>
+
+#endif /* __ARM64_KVM_ASID_H__ */
+
diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
index ff73f5462aca..06821f548c0f 100644
--- a/arch/arm64/include/asm/kvm_asm.h
+++ b/arch/arm64/include/asm/kvm_asm.h
@@ -62,7 +62,7 @@ extern char __kvm_hyp_init_end[];
extern char __kvm_hyp_vector[];
-extern void __kvm_flush_vm_context(void);
+extern void __kvm_flush_cpu_vmid_context(void);
extern void __kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa);
extern void __kvm_tlb_flush_vmid(struct kvm *kvm);
extern void __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu);
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 4bcd9c1291d5..7ef45b7da4eb 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -68,8 +68,8 @@ int kvm_arch_vm_ioctl_check_extension(struct kvm *kvm, long ext);
void __extended_idmap_trampoline(phys_addr_t boot_pgd, phys_addr_t idmap_start);
struct kvm_vmid {
- /* The VMID generation used for the virt. memory system */
- u64 vmid_gen;
+ /* The ASID used for the ASID allocator */
+ atomic64_t asid;
u32 vmid;
};
@@ -478,7 +478,6 @@ u64 __kvm_call_hyp(void *hypfn, ...);
ret; \
})
-void force_vm_exit(const cpumask_t *mask);
void kvm_mmu_wp_memory_region(struct kvm *kvm, int slot);
int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run,
diff --git a/arch/arm64/kvm/hyp/tlb.c b/arch/arm64/kvm/hyp/tlb.c
index 76c30866069e..e80e922988c1 100644
--- a/arch/arm64/kvm/hyp/tlb.c
+++ b/arch/arm64/kvm/hyp/tlb.c
@@ -200,10 +200,10 @@ void __hyp_text __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu)
__tlb_switch_to_host()(kvm, &cxt);
}
-void __hyp_text __kvm_flush_vm_context(void)
+void __hyp_text __kvm_flush_cpu_vmid_context(void)
{
- dsb(ishst);
- __tlbi(alle1is);
- asm volatile("ic ialluis" : : );
- dsb(ish);
+ dsb(nshst);
+ __tlbi(alle1);
+ asm volatile("ic iallu" : : );
+ dsb(nsh);
}
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c
index bd5c55916d0d..e906278a67cd 100644
--- a/virt/kvm/arm/arm.c
+++ b/virt/kvm/arm/arm.c
@@ -32,6 +32,7 @@
#include <asm/tlbflush.h>
#include <asm/cacheflush.h>
#include <asm/cpufeature.h>
+#include <asm/lib_asid.h>
#include <asm/virt.h>
#include <asm/kvm_arm.h>
#include <asm/kvm_asm.h>
@@ -50,10 +51,10 @@ static DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page);
/* Per-CPU variable containing the currently running vcpu. */
static DEFINE_PER_CPU(struct kvm_vcpu *, kvm_arm_running_vcpu);
-/* The VMID used in the VTTBR */
-static atomic64_t kvm_vmid_gen = ATOMIC64_INIT(1);
-static u32 kvm_next_vmid;
-static DEFINE_SPINLOCK(kvm_vmid_lock);
+static DEFINE_PER_CPU(atomic64_t, active_vmids);
+static DEFINE_PER_CPU(u64, reserved_vmids);
+
+struct asid_info vmid_info;
static bool vgic_present;
@@ -128,9 +129,6 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
kvm_vgic_early_init(kvm);
- /* Mark the initial VMID generation invalid */
- kvm->arch.vmid.vmid_gen = 0;
-
/* The maximum number of VCPUs is limited by the host's GIC model */
kvm->arch.max_vcpus = vgic_present ?
kvm_vgic_get_max_vcpus() : KVM_MAX_VCPUS;
@@ -449,35 +447,17 @@ bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu)
return vcpu_mode_priv(vcpu);
}
-/* Just ensure a guest exit from a particular CPU */
-static void exit_vm_noop(void *info)
+static void vmid_flush_cpu_ctxt(void)
{
+ kvm_call_hyp(__kvm_flush_cpu_vmid_context);
}
-void force_vm_exit(const cpumask_t *mask)
+static void vmid_update_ctxt(void *ctxt)
{
- preempt_disable();
- smp_call_function_many(mask, exit_vm_noop, NULL, true);
- preempt_enable();
-}
+ struct kvm_vmid *vmid = ctxt;
+ u64 asid = atomic64_read(&vmid->asid);
-/**
- * need_new_vmid_gen - check that the VMID is still valid
- * @vmid: The VMID to check
- *
- * return true if there is a new generation of VMIDs being used
- *
- * The hardware supports a limited set of values with the value zero reserved
- * for the host, so we check if an assigned value belongs to a previous
- * generation, which which requires us to assign a new value. If we're the
- * first to use a VMID for the new generation, we must flush necessary caches
- * and TLBs on all CPUs.
- */
-static bool need_new_vmid_gen(struct kvm_vmid *vmid)
-{
- u64 current_vmid_gen = atomic64_read(&kvm_vmid_gen);
- smp_rmb(); /* Orders read of kvm_vmid_gen and kvm->arch.vmid */
- return unlikely(READ_ONCE(vmid->vmid_gen) != current_vmid_gen);
+ vmid->vmid = asid & ((1ULL << kvm_get_vmid_bits()) - 1);
}
/**
@@ -487,48 +467,11 @@ static bool need_new_vmid_gen(struct kvm_vmid *vmid)
*/
static void update_vmid(struct kvm_vmid *vmid)
{
- if (!need_new_vmid_gen(vmid))
- return;
-
- spin_lock(&kvm_vmid_lock);
-
- /*
- * We need to re-check the vmid_gen here to ensure that if another vcpu
- * already allocated a valid vmid for this vm, then this vcpu should
- * use the same vmid.
- */
- if (!need_new_vmid_gen(vmid)) {
- spin_unlock(&kvm_vmid_lock);
- return;
- }
-
- /* First user of a new VMID generation? */
- if (unlikely(kvm_next_vmid == 0)) {
- atomic64_inc(&kvm_vmid_gen);
- kvm_next_vmid = 1;
-
- /*
- * On SMP we know no other CPUs can use this CPU's or each
- * other's VMID after force_vm_exit returns since the
- * kvm_vmid_lock blocks them from reentry to the guest.
- */
- force_vm_exit(cpu_all_mask);
- /*
- * Now broadcast TLB + ICACHE invalidation over the inner
- * shareable domain to make sure all data structures are
- * clean.
- */
- kvm_call_hyp(__kvm_flush_vm_context);
- }
+ int cpu = get_cpu();
- vmid->vmid = kvm_next_vmid;
- kvm_next_vmid++;
- kvm_next_vmid &= (1 << kvm_get_vmid_bits()) - 1;
+ asid_check_context(&vmid_info, &vmid->asid, cpu, vmid);
- smp_wmb();
- WRITE_ONCE(vmid->vmid_gen, atomic64_read(&kvm_vmid_gen));
-
- spin_unlock(&kvm_vmid_lock);
+ put_cpu();
}
static int kvm_vcpu_first_run_init(struct kvm_vcpu *vcpu)
@@ -682,8 +625,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
*/
cond_resched();
- update_vmid(&vcpu->kvm->arch.vmid);
-
check_vcpu_requests(vcpu);
/*
@@ -693,6 +634,15 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
*/
preempt_disable();
+ /*
+ * The ASID/VMID allocator only tracks active VMIDs per
+ * physical CPU, and therefore the VMID allocated may not be
+ * preserved on VMID roll-over if the task was preempted,
+ * making a thread's VMID inactive. So we need to call
+ * update_vttbr in non-premptible context.
+ */
+ update_vmid(&vcpu->kvm->arch.vmid);
+
kvm_pmu_flush_hwstate(vcpu);
local_irq_disable();
@@ -731,8 +681,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
*/
smp_store_mb(vcpu->mode, IN_GUEST_MODE);
- if (ret <= 0 || need_new_vmid_gen(&vcpu->kvm->arch.vmid) ||
- kvm_request_pending(vcpu)) {
+ if (ret <= 0 || kvm_request_pending(vcpu)) {
vcpu->mode = OUTSIDE_GUEST_MODE;
isb(); /* Ensure work in x_flush_hwstate is committed */
kvm_pmu_sync_hwstate(vcpu);
@@ -1322,6 +1271,8 @@ static void cpu_init_hyp_mode(void *dummy)
__cpu_init_hyp_mode(pgd_ptr, hyp_stack_ptr, vector_ptr);
__cpu_init_stage2();
+
+ kvm_call_hyp(__kvm_flush_cpu_vmid_context);
}
static void cpu_hyp_reset(void)
@@ -1429,6 +1380,17 @@ static inline void hyp_cpu_pm_exit(void)
static int init_common_resources(void)
{
+ /*
+ * Initialize the ASID allocator telling it to allocate a single
+ * VMID per VM.
+ */
+ if (asid_allocator_init(&vmid_info, kvm_get_vmid_bits(), 1,
+ vmid_flush_cpu_ctxt, vmid_update_ctxt))
+ panic("Failed to initialize VMID allocator\n");
+
+ vmid_info.active = &active_vmids;
+ vmid_info.reserved = &reserved_vmids;
+
kvm_set_ipa_limit();
return 0;
--
2.11.0
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* [MPTCP] [PATCH] mptcp: fix remaining checkpatch issue
From: Matthieu Baerts @ 2019-06-20 13:11 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 887 bytes --]
A typo (with 'length') was introduced when fixing another issue.
Fixes: 233967ed7653 (mptcp: fix checkpatch issues)
Signed-off-by: Matthieu Baerts <matthieu.baerts(a)tessares.net>
---
Notes:
Can be squashed in:
mptcp: Write MPTCP DSS headers to outgoing data packets
net/mptcp/options.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 625cd93fb9a8..532482bbbc2a 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -241,7 +241,7 @@ static bool mptcp_established_options_dss(struct sock *sk, struct sk_buff *skb,
if (mpext && mpext->use_ack) {
ack_size = TCPOLEN_MPTCP_DSS_ACK64;
- /* Add kind/lenght/subtype/flag overhead if mapping is not
+ /* Add kind/length/subtype/flag overhead if mapping is not
* populated
*/
if (dss_size == 0)
--
2.20.1
^ permalink raw reply related
* Re: [master/thud/ti2019.01][PATCH] tisdk-server-rootfs-image: remove ubi/ubifs freom IMAGE_FSTYPES
From: Jacob Stiffler @ 2019-06-20 13:10 UTC (permalink / raw)
To: meta-arago
In-Reply-To: <1560859950-12071-1-git-send-email-j-stiffler@ti.com>
Denys,
Can you please back-port this to ti2019.01?
Thank you,
Jake
On 6/18/2019 8:12 AM, Jacob Stiffler wrote:
> * The tisdk-server-rootfs-image size has exceeded HW limitations so
> remove ubi/ubifs from IMAGE_FSTYPES.
> * Remove the tisdk-server-extra-rootfs-image as this was the original
> intent of that image.
>
> Signed-off-by: Jacob Stiffler <j-stiffler@ti.com>
> ---
> .../recipes-core/images/arago-core-tisdk-image.inc | 6 +++---
> .../recipes-core/images/tisdk-server-extra-rootfs-image.bb | 13 -------------
> .../recipes-core/images/tisdk-server-rootfs-image.bb | 8 ++++++++
> 3 files changed, 11 insertions(+), 16 deletions(-)
> delete mode 100644 meta-arago-distro/recipes-core/images/tisdk-server-extra-rootfs-image.bb
>
> diff --git a/meta-arago-distro/recipes-core/images/arago-core-tisdk-image.inc b/meta-arago-distro/recipes-core/images/arago-core-tisdk-image.inc
> index 45a8c1b..0125bb5 100644
> --- a/meta-arago-distro/recipes-core/images/arago-core-tisdk-image.inc
> +++ b/meta-arago-distro/recipes-core/images/arago-core-tisdk-image.inc
> @@ -38,9 +38,9 @@ TARGET_IMAGES = "arago-base-tisdk-image tisdk-rootfs-image arago-tiny-image"
> TARGET_IMAGES_append_dra7xx-evm = " netboot-initrd"
>
> # Some devices do not support display and use a server image instead
> -TARGET_IMAGES_keystone = "arago-base-tisdk-image tisdk-server-rootfs-image tisdk-server-extra-rootfs-image arago-tiny-image"
> -TARGET_IMAGES_omapl138 = "arago-base-tisdk-image tisdk-server-rootfs-image tisdk-server-extra-rootfs-image arago-tiny-image"
> -TARGET_IMAGES_j7-evm = "arago-base-tisdk-image tisdk-server-rootfs-image tisdk-server-extra-rootfs-image arago-tiny-image"
> +TARGET_IMAGES_keystone = "arago-base-tisdk-image tisdk-server-rootfs-image arago-tiny-image"
> +TARGET_IMAGES_omapl138 = "arago-base-tisdk-image tisdk-server-rootfs-image arago-tiny-image"
> +TARGET_IMAGES_j7-evm = "arago-base-tisdk-image tisdk-server-rootfs-image arago-tiny-image"
>
> TISDK_TOOLCHAIN = "meta-toolchain-arago-tisdk"
> TOOLCHAIN_SUFFIX = "-tisdk"
> diff --git a/meta-arago-distro/recipes-core/images/tisdk-server-extra-rootfs-image.bb b/meta-arago-distro/recipes-core/images/tisdk-server-extra-rootfs-image.bb
> deleted file mode 100644
> index 359dc90..0000000
> --- a/meta-arago-distro/recipes-core/images/tisdk-server-extra-rootfs-image.bb
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -require recipes-core/images/tisdk-server-rootfs-image.bb
> -
> -IMAGE_INSTALL += "\
> - packagegroup-arago-test-addons \
> - packagegroup-arago-tisdk-addons-extra \
> - ${@bb.utils.contains('MACHINE_FEATURES','dsp','packagegroup-arago-tisdk-opencl-extra','',d)} \
> - packagegroup-arago-tisdk-multimedia \
> - packagegroup-arago-tisdk-matrix-extra \
> -"
> -
> -export IMAGE_BASENAME = "tisdk-server-extra-rootfs-image"
> -
> -IMAGE_FSTYPES = "tar.xz"
> diff --git a/meta-arago-distro/recipes-core/images/tisdk-server-rootfs-image.bb b/meta-arago-distro/recipes-core/images/tisdk-server-rootfs-image.bb
> index b64d092..09d9f9d 100644
> --- a/meta-arago-distro/recipes-core/images/tisdk-server-rootfs-image.bb
> +++ b/meta-arago-distro/recipes-core/images/tisdk-server-rootfs-image.bb
> @@ -6,11 +6,19 @@ SPLASH = ""
>
> IMAGE_INSTALL += "\
> packagegroup-arago-tisdk-addons \
> + packagegroup-arago-tisdk-addons-extra \
> ${@bb.utils.contains('MACHINE_FEATURES','dsp','packagegroup-arago-tisdk-opencl','',d)} \
> + ${@bb.utils.contains('MACHINE_FEATURES','dsp','packagegroup-arago-tisdk-opencl-extra','',d)} \
> packagegroup-arago-tisdk-crypto \
> + packagegroup-arago-tisdk-multimedia \
> packagegroup-arago-tisdk-matrix \
> + packagegroup-arago-tisdk-matrix-extra \
> packagegroup-arago-base-tisdk-server-extra \
> packagegroup-arago-tisdk-connectivity \
> "
>
> export IMAGE_BASENAME = "tisdk-server-rootfs-image"
> +
> +# Disable ubi/ubifs as the filesystem requires more space than is
> +# available on the HW.
> +IMAGE_FSTYPES_remove = "ubifs ubi"
^ permalink raw reply
* [U-Boot] [nand] [ubi] Discrepancy Between U-Boot and Linux NAND PEBs
From: Ken Sloat @ 2019-06-20 12:55 UTC (permalink / raw)
Cc: Ken Sloat, kmpark@infradead.org, tudor.ambarus@microchip.com,
oss@buserror.net, u-boot@lists.denx.de,
linux-mtd@lists.infradead.org, hs@denx.de
Hello All,
I have been working on a system using a NAND flash along with U-Boot 2018.07 and Linux Kernel 4.14. This is an Atmel based system FYI so it uses the Atmel NAND driver. I create a UBI image with 3 separate volumes - 2 of these are a specified fixed size and the third is specified as the minimum needed to hold the current files with the auto resize flag set. As a note, before the first run auto resize operation, there is over 200 MiB of unused space in the NAND - meaning there should be plenty of free space available for UBI to leave overhead when auto-resizing for bad block handling. Another point of note, is that I use UBI within U-Boot as well in order to read the kernel image and dtb out of the UBIFS.
I have noticed warnings in Linux when attaching UBI regarding not having enough reserved PEBs for bad block handling (it's short by 2). Upon further investigation into the issue, it appears as though there is a discrepancy between what U-Boot and Linux see in terms of the number of bad blocks:
U-Boot:
ubi0: good PEBs: 4093, bad PEBs: 3, corrupted PEBs: 0
ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
Linux:
ubi0 warning: ubi_eba_init: cannot reserve enough PEBs for bad PEB handling, reserved 71, need 73
......
ubi0: good PEBs: 4089, bad PEBs: 7, corrupted PEBs: 0
ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
After production flashing of a UBI image to NAND (with a "dumb" non UBI aware flasher), U-Boot will be the program to mount UBI. What this means is that it will complete the one time re-size operation. I used a Linux ramdisk image to flash from Linux and mount UBI in Linux for the first time to allow it to complete the auto-resize operation instead and compared:
U-Boot:
ubi0: attaching mtd1
ubi0: scanning is finished
ubi0: volume 1 ("rootfs") re-sized from 1501 to 3385 LEBs
ubi0: attached mtd1 (name "mtd=0", size 512 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 4093, bad PEBs: 3, corrupted PEBs: 0
Linux:
ubi0: attaching mtd6
ubi0: scanning is finished
ubi0: volume 1 ("rootfs") re-sized from 1501 to 3383 LEBs
ubi0: attached mtd6 (name "atmel_nand", size 512 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 4089, bad PEBs: 7, corrupted PEBs: 0
As you can see, U-Boot resizes the image to 3385 blocks while Linux only 3383 - hence the 2 blocks that Linux would complain about had U-Boot resized the volume.
I am not sure exactly what is causing this discrepancy as I just figured this out - but thought I would reach out and discuss it here. Obviously there are ways around this issue (program and mount UBI from Linux initially, don't use autoresize and specify all volume sizes, etc) but was wondering if there is some underlying problem. I noticed an older mailing discussion from several years ago where someone reported a similar issue regarding number of bad PEBs and seems the issue was chalked up to a potential driver problem on one side:
https://lists.denx.de/pipermail/u-boot/2015-June/216482.html
Any insight would be helpful.
Thanks,
Ken Sloat
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply
* Re: [igt-dev] [PATCH i-g-t v2] Add Arm drivers as supported drivers by igt.
From: Daniel Vetter @ 2019-06-20 13:12 UTC (permalink / raw)
To: Liviu Dudau; +Cc: IGT GPU Tool, Petri Latvala, Daniel Vetter
In-Reply-To: <20190620124121.GH17204@e110455-lin.cambridge.arm.com>
On Thu, Jun 20, 2019 at 01:41:21PM +0100, Liviu Dudau wrote:
> On Thu, Jun 20, 2019 at 02:36:32PM +0200, Daniel Vetter wrote:
> > On Wed, Jun 19, 2019 at 04:13:58PM +0100, Liviu Dudau wrote:
> > > Add the drivers maintained by Arm developers to the igt.
> > >
> > > v2: Order the modules array entries alphabetically, as per
> > > Petri Latvala's suggestion.
> > >
> > > Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
> >
> > Still kinda wondering why you need this here ... kms is supposed to be
> > hw/driver agnostic, so DRIVER_ANY should work.
>
> I'm looking at adding writeback scaling tests that not all drivers are going to
> support from the start, so I thought it is better to have a more specific
> driver that I can target, even if the DRM APIs are generic.
Yeah, but for that test I'd still expect you want to open DRIVER_ANY, then
check there's writeback, and then check for scaling (using TEST_ONLY
maybe). At least for some of the more generic ones.
You can always then add even more malidp/komeda specific tests with an
igt_require(is_malid(fd)) on top for some subtests. But imo the basic igt
should be generic, otherwise the entire idea of kms as being something
cross vendor/driver is out of the window.
Hence why I think this is totally the wrong direction here. What might be
good is some helper which gets the drm driver name and compares it to what
you need, i.e. igt_drmtest_require_driver(fd, "malidp");
-Daniel
>
> Best regards,
> Liviu
>
> >
> > Maybe you want to check specific constraints in your tests, but then we
> > need something like igt_require(is_komeda_driver(fd)); which can inspect
> > what you're actually running on when the test executes.
> >
> > The drivers in this list thus far are all about exercising the gem side of
> > things, where you _really_ don't want to open random garbage. Because the
> > ioctls aren't even defined.
> >
> > On kms all ioctls are cross-driver, and only once you've opened something
> > does it make sense to check for features and stuff (looking at properties,
> > or getcap flags, or whatever).
> >
> > Cheers, Daniel
> >
> > PS: Yes I know that some of the DRIVER_I915 | DRIVER_AMDGPU tests really
> > should have been converted to DRIVER_ANY instead. I didn't catch that in
> > review way back, but I think I explained to Harry et al meanwhile ...
> >
> > > ---
> > > lib/drmtest.c | 3 +++
> > > lib/drmtest.h | 4 ++++
> > > 2 files changed, 7 insertions(+)
> > >
> > > diff --git a/lib/drmtest.c b/lib/drmtest.c
> > > index 25f203530..17bb87d1f 100644
> > > --- a/lib/drmtest.c
> > > +++ b/lib/drmtest.c
> > > @@ -205,7 +205,10 @@ static const struct module {
> > > void (*modprobe)(const char *name);
> > > } modules[] = {
> > > { DRIVER_AMDGPU, "amdgpu" },
> > > + { DRIVER_HDLCD, "hdlcd" },
> > > { DRIVER_INTEL, "i915", modprobe_i915 },
> > > + { DRIVER_KOMEDA, "komeda" },
> > > + { DRIVER_MALIDP, "mali_dp" },
> > > { DRIVER_PANFROST, "panfrost" },
> > > { DRIVER_V3D, "v3d" },
> > > { DRIVER_VC4, "vc4" },
> > > diff --git a/lib/drmtest.h b/lib/drmtest.h
> > > index 6c4c3899c..952f0c4b6 100644
> > > --- a/lib/drmtest.h
> > > +++ b/lib/drmtest.h
> > > @@ -45,6 +45,10 @@
> > > #define DRIVER_AMDGPU (1 << 4)
> > > #define DRIVER_V3D (1 << 5)
> > > #define DRIVER_PANFROST (1 << 6)
> > > +#define DRIVER_HDLCD (1 << 7)
> > > +#define DRIVER_MALIDP (1 << 8)
> > > +#define DRIVER_KOMEDA (1 << 9)
> > > +
> > > /*
> > > * Exclude DRVER_VGEM from DRIVER_ANY since if you run on a system
> > > * with vgem as well as a supported driver, you can end up with a
> > > --
> > > 2.22.0
> > >
> > > _______________________________________________
> > > igt-dev mailing list
> > > igt-dev@lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/igt-dev
> >
> > --
> > Daniel Vetter
> > Software Engineer, Intel Corporation
> > http://blog.ffwll.ch
>
> --
> ====================
> | I would like to |
> | fix the world, |
> | but they're not |
> | giving me the |
> \ source code! /
> ---------------
> ¯\_(ツ)_/¯
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply
* next/master build: 230 builds: 45 failed, 185 passed, 92 errors, 507 warnings (next-20190620)
From: kernelci.org bot @ 2019-06-20 13:12 UTC (permalink / raw)
To: linux-next
next/master build: 230 builds: 45 failed, 185 passed, 92 errors, 507 warnings (next-20190620)
Full Build Summary: https://kernelci.org/build/next/branch/master/kernel/next-20190620/
Tree: next
Branch: master
Git Describe: next-20190620
Git Commit: dc636f5d78de487ec493a9cc455c9eb595749470
Git URL: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
Built: 7 unique architectures
Build Failures Detected:
arc:
haps_hs_defconfig: (gcc-8) FAIL
haps_hs_smp_defconfig: (gcc-8) FAIL
nsim_hs_defconfig: (gcc-8) FAIL
nsim_hs_defconfig+kselftest: (gcc-8) FAIL
nsim_hs_smp_defconfig: (gcc-8) FAIL
nsimosci_hs_defconfig: (gcc-8) FAIL
nsimosci_hs_smp_defconfig: (gcc-8) FAIL
arm64:
allmodconfig: (clang-8) FAIL
defconfig: (clang-8) FAIL
defconfig+CONFIG_CPU_BIG_ENDIAN=y: (clang-8) FAIL
defconfig+CONFIG_RANDOMIZE_BASE=y: (clang-8) FAIL
defconfig+kselftest: (clang-8) FAIL
allmodconfig: (gcc-8) FAIL
defconfig: (gcc-8) FAIL
defconfig+CONFIG_CPU_BIG_ENDIAN=y: (gcc-8) FAIL
defconfig+CONFIG_RANDOMIZE_BASE=y: (gcc-8) FAIL
defconfig+kselftest: (gcc-8) FAIL
arm:
allmodconfig: (gcc-8) FAIL
bcm2835_defconfig: (gcc-8) FAIL
colibri_pxa270_defconfig: (gcc-8) FAIL
davinci_all_defconfig: (gcc-8) FAIL
imx_v4_v5_defconfig: (gcc-8) FAIL
imx_v6_v7_defconfig: (gcc-8) FAIL
jornada720_defconfig: (gcc-8) FAIL
keystone_defconfig: (gcc-8) FAIL
multi_v7_defconfig+kselftest: (gcc-8) FAIL
netwinder_defconfig: (gcc-8) FAIL
omap1_defconfig: (gcc-8) FAIL
omap2plus_defconfig: (gcc-8) FAIL
s3c2410_defconfig: (gcc-8) FAIL
trizeps4_defconfig: (gcc-8) FAIL
u8500_defconfig: (gcc-8) FAIL
xcep_defconfig: (gcc-8) FAIL
mips:
32r2el_defconfig: (gcc-8) FAIL
32r2el_defconfig+kselftest: (gcc-8) FAIL
bigsur_defconfig: (gcc-8) FAIL
db1xxx_defconfig: (gcc-8) FAIL
fuloong2e_defconfig: (gcc-8) FAIL
ip22_defconfig: (gcc-8) FAIL
jazz_defconfig: (gcc-8) FAIL
loongson3_defconfig: (gcc-8) FAIL
mpc30x_defconfig: (gcc-8) FAIL
msp71xx_defconfig: (gcc-8) FAIL
rm200_defconfig: (gcc-8) FAIL
riscv:
defconfig+kselftest: (gcc-8) FAIL
Errors and Warnings Detected:
arc:
haps_hs_defconfig (gcc-8): 2 errors
haps_hs_smp_defconfig (gcc-8): 2 errors
nsim_hs_defconfig (gcc-8): 2 errors
nsim_hs_defconfig (gcc-8): 2 errors, 1 warning
nsim_hs_smp_defconfig (gcc-8): 2 errors
nsimosci_hs_defconfig (gcc-8): 2 errors
nsimosci_hs_smp_defconfig (gcc-8): 2 errors
vdk_hs38_defconfig (gcc-8): 1 warning
vdk_hs38_smp_defconfig (gcc-8): 1 warning
arm64:
allmodconfig (clang-8): 47 warnings
allmodconfig (gcc-8): 1 warning
defconfig (clang-8): 4 errors, 44 warnings
defconfig (gcc-8): 2 errors, 1 warning
defconfig (gcc-8): 2 errors
defconfig (clang-8): 4 errors, 44 warnings
defconfig (gcc-8): 2 errors, 1 warning
defconfig (clang-8): 4 errors, 44 warnings
defconfig (clang-8): 4 errors, 44 warnings
defconfig (gcc-8): 2 errors, 2 warnings
arm:
allmodconfig (gcc-8): 2 errors, 16 warnings
aspeed_g4_defconfig (gcc-8): 1 warning
aspeed_g5_defconfig (gcc-8): 1 warning
bcm2835_defconfig (gcc-8): 2 errors, 1 warning
colibri_pxa270_defconfig (gcc-8): 2 errors, 1 warning
davinci_all_defconfig (gcc-8): 2 errors, 1 warning
imx_v4_v5_defconfig (gcc-8): 2 errors, 1 warning
imx_v6_v7_defconfig (gcc-8): 2 errors, 1 warning
integrator_defconfig (gcc-8): 2 warnings
jornada720_defconfig (gcc-8): 2 errors, 1 warning
keystone_defconfig (gcc-8): 2 errors, 1 warning
milbeaut_m10v_defconfig (gcc-8): 1 warning
multi_v4t_defconfig (gcc-8): 2 warnings
multi_v5_defconfig (gcc-8): 2 warnings
multi_v7_defconfig (gcc-8): 1 warning
multi_v7_defconfig (gcc-8): 1 warning
multi_v7_defconfig (gcc-8): 1 warning
multi_v7_defconfig (gcc-8): 2 errors, 2 warnings
netwinder_defconfig (gcc-8): 2 errors, 1 warning
omap1_defconfig (gcc-8): 2 errors, 1 warning
omap2plus_defconfig (gcc-8): 2 errors, 1 warning
oxnas_v6_defconfig (gcc-8): 1 warning
realview_defconfig (gcc-8): 2 warnings
s3c2410_defconfig (gcc-8): 2 errors, 1 warning
s3c6400_defconfig (gcc-8): 2 warnings
trizeps4_defconfig (gcc-8): 2 errors, 1 warning
u300_defconfig (gcc-8): 2 warnings
u8500_defconfig (gcc-8): 2 errors, 1 warning
xcep_defconfig (gcc-8): 1 error
i386:
i386_defconfig (gcc-8): 1 warning
i386_defconfig (gcc-8): 1 warning
mips:
32r2el_defconfig (gcc-8): 2 errors, 2 warnings
32r2el_defconfig (gcc-8): 2 errors, 3 warnings
allnoconfig (gcc-8): 1 warning
ar7_defconfig (gcc-8): 2 warnings
ath25_defconfig (gcc-8): 2 warnings
ath79_defconfig (gcc-8): 2 warnings
bcm47xx_defconfig (gcc-8): 2 warnings
bcm63xx_defconfig (gcc-8): 1 warning
bigsur_defconfig (gcc-8): 2 errors, 4 warnings
bmips_be_defconfig (gcc-8): 1 warning
bmips_stb_defconfig (gcc-8): 1 warning
capcella_defconfig (gcc-8): 2 warnings
cavium_octeon_defconfig (gcc-8): 6 warnings
ci20_defconfig (gcc-8): 1 warning
cobalt_defconfig (gcc-8): 2 warnings
db1xxx_defconfig (gcc-8): 2 errors, 2 warnings
decstation_64_defconfig (gcc-8): 6 warnings
decstation_defconfig (gcc-8): 2 warnings
decstation_r4k_defconfig (gcc-8): 2 warnings
e55_defconfig (gcc-8): 2 warnings
fuloong2e_defconfig (gcc-8): 2 errors, 4 warnings
gcw0_defconfig (gcc-8): 1 warning
gpr_defconfig (gcc-8): 2 warnings
ip22_defconfig (gcc-8): 2 errors, 2 warnings
ip27_defconfig (gcc-8): 6 warnings
ip28_defconfig (gcc-8): 6 warnings
ip32_defconfig (gcc-8): 6 warnings
jazz_defconfig (gcc-8): 2 errors, 2 warnings
jmr3927_defconfig (gcc-8): 1 warning
lasat_defconfig (gcc-8): 1 warning
lemote2f_defconfig (gcc-8): 6 warnings
loongson1b_defconfig (gcc-8): 2 warnings
loongson1c_defconfig (gcc-8): 2 warnings
loongson3_defconfig (gcc-8): 2 errors, 4 warnings
malta_defconfig (gcc-8): 2 warnings
malta_kvm_defconfig (gcc-8): 2 warnings
malta_kvm_guest_defconfig (gcc-8): 2 warnings
malta_qemu_32r6_defconfig (gcc-8): 4 warnings
maltaaprp_defconfig (gcc-8): 2 warnings
maltasmvp_defconfig (gcc-8): 2 warnings
maltasmvp_eva_defconfig (gcc-8): 2 warnings
maltaup_defconfig (gcc-8): 2 warnings
maltaup_xpa_defconfig (gcc-8): 2 warnings
markeins_defconfig (gcc-8): 2 warnings
mips_paravirt_defconfig (gcc-8): 6 warnings
mpc30x_defconfig (gcc-8): 1 error, 1 warning
msp71xx_defconfig (gcc-8): 2 errors, 2 warnings
mtx1_defconfig (gcc-8): 2 warnings
nlm_xlp_defconfig (gcc-8): 6 warnings
nlm_xlr_defconfig (gcc-8): 2 warnings
omega2p_defconfig (gcc-8): 1 warning
pic32mzda_defconfig (gcc-8): 2 warnings
pistachio_defconfig (gcc-8): 2 warnings
pnx8335_stb225_defconfig (gcc-8): 2 warnings
qi_lb60_defconfig (gcc-8): 2 warnings
rb532_defconfig (gcc-8): 3 warnings
rbtx49xx_defconfig (gcc-8): 2 warnings
rm200_defconfig (gcc-8): 2 errors, 2 warnings
rt305x_defconfig (gcc-8): 2 warnings
sb1250_swarm_defconfig (gcc-8): 4 warnings
tb0219_defconfig (gcc-8): 2 warnings
tb0226_defconfig (gcc-8): 2 warnings
tb0287_defconfig (gcc-8): 2 warnings
tinyconfig (gcc-8): 1 warning
vocore2_defconfig (gcc-8): 1 warning
workpad_defconfig (gcc-8): 2 warnings
xway_defconfig (gcc-8): 2 warnings
riscv:
defconfig (gcc-8): 2 errors, 1 warning
rv32_defconfig (gcc-8): 4 warnings
x86_64:
allmodconfig (gcc-8): 50 warnings
tinyconfig (gcc-8): 1 warning
x86_64_defconfig (gcc-8): 1 warning
x86_64_defconfig (gcc-8): 1 warning
Errors summary:
25 include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
25 include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
6 xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
6 arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
4 net/ipv6/netfilter.c:238:21: error: use of undeclared identifier '__cookie_v6_check'; did you mean '__cookie_v4_check'?
4 net/ipv6/netfilter.c:238:21: error: incompatible pointer types initializing 'int (*)(const struct ipv6hdr *, const struct tcphdr *, __u32)' (aka 'int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned int)') with an expression of type 'int (const struct iphdr *, const struct tcphdr *, u32)' (aka 'int (const struct iphdr *, const struct tcphdr *, unsigned int)') [-Werror,-Wincompatible-pointer-types]
4 net/ipv6/netfilter.c:237:26: error: use of undeclared identifier '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'?
4 net/ipv6/netfilter.c:237:26: error: incompatible pointer types initializing 'u32 (*)(const struct ipv6hdr *, const struct tcphdr *, u16 *)' (aka 'unsigned int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned short *)') with an expression of type '__u32 (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, __u16 *)' (aka 'unsigned int (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, unsigned short *)') [-Werror,-Wincompatible-pointer-types]
3 net/ipv6/netfilter.c:238:21: error: '__cookie_v6_check' undeclared here (not in a function); did you mean '__cookie_v4_check'?
3 net/ipv6/netfilter.c:237:26: error: '__cookie_v6_init_sequence' undeclared here (not in a function); did you mean 'cookie_init_sequence'?
2 include/linux/kprobes.h:477:9: error: implicit declaration of function 'kprobe_fault_handler'; did you mean 'kprobe_page_fault'? [-Werror=implicit-function-declaration]
1 xfrm_algo.c:(.text+0x344): undefined reference to `crypto_has_ahash'
1 mips-linux-gnu-ld: gc.c:(.text+0x495c): undefined reference to `__udivdi3'
1 gc.c:(.text+0x48f0): undefined reference to `__umoddi3'
1 ERROR: "__bad_udelay" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
1 ERROR: "__aeabi_uldivmod" [fs/f2fs/f2fs.ko] undefined!
1 (.text+0x43c): undefined reference to `crypto_has_ahash'
Warnings summary:
152 <stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
26 cc1: some warnings being treated as errors
15 drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
15 drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
15 drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
15 drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
14 drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
10 drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
10 drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
7 arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
7 arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
6 1 warning generated.
5 drivers/soc/rockchip/pm_domains.c:747:21: warning: shift count is negative [-Wshift-count-negative]
5 41 warnings generated.
4 drivers/firmware/efi/tpm.c:78:38: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'void *' [-Wint-conversion]
2 warning: same module names found:
2 kernel/trace/bpf_trace.c:605:13: warning: 'do_bpf_send_signal' defined but not used [-Wunused-function]
2 include/linux/dma-mapping.h:608:34: warning: 'sg' may be used uninitialized in this function [-Wmaybe-uninitialized]
2 drivers/video/fbdev/pvr2fb.c:726:12: warning: 'pvr2_get_param_val' defined but not used [-Wunused-function]
2 arch/arc/kernel/unwind.c:187:14: warning: 'unw_hdr_alloc' defined but not used [-Wunused-function]
2 WARNING: EXPORT symbol "kernel_neon_begin" [vmlinux] version generation failed, symbol will not be versioned.
2 <stdin>:830:2: warning: #warning syscall fstat64 not implemented [-Wcpp]
2 <stdin>:1127:2: warning: #warning syscall fstatat64 not implemented [-Wcpp]
2 ./usr/include/mtd/mtd-abi.h:116:28: warning: // comments are not allowed in this language [-Wcomment]
1 {standard input}:134: Warning: macro instruction expanded into multiple instructions
1 {standard input}:131: Warning: macro instruction expanded into multiple instructions
1 net/wireless/nl80211.c:6481:1: warning: the frame size of 2112 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 net/wireless/nl80211.c:5117:1: warning: the frame size of 2776 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 net/wireless/nl80211.c:2363:1: warning: the frame size of 4592 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 net/wireless/nl80211.c:1732:1: warning: the frame size of 2280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 net/ieee802154/nl802154.c:548:1: warning: the frame size of 2224 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 net/caif/cfctrl.c:549:1: warning: the frame size of 2608 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 net/bridge/br_netlink.c:1505:1: warning: the frame size of 2696 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 lib/ubsan.o: warning: objtool: ubsan_type_mismatch_common()+0x59: call to stackleak_track_stack() with UACCESS enabled
1 include/drm/drm_print.h:366:2: warning: 'real_hz' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 include/drm/drm_print.h:366:2: warning: 'real_clk_hz' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 include/drm/drm_print.h:366:2: warning: 'div' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 fs/ocfs2/xattr.c:3678:1: warning: the frame size of 2224 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 fs/ocfs2/super.c:1186:1: warning: the frame size of 3176 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 fs/ocfs2/namei.c:1677:1: warning: the frame size of 2616 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 fs/ocfs2/dlm/dlmrecovery.c:737:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 fs/ocfs2/dir.c:3080:1: warning: the frame size of 2056 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 fs/ocfs2/aops.c:1892:1: warning: the frame size of 2112 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c:2764:1: warning: the frame size of 2792 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225se.c:431:1: warning: the frame size of 4208 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/wireless/ralink/rt2x00/rt73usb.c:1283:1: warning: the frame size of 2656 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/wireless/ralink/rt2x00/rt2500usb.c:880:1: warning: the frame size of 2472 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c:26023:1: warning: the frame size of 2440 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c:16894:1: warning: the frame size of 3128 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c:16552:1: warning: the frame size of 3152 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/net/ethernet/rocker/rocker_ofdpa.c:560:1: warning: the frame size of 2360 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/mtd/nand/raw/au1550nd.c:447:57: warning: pointer type mismatch in conditional expression
1 drivers/misc/habanalabs/habanalabs_ioctl.c:143:23: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
1 drivers/media/tuners/r820t.c:1327:1: warning: the frame size of 2840 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/pci/saa7134/saa7134-cards.c:8074:1: warning: the frame size of 2128 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/i2c/tvp5150.c:253:1: warning: the frame size of 3952 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:4568:1: warning: the frame size of 2104 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:4253:1: warning: the frame size of 2808 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:3419:1: warning: the frame size of 5280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:3078:1: warning: the frame size of 5880 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:2496:1: warning: the frame size of 2328 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:2125:1: warning: the frame size of 2096 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:2057:1: warning: the frame size of 2568 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:1940:1: warning: the frame size of 3288 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:1842:1: warning: the frame size of 3016 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:1583:1: warning: the frame size of 5320 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:1195:1: warning: the frame size of 2088 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:1152:1: warning: the frame size of 2088 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv090x.c:1111:1: warning: the frame size of 2088 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/stv0367.c:1902:1: warning: the frame size of 3296 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/cxd2841er.c:3630:1: warning: the frame size of 2784 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/media/dvb-frontends/cxd2841er.c:3123:1: warning: the frame size of 2720 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/hwtracing/intel_th/msu.c:863:6: warning: unused variable 'i' [-Wunused-variable]
1 drivers/hwtracing/intel_th/msu.c:783:21: warning: unused variable 'i' [-Wunused-variable]
1 drivers/gpu/drm/tinydrm/ili9225.c:289:1: warning: the frame size of 2720 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/gpu/drm/panel/panel-sitronix-st7701.c:198:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 drivers/gpu/drm/armada/armada_crtc.c:890:22: warning: 'desired_clk_hz' may be used uninitialized in this function [-Wmaybe-uninitialized]
1 drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c:96:17: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
1 drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c:140:18: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
1 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c:31:36: warning: left shift count >= width of type [-Wshift-count-overflow]
1 drivers/ata/pata_rb532_cf.c:165:24: warning: unused variable 'info' [-Wunused-variable]
1 cc1: all warnings being treated as errors
1 arch/x86/kvm/x86.c:4300:1: warning: the frame size of 2168 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 arch/x86/kernel/cpu/mshyperv.c:342:1: warning: the frame size of 2856 bytes is larger than 2048 bytes [-Wframe-larger-than=]
1 /tmp/ccXuaWBe.s:18191: Warning: using r15 results in unpredictable behaviour
1 /tmp/ccXuaWBe.s:18119: Warning: using r15 results in unpredictable behaviour
1 .config:1163:warning: override: UNWINDER_GUESS changes choice state
================================================================================
Detailed per-defconfig build reports:
--------------------------------------------------------------------------------
32r2el_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
32r2el_defconfig+kselftest (mips, gcc-8) — FAIL, 2 errors, 3 warnings, 0 section mismatches
Errors:
include/linux/kprobes.h:477:9: error: implicit declaration of function 'kprobe_fault_handler'; did you mean 'kprobe_page_fault'? [-Werror=implicit-function-declaration]
include/linux/kprobes.h:477:9: error: implicit declaration of function 'kprobe_fault_handler'; did you mean 'kprobe_page_fault'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: all warnings being treated as errors
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
acs5k_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
acs5k_tiny_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allmodconfig (arm64, clang-8) — FAIL, 0 errors, 47 warnings, 0 section mismatches
Warnings:
./usr/include/mtd/mtd-abi.h:116:28: warning: // comments are not allowed in this language [-Wcomment]
1 warning generated.
./usr/include/mtd/mtd-abi.h:116:28: warning: // comments are not allowed in this language [-Wcomment]
1 warning generated.
drivers/soc/rockchip/pm_domains.c:747:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
41 warnings generated.
WARNING: EXPORT symbol "kernel_neon_begin" [vmlinux] version generation failed, symbol will not be versioned.
--------------------------------------------------------------------------------
allmodconfig (arm64, gcc-8) — FAIL, 0 errors, 1 warning, 0 section mismatches
Warnings:
WARNING: EXPORT symbol "kernel_neon_begin" [vmlinux] version generation failed, symbol will not be versioned.
--------------------------------------------------------------------------------
allmodconfig (arm, gcc-8) — FAIL, 2 errors, 16 warnings, 0 section mismatches
Errors:
ERROR: "__aeabi_uldivmod" [fs/f2fs/f2fs.ko] undefined!
ERROR: "__bad_udelay" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
/tmp/ccXuaWBe.s:18119: Warning: using r15 results in unpredictable behaviour
/tmp/ccXuaWBe.s:18191: Warning: using r15 results in unpredictable behaviour
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c:96:17: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c:140:18: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
drivers/gpu/drm/arm/display/komeda/komeda_crtc.c:31:36: warning: left shift count >= width of type [-Wshift-count-overflow]
include/drm/drm_print.h:366:2: warning: 'div' may be used uninitialized in this function [-Wmaybe-uninitialized]
include/drm/drm_print.h:366:2: warning: 'real_hz' may be used uninitialized in this function [-Wmaybe-uninitialized]
include/drm/drm_print.h:366:2: warning: 'real_clk_hz' may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/gpu/drm/armada/armada_crtc.c:890:22: warning: 'desired_clk_hz' may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/hwtracing/intel_th/msu.c:783:21: warning: unused variable 'i' [-Wunused-variable]
drivers/hwtracing/intel_th/msu.c:863:6: warning: unused variable 'i' [-Wunused-variable]
drivers/misc/habanalabs/habanalabs_ioctl.c:143:23: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
include/linux/dma-mapping.h:608:34: warning: 'sg' may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/video/fbdev/pvr2fb.c:726:12: warning: 'pvr2_get_param_val' defined but not used [-Wunused-function]
--------------------------------------------------------------------------------
allmodconfig (x86_64, gcc-8) — PASS, 0 errors, 50 warnings, 0 section mismatches
Warnings:
arch/x86/kernel/cpu/mshyperv.c:342:1: warning: the frame size of 2856 bytes is larger than 2048 bytes [-Wframe-larger-than=]
arch/x86/kvm/x86.c:4300:1: warning: the frame size of 2168 bytes is larger than 2048 bytes [-Wframe-larger-than=]
fs/ocfs2/dlm/dlmrecovery.c:737:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
fs/ocfs2/aops.c:1892:1: warning: the frame size of 2112 bytes is larger than 2048 bytes [-Wframe-larger-than=]
fs/ocfs2/dir.c:3080:1: warning: the frame size of 2056 bytes is larger than 2048 bytes [-Wframe-larger-than=]
fs/ocfs2/namei.c:1677:1: warning: the frame size of 2616 bytes is larger than 2048 bytes [-Wframe-larger-than=]
fs/ocfs2/super.c:1186:1: warning: the frame size of 3176 bytes is larger than 2048 bytes [-Wframe-larger-than=]
fs/ocfs2/xattr.c:3678:1: warning: the frame size of 2224 bytes is larger than 2048 bytes [-Wframe-larger-than=]
net/bridge/br_netlink.c:1505:1: warning: the frame size of 2696 bytes is larger than 2048 bytes [-Wframe-larger-than=]
net/caif/cfctrl.c:549:1: warning: the frame size of 2608 bytes is larger than 2048 bytes [-Wframe-larger-than=]
net/ieee802154/nl802154.c:548:1: warning: the frame size of 2224 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
lib/ubsan.o: warning: objtool: ubsan_type_mismatch_common()+0x59: call to stackleak_track_stack() with UACCESS enabled
net/wireless/nl80211.c:1732:1: warning: the frame size of 2280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
net/wireless/nl80211.c:6481:1: warning: the frame size of 2112 bytes is larger than 2048 bytes [-Wframe-larger-than=]
net/wireless/nl80211.c:2363:1: warning: the frame size of 4592 bytes is larger than 2048 bytes [-Wframe-larger-than=]
net/wireless/nl80211.c:5117:1: warning: the frame size of 2776 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/gpu/drm/panel/panel-sitronix-st7701.c:198:1: warning: the frame size of 2080 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/gpu/drm/tinydrm/ili9225.c:289:1: warning: the frame size of 2720 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/i2c/tvp5150.c:253:1: warning: the frame size of 3952 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1842:1: warning: the frame size of 3016 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:2125:1: warning: the frame size of 2096 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:2496:1: warning: the frame size of 2328 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:4568:1: warning: the frame size of 2104 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1940:1: warning: the frame size of 3288 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1583:1: warning: the frame size of 5320 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1111:1: warning: the frame size of 2088 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1195:1: warning: the frame size of 2088 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:4253:1: warning: the frame size of 2808 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:1152:1: warning: the frame size of 2088 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:2057:1: warning: the frame size of 2568 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:3078:1: warning: the frame size of 5880 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv090x.c:3419:1: warning: the frame size of 5280 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/stv0367.c:1902:1: warning: the frame size of 3296 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/cxd2841er.c:3123:1: warning: the frame size of 2720 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/dvb-frontends/cxd2841er.c:3630:1: warning: the frame size of 2784 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/pci/saa7134/saa7134-cards.c:8074:1: warning: the frame size of 2128 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/media/tuners/r820t.c:1327:1: warning: the frame size of 2840 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c:16552:1: warning: the frame size of 3152 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c:16894:1: warning: the frame size of 3128 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phy_n.c:26023:1: warning: the frame size of 2440 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/wireless/realtek/rtl818x/rtl8180/rtl8225se.c:431:1: warning: the frame size of 4208 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/ethernet/rocker/rocker_ofdpa.c:560:1: warning: the frame size of 2360 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/wireless/ralink/rt2x00/rt2500usb.c:880:1: warning: the frame size of 2472 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/net/wireless/ralink/rt2x00/rt73usb.c:1283:1: warning: the frame size of 2656 bytes is larger than 2048 bytes [-Wframe-larger-than=]
include/linux/dma-mapping.h:608:34: warning: 'sg' may be used uninitialized in this function [-Wmaybe-uninitialized]
drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c:2764:1: warning: the frame size of 2792 bytes is larger than 2048 bytes [-Wframe-larger-than=]
drivers/video/fbdev/pvr2fb.c:726:12: warning: 'pvr2_get_param_val' defined but not used [-Wunused-function]
warning: same module names found:
warning: same module names found:
--------------------------------------------------------------------------------
allnoconfig (arc, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allnoconfig (arm64, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allnoconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allnoconfig (riscv, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allnoconfig (arm64, clang-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allnoconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
allnoconfig (i386, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
allnoconfig (x86_64, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
am200epdkit_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
ar7_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
aspeed_g4_defconfig (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
kernel/trace/bpf_trace.c:605:13: warning: 'do_bpf_send_signal' defined but not used [-Wunused-function]
--------------------------------------------------------------------------------
aspeed_g5_defconfig (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
kernel/trace/bpf_trace.c:605:13: warning: 'do_bpf_send_signal' defined but not used [-Wunused-function]
--------------------------------------------------------------------------------
assabet_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
at91_dt_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
ath25_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
ath79_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
axm55xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
axs103_defconfig (arc, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
axs103_smp_defconfig (arc, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
badge4_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
bcm2835_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
bcm47xx_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
bcm63xx_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
bigsur_defconfig (mips, gcc-8) — FAIL, 2 errors, 4 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
bmips_be_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
bmips_stb_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
capcella_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
cavium_octeon_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
cerfcube_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
ci20_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
clps711x_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
cm_x2xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
cm_x300_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
cns3420vb_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
cobalt_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
colibri_pxa270_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
colibri_pxa300_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
collie_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
corgi_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
davinci_all_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
db1xxx_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
gc.c:(.text+0x48f0): undefined reference to `__umoddi3'
mips-linux-gnu-ld: gc.c:(.text+0x495c): undefined reference to `__udivdi3'
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
drivers/mtd/nand/raw/au1550nd.c:447:57: warning: pointer type mismatch in conditional expression
--------------------------------------------------------------------------------
decstation_64_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
decstation_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
decstation_r4k_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
defconfig (riscv, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
defconfig (arm64, clang-8) — FAIL, 4 errors, 44 warnings, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: use of undeclared identifier '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: use of undeclared identifier '__cookie_v6_check'; did you mean '__cookie_v4_check'?
net/ipv6/netfilter.c:237:26: error: incompatible pointer types initializing 'u32 (*)(const struct ipv6hdr *, const struct tcphdr *, u16 *)' (aka 'unsigned int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned short *)') with an expression of type '__u32 (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, __u16 *)' (aka 'unsigned int (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, unsigned short *)') [-Werror,-Wincompatible-pointer-types]
net/ipv6/netfilter.c:238:21: error: incompatible pointer types initializing 'int (*)(const struct ipv6hdr *, const struct tcphdr *, __u32)' (aka 'int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned int)') with an expression of type 'int (const struct iphdr *, const struct tcphdr *, u32)' (aka 'int (const struct iphdr *, const struct tcphdr *, unsigned int)') [-Werror,-Wincompatible-pointer-types]
Warnings:
drivers/firmware/efi/tpm.c:78:38: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'void *' [-Wint-conversion]
1 warning generated.
drivers/soc/rockchip/pm_domains.c:747:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
41 warnings generated.
--------------------------------------------------------------------------------
defconfig (arm64, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: '__cookie_v6_init_sequence' undeclared here (not in a function); did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: '__cookie_v6_check' undeclared here (not in a function); did you mean '__cookie_v4_check'?
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
defconfig+CONFIG_CPU_BIG_ENDIAN=y (arm64, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: '__cookie_v6_init_sequence' undeclared here (not in a function); did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: '__cookie_v6_check' undeclared here (not in a function); did you mean '__cookie_v4_check'?
--------------------------------------------------------------------------------
defconfig+CONFIG_CPU_BIG_ENDIAN=y (arm64, clang-8) — FAIL, 4 errors, 44 warnings, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: use of undeclared identifier '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: use of undeclared identifier '__cookie_v6_check'; did you mean '__cookie_v4_check'?
net/ipv6/netfilter.c:237:26: error: incompatible pointer types initializing 'u32 (*)(const struct ipv6hdr *, const struct tcphdr *, u16 *)' (aka 'unsigned int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned short *)') with an expression of type '__u32 (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, __u16 *)' (aka 'unsigned int (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, unsigned short *)') [-Werror,-Wincompatible-pointer-types]
net/ipv6/netfilter.c:238:21: error: incompatible pointer types initializing 'int (*)(const struct ipv6hdr *, const struct tcphdr *, __u32)' (aka 'int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned int)') with an expression of type 'int (const struct iphdr *, const struct tcphdr *, u32)' (aka 'int (const struct iphdr *, const struct tcphdr *, unsigned int)') [-Werror,-Wincompatible-pointer-types]
Warnings:
drivers/firmware/efi/tpm.c:78:38: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'void *' [-Wint-conversion]
1 warning generated.
drivers/soc/rockchip/pm_domains.c:747:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
41 warnings generated.
--------------------------------------------------------------------------------
defconfig+CONFIG_RANDOMIZE_BASE=y (arm64, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: '__cookie_v6_init_sequence' undeclared here (not in a function); did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: '__cookie_v6_check' undeclared here (not in a function); did you mean '__cookie_v4_check'?
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
defconfig+CONFIG_RANDOMIZE_BASE=y (arm64, clang-8) — FAIL, 4 errors, 44 warnings, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: use of undeclared identifier '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: use of undeclared identifier '__cookie_v6_check'; did you mean '__cookie_v4_check'?
net/ipv6/netfilter.c:237:26: error: incompatible pointer types initializing 'u32 (*)(const struct ipv6hdr *, const struct tcphdr *, u16 *)' (aka 'unsigned int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned short *)') with an expression of type '__u32 (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, __u16 *)' (aka 'unsigned int (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, unsigned short *)') [-Werror,-Wincompatible-pointer-types]
net/ipv6/netfilter.c:238:21: error: incompatible pointer types initializing 'int (*)(const struct ipv6hdr *, const struct tcphdr *, __u32)' (aka 'int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned int)') with an expression of type 'int (const struct iphdr *, const struct tcphdr *, u32)' (aka 'int (const struct iphdr *, const struct tcphdr *, unsigned int)') [-Werror,-Wincompatible-pointer-types]
Warnings:
drivers/firmware/efi/tpm.c:78:38: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'void *' [-Wint-conversion]
1 warning generated.
drivers/soc/rockchip/pm_domains.c:747:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
41 warnings generated.
--------------------------------------------------------------------------------
defconfig+kselftest (riscv, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
defconfig+kselftest (arm64, clang-8) — FAIL, 4 errors, 44 warnings, 0 section mismatches
Errors:
net/ipv6/netfilter.c:237:26: error: use of undeclared identifier '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'?
net/ipv6/netfilter.c:238:21: error: use of undeclared identifier '__cookie_v6_check'; did you mean '__cookie_v4_check'?
net/ipv6/netfilter.c:237:26: error: incompatible pointer types initializing 'u32 (*)(const struct ipv6hdr *, const struct tcphdr *, u16 *)' (aka 'unsigned int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned short *)') with an expression of type '__u32 (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, __u16 *)' (aka 'unsigned int (const struct tcp_request_sock_ops *, const struct sock *, struct sk_buff *, unsigned short *)') [-Werror,-Wincompatible-pointer-types]
net/ipv6/netfilter.c:238:21: error: incompatible pointer types initializing 'int (*)(const struct ipv6hdr *, const struct tcphdr *, __u32)' (aka 'int (*)(const struct ipv6hdr *, const struct tcphdr *, unsigned int)') with an expression of type 'int (const struct iphdr *, const struct tcphdr *, u32)' (aka 'int (const struct iphdr *, const struct tcphdr *, unsigned int)') [-Werror,-Wincompatible-pointer-types]
Warnings:
drivers/firmware/efi/tpm.c:78:38: warning: incompatible integer to pointer conversion passing 'unsigned long' to parameter of type 'void *' [-Wint-conversion]
1 warning generated.
drivers/soc/rockchip/pm_domains.c:747:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:752:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:788:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:789:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:790:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:791:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:792:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:793:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:794:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:795:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:796:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:818:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:819:22: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:820:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:821:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:822:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:832:20: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:833:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
drivers/soc/rockchip/pm_domains.c:834:21: warning: shift count is negative [-Wshift-count-negative]
41 warnings generated.
--------------------------------------------------------------------------------
defconfig+kselftest (arm64, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
dove_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
e55_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
ebsa110_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
efm32_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
em_x270_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
ep93xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
eseries_pxa_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
exynos_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
ezx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
footbridge_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
fuloong2e_defconfig (mips, gcc-8) — FAIL, 2 errors, 4 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
gcw0_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
gemini_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
gpr_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
h3600_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
h5000_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
hackkit_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
haps_hs_defconfig (arc, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
haps_hs_smp_defconfig (arc, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
hisi_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
hsdk_defconfig (arc, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
i386_defconfig (i386, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
i386_defconfig+kselftest (i386, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
imote2_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
imx_v4_v5_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
imx_v6_v7_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
integrator_defconfig (arm, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
--------------------------------------------------------------------------------
iop13xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
iop32x_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
iop33x_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
ip22_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
ip27_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
ip28_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
ip32_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
ixp4xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
jazz_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
jmr3927_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
jornada720_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
keystone_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
ks8695_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
lart_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
lasat_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
lemote2f_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
loongson1b_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
loongson1c_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
loongson3_defconfig (mips, gcc-8) — FAIL, 2 errors, 4 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
lpc18xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
lpc32xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
lpd270_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
lubbock_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
magician_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
mainstone_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
malta_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
malta_kvm_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
malta_kvm_guest_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
malta_qemu_32r6_defconfig (mips, gcc-8) — PASS, 0 errors, 4 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
{standard input}:131: Warning: macro instruction expanded into multiple instructions
{standard input}:134: Warning: macro instruction expanded into multiple instructions
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltaaprp_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltasmvp_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltasmvp_eva_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltaup_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
maltaup_xpa_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
markeins_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
milbeaut_m10v_defconfig (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
mini2440_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
mips_paravirt_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
mmp2_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
moxart_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
mpc30x_defconfig (mips, gcc-8) — FAIL, 1 error, 1 warning, 0 section mismatches
Errors:
(.text+0x43c): undefined reference to `crypto_has_ahash'
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
mps2_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
msp71xx_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
mtx1_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
multi_v4t_defconfig (arm, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
--------------------------------------------------------------------------------
multi_v5_defconfig (arm, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
--------------------------------------------------------------------------------
multi_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
multi_v7_defconfig+CONFIG_CPU_BIG_ENDIAN=y (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
multi_v7_defconfig+CONFIG_EFI=y+CONFIG_ARM_LPAE=y (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
multi_v7_defconfig+CONFIG_SMP=n (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
multi_v7_defconfig+kselftest (arm, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
mv78xx0_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
mvebu_v5_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
mvebu_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
mxs_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
neponset_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
netwinder_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
nhk8815_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
nlm_xlp_defconfig (mips, gcc-8) — PASS, 0 errors, 6 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
nlm_xlr_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
nsim_hs_defconfig (arc, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
nsim_hs_defconfig+kselftest (arc, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
nsim_hs_smp_defconfig (arc, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
nsimosci_hs_defconfig (arc, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
nsimosci_hs_smp_defconfig (arc, gcc-8) — FAIL, 2 errors, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
arc-elf32-ld: xfrm_algo.c:(.text+0x1e6): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
nuc910_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
nuc950_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
nuc960_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
omap1_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
omap2plus_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
omega2p_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
orion5x_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
oxnas_v6_defconfig (arm, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
palmz72_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pcm027_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pic32mzda_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
pistachio_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
pleb_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pnx8335_stb225_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
prima2_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pxa168_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pxa255-idp_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pxa3xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pxa910_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
pxa_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
qcom_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
qi_lb60_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
rb532_defconfig (mips, gcc-8) — PASS, 0 errors, 3 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
drivers/ata/pata_rb532_cf.c:165:24: warning: unused variable 'info' [-Wunused-variable]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
rbtx49xx_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
realview_defconfig (arm, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
--------------------------------------------------------------------------------
rm200_defconfig (mips, gcc-8) — FAIL, 2 errors, 2 warnings, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
rpc_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
rt305x_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
rv32_defconfig (riscv, gcc-8) — PASS, 0 errors, 4 warnings, 0 section mismatches
Warnings:
<stdin>:830:2: warning: #warning syscall fstat64 not implemented [-Wcpp]
<stdin>:1127:2: warning: #warning syscall fstatat64 not implemented [-Wcpp]
<stdin>:830:2: warning: #warning syscall fstat64 not implemented [-Wcpp]
<stdin>:1127:2: warning: #warning syscall fstatat64 not implemented [-Wcpp]
--------------------------------------------------------------------------------
s3c2410_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
s3c6400_defconfig (arm, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
--------------------------------------------------------------------------------
s5pv210_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
sama5_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
sb1250_swarm_defconfig (mips, gcc-8) — PASS, 0 errors, 4 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
shannon_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
shmobile_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
simpad_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
socfpga_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
spear13xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
spear3xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
spear6xx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
spitz_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
stm32_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
sunxi_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tango4_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tb0219_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
tb0226_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
tb0287_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
tct_hammer_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tegra_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (arm64, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (x86_64, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
.config:1163:warning: override: UNWINDER_GUESS changes choice state
--------------------------------------------------------------------------------
tinyconfig (i386, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
tinyconfig (riscv, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (arm64, clang-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
tinyconfig (arc, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
trizeps4_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
u300_defconfig (arm, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
arch/arm/mm/init.c:456:13: warning: unused variable 'itcm_end' [-Wunused-variable]
arch/arm/mm/init.c:455:13: warning: unused variable 'dtcm_end' [-Wunused-variable]
--------------------------------------------------------------------------------
u8500_defconfig (arm, gcc-8) — FAIL, 2 errors, 1 warning, 0 section mismatches
Errors:
include/linux/netfilter_ipv6.h:174:9: error: implicit declaration of function '__cookie_v6_init_sequence'; did you mean 'cookie_init_sequence'? [-Werror=implicit-function-declaration]
include/linux/netfilter_ipv6.h:189:9: error: implicit declaration of function '__cookie_v6_check'; did you mean '__cookie_v4_check'? [-Werror=implicit-function-declaration]
Warnings:
cc1: some warnings being treated as errors
--------------------------------------------------------------------------------
vdk_hs38_defconfig (arc, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
arch/arc/kernel/unwind.c:187:14: warning: 'unw_hdr_alloc' defined but not used [-Wunused-function]
--------------------------------------------------------------------------------
vdk_hs38_smp_defconfig (arc, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
arch/arc/kernel/unwind.c:187:14: warning: 'unw_hdr_alloc' defined but not used [-Wunused-function]
--------------------------------------------------------------------------------
versatile_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
vexpress_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
vf610m4_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
viper_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
vocore2_defconfig (mips, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
vt8500_v6_v7_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
workpad_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
x86_64_defconfig (x86_64, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
x86_64_defconfig+kselftest (x86_64, gcc-8) — PASS, 0 errors, 1 warning, 0 section mismatches
Warnings:
drivers/firmware/efi/tpm.c:80:10: warning: passing argument 1 of 'tpm2_calc_event_log_size' makes pointer from integer without a cast [-Wint-conversion]
--------------------------------------------------------------------------------
xcep_defconfig (arm, gcc-8) — FAIL, 1 error, 0 warnings, 0 section mismatches
Errors:
xfrm_algo.c:(.text+0x344): undefined reference to `crypto_has_ahash'
--------------------------------------------------------------------------------
xway_defconfig (mips, gcc-8) — PASS, 0 errors, 2 warnings, 0 section mismatches
Warnings:
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
<stdin>:1511:2: warning: #warning syscall clone3 not implemented [-Wcpp]
--------------------------------------------------------------------------------
zeus_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
--------------------------------------------------------------------------------
zx_defconfig (arm, gcc-8) — PASS, 0 errors, 0 warnings, 0 section mismatches
---
For more info write to <info@kernelci.org>
^ permalink raw reply
* [PATCH 1/1] spi: spi-stm32-qspi: Remove CR_FTHRES_MASK usage
From: patrice.chotard @ 2019-06-20 13:13 UTC (permalink / raw)
To: Mark Brown, Maxime Coquelin, Alexandre Torgue, linux-spi,
linux-stm32, linux-arm-kernel, linux-kernel
Cc: patrice.chotard, christophe.kerello
From: Patrice Chotard <patrice.chotard@st.com>
On STM32 F4/F7/H7 SoCs, FTHRES is a 5 bits field in QSPI_CR register,
but for STM32MP1 SoCs, FTHRES is a 4 bits field long. CR_FTHRES_MASK
definition is not correct.
As for all these SoCs, FTHRES field is set to 3, FIELD_PREP() macro
is used with a constant as second parameter which make its usage useless.
CR_FTHRES_MASK and FIELD_PREP() can be removed.
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
drivers/spi/spi-stm32-qspi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c
index 42f8e3c6aa1f..5dbb6a8e893c 100644
--- a/drivers/spi/spi-stm32-qspi.c
+++ b/drivers/spi/spi-stm32-qspi.c
@@ -29,7 +29,7 @@
#define CR_SSHIFT BIT(4)
#define CR_DFM BIT(6)
#define CR_FSEL BIT(7)
-#define CR_FTHRES_MASK GENMASK(12, 8)
+#define CR_FTHRES_SHIFT 8
#define CR_TEIE BIT(16)
#define CR_TCIE BIT(17)
#define CR_FTIE BIT(18)
@@ -463,7 +463,7 @@ static int stm32_qspi_setup(struct spi_device *spi)
flash->presc = presc;
mutex_lock(&qspi->lock);
- qspi->cr_reg = FIELD_PREP(CR_FTHRES_MASK, 3) | CR_SSHIFT | CR_EN;
+ qspi->cr_reg = 3 << CR_FTHRES_SHIFT | CR_SSHIFT | CR_EN;
writel_relaxed(qspi->cr_reg, qspi->io_base + QSPI_CR);
/* set dcr fsize to max address */
--
2.17.1
^ permalink raw reply related
* [PATCH 1/1] spi: spi-stm32-qspi: Remove CR_FTHRES_MASK usage
From: patrice.chotard @ 2019-06-20 13:13 UTC (permalink / raw)
To: Mark Brown, Maxime Coquelin, Alexandre Torgue, linux-spi,
linux-stm32, linux-arm-kernel, linux-kernel
Cc: christophe.kerello, patrice.chotard
From: Patrice Chotard <patrice.chotard@st.com>
On STM32 F4/F7/H7 SoCs, FTHRES is a 5 bits field in QSPI_CR register,
but for STM32MP1 SoCs, FTHRES is a 4 bits field long. CR_FTHRES_MASK
definition is not correct.
As for all these SoCs, FTHRES field is set to 3, FIELD_PREP() macro
is used with a constant as second parameter which make its usage useless.
CR_FTHRES_MASK and FIELD_PREP() can be removed.
Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---
drivers/spi/spi-stm32-qspi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c
index 42f8e3c6aa1f..5dbb6a8e893c 100644
--- a/drivers/spi/spi-stm32-qspi.c
+++ b/drivers/spi/spi-stm32-qspi.c
@@ -29,7 +29,7 @@
#define CR_SSHIFT BIT(4)
#define CR_DFM BIT(6)
#define CR_FSEL BIT(7)
-#define CR_FTHRES_MASK GENMASK(12, 8)
+#define CR_FTHRES_SHIFT 8
#define CR_TEIE BIT(16)
#define CR_TCIE BIT(17)
#define CR_FTIE BIT(18)
@@ -463,7 +463,7 @@ static int stm32_qspi_setup(struct spi_device *spi)
flash->presc = presc;
mutex_lock(&qspi->lock);
- qspi->cr_reg = FIELD_PREP(CR_FTHRES_MASK, 3) | CR_SSHIFT | CR_EN;
+ qspi->cr_reg = 3 << CR_FTHRES_SHIFT | CR_SSHIFT | CR_EN;
writel_relaxed(qspi->cr_reg, qspi->io_base + QSPI_CR);
/* set dcr fsize to max address */
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related
* Re: [PATCH v1 1/2] kernel.h: Update comment about simple_strto<foo>() functions
From: Miguel Ojeda @ 2019-06-20 13:14 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-kernel, Geert Uytterhoeven, Mans Rullgard
In-Reply-To: <20190619163843.26918-1-andriy.shevchenko@linux.intel.com>
On Wed, Jun 19, 2019 at 6:38 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> There were discussions in the past about use cases for
> simple_strto<foo>() functions and in some rare cases they have a benefit
> on kstrto<foo>() ones.
>
> Update a comment to reduce confusing about special use cases.
I don't recall the discussions anymore... :-) But are we sure
simple_strtoul() etc. are not obsolete anymore and want to use them
again?
Cheers,
Miguel
^ permalink raw reply
* Re: [PATCH v3 0/6] crypto: switch to crypto API for ESSIV generation
From: Milan Broz @ 2019-06-20 13:14 UTC (permalink / raw)
To: Milan Broz, Ard Biesheuvel
Cc: Herbert Xu, Eric Biggers, linux-fscrypt, Gilad Ben-Yossef,
device-mapper development, linux-crypto
In-Reply-To: <075cddec-1603-4a23-17c4-c766b4bd9086@gmail.com>
On 20/06/2019 14:09, Milan Broz wrote:
> On 20/06/2019 13:54, Ard Biesheuvel wrote:
>> On Thu, 20 Jun 2019 at 13:22, Milan Broz <gmazyland@gmail.com> wrote:
>>>
>>> On 19/06/2019 18:29, Ard Biesheuvel wrote:
>>>> This series creates an ESSIV template that produces a skcipher or AEAD
>>>> transform based on a tuple of the form '<skcipher>,<cipher>,<shash>'
>>>> (or '<aead>,<cipher>,<shash>' for the AEAD case). It exposes the
>>>> encapsulated sync or async skcipher/aead by passing through all operations,
>>>> while using the cipher/shash pair to transform the input IV into an ESSIV
>>>> output IV.
>>>>
>>>> This matches what both users of ESSIV in the kernel do, and so it is proposed
>>>> as a replacement for those, in patches #2 and #4.
>>>>
>>>> This code has been tested using the fscrypt test suggested by Eric
>>>> (generic/549), as well as the mode-test script suggested by Milan for
>>>> the dm-crypt case. I also tested the aead case in a virtual machine,
>>>> but it definitely needs some wider testing from the dm-crypt experts.
>>>>
>>>> Changes since v2:
>>>> - fixed a couple of bugs that snuck in after I'd done the bulk of my
>>>> testing
>>>> - some cosmetic tweaks to the ESSIV template skcipher setkey function
>>>> to align it with the aead one
>>>> - add a test case for essiv(cbc(aes),aes,sha256)
>>>> - add an accelerated implementation for arm64 that combines the IV
>>>> derivation and the actual en/decryption in a single asm routine
>>>
>>> I run tests for the whole patchset, including some older scripts and seems
>>> it works for dm-crypt now.
>>>
>>
>> Thanks Milan, that is really helpful.
>>
>> Does this include configurations that combine authenc with essiv?
>
> Hm, seems that we are missing these in luks2-integrity-test. I'll add them there.
>
> I also used this older test
> https://gitlab.com/omos/dm-crypt-test-scripts/blob/master/root/test_dmintegrity.sh
>
> (just aes-gcm-random need to be commented out, we never supported this format, it was
> written for some devel version)
>
> But seems ESSIV is there tested only without AEAD composition...
>
> So yes, this AEAD part need more testing.
And unfortunately it does not work - it returns EIO on sectors where it should not be data corruption.
I added few lines with length-preserving mode with ESSIV + AEAD, please could you run luks2-integrity-test
in cryptsetup upstream?
This patch adds the tests:
https://gitlab.com/cryptsetup/cryptsetup/commit/4c74ff5e5ae328cb61b44bf99f98d08ffee3366a
It is ok on mainline kernel, fails with the patchset:
# ./luks2-integrity-test
[aes-cbc-essiv:sha256:hmac-sha256:128:512][FORMAT][ACTIVATE]sha256sum: /dev/mapper/dmi_test: Input/output error
[FAIL]
Expecting ee501705a084cd0ab6f4a28014bcf62b8bfa3434de00b82743c50b3abf06232c got .
FAILED backtrace:
77 ./luks2-integrity-test
112 intformat ./luks2-integrity-test
127 main ./luks2-integrity-test
Milan
^ permalink raw reply
* Re: [PATCH v3 0/6] crypto: switch to crypto API for ESSIV generation
From: Milan Broz @ 2019-06-20 13:14 UTC (permalink / raw)
To: Milan Broz, Ard Biesheuvel
Cc: linux-crypto, Herbert Xu, Eric Biggers, device-mapper development,
linux-fscrypt, Gilad Ben-Yossef
In-Reply-To: <075cddec-1603-4a23-17c4-c766b4bd9086@gmail.com>
On 20/06/2019 14:09, Milan Broz wrote:
> On 20/06/2019 13:54, Ard Biesheuvel wrote:
>> On Thu, 20 Jun 2019 at 13:22, Milan Broz <gmazyland@gmail.com> wrote:
>>>
>>> On 19/06/2019 18:29, Ard Biesheuvel wrote:
>>>> This series creates an ESSIV template that produces a skcipher or AEAD
>>>> transform based on a tuple of the form '<skcipher>,<cipher>,<shash>'
>>>> (or '<aead>,<cipher>,<shash>' for the AEAD case). It exposes the
>>>> encapsulated sync or async skcipher/aead by passing through all operations,
>>>> while using the cipher/shash pair to transform the input IV into an ESSIV
>>>> output IV.
>>>>
>>>> This matches what both users of ESSIV in the kernel do, and so it is proposed
>>>> as a replacement for those, in patches #2 and #4.
>>>>
>>>> This code has been tested using the fscrypt test suggested by Eric
>>>> (generic/549), as well as the mode-test script suggested by Milan for
>>>> the dm-crypt case. I also tested the aead case in a virtual machine,
>>>> but it definitely needs some wider testing from the dm-crypt experts.
>>>>
>>>> Changes since v2:
>>>> - fixed a couple of bugs that snuck in after I'd done the bulk of my
>>>> testing
>>>> - some cosmetic tweaks to the ESSIV template skcipher setkey function
>>>> to align it with the aead one
>>>> - add a test case for essiv(cbc(aes),aes,sha256)
>>>> - add an accelerated implementation for arm64 that combines the IV
>>>> derivation and the actual en/decryption in a single asm routine
>>>
>>> I run tests for the whole patchset, including some older scripts and seems
>>> it works for dm-crypt now.
>>>
>>
>> Thanks Milan, that is really helpful.
>>
>> Does this include configurations that combine authenc with essiv?
>
> Hm, seems that we are missing these in luks2-integrity-test. I'll add them there.
>
> I also used this older test
> https://gitlab.com/omos/dm-crypt-test-scripts/blob/master/root/test_dmintegrity.sh
>
> (just aes-gcm-random need to be commented out, we never supported this format, it was
> written for some devel version)
>
> But seems ESSIV is there tested only without AEAD composition...
>
> So yes, this AEAD part need more testing.
And unfortunately it does not work - it returns EIO on sectors where it should not be data corruption.
I added few lines with length-preserving mode with ESSIV + AEAD, please could you run luks2-integrity-test
in cryptsetup upstream?
This patch adds the tests:
https://gitlab.com/cryptsetup/cryptsetup/commit/4c74ff5e5ae328cb61b44bf99f98d08ffee3366a
It is ok on mainline kernel, fails with the patchset:
# ./luks2-integrity-test
[aes-cbc-essiv:sha256:hmac-sha256:128:512][FORMAT][ACTIVATE]sha256sum: /dev/mapper/dmi_test: Input/output error
[FAIL]
Expecting ee501705a084cd0ab6f4a28014bcf62b8bfa3434de00b82743c50b3abf06232c got .
FAILED backtrace:
77 ./luks2-integrity-test
112 intformat ./luks2-integrity-test
127 main ./luks2-integrity-test
Milan
^ permalink raw reply
* [igt-dev] [PATCH v2] lib/i915: gem_engine_topology: get eb flags from engine's class:instance
From: Andi Shyti @ 2019-06-20 13:14 UTC (permalink / raw)
To: IGT dev; +Cc: Andi Shyti
The execution buffer flag value has now the engine index as it is
mapped in the context. Retrieve the mapped index by interrogating
the driver starting from the class/instance tuple.
A "gem_context_get_eb_flags_ci" helper allows to avoid declaring
a "struct i915_engine_class_instance" for the purpose.
Return -EINVAL if the engine is not mapped in the given context.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Andi Shyti <andi.shyti@intel.com>
Cc: Ramalingam C <ramalingam.c@intel.com>
---
V1 --> V2 changelog:
--------------------
- refactor the code to avoid initializing the context just for
the purpose of getting the execution buffer flag (thanks
Tvrtko)
lib/i915/gem_engine_topology.c | 31 +++++++++++++++++++++++++++++++
lib/i915/gem_engine_topology.h | 6 ++++++
2 files changed, 37 insertions(+)
diff --git a/lib/i915/gem_engine_topology.c b/lib/i915/gem_engine_topology.c
index fdd1b951672b..fd5be3491b89 100644
--- a/lib/i915/gem_engine_topology.c
+++ b/lib/i915/gem_engine_topology.c
@@ -270,6 +270,37 @@ int gem_context_lookup_engine(int fd, uint64_t engine, uint32_t ctx_id,
return 0;
}
+int gem_context_get_eb_flags(int fd, uint32_t ctx_id,
+ struct i915_engine_class_instance *ci)
+{
+ DEFINE_CONTEXT_ENGINES_PARAM(engines, param, ctx_id, GEM_MAX_ENGINES);
+
+ /* legacy kernels */
+ if (gem_topology_get_param(fd, ¶m)) {
+ const struct intel_execution_engine2 *e;
+
+ __for_each_static_engine(e)
+ if (e->class == ci->engine_class &&
+ e->instance == ci->engine_instance)
+ return e->flags;
+
+ return -EINVAL;
+ }
+
+ /* context has no engine mapped */
+ if (!param.size)
+ return -EINVAL;
+
+ /* engine map lookup */
+ for (int i = 0; i < param.size; i++)
+ if (engines.engines[i].engine_class == ci->engine_class &&
+ engines.engines[i].engine_instance == ci->engine_instance)
+ return i;
+
+ /* engine is not mapped in the given context */
+ return -EINVAL;
+}
+
void gem_context_set_all_engines(int fd, uint32_t ctx)
{
DEFINE_CONTEXT_ENGINES_PARAM(engines, param, ctx, GEM_MAX_ENGINES);
diff --git a/lib/i915/gem_engine_topology.h b/lib/i915/gem_engine_topology.h
index 2415fd1e379b..57b5473bbd5a 100644
--- a/lib/i915/gem_engine_topology.h
+++ b/lib/i915/gem_engine_topology.h
@@ -53,6 +53,12 @@ int gem_context_lookup_engine(int fd, uint64_t engine, uint32_t ctx_id,
void gem_context_set_all_engines(int fd, uint32_t ctx);
+int gem_context_get_eb_flags(int fd, uint32_t ctx_id,
+ struct i915_engine_class_instance *ci);
+
+#define gem_context_get_eb_flags_ci(f, c, ...) \
+ gem_context_get_eb_flags(f, c, &((struct i915_engine_class_instance){__VA_ARGS__}))
+
#define __for_each_static_engine(e__) \
for ((e__) = intel_execution_engines2; (e__)->name; (e__)++)
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related
* Re: [PATCH 3/3] crypto: inside-secure - add support for using the EIP197 without firmware images
From: Antoine Tenart @ 2019-06-20 13:15 UTC (permalink / raw)
To: Pascal Van Leeuwen
Cc: Antoine Tenart, Pascal van Leeuwen, linux-crypto@vger.kernel.org,
herbert@gondor.apana.org.au, davem@davemloft.net
In-Reply-To: <AM6PR09MB3523D2FEC3A543FF037812DCD2E50@AM6PR09MB3523.eurprd09.prod.outlook.com>
Hi Pascal,
On Wed, Jun 19, 2019 at 02:37:44PM +0000, Pascal Van Leeuwen wrote:
> > From: Antoine Tenart <antoine.tenart@bootlin.com>
> > On Tue, Jun 18, 2019 at 07:56:24AM +0200, Pascal van Leeuwen wrote:
>
> > In addition to this, the direction the kernel has taken was to *remove*
> > binary firmwares from its source code. I'm afraid adding this is a
> > no-go.
>
> For a HW engineer, there really is no fundamental difference between
> control register contents or an instruction word. They can both have
> the exact same effects internal to the HW.
> If I had disguised this as a handful of config reg writes writing
> some #define'd magic values, probably no one would have even noticed.
I do not fully agree. If this is comparable to configuring h/w
registers, then you could probably have defines explaining why each bit
is set and what it's doing. Which would be fine.
> By that same definition, the tokens the driver generates for
> processing could be considered "firmware" as well (as they are used by
> the hardware in a very similar way) ...
Right. The main difference here is we do have a clear definition of what
the tokens are doing. Thanks to your explanation, if this firmware is
really looking like the token we're using, the words have a defined
structure and the magic values could be generated with proper defines
and macros. And I think it's the main issue here: it's not acceptable to
have an array of magic values. If you can give a meaning to those bits,
I see no reason why it couldn't be added to the driver.
(And I'm all for what you're trying to achieve here :)).
> > The proper solution I believe would be to support loading this "MiniFW",
> > which (depending on the license) could be either distributed in the
> > rootfs and loaded (like what's done currently), or through
> > CONFIG_EXTRA_FIRMWARE.
> >
> That seems total overkill for just a handful of words though.
Given your explanation, I agree. (If those bits can have meaning).
Thanks!
Antoine
--
Antoine Ténart, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
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.