From patchwork Fri May 26 06:28:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oliver O'Halloran X-Patchwork-Id: 767244 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wYx6y1vj3z9s89 for ; Fri, 26 May 2017 16:29:14 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SRxU386U"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3wYx6y0nnkzDqR2 for ; Fri, 26 May 2017 16:29:14 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SRxU386U"; dkim-atps=neutral X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Received: from mail-pf0-x243.google.com (mail-pf0-x243.google.com [IPv6:2607:f8b0:400e:c00::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3wYx6j1dGrzDqTN for ; Fri, 26 May 2017 16:29:01 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SRxU386U"; dkim-atps=neutral Received: by mail-pf0-x243.google.com with SMTP id w69so609448pfk.1 for ; Thu, 25 May 2017 23:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Jg8NjZWYAPAUhllEyxWTYUoysB6vHirEGIeYcUXgEmM=; b=SRxU386UZiOEP8jJlOUFP/P0hDxxasa6Ymsiyt34D+aYu709UG5m1uqmMdXd3zOl8x YN2xqqDCtgIxvHs+jTvhVVvdgeNirQlF3motbTMDvANejSwSEglny6N7TRojpQxGCHd2 5enjMBCEr3kV34xBTgJ1z52A4E9creDm29NB8TjIE8lJ9CJ5IR+e/F6Rwbd2k1QjB/Px zFYvUy4Er31ijda9cUCZAcR0fu3kc0yu5Goqs0YKBH0V3IDPpaKDMtLqTohDYTincdEZ e4zENHF0L8n1utDgFpD3UpThrE6q+ai2qjn3YkgpfuKj8nZLf6pDlnCg22YjxQPbrvss Ce2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Jg8NjZWYAPAUhllEyxWTYUoysB6vHirEGIeYcUXgEmM=; b=K/jy5C8pl0AXsJcJ5vnHseBdXGYBxictOedNCWh6hK9BH08FzQ7V56tGFdF/F2uwBB JlXrD7TgXVJ9HsQXsr0NV6SKV/8JjGppD+A40T9eqQioCGowIwMfZHM6XEleh7g65nY/ qlVyqOgFSPHJja8tzV+OxbTZYkFpZ749ZB5hcnff+Ae1VaGrul1vtr+hOjqvoSmsopD+ kuqYpQ2W+AaohGn6tZomiqP+H5t3/+8U+sQjqsu0m0kshtTY9Flcdovnl7G6SW/g+Rsz shz5NNr+jOtUP7czwAr9K94g0osprcfDkSW/wBvtZBNJDq5kuWsnmXnvbgHpT/3I6yzE sU7w== X-Gm-Message-State: AODbwcBVvWdNA7PGrwf/9fqwUQMmxu30U2d1KKhFBuLDX8fhLjZjq80i nIzTEMF1x9sb3eXo X-Received: by 10.99.110.202 with SMTP id j193mr430191pgc.141.1495780139382; Thu, 25 May 2017 23:28:59 -0700 (PDT) Received: from flat-canetoad.ozlabs.ibm.com ([122.99.82.10]) by smtp.gmail.com with ESMTPSA id t79sm16391678pfk.106.2017.05.25.23.28.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 May 2017 23:28:58 -0700 (PDT) From: Oliver O'Halloran To: skiboot@lists.ozlabs.org Date: Fri, 26 May 2017 16:28:39 +1000 Message-Id: <20170526062839.11009-2-oohall@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170526062839.11009-1-oohall@gmail.com> References: <20170526062839.11009-1-oohall@gmail.com> Subject: [Skiboot] [PATCH 2/2] hdata/test: Add memory reservations to hdata_to_dt X-BeenThere: skiboot@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Mailing list for skiboot development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Currently memory reservations are parsed, but since they are not processed until mem_region_init() they don't appear in the output device tree blob. Several bugs have been found with memory reservations so we want them to be part of the test output. Add them and clean up several usages of printf() since we want only the dtb to appear in standard out. Signed-off-by: Oliver O'Halloran Reviewed-by: Gavin Shan --- core/mem_region.c | 22 +++++++++++----------- hdata/test/hdata_to_dt.c | 10 ++++++++++ hdata/test/stubs.c | 20 +++++++++++++------- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/core/mem_region.c b/core/mem_region.c index 57d20955cd86..cdb6b96e18ce 100644 --- a/core/mem_region.c +++ b/core/mem_region.c @@ -291,23 +291,23 @@ void mem_dump_allocs(void) struct alloc_hdr *hdr; /* Second pass: populate property data */ - printf("Memory regions:\n"); + prlog(PR_INFO, "Memory regions:\n"); list_for_each(®ions, region, list) { if (!(region->type == REGION_SKIBOOT_HEAP || region->type == REGION_MEMORY)) continue; - printf(" 0x%012llx..%012llx : %s\n", + prlog(PR_INFO, " 0x%012llx..%012llx : %s\n", (long long)region->start, (long long)(region->start + region->len - 1), region->name); if (region->free_list.n.next == NULL) { - printf(" no allocs\n"); + prlog(PR_INFO, " no allocs\n"); continue; } for (hdr = region_start(region); hdr; hdr = next_hdr(region, hdr)) { if (hdr->free) continue; - printf(" 0x%.8lx %s\n", hdr->num_longs * sizeof(long), + prlog(PR_INFO, " 0x%.8lx %s\n", hdr->num_longs * sizeof(long), hdr_location(hdr)); } } @@ -322,7 +322,7 @@ int64_t mem_dump_free(void) total_free = 0; - printf("Free space in HEAP memory regions:\n"); + prlog(PR_INFO, "Free space in HEAP memory regions:\n"); list_for_each(®ions, region, list) { if (!(region->type == REGION_SKIBOOT_HEAP || region->type == REGION_MEMORY)) @@ -338,12 +338,12 @@ int64_t mem_dump_free(void) region_free+= hdr->num_longs * sizeof(long); } - printf("Region %s free: %"PRIx64"\n", + prlog(PR_INFO, "Region %s free: %"PRIx64"\n", region->name, region_free); total_free += region_free; } - printf("Total free: %"PRIu64"\n", total_free); + prlog(PR_INFO, "Total free: %"PRIu64"\n", total_free); return total_free; } @@ -1106,7 +1106,7 @@ void mem_region_release_unused(void) lock(&mem_region_lock); assert(!mem_regions_finalised); - printf("Releasing unused memory:\n"); + prlog(PR_INFO, "Releasing unused memory:\n"); list_for_each(®ions, r, list) { uint64_t used_len; @@ -1117,7 +1117,7 @@ void mem_region_release_unused(void) used_len = allocated_length(r); - printf(" %s: %llu/%llu used\n", + prlog(PR_INFO, " %s: %llu/%llu used\n", r->name, (long long)used_len, (long long)r->len); /* We keep the skiboot heap. */ @@ -1221,7 +1221,7 @@ void mem_region_add_dt_reserved(void) name = names = malloc(names_len); range = ranges = malloc(ranges_len); - printf("Reserved regions:\n"); + prlog(PR_INFO, "Reserved regions:\n"); /* Second pass: populate property data */ list_for_each(®ions, region, list) { if (!region_is_reservable(region)) @@ -1230,7 +1230,7 @@ void mem_region_add_dt_reserved(void) memcpy(name, region->name, len); name += len; - printf(" 0x%012llx..%012llx : %s\n", + prlog(PR_INFO, " 0x%012llx..%012llx : %s\n", (long long)region->start, (long long)(region->start + region->len - 1), region->name); diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c index e8b7ed66242e..3568eb6ceb10 100644 --- a/hdata/test/hdata_to_dt.c +++ b/hdata/test/hdata_to_dt.c @@ -67,6 +67,7 @@ unsigned long tb_hz = 512000000; #define __CPU_H struct cpu_thread { uint32_t pir; + uint32_t chip_id; }; struct cpu_thread __boot_cpu, *boot_cpu = &__boot_cpu; @@ -94,6 +95,11 @@ struct dt_node *add_ics_node(void) static bool spira_check_ptr(const void *ptr, const char *file, unsigned int line); +/* should probably check this */ +#define BITS_PER_LONG 64 +/* not used, just needs to exist */ +#define cpu_max_pir 0x7 + #include "../cpu-common.c" #include "../fsp.c" #include "../hdif.c" @@ -113,6 +119,7 @@ static bool spira_check_ptr(const void *ptr, const char *file, unsigned int line #include "../../test/dt_common.c" #include "../../core/fdt.c" #include "../../hw/phys-map.c" +#include "../../core/mem_region.c" #include @@ -335,6 +342,9 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } + mem_region_init(); + mem_region_release_unused(); + if (!blobs) squash_blobs(dt_root); diff --git a/hdata/test/stubs.c b/hdata/test/stubs.c index 0777730f418c..169d3f0eece9 100644 --- a/hdata/test/stubs.c +++ b/hdata/test/stubs.c @@ -23,8 +23,6 @@ #include "../../ccan/list/list.c" -unsigned long top_of_ram = 16ULL * 1024 * 1024 * 1024; - void _prlog(int log_level __attribute__((unused)), const char* fmt, ...) __attribute__((format (printf, 2, 3))); #ifndef pr_fmt @@ -102,9 +100,17 @@ STUB(fsp_adjust_lid_side); STUB(backtrace); /* Add HW specific stubs here */ -static void noop_function(void) {} -#define NOOP_STUB(fnname) \ - void fnname(void) __attribute__((weak, alias ("noop_function"))) - +static bool true_stub(void) { return true; } +static bool false_stub(void) { return false; } + +#define TRUE_STUB(fnname) \ + void fnname(void) __attribute__((weak, alias ("true_stub"))) +#define FALSE_STUB(fnname) \ + void fnname(void) __attribute__((weak, alias ("false_stub"))) +#define NOOP_STUB FALSE_STUB + +TRUE_STUB(lock_held_by_me); +NOOP_STUB(lock); +NOOP_STUB(unlock); NOOP_STUB(early_uart_init); -NOOP_STUB(mem_reserve_hw); +NOOP_STUB(add_chip_dev_associativity);