From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (EUR01-VE1-obe.outbound.protection.outlook.com [40.107.14.44]) by mx.groups.io with SMTP id smtpd.web08.23653.1621865667498104011 for ; Mon, 24 May 2021 07:14:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=iFBxkVuc; spf=pass (domain: arm.com, ip: 40.107.14.44, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dvBKsgGoaBLlJBRwovtdUYSv0uwVxn6Lxmf4HIdG510=; b=iFBxkVucIuL/eDvqSQJXhKBQbEpoSBXGXEm80+68BLjFOOJ46BN7xATzFSpyXVVuEwJ7dC5WWTXYTge+4h4uNO/u6ZZiN2KU4xj/XPfvLW4FrBdhgWa2k4Q66DTMFToN2FHXBg4O9QtLrooaaWCcOEsW6/9Ts9NcT/0T/jAwtrA= Received: from DB6PR07CA0166.eurprd07.prod.outlook.com (2603:10a6:6:43::20) by DBBPR08MB4441.eurprd08.prod.outlook.com (2603:10a6:10:cd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.25; Mon, 24 May 2021 14:14:24 +0000 Received: from DB5EUR03FT032.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:43:cafe::d7) by DB6PR07CA0166.outlook.office365.com (2603:10a6:6:43::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.11 via Frontend Transport; Mon, 24 May 2021 14:14:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT032.mail.protection.outlook.com (10.152.20.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Mon, 24 May 2021 14:14:24 +0000 Received: ("Tessian outbound 3c5232d12880:v92"); Mon, 24 May 2021 14:14:24 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 461a86ea98e447d6 X-CR-MTA-TID: 64aa7808 Received: from 06a71752e2b7.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id EE01B8B1-5D1A-4D75-9420-DD6ED00B3DBC.1; Mon, 24 May 2021 14:14:01 +0000 Received: from EUR01-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 06a71752e2b7.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 24 May 2021 14:14:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dSM3yacA4X0unQUkMqLcVqyiIe7Qy5VpPVi6Kq2i3B15wfBegSwItJfDtTmbE4HQvhhNKiiaSyrsiNkQlsjPXBVCmBYyp85SItflRClX0d437yd1loAuykZl0CH7LBz84Ei+dK3UT+z1ri7dHCk9qOTxKgD8fU1qXjXl1Z5Iso4ReEO10Sqof9QaWFjnYUiFQpKCNliNLMpl8jU/6hbzPbwvv/NOYPcB9rlMHs49h2wzZUcZ/WSfSv/dBJx7Cm5acgvjV2RGStFMRYW4JrF4I17/Rurhqkh03HSIPcKv6Q43b6jySM/LVK/iAH/uiHIAYyUEPWLnzuJixNVEq/tRAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dvBKsgGoaBLlJBRwovtdUYSv0uwVxn6Lxmf4HIdG510=; b=KOqV2UUqy7RRJ7di96gQAi0I58iM3WaAihLc5QaKeK2IkYMtz6BEYI/mf771bJSpuYixTHW+CNTGPQmapMX+lF14okQT2ajZfMUGo79PbciKd45gNSgqPGE5IkWNXKMEP9rkWD0sXOy2tQmMG0NEdhVlslBFidqFWody3sDBREAsuglc7gVuM/gLIH8sTG8YN3WN9x8ERTkmvXtnzwdtJ01vR4kEMdg4k/1uknGCgJarsIWDS6kFu6USOY8OuIrlz62jZL0AqLvzh5mmchSKY1+IlWs0ia3xHGxa5TZxWG2SO0oUP3INxRz38sJ5rDdMsIR4WnkfqCzVH38FS4QysQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dvBKsgGoaBLlJBRwovtdUYSv0uwVxn6Lxmf4HIdG510=; b=iFBxkVucIuL/eDvqSQJXhKBQbEpoSBXGXEm80+68BLjFOOJ46BN7xATzFSpyXVVuEwJ7dC5WWTXYTge+4h4uNO/u6ZZiN2KU4xj/XPfvLW4FrBdhgWa2k4Q66DTMFToN2FHXBg4O9QtLrooaaWCcOEsW6/9Ts9NcT/0T/jAwtrA= Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by AS8PR08MB6470.eurprd08.prod.outlook.com (2603:10a6:20b:33a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.26; Mon, 24 May 2021 14:14:00 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::80cb:878d:c8f1:2688%7]) with mapi id 15.20.4150.027; Mon, 24 May 2021 14:14:00 +0000 Subject: Re: [edk2-platforms][PATCH V1 3/6] Platform/Sgi: Low Power Idle states for RD-N2-Cfg1 To: Pranav Madhu , devel@edk2.groups.io Cc: Ard Biesheuvel , nd@arm.com References: <20210519082247.3003-1-pranav.madhu@arm.com> <20210519082247.3003-4-pranav.madhu@arm.com> From: "Sami Mujawar" Message-ID: <5eb5d653-35ea-ea79-a3fd-d38ddeb12595@arm.com> Date: Mon, 24 May 2021 15:13:59 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 In-Reply-To: <20210519082247.3003-4-pranav.madhu@arm.com> X-Originating-IP: [217.140.106.52] X-ClientProxiedBy: LNXP265CA0037.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5c::25) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [10.1.196.43] (217.140.106.52) by LNXP265CA0037.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:5c::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23 via Frontend Transport; Mon, 24 May 2021 14:14:00 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 06432fea-0edd-409f-f936-08d91ebe3bd0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6470:|DBBPR08MB4441: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:2803;OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: xugLxUoK6prQhEPAiKFEEgEIIaTwqMdv+/RcY3NHBj3Dduv1ufr/tqx4eP3VrZjHvBe6sxSgl2fKfNzTTnlRqtwlbTqQtmr5tJmOhfc6g34GOur74lTxG+eMTPYDVSRahdTavX5h+dzTkOFko6cBJhhXO7NRNeNpdYVFB0h6CYQf0a3+pb5PzgSeju7W9tObEgN1gdjfk9Ot1UScQ98ce5UHsRBgbK6ETq/0ct2v0CGpN/caVEIYFTf0cn4ztjNnLUz/7RNnPuX1+H4zFKMctMEay4IusxLoIALLUQy1Alt1dOsESKkRibjnV1K6z+WkaUvElEHvbRsYq6hXHfNwzCmIs1n3wASmyO/bhjUvqVW+eMRI/YPXmFNoU6iS+9Axn6R6O0IVU7ZaEDQBLoqDcAJyEcJcaFEVSYeSeEiyHZrIPwH5+JO5AMImcawMoakNNJRpU0fHWyz4ZKXJcM4N3FRdlG5T9PK4XuZdyCjFl/6h17y85YULIo0sh7q7hA7bBm4Exyh6hjl5ylhDo43z1KJJ0yBjuZP9rKaWhUqkHr5wr7+wiQsJta/M6szaLce+TIBo4kSL39MOwQBtYWjBjv2Xh5ZhtCgVCk/vBcXo9C9pgoQrwMplbu6Z2zb0r9ELfhJJy+yQ/jVOceJ23MB0IQrib2keQdiUwhysbourmQjZdSpnBZP0w+AA3Oq4J8OpsbIIPUVlIjeXBk2+5ZfjcA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(376002)(136003)(39860400002)(366004)(396003)(346002)(52116002)(31696002)(66556008)(6486002)(26005)(86362001)(44832011)(33964004)(66476007)(186003)(16526019)(8676002)(53546011)(83380400001)(38100700002)(2616005)(956004)(5660300002)(4326008)(16576012)(316002)(38350700002)(2906002)(36756003)(19627235002)(478600001)(31686004)(8936002)(30864003)(66946007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?eFBqcEtxam5tby9hK0ZUMVFzd2Z5STBIa21LbktpT1p2NjkrTDFIVUh5bHo5?= =?utf-8?B?dzEyZW9sUEJyc21CaG0wZFM5U0h5YW9JWE9KaFVYd2xZQlJpN3E3cGRhZyti?= =?utf-8?B?cDlCaEZmQUo4cmlLNWVRUkl1MHRxUnlhU3ExOU90aVIyMmxUVkxzcEtoUFZR?= =?utf-8?B?OGhEM0doQ0srMUp4a3VtN3UvWVhOVjlLQU9RNDFDdGFRWFQ0ZUVyMkJiY3Nl?= =?utf-8?B?TEFMVWRQR0pXUmRKZWVsU05TUWR5ZlFlRGN0OUo1RkUwNjZiMTlPdWtUcXR6?= =?utf-8?B?dWg2UTlJUEJLdTY3WGN3UmNza3Rjam10NHN4R2hNKzNLSnNnc05menFEZVdl?= =?utf-8?B?cFNVeDF6cFZXSExxMWFtTEtkNHdoQzhQRmVuSjFQM05TTzc4eWtROUpROHhM?= =?utf-8?B?TUUycVlLRjFzUzMrRStZMUtLNmNkZEMrZDlTNXUzbGlzWkw4OENGQjJ4M29M?= =?utf-8?B?SmNtRkdXa1huV28yY2ZUMGRqNEdGMkMvMTczak5McTV5RWhEdWpTWERwU1g1?= =?utf-8?B?c2dLQjl5NExnaUpsYng5eWhJM1JXVWpQWHdrN0ZnaFZvVUJUQXUxQ2lwVExV?= =?utf-8?B?VlIyMGlPU2lGc1ExaXo0Vmh6dlI0Tm5MWERDMk1tendKS1JnNVV2WWNYcWlB?= =?utf-8?B?b1krTC9qaGdVTTZyRHR0YXh6emxPY1JXM2l2RVN3M3drejVYN2VxK3dEaEJI?= =?utf-8?B?cEhodTNDMmxTOExrSlJHVWNQaGw4S09VVUFDRTFMN3IzVFY1bDBVazAvUTRy?= =?utf-8?B?UlZpVTJQa3JFcTF4eENzbkRyQUE2MzZselArd1RtRHg2bEVkS1NoWU9QUGJ2?= =?utf-8?B?TFZleGlCc1ZVS2t0T0RpZStydnFEZVBQeTdKZWxJaHNCSFFTUUxRMUlmQiti?= =?utf-8?B?RjhtSTd6WlRNT2gzWDRGYXJiRG9GdHJTVW41V2N6R1NhdlJ4TitieUU0NHFJ?= =?utf-8?B?REI4bHo1WWE2Nm14WGVOWm1zYm50OTFiSWVsYzQ1cEdRL3AyakRKNFNLdXBK?= =?utf-8?B?QXc0SDVFZm9jWmthQisza2lNZEpPVThBcVBCTEN2UnVma09kVjh1TjliSHA0?= =?utf-8?B?ZEVBdlpQS1IrQktJdVdBaisyYUhMVUtKa0NQczJSWEtGVFJCR3lmQmlaemlO?= =?utf-8?B?L0lDdDhMbXc2SExOTkFXMHNQdW55ZWk3RUQ4Mjk4aWdLdjF1Si82RnpHTGRl?= =?utf-8?B?L285Q0ZpRGFkS1FsTnNTV2tsa0VMSmtIVk43VDVUT0RjdU5FQzNvWGxLTGlB?= =?utf-8?B?MHBUMmhnT3BRWlp6bk14ZDJIN0RLRWFvWDA2TUtnSXQydmpjN2NIWFZRRzlB?= =?utf-8?B?b0FNRUFqeEE1WVdrVDFDZUV5ZE94b3ptQ1NsNHFIT1JEUnVlWjFuK3JYY0hm?= =?utf-8?B?MG9RMkExMlNXOFJpZWpPUm9jRFBBczVYVEZncnd4UFpYVUl2QlBRTFIybVRz?= =?utf-8?B?WTJuN0xCczljdURVZVdDTVc0aVlHRHk1V0pVSStiMFBYWGFUdjdicHp5S2dx?= =?utf-8?B?eVZncDlOOG9ScUJ3czRwSjEwOHpHbkVtT1VFVzQwVDRlMUdMMEk4VHBRbnBu?= =?utf-8?B?b2N0aGFsbHBZOTE1UDhXSSszbW1CejBETzNPWHpwTU0zaHkyOXVPbHV0NmFz?= =?utf-8?B?b2wzYythY2NXMytnajFGczVjdkNmRFp1R1dSVVRsOEdZT0RvanpsbTIzbHps?= =?utf-8?B?c1M3ZGVQR0NNSS9KRXRLZU04ZGJkUWM5MnhISWlZTXhobVBlTm1BamNQK3ls?= =?utf-8?Q?m/ocGNwBREw+oYCHwTrvuGo23ZyfYKM/ncwUf/V?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6470 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: eb2c9910-579d-4288-e2cc-08d91ebe2d4c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: e/Dqh8Wr5IMaLuSuf596ChZbczs3mgbKDsYzWFDU71Gwuh95I/wURBPnPJ6jjjxr04Wg8/MXWByE0Ao73Pazau8mFGjytrHLiyXLi/jsYkNPzCSgl5hmHiuPlE2+nAlzGdzvd9usmj7NvI80DjpTvlN7T5iH6srAgXqI08NezR4WmElkU+Ti8WCAuEnligmOVdXVgNqnwd6DpcMp3qeAgB3lDDkkZtzfYtjtaWr0YpwWWlgcwlUjVHxnUuAefo5MqnwsUAJ/nhtVNdGNZchCY7rJsYzGftrPlV+s66eigzaRMaA7OD9dZ6S/8CWKoEqpVyPlyIA0OhSfobK+gi9JvyGGSyScQBNKFZCv5QzzgRLjsDRJ5iyDxpe7/iL+DB47Xr1KV5OjcdplimHL6NJv7ibGFnfrWwVYtYLj3pMmY97tBRnMB0KJIYhGjKWbjnWAVnW9ab5cQGvwblCsk8Eo1f3ihU/L7HW9QLiqt7fe703WFmd1XBiWnR20BHzsu2ImyzkUO3pGv3xZW9FyJAALgPqh+1NaK462s18nb5nfnbrQscmd3j0Fn1wL7k87D1Sz3SvR+eFjYLW5K/Rn7I9acQPc+vaoL771YxTjAsp8aMwzV5apWZXBmmocjCDDHujHDpysTKRUOMQ2YysHeOosk4U9eG34+6oQS5g62C1jPsZHi7X+fCTcQhjKi4z1+sTq X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(346002)(136003)(39860400002)(376002)(396003)(36840700001)(46966006)(4326008)(31696002)(70586007)(336012)(19627235002)(16576012)(316002)(6486002)(2906002)(70206006)(44832011)(83380400001)(31686004)(478600001)(186003)(82740400003)(33964004)(5660300002)(26005)(16526019)(53546011)(2616005)(8676002)(82310400003)(36860700001)(356005)(36756003)(86362001)(956004)(81166007)(47076005)(30864003)(8936002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2021 14:14:24.5731 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 06432fea-0edd-409f-f936-08d91ebe3bd0 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT032.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4441 Content-Type: multipart/alternative; boundary="------------7EB578651AA224A45146B52A" Content-Language: en-GB --------------7EB578651AA224A45146B52A Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi Pranav, This patch looks good to me. Reviewed-by: Sami Mujawar Regards, Sami Mujawar On 19/05/2021 09:22 AM, Pranav Madhu wrote: > RD-N2-Cfg1 platform supports 2 LPI states, LPI1 (Standby WFI) and LPI3 > (Power-down) and the cluster supports LPI2 (Power-down) state. The LPI > implementation also supports combined power state for core and cluster. > > Signed-off-by: Pranav Madhu > --- > Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl | 158 ++++++++++++++++++++ > 1 file changed, 158 insertions(+) > > diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl > index d68523bc43ed..55f51cc26aff 100644 > --- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl > +++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl > @@ -19,91 +19,249 @@ > DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI", > EFI_ACPI_ARM_OEM_REVISION) { > Scope (_SB) { > + /* _OSC: Operating System Capabilities */ > + Method (_OSC, 4, Serialized) { > + CreateDWordField (Arg3, 0x00, STS0) > + CreateDWordField (Arg3, 0x04, CAP0) > + > + /* Platform-wide Capabilities */ > + If (LEqual (Arg0, ToUUID("0811b06e-4a27-44f9-8d60-3cbbc22e7b48"))) { > + /* OSC rev 1 supported, for other version, return failure */ > + If (LEqual (Arg1, One)) { > + And (STS0, Not (OSC_STS_MASK), STS0) > + > + If (And (CAP0, OSC_CAP_OS_INITIATED_LPI)) { > + /* OS initiated LPI not supported */ > + And (CAP0, Not (OSC_CAP_OS_INITIATED_LPI), CAP0) > + Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0) > + } > + } Else { > + And (STS0, Not (OSC_STS_MASK), STS0) > + Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0) > + } > + } Else { > + And (STS0, Not (OSC_STS_MASK), STS0) > + Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_UUID), STS0) > + } > + > + Return (Arg3) > + } > + > + Name (CLPI, Package () { /* LPI for Cluster, support 1 LPI state */ > + 0, // Version > + 0, // Level Index > + 1, // Count > + Package () { // Power Gating state for Cluster > + 2500, // Min residency (uS) > + 1150, // Wake latency (uS) > + 1, // Flags > + 1, // Arch Context Flags > + 100, // Residency Counter Frequency > + 0, // No Parent State > + 0x00000020, // Integer Entry method > + ResourceTemplate () { // Null Residency Counter > + Register (SystemMemory, 0, 0, 0, 0) > + }, > + ResourceTemplate () { // Null Usage Counter > + Register (SystemMemory, 0, 0, 0, 0) > + }, > + "LPI2-Cluster" > + }, > + }) > + > + Name (PLPI, Package () { /* LPI for Processor, support 2 LPI states */ > + 0, // Version > + 1, // Level Index > + 2, // Count > + Package () { // WFI for CPU > + 1, // Min residency (uS) > + 1, // Wake latency (uS) > + 1, // Flags > + 0, // Arch Context lost Flags (no loss) > + 100, // Residency Counter Frequency > + 0, // No parent state > + ResourceTemplate () { // Register Entry method > + Register (FFixedHW, > + 32, // Bit Width > + 0, // Bit Offset > + 0xFFFFFFFF, // Address > + 3, // Access Size > + ) > + }, > + ResourceTemplate () { // Null Residency Counter > + Register (SystemMemory, 0, 0, 0, 0) > + }, > + ResourceTemplate () { // Null Usage Counter > + Register (SystemMemory, 0, 0, 0, 0) > + }, > + "LPI1-Core" > + }, > + Package () { // Power Gating state for CPU > + 150, // Min residency (uS) > + 350, // Wake latency (uS) > + 1, // Flags > + 1, // Arch Context lost Flags (Core context lost) > + 100, // Residency Counter Frequency > + 1, // Parent node can be in any shallower state > + ResourceTemplate () { // Register Entry method > + Register (FFixedHW, > + 32, // Bit Width > + 0, // Bit Offset > + 0x40000002, // Address (PwrLvl:core, StateTyp:PwrDn) > + 3, // Access Size > + ) > + }, > + ResourceTemplate () { // Null Residency Counter > + Register (SystemMemory, 0, 0, 0, 0) > + }, > + ResourceTemplate () { // Null Usage Counter > + Register (SystemMemory, 0, 0, 0, 0) > + }, > + "LPI3-Core" > + }, > + }) > + > Device (CL00) { // Cluster 0 > Name (_HID, "ACPI0010") > Name (_UID, 0) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP00) { // Neoverse N2 core 0 > Name (_HID, "ACPI0007") > Name (_UID, 0) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL01) { // Cluster 1 > Name (_HID, "ACPI0010") > Name (_UID, 1) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP01) { // Neoverse N2 core 1 > Name (_HID, "ACPI0007") > Name (_UID, 1) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL02) { // Cluster 2 > Name (_HID, "ACPI0010") > Name (_UID, 2) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP02) { // Neoverse N2 core 2 > Name (_HID, "ACPI0007") > Name (_UID, 2) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL03) { // Cluster 3 > Name (_HID, "ACPI0010") > Name (_UID, 3) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP03) { // Neoverse N2 core 3 > Name (_HID, "ACPI0007") > Name (_UID, 3) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL04) { // Cluster 4 > Name (_HID, "ACPI0010") > Name (_UID, 4) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP04) { // Neoverse N2 core 4 > Name (_HID, "ACPI0007") > Name (_UID, 4) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL05) { // Cluster 5 > Name (_HID, "ACPI0010") > Name (_UID, 5) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP05) { // Neoverse N2 core 5 > Name (_HID, "ACPI0007") > Name (_UID, 5) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL06) { // Cluster 6 > Name (_HID, "ACPI0010") > Name (_UID, 6) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP06) { // Neoverse N2 core 6 > Name (_HID, "ACPI0007") > Name (_UID, 6) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > > Device (CL07) { // Cluster 7 > Name (_HID, "ACPI0010") > Name (_UID, 7) > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.CLPI) > + } > > Device (CP07) { // Neoverse N2 core 7 > Name (_HID, "ACPI0007") > Name (_UID, 7) > Name (_STA, 0xF) > + > + Method (_LPI, 0, NotSerialized) { > + Return (\_SB.PLPI) > + } > } > } > } // Scope(_SB) --------------7EB578651AA224A45146B52A Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit

Hi Pranav,

This patch looks good to me.

Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>

Regards,

Sami Mujawar


On 19/05/2021 09:22 AM, Pranav Madhu wrote:
RD-N2-Cfg1 platform supports 2 LPI states, LPI1 (Standby WFI) and LPI3
(Power-down) and the cluster supports LPI2 (Power-down) state. The LPI
implementation also supports combined power state for core and cluster.

Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
---
 Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl | 158 ++++++++++++++++++++
 1 file changed, 158 insertions(+)

diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl
index d68523bc43ed..55f51cc26aff 100644
--- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl
+++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Dsdt.asl
@@ -19,91 +19,249 @@
 DefinitionBlock ("DsdtTable.aml", "DSDT", 2, "ARMLTD", "ARMSGI",
                  EFI_ACPI_ARM_OEM_REVISION) {
   Scope (_SB) {
+    /* _OSC: Operating System Capabilities */
+    Method (_OSC, 4, Serialized) {
+      CreateDWordField (Arg3, 0x00, STS0)
+      CreateDWordField (Arg3, 0x04, CAP0)
+
+      /* Platform-wide Capabilities */
+      If (LEqual (Arg0, ToUUID("0811b06e-4a27-44f9-8d60-3cbbc22e7b48"))) {
+        /* OSC rev 1 supported, for other version, return failure */
+        If (LEqual (Arg1, One)) {
+          And (STS0, Not (OSC_STS_MASK), STS0)
+
+          If (And (CAP0, OSC_CAP_OS_INITIATED_LPI)) {
+            /* OS initiated LPI not supported */
+            And (CAP0, Not (OSC_CAP_OS_INITIATED_LPI), CAP0)
+            Or (STS0, OSC_STS_CAPABILITY_MASKED, STS0)
+          }
+        } Else {
+          And (STS0, Not (OSC_STS_MASK), STS0)
+          Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_REV), STS0)
+        }
+      } Else {
+        And (STS0, Not (OSC_STS_MASK), STS0)
+        Or (STS0, Or (OSC_STS_FAILURE, OSC_STS_UNRECOGNIZED_UUID), STS0)
+      }
+
+      Return (Arg3)
+    }
+
+    Name (CLPI, Package () {  /* LPI for Cluster, support 1 LPI state */
+      0,                      // Version
+      0,                      // Level Index
+      1,                      // Count
+      Package () {            // Power Gating state for Cluster
+        2500,                 // Min residency (uS)
+        1150,                 // Wake latency (uS)
+        1,                    // Flags
+        1,                    // Arch Context Flags
+        100,                  // Residency Counter Frequency
+        0,                    // No Parent State
+        0x00000020,           // Integer Entry method
+        ResourceTemplate () { // Null Residency Counter
+          Register (SystemMemory, 0, 0, 0, 0)
+        },
+        ResourceTemplate () { // Null Usage Counter
+          Register (SystemMemory, 0, 0, 0, 0)
+        },
+        "LPI2-Cluster"
+      },
+    })
+
+    Name (PLPI, Package () {  /* LPI for Processor, support 2 LPI states */
+      0,                      // Version
+      1,                      // Level Index
+      2,                      // Count
+      Package () {            // WFI for CPU
+        1,                    // Min residency (uS)
+        1,                    // Wake latency (uS)
+        1,                    // Flags
+        0,                    // Arch Context lost Flags (no loss)
+        100,                  // Residency Counter Frequency
+        0,                    // No parent state
+        ResourceTemplate () { // Register Entry method
+          Register (FFixedHW,
+            32,               // Bit Width
+            0,                // Bit Offset
+            0xFFFFFFFF,       // Address
+            3,                // Access Size
+          )
+        },
+        ResourceTemplate () { // Null Residency Counter
+          Register (SystemMemory, 0, 0, 0, 0)
+        },
+        ResourceTemplate () { // Null Usage Counter
+          Register (SystemMemory, 0, 0, 0, 0)
+        },
+        "LPI1-Core"
+      },
+      Package () {            // Power Gating state for CPU
+        150,                  // Min residency (uS)
+        350,                  // Wake latency (uS)
+        1,                    // Flags
+        1,                    // Arch Context lost Flags (Core context lost)
+        100,                  // Residency Counter Frequency
+        1,                    // Parent node can be in any shallower state
+        ResourceTemplate () { // Register Entry method
+          Register (FFixedHW,
+            32,               // Bit Width
+            0,                // Bit Offset
+            0x40000002,       // Address (PwrLvl:core, StateTyp:PwrDn)
+            3,                // Access Size
+          )
+        },
+        ResourceTemplate () { // Null Residency Counter
+          Register (SystemMemory, 0, 0, 0, 0)
+        },
+        ResourceTemplate () { // Null Usage Counter
+          Register (SystemMemory, 0, 0, 0, 0)
+        },
+        "LPI3-Core"
+      },
+    })
+
     Device (CL00) {   // Cluster 0
       Name (_HID, "ACPI0010")
       Name (_UID, 0)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP00) { // Neoverse N2 core 0
         Name (_HID, "ACPI0007")
         Name (_UID, 0)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL01) {   // Cluster 1
       Name (_HID, "ACPI0010")
       Name (_UID, 1)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP01) { // Neoverse N2 core 1
         Name (_HID, "ACPI0007")
         Name (_UID, 1)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL02) {   // Cluster 2
       Name (_HID, "ACPI0010")
       Name (_UID, 2)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP02) { // Neoverse N2 core 2
         Name (_HID, "ACPI0007")
         Name (_UID, 2)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL03) {   // Cluster 3
       Name (_HID, "ACPI0010")
       Name (_UID, 3)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP03) { // Neoverse N2 core 3
         Name (_HID, "ACPI0007")
         Name (_UID, 3)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL04) {   // Cluster 4
       Name (_HID, "ACPI0010")
       Name (_UID, 4)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP04) { // Neoverse N2 core 4
         Name (_HID, "ACPI0007")
         Name (_UID, 4)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL05) {   // Cluster 5
       Name (_HID, "ACPI0010")
       Name (_UID, 5)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP05) { // Neoverse N2 core 5
         Name (_HID, "ACPI0007")
         Name (_UID, 5)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL06) {   // Cluster 6
       Name (_HID, "ACPI0010")
       Name (_UID, 6)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP06) { // Neoverse N2 core 6
         Name (_HID, "ACPI0007")
         Name (_UID, 6)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
 
     Device (CL07) {   // Cluster 7
       Name (_HID, "ACPI0010")
       Name (_UID, 7)
+      Method (_LPI, 0, NotSerialized) {
+        Return (\_SB.CLPI)
+      }
 
       Device (CP07) { // Neoverse N2 core 7
         Name (_HID, "ACPI0007")
         Name (_UID, 7)
         Name (_STA, 0xF)
+
+        Method (_LPI, 0, NotSerialized) {
+          Return (\_SB.PLPI)
+        }
       }
     }
   } // Scope(_SB)

--------------7EB578651AA224A45146B52A--