From patchwork Wed Sep 12 09:52:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oliver O'Halloran X-Patchwork-Id: 968933 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 429HFB1tNtz9sBZ for ; Wed, 12 Sep 2018 19:54:38 +1000 (AEST) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ivo6NVU0"; dkim-atps=neutral Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 429HFB081SzF35x for ; Wed, 12 Sep 2018 19:54:38 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com 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="Ivo6NVU0"; dkim-atps=neutral X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::544; helo=mail-pg1-x544.google.com; envelope-from=oohall@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ivo6NVU0"; dkim-atps=neutral Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) (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 429HCW0FJWzF35x for ; Wed, 12 Sep 2018 19:53:11 +1000 (AEST) Received: by mail-pg1-x544.google.com with SMTP id d19-v6so797542pgv.1 for ; Wed, 12 Sep 2018 02:53:10 -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=Iv2D/D9OEDXORMZ0pDu6Q4imIjgUz6ta5xVSzJOUfJ8=; b=Ivo6NVU0UOeHb+fqiXJraWUCU3PSQZfAux+ni7PDMop3fJCP2smdgzoNEC2Zi1qj/G hoEhN6Nrt8tj966UyqJXUEXsHyPRLwlZVyt5Izc4DqoUJC0J6DxAToBtjU9NqT6LV9Jw uIyrVdY13d6Kt998v/DgmtWnxaqf7n1/mV1/JrFOXq5yOZ94Yv9zva1ZxX8+AfyN/8xR vYqA+PzdSvUTmoLO7BfaSOWZwGqpQT/NXB2I76q+rHEL6b9CyzuPlfL2zDbFBFb0W80T vOKwFVJuagf1KPShmnaCIGbmX5ZvO03PPUHMrhe3wg3P1ZUoCTMWQbZ42uBOabD2yH7Q NznQ== 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=Iv2D/D9OEDXORMZ0pDu6Q4imIjgUz6ta5xVSzJOUfJ8=; b=ai8/3MumpyxY5ciDUHOCKaSxJZBkhk2bBHemOWhY3v0OuR32SUgYP/TVv1oJLC7Pd3 X3D56sb7d7dDBBy1+FsZfqgvxVNIm0do5IBwk6l3Vb3nd1CSBi/r/AHdgLREhQ8FWAiq rHdaLGOAC8nSY1L9dK03jmKVBzFwA+8en12v1ELWh8GsITdmLugQPZM/vWG1H0BSLO65 ZJp7r7pCJ//AZ1C7sxh+u6IPvaDFnvEATfms1nz+Tj1srPU+I2g/pmHLY2njgvXrrix7 0KZW+6Jh5IEFnxXjmvo2CgEmnJdeQuQaQ7ztGxBlMeCahnD/tcoROL90ErWLIP+mdO6W kgyQ== X-Gm-Message-State: APzg51AhzW/+vUgtx7HXHWPYUfmlMiKC30lj7xKlMCjlmWsladL/5LPG QituOr3lSjaSU5/e9xWv5XFPOw4d X-Google-Smtp-Source: ANB0Vdbo6A/RFp7WDR6wFgINNaB6K8TmFQkPTgWVmVzdZLRsm22Jli1891K3Bo1bdcvcaFXUBBc+GQ== X-Received: by 2002:a63:7217:: with SMTP id n23-v6mr1249520pgc.193.1536745989263; Wed, 12 Sep 2018 02:53:09 -0700 (PDT) Received: from flat-canetoad.ozlabs.ibm.com ([122.99.82.10]) by smtp.gmail.com with ESMTPSA id d132-v6sm1166307pgc.93.2018.09.12.02.53.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Sep 2018 02:53:08 -0700 (PDT) From: Oliver O'Halloran To: skiboot@lists.ozlabs.org Date: Wed, 12 Sep 2018 19:52:48 +1000 Message-Id: <20180912095248.27557-5-oohall@gmail.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20180912095248.27557-1-oohall@gmail.com> References: <20180912095248.27557-1-oohall@gmail.com> Subject: [Skiboot] [RFC PATCH 4/4] phb4: Eliminate peltv_cache X-BeenThere: skiboot@lists.ozlabs.org X-Mailman-Version: 2.1.29 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" This is also an in-memory table and there's not a whole lot of point in having two copies of it in the system. This patch removes it and shaves another 128KB off the size of each struct phb4 as a result. Signed-off-by: Oliver O'Halloran --- hw/phb4.c | 30 +++++++++++++----------------- include/phb4.h | 3 +-- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/hw/phb4.c b/hw/phb4.c index 88d7bddfe990..a449314e7182 100644 --- a/hw/phb4.c +++ b/hw/phb4.c @@ -933,7 +933,6 @@ static void phb4_init_ioda_cache(struct phb4 *p) * ever let a live FF RTT even temporarily when resetting * for EEH etc... (HW278969). */ - memset(p->peltv_cache, 0x0, sizeof(p->peltv_cache)); memset(p->tve_cache, 0x0, sizeof(p->tve_cache)); /* XXX Should we mask them ? */ @@ -1161,11 +1160,11 @@ static int64_t phb4_ioda_reset(struct phb *phb, bool purge) /* Additional OPAL specific inits */ - /* Clear RTT and PELTV and PEST */ + /* Clear RTT and PELTV */ for (i = 0; i < RTT_TABLE_ENTRIES; i++) p->tbl_rtt[i] = PHB4_RESERVED_PE_NUM(p); - memcpy((void *)p->tbl_peltv, p->peltv_cache, p->tbl_peltv_size); + memset(p->tbl_peltv, 0x0, p->tbl_peltv_size); /* Clear PEST & PEEV */ for (i = 0; i < p->max_num_pes; i++) { @@ -2211,7 +2210,6 @@ static int64_t phb4_set_peltv(struct phb *phb, uint8_t state) { struct phb4 *p = phb_to_phb4(phb); - uint8_t *peltv; uint32_t idx, mask; /* Sanity check */ @@ -2223,15 +2221,10 @@ static int64_t phb4_set_peltv(struct phb *phb, idx += (child_pe / 8); mask = 0x1 << (7 - (child_pe % 8)); - peltv = (uint8_t *)p->tbl_peltv; - peltv += idx; - if (state) { - *peltv |= mask; - p->peltv_cache[idx] |= mask; - } else { - *peltv &= ~mask; - p->peltv_cache[idx] &= ~mask; - } + if (state) + p->tbl_peltv[idx] |= mask; + else + p->tbl_peltv[idx] &= ~mask; return OPAL_SUCCESS; } @@ -4522,7 +4515,8 @@ static void phb4_init_ioda3(struct phb4 *p) out_be64(p->regs + PHB_RTT_BAR, (u64) p->tbl_rtt | PHB_RTT_BAR_ENABLE); /* Init_21 - PELT-V BAR */ - out_be64(p->regs + PHB_PELTV_BAR, p->tbl_peltv | PHB_PELTV_BAR_ENABLE); + out_be64(p->regs + PHB_PELTV_BAR, + (u64) p->tbl_peltv | PHB_PELTV_BAR_ENABLE); /* Init_22 - Setup M32 starting address */ out_be64(p->regs + PHB_M32_START_ADDR, M32_PCI_START); @@ -5029,9 +5023,9 @@ static void phb4_allocate_tables(struct phb4 *p) for (i = 0; i < RTT_TABLE_ENTRIES; i++) p->tbl_rtt[i] = PHB4_RESERVED_PE_NUM(p); - p->tbl_peltv = (uint64_t)local_alloc(p->chip_id, p->tbl_peltv_size, p->tbl_peltv_size); + p->tbl_peltv = local_alloc(p->chip_id, p->tbl_peltv_size, p->tbl_peltv_size); assert(p->tbl_peltv); - memset((void *)p->tbl_peltv, 0, p->tbl_peltv_size); + memset(p->tbl_peltv, 0, p->tbl_peltv_size); p->tbl_pest = (uint64_t)local_alloc(p->chip_id, p->tbl_pest_size, p->tbl_pest_size); assert(p->tbl_pest); @@ -5139,7 +5133,9 @@ static void phb4_add_properties(struct phb4 *p) hi32((u64) p->tbl_rtt), lo32((u64) p->tbl_rtt), RTT_TABLE_SIZE); dt_add_property_cells(np, "ibm,opal-peltv-table", - hi32(p->tbl_peltv), lo32(p->tbl_peltv), p->tbl_peltv_size); + hi32((u64) p->tbl_peltv), lo32((u64) p->tbl_peltv), + p->tbl_peltv_size); + dt_add_property_cells(np, "ibm,opal-pest-table", hi32(p->tbl_pest), lo32(p->tbl_pest), p->tbl_pest_size); diff --git a/include/phb4.h b/include/phb4.h index b1bdcd7f7660..2057fcd0f1b5 100644 --- a/include/phb4.h +++ b/include/phb4.h @@ -195,7 +195,7 @@ struct phb4 { /* SkiBoot owned in-memory tables */ uint16_t *tbl_rtt; - uint64_t tbl_peltv; + uint8_t *tbl_peltv; uint64_t tbl_peltv_size; uint64_t tbl_pest; uint64_t tbl_pest_size; @@ -214,7 +214,6 @@ struct phb4 { /* FIXME: dynamically allocate only what's needed below */ uint64_t tve_cache[1024]; - uint8_t peltv_cache[PELTV_TABLE_SIZE_MAX]; uint64_t mbt_cache[32][2]; uint64_t mdt_cache[512]; /* max num of PEs */ uint64_t mist_cache[4096/4];/* max num of MSIs */