automatic DPDK test reports
 help / color / mirror / Atom feed
* |WARNING| pw115985-115986 [PATCH] [6/6] service: provide links to functions in documentation
@ 2022-09-06 16:40 dpdklab
  0 siblings, 0 replies; only message in thread
From: dpdklab @ 2022-09-06 16:40 UTC (permalink / raw)
  To: test-report; +Cc: dpdk-test-reports

[-- Attachment #1: Type: text/plain, Size: 6133 bytes --]

Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/115985

_apply patch failure_

Submitter: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Date: Tuesday, September 06 2022 16:13:52 
Applied on: CommitID:4aee6110bb10b0225fa9562f2e48af233a9058a1
Apply patch set 115985-115986 failed:

Checking patch lib/eal/common/rte_service.c...
error: while searching for:
	 * on currently.
	 */
	uint32_t num_mapped_cores;

	/* 32-bit builds won't naturally align a uint64_t, so force alignment,
	 * allowing regular reads to be atomic.
	 */
	uint64_t calls __rte_aligned(8);
	uint64_t cycles_spent __rte_aligned(8);
} __rte_cache_aligned;

/* Mask used to ensure uint64_t 8 byte vars are naturally aligned. */
#define RTE_SERVICE_STAT_ALIGN_MASK (8 - 1)

/* the internal values of a service core */
struct core_state {
	/* map of services IDs are run on this core */

error: patch failed: lib/eal/common/rte_service.c:50
Hunk #2 succeeded at 64 (offset 2 lines).
Hunk #3 succeeded at 132 (offset 2 lines).
Hunk #4 succeeded at 152 (offset 2 lines).
Hunk #5 succeeded at 214 (offset 2 lines).
Hunk #6 succeeded at 251 (offset 2 lines).
error: while searching for:
{
	void *userdata = s->spec.callback_userdata;

	/* Ensure the atomically stored variables are naturally aligned,
	 * as required for regular loads to be atomic.
	 */
	RTE_BUILD_BUG_ON((offsetof(struct rte_service_spec_impl, calls)
		& RTE_SERVICE_STAT_ALIGN_MASK) != 0);
	RTE_BUILD_BUG_ON((offsetof(struct rte_service_spec_impl, cycles_spent)
		& RTE_SERVICE_STAT_ALIGN_MASK) != 0);

	if (service_stats_enabled(s)) {
		uint64_t start = rte_rdtsc();
		s->spec.callback(userdata);
		uint64_t end = rte_rdtsc();
		uint64_t cycles = end - start;
		cs->calls_per_service[service_idx]++;
		if (service_mt_safe(s)) {
			__atomic_fetch_add(&s->cycles_spent, cycles, __ATOMIC_RELAXED);
			__atomic_fetch_add(&s->calls, 1, __ATOMIC_RELAXED);
		} else {
			uint64_t cycles_new = s->cycles_spent + cycles;
			uint64_t calls_new = s->calls++;
			__atomic_store_n(&s->cycles_spent, cycles_new, __ATOMIC_RELAXED);
			__atomic_store_n(&s->calls, calls_new, __ATOMIC_RELAXED);
		}
	} else
		s->spec.callback(userdata);
}

error: patch failed: lib/eal/common/rte_service.c:366
Hunk #8 succeeded at 417 (offset -9 lines).
Hunk #9 succeeded at 464 (offset -9 lines).
Hunk #10 succeeded at 590 (offset -9 lines).
Hunk #11 succeeded at 795 (offset -9 lines).
Hunk #12 succeeded at 885 (offset -9 lines).
Hunk #13 succeeded at 895 (offset -9 lines).
Hunk #14 succeeded at 928 (offset -9 lines).
Hunk #15 succeeded at 957 (offset -9 lines).
Hunk #16 succeeded at 975 (offset -9 lines).
Applying patch lib/eal/common/rte_service.c with 2 rejects...
Rejected hunk #1.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Rejected hunk #7.
Hunk #8 applied cleanly.
Hunk #9 applied cleanly.
Hunk #10 applied cleanly.
Hunk #11 applied cleanly.
Hunk #12 applied cleanly.
Hunk #13 applied cleanly.
Hunk #14 applied cleanly.
Hunk #15 applied cleanly.
Hunk #16 applied cleanly.
diff a/lib/eal/common/rte_service.c b/lib/eal/common/rte_service.c	(rejected hunks)
@@ -50,17 +50,8 @@ struct rte_service_spec_impl {
 	 * on currently.
 	 */
 	uint32_t num_mapped_cores;
-
-	/* 32-bit builds won't naturally align a uint64_t, so force alignment,
-	 * allowing regular reads to be atomic.
-	 */
-	uint64_t calls __rte_aligned(8);
-	uint64_t cycles_spent __rte_aligned(8);
 } __rte_cache_aligned;
 
-/* Mask used to ensure uint64_t 8 byte vars are naturally aligned. */
-#define RTE_SERVICE_STAT_ALIGN_MASK (8 - 1)
-
 /* the internal values of a service core */
 struct core_state {
 	/* map of services IDs are run on this core */
@@ -366,29 +361,24 @@ service_runner_do_callback(struct rte_service_spec_impl *s,
 {
 	void *userdata = s->spec.callback_userdata;
 
-	/* Ensure the atomically stored variables are naturally aligned,
-	 * as required for regular loads to be atomic.
-	 */
-	RTE_BUILD_BUG_ON((offsetof(struct rte_service_spec_impl, calls)
-		& RTE_SERVICE_STAT_ALIGN_MASK) != 0);
-	RTE_BUILD_BUG_ON((offsetof(struct rte_service_spec_impl, cycles_spent)
-		& RTE_SERVICE_STAT_ALIGN_MASK) != 0);
-
 	if (service_stats_enabled(s)) {
 		uint64_t start = rte_rdtsc();
 		s->spec.callback(userdata);
 		uint64_t end = rte_rdtsc();
 		uint64_t cycles = end - start;
-		cs->calls_per_service[service_idx]++;
-		if (service_mt_safe(s)) {
-			__atomic_fetch_add(&s->cycles_spent, cycles, __ATOMIC_RELAXED);
-			__atomic_fetch_add(&s->calls, 1, __ATOMIC_RELAXED);
-		} else {
-			uint64_t cycles_new = s->cycles_spent + cycles;
-			uint64_t calls_new = s->calls++;
-			__atomic_store_n(&s->cycles_spent, cycles_new, __ATOMIC_RELAXED);
-			__atomic_store_n(&s->calls, calls_new, __ATOMIC_RELAXED);
-		}
+
+		/* The lcore service worker thread is the only writer,
+		 * and thus only a non-atomic load and an atomic store
+		 * is needed, and not the more expensive atomic
+		 * add.
+		 */
+		__atomic_store_n(&cs->calls_per_service[service_idx],
+				 cs->calls_per_service[service_idx] + 1,
+				 __ATOMIC_RELAXED);
+
+		__atomic_store_n(&cs->cycles_per_service[service_idx],
+				 cs->cycles_per_service[service_idx] + cycles,
+				 __ATOMIC_RELAXED);
 	} else
 		s->spec.callback(userdata);
 }
Checking patch app/test/test_service_cores.c...
Checking patch lib/eal/common/rte_service.c...
error: lib/eal/common/rte_service.c: does not match index
Checking patch lib/eal/include/rte_service.h...
Applied patch app/test/test_service_cores.c cleanly.
Applied patch lib/eal/include/rte_service.h cleanly.
Checking patch lib/eal/common/rte_service.c...
error: lib/eal/common/rte_service.c: does not match index
Checking patch lib/eal/common/rte_service.c...
error: lib/eal/common/rte_service.c: does not match index
Checking patch lib/eal/include/rte_service_component.h...
Applied patch lib/eal/include/rte_service_component.h cleanly.
Checking patch lib/eal/include/rte_service.h...
error: lib/eal/include/rte_service.h: does not match index

https://lab.dpdk.org/results/dashboard/patchsets/23427/

UNH-IOL DPDK Community Lab

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-09-06 16:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06 16:40 |WARNING| pw115985-115986 [PATCH] [6/6] service: provide links to functions in documentation dpdklab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).