From patchwork Tue Mar 16 15:24:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikos Nikoleris X-Patchwork-Id: 12142465 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9740AC4332D for ; Tue, 16 Mar 2021 15:25:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 731EF650E8 for ; Tue, 16 Mar 2021 15:25:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234021AbhCPPYj (ORCPT ); Tue, 16 Mar 2021 11:24:39 -0400 Received: from foss.arm.com ([217.140.110.172]:46160 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229973AbhCPPYN (ORCPT ); Tue, 16 Mar 2021 11:24:13 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 18C94101E; Tue, 16 Mar 2021 08:24:13 -0700 (PDT) Received: from localhost.localdomain (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3B0643F792; Tue, 16 Mar 2021 08:24:12 -0700 (PDT) From: Nikos Nikoleris To: kvm@vger.kernel.org Cc: pbonzini@redhat.com, drjones@redhat.com, alexandru.elisei@arm.com, andre.przywara@arm.com Subject: [kvm-unit-tests PATCH 1/4] lib/string: add strnlen and strrchr Date: Tue, 16 Mar 2021 15:24:02 +0000 Message-Id: <20210316152405.50363-2-nikos.nikoleris@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316152405.50363-1-nikos.nikoleris@arm.com> References: <20210316152405.50363-1-nikos.nikoleris@arm.com> MIME-Version: 1.0 X-ARM-No-Footer: FoSSMail Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org This change adds two functions from in preparation for an update in the libfdt. Signed-off-by: Nikos Nikoleris --- lib/string.h | 4 +++- lib/string.c | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/string.h b/lib/string.h index 493d51b..8da687e 100644 --- a/lib/string.h +++ b/lib/string.h @@ -7,12 +7,14 @@ #ifndef __STRING_H #define __STRING_H -extern unsigned long strlen(const char *buf); +extern size_t strlen(const char *buf); +extern size_t strnlen(const char *buf, size_t maxlen); extern char *strcat(char *dest, const char *src); extern char *strcpy(char *dest, const char *src); extern int strcmp(const char *a, const char *b); extern int strncmp(const char *a, const char *b, size_t n); extern char *strchr(const char *s, int c); +extern char *strrchr(const char *s, int c); extern char *strstr(const char *haystack, const char *needle); extern void *memset(void *s, int c, size_t n); extern void *memcpy(void *dest, const void *src, size_t n); diff --git a/lib/string.c b/lib/string.c index 75257f5..9cd626f 100644 --- a/lib/string.c +++ b/lib/string.c @@ -7,15 +7,24 @@ #include "libcflat.h" -unsigned long strlen(const char *buf) +size_t strlen(const char *buf) { - unsigned long len = 0; + size_t len = 0; while (*buf++) ++len; return len; } +size_t strnlen(const char *buf, size_t maxlen) +{ + const char *sc; + + for (sc = buf; maxlen-- && *sc != '\0'; ++sc) + /* nothing */; + return sc - buf; +} + char *strcat(char *dest, const char *src) { char *p = dest; @@ -55,6 +64,16 @@ char *strchr(const char *s, int c) return (char *)s; } +char *strrchr(const char *s, int c) +{ + const char *last = NULL; + do { + if (*s != (char)c) + last = s; + } while (*s++); + return (char *)last; +} + char *strstr(const char *s1, const char *s2) { size_t l1, l2; From patchwork Tue Mar 16 15:24:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikos Nikoleris X-Patchwork-Id: 12142463 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95B46C433E6 for ; Tue, 16 Mar 2021 15:25:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 84AEE65074 for ; Tue, 16 Mar 2021 15:25:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235953AbhCPPYk (ORCPT ); Tue, 16 Mar 2021 11:24:40 -0400 Received: from foss.arm.com ([217.140.110.172]:46176 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231989AbhCPPYP (ORCPT ); Tue, 16 Mar 2021 11:24:15 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 88FED106F; Tue, 16 Mar 2021 08:24:15 -0700 (PDT) Received: from localhost.localdomain (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B2AA13F792; Tue, 16 Mar 2021 08:24:14 -0700 (PDT) From: Nikos Nikoleris To: kvm@vger.kernel.org Cc: pbonzini@redhat.com, drjones@redhat.com, alexandru.elisei@arm.com, andre.przywara@arm.com Subject: [kvm-unit-tests PATCH 3/4] Makefile: Avoid double definition of libfdt_clean Date: Tue, 16 Mar 2021 15:24:04 +0000 Message-Id: <20210316152405.50363-4-nikos.nikoleris@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316152405.50363-1-nikos.nikoleris@arm.com> References: <20210316152405.50363-1-nikos.nikoleris@arm.com> MIME-Version: 1.0 X-ARM-No-Footer: FoSSMail Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org libfdt_clean is now defined in the libfdt Makefile and as a result, we don't need to redefine it in the top Makefile. In addition we define some variables for the remaining libfdt_clean rule. Signed-off-by: Nikos Nikoleris --- Makefile | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index e0828fe..37aa3c6 100644 --- a/Makefile +++ b/Makefile @@ -40,8 +40,6 @@ cflatobjs := \ LIBFDT_objdir = lib/libfdt LIBFDT_srcdir = $(SRCDIR)/lib/libfdt LIBFDT_archive = $(LIBFDT_objdir)/libfdt.a -LIBFDT_include = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_INCLUDES)) -LIBFDT_version = $(addprefix $(LIBFDT_srcdir)/,$(LIBFDT_VERSION)) OBJDIRS += $(LIBFDT_objdir) @@ -90,6 +88,10 @@ $(LIBFDT_archive): CFLAGS += -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/li $(LIBFDT_archive): $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS)) $(AR) rcs $@ $^ +libfdt_clean: VECHO = echo " " +libfdt_clean: STD_CLEANFILES = *.o *.d +libfdt_clean: LIBFDT_dir = $(LIBFDT_objdir) +libfdt_clean: SHAREDLIB_EXT = so # Build directory target .PHONY: directories @@ -113,12 +115,8 @@ install: standalone clean: arch_clean $(RM) lib/.*.d $(libcflat) $(cflatobjs) -libfdt_clean: - $(RM) $(LIBFDT_archive) \ - $(addprefix $(LIBFDT_objdir)/,$(LIBFDT_OBJS)) \ - $(LIBFDT_objdir)/.*.d - distclean: clean libfdt_clean + $(RM) $(LIBFDT_archive) $(RM) lib/asm lib/config.h config.mak $(TEST_DIR)-run msr.out cscope.* build-head $(RM) -r tests logs logs.old From patchwork Tue Mar 16 15:24:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikos Nikoleris X-Patchwork-Id: 12142467 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CFC54C4332B for ; Tue, 16 Mar 2021 15:25:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 94347650DB for ; Tue, 16 Mar 2021 15:25:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236550AbhCPPYn (ORCPT ); Tue, 16 Mar 2021 11:24:43 -0400 Received: from foss.arm.com ([217.140.110.172]:46180 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232967AbhCPPYQ (ORCPT ); Tue, 16 Mar 2021 11:24:16 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 94C03113E; Tue, 16 Mar 2021 08:24:16 -0700 (PDT) Received: from localhost.localdomain (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BDB6F3F792; Tue, 16 Mar 2021 08:24:15 -0700 (PDT) From: Nikos Nikoleris To: kvm@vger.kernel.org Cc: pbonzini@redhat.com, drjones@redhat.com, alexandru.elisei@arm.com, andre.przywara@arm.com Subject: [kvm-unit-tests PATCH 4/4] devicetree: Parse correctly the stdout-path Date: Tue, 16 Mar 2021 15:24:05 +0000 Message-Id: <20210316152405.50363-5-nikos.nikoleris@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210316152405.50363-1-nikos.nikoleris@arm.com> References: <20210316152405.50363-1-nikos.nikoleris@arm.com> MIME-Version: 1.0 X-ARM-No-Footer: FoSSMail Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org The stdout-path property in the device tree is a string of the form "UART_NODE:OPTS" Where UART_NODE is a compatible serial port and OPTS specify parameters such as the baud. Fix the way we parse the node and, at least for now, ignore options as we don't act on them. Signed-off-by: Nikos Nikoleris --- lib/string.h | 1 + lib/devicetree.c | 15 +++++++++------ lib/string.c | 7 +++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/string.h b/lib/string.h index 8da687e..e1febfe 100644 --- a/lib/string.h +++ b/lib/string.h @@ -15,6 +15,7 @@ extern int strcmp(const char *a, const char *b); extern int strncmp(const char *a, const char *b, size_t n); extern char *strchr(const char *s, int c); extern char *strrchr(const char *s, int c); +extern char *strchrnul(const char *s, int c); extern char *strstr(const char *haystack, const char *needle); extern void *memset(void *s, int c, size_t n); extern void *memcpy(void *dest, const void *src, size_t n); diff --git a/lib/devicetree.c b/lib/devicetree.c index 1020324..409d18b 100644 --- a/lib/devicetree.c +++ b/lib/devicetree.c @@ -265,21 +265,24 @@ int dt_get_bootargs(const char **bootargs) int dt_get_default_console_node(void) { - const struct fdt_property *prop; + const char *p, *q; int node, len; node = fdt_path_offset(fdt, "/chosen"); if (node < 0) return node; - prop = fdt_get_property(fdt, node, "stdout-path", &len); - if (!prop) { - prop = fdt_get_property(fdt, node, "linux,stdout-path", &len); - if (!prop) + p = fdt_getprop(fdt, node, "stdout-path", &len); + if (!p) { + p = fdt_getprop(fdt, node, "linux,stdout-path", &len); + if (!p) return len; } - return fdt_path_offset(fdt, prop->data); + q = strchrnul(p, ':'); + len = q - p; + + return fdt_path_offset_namelen(fdt, p, len); } int dt_get_initrd(const char **initrd, u32 *size) diff --git a/lib/string.c b/lib/string.c index 9cd626f..c5853dc 100644 --- a/lib/string.c +++ b/lib/string.c @@ -74,6 +74,13 @@ char *strrchr(const char *s, int c) return (char *)last; } +char *strchrnul(const char *s, int c) +{ + while (*s && *s != (char)c) + s++; + return (char *)s; +} + char *strstr(const char *s1, const char *s2) { size_t l1, l2;