From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=217.140.101.70; helo=foss.arm.com; envelope-from=chandni.cherukuri@arm.com; receiver=edk2-devel@lists.01.org Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by ml01.01.org (Postfix) with ESMTP id 0AF162118F374 for ; Mon, 12 Nov 2018 06:17:06 -0800 (PST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A119D80D for ; Mon, 12 Nov 2018 06:17:06 -0800 (PST) Received: from mail-ed1-f44.google.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 70B273F5BD for ; Mon, 12 Nov 2018 06:17:06 -0800 (PST) Received: by mail-ed1-f44.google.com with SMTP id h15so2714410edb.4 for ; Mon, 12 Nov 2018 06:17:06 -0800 (PST) X-Gm-Message-State: AGRZ1gIhAnnzD6nemwtSYcvTbR62SgqesOSJKutYX+Rr0E8G3N4agplg nG2LU7crbYJ82ZQ8LTwZx8L3awA5T34ZALfydEE= X-Google-Smtp-Source: AJdET5edr9OPyOU1lWpmBujOlkKmGPaY1b106mO4IMz8dYOI4V+2HLVWQ97FomYbaOBRvBDvz9q/vDUb6PvW7dA9gjU= X-Received: by 2002:a17:906:c3c6:: with SMTP id cj6-v6mr9520807ejb.178.1542032224779; Mon, 12 Nov 2018 06:17:04 -0800 (PST) MIME-Version: 1.0 References: <1541410019-1781-1-git-send-email-chandni.cherukuri@arm.com> <1541410019-1781-2-git-send-email-chandni.cherukuri@arm.com> <20181109162918.biighqlpmr3ueesw@bivouac.eciton.net> <20181112112525.vla3bjxfinjpupmg@bivouac.eciton.net> In-Reply-To: <20181112112525.vla3bjxfinjpupmg@bivouac.eciton.net> From: chandni cherukuri Date: Mon, 12 Nov 2018 19:46:38 +0530 X-Gmail-Original-Message-ID: Message-ID: To: Leif Lindholm Cc: Chandni Cherukuri , edk2-devel@lists.01.org Subject: Re: [PATCH v2 edk2-platforms 1/5] Platform/ARM/Sgi: Adapt to changes in system-id DT node. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Nov 2018 14:17:07 -0000 Content-Type: text/plain; charset="UTF-8" On Mon, Nov 12, 2018 at 4:55 PM Leif Lindholm wrote: > > +edk2-devel > > On Mon, Nov 12, 2018 at 04:28:35PM +0530, chandni cherukuri wrote: > > On Fri, Nov 9, 2018 at 9:59 PM Leif Lindholm wrote: > > > > > > On Mon, Nov 05, 2018 at 02:56:55PM +0530, Chandni Cherukuri wrote: > > > > The 'system-id' node of HW_CONFIG device tree has been updated to have > > > > a new property 'config-id' to hold the platform configuration value. > > > > Prior to this, configuration ID value was represented by the the upper > > > > four bits of the 'platform ID' property value but it now has a seperate > > > > property of its own in the 'system-id' node. So adapt to these changes > > > > in the 'system-id' node. > > > > > > This gets a bit hairy semantically: > > > - PlatformId used to be the contents of node "platform-id" > > > - PlatformId is now the union of the lower 28 bits of node > > > "platform-id" and the 4 bottom bits of new node "config-id", > > > - The result is still called PlatformId. > > > > > > Is there some better way of describing this? Should the function name > > > change? > > > > > Before the 'system-id' node is represented as - > > system-id { > > platform-id = <>; /* Consists of both PART NUMBER and Configuration ID */ > > } > > > > Earlier for the 'platform-id' property, the upper 4 bits consisted of > > the configuration > > number and the lower 12 bits consisted of the part number of the platform but > > now that value has been split across two properties ('platform-id' and > > 'config-id') > > , 'platform-id' consists of the part number and 'config-id' consists > > of the configuration > > number of the platform. > > > > Currently the system-id node is represented as below - > > system-id { > > platform-id = <>; /* PART NUMBER */ > > config-id = <>; /* Configuration ID */ > > } > > > > So even now the contents of the 'PlatformId' is still the same. To > > account for the > > changes done in the 'system-id' device tree node the code as been > > modified so that > > the 'PlatformId' variable still consists of both the PART NUMBER and > > Configuration ID > > of the platform. > > OK, so given that (excellent) explanation, it sounds to me like the > function should be renamed (more below). > > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > > > Signed-off-by: Chandni Cherukuri > > > > --- > > > > .../SgiPkg/Library/SgiPlatformPei/SgiPlatformPeim.c | 19 ++++++++++++++++++- > > > > > > Can you ensure you generate patches in accordance with the > > > instructions at > > > https://github.com/tianocore/tianocore.github.io/wiki/Laszlo's-unkempt-git-guide-for-edk2-contributors-and-maintainers#contrib-23 > > > ? > > > > > ok. will generate the patches accordingly. > > > > > > 1 file changed, 18 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPei/SgiPlatformPeim.c b/Platform/ARM/SgiPkg/Library/SgiPlatformPei/SgiPlatformPeim.c > > > > index 081d329..8b6c71b 100644 > > > > --- a/Platform/ARM/SgiPkg/Library/SgiPlatformPei/SgiPlatformPeim.c > > > > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPei/SgiPlatformPeim.c > > > > @@ -42,6 +42,8 @@ GetSgiPlatformId ( > > > > > > Since this is changing what the return value of the function means, > > > can the function description comment be updated as well? > > > > > The return value of the function is still the same as before. The function > > returns the 'PlatformId' variable in which the upper 4 bits consists of the > > Configuration ID and the lower 12 bits consists of the part number of > > the platform. > > Yes, but the fact that the return value is numerically the same is > irrelevant; it now means something different than what it used to be. > > Based on your explanation above, I would suggest a more appropriate > name for this function would now be GetSgiSystemId. > Ok, will change the name of this function in the next version. > *however* ... it also makes me question why this change was made in > this way? If we're changing the underlying data structure, why are we > not also changing SGI_PLATFORM_DESCRIPTOR to reflect this? > The intention was to not modify the existing code due to the changes in the 'system-id' device tree node. And this was done by concatenating the platform-id and config-id value into one. So this was the reason for not adding a 'config-id' member in the SGI_PLATFORM_DESCRIPTOR structure. > If we do that, we can then get rid of the opposite shifting/masking in > ArmSgiPkgEntryPoint() and nuke SGI_PART_NUM_MASK, SGI_CONFIG_SHIFT and > SGI_CONFIG_MASK completely. > Ok. The preference was given to keep the format and the PlatformID parsing code as before, which, otherwise would need lot more changes to the code. > > > > CONST VOID *HwCfgDtBlob; > > > > SGI_HW_CONFIG_INFO_PPI *HwConfigInfoPpi; > > > > EFI_STATUS Status; > > > > + UINT32 PlatformId; > > > > + UINT32 ConfigId; > > > > > > > > Status = PeiServicesLocatePpi (&gHwConfigDtInfoPpiGuid, 0, NULL, > > > > (VOID**)&HwConfigInfoPpi); > > > > @@ -69,7 +71,22 @@ GetSgiPlatformId ( > > > > return 0; > > > > } > > > > > > > > - return fdt32_to_cpu (*Property); > > > > + PlatformId = fdt32_to_cpu (*Property); > > > > + > > > > + Property = fdt_getprop (HwCfgDtBlob, Offset, "config-id", NULL); > > > > + if (Property == NULL) { > > > > + DEBUG ((DEBUG_ERROR, "Config Id is NULL\n")); > > > > + return 0; > > > > + } > > > > + > > > > + ConfigId = fdt32_to_cpu (*Property); > > > > + > > > > + // Concatenate the value of config ID into the platform ID value with > > > > + // config ID occupying the upper 4 bits of platform ID. > > > > + ConfigId = ConfigId & SGI_CONFIG_MASK; > > > > > > We are here silently discarding 28 bits of data that need to be set to > > > 0 for the below operation to make sense. > > > I think an ASSERT might be in order. > > > > > okay. will introduce an assert if the upper 28 bits of data for > > ConfigId is not 0. > > > > > I also note that we've neither looked at nor cleared the top four bits > > > of PlatformId. > > > > > Okay. will introduce an ASSERT if the upper 4 bits of PlatformId id not 0. > > > > > > + PlatformId = PlatformId | (ConfigId << SGI_CONFIG_SHIFT); > > > > + > > > > + return PlatformId; > > > > > > I would be happier with just the return statement - reusing the > > > PlatformId variable does not simplify anything. > > > > > I did not understand this point. > > Merely that > > return PlatformId | (ConfigId << SGI_CONFIG_SHIFT); > > is easier to read than (and hence preferable to) > > PlatformId = PlatformId | (ConfigId << SGI_CONFIG_SHIFT); > > return PlatformId; > > . Ok. will fix this in the next version. Thanks Chandni > > But depending on your take on my comments above, this may now be > irrelevant. > > Regards, > > Leif > > > > / > > > Leif. > > > > > > > } > > > > > > > > /** > > > > -- > > > > 2.7.4 > > > > > > > _______________________________________________ > > > edk2-devel mailing list > > > edk2-devel@lists.01.org > > > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel