From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com [216.228.121.65]) by mx.groups.io with SMTP id smtpd.web12.577.1577153143555804920 for ; Mon, 23 Dec 2019 18:05:43 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=n1 header.b=i8XlsMkH; spf=pass (domain: nvidia.com, ip: 216.228.121.65, mailfrom: ashishsingha@nvidia.com) Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Mon, 23 Dec 2019 18:05:31 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Mon, 23 Dec 2019 18:05:42 -0800 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Mon, 23 Dec 2019 18:05:42 -0800 Received: from HQMAIL111.nvidia.com (172.20.187.18) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 24 Dec 2019 02:05:42 +0000 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.175) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Tue, 24 Dec 2019 02:05:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oLdtmXJiCsg9yBrLwRbDaUHb/7WWaEEv8GVLCUZ73wNKSMp82cco9TGtID48WZi3zHIlNhI7uYHbzAy+rrp88KxqcUBAFfJii8UGx5hPjDbBhA7S8wiWrLPWtSvjE/Az3WgJytcoEuBJ9AwpkWNqZcJoO/DAl3plNS031I1vA9nd7UxCli6qLUWm/HMdlOCRGMriuDcVcvHhS1170l0Fc2mpPqjDxr3b5caREHCpgD13w5mESgysBoqt9+U5xNyILOFy78lyMuNJAlQr0YkU1RQZ6v6io0MkiaWMNErH2j+IxY68F8NVi1ldq1QPFCbeu1t8RrpBEIr45xck8+o2Vg== 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=qphdfwuWrSguVr0PZ6+XMb5q1WWDnc9u85YvaCTOPE0=; b=cBZN8WuPrKiA5U+4xncWJMo4cQbvadPNmGi4of++knsAsULB20alnwSxY6sNGomxx6Mk5Ey6GK0dpETNgsCRFL2SGOSZYEPf/+PKtAPOLK6FG6XPqlWT3sUkpIZVpflHtCr6ruSRgQItBVCD3QV4Ddy8hhn1aJjMIjo4Pz6c8Vufxn1/hye9wDwMq6/p2SaK/1dBhK1U6U43U2oHLUez31CFe8YpsUoNTvOI7YCaORSoScQtfMzdY6+Lt2dlRHpPK+QsnmBOe5ohK/Mg/zdwgZOLdI/1wisaycwQPIWVJO5y/7zIhvIyZpXcpfJIxYb1zGoHG7Hq+GFSKb+eaLVFRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none Received: from DM6PR12MB3324.namprd12.prod.outlook.com (20.178.31.154) by DM6PR12MB3065.namprd12.prod.outlook.com (20.178.199.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2559.20; Tue, 24 Dec 2019 02:05:41 +0000 Received: from DM6PR12MB3324.namprd12.prod.outlook.com ([fe80::d59b:7923:689f:bdc0]) by DM6PR12MB3324.namprd12.prod.outlook.com ([fe80::d59b:7923:689f:bdc0%6]) with mapi id 15.20.2559.017; Tue, 24 Dec 2019 02:05:41 +0000 From: "Ashish Singhal" To: "devel@edk2.groups.io" , "ray.ni@intel.com" , "jian.j.wang@intel.com" , "hao.a.wu@intel.com" , "zhichao.gao@intel.com" , "michael.d.kinney@intel.com" , "afish@apple.com" Subject: Re: [PATCH v6] MdeModulePkg: Add EDK2 Platform Boot Manager Protocol Thread-Topic: [PATCH v6] MdeModulePkg: Add EDK2 Platform Boot Manager Protocol Thread-Index: AQHVuThwwPy5DAw+UUGgECCh2fNDrqfIirLw Date: Tue, 24 Dec 2019 02:05:40 +0000 Message-ID: References: <99d69ff17a4ca86b23a889b9ac84832d7f7a13b1.1577067900.git.ashishsingha@nvidia.com> In-Reply-To: <99d69ff17a4ca86b23a889b9ac84832d7f7a13b1.1577067900.git.ashishsingha@nvidia.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_Enabled=True; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_SiteId=43083d15-7273-40c1-b7db-39efd9ccc17a; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_Owner=ashishsingha@nvidia.com; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_SetDate=2019-12-24T02:05:38.7459885Z; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_Name=Unrestricted; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_Application=Microsoft Azure Information Protection; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_ActionId=a052632e-b82c-450b-a416-d0fce5fa55b5; MSIP_Label_6b558183-044c-4105-8d9c-cea02a2a3d86_Extended_MSFT_Method=Automatic authentication-results: spf=none (sender IP is ) smtp.mailfrom=ashishsingha@nvidia.com; x-originating-ip: [8.46.90.104] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bac8917d-c4c0-41cb-403f-08d78815c703 x-ms-traffictypediagnostic: DM6PR12MB3065: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 0261CCEEDF x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(346002)(376002)(136003)(396003)(366004)(199004)(189003)(13464003)(2906002)(9686003)(316002)(110136005)(76116006)(66946007)(66476007)(66556008)(64756008)(66446008)(186003)(6506007)(55016002)(86362001)(81156014)(8676002)(53546011)(81166006)(8936002)(33656002)(52536014)(7696005)(478600001)(5660300002)(26005)(19627235002)(71200400001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3065;H:DM6PR12MB3324.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nvidia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2CDOzyfMq95eGbGkUIxKz0uA4MRywdB93AFAwRz/tFTxVvKPbuEs9zhKeCIqbGBetox2E7kEgwx4Ww++CWWfshf2RRgopifCIkEdgalM7N1q8KyhAOLWoRhqXNIwkKNs7IM3ETMV320v7VEAHQ0K/SahL85thIpWIaFV3Z+xX1eB7/0R2M/fYBhWNmWrRfFqnhBMNSTKh9GLBtGU4wIbP7yS0VhqyspXXAoYbWsJICC1H+N80yEFy0Xssz27wZfJfUffdKrbMM//Dnwu1tASwv/EJ1xqGRVs1gkq5gcyOImk3uCznhbVYRdIGS2c1gfRYW66w8/pag5ElJ56mR0XzUNRYVKXei9lXWUQtrhu6v2bILY9/fiL53tIsQBxd0E5QzfZs6bxl6tTIS4m+6aSQHqKstPxIDiwjnAvaXTYYIi3Zq+072/9z4WwITUhB5qEbb7AXUcAe2p/pUUuA+yE/BfAbhSSHEYcXDFxNNckg+UszO7ZqmtpfSX5e2j6XmM2 x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: bac8917d-c4c0-41cb-403f-08d78815c703 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Dec 2019 02:05:40.7816 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wFKldKudkGtywbzh0E1ZbrmxtdQ5ym3EGRmgUJAKtoZNMyCG36XTXifoZLAEvkmhP9kuT+hl3C4ek/cHY5QlvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3065 Return-Path: ashishsingha@nvidia.com X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1577153131; bh=R32L3EKXlJPYUEwub+std4HpDTp05NxHI6MQmpTVO84=; h=X-PGP-Universal:ARC-Seal:ARC-Message-Signature: ARC-Authentication-Results:From:To:Subject:Thread-Topic: Thread-Index:Date:Message-ID:References:In-Reply-To: Accept-Language:X-MS-Has-Attach:X-MS-TNEF-Correlator:msip_labels: authentication-results:x-originating-ip:x-ms-publictraffictype: x-ms-office365-filtering-correlation-id:x-ms-traffictypediagnostic: x-microsoft-antispam-prvs:x-ms-oob-tlc-oobclassifiers: x-forefront-prvs:x-forefront-antispam-report:received-spf: x-ms-exchange-senderadcheck:x-microsoft-antispam: x-microsoft-antispam-message-info:x-ms-exchange-transport-forked: MIME-Version:X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg: Content-Language:Content-Type:Content-Transfer-Encoding; b=i8XlsMkHlGP/ylPBhnH9LhN/fQajhr6BHdjE+q5Q8qwBxh/50u3LTNeT26euSu536 XAS1B08j65UlPDLl4BYC7KcVea9Wcvfad17tacLiaD0Ta9SKSmBvH0Qr5jJmoC5qI5 C9ptS99MForipJHS4MF2XnHka359qcbM/smAnkFVG3BYd5QZDzl+i9o28uumxOtgtL BESs14aou5plTyjMLt0RA/uaepOWNGGJ23HFtw20pxYoFNtAfgjILE8NuA95woEKSa uP4qkzqXmIXSSWOfv2UvwB3pTWSVd10KbxiXzzoVPPVD5rxApBQZ8lPAXjCqHE48xF g+rxw//zL/oJQ== Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Guys, Do we have any feedback on this? Thanks Ashish -----Original Message----- From: Ashish Singhal =20 Sent: Sunday, December 22, 2019 7:27 PM To: devel@edk2.groups.io; ray.ni@intel.com; jian.j.wang@intel.com; hao.a.= wu@intel.com; zhichao.gao@intel.com; michael.d.kinney@intel.com; afish@ap= ple.com Cc: Ashish Singhal Subject: [PATCH v6] MdeModulePkg: Add EDK2 Platform Boot Manager Protocol= Add edk2 platform boot manager protocol which would have platform specifi= c refreshes to the auto enumerated as well as NV boot options for the pla= tform. Signed-off-by: Ashish Singhal --- =20.../Include/Protocol/PlatformBootManager.h | 82 ++++++++++++++= ++++++++ =20MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 41 +++++++++-- =20.../Library/UefiBootManagerLib/InternalBm.h | 2 + =20.../UefiBootManagerLib/UefiBootManagerLib.inf | 2 + =20MdeModulePkg/MdeModulePkg.dec | 4 ++ =205 files changed, 124 insertions(+), 7 deletions(-) create mode 100644= =20MdeModulePkg/Include/Protocol/PlatformBootManager.h diff --git a/MdeModulePkg/Include/Protocol/PlatformBootManager.h b/MdeMod= ulePkg/Include/Protocol/PlatformBootManager.h new file mode 100644 index 0000000..0354c60 --- /dev/null +++ b/MdeModulePkg/Include/Protocol/PlatformBootManager.h @@ -0,0 +1,82 @@ +/** @file + + Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __PLATFORM_BOOT_MANAGER_PROTOCOL_H__ +#define __PLATFORM_BOOT_MANAGER_PROTOCOL_H__ + +#include + +// +// Platform Boot Manager Protocol GUID value // #define=20 +EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_GUID \ + { \ + 0xaa17add4, 0x756c, 0x460d, { 0x94, 0xb8, 0x43, 0x88, 0xd7, 0xfb, = 0x3e, 0x59 } \ + } + +// +// Protocol interface structure +// +typedef struct _EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL=20 +EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL; + +// +// Revision The revision to which the protocol interface adheres. +// All future revisions must be backwards compatible. +// If a future version is not back wards compatible it is not t= he same GUID. +// +#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION 0x00000001 + +// +// Function Prototypes +// + +/* + This function allows platform to refresh all boot options specific to = +the platform. Within + this function, platform can make modifications to the auto enumerated = +platform boot options + as well as NV boot options. + + @param[in const] BootOptions An array of auto enumerated p= latform boot options. + This array will be freed by c= aller upon successful + exit of this function and out= put array would be used. + + @param[in const] BootOptionsCount The number of elements in Boo= tOptions. + + @param[out] UpdatedBootOptions An array of boot options that= =20have been customized + for the platform on top of in= put boot options. This + array would be allocated by R= EFRESH_ALL_BOOT_OPTIONS + and would be freed by caller = after consuming it. + + @param[out] UpdatedBootOptionsCount The number of elements in Upd= atedBootOptions. + + + @retval EFI_SUCCESS Platform refresh to input Boo= tOptions and + BootCount have been done. + + @retval EFI_OUT_OF_RESOURCES Memory allocation failed. + + @retval EFI_INVALID_PARAMETER Input is not correct. + + @retval EFI_UNSUPPORTED Platform specific overrides a= re not supported. +*/ +typedef +EFI_STATUS +(EFIAPI *REFRESH_ALL_BOOT_OPTIONS) ( + IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions, + IN CONST UINTN BootOptionsCount, + OUT EFI_BOOT_MANAGER_LOAD_OPTION **UpdatedBootOptions, + OUT UINTN *UpdatedBootOptionsCount + ); + +struct _EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL { + UINT64 Revision; + REFRESH_ALL_BOOT_OPTIONS RefreshAllBootOptions; }; + +extern EFI_GUID gEdkiiPlatformBootManagerProtocolGuid; + +#endif /* __PLATFORM_BOOT_MANAGER_PROTOCOL_H__ */ diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModule= Pkg/Library/UefiBootManagerLib/BmBoot.c index 760d764..62c5b2dc 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1,6 +1,7 @@ =20/** @file =20 Library functions which relates with booting. =20 +Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. =20Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.
= =20(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
=20SPDX-License-Identifier: BSD-2-Clause-Patent @@ -2258,12 +2259,15 @@ E= fiBootManagerRefreshAllBootOption ( =20 VOID =20 ) =20{ - EFI_STATUS Status; - EFI_BOOT_MANAGER_LOAD_OPTION *NvBootOptions; - UINTN NvBootOptionCount; - EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; - UINTN BootOptionCount; - UINTN Index; + EFI_STATUS Status; + EFI_BOOT_MANAGER_LOAD_OPTION *NvBootOptions; + UINTN NvBootOptionCount; + EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; + UINTN BootOptionCount; + EFI_BOOT_MANAGER_LOAD_OPTION *UpdatedBootOptions; + UINTN UpdatedBootOptionCount; + UINTN Index; + EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL *PlatformBootManager; =20 =20 // =20 // Optionally refresh the legacy boot option @@ -2273,7 +2277,6 @@ E= fiBootManagerRefreshAllBootOption ( =20 } =20 =20 BootOptions =3D BmEnumerateBootOptions (&BootOptionCount); - NvBootOptions =3D EfiBootManagerGetLoadOptions (&NvBootOptionCount, Lo= adOptionTypeBoot); =20 =20 // =20 // Mark the boot option as added by BDS by setting OptionalData to a= =20special GUID @@ -2284,6 +2287,30 @@ EfiBootManagerRefreshAllBootOption= =20( =20 } =20 =20 // + // Locate Platform Boot Options Protocol // Status =3D=20 + gBS->LocateProtocol (&gEdkiiPlatformBootManagerProtocolGuid, + NULL, + (VOID **)&PlatformBootManager); if=20 + (!EFI_ERROR (Status)) { + // + // If found, call platform specific refresh to all auto enumerated a= nd NV + // boot options. + // + Status =3D PlatformBootManager->RefreshAllBootOptions ((CONST EFI_BO= OT_MANAGER_LOAD_OPTION *)BootOptions, + (CONST UINTN)Bo= otOptionCount, + &UpdatedBootOpt= ions, + &UpdatedBootOpt= ionCount); + if (!EFI_ERROR (Status)) { + EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount); + BootOptions =3D UpdatedBootOptions; + BootOptionCount =3D UpdatedBootOptionCount; + } + } + + NvBootOptions =3D EfiBootManagerGetLoadOptions (&NvBootOptionCount,=20 + LoadOptionTypeBoot); + + // =20 // Remove invalid EFI boot options from NV =20 // =20 for (Index =3D 0; Index < NvBootOptionCount; Index++) { diff --git a= /MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h b/MdeModulePkg/Libr= ary/UefiBootManagerLib/InternalBm.h index 027eb25..ac866ac 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h +++ b/MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h @@ -1,6 +1,7 @@ =20/** @file =20 BDS library definition, include the file and data structure =20 +Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. =20Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
= =20(C) Copyright 2015 Hewlett Packard Enterprise Development LP
=20SPDX-License-Identifier: BSD-2-Clause-Patent @@ -41,6 +42,7 @@ SPDX-Li= cense-Identifier: BSD-2-Clause-Patent #include = =20 #include #include +#include =20 =20#include #include di= ff --git a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf= =20b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf index ed6b467..cf59086 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf +++ b/MdeModulePkg/Library/UefiBootManagerLib/UefiBootManagerLib.inf @@ -5,6 +5,7 @@ =20# manipulation, hotkey registration, UEFI boot, connect/disconnect, c= onsole # manipulation, driver health checking and etc. =20# +# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. =20# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<= BR> # (C) Copyright 2016 Hewlett Packard Enterprise Development LP
= =20# SPDX-License-Identifier: BSD-2-Clause-Patent @@ -107,6 +108,7 @@ =20 gEfiFormBrowser2ProtocolGuid ## SOMETIMES_CONSUMES =20 gEfiRamDiskProtocolGuid ## SOMETIMES_CONSUMES =20 gEfiDeferredImageLoadProtocolGuid ## SOMETIMES_CONSUMES + gEdkiiPlatformBootManagerProtocolGuid ## SOMETIMES_CONSUMES =20 =20[Pcd] =20 gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange= =20 ## SOMETIMES_CONSUMES diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.de= c index 41b9e70..cc238e9 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -3,6 +3,7 @@ =20# It also provides the definitions(including PPIs/PROTOCOLs/GUIDs and = library classes) # and libraries instances, which are used for those mod= ules. =20# +# Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved. =20# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved. # Copyright (c) 2016, Linaro Ltd. All rights reserved.
# (C) Cop= yright 2016 - 2019 Hewlett Packard Enterprise Development LP
@@ -609,= 6 +610,9 @@ =20 ## Include/Protocol/PeCoffImageEmulator.h =20 gEdkiiPeCoffImageEmulatorProtocolGuid =3D { 0x96f46153, 0x97a7, 0x47= 93, { 0xac, 0xc1, 0xfa, 0x19, 0xbf, 0x78, 0xea, 0x97 } } =20 + ## Include/Protocol/PlatformBootManager.h + gEdkiiPlatformBootManagerProtocolGuid =3D { 0xaa17add4, 0x756c, 0x460d= ,=20 + { 0x94, 0xb8, 0x43, 0x88, 0xd7, 0xfb, 0x3e, 0x59 } } + =20# =20# [Error.gEfiMdeModulePkgTokenSpaceGuid] =20# 0x80000001 | Invalid value provided. -- 2.7.4 -------------------------------------------------------------------------= ---------- This email message is for the sole use of the intended recipient(s) and m= ay contain confidential information. Any unauthorized review, use, disclosure or di= stribution is prohibited. If you are not the intended recipient, please contact the= =20sender by reply email and destroy all copies of the original message. -------------------------------------------------------------------------= ----------