From patchwork Wed Sep 6 10:10:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830311 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=MkDFHg6n; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdS15dRGz1yh5 for ; Wed, 6 Sep 2023 20:10:57 +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.a=rsa-sha256 header.s=20221208 header.b=MkDFHg6n; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdS14Nnzz30D2 for ; Wed, 6 Sep 2023 20:10:57 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=MkDFHg6n; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102d; helo=mail-pj1-x102d.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRd6lz0z2yD6 for ; Wed, 6 Sep 2023 20:10:37 +1000 (AEST) Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-26f57f02442so2176700a91.0 for ; Wed, 06 Sep 2023 03:10:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995035; x=1694599835; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8n693SKas31AvrUWItdEi4FpF/Bx2D0s77BE4ihSqO0=; b=MkDFHg6nAKrq8AN1E6k7T2pdDJnitbwV5flvn5blMmr/R37JEXgWCraoPebr9D4wAQ 1IPu/4bXnbBmFqjrpY28v7rGIolj4TjXgHrgWYjVMxQWUXN2DH+yuWRTaQ+nJgfBdnua xbYNJVzDmu5o5x14hAUGV3mcZwg7yzuCDCMPsySqpGeqYd91Hsuo2c3h/78X8cFusl/y Mj/dJH3cK65NKxWXJTSfmcuGa0UerM89tS6RUDrFMVtCFpjvKbiwv56I2Vn3HnWGEhIl wnFYEom54Jec7D2tb8LU9ZyyIuJ1tpeD01aQRWtI1Ql6ef8OcjMY0ptLDLtGhYY97ftN pUMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995035; x=1694599835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8n693SKas31AvrUWItdEi4FpF/Bx2D0s77BE4ihSqO0=; b=FK4UcpjkBOpdJnYkse/maSHUSh+iMOB1LA1/prXni+yOJA7LoxkdwmcXWfNKpTXWkI q9fR0X5Fu5fZRA/2ck+iWNunpKud1W9906+TGGV6/C1Kd6fCfAzaPsNoRGI78a3GYtJT Ev1Jkd4IpKTw/wW5alcsAYmIps+fOyU0viMBUGrxSerPTbgNZRSwdvM5dXdpI0Dvi3Pr 7C3sFcqwEniqEvGsyy8kd1KBRv6FXjkj5hX00gRzI/GNKxZvcAUh3w60mJuGE6pUxo1p +Y08BpqGe52Iu4kJk+p1zZFoTy5nYYX75haFKOVLhCW/l58j0G5xVln5zwve+i+1Yh4M ObOQ== X-Gm-Message-State: AOJu0Ywm7ZPUdZelTaovCHrfaj+mmF4ErcW3MDj/zh/l4+8YhOd/j2TQ iDEzevpw1tccFUewwiI5B66jEPqKt0U= X-Google-Smtp-Source: AGHT+IGom11jwsM+D/ATORUdxYVk1JALXUUVZmdt4Ly1VfY5V4K5hMOrX0WoP71xOnwcyZVSUFDJTQ== X-Received: by 2002:a17:90b:1986:b0:268:314f:8f35 with SMTP id mv6-20020a17090b198600b00268314f8f35mr12248742pjb.6.1693995033341; Wed, 06 Sep 2023 03:10:33 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:32 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:11 +1000 Message-Id: <20230906101017.130276-2-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 1/7] hdata: Add POWER10 Rainier tests 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Grab a SPIRA-S from a booted Rainier system and plug it in. Signed-off-by: Nicholas Piggin --- hdata/test/Makefile.check | 3 + hdata/test/p10-rainier.dts | 4234 +++++++++++++++++++++++++++++++++ hdata/test/p10-rainier.spiras | Bin 0 -> 8388608 bytes 3 files changed, 4237 insertions(+) create mode 100644 hdata/test/p10-rainier.dts create mode 100644 hdata/test/p10-rainier.spiras GIT binary patch literal 8388608 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%0AK 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 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0?SvRSuIq} z<$HOqi~s=w1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0Rja6ZnyqptE%n*fR`4*jDZS^ z8L+{{$f$zQf*CQJN&DJjI|^+I0&dPy+CmFR5nANOHj!+@sljEP5>%pSWVp%14M7&e zk0oTxp#n-a=dvIIVVz{eMa9k8-Fsi*u}7h{!~L_*N$$Px-Fv^^d(P*ad(I_5fB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N 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/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p81-811.spira.dts, $< device-tree) $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E -s hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p8-840-spira.dts, $< device-tree) $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -9 -s hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/op920.wsp.dts, $< device-tree) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -10 -s hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p10-rainier.dts, $< device-tree) hdata/test/hdata_to_dt-gcov-run: hdata/test/hdata_to_dt-check-dt-gcov-run @@ -33,6 +35,7 @@ hdata/test/hdata_to_dt-check-dt-gcov-run: hdata/test/hdata_to_dt-gcov $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt-gcov -8E hdata/test/p81-811.spira hdata/test/p81-811.spira.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p81-811.spira.dts, $< device-tree) $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt-gcov -8E -s hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p8-840-spira.dts, $< device-tree) $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt -9 -s hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/op920.wsp.dts, $< device-tree) + $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt -10 -s hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p10-rainier.dts, $< device-tree) hdata/test/stubs.o: hdata/test/stubs.c $(call Q, HOSTCC , $(HOSTCC) $(HOSTCFLAGS) -g -c -o $@ $<, $<) diff --git a/hdata/test/p10-rainier.dts b/hdata/test/p10-rainier.dts new file mode 100644 index 000000000..c52187729 --- /dev/null +++ b/hdata/test/p10-rainier.dts @@ -0,0 +1,4234 @@ +/dts-v1/; + +/ { + phandle = <0x01>; + #address-cells = <0x02>; + #size-cells = <0x02>; + compatible = "ibm,powernv\0ibm,p10-openbmc\0ibm,rainier-2s2u"; + nest-frequency = <0x00 0x861c4680>; + vendor = "IBM"; + ibm,sw-checkstop-fir = <0x3040100 0x3c>; + ibm,io-base-loc-code = "U78DA.ND0.WZS003Y-P0"; + ibm,vpd-lx-info = <0x00 0x31000401 0x300071>; + model = "9105-22A"; + system-id = "139F260"; + system-brand = "S0"; + model-name = "ibm,rainier-2s2u"; + + bmc { + phandle = <0x02>; + #address-cells = <0x01>; + #size-cells = <0x00>; + compatible = "ibm,ast2600,openbmc"; + }; + + cpus { + phandle = <0x19>; + #address-cells = <0x01>; + #size-cells = <0x00>; + + PowerPC,POWER10@10 { + phandle = <0x1a>; + device_type = "cpu"; + status = "okay"; + reg = <0x10>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x1b>; + ibm,pir = <0x10>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17>; + }; + + PowerPC,POWER10@18 { + phandle = <0x1d>; + device_type = "cpu"; + status = "okay"; + reg = <0x18>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x1e>; + ibm,pir = <0x18>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f>; + }; + + PowerPC,POWER10@20 { + phandle = <0x20>; + device_type = "cpu"; + status = "okay"; + reg = <0x20>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x21>; + ibm,pir = <0x20>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27>; + }; + + PowerPC,POWER10@28 { + phandle = <0x23>; + device_type = "cpu"; + status = "okay"; + reg = <0x28>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x24>; + ibm,pir = <0x28>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f>; + }; + + PowerPC,POWER10@50 { + phandle = <0x26>; + device_type = "cpu"; + status = "okay"; + reg = <0x50>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x27>; + ibm,pir = <0x50>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57>; + }; + + PowerPC,POWER10@58 { + phandle = <0x29>; + device_type = "cpu"; + status = "okay"; + reg = <0x58>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x2a>; + ibm,pir = <0x58>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e 0x5f>; + }; + + PowerPC,POWER10@60 { + phandle = <0x2c>; + device_type = "cpu"; + status = "okay"; + reg = <0x60>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x2d>; + ibm,pir = <0x60>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x60 0x61 0x62 0x63 0x64 0x65 0x66 0x67>; + }; + + PowerPC,POWER10@78 { + phandle = <0x2f>; + device_type = "cpu"; + status = "okay"; + reg = <0x78>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x30>; + ibm,pir = <0x78>; + ibm,chip-id = <0x00>; + ibm,ppc-interrupt-server#s = <0x78 0x79 0x7a 0x7b 0x7c 0x7d 0x7e 0x7f>; + }; + + PowerPC,POWER10@218 { + phandle = <0x32>; + device_type = "cpu"; + status = "okay"; + reg = <0x218>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x33>; + ibm,pir = <0x218>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x218 0x219 0x21a 0x21b 0x21c 0x21d 0x21e 0x21f>; + }; + + PowerPC,POWER10@228 { + phandle = <0x35>; + device_type = "cpu"; + status = "okay"; + reg = <0x228>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x36>; + ibm,pir = <0x228>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x228 0x229 0x22a 0x22b 0x22c 0x22d 0x22e 0x22f>; + }; + + PowerPC,POWER10@250 { + phandle = <0x38>; + device_type = "cpu"; + status = "okay"; + reg = <0x250>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x39>; + ibm,pir = <0x250>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x250 0x251 0x252 0x253 0x254 0x255 0x256 0x257>; + }; + + PowerPC,POWER10@258 { + phandle = <0x3b>; + device_type = "cpu"; + status = "okay"; + reg = <0x258>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x3c>; + ibm,pir = <0x258>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x258 0x259 0x25a 0x25b 0x25c 0x25d 0x25e 0x25f>; + }; + + PowerPC,POWER10@260 { + phandle = <0x3e>; + device_type = "cpu"; + status = "okay"; + reg = <0x260>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x3f>; + ibm,pir = <0x260>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x260 0x261 0x262 0x263 0x264 0x265 0x266 0x267>; + }; + + PowerPC,POWER10@268 { + phandle = <0x41>; + device_type = "cpu"; + status = "okay"; + reg = <0x268>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x42>; + ibm,pir = <0x268>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x268 0x269 0x26a 0x26b 0x26c 0x26d 0x26e 0x26f>; + }; + + PowerPC,POWER10@270 { + phandle = <0x44>; + device_type = "cpu"; + status = "okay"; + reg = <0x270>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x45>; + ibm,pir = <0x270>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x270 0x271 0x272 0x273 0x274 0x275 0x276 0x277>; + }; + + PowerPC,POWER10@278 { + phandle = <0x47>; + device_type = "cpu"; + status = "okay"; + reg = <0x278>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x48>; + ibm,pir = <0x278>; + ibm,chip-id = <0x02>; + ibm,ppc-interrupt-server#s = <0x278 0x279 0x27a 0x27b 0x27c 0x27d 0x27e 0x27f>; + }; + + PowerPC,POWER10@410 { + phandle = <0x4a>; + device_type = "cpu"; + status = "okay"; + reg = <0x410>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x4b>; + ibm,pir = <0x410>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x410 0x411 0x412 0x413 0x414 0x415 0x416 0x417>; + }; + + PowerPC,POWER10@420 { + phandle = <0x4d>; + device_type = "cpu"; + status = "okay"; + reg = <0x420>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x4e>; + ibm,pir = <0x420>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x420 0x421 0x422 0x423 0x424 0x425 0x426 0x427>; + }; + + PowerPC,POWER10@428 { + phandle = <0x50>; + device_type = "cpu"; + status = "okay"; + reg = <0x428>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x51>; + ibm,pir = <0x428>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x428 0x429 0x42a 0x42b 0x42c 0x42d 0x42e 0x42f>; + }; + + PowerPC,POWER10@450 { + phandle = <0x53>; + device_type = "cpu"; + status = "okay"; + reg = <0x450>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x54>; + ibm,pir = <0x450>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x450 0x451 0x452 0x453 0x454 0x455 0x456 0x457>; + }; + + PowerPC,POWER10@458 { + phandle = <0x56>; + device_type = "cpu"; + status = "okay"; + reg = <0x458>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x57>; + ibm,pir = <0x458>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x458 0x459 0x45a 0x45b 0x45c 0x45d 0x45e 0x45f>; + }; + + PowerPC,POWER10@460 { + phandle = <0x59>; + device_type = "cpu"; + status = "okay"; + reg = <0x460>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x5a>; + ibm,pir = <0x460>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x460 0x461 0x462 0x463 0x464 0x465 0x466 0x467>; + }; + + PowerPC,POWER10@468 { + phandle = <0x5c>; + device_type = "cpu"; + status = "okay"; + reg = <0x468>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x5d>; + ibm,pir = <0x468>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x468 0x469 0x46a 0x46b 0x46c 0x46d 0x46e 0x46f>; + }; + + PowerPC,POWER10@478 { + phandle = <0x5f>; + device_type = "cpu"; + status = "okay"; + reg = <0x478>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x60>; + ibm,pir = <0x478>; + ibm,chip-id = <0x04>; + ibm,ppc-interrupt-server#s = <0x478 0x479 0x47a 0x47b 0x47c 0x47d 0x47e 0x47f>; + }; + + PowerPC,POWER10@618 { + phandle = <0x62>; + device_type = "cpu"; + status = "okay"; + reg = <0x618>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x63>; + ibm,pir = <0x618>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x618 0x619 0x61a 0x61b 0x61c 0x61d 0x61e 0x61f>; + }; + + PowerPC,POWER10@620 { + phandle = <0x65>; + device_type = "cpu"; + status = "okay"; + reg = <0x620>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x66>; + ibm,pir = <0x620>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x620 0x621 0x622 0x623 0x624 0x625 0x626 0x627>; + }; + + PowerPC,POWER10@650 { + phandle = <0x68>; + device_type = "cpu"; + status = "okay"; + reg = <0x650>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x69>; + ibm,pir = <0x650>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x650 0x651 0x652 0x653 0x654 0x655 0x656 0x657>; + }; + + PowerPC,POWER10@658 { + phandle = <0x6b>; + device_type = "cpu"; + status = "okay"; + reg = <0x658>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x6c>; + ibm,pir = <0x658>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x658 0x659 0x65a 0x65b 0x65c 0x65d 0x65e 0x65f>; + }; + + PowerPC,POWER10@660 { + phandle = <0x6e>; + device_type = "cpu"; + status = "okay"; + reg = <0x660>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x6f>; + ibm,pir = <0x660>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x660 0x661 0x662 0x663 0x664 0x665 0x666 0x667>; + }; + + PowerPC,POWER10@668 { + phandle = <0x71>; + device_type = "cpu"; + status = "okay"; + reg = <0x668>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x72>; + ibm,pir = <0x668>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x668 0x669 0x66a 0x66b 0x66c 0x66d 0x66e 0x66f>; + }; + + PowerPC,POWER10@670 { + phandle = <0x74>; + device_type = "cpu"; + status = "okay"; + reg = <0x670>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x75>; + ibm,pir = <0x670>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x670 0x671 0x672 0x673 0x674 0x675 0x676 0x677>; + }; + + PowerPC,POWER10@678 { + phandle = <0x77>; + device_type = "cpu"; + status = "okay"; + reg = <0x678>; + cpu-version = <0x800100>; + 64-bit; + 32-64-bridge; + graphics; + general-purpose; + ibm,processor-segment-sizes = <0x1c 0x28 0xffffffff 0xffffffff>; + ibm,processor-page-sizes = <0x0c 0x10 0x18 0x22>; + ibm,processor-radix-AP-encodings = <0x0c 0xa0000010 0x20000015 0x4000001e>; + ibm,mmu-pid-bits = <0x14>; + ibm,mmu-lpid-bits = <0x0c>; + ibm,segment-page-sizes = <0x0c 0x00 0x03 0x0c 0x00 0x10 0x07 0x18 0x38 0x10 0x110 0x02 0x10 0x01 0x18 0x08 0x18 0x100 0x01 0x18 0x00 0x22 0x120 0x01 0x22 0x03>; + ibm,pa-features = <0x4200f63f 0xc7c080d0 0x80000000 0x00 0x8000 0x80008000 0x8000 0x80008000 0x8000 0x80000000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000 0x80008000>; + ibm,slb-size = <0x20>; + ibm,vmx = <0x02>; + ibm,dfp = <0x02>; + ibm,purr = <0x01>; + ibm,spurr = <0x01>; + clock-frequency = <0x9af8da00>; + ibm,extended-clock-frequency = <0x00 0x9af8da00>; + timebase-frequency = <0x1e848000>; + ibm,extended-timebase-frequency = <0x00 0x1e848000>; + reservation-granule-size = <0x80>; + d-tlb-size = <0x1000>; + i-tlb-size = <0x00>; + tlb-size = <0x1000>; + d-tlb-sets = <0x400>; + i-tlb-sets = <0x00>; + tlb-sets = <0x400>; + d-cache-block-size = <0x80>; + i-cache-block-size = <0x80>; + d-cache-size = <0x8000>; + i-cache-size = <0xc000>; + i-cache-sets = <0x40>; + d-cache-sets = <0x20>; + performance-monitor = <0x00 0x01>; + l2-cache = <0x78>; + ibm,pir = <0x678>; + ibm,chip-id = <0x06>; + ibm,ppc-interrupt-server#s = <0x678 0x679 0x67a 0x67b 0x67c 0x67d 0x67e 0x67f>; + }; + + l2-cache@20000010 { + phandle = <0x1b>; + device_type = "cache"; + reg = <0x20000010>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x1c>; + }; + + l2-cache@20000018 { + phandle = <0x1e>; + device_type = "cache"; + reg = <0x20000018>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x1f>; + }; + + l2-cache@20000020 { + phandle = <0x21>; + device_type = "cache"; + reg = <0x20000020>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x22>; + }; + + l2-cache@20000028 { + phandle = <0x24>; + device_type = "cache"; + reg = <0x20000028>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x25>; + }; + + l2-cache@20000050 { + phandle = <0x27>; + device_type = "cache"; + reg = <0x20000050>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x28>; + }; + + l2-cache@20000058 { + phandle = <0x2a>; + device_type = "cache"; + reg = <0x20000058>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x2b>; + }; + + l2-cache@20000060 { + phandle = <0x2d>; + device_type = "cache"; + reg = <0x20000060>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x2e>; + }; + + l2-cache@20000078 { + phandle = <0x30>; + device_type = "cache"; + reg = <0x20000078>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x31>; + }; + + l2-cache@20000218 { + phandle = <0x33>; + device_type = "cache"; + reg = <0x20000218>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x34>; + }; + + l2-cache@20000228 { + phandle = <0x36>; + device_type = "cache"; + reg = <0x20000228>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x37>; + }; + + l2-cache@20000250 { + phandle = <0x39>; + device_type = "cache"; + reg = <0x20000250>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x3a>; + }; + + l2-cache@20000258 { + phandle = <0x3c>; + device_type = "cache"; + reg = <0x20000258>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x3d>; + }; + + l2-cache@20000260 { + phandle = <0x3f>; + device_type = "cache"; + reg = <0x20000260>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x40>; + }; + + l2-cache@20000268 { + phandle = <0x42>; + device_type = "cache"; + reg = <0x20000268>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x43>; + }; + + l2-cache@20000270 { + phandle = <0x45>; + device_type = "cache"; + reg = <0x20000270>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x46>; + }; + + l2-cache@20000278 { + phandle = <0x48>; + device_type = "cache"; + reg = <0x20000278>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x49>; + }; + + l2-cache@20000410 { + phandle = <0x4b>; + device_type = "cache"; + reg = <0x20000410>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x4c>; + }; + + l2-cache@20000420 { + phandle = <0x4e>; + device_type = "cache"; + reg = <0x20000420>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x4f>; + }; + + l2-cache@20000428 { + phandle = <0x51>; + device_type = "cache"; + reg = <0x20000428>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x52>; + }; + + l2-cache@20000450 { + phandle = <0x54>; + device_type = "cache"; + reg = <0x20000450>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x55>; + }; + + l2-cache@20000458 { + phandle = <0x57>; + device_type = "cache"; + reg = <0x20000458>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x58>; + }; + + l2-cache@20000460 { + phandle = <0x5a>; + device_type = "cache"; + reg = <0x20000460>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x5b>; + }; + + l2-cache@20000468 { + phandle = <0x5d>; + device_type = "cache"; + reg = <0x20000468>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x5e>; + }; + + l2-cache@20000478 { + phandle = <0x60>; + device_type = "cache"; + reg = <0x20000478>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x61>; + }; + + l2-cache@20000618 { + phandle = <0x63>; + device_type = "cache"; + reg = <0x20000618>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x64>; + }; + + l2-cache@20000620 { + phandle = <0x66>; + device_type = "cache"; + reg = <0x20000620>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x67>; + }; + + l2-cache@20000650 { + phandle = <0x69>; + device_type = "cache"; + reg = <0x20000650>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x6a>; + }; + + l2-cache@20000658 { + phandle = <0x6c>; + device_type = "cache"; + reg = <0x20000658>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x6d>; + }; + + l2-cache@20000660 { + phandle = <0x6f>; + device_type = "cache"; + reg = <0x20000660>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x70>; + }; + + l2-cache@20000668 { + phandle = <0x72>; + device_type = "cache"; + reg = <0x20000668>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x73>; + }; + + l2-cache@20000670 { + phandle = <0x75>; + device_type = "cache"; + reg = <0x20000670>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x76>; + }; + + l2-cache@20000678 { + phandle = <0x78>; + device_type = "cache"; + reg = <0x20000678>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x100000>; + i-cache-size = <0x100000>; + l2-cache = <0x79>; + }; + + l3-cache@30000010 { + phandle = <0x1c>; + device_type = "cache"; + reg = <0x30000010>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000018 { + phandle = <0x1f>; + device_type = "cache"; + reg = <0x30000018>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000020 { + phandle = <0x22>; + device_type = "cache"; + reg = <0x30000020>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000028 { + phandle = <0x25>; + device_type = "cache"; + reg = <0x30000028>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000050 { + phandle = <0x28>; + device_type = "cache"; + reg = <0x30000050>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000058 { + phandle = <0x2b>; + device_type = "cache"; + reg = <0x30000058>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000060 { + phandle = <0x2e>; + device_type = "cache"; + reg = <0x30000060>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000078 { + phandle = <0x31>; + device_type = "cache"; + reg = <0x30000078>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000218 { + phandle = <0x34>; + device_type = "cache"; + reg = <0x30000218>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000228 { + phandle = <0x37>; + device_type = "cache"; + reg = <0x30000228>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000250 { + phandle = <0x3a>; + device_type = "cache"; + reg = <0x30000250>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000258 { + phandle = <0x3d>; + device_type = "cache"; + reg = <0x30000258>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000260 { + phandle = <0x40>; + device_type = "cache"; + reg = <0x30000260>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000268 { + phandle = <0x43>; + device_type = "cache"; + reg = <0x30000268>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000270 { + phandle = <0x46>; + device_type = "cache"; + reg = <0x30000270>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000278 { + phandle = <0x49>; + device_type = "cache"; + reg = <0x30000278>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000410 { + phandle = <0x4c>; + device_type = "cache"; + reg = <0x30000410>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000420 { + phandle = <0x4f>; + device_type = "cache"; + reg = <0x30000420>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000428 { + phandle = <0x52>; + device_type = "cache"; + reg = <0x30000428>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000450 { + phandle = <0x55>; + device_type = "cache"; + reg = <0x30000450>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000458 { + phandle = <0x58>; + device_type = "cache"; + reg = <0x30000458>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000460 { + phandle = <0x5b>; + device_type = "cache"; + reg = <0x30000460>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000468 { + phandle = <0x5e>; + device_type = "cache"; + reg = <0x30000468>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000478 { + phandle = <0x61>; + device_type = "cache"; + reg = <0x30000478>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000618 { + phandle = <0x64>; + device_type = "cache"; + reg = <0x30000618>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000620 { + phandle = <0x67>; + device_type = "cache"; + reg = <0x30000620>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000650 { + phandle = <0x6a>; + device_type = "cache"; + reg = <0x30000650>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000658 { + phandle = <0x6d>; + device_type = "cache"; + reg = <0x30000658>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000660 { + phandle = <0x70>; + device_type = "cache"; + reg = <0x30000660>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000668 { + phandle = <0x73>; + device_type = "cache"; + reg = <0x30000668>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000670 { + phandle = <0x76>; + device_type = "cache"; + reg = <0x30000670>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + + l3-cache@30000678 { + phandle = <0x79>; + device_type = "cache"; + reg = <0x30000678>; + status = "okay"; + cache-unified; + d-cache-sets = <0x400>; + i-cache-sets = <0x400>; + d-cache-size = <0x400000>; + i-cache-size = <0x400000>; + }; + }; + + ibm,hostboot { + phandle = <0xd6>; + #size-cells = <0x02>; + #address-cells = <0x02>; + + reserved-memory { + phandle = <0xd7>; + ranges; + #size-cells = <0x02>; + #address-cells = <0x02>; + + ibm,arch-reg-data@803ffce00000 { + phandle = <0xde>; + reg = <0x803f 0xfce00000 0x00 0x600000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "arch-reg-data"; + }; + + ibm,hb-rsv-mem@4000070000000 { + phandle = <0xd8>; + reg = <0x40000 0x70000000 0x00 0x10000000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "hb-rsv-mem"; + }; + + ibm,hbrt-code-image@803ffc820000 { + phandle = <0xe0>; + reg = <0x803f 0xfc820000 0x00 0x4c0000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "ibm,hbrt-code-image"; + }; + + ibm,hbrt-data@803ffcce0000 { + phandle = <0xdf>; + reg = <0x803f 0xfcce0000 0x00 0x120000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "hbrt-data"; + }; + + ibm,homer-image@803ffd800000 { + phandle = <0xd9>; + reg = <0x803f 0xfd800000 0x00 0x400000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "homer-image"; + }; + + ibm,homer-image@803ffdc00000 { + phandle = <0xda>; + reg = <0x803f 0xfdc00000 0x00 0x400000>; + ibm,prd-instance = <0x02>; + ibm,prd-label = "homer-image"; + }; + + ibm,homer-image@803ffe000000 { + phandle = <0xdb>; + reg = <0x803f 0xfe000000 0x00 0x400000>; + ibm,prd-instance = <0x04>; + ibm,prd-label = "homer-image"; + }; + + ibm,homer-image@803ffe400000 { + phandle = <0xdc>; + reg = <0x803f 0xfe400000 0x00 0x400000>; + ibm,prd-instance = <0x06>; + ibm,prd-label = "homer-image"; + }; + + ibm,occ-common-area@803fff800000 { + phandle = <0xdd>; + reg = <0x803f 0xff800000 0x00 0x800000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "occ-common-area"; + }; + + ibm,sbe-comm@803ffc7b0000 { + phandle = <0xe7>; + reg = <0x803f 0xfc7b0000 0x00 0x10000>; + ibm,prd-instance = <0x06>; + ibm,prd-label = "sbe-comm"; + }; + + ibm,sbe-comm@803ffc7d0000 { + phandle = <0xe5>; + reg = <0x803f 0xfc7d0000 0x00 0x10000>; + ibm,prd-instance = <0x04>; + ibm,prd-label = "sbe-comm"; + }; + + ibm,sbe-comm@803ffc7f0000 { + phandle = <0xe3>; + reg = <0x803f 0xfc7f0000 0x00 0x10000>; + ibm,prd-instance = <0x02>; + ibm,prd-label = "sbe-comm"; + }; + + ibm,sbe-comm@803ffc810000 { + phandle = <0xe1>; + reg = <0x803f 0xfc810000 0x00 0x10000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "sbe-comm"; + }; + + ibm,sbe-ffdc@803ffc7a0000 { + phandle = <0xe8>; + reg = <0x803f 0xfc7a0000 0x00 0x10000>; + ibm,prd-instance = <0x06>; + ibm,prd-label = "sbe-ffdc"; + }; + + ibm,sbe-ffdc@803ffc7c0000 { + phandle = <0xe6>; + reg = <0x803f 0xfc7c0000 0x00 0x10000>; + ibm,prd-instance = <0x04>; + ibm,prd-label = "sbe-ffdc"; + }; + + ibm,sbe-ffdc@803ffc7e0000 { + phandle = <0xe4>; + reg = <0x803f 0xfc7e0000 0x00 0x10000>; + ibm,prd-instance = <0x02>; + ibm,prd-label = "sbe-ffdc"; + }; + + ibm,sbe-ffdc@803ffc800000 { + phandle = <0xe2>; + reg = <0x803f 0xfc800000 0x00 0x10000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "sbe-ffdc"; + }; + + ibm,sbe-psu@803ffc79f000 { + phandle = <0xe9>; + reg = <0x803f 0xfc79f000 0x00 0x1000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "sbe-psu"; + }; + + ibm,secure-crypt-algo-code@803ffc78f000 { + phandle = <0xea>; + reg = <0x803f 0xfc78f000 0x00 0x10000>; + ibm,prd-instance = <0x00>; + ibm,prd-label = "secure-crypt-algo-code"; + }; + }; + }; + + ibm,opal { + phandle = <0x17>; + + dump { + phandle = <0x7c>; + compatible = "ibm,opal-dump"; + fw-load-area = <0x00 0x20000000 0x00 0x8000000 0x00 0x28000000 0x00 0x8000000>; + }; + + fw-features { + phandle = <0x80>; + + fw-bcctrl-serialized { + phandle = <0x82>; + disabled; + }; + + fw-branch-hints-honored { + phandle = <0x86>; + disabled; + }; + + fw-count-cache-disabled { + phandle = <0x88>; + disabled; + }; + + fw-count-cache-flush-bcctr2,0,0 { + phandle = <0x89>; + enabled; + }; + + fw-l1d-thread-split { + phandle = <0x85>; + disabled; + }; + + fw-link-stack-disabled { + phandle = <0x8a>; + disabled; + }; + + fw-link-stack-flush-bcctr2,0,0 { + phandle = <0x8b>; + disabled; + }; + + inst-l1d-flush-ori30,30,0 { + phandle = <0x83>; + disabled; + }; + + inst-l1d-flush-trig2 { + phandle = <0x84>; + disabled; + }; + + inst-spec-barrier-ori31,31,0 { + phandle = <0x81>; + enabled; + }; + + inst-thread-reconfig-control-trig0-1 { + phandle = <0x87>; + disabled; + }; + + needs-count-cache-flush-on-context-switch { + phandle = <0x91>; + enabled; + }; + + needs-l1d-flush-msr-hv-1-to-0 { + phandle = <0x8e>; + disabled; + }; + + needs-l1d-flush-msr-pr-0-to-1 { + phandle = <0x8f>; + disabled; + }; + + needs-link-stack-flush-on-context-switch { + phandle = <0x92>; + enabled; + }; + + needs-spec-barrier-for-bound-checks { + phandle = <0x90>; + enabled; + }; + + no-need-l1d-flush-kernel-on-user-access { + phandle = <0x94>; + enabled; + }; + + no-need-l1d-flush-msr-pr-1-to-0 { + phandle = <0x93>; + enabled; + }; + + no-need-store-drain-on-priv-state-switch { + phandle = <0x95>; + enabled; + }; + + speculation-policy-favor-security { + phandle = <0x8c>; + enabled; + }; + + user-mode-branch-speculation { + phandle = <0x8d>; + disabled; + }; + }; + + leds { + phandle = <0x18>; + led-mode = "lightpath"; + }; + + power-mgt { + phandle = <0x148>; + ibm,enabled-stop-levels = <0xb0100000>; + }; + }; + + ibm,pcie-slots { + phandle = <0x101>; + #address-cells = <0x02>; + #size-cells = <0x00>; + + root-complex@0,0 { + phandle = <0x102>; + reg = <0x00 0x00>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x00>; + + pluggable { + phandle = <0x103>; + lane-mask = <0xff00>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@0,1 { + phandle = <0x104>; + reg = <0x00 0x01>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x00>; + + pluggable { + phandle = <0x105>; + lane-mask = <0xff>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@0,2 { + phandle = <0x106>; + reg = <0x00 0x02>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x00>; + + pluggable { + phandle = <0x107>; + lane-mask = <0x0f>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@0,3 { + phandle = <0x108>; + reg = <0x00 0x03>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x00>; + + pluggable { + phandle = <0x109>; + lane-mask = <0xffff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@0,4 { + phandle = <0x10d>; + reg = <0x00 0x04>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x00>; + + pluggable { + phandle = <0x10e>; + lane-mask = <0xf0>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@0,5 { + phandle = <0x10f>; + reg = <0x00 0x05>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x00>; + + pluggable { + phandle = <0x110>; + lane-mask = <0x0f>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@2,0 { + phandle = <0x119>; + reg = <0x02 0x00>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x02>; + + pluggable { + phandle = <0x11a>; + lane-mask = <0xff00>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@2,1 { + phandle = <0x11b>; + reg = <0x02 0x01>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x02>; + + pluggable { + phandle = <0x11c>; + lane-mask = <0xff>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@2,2 { + phandle = <0x11d>; + reg = <0x02 0x02>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x02>; + + pluggable { + phandle = <0x11e>; + lane-mask = <0x0f>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@2,3 { + phandle = <0x11f>; + reg = <0x02 0x03>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x02>; + + pluggable { + phandle = <0x120>; + lane-mask = <0xffff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@2,4 { + phandle = <0x124>; + reg = <0x02 0x04>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x02>; + + pluggable { + phandle = <0x125>; + lane-mask = <0xf0>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@2,5 { + phandle = <0x126>; + reg = <0x02 0x05>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x02>; + + pluggable { + phandle = <0x127>; + lane-mask = <0x0f>; + max-power = <0x19>; + nvlink; + }; + }; + + root-complex@4,0 { + phandle = <0x130>; + reg = <0x04 0x00>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x04>; + + pluggable { + phandle = <0x131>; + lane-mask = <0xffff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@4,1 { + phandle = <0x135>; + reg = <0x04 0x01>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x04>; + + pluggable { + phandle = <0x136>; + lane-mask = <0xff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@4,3 { + phandle = <0x132>; + reg = <0x04 0x03>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x04>; + + pluggable { + phandle = <0x133>; + lane-mask = <0xffff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@6,0 { + phandle = <0x140>; + reg = <0x06 0x00>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x06>; + + pluggable { + phandle = <0x141>; + lane-mask = <0xffff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@6,1 { + phandle = <0x145>; + reg = <0x06 0x01>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x06>; + + pluggable { + phandle = <0x146>; + lane-mask = <0xff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + + root-complex@6,3 { + phandle = <0x142>; + reg = <0x06 0x03>; + #address-cells = <0x02>; + #size-cells = <0x00>; + compatible = "ibm,pcie-port\0ibm,pcie-root-port"; + ibm,chip-id = <0x06>; + + pluggable { + phandle = <0x143>; + lane-mask = <0xffff>; + max-power = <0x19>; + hotplug; + nvlink; + }; + }; + }; + + ibm,secureboot { + phandle = <0x7d>; + compatible = "ibm,secureboot\0ibm,secureboot-v2"; + trusted-enabled; + hw-key-hash = <0x40d487ff 0x7380ed6a 0xd54775d5 0x795fea0d 0xe2f541fe 0xa9db06b8 0x466a42a3 0x20e65f75 0xb4866546 0x17d907 0x515dc2a5 0xf9fc5095 0x4d6ee0c9 0xb67d219d 0xfb708535 0x1d01d6d1>; + hw-key-hash-size = <0x40>; + + ibm,cvc { + phandle = <0x149>; + #address-cells = <0x01>; + #size-cells = <0x00>; + compatible = "ibm,container-verification-code"; + memory-region = <0xea>; + + ibm,cvc-service@40 { + phandle = <0x14a>; + compatible = "ibm,cvc-sha512"; + reg = <0x40>; + version = <0x01>; + }; + + ibm,cvc-service@50 { + phandle = <0x14b>; + compatible = "ibm,cvc-verify"; + reg = <0x50>; + version = <0x01>; + }; + }; + }; + + ipl-params { + phandle = <0x7a>; + #address-cells = <0x00>; + #size-cells = <0x00>; + + ipl-params { + phandle = <0x7e>; + #address-cells = <0x00>; + #size-cells = <0x00>; + cec-ipl-side = "temp"; + sp-ipl-side = "temp"; + os-ipl-mode = <0x00>; + cec-major-type = "cold"; + }; + + platform-dump { + phandle = <0x7f>; + }; + + sys-params { + phandle = <0x7b>; + #address-cells = <0x00>; + #size-cells = <0x00>; + ibm,sys-model = " 22A"; + }; + }; + + lpcm-opb@6030000000000 { + phandle = <0x03>; + #address-cells = <0x01>; + #size-cells = <0x01>; + compatible = "ibm,power9-lpcm-opb\0simple-bus"; + reg = <0x60300 0x00 0x01 0x00>; + ibm,chip-id = <0x00>; + ranges = <0x00 0x60300 0x00 0x80000000 0x80000000 0x60300 0x80000000 0x80000000>; + + lpc-controller@c0012000 { + phandle = <0x06>; + compatible = "ibm,power9-lpc-controller"; + reg = <0xc0012000 0x100>; + }; + + lpc@0 { + phandle = <0x07>; + #address-cells = <0x02>; + #size-cells = <0x01>; + compatible = "ibm,power9-lpc\0ibm,power8-lpc"; + ranges = <0x00 0x00 0xe0000000 0x10000000 0x01 0x00 0xd0010000 0x10000 0x03 0x00 0xf0000000 0x10000000>; + + serial@i3f8 { + phandle = <0x08>; + reg = <0x01 0x3f8 0x01>; + compatible = "ns16550"; + current-speed = <0x1c200>; + clock-frequency = <0x1c2000>; + interrupts = <0x04>; + device_type = "serial"; + }; + }; + + opb-arbiter@c0011000 { + phandle = <0x05>; + compatible = "ibm,power9-lpcm-opb-arbiter"; + reg = <0xc0011000 0x08>; + }; + + opb-master@c0010000 { + phandle = <0x04>; + compatible = "ibm,power9-lpcm-opb-master"; + reg = <0xc0010000 0x60>; + }; + }; + + memory@0 { + phandle = <0xd4>; + device_type = "memory"; + reg = <0x00 0x00 0x40 0x00>; + ibm,chip-id = <0x00>; + }; + + memory@800000000000 { + phandle = <0xd5>; + device_type = "memory"; + reg = <0x8000 0x00 0x40 0x00>; + ibm,chip-id = <0x04>; + }; + + vpd { + phandle = <0x09>; + compatible = "ibm,opal-v3-vpd"; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = [84 7c 00 52 54 04 56 49 4e 49 42 33 06 00 00 00 00 00 00 42 34 01 00 42 37 0c 00 00 00 00 00 00 00 00 00 00 00 00 43 43 04 32 45 32 44 43 45 01 31 43 54 04 40 18 00 0c 44 52 10 53 59 53 54 45 4d 20 42 41 43 4b 50 4c 41 4e 45 46 4e 07 30 32 57 47 36 37 36 48 45 04 30 30 30 31 48 57 02 00 01 50 4e 07 30 32 57 47 36 37 38 53 4e 0c 59 31 33 31 55 46 30 37 33 30 32 54 56 5a 02 30 31 78 84 aa 00 52 54 04 56 53 59 53 42 52 02 53 30 44 52 06 53 59 53 54 45 4d 46 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 44 02 20 20 4d 4e 07 20 20 20 20 20 20 20 4e 4e 10 43 30 35 30 37 36 30 42 39 34 34 36 20 20 20 20 52 42 04 31 20 20 20 52 47 04 00 00 00 00 53 45 07 31 33 39 46 32 36 30 53 47 07 20 20 20 20 20 20 20 53 55 06 00 04 ac 1e 65 5a 54 4d 08 39 31 30 35 2d 32 32 41 54 4e 08 20 20 20 20 20 20 20 20 57 4e 0c 20 20 20 20 20 20 20 20 20 20 20 20 78 84 17 00 52 54 04 4c 58 52 30 4c 58 08 31 00 04 01 00 30 00 71 56 5a 02 30 31 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]; + ibm,loc-code = "U9105.22A.139F260"; + + root-node-vpd@a000 { + phandle = <0x0a>; + ibm,loc-code = "U9105.22A.139F260"; + fru-type = [56 56]; + reg = <0xa000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = [84 6a 00 44 52 10 50 52 4f 43 45 53 53 4f 52 20 4d 4f 44 55 4c 45 56 5a 02 20 20 43 43 04 41 42 34 32 43 45 01 31 46 4e 07 46 32 31 30 31 31 30 50 4e 07 30 33 4a 4d 32 39 30 53 4e 0c 59 41 33 39 33 36 30 38 39 37 33 37 50 52 08 37 00 00 01 00 00 80 01 48 45 04 30 30 30 31 43 54 04 00 00 00 00 48 57 02 00 01 50 46 03 00 00 00 78 00 00 00 30 00 38 00 00]; + + enclosure@1e00 { + phandle = <0x0c>; + ibm,loc-code = "U78DA.ND0.WZS003Y"; + fru-type = [45 56]; + reg = <0x1e00>; + #size-cells = <0x00>; + #address-cells = <0x01>; + + backplane@800 { + phandle = <0x0d>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0"; + fru-type = [42 50]; + reg = <0x800>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = [84 7c 00 52 54 04 56 49 4e 49 42 33 06 00 00 00 00 00 00 42 34 01 00 42 37 0c 00 00 00 00 00 00 00 00 00 00 00 00 43 43 04 32 45 32 44 43 45 01 31 43 54 04 40 18 00 0c 44 52 10 53 59 53 54 45 4d 20 42 41 43 4b 50 4c 41 4e 45 46 4e 07 30 32 57 47 36 37 36 48 45 04 30 30 30 31 48 57 02 00 01 50 4e 07 30 32 57 47 36 37 38 53 4e 0c 59 31 33 31 55 46 30 37 33 30 32 54 56 5a 02 30 31 78 84 aa 00 52 54 04 56 53 59 53 42 52 02 53 30 44 52 06 53 59 53 54 45 4d 46 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 44 02 20 20 4d 4e 07 20 20 20 20 20 20 20 4e 4e 10 43 30 35 30 37 36 30 42 39 34 34 36 20 20 20 20 52 42 04 31 20 20 20 52 47 04 00 00 00 00 53 45 07 31 33 39 46 32 36 30 53 47 07 20 20 20 20 20 20 20 53 55 06 00 04 ac 1e 65 5a 54 4d 08 39 31 30 35 2d 32 32 41 54 4e 08 20 20 20 20 20 20 20 20 57 4e 0c 20 20 20 20 20 20 20 20 20 20 20 20 78 84 17 00 52 54 04 4c 58 52 30 4c 58 08 31 00 04 01 00 30 00 71 56 5a 02 30 31 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]; + fru-number = "02WG676"; + serial-number = "Y131UF07302T"; + part-number = "02WG678"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [40 18 00]; + hw-characteristics = [00]; + ccin = "2E2D"; + description = "SYSTEM BACKPLANE"; + + interplane-card@4900 { + phandle = <0x0e>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C22"; + fru-type = [49 50]; + reg = <0x4900>; + #size-cells = <0x00>; + #address-cells = <0x01>; + }; + + ms-dimm@d002 { + phandle = <0x0f>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C27"; + fru-type = [4d 53]; + reg = <0xd002>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0xcafebeef 0x18bd 0x1c7f072>; + fru-number = "78P6576"; + serial-number = "YH30MS06N009"; + part-number = "78P6576"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "327C"; + description = "65536"; + ibm,chip-id = <0x00>; + ibm,memory-bus-frequency = <0x00 0x16e3600>; + frequency = <0x9ee7ee80>; + size = "131072"; + }; + + ms-dimm@d003 { + phandle = <0x10>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C32"; + fru-type = [4d 53]; + reg = <0xd003>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0xcafebeef 0x18bd 0x1d12458>; + fru-number = "78P6576"; + serial-number = "YH30MS05E012"; + part-number = "78P6576"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "327C"; + description = "65536"; + ibm,chip-id = <0x00>; + ibm,memory-bus-frequency = <0x00 0x16e3600>; + frequency = <0x9ee7ee80>; + size = "131072"; + }; + + ms-dimm@d012 { + phandle = <0x11>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C21"; + fru-type = [4d 53]; + reg = <0xd012>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0xcafebeef 0x18bd 0x1d542b6>; + fru-number = "78P6576"; + serial-number = "YH30MS05E011"; + part-number = "78P6576"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "327C"; + description = "65536"; + ibm,chip-id = <0x04>; + ibm,memory-bus-frequency = <0x00 0x16e3600>; + frequency = <0x9ee7ee80>; + size = "131072"; + }; + + ms-dimm@d013 { + phandle = <0x12>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C40"; + fru-type = [4d 53]; + reg = <0xd013>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0xcafebeef 0x18bd 0x1baa6b8>; + fru-number = "78P6576"; + serial-number = "YH30MS05E01B"; + part-number = "78P6576"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "327C"; + description = "65536"; + ibm,chip-id = <0x04>; + ibm,memory-bus-frequency = <0x00 0x16e3600>; + frequency = <0x9ee7ee80>; + size = "131072"; + }; + + processor@1000 { + phandle = <0x13>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + fru-type = [50 46]; + reg = <0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0x84a00052 0x54045649 0x4e494452 0x1050524f 0x43455353 0x4f52204d 0x4f44554c 0x45565a02 0x20204343 0x4414234 0x32434501 0x31464e07 0x46323130 0x31313050 0x4e073033 0x4a4d3239 0x30534e0c 0x59413339 0x33363038 0x39373337 0x50520837 0x100 0x800148 0x45043030 0x30314354 0x4000000 0x485702 0x14233 0x6000000 0x42 0x34010042 0x370c0000 0x00 0x00 0x564e 0x1049424d 0x20202020 0x20202020 0x20202020 0x20504603 0x78>; + fru-number = "F210110"; + serial-number = "YA3936089737"; + part-number = "03JM290"; + vendor = "IBM"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "AB42"; + description = "PROCESSOR MODULE"; + ibm,chip-id = <0x00>; + }; + + processor@1001 { + phandle = <0x14>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + fru-type = [50 46]; + reg = <0x1001>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0x84a00052 0x54045649 0x4e494452 0x1050524f 0x43455353 0x4f52204d 0x4f44554c 0x45565a02 0x20204343 0x4414234 0x32434501 0x31464e07 0x46323130 0x31313050 0x4e073033 0x4a4d3239 0x30534e0c 0x59413339 0x33363038 0x39373337 0x50520837 0x100 0x800148 0x45043030 0x30314354 0x4000000 0x485702 0x14233 0x6000000 0x42 0x34010042 0x370c0000 0x00 0x00 0x564e 0x1049424d 0x20202020 0x20202020 0x20202020 0x20504603 0x78>; + fru-number = "F210110"; + serial-number = "YA3936089737"; + part-number = "03JM290"; + vendor = "IBM"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "AB42"; + description = "PROCESSOR MODULE"; + ibm,chip-id = <0x02>; + }; + + processor@1002 { + phandle = <0x15>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + fru-type = [50 46]; + reg = <0x1002>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0x84a00052 0x54045649 0x4e494452 0x1050524f 0x43455353 0x4f52204d 0x4f44554c 0x45565a02 0x20204343 0x4414234 0x32434501 0x31464e07 0x46323130 0x31313050 0x4e073033 0x4a4d3239 0x30534e0c 0x59413339 0x33363039 0x36393031 0x50520837 0x100 0x800148 0x45043030 0x30314354 0x4000000 0x485702 0x14233 0x6000000 0x42 0x34010042 0x370c0000 0x00 0x00 0x564e 0x1049424d 0x20202020 0x20202020 0x20202020 0x20504603 0x78>; + fru-number = "F210110"; + serial-number = "YA3936096901"; + part-number = "03JM290"; + vendor = "IBM"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "AB42"; + description = "PROCESSOR MODULE"; + ibm,chip-id = <0x04>; + }; + + processor@1003 { + phandle = <0x16>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + fru-type = [50 46]; + reg = <0x1003>; + #size-cells = <0x00>; + #address-cells = <0x01>; + ibm,vpd = <0x84a00052 0x54045649 0x4e494452 0x1050524f 0x43455353 0x4f52204d 0x4f44554c 0x45565a02 0x20204343 0x4414234 0x32434501 0x31464e07 0x46323130 0x31313050 0x4e073033 0x4a4d3239 0x30534e0c 0x59413339 0x33363039 0x36393031 0x50520837 0x100 0x800148 0x45043030 0x30314354 0x4000000 0x485702 0x14233 0x6000000 0x42 0x34010042 0x370c0000 0x00 0x00 0x564e 0x1049424d 0x20202020 0x20202020 0x20202020 0x20504603 0x78>; + fru-number = "F210110"; + serial-number = "YA3936096901"; + part-number = "03JM290"; + vendor = "IBM"; + ccin-extension = "1"; + hw-version = [00]; + card-type = [00]; + hw-characteristics = [00]; + ccin = "AB42"; + description = "PROCESSOR MODULE"; + ibm,chip-id = <0x06>; + }; + }; + }; + + system-vpd@1c00 { + phandle = <0x0b>; + ibm,loc-code = "U9105.22A.139F260"; + fru-type = [53 56]; + reg = <0x1c00>; + #size-cells = <0x00>; + #address-cells = <0x01>; + }; + }; + }; + + xscom@e03fc00000000 { + phandle = <0x96>; + ibm,chip-id = <0x00>; + ibm,proc-chip-id = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x01>; + scom-controller; + compatible = "ibm,xscom\0ibm,power10-xscom"; + reg = <0xe03fc 0x00 0x08 0x00>; + bus-frequency = <0x00 0x218711a0>; + ibm,dbob-id = <0x00>; + ibm,occ-functional-state = <0x01>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + ibm,module-vpd = <0xcafebeef 0xffff 0x271cc689>; + part-number = "03JM290"; + serial-number = "YA3936089737"; + ibm,ccm-node-id = <0x00>; + ibm,hw-card-id = <0x00>; + ibm,hw-module-id = <0x00>; + ecid = <0x2a328b0 0xbd042fff 0x472b0000 0xa30000>; + wafer-id = "AZAB2-12 "; + wafer-location = <0x47 0x2b>; + primary; + ibm,primary-topology-index = <0x00>; + + chiptod@40000 { + phandle = <0xeb>; + reg = <0x40000 0x34>; + compatible = "ibm,power-chiptod\0ibm,power10-chiptod"; + primary; + }; + + i2cm@a2000 { + phandle = <0xa2>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa2000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x02>; + clock-frequency = <0x861c468>; + + i2c-bus@0 { + phandle = <0xa4>; + reg = <0x00>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + + eeprom@50 { + phandle = <0xa5>; + reg = <0x50>; + link-id = <0x37>; + compatible = "atmel,24c128"; + label = [00]; + status = "reserved"; + }; + }; + + i2c-bus@1 { + phandle = <0xa3>; + reg = <0x01>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + i2cm@a3000 { + phandle = <0x99>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa3000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x03>; + clock-frequency = <0x861c468>; + + i2c-bus@0 { + phandle = <0xa1>; + reg = <0x00>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@1 { + phandle = <0xa0>; + reg = <0x01>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@8 { + phandle = <0x9f>; + reg = <0x08>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@9 { + phandle = <0x9e>; + reg = <0x09>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@a { + phandle = <0x9d>; + reg = <0x0a>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@b { + phandle = <0x9c>; + reg = <0x0b>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@c { + phandle = <0x9b>; + reg = <0x0c>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@d { + phandle = <0x9a>; + reg = <0x0d>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + nmmu@2010c40 { + phandle = <0xf3>; + compatible = "ibm,power9-nest-mmu"; + reg = <0x2010c40 0x20>; + }; + + nx@2010000 { + phandle = <0xef>; + compatible = "ibm,power9-nx"; + reg = <0x2010000 0x4000>; + }; + + pbcq@2011800 { + phandle = <0xfd>; + reg = <0x2011800 0x100 0x9010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x00>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + + stack@0 { + phandle = <0xfe>; + reg = <0x00>; + ibm,phb-index = <0x03>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0xff>; + reg = <0x01>; + ibm,phb-index = <0x04>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + + stack@2 { + phandle = <0x100>; + reg = <0x02>; + ibm,phb-index = <0x05>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + }; + + pbcq@3011800 { + phandle = <0xf9>; + reg = <0x3011800 0x100 0x8010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x00>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + + stack@0 { + phandle = <0xfa>; + reg = <0x00>; + ibm,phb-index = <0x00>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0xfb>; + reg = <0x01>; + ibm,phb-index = <0x01>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@2 { + phandle = <0xfc>; + reg = <0x02>; + ibm,phb-index = <0x02>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + }; + + psihb@3011d00 { + phandle = <0x97>; + reg = <0x3011d00 0x100>; + compatible = "ibm,power10-psihb-x\0ibm,psihb-x"; + }; + + vas@2011400 { + phandle = <0xa6>; + reg = <0x2011400 0x300>; + compatible = "ibm,power10-vas-x"; + ibm,vas-id = <0x00>; + }; + + xive@2010800 { + phandle = <0x98>; + reg = <0x2010800 0x400>; + compatible = "ibm,power10-xive-x"; + force-assign-bars; + }; + }; + + xscom@e43fc00000000 { + phandle = <0xa7>; + ibm,chip-id = <0x02>; + ibm,proc-chip-id = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x01>; + scom-controller; + compatible = "ibm,xscom\0ibm,power10-xscom"; + reg = <0xe43fc 0x00 0x08 0x00>; + bus-frequency = <0x00 0x218711a0>; + ibm,dbob-id = <0x00>; + ibm,occ-functional-state = <0x01>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + ibm,module-vpd = <0xcafebeef 0xffff 0x28152cc1>; + part-number = "03JM290"; + serial-number = "YA3936089737"; + ibm,ccm-node-id = <0x00>; + ibm,hw-card-id = <0x00>; + ibm,hw-module-id = <0x00>; + ecid = <0x2a328b0 0xbd041fff 0x2c4c0000 0x990000>; + wafer-id = "AZAB2-11 "; + wafer-location = <0x2c 0x4c>; + ibm,primary-topology-index = <0x04>; + + chiptod@40000 { + phandle = <0xec>; + reg = <0x40000 0x34>; + compatible = "ibm,power-chiptod\0ibm,power10-chiptod"; + secondary; + }; + + i2cm@a2000 { + phandle = <0xb3>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa2000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x02>; + clock-frequency = <0x861c468>; + + i2c-bus@1 { + phandle = <0xb4>; + reg = <0x01>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + i2cm@a3000 { + phandle = <0xaa>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa3000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x03>; + clock-frequency = <0x861c468>; + + i2c-bus@2 { + phandle = <0xb2>; + reg = <0x02>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@3 { + phandle = <0xb1>; + reg = <0x03>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@8 { + phandle = <0xb0>; + reg = <0x08>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@9 { + phandle = <0xaf>; + reg = <0x09>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@c { + phandle = <0xae>; + reg = <0x0c>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@d { + phandle = <0xad>; + reg = <0x0d>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@e { + phandle = <0xac>; + reg = <0x0e>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@f { + phandle = <0xab>; + reg = <0x0f>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + nmmu@2010c40 { + phandle = <0xf4>; + compatible = "ibm,power9-nest-mmu"; + reg = <0x2010c40 0x20>; + }; + + nmmu@3010c40 { + phandle = <0xf5>; + compatible = "ibm,power9-nest-mmu"; + reg = <0x3010c40 0x20>; + }; + + nx@2010000 { + phandle = <0xf0>; + compatible = "ibm,power9-nx"; + reg = <0x2010000 0x4000>; + }; + + pbcq@2011800 { + phandle = <0x115>; + reg = <0x2011800 0x100 0x9010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x01>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + + stack@0 { + phandle = <0x116>; + reg = <0x00>; + ibm,phb-index = <0x03>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0x117>; + reg = <0x01>; + ibm,phb-index = <0x04>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@2 { + phandle = <0x118>; + reg = <0x02>; + ibm,phb-index = <0x05>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + }; + + pbcq@3011800 { + phandle = <0x111>; + reg = <0x3011800 0x100 0x8010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x01>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C15"; + + stack@0 { + phandle = <0x112>; + reg = <0x00>; + ibm,phb-index = <0x00>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0x113>; + reg = <0x01>; + ibm,phb-index = <0x01>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@2 { + phandle = <0x114>; + reg = <0x02>; + ibm,phb-index = <0x02>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + }; + + psihb@3011d00 { + phandle = <0xa8>; + reg = <0x3011d00 0x100>; + compatible = "ibm,power10-psihb-x\0ibm,psihb-x"; + }; + + vas@2011400 { + phandle = <0xb5>; + reg = <0x2011400 0x300>; + compatible = "ibm,power10-vas-x"; + ibm,vas-id = <0x01>; + }; + + xive@2010800 { + phandle = <0xa9>; + reg = <0x2010800 0x400>; + compatible = "ibm,power10-xive-x"; + force-assign-bars; + }; + }; + + xscom@e83fc00000000 { + phandle = <0xb6>; + ibm,chip-id = <0x04>; + ibm,proc-chip-id = <0x02>; + #address-cells = <0x01>; + #size-cells = <0x01>; + scom-controller; + compatible = "ibm,xscom\0ibm,power10-xscom"; + reg = <0xe83fc 0x00 0x08 0x00>; + bus-frequency = <0x00 0x218711a0>; + ibm,dbob-id = <0x00>; + ibm,occ-functional-state = <0x01>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + ibm,module-vpd = <0xcafebeef 0xffff 0x2bc2717b>; + part-number = "03JM290"; + serial-number = "YA3936096901"; + ibm,ccm-node-id = <0x00>; + ibm,hw-card-id = <0x00>; + ibm,hw-module-id = <0x00>; + ecid = <0x2a32913 0x7d049fff 0x3e200000 0x1d0000>; + wafer-id = "AZAHD-19 "; + wafer-location = <0x3e 0x20>; + ibm,primary-topology-index = <0x08>; + + chiptod@40000 { + phandle = <0xed>; + reg = <0x40000 0x34>; + compatible = "ibm,power-chiptod\0ibm,power10-chiptod"; + secondary; + }; + + i2cm@a2000 { + phandle = <0xc2>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa2000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x02>; + clock-frequency = <0x861c468>; + + i2c-bus@1 { + phandle = <0xc3>; + reg = <0x01>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + i2cm@a3000 { + phandle = <0xb9>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa3000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x03>; + clock-frequency = <0x861c468>; + + i2c-bus@0 { + phandle = <0xc1>; + reg = <0x00>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@1 { + phandle = <0xc0>; + reg = <0x01>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@8 { + phandle = <0xbf>; + reg = <0x08>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@9 { + phandle = <0xbe>; + reg = <0x09>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@a { + phandle = <0xbd>; + reg = <0x0a>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@b { + phandle = <0xbc>; + reg = <0x0b>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@c { + phandle = <0xbb>; + reg = <0x0c>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@d { + phandle = <0xba>; + reg = <0x0d>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + nmmu@2010c40 { + phandle = <0xf6>; + compatible = "ibm,power9-nest-mmu"; + reg = <0x2010c40 0x20>; + }; + + nx@2010000 { + phandle = <0xf1>; + compatible = "ibm,power9-nx"; + reg = <0x2010000 0x4000>; + }; + + pbcq@2011800 { + phandle = <0x12c>; + reg = <0x2011800 0x100 0x9010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x02>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + + stack@0 { + phandle = <0x12d>; + reg = <0x00>; + ibm,phb-index = <0x03>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0x12e>; + reg = <0x01>; + ibm,phb-index = <0x04>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + + stack@2 { + phandle = <0x12f>; + reg = <0x02>; + ibm,phb-index = <0x05>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + }; + + pbcq@3011800 { + phandle = <0x128>; + reg = <0x3011800 0x100 0x8010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x02>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + + stack@0 { + phandle = <0x129>; + reg = <0x00>; + ibm,phb-index = <0x00>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0x12a>; + reg = <0x01>; + ibm,phb-index = <0x01>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + + stack@2 { + phandle = <0x12b>; + reg = <0x02>; + ibm,phb-index = <0x02>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + }; + + psihb@3011d00 { + phandle = <0xb7>; + reg = <0x3011d00 0x100>; + compatible = "ibm,power10-psihb-x\0ibm,psihb-x"; + }; + + vas@2011400 { + phandle = <0xc4>; + reg = <0x2011400 0x300>; + compatible = "ibm,power10-vas-x"; + ibm,vas-id = <0x02>; + }; + + xive@2010800 { + phandle = <0xb8>; + reg = <0x2010800 0x400>; + compatible = "ibm,power10-xive-x"; + force-assign-bars; + }; + }; + + xscom@ec3fc00000000 { + phandle = <0xc5>; + ibm,chip-id = <0x06>; + ibm,proc-chip-id = <0x03>; + #address-cells = <0x01>; + #size-cells = <0x01>; + scom-controller; + compatible = "ibm,xscom\0ibm,power10-xscom"; + reg = <0xec3fc 0x00 0x08 0x00>; + bus-frequency = <0x00 0x218711a0>; + ibm,dbob-id = <0x00>; + ibm,occ-functional-state = <0x01>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + ibm,module-vpd = <0xcafebeef 0xffff 0x1edc449c>; + part-number = "03JM290"; + serial-number = "YA3936096901"; + ibm,ccm-node-id = <0x00>; + ibm,hw-card-id = <0x00>; + ibm,hw-module-id = <0x00>; + ecid = <0x2a32913 0x7d080fff 0x472b0000 0x410000>; + wafer-id = "AZAHD-20 "; + wafer-location = <0x47 0x2b>; + ibm,primary-topology-index = <0x0c>; + + chiptod@40000 { + phandle = <0xee>; + reg = <0x40000 0x34>; + compatible = "ibm,power-chiptod\0ibm,power10-chiptod"; + secondary; + }; + + i2cm@a2000 { + phandle = <0xd1>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa2000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x02>; + clock-frequency = <0x861c468>; + + i2c-bus@1 { + phandle = <0xd2>; + reg = <0x01>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + i2cm@a3000 { + phandle = <0xc8>; + compatible = "ibm,power8-i2cm\0ibm,power9-i2cm"; + reg = <0xa3000 0x1000>; + #size-cells = <0x00>; + #address-cells = <0x01>; + chip-engine# = <0x03>; + clock-frequency = <0x861c468>; + + i2c-bus@2 { + phandle = <0xd0>; + reg = <0x02>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@3 { + phandle = <0xcf>; + reg = <0x03>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@8 { + phandle = <0xce>; + reg = <0x08>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@9 { + phandle = <0xcd>; + reg = <0x09>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@c { + phandle = <0xcc>; + reg = <0x0c>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@d { + phandle = <0xcb>; + reg = <0x0d>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@e { + phandle = <0xca>; + reg = <0x0e>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + + i2c-bus@f { + phandle = <0xc9>; + reg = <0x0f>; + #size-cells = <0x00>; + #address-cells = <0x01>; + compatible = "ibm,opal-i2c\0ibm,power8-i2c-port\0ibm,power9-i2c-port"; + bus-frequency = <0x61a80>; + }; + }; + + nmmu@2010c40 { + phandle = <0xf7>; + compatible = "ibm,power9-nest-mmu"; + reg = <0x2010c40 0x20>; + }; + + nmmu@3010c40 { + phandle = <0xf8>; + compatible = "ibm,power9-nest-mmu"; + reg = <0x3010c40 0x20>; + }; + + nx@2010000 { + phandle = <0xf2>; + compatible = "ibm,power9-nx"; + reg = <0x2010000 0x4000>; + }; + + pbcq@2011800 { + phandle = <0x13c>; + reg = <0x2011800 0x100 0x9010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x01>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x03>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + + stack@0 { + phandle = <0x13d>; + reg = <0x00>; + ibm,phb-index = <0x03>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0x13e>; + reg = <0x01>; + ibm,phb-index = <0x04>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + + stack@2 { + phandle = <0x13f>; + reg = <0x02>; + ibm,phb-index = <0x05>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + }; + + pbcq@3011800 { + phandle = <0x138>; + reg = <0x3011800 0x100 0x8010800 0x200>; + compatible = "ibm,power10-pbcq"; + ibm,pec-index = <0x00>; + #address-cells = <0x01>; + #size-cells = <0x00>; + ibm,hub-id = <0x03>; + ibm,loc-code = "U78DA.ND0.WZS003Y-P0-C24"; + + stack@0 { + phandle = <0x139>; + reg = <0x00>; + ibm,phb-index = <0x00>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@1 { + phandle = <0x13a>; + reg = <0x01>; + ibm,phb-index = <0x01>; + compatible = "ibm,power10-phb-stack"; + status = "okay"; + ibm,lane-eq = <0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x44444444 0x99999999 0x99999999 0x99999999 0x99999999>; + }; + + stack@2 { + phandle = <0x13b>; + reg = <0x02>; + ibm,phb-index = <0x02>; + compatible = "ibm,power10-phb-stack"; + status = "disabled"; + ibm,lane-eq = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>; + }; + }; + + psihb@3011d00 { + phandle = <0xc6>; + reg = <0x3011d00 0x100>; + compatible = "ibm,power10-psihb-x\0ibm,psihb-x"; + }; + + vas@2011400 { + phandle = <0xd3>; + reg = <0x2011400 0x300>; + compatible = "ibm,power10-vas-x"; + ibm,vas-id = <0x03>; + }; + + xive@2010800 { + phandle = <0xc7>; + reg = <0x2010800 0x400>; + compatible = "ibm,power10-xive-x"; + force-assign-bars; + }; + }; +}; diff --git a/hdata/test/p10-rainier.spiras b/hdata/test/p10-rainier.spiras new file mode 100644 index 0000000000000000000000000000000000000000..82da68c53986c0dedd9d6d3c33b1e069cd86a0bf From patchwork Wed Sep 6 10:10:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830310 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=rsMPheln; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdRs0Q9rz1yh5 for ; Wed, 6 Sep 2023 20:10:49 +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.a=rsa-sha256 header.s=20221208 header.b=rsMPheln; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdRr6T28z3bw9 for ; Wed, 6 Sep 2023 20:10:48 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=rsMPheln; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::530; helo=mail-pg1-x530.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRf1cHJz2yDd for ; Wed, 6 Sep 2023 20:10:37 +1000 (AEST) Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-573fa7c19c7so199347a12.1 for ; Wed, 06 Sep 2023 03:10:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995035; x=1694599835; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8GSDLHX0cSUlED8SVElWjWOUEqu4Z9k09bOV+ZWXM4E=; b=rsMPhelnRRljdZYQWYI3eGF01ACvMRephDBx78yKhChlCEYbEH6XmvjtqPVgccH3ds Ul6for/b1fiik1YITNS1Ur3+gB9tSyW/deV3cH/xKaJ4sBxGjHA1sluaTCXUOEJbT2ZJ Ho1NC684pGdZmbEGgYfj5xKVO5m69t5jbsvXQ0jrgpMDizjHRmIORSuzXHPSNTOs1eiv +/OZ174NkAyFl2set5sGuLfVZK2AoIzVERLT4v6/gqs1+jqsMBqvyIc4HhhMzK6Qd1Vb haGbvHEVpfJzZq7ltDd5OEMz1WOIGAEqDpRBUB5OhDRldoG0YuGC81P2p6ijkGFuYnUJ N+Ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995035; x=1694599835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8GSDLHX0cSUlED8SVElWjWOUEqu4Z9k09bOV+ZWXM4E=; b=Dll4pqkokjVFEFM/PGoHN3KiFITadrBgX4AtSbkkVNk1mvORrH4zRWb1iM//QY0ZcX 0TqXt75Ui4q3YhnY3AuwcdzULmL83Wyup5eB8cAqlWPAxldBz0SU293VPEv52zx09cQ3 F0E3t4IIV9n57m9TA8ZV7SkseKmpat/nRqeeclETa7Oscs8UO8VEMCKDds6FP0rPAXaP ctTXWD9vkgO7roKG4nAHlAVuoaAj0UUpwBt39NXGPmyiWAm+YukYspj4XpcWGF0YbFDs qmLj6Nd53J3KoBmB9peaA0RuLRrHZwjsIRJrANLFAmU/EqYDnEPVH5k1XgPQUb78RgG0 AJ5Q== X-Gm-Message-State: AOJu0YyjI7naxc36P4hrdlgVD394JOs1SQngYBhRPUJNQr55ZlBIIoSv JtJWPPZZlthp6mfhYbPSiczq5A4+Q1w= X-Google-Smtp-Source: AGHT+IGe9Dp7SeYnZpQjEpouoW/Y+IjkZ69WZpUeJ6O4Eb8lRwhlDcZiFeVVgJzG4cTyb8D6LLJNpw== X-Received: by 2002:a17:90a:8689:b0:26d:23c3:9f30 with SMTP id p9-20020a17090a868900b0026d23c39f30mr20577564pjn.14.1693995035445; Wed, 06 Sep 2023 03:10:35 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:35 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:12 +1000 Message-Id: <20230906101017.130276-3-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 2/7] hdata: Use common code for HDIF header check 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Make the HDIF header check use a common function. Signed-off-by: Nicholas Piggin --- hdata/hdif.c | 2 +- hdata/hdif.h | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/hdata/hdif.c b/hdata/hdif.c index 2dfa94cf6..13c128c97 100644 --- a/hdata/hdif.c +++ b/hdata/hdif.c @@ -10,7 +10,7 @@ const void *HDIF_get_idata(const struct HDIF_common_hdr *hdif, unsigned int di, const struct HDIF_common_hdr *hdr = hdif; const struct HDIF_idata_ptr *iptr; - if (be16_to_cpu(hdr->d1f0) != 0xd1f0) { + if (!HDIF_check(hdif, NULL)) { prerror("HDIF: Bad header format !\n"); backtrace(); return NULL; diff --git a/hdata/hdif.h b/hdata/hdif.h index 52df0f16d..38df6c271 100644 --- a/hdata/hdif.h +++ b/hdata/hdif.h @@ -63,12 +63,16 @@ struct HDIF_child_ptr { .size = CPU_TO_BE32(_size), \ } -static inline bool HDIF_check(const void *hdif, const char id[]) +static inline bool HDIF_check(const void *hdif, const char *id) { const struct HDIF_common_hdr *hdr = hdif; - return hdr->d1f0 == CPU_TO_BE16(0xd1f0) && - memcmp(hdr->id, id, sizeof(hdr->id)) == 0; + if (hdr->d1f0 != CPU_TO_BE16(0xd1f0)) + return false; + if (id && memcmp(hdr->id, id, sizeof(hdr->id)) != 0) + return false; + + return true; } /* HDIF_get_idata - Get a pointer to internal data block From patchwork Wed Sep 6 10:10:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830312 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=W1alLMai; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdSC1hWsz1yh5 for ; Wed, 6 Sep 2023 20:11:07 +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.a=rsa-sha256 header.s=20221208 header.b=W1alLMai; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdSC0m0Vz3c8D for ; Wed, 6 Sep 2023 20:11:07 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=W1alLMai; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::d2e; helo=mail-io1-xd2e.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-io1-xd2e.google.com (mail-io1-xd2e.google.com [IPv6:2607:f8b0:4864:20::d2e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRh5J3wz2ydW for ; Wed, 6 Sep 2023 20:10:40 +1000 (AEST) Received: by mail-io1-xd2e.google.com with SMTP id ca18e2360f4ac-792707f78b5so148900939f.1 for ; Wed, 06 Sep 2023 03:10:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995037; x=1694599837; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Mw2T1HhD44ktsMduN7m3gsPhRMsi9D6ZrYLJcqC/5IY=; b=W1alLMai99FVU1XuRprX5k80gtbtuC9vXEXP5/zon7WnVeZFPpW87RDSuB2mVqPoBi PJC7D1pHP6JFzOjENSi7oXzMMjmdH8xakpWtjEXFnMV7pJyMax1mHx0X9NLYNDBy17at IjiQmxtfEfvGIJEqOolgsKtHlHII/nKviaEKTURjnH18aWOa15kIYZZZMdI/hjKf1QDy MB+9J7CVX/RpnE+tds1K9zYpYWpbeapO/0R/Ya3vyaYgH5AeQOYi2jQzpGKWihdwZcjo u5Co4TJYwEf81Ct+z9uVhiJlSe0hSyimVH+ijQ/6r/kej5xOeHNAqJJ43A30ywWCluGb MhTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995037; x=1694599837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Mw2T1HhD44ktsMduN7m3gsPhRMsi9D6ZrYLJcqC/5IY=; b=AzhwXUKxUWy4SVvdxVr2LhsoBZM/yl+/h+TW1MXIOSjbtdPA+/ngFhA8JyCBfLyO3t 3AyZ+xECNis3svgXT+SWBpHexpI3Q/Qtq4oapDcXlLYR50Ig/aZohz2IGTvfv4vJtioC KmvY6XcmiYkyKmIlm1pcnyT43Pbdn+Ma4j9LtuLV5bTkypil+6gini35PGWDUxGCGhJJ /yIVghtMxuVr59eNBpg8Qcq0aOXhNvRXKZbJudOmYNYBfl0Pld6QoghpYTdz+7ou32Mb dCYbf3QwcjOGNsT4P4kUIFlpZz/u72mjgnPiWuN+J3zBMPYlNgoKWzxfVZ+uKj2tqmbz iLoQ== X-Gm-Message-State: AOJu0YywEzq8isiplucJQNgxUE1YiJqeUfDUlH8EflRKKZHBx8lI7RAs exkO9yaSkcB3Gw8E9ZkvAbPx42HgIVs= X-Google-Smtp-Source: AGHT+IHRJqfJ5ZNBfLjsIk86LEEjTnm8PpLXTW1rNO5KYCsRlCSMoHPqth4+fcrHmyD/2OHIfsumxA== X-Received: by 2002:a05:6e02:1a41:b0:34d:ee49:5114 with SMTP id u1-20020a056e021a4100b0034dee495114mr21234204ilv.23.1693995037472; Wed, 06 Sep 2023 03:10:37 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:37 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:13 +1000 Message-Id: <20230906101017.130276-4-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 3/7] hdata: Make hdata child accessors check the header 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Like other (idata) accessors already do, check the common header in hdata child accessor calls. Signed-off-by: Nicholas Piggin --- hdata/hdif.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hdata/hdif.c b/hdata/hdif.c index 13c128c97..aba7f3660 100644 --- a/hdata/hdif.c +++ b/hdata/hdif.c @@ -157,6 +157,12 @@ HDIF_child_arr(const struct HDIF_common_hdr *hdif, unsigned int idx) { struct HDIF_child_ptr *children; + if (!HDIF_check(hdif, NULL)) { + prerror("HDIF: Bad header format !\n"); + backtrace(); + return NULL; + } + children = (void *)hdif + be32_to_cpu(hdif->child_off); if (idx >= be16_to_cpu(hdif->child_count)) { @@ -177,6 +183,12 @@ struct HDIF_common_hdr *HDIF_child(const struct HDIF_common_hdr *hdif, struct HDIF_common_hdr *ret; long child_off; + if (!HDIF_check(hdif, NULL)) { + prerror("HDIF: Bad header format !\n"); + backtrace(); + return NULL; + } + /* child must be in hdif's child array */ child_off = (void *)child - (base + be32_to_cpu(hdif->child_off)); assert(child_off % sizeof(struct HDIF_child_ptr) == 0); From patchwork Wed Sep 6 10:10:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830313 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=aY2SKhoc; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdSM6dWyz1yh5 for ; Wed, 6 Sep 2023 20:11:15 +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.a=rsa-sha256 header.s=20221208 header.b=aY2SKhoc; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdSM5YSNz3c8L for ; Wed, 6 Sep 2023 20:11:15 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=aY2SKhoc; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::1034; helo=mail-pj1-x1034.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRk4H5Lz303l for ; Wed, 6 Sep 2023 20:10:42 +1000 (AEST) Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-271b102659fso573236a91.0 for ; Wed, 06 Sep 2023 03:10:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995039; x=1694599839; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Kqsop9zDTJ7dpoS55A/lCcesoyeNZ838npR57Lp4ZIY=; b=aY2SKhocLm6nHxMfQ36/8iLgy6dIyFIZ4bZXG26XwYN/BSL6EJFLpdL5xaL9GTXISH i6GvTkEEBAqrxuhzTRANmRypMpfFzzLpeacJWlNtyM1LVya1vYX42qM0X2dm6Zkrwekl Lc8gPAkW8bSRq6lFsWYWnGtKjcVMGKKFYA0wy/ATTYmN4LICsi31DmsRu0qZP2XgCfqg I0E/e/YoN5Y5N782j7yaa0Ggx5m8M+azr5faVaKN/ym8/3X7MjqkqsQyY/SLYgPtT/6R ijX2j6XkOlAh8TufBZIGDi7pqYGbmDgf4Z2TbyBECmk3zHhpLpa0JuUlEjqOQlKWAFQP he+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995039; x=1694599839; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Kqsop9zDTJ7dpoS55A/lCcesoyeNZ838npR57Lp4ZIY=; b=DKfAvEedFTG+khUO+uo/4NLEItocrEepezcBDw1dhX573LH9jOV9fdkyUR9yr1eo/m 5AN4bsNt7QChnFP6t5GNnAdNIfecqGXcoycQlKWOE06KFWU5v/OQWBFBenSG3ZPYADXj xGUZFzGDuPyFUbrvltXgpR6PV5d0Qzse8eLV1aqi5PLSkER3NLoA5jQIddykO4UWZz7T +UF5bCFBIUYlMhY9L9uPqXjt6r5db2llbZ+0e/AHlRpv8SFgsRzcY6aCisU8wo2G1Phl H8RuuQIwVfcgT3l52vyHdCUP+Np7mVs/50Hy4KjcUC52jbjt8598QNMrP9lN9YNY4r9M xnlg== X-Gm-Message-State: AOJu0Yw3QpdxQ78Ml77sRYvvkglhuDUwsECS2g/lRgkQj2NUU19W2b7S rqVqgxWN24yR5WKn3LfFFCtApeWPjJk= X-Google-Smtp-Source: AGHT+IFrtoUtjBnbW7sB9avdH9w9ymUpRz9IrC7nyomfxSRXchmsVQgj/VCTYBKq9aikKkbu1l/Hcw== X-Received: by 2002:a17:90a:8689:b0:26d:23c3:9f30 with SMTP id p9-20020a17090a868900b0026d23c39f30mr20577757pjn.14.1693995039478; Wed, 06 Sep 2023 03:10:39 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:39 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:14 +1000 Message-Id: <20230906101017.130276-5-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 4/7] hdata: split idata accessor function 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Add HDIF_idata that returns the idata pointer structure, not a pointer to the data itself. Signed-off-by: Nicholas Piggin --- hdata/hdif.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/hdata/hdif.c b/hdata/hdif.c index aba7f3660..98bd98d3c 100644 --- a/hdata/hdif.c +++ b/hdata/hdif.c @@ -4,10 +4,9 @@ #include "hdif.h" #include -const void *HDIF_get_idata(const struct HDIF_common_hdr *hdif, unsigned int di, - unsigned int *size) +static const struct HDIF_idata_ptr * +HDIF_idata(const struct HDIF_common_hdr *hdif, unsigned int idx) { - const struct HDIF_common_hdr *hdr = hdif; const struct HDIF_idata_ptr *iptr; if (!HDIF_check(hdif, NULL)) { @@ -16,14 +15,25 @@ const void *HDIF_get_idata(const struct HDIF_common_hdr *hdif, unsigned int di, return NULL; } - if (di >= be16_to_cpu(hdr->idptr_count)) { + if (idx >= be16_to_cpu(hdif->idptr_count)) { prlog(PR_DEBUG, "HDIF: idata %d out of range for %.6s!\n", - di, hdr->id); + idx, hdif->id); return NULL; } - iptr = (void *)hdif + be32_to_cpu(hdr->idptr_off) - + di * sizeof(struct HDIF_idata_ptr); + iptr = (void *)hdif + be32_to_cpu(hdif->idptr_off); + + return &iptr[idx]; +} + +const void *HDIF_get_idata(const struct HDIF_common_hdr *hdif, unsigned int di, + unsigned int *size) +{ + const struct HDIF_idata_ptr *iptr; + + iptr = HDIF_idata(hdif, di); + if (!iptr) + return NULL; if (size) *size = be32_to_cpu(iptr->size); From patchwork Wed Sep 6 10:10:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830314 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=PduqpR8i; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdSX46Vtz1yh5 for ; Wed, 6 Sep 2023 20:11:24 +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.a=rsa-sha256 header.s=20221208 header.b=PduqpR8i; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdSX2k4Xz3cDr for ; Wed, 6 Sep 2023 20:11:24 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=PduqpR8i; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102d; helo=mail-pj1-x102d.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRm1HF2z3bNm for ; Wed, 6 Sep 2023 20:10:44 +1000 (AEST) Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-26d1a17ce06so2021000a91.0 for ; Wed, 06 Sep 2023 03:10:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995042; x=1694599842; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=spyi9E6aFM2W3I7YJzo/0GMRGEOlDfO9sxNYaK0k1V0=; b=PduqpR8i4NoWND8fjatIzoz5X2vnHGkyW+LxYhyGO4eerlwtFrIyODaU+yveHXrmuE 7fNAvAWHBdoqu4dvPqanA2fnSFSnM7Mtw+jwhN0fEp08M1RMG2ywsWdCqmsMx2ODmdg8 +rWiXys7BI3PsuhVjjXlL7XRWub9iqwEMa7Kf9psZGKcVs/IpMbMKKnzRvHPK8c3dewO H9GHwSGm82oMsSHiGLVEg8BEehTgLh6uAJ74gmPrqCvQAZoqJcuVSkEyOeNjqrM2lC5G gdzxpPwUl8TpKro24wW23W29h79/6Sxwnxl2qQwcZuyl0M7MVb6E0SzaNalXqINrQ3/W lG3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995042; x=1694599842; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=spyi9E6aFM2W3I7YJzo/0GMRGEOlDfO9sxNYaK0k1V0=; b=Gy9Drl5JcG52xuteaUfJafnP75NOndGSO1qRTcJ8iq3E+FDT/JUeySN7hYSnfSmUSE ga3rfI+sN9fFfNbVI8MhXJzaO+vbBN5jvQqm6u4I6x7t1iHMzwBjKZH5GgfQ1PM/VrfA tlyW5VERwK01JrVi1BbA1kOh8JMTDrj9IgJNSU+Fc0Jr5fUs+OFRWozxLvEYDw6jmq4l BvYQEonJsqOnRYNOedfuQMHOdvaDBLEmFyjCJvCdbdOcv21XrC09AUHPovfG/LXPcbzb eXx/5j1kfFGcXOs8wsR/yX7PWQmwJVTUOyI9l69hK0mMLs7MgGO2bWk7rIc3xmJQCxSx w/Og== X-Gm-Message-State: AOJu0YzjuN8mPLNiW4cEf5bsMBFmZOt6s8KKoPdRapc3gqF7DGNVORtA Mx4dzzC2DZZtI/lpEx61t/2Wlo4gtSQ= X-Google-Smtp-Source: AGHT+IGJgo8ZXgYGABJ7p85GezirRwdr8FbEmdIjvQU8YB4jBUECLwtnpunBIJSIxnzfYQIeEbeWbg== X-Received: by 2002:a17:90a:bc49:b0:26b:726:118 with SMTP id t9-20020a17090abc4900b0026b07260118mr12078205pjv.19.1693995041780; Wed, 06 Sep 2023 03:10:41 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:41 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:15 +1000 Message-Id: <20230906101017.130276-6-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 5/7] hdata: Remove legacy SPIRA structure 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" skiboot only supports POWER8 > DD1 now, all supported platforms should use the new SPIRA-S/H structure. Signed-off-by: Nicholas Piggin --- hdata/fsp.c | 12 +-- hdata/iohub.c | 4 +- hdata/memory.c | 8 +- hdata/naca.c | 4 +- hdata/pcia.c | 6 +- hdata/slca.c | 4 +- hdata/spira.c | 149 +++++++------------------------------- hdata/spira.h | 69 ++---------------- hdata/test/Makefile.check | 21 +++--- hdata/test/hdata_to_dt.c | 53 ++++---------- hdata/tpmrel.c | 2 +- hdata/vpd.c | 27 +++---- hw/fsp/fsp-attn.c | 1 - include/mem-map.h | 20 +++-- skiboot.lds.S | 5 -- 15 files changed, 101 insertions(+), 284 deletions(-) diff --git a/hdata/fsp.c b/hdata/fsp.c index 30cda53f6..66b351b42 100644 --- a/hdata/fsp.c +++ b/hdata/fsp.c @@ -282,7 +282,7 @@ static void add_chip_id_to_sensors(struct dt_node *sensor_node, uint32_t slca_in return; } - for_each_ntuple_idx(&spira.ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { + for_each_ntuple_idx(&spiras->ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { fru_id = HDIF_get_idata(hdif, SPPCRD_IDATA_FRU_ID, NULL); if (!fru_id) return; @@ -309,7 +309,7 @@ static void add_ipmi_sensors(struct dt_node *bmc_node) const struct ipmi_sensors *ipmi_sensors; struct dt_node *sensors_node, *sensor_node; - hdif_sensor = get_hdif(&spira.ntuples.ipmi_sensor, IPMI_SENSORS_HDIF_SIG); + hdif_sensor = get_hdif(&spiras->ntuples.ipmi_sensor, IPMI_SENSORS_HDIF_SIG); if (!hdif_sensor) { prlog(PR_DEBUG, "SENSORS: Missing IPMI sensors mappings tuple\n"); return; @@ -498,11 +498,11 @@ void bmc_parse(void) const void *sp; int i; - sp = get_hdif(&spira.ntuples.sp_subsys, SPSS_HDIF_SIG); + sp = get_hdif(&spiras->ntuples.sp_subsys, SPSS_HDIF_SIG); if (!sp) return; - for_each_ntuple_idx(&spira.ntuples.sp_subsys, sp, i, SPSS_HDIF_SIG) { + for_each_ntuple_idx(&spiras->ntuples.sp_subsys, sp, i, SPSS_HDIF_SIG) { if (find_service_proc_type(sp, i) == SP_BMC) { bmc_create_node(sp); found = true; @@ -520,13 +520,13 @@ void fsp_parse(void) int index; /* Find SPSS tuple in SPIRA */ - sp = get_hdif(&spira.ntuples.sp_subsys, SPSS_HDIF_SIG); + sp = get_hdif(&spiras->ntuples.sp_subsys, SPSS_HDIF_SIG); if (!sp) { prlog(PR_WARNING, "HDAT: No FSP/BMC found!\n"); return; } - for_each_ntuple_idx(&spira.ntuples.sp_subsys, sp, index, SPSS_HDIF_SIG) { + for_each_ntuple_idx(&spiras->ntuples.sp_subsys, sp, index, SPSS_HDIF_SIG) { switch (find_service_proc_type(sp, index)) { case SP_FSP: if (!fsp_root) { diff --git a/hdata/iohub.c b/hdata/iohub.c index 92655407e..d1074241b 100644 --- a/hdata/iohub.c +++ b/hdata/iohub.c @@ -868,7 +868,7 @@ void io_parse(void) unsigned int i, size; /* Look for IO Hubs */ - if (!get_hdif(&spira.ntuples.cec_iohub_fru, "IO HUB")) { + if (!get_hdif(&spiras->ntuples.cec_iohub_fru, "IO HUB")) { prerror("CEC: Cannot locate IO Hub FRU data !\n"); return; } @@ -881,7 +881,7 @@ void io_parse(void) * increment it for each chip. Works for the machines I have here */ - for_each_ntuple_idx(&spira.ntuples.cec_iohub_fru, sp_iohubs, i, + for_each_ntuple_idx(&spiras->ntuples.cec_iohub_fru, sp_iohubs, i, CECHUB_FRU_HDIF_SIG) { const struct cechub_hub_fru_id *fru_id_data; unsigned int type; diff --git a/hdata/memory.c b/hdata/memory.c index efdb502b1..0b4e78585 100755 --- a/hdata/memory.c +++ b/hdata/memory.c @@ -236,7 +236,7 @@ static void add_bus_freq_to_ram_area(struct dt_node *ram_node, u32 chip_id) u64 freq; u32 size; - pcia = get_hdif(&spira.ntuples.pcia, SPPCIA_HDIF_SIG); + pcia = get_hdif(&spiras->ntuples.pcia, SPPCIA_HDIF_SIG); if (!pcia) { prlog(PR_WARNING, "HDAT: Failed to add memory bus frequency " "as PCIA does not exist\n"); @@ -897,15 +897,15 @@ static bool __memory_parse(struct dt_node *root) const struct msvpd_total_config_ms *tcms; unsigned int size; - ms_vpd = get_hdif(&spira.ntuples.ms_vpd, MSVPD_HDIF_SIG); + ms_vpd = get_hdif(&spiras->ntuples.ms_vpd, MSVPD_HDIF_SIG); if (!ms_vpd) { prerror("MS VPD: invalid\n"); op_display(OP_FATAL, OP_MOD_MEM, 0x0000); return false; } - if (be32_to_cpu(spira.ntuples.ms_vpd.act_len) < sizeof(*ms_vpd)) { + if (be32_to_cpu(spiras->ntuples.ms_vpd.act_len) < sizeof(*ms_vpd)) { prerror("MS VPD: invalid size %u\n", - be32_to_cpu(spira.ntuples.ms_vpd.act_len)); + be32_to_cpu(spiras->ntuples.ms_vpd.act_len)); op_display(OP_FATAL, OP_MOD_MEM, 0x0001); return false; } diff --git a/hdata/naca.c b/hdata/naca.c index 9581bb632..4fc43d861 100644 --- a/hdata/naca.c +++ b/hdata/naca.c @@ -9,9 +9,9 @@ __section(".naca.data") struct naca naca = { .spirah_addr = CPU_TO_BE64(SPIRAH_OFF), .hv_release_data_addr = CPU_TO_BE64(NACA_OFF + offsetof(struct naca, hv_release_data)), - .spira_addr = CPU_TO_BE64(SPIRA_OFF), + .spira_addr = 0, .lid_table_addr = CPU_TO_BE64(NACA_OFF + offsetof(struct naca, hv_lid_load_table)), - .spira_size = CPU_TO_BE32(SPIRA_ACTUAL_SIZE), + .spira_size = 0, .hv_load_map_addr = 0, .attn_enabled = 0, .pcia_supported = 1, diff --git a/hdata/pcia.c b/hdata/pcia.c index f10048674..47f40cfec 100644 --- a/hdata/pcia.c +++ b/hdata/pcia.c @@ -15,8 +15,8 @@ static unsigned int pcia_index(const void *pcia) { - return (pcia - (void *)get_hdif(&spira.ntuples.pcia, "SPPCIA")) - / be32_to_cpu(spira.ntuples.pcia.alloc_len); + return (pcia - (void *)get_hdif(&spiras->ntuples.pcia, "SPPCIA")) + / be32_to_cpu(spiras->ntuples.pcia.alloc_len); } static const struct sppcia_cpu_thread *find_tada(const void *pcia, @@ -180,7 +180,7 @@ bool pcia_parse(void) const void *pcia; struct dt_node *cpus; - pcia = get_hdif(&spira.ntuples.pcia, "SPPCIA"); + pcia = get_hdif(&spiras->ntuples.pcia, "SPPCIA"); if (!pcia) return false; diff --git a/hdata/slca.c b/hdata/slca.c index 131e815af..fe8ed61e8 100644 --- a/hdata/slca.c +++ b/hdata/slca.c @@ -13,7 +13,7 @@ const struct slca_entry *slca_get_entry(uint16_t slca_index) struct HDIF_common_hdr *slca_hdr; int count; - slca_hdr = get_hdif(&spira.ntuples.slca, SLCA_HDIF_SIG); + slca_hdr = get_hdif(&spiras->ntuples.slca, SLCA_HDIF_SIG); if (!slca_hdr) { prerror("SLCA Invalid\n"); return NULL; @@ -89,7 +89,7 @@ static const struct slca_entry *slca_get_sai_entry(void) struct HDIF_common_hdr *slca_hdr; uint16_t sai_fru_id = SLCA_SAI_INDICATOR_ID; - slca_hdr = get_hdif(&spira.ntuples.slca, SLCA_HDIF_SIG); + slca_hdr = get_hdif(&spiras->ntuples.slca, SLCA_HDIF_SIG); if (!slca_hdr) { prerror("SLCA Invalid\n"); return NULL; diff --git a/hdata/spira.c b/hdata/spira.c index fbb14b0ec..500d317a1 100644 --- a/hdata/spira.c +++ b/hdata/spira.c @@ -121,48 +121,6 @@ __section(".mdst.data") struct mdst_table init_mdst_table[2] = { }, }; -/* SP Interface Root Array, aka SPIRA */ -__section(".spira.data") struct spira spira = { - .hdr = HDIF_SIMPLE_HDR("SPIRA ", SPIRA_VERSION, struct spira), - .ntuples_ptr = HDIF_IDATA_PTR(offsetof(struct spira, ntuples), - sizeof(struct spira_ntuples)), - .ntuples = { - .array_hdr = { - .offset = CPU_TO_BE32(HDIF_ARRAY_OFFSET), - .ecnt = CPU_TO_BE32(SPIRA_NTUPLES_COUNT), - .esize - = CPU_TO_BE32(sizeof(struct spira_ntuple)), - .eactsz = CPU_TO_BE32(0x18), - }, - /* We only populate some n-tuples */ - .proc_init = { - .addr = CPU_TO_BE64(PROCIN_OFF), - .alloc_cnt = CPU_TO_BE16(1), - .act_cnt = CPU_TO_BE16(1), - .alloc_len - = CPU_TO_BE32(sizeof(struct proc_init_data)), - }, - .heap = { - .addr = CPU_TO_BE64(SPIRA_HEAP_BASE), - .alloc_cnt = CPU_TO_BE16(1), - .alloc_len = CPU_TO_BE32(SPIRA_HEAP_SIZE), - }, - .mdump_src = { - .addr = CPU_TO_BE64(MDST_TABLE_OFF), - .alloc_cnt = CPU_TO_BE16(ARRAY_SIZE(init_mdst_table)), - .act_cnt = CPU_TO_BE16(ARRAY_SIZE(init_mdst_table)), - .alloc_len = - CPU_TO_BE32(sizeof(init_mdst_table)), - }, - .cpu_ctrl = { - .addr = CPU_TO_BE64(CPU_CTL_INIT_DATA_OFF), - .alloc_cnt = CPU_TO_BE16(1), - .act_cnt = CPU_TO_BE16(1), - .alloc_len = CPU_TO_BE32(sizeof(cpu_ctl_init_data)), - }, - }, -}; - /* The Hypervisor SPIRA-H Structure */ __section(".spirah.data") struct spirah spirah = { .hdr = HDIF_SIMPLE_HDR(SPIRAH_HDIF_SIG, SPIRAH_VERSION, struct spirah), @@ -376,7 +334,7 @@ static struct dt_node *add_xscom_node(uint64_t base, #define GET_HDIF_HDR -1 static const void *xscom_to_pcrd(struct dt_node *xscom, int idata_index) { - struct spira_ntuple *t = &spira.ntuples.proc_chip; + struct spira_ntuple *t = &spiras->ntuples.proc_chip; const struct HDIF_common_hdr *hdif; const void *idata; unsigned int size; @@ -567,7 +525,7 @@ static void add_xscom_add_pcia_assoc(struct dt_node *np, uint32_t pcid) * affinity can be different for groups of cores within the * chip, but for now we are going to ignore that */ - hdr = get_hdif(&spira.ntuples.pcia, SPPCIA_HDIF_SIG); + hdr = get_hdif(&spiras->ntuples.pcia, SPPCIA_HDIF_SIG); if (!hdr) return; @@ -605,7 +563,7 @@ static bool add_xscom_sppcrd(uint64_t xscom_base) const void *vpd; struct dt_node *np, *vpd_node; - for_each_ntuple_idx(&spira.ntuples.proc_chip, hdif, i, + for_each_ntuple_idx(&spiras->ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { const struct sppcrd_chip_info *cinfo; const struct spira_fru_id *fru_id = NULL; @@ -731,7 +689,7 @@ static void add_xscom(void) unsigned int size; uint64_t xscom_base; - ms_vpd = get_hdif(&spira.ntuples.ms_vpd, MSVPD_HDIF_SIG); + ms_vpd = get_hdif(&spiras->ntuples.ms_vpd, MSVPD_HDIF_SIG); if (!ms_vpd) { prerror("XSCOM: Can't find MS VPD\n"); return; @@ -809,35 +767,7 @@ static void add_chiptod_node(unsigned int chip_id, int flags) dt_add_property(node, "secondary", NULL, 0); } -static bool add_chiptod_old(void) -{ - const void *hdif; - unsigned int i; - bool found = false; - - /* - * Locate chiptod ID structures in SPIRA - */ - if (!get_hdif(&spira.ntuples.chip_tod, "TOD ")) - return found; - - for_each_ntuple_idx(&spira.ntuples.chip_tod, hdif, i, "TOD ") { - const struct chiptod_chipid *id; - - id = HDIF_get_idata(hdif, CHIPTOD_IDATA_CHIPID, NULL); - if (!CHECK_SPPTR(id)) { - prerror("CHIPTOD: Bad ChipID data %d\n", i); - continue; - } - - add_chiptod_node(pcid_to_chip_id(be32_to_cpu(id->chip_id)), - be32_to_cpu(id->flags)); - found = true; - } - return found; -} - -static bool add_chiptod_new(void) +static bool add_chiptod(void) { const void *hdif; unsigned int i; @@ -846,10 +776,10 @@ static bool add_chiptod_new(void) /* * Locate Proc Chip ID structures in SPIRA */ - if (!get_hdif(&spira.ntuples.proc_chip, SPPCRD_HDIF_SIG)) + if (!get_hdif(&spiras->ntuples.proc_chip, SPPCRD_HDIF_SIG)) return found; - for_each_ntuple_idx(&spira.ntuples.proc_chip, hdif, i, + for_each_ntuple_idx(&spiras->ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { const struct sppcrd_chip_info *cinfo; const struct sppcrd_chip_tod *tinfo; @@ -941,7 +871,7 @@ static void add_nx(void) unsigned int i; void *hdif; - for_each_ntuple_idx(&spira.ntuples.proc_chip, hdif, i, + for_each_ntuple_idx(&spiras->ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { const struct sppcrd_chip_info *cinfo; u32 ve; @@ -1051,7 +981,7 @@ static void dt_init_secureboot_node(const struct iplparams_sysparams *sysparams) static void opal_dump_add_mpipl_boot(const struct iplparams_iplparams *p) { - u32 mdrt_cnt = be16_to_cpu(spira.ntuples.mdump_res.act_cnt); + u32 mdrt_cnt = be16_to_cpu(spirah.ntuples.mdump_res.act_cnt); u32 mdrt_max_cnt = MDRT_TABLE_SIZE / sizeof(struct mdrt_table); struct dt_node *dump_node; @@ -1386,7 +1316,7 @@ static void add_iplparams(void) struct dt_node *iplp_node; const void *ipl_parms; - ipl_parms = get_hdif(&spira.ntuples.ipl_parms, "IPLPMS"); + ipl_parms = get_hdif(&spiras->ntuples.ipl_parms, "IPLPMS"); if (!ipl_parms) { prerror("IPLPARAMS: Cannot find IPL Parms in SPIRA\n"); return; @@ -1415,7 +1345,7 @@ uint32_t pcid_to_chip_id(uint32_t proc_chip_id) const void *hdif; /* First, try the proc_chip ntuples for chip data */ - for_each_ntuple_idx(&spira.ntuples.proc_chip, hdif, i, + for_each_ntuple_idx(&spiras->ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { const struct sppcrd_chip_info *cinfo; @@ -1441,7 +1371,7 @@ uint32_t pcid_to_topology_idx(uint32_t proc_chip_id) const void *hdif; /* First, try the proc_chip ntuples for chip data */ - for_each_ntuple_idx(&spira.ntuples.proc_chip, hdif, i, + for_each_ntuple_idx(&spiras->ntuples.proc_chip, hdif, i, SPPCRD_HDIF_SIG) { const struct sppcrd_chip_info *cinfo; @@ -1491,15 +1421,15 @@ static void hostservices_parse(void) return; ntuples_size = sizeof(struct HDIF_array_hdr) + - be32_to_cpu(spira.ntuples.array_hdr.ecnt) * + be32_to_cpu(spiras->ntuples.array_hdr.ecnt) * sizeof(struct spira_ntuple); - if (offsetof(struct spira_ntuples, hs_data) >= ntuples_size) { + if (offsetof(struct spiras_ntuples, hs_data) >= ntuples_size) { prerror("SPIRA: No host services data found\n"); return; } - hs_hdr = get_hdif(&spira.ntuples.hs_data, HSERV_HDIF_SIG); + hs_hdr = get_hdif(&spiras->ntuples.hs_data, HSERV_HDIF_SIG); if (!hs_hdr) { prerror("SPIRA: No host services data found\n"); return; @@ -1515,7 +1445,7 @@ static void hostservices_parse(void) static void add_stop_levels(void) { - struct spira_ntuple *t = &spira.ntuples.proc_chip; + struct spira_ntuple *t = &spiras->ntuples.proc_chip; struct HDIF_common_hdr *hdif; u32 stop_levels = ~0; bool valid = false; @@ -1775,13 +1705,10 @@ static void add_npus(void) } /* - * Legacy SPIRA is being deprecated and we have new SPIRA-H/S structures. - * But on older system (p7?) we will continue to get legacy SPIRA. - * - * SPIRA-S is initialized and provided by FSP. We use SPIRA-S signature - * to identify supported format. Also if required adjust spira pointer. + * SPIRA-S is initialized and provided by boot firmware. Check the SPIRA-S + * signature to confirm it was provided. */ -static void fixup_spira(void) +static bool find_spiras(void) { #if !defined(TEST) spiras = (struct spiras *)SPIRA_HEAP_BASE; @@ -1789,35 +1716,12 @@ static void fixup_spira(void) /* Validate SPIRA-S signature */ if (!spiras) - return; + return false; if (!HDIF_check(&spiras->hdr, SPIRAS_HDIF_SIG)) - return; + return false; prlog(PR_DEBUG, "SPIRA-S found.\n"); - - spira.ntuples.sp_subsys = spiras->ntuples.sp_subsys; - spira.ntuples.ipl_parms = spiras->ntuples.ipl_parms; - spira.ntuples.nt_enclosure_vpd = spiras->ntuples.nt_enclosure_vpd; - spira.ntuples.slca = spiras->ntuples.slca; - spira.ntuples.backplane_vpd = spiras->ntuples.backplane_vpd; - spira.ntuples.system_vpd = spiras->ntuples.system_vpd; - spira.ntuples.proc_init = spirah.ntuples.proc_init; - spira.ntuples.clock_vpd = spiras->ntuples.clock_vpd; - spira.ntuples.anchor_vpd = spiras->ntuples.anchor_vpd; - spira.ntuples.op_panel_vpd = spiras->ntuples.op_panel_vpd; - spira.ntuples.misc_cec_fru_vpd = spiras->ntuples.misc_cec_fru_vpd; - spira.ntuples.ms_vpd = spiras->ntuples.ms_vpd; - spira.ntuples.cec_iohub_fru = spiras->ntuples.cec_iohub_fru; - spira.ntuples.cpu_ctrl = spirah.ntuples.cpu_ctrl; - spira.ntuples.mdump_src = spirah.ntuples.mdump_src; - spira.ntuples.mdump_dst = spirah.ntuples.mdump_dst; - spira.ntuples.mdump_res = spirah.ntuples.mdump_res; - spira.ntuples.proc_dump_area = spirah.ntuples.proc_dump_area; - spira.ntuples.pcia = spiras->ntuples.pcia; - spira.ntuples.proc_chip = spiras->ntuples.proc_chip; - spira.ntuples.hs_data = spiras->ntuples.hs_data; - spira.ntuples.ipmi_sensor = spiras->ntuples.ipmi_sensor; - spira.ntuples.node_stb_data = spiras->ntuples.node_stb_data; + return true; } /* @@ -1831,7 +1735,7 @@ static void update_spirah_addr(void) return; naca.spirah_addr = CPU_TO_BE64(SPIRAH_OFF); - naca.spira_addr = CPU_TO_BE64(SPIRA_OFF); + naca.spira_addr = 0; spirah.ntuples.hs_data_area.addr = CPU_TO_BE64(SPIRA_HEAP_BASE - SKIBOOT_BASE); spirah.ntuples.mdump_res.addr = CPU_TO_BE64(MDRT_TABLE_BASE - SKIBOOT_BASE); #endif @@ -1843,7 +1747,10 @@ int parse_hdat(bool is_opal) prlog(PR_DEBUG, "Parsing HDAT...\n"); - fixup_spira(); + if (!find_spiras()) { + prlog(PR_ERR, "SPIRA-S not found.\n"); + return -1; + } update_spirah_addr(); @@ -1882,7 +1789,7 @@ int parse_hdat(bool is_opal) fsp_parse(); /* Add ChipTOD's */ - if (!add_chiptod_old() && !add_chiptod_new()) + if (!add_chiptod()) prerror("CHIPTOD: No ChipTOD found !\n"); /* Add NX */ diff --git a/hdata/spira.h b/hdata/spira.h index c0eb2a037..1789de1b5 100644 --- a/hdata/spira.h +++ b/hdata/spira.h @@ -7,16 +7,15 @@ #include "hdif.h" /* - * The SPIRA structure + * The SPIRA-H and SPIRA-S structures * - * NOTE: This is one of the only HDIF structure that we layout entirely - * as a C struct because it's provided by us to the FSP. Almost everything - * else is generated by the FSP, and thus must be "parsed" since the various - * offsets and alignments might change. + * SPIRA-H is built in the primary hypervisor (skiboot) lid, pointed to by + * the NACA and provides details to the boot firmware. + * + * SPIRA-S is built at IPL time by the boot firmware at the host data area + * location specified in SPIRA-H, and thus must be parsed. */ -#define SPIRA_VERSION 0x20 /* Like 730 ? */ - struct spira_ntuple { __be64 addr; __be16 alloc_cnt; @@ -27,59 +26,6 @@ struct spira_ntuple { __be64 padding; } __packed; -#define SPIRA_NTUPLES_COUNT 0x19 - -struct spira_ntuples { - struct HDIF_array_hdr array_hdr; - struct spira_ntuple sp_subsys; /* 0x040 */ - struct spira_ntuple ipl_parms; /* 0x060 */ - struct spira_ntuple nt_enclosure_vpd; /* 0x080 */ - struct spira_ntuple slca; /* 0x0a0 */ - struct spira_ntuple backplane_vpd; /* 0x0c0 */ - struct spira_ntuple system_vpd; /* 0x0e0 */ - struct spira_ntuple chip_tod; /* 0x100 */ - struct spira_ntuple proc_init; /* 0x120 */ - struct spira_ntuple clock_vpd; /* 0x140 */ - struct spira_ntuple anchor_vpd; /* 0x160 */ - struct spira_ntuple op_panel_vpd; /* 0x180 */ - struct spira_ntuple ext_cache_fru_vpd; /* 0x1a0 */ - struct spira_ntuple misc_cec_fru_vpd; /* 0x1c0 */ - struct spira_ntuple paca; /* 0x1e0 */ - struct spira_ntuple ms_vpd; /* 0x200 */ - struct spira_ntuple cec_iohub_fru; /* 0x220 */ - struct spira_ntuple cpu_ctrl; /* 0x240 */ - struct spira_ntuple mdump_src; /* 0x260 */ - struct spira_ntuple mdump_dst; /* 0x280 */ - struct spira_ntuple mdump_res; /* 0x2a0 */ - struct spira_ntuple heap; /* 0x2c0 */ - struct spira_ntuple pcia; /* 0x2e0 */ - struct spira_ntuple proc_chip; /* 0x300 */ - struct spira_ntuple hs_data; /* 0x320 */ - struct spira_ntuple ipmi_sensor; /* 0x360 */ - struct spira_ntuple node_stb_data; /* 0x380 */ - struct spira_ntuple proc_dump_area; /* 0x400 */ -}; - -#define SPIRA_RESERVED_BYTES 0x60 - -struct spira { - struct HDIF_common_hdr hdr; - struct HDIF_idata_ptr ntuples_ptr; - __be64 pad; - struct spira_ntuples ntuples; - /* - * We reserve 0xc0 rather than 0x4c0 so we fit SPIRAH/SPIRAS here - * while preserving compatibility with existing P8 systems. - * - * According to FSP engineers, this is an okay thing to do. - */ - u8 reserved[SPIRA_RESERVED_BYTES]; -} __packed __align(0x100); - -#define SPIRA_ACTUAL_SIZE (sizeof(struct spira) - SPIRA_RESERVED_BYTES) - -extern struct spira spira; - /* SPIRA-H signature */ #define SPIRAH_HDIF_SIG "SPIRAH" @@ -152,7 +98,6 @@ struct spiras { extern struct spiras *skiboot_constant_addr spiras; - /* This macro can be used to check the validity of a pointer returned * by one of the HDIF API functions. It returns true if the pointer * appears valid. If it's not valid and not NULL, it will print some @@ -178,7 +123,7 @@ extern struct HDIF_common_hdr *__get_hdif(struct spira_ntuple *n, be32_to_cpu((_ntuples)->alloc_len)); \ _p = (void *)_p + be32_to_cpu((_ntuples)->alloc_len)) -#define for_each_pcia(p) for_each_ntuple(&spira.ntuples.pcia, p, SPPCIA_HDIF_SIG) +#define for_each_pcia(p) for_each_ntuple(&spiras->ntuples.pcia, p, SPPCIA_HDIF_SIG) /* We override these for testing. */ #ifndef ntuple_addr diff --git a/hdata/test/Makefile.check b/hdata/test/Makefile.check index 7eb5f3f45..81d55614a 100644 --- a/hdata/test/Makefile.check +++ b/hdata/test/Makefile.check @@ -18,24 +18,21 @@ hdata/test/hdata_to_dt-check: hdata/test/hdata_to_dt-check-dt # Add some test ntuples for open source version... hdata/test/hdata_to_dt-check-q: hdata/test/hdata_to_dt - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E -q hdata/test/p81-811.spira hdata/test/p81-811.spira.heap, $<) - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E -s -q hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras, $<) - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -9 -s -q hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap, $<) - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -10 -s -q hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras, $<) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E -q hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras, $<) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -9 -q hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap, $<) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -10 -q hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras, $<) hdata/test/hdata_to_dt-check-dt: hdata/test/hdata_to_dt - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E hdata/test/p81-811.spira hdata/test/p81-811.spira.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p81-811.spira.dts, $< device-tree) - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E -s hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p8-840-spira.dts, $< device-tree) - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -9 -s hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/op920.wsp.dts, $< device-tree) - $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -10 -s hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p10-rainier.dts, $< device-tree) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -8E hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p8-840-spira.dts, $< device-tree) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -9 hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/op920.wsp.dts, $< device-tree) + $(call Q, TEST , $(VALGRIND) hdata/test/hdata_to_dt -10 hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p10-rainier.dts, $< device-tree) hdata/test/hdata_to_dt-gcov-run: hdata/test/hdata_to_dt-check-dt-gcov-run hdata/test/hdata_to_dt-check-dt-gcov-run: hdata/test/hdata_to_dt-gcov - $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt-gcov -8E hdata/test/p81-811.spira hdata/test/p81-811.spira.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p81-811.spira.dts, $< device-tree) - $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt-gcov -8E -s hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p8-840-spira.dts, $< device-tree) - $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt -9 -s hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/op920.wsp.dts, $< device-tree) - $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt -10 -s hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p10-rainier.dts, $< device-tree) + $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt-gcov -8E hdata/test/p8-840-spira.spirah hdata/test/p8-840-spira.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p8-840-spira.dts, $< device-tree) + $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt -9 hdata/test/p8-840-spira.spirah hdata/test/op920.wsp.heap 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/op920.wsp.dts, $< device-tree) + $(call Q, TEST-COVERAGE , ./hdata/test/hdata_to_dt -10 hdata/test/p8-840-spira.spirah hdata/test/p10-rainier.spiras 2>/dev/null | hdata/test/dtdiff_wrap.sh hdata/test/p10-rainier.dts, $< device-tree) hdata/test/stubs.o: hdata/test/stubs.c $(call Q, HOSTCC , $(HOSTCC) $(HOSTCFLAGS) -g -c -o $@ $<, $<) diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c index ead6e3c98..e088924ef 100644 --- a/hdata/test/hdata_to_dt.c +++ b/hdata/test/hdata_to_dt.c @@ -301,7 +301,7 @@ static void dump_hdata_fdt(struct dt_node *root) int main(int argc, char *argv[]) { int fd, r, i = 0, opt_count = 0; - bool verbose = false, quiet = false, new_spira = false, blobs = false; + bool verbose = false, quiet = false, blobs = false; while (argv[++i]) { if (strcmp(argv[i], "-v") == 0) { @@ -310,9 +310,6 @@ int main(int argc, char *argv[]) } else if (strcmp(argv[i], "-q") == 0) { quiet = true; opt_count++; - } else if (strcmp(argv[i], "-s") == 0) { - new_spira = true; - opt_count++; } else if (strcmp(argv[i], "-b") == 0) { blobs = true; opt_count++; @@ -345,8 +342,7 @@ int main(int argc, char *argv[]) errx(1, "Converts HDAT dumps to DTB.\n" "\n" "Usage:\n" - " hdata \n" - " hdata -s \n" + " hdata \n" "Options: \n" " -v Verbose\n" " -q Quiet mode\n" @@ -368,36 +364,19 @@ int main(int argc, char *argv[]) phys_map_init(fake_pvr); /* Copy in spira dump (assumes little has changed!). */ - if (new_spira) { - fd = open(argv[1], O_RDONLY); - if (fd < 0) - err(1, "opening %s", argv[1]); - r = read(fd, &spirah, sizeof(spirah)); - if (r < sizeof(spirah.hdr)) - err(1, "reading %s gave %i", argv[1], r); - if (verbose) - printf("verbose: read spirah %u bytes\n", r); - close(fd); - - undefined_bytes((void *)&spirah + r, sizeof(spirah) - r); - - base_addr = be64_to_cpu(spirah.ntuples.hs_data_area.addr); - } else { - fd = open(argv[1], O_RDONLY); - if (fd < 0) - err(1, "opening %s", argv[1]); - r = read(fd, &spira, sizeof(spira)); - if (r < sizeof(spira.hdr)) - err(1, "reading %s gave %i", argv[1], r); - if (verbose) - printf("verbose: read spira %u bytes\n", r); - close(fd); - - undefined_bytes((void *)&spira + r, sizeof(spira) - r); - - base_addr = be64_to_cpu(spira.ntuples.heap.addr); - } + fd = open(argv[1], O_RDONLY); + if (fd < 0) + err(1, "opening %s", argv[1]); + r = read(fd, &spirah, sizeof(spirah)); + if (r < sizeof(spirah.hdr)) + err(1, "reading %s gave %i", argv[1], r); + if (verbose) + printf("verbose: read spirah %u bytes\n", r); + close(fd); + + undefined_bytes((void *)&spirah + r, sizeof(spirah) - r); + base_addr = be64_to_cpu(spirah.ntuples.hs_data_area.addr); if (!base_addr) errx(1, "Invalid base addr"); if (verbose) @@ -417,8 +396,8 @@ int main(int argc, char *argv[]) spira_heap_size, spira_heap); close(fd); - if (new_spira) - spiras = (struct spiras *)spira_heap; + /* SPIRA-S defined to be at the start of the SPIRA Host Data Area */ + spiras = (struct spiras *)spira_heap; if (quiet) { fclose(stdout); diff --git a/hdata/tpmrel.c b/hdata/tpmrel.c index 4be3f81c4..c70791839 100644 --- a/hdata/tpmrel.c +++ b/hdata/tpmrel.c @@ -209,7 +209,7 @@ void node_stb_parse(void) { struct HDIF_common_hdr *hdif_hdr; - hdif_hdr = get_hdif(&spira.ntuples.node_stb_data, STB_HDIF_SIG); + hdif_hdr = get_hdif(&spiras->ntuples.node_stb_data, STB_HDIF_SIG); if (!hdif_hdr) { prlog(PR_DEBUG, "TPMREL data not found\n"); return; diff --git a/hdata/vpd.c b/hdata/vpd.c index c778de346..cfc8d22a6 100644 --- a/hdata/vpd.c +++ b/hdata/vpd.c @@ -423,7 +423,7 @@ void dt_init_vpd_node(void) dt_add_property_cells(dt_vpd, "#size-cells", 0); dt_add_property_cells(dt_vpd, "#address-cells", 1); - slca_hdr = get_hdif(&spira.ntuples.slca, SLCA_HDIF_SIG); + slca_hdr = get_hdif(&spiras->ntuples.slca, SLCA_HDIF_SIG); if (!slca_hdr) { prerror("SLCA Invalid\n"); return; @@ -551,7 +551,7 @@ static void dt_add_model_name(void) model = dt_find_property(dt_root, "model"); - iplp = get_hdif(&spira.ntuples.ipl_parms, "IPLPMS"); + iplp = get_hdif(&spiras->ntuples.ipl_parms, "IPLPMS"); if (!iplp) goto def_model; @@ -627,7 +627,7 @@ static void sysvpd_parse(void) const struct spira_fru_id *fru_id; struct HDIF_common_hdr *sysvpd_hdr; - sysvpd_hdr = get_hdif(&spira.ntuples.system_vpd, SYSVPD_HDIF_SIG); + sysvpd_hdr = get_hdif(&spiras->ntuples.system_vpd, SYSVPD_HDIF_SIG); if (!sysvpd_hdr) return; @@ -683,12 +683,12 @@ static void iohub_vpd_parse(void) const struct cechub_hub_fru_id *fru_id_data; unsigned int i, vpd_sz, fru_id_sz; - if (!get_hdif(&spira.ntuples.cec_iohub_fru, CECHUB_FRU_HDIF_SIG)) { + if (!get_hdif(&spiras->ntuples.cec_iohub_fru, CECHUB_FRU_HDIF_SIG)) { prerror("VPD: Could not find IO HUB FRU data\n"); return; } - for_each_ntuple_idx(&spira.ntuples.cec_iohub_fru, iohub_hdr, + for_each_ntuple_idx(&spiras->ntuples.cec_iohub_fru, iohub_hdr, i, CECHUB_FRU_HDIF_SIG) { fru_id_data = HDIF_get_idata(iohub_hdr, @@ -732,25 +732,22 @@ void vpd_parse(void) sysvpd_parse(); /* Enclosure */ - _vpd_parse(spira.ntuples.nt_enclosure_vpd); + _vpd_parse(spiras->ntuples.nt_enclosure_vpd); /* Backplane */ - _vpd_parse(spira.ntuples.backplane_vpd); + _vpd_parse(spiras->ntuples.backplane_vpd); /* clock card -- does this use the FRUVPD sig? */ - _vpd_parse(spira.ntuples.clock_vpd); + _vpd_parse(spiras->ntuples.clock_vpd); /* Anchor card */ - _vpd_parse(spira.ntuples.anchor_vpd); + _vpd_parse(spiras->ntuples.anchor_vpd); /* Op panel -- does this use the FRUVPD sig? */ - _vpd_parse(spira.ntuples.op_panel_vpd); - - /* External cache FRU vpd -- does this use the FRUVPD sig? */ - _vpd_parse(spira.ntuples.ext_cache_fru_vpd); + _vpd_parse(spiras->ntuples.op_panel_vpd); /* Misc CEC FRU */ - _vpd_parse(spira.ntuples.misc_cec_fru_vpd); + _vpd_parse(spiras->ntuples.misc_cec_fru_vpd); /* CEC IO HUB FRU */ iohub_vpd_parse(); @@ -760,7 +757,7 @@ void vpd_parse(void) * different, the FRU ID data and pointer pair to keyword VPD * are the same offset as a FRUVPD entry. So reuse it */ - fruvpd_hdr = get_hdif(&spira.ntuples.sp_subsys, SPSS_HDIF_SIG); + fruvpd_hdr = get_hdif(&spiras->ntuples.sp_subsys, SPSS_HDIF_SIG); if (fruvpd_hdr) dt_add_vpd_node(fruvpd_hdr, FRUVPD_IDATA_FRU_ID, FRUVPD_IDATA_KW_VPD); diff --git a/hw/fsp/fsp-attn.c b/hw/fsp/fsp-attn.c index 6e358e0d4..877390240 100644 --- a/hw/fsp/fsp-attn.c +++ b/hw/fsp/fsp-attn.c @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include diff --git a/include/mem-map.h b/include/mem-map.h index 9250a63d5..9fd8c91c9 100644 --- a/include/mem-map.h +++ b/include/mem-map.h @@ -26,17 +26,13 @@ /* The NACA and other stuff in head.S need to be at the start: we * give it 64k before placing the SPIRA and related data. */ -#define SPIRA_OFF 0x00010000 -#define SPIRA_SIZE 0x400 -#define SPIRAH_OFF 0x00010400 +#define SPIRAH_OFF 0x00010000 #define SPIRAH_SIZE 0x300 #define PROC_DUMP_AREA_OFF (SPIRAH_OFF + SPIRAH_SIZE) #define PROC_DUMP_AREA_SIZE 0x100 -/* Actual SPIRA size is lesser than 1K (presently 0x340 bytes). - * Use 1K for legacy SPIRA. - * +/* * SPIRA-H is lesser than 768 bytes (presently we use 288 bytes) * Use 768 bytes for SPIRAH. * @@ -48,21 +44,23 @@ * endian: linker can't endian reverse a pointer for us. Text, data * et. al. follows this. */ -#define PROCIN_OFF (SPIRA_OFF + 0x800) +#define PROCIN_OFF (PROC_DUMP_AREA_OFF + PROC_DUMP_AREA_SIZE) +#define PROCIN_SIZE 0x800 /* Initial MDST and MDDT tables like PROCIN, we need fixed addresses, * we leave a 2k gap for PROCIN */ -#define MDST_TABLE_OFF (SPIRA_OFF + 0x1000) +#define MDST_TABLE_OFF (PROCIN_OFF + PROCIN_SIZE) #define MDST_TABLE_SIZE 0x400 -#define MDDT_TABLE_OFF (SPIRA_OFF + 0x1400) +#define MDDT_TABLE_OFF (MDST_TABLE_OFF + MDST_TABLE_SIZE) #define MDDT_TABLE_SIZE 0x400 /* Like MDST and MDDT, we need fixed address for CPU control header. - * We leave a 2k gap for MDST. CPU_CTL table is of size ~4k + * We leave a 2k gap for MDST. CPU_CTL table is of size ~4k, give it 8k. */ -#define CPU_CTL_OFF (SPIRA_OFF + 0x1800) +#define CPU_CTL_OFF (MDDT_TABLE_OFF + MDDT_TABLE_SIZE) +#define CPU_CTL_SIZE 0x2000 /* We keep a gap of 5M for skiboot text & bss for now. We will * then we have our heap which goes up to base + 14M (so 11M for diff --git a/skiboot.lds.S b/skiboot.lds.S index 058848fa9..f45e90df0 100644 --- a/skiboot.lds.S +++ b/skiboot.lds.S @@ -66,11 +66,6 @@ SECTIONS KEEP(*(.naca.data)) } - . = SPIRA_OFF; - .spira : { - KEEP(*(.spira.data)) - } - . = SPIRAH_OFF; .spirah : { KEEP(*(.spirah.data)) From patchwork Wed Sep 6 10:10:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830315 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=sg5dDUnO; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdSk1RXhz1yh5 for ; Wed, 6 Sep 2023 20:11:34 +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.a=rsa-sha256 header.s=20221208 header.b=sg5dDUnO; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdSk0Kxgz3cHF for ; Wed, 6 Sep 2023 20:11:34 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=sg5dDUnO; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102f; helo=mail-pj1-x102f.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRp2hGHz3bw9 for ; Wed, 6 Sep 2023 20:10:46 +1000 (AEST) Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-26f3e26e55aso2245193a91.3 for ; Wed, 06 Sep 2023 03:10:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995044; x=1694599844; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ca7NgLDv56GGkmWsJtOwDocYaek7g/n7kxOqw7LaHlE=; b=sg5dDUnOHFmelDc9iNYiXi/wvbZNfyLwI23sfwOXg1rvdZxGKYjoJ357gm595RMZxQ rCvro/RBa0o3NGGL9/k7P5IwSEWjHFjuaIjcQ68hrYD1Qsypgf5iofcT3VEQdaRxej3w GTpwZly1Vh1quVmS4qD2tAhIJro97+YIQGxEJVcIrIeYdZpRIeorwQsN7R2+g/DOW6hh SpM1EPl4JQv27jcrHnJ6uhpgcvsNN0j3Gi2gtT5xYdKrHQV82aQIPwkSd79cg3HRhBx9 CCYTTenjNububl9O8iCaoz0sYIyN9n1YV5J5ugCAwNtggFkuS0FlRz73R+EEdUUr7XWd t3kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995044; x=1694599844; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ca7NgLDv56GGkmWsJtOwDocYaek7g/n7kxOqw7LaHlE=; b=WIa9wgd1ABYSHlHBuznPzNDb/xotYiwmuKsMjPsJG6JIq29nTfkMFq0TvxlmLHO2dY 4qHuKZKvbxRj7XB2xFw4YSYNAJWlLV3qn4YYTQixC/4gSEKsiJ+AXRerYocUtLfNQOhx Lu0MMue/ocC9PDATjyDzIqag30JNc0bgCnf6F0l19san2T8CFPg/cLhqHA4cs2Tu2bUt uFdMlDlpjk9yw9kohOhH85vmFeFUOB//P33AHh0V2H7d9fjiL2mQNSG5AKb60HoW+okI 3L62waV1K4Ri+K7ZWVmGE6SLI6z0/h1fzRW8SEnMe05hQ2LpYo6f84TZLYNb0dBdc4Cy k9xQ== X-Gm-Message-State: AOJu0Yw94VPQMlUHc+sEwezZ+Aw2WlOSJAyYko+7Y9j1+decu4ZhWP1g BlBohqZPwDF4BWysJNk+tK7IACnz/XY= X-Google-Smtp-Source: AGHT+IG7q8ekTKQWOfDMR9PNEGfq6joba7G1+JQkhBQEQdNE/sjGBj5E6f3bG42LVw7Ny0AWxlOCTw== X-Received: by 2002:a17:90b:817:b0:268:d716:4b62 with SMTP id bk23-20020a17090b081700b00268d7164b62mr12026665pjb.0.1693995043757; Wed, 06 Sep 2023 03:10:43 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:43 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:16 +1000 Message-Id: <20230906101017.130276-7-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 6/7] hdata: make for_each_pcia take spiras as an argument 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Have for_each_pcia take spiras as an argument rather than use the global variable. Signed-off-by: Nicholas Piggin --- hdata/memory.c | 2 +- hdata/pcia.c | 2 +- hdata/spira.c | 2 +- hdata/spira.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hdata/memory.c b/hdata/memory.c index 0b4e78585..53a16253a 100755 --- a/hdata/memory.c +++ b/hdata/memory.c @@ -243,7 +243,7 @@ static void add_bus_freq_to_ram_area(struct dt_node *ram_node, u32 chip_id) return; } - for_each_pcia(pcia) { + for_each_pcia(spiras, pcia) { const struct sppcia_core_unique *id; id = HDIF_get_idata(pcia, SPPCIA_IDATA_CORE_UNIQUE, &size); diff --git a/hdata/pcia.c b/hdata/pcia.c index 47f40cfec..36fc84c3a 100644 --- a/hdata/pcia.c +++ b/hdata/pcia.c @@ -190,7 +190,7 @@ bool pcia_parse(void) dt_add_property_cells(cpus, "#address-cells", 1); dt_add_property_cells(cpus, "#size-cells", 0); - for_each_pcia(pcia) { + for_each_pcia(spiras, pcia) { const struct sppcia_core_unique *id; u32 size, ve_flags; bool okay; diff --git a/hdata/spira.c b/hdata/spira.c index 500d317a1..d9325a0b4 100644 --- a/hdata/spira.c +++ b/hdata/spira.c @@ -529,7 +529,7 @@ static void add_xscom_add_pcia_assoc(struct dt_node *np, uint32_t pcid) if (!hdr) return; - for_each_pcia(hdr) { + for_each_pcia(spiras, hdr) { const struct sppcia_core_unique *id; id = HDIF_get_idata(hdr, SPPCIA_IDATA_CORE_UNIQUE, &size); diff --git a/hdata/spira.h b/hdata/spira.h index 1789de1b5..9db9d599f 100644 --- a/hdata/spira.h +++ b/hdata/spira.h @@ -123,7 +123,7 @@ extern struct HDIF_common_hdr *__get_hdif(struct spira_ntuple *n, be32_to_cpu((_ntuples)->alloc_len)); \ _p = (void *)_p + be32_to_cpu((_ntuples)->alloc_len)) -#define for_each_pcia(p) for_each_ntuple(&spiras->ntuples.pcia, p, SPPCIA_HDIF_SIG) +#define for_each_pcia(s, p) for_each_ntuple(&(s)->ntuples.pcia, p, SPPCIA_HDIF_SIG) /* We override these for testing. */ #ifndef ntuple_addr From patchwork Wed Sep 6 10:10:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 1830316 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=C0Y/9f1/; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org (client-ip=2404:9400:2:0:216:3eff:fee1:b9f1; helo=lists.ozlabs.org; envelope-from=skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org; receiver=patchwork.ozlabs.org) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2404:9400:2:0:216:3eff:fee1:b9f1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4RgdSt6sVBz1yh5 for ; Wed, 6 Sep 2023 20:11:42 +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.a=rsa-sha256 header.s=20221208 header.b=C0Y/9f1/; dkim-atps=neutral Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4RgdSt5l1lz3cNk for ; Wed, 6 Sep 2023 20:11:42 +1000 (AEST) X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20221208 header.b=C0Y/9f1/; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:4864:20::102c; helo=mail-pj1-x102c.google.com; envelope-from=npiggin@gmail.com; receiver=lists.ozlabs.org) Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4RgdRr2Zxbz2ygr for ; Wed, 6 Sep 2023 20:10:48 +1000 (AEST) Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-26fb8225268so1965615a91.1 for ; Wed, 06 Sep 2023 03:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693995046; x=1694599846; darn=lists.ozlabs.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WkdxNEzWyeYpOQ6SsLk2dwIFRDOXegtfb+8bNRAklCs=; b=C0Y/9f1/XJPAPUSvOHVNyspuB4rhzhccdU7Lav/SnrRfLssRdjd1axXZMrRGRvGCFN sd083fi8mK++Fv8QMAbGykHnYtTU7MHxqgpW6XLlMHJhMkNJhlzkMXU3MjrS/z2k09WW ZC4sCDFJTSgVaOe3tWJeWYLIkxnhBh3Oc6PBOHJCujAqnjNtPOrZ+hbqFN4LEwMtBU5d 8+o3tUErNwr1eqQH8egK9ZbpusuOdYOCtuVrjIFqL6fplUVCUqPiD4y3NMHFBEfaPxTU It9XEBVYgsZfGdaGn/b9Pc61aMdR91mckw03M7miKpZBM39tU4lMWAP2/XnS0h3BlXMe I/iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693995046; x=1694599846; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WkdxNEzWyeYpOQ6SsLk2dwIFRDOXegtfb+8bNRAklCs=; b=M7+GFtD1/qpdROwVCFjWk4b1ElwYWR2lZSHGZqN3k03V/HH93jVJfll9DQIsjjr0y1 5VtQujR6hJ1FjV2uMMGmRtpgE61B00phFrPnuKNjDtf0Xmd1Hivdlkyvic3tubShvkma e6+WgUvh4gqmT/hSoMcY4heJjguu8zetdF9+IKZtv0MW5zJeHrkhAhv/9/i5Z+tt1piF VyEiLwAQ4SlWSJfu/YR2SpYYqxTn/YGvJCJDNtDyi+Iyx74p27+l23EHzXWO1aoqui1S GGbLW9QtzTAOUVFWXG2D4FtoaFlA83XZstWkhVOe+Eoxf5hFR+Suf5E1HTXwTE9bZ9Yj wzVQ== X-Gm-Message-State: AOJu0Ywuvl0X6m0V/Cjyfq2QLSCOe+ztrswWjuxrxHogbyCrcX+0tLIP miTvvm7p3O+rbQPfLudXk/W28fmUClY= X-Google-Smtp-Source: AGHT+IH8I22rWXrwjZa8Wm+BAbfiGEzK5I7D6KyHc28eEiIlTfBp7YbrZcY3i51chwA6xXLK53hgoQ== X-Received: by 2002:a17:90a:8545:b0:268:10a3:cea8 with SMTP id a5-20020a17090a854500b0026810a3cea8mr12273214pjw.9.1693995045871; Wed, 06 Sep 2023 03:10:45 -0700 (PDT) Received: from wheely.local0.net (193-116-105-24.tpgi.com.au. [193.116.105.24]) by smtp.gmail.com with ESMTPSA id m13-20020a17090a7f8d00b002609cadc56esm10639705pjl.11.2023.09.06.03.10.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 03:10:45 -0700 (PDT) From: Nicholas Piggin To: skiboot@lists.ozlabs.org Date: Wed, 6 Sep 2023 20:10:17 +1000 Message-Id: <20230906101017.130276-8-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230906101017.130276-1-npiggin@gmail.com> References: <20230906101017.130276-1-npiggin@gmail.com> MIME-Version: 1.0 Subject: [Skiboot] [PATCH 7/7] hdata: Use existing define for PCIA signature check 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: , Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Signed-off-by: Nicholas Piggin --- hdata/pcia.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hdata/pcia.c b/hdata/pcia.c index 36fc84c3a..1a94a8322 100644 --- a/hdata/pcia.c +++ b/hdata/pcia.c @@ -180,7 +180,7 @@ bool pcia_parse(void) const void *pcia; struct dt_node *cpus; - pcia = get_hdif(&spiras->ntuples.pcia, "SPPCIA"); + pcia = get_hdif(&spiras->ntuples.pcia, SPPCIA_HDIF_SIG); if (!pcia) return false;