From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web09.42259.1636359118665669497 for ; Mon, 08 Nov 2021 00:11:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=yLGNViz0; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: hao.a.wu@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10161"; a="255852992" X-IronPort-AV: E=Sophos;i="5.87,218,1631602800"; d="scan'208";a="255852992" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Nov 2021 00:11:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,218,1631602800"; d="scan'208";a="563476528" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga004.fm.intel.com with ESMTP; 08 Nov 2021 00:11:56 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 8 Nov 2021 00:11:56 -0800 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 8 Nov 2021 00:11:54 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 8 Nov 2021 00:11:54 -0800 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 8 Nov 2021 00:11:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bbEHGju8foB+hVpJIb+SyhDwgZmNlN5XmDKqfGAVLcpcnZgwTP9IO+WdiQJeKg0c7XhyQ+oayZwZMw+L8GlrIaKwr5gY6rvSHKHopbbJNIymMwWHZmqIa0thqafFTBRXvVfiXnJONlocYLOy8QxmEzJyg5Y8AYiXRvbprR7mRs2GxBGRJe7wBC3eDuDbGWxE3DqCFpzL6hpQbSBlS198I7tgz7VdQfvNU1plo1auOzNOphlCup7qvII9no/gmD2O5W1xQWEeLJoKmUhxvz7Z+Nw5fVqzSJP8TGedp4t1y80ekbdK0IYjtqNMV1FQHCIqb0Ws/Sxp+6Ow5MiIsbkTDw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tViytQLD9UfDL7QY1kPT6WnDwPsSTjnXIGOhxh7f7gA=; b=g4eF1673P7Ijcs+2JZwFjGk7fUGz6lPkp1N4TZsq8JR4lt+kXN2tsP1YNueIFNmf8/YAK2W1k1S9jb5jYUeSX3/a/H4pxi2j8rrDttAbooGU8SsevcSeq6rk28T+0WGUdtbdVebANiavA1DVTKE1XGceqmoXy8Ae9ppXlgR9E4Q9xjbdl0ZcrDXlCdYbL76x3UID44sNqVP7EWBXycBHxEb5o2lUqcOLZUl8N7qLrfO7Iz7d5z9kOVLHKgJHcPNr195+6sIoFVM6pw+V6cg8Z2YxdPFyxXZiip8ArlX2bIlJ6Os5Uz/qieTWOqwYPBy5BmxKaxeTEe6OsvOzHIoTOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tViytQLD9UfDL7QY1kPT6WnDwPsSTjnXIGOhxh7f7gA=; b=yLGNViz0b5vtMecaOPtEkBEk2V2gWsJFqvq29NYZM5OlGflsAyJpaQKYRTgjiWrU9wl8CXUOoQJYrd8EulQzqoD7J3D47SIOjNOMiyeZDiAV2/IVD8PskPoFGuxDUwL0zUmaE8XmyDOZZsSkqQ8rg5YY7NKEfK6gcJQjbgNmdCA= Received: from DM6PR11MB4025.namprd11.prod.outlook.com (2603:10b6:5:197::31) by DM5PR11MB0057.namprd11.prod.outlook.com (2603:10b6:4:6b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Mon, 8 Nov 2021 08:11:53 +0000 Received: from DM6PR11MB4025.namprd11.prod.outlook.com ([fe80::14c5:551c:a483:9192]) by DM6PR11MB4025.namprd11.prod.outlook.com ([fe80::14c5:551c:a483:9192%3]) with mapi id 15.20.4669.016; Mon, 8 Nov 2021 08:11:53 +0000 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "Chiu, Ian" CC: "Chu, Maggie" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg\UfsBlockIoPei: UFS MMIO address size support both 32/64 bits Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg\UfsBlockIoPei: UFS MMIO address size support both 32/64 bits Thread-Index: AQHX0ioBEi+tRdSPbkiuGeLMZgxVsqv42/5w Date: Mon, 8 Nov 2021 08:11:53 +0000 Message-ID: References: <20211105094609.717-1-ian.chiu@intel.com> In-Reply-To: <20211105094609.717-1-ian.chiu@intel.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2f6b2f0d-6290-4fb2-8aae-08d9a28f6c8c x-ms-traffictypediagnostic: DM5PR11MB0057: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Abqr7V/6z/8+jCGqDpN93m9HE27b1Bq2oXvSGGFCe6y6LB/UJJ5RnQ54obOMTgkVDfVGTrckHu1XRa39kH7RKpLuef7o2q0/N/Gc9GYshotSkFoSHrJav6sIEt0AYoXPEq5QCXuhQ7JInfShllQ/1IzGHN8sxZ6vsvBgSDElTK+/e7TeFGpsqO4KpjK/eovEsTn0bXUUuXZxYV+Imjvs52I+vkoeytGH6Lgl75gZcsXK9Bo2p424FCG++8ENdLm2jVXpY5WF1ZtpVKmhZWu5ybqMzfTrYgfNgOVsCJajDqORvCmWs3UaI61YtXX7kCw/QDSwGBIJDeVNEGhkE8K6fNX4c613Oeo3Q7+jvwHVWjD0XxXgQQthtSabrl4mqJxfEyIQWYhQ+cu+Ugtyki51i9xDYFfpnu132RsL58s6c5Ue5U4lYnL9LahduhHu1L2vykssK/yKdsSQsLAxCZB4QS3kGN17dKxtKIhToPaa/RAftvhQ6eNQu2PeOP7ZHSvdUgVPQrS8fOXSwmvEYRgNvMwbE+SiRCihLork/rMhe6uevIc5Ne4WRf6Fq0fmaPdJwpzGzuJasnZnVBnrsL7I1yOzQwVQPTOvvBJONMWSVCfJY/3ure6Fk4hqsTJx/DjPQUKCrlvqDnLOUr/uF8JeQlOpuFZpHof8Ny2BWBEjZktvszWCHnZGjXOicA8f5xvgyKfP9ISq4wvpOPpA3eB5peJTbyEsQRzupJwOzPG5isHRljvVlzJcL7grYGE5d1v+BWUH4xN7BQk4ERpgU5oCh345cOwDoGd5zCBK1GGyr9wM2SqiRV1kPlovj5rXwdo7S4s+T1GYr3P8z6xobKlS0Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB4025.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(66556008)(4326008)(71200400001)(64756008)(55016002)(82960400001)(9686003)(7696005)(86362001)(26005)(76116006)(66476007)(52536014)(66946007)(66446008)(6636002)(5660300002)(33656002)(38070700005)(122000001)(54906003)(8676002)(2906002)(186003)(8936002)(110136005)(53546011)(83380400001)(966005)(6506007)(316002)(38100700002)(508600001)(107886003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?oPJ/jQSYXk9PZyyF/C2nxwyjGA5wKkt7bRE7qiMA4y/+FGQ2hyBDF5uUF5Pc?= =?us-ascii?Q?lCW6fUp7AIZyVOHK6fc58s8apYGWn6TsqPBmUPo4uNHeQDIbJaGqlW7b33QV?= =?us-ascii?Q?X7d2Ob55/3ykCJ3CBYxm31hV/a8st3OwyqYsYm9GEm3BeZ1fmOw/gKsIHhSK?= =?us-ascii?Q?tTZoTuDAiLhIGXv+244YSEjqcGWB9qWbRRZ6cdSRVPCgIxr2uWqotqVCko/6?= =?us-ascii?Q?40Niy3r9QlXURbVpEs1XsXq747CtTi3HB+ZxyLRyf7WBaE5xEBZ5u+j57HRg?= =?us-ascii?Q?8nSmC/TG6jX72VZQUAQtB1HV2Hk7z8Ym5kbHu7VL1ksrANBbXmFVT3DbNPKP?= =?us-ascii?Q?jnMDC33ITNhR5z8Gn2tBTxbvzYKLLJN7iJHHFStG9D06yUWEPrTKLQwN8g3U?= =?us-ascii?Q?l0aVGXgzIt23ghCLKN1poYtTtoHU5Iy21J9u1GelMaAbUrt2G0psclYSGPIc?= =?us-ascii?Q?/wgknIBh0sVE8ViNTterlT69V5JFSleYi4kXsbsHw5f/F4LM+4ImmXh6q4pT?= =?us-ascii?Q?H8RIs1K2mnV7vFJ2yhJ0N3AZURYVMFu2ZCdQUHZYpFxn4mTl3eOHy1kgUI1v?= =?us-ascii?Q?Oc/YjJ2uO2Fl98enuMAyKb5FVthOoqfXU/0GJoMA70gJ49NQvBl8YSuGHdsz?= =?us-ascii?Q?2Q0Tf35/RAkwiti/y7ThubW6YgsrjqRaugpzCFktMOL7jIZn9WUrk61OSonc?= =?us-ascii?Q?vklfwH3w9cNDwgS2EsjV9Vvfyqa7/6j9cPuqn4oK9Z9QZYHa9LnD2eZ04XFR?= =?us-ascii?Q?WzoL4zAjWrAPlEr3mH67R/oPzvlQ+Ydc3KVfMvGQ3BtRJGW0Imk4CUAChrKl?= =?us-ascii?Q?XU7nE1B8xaO4dy9BTAX5YgHYpoWDv7YZATcuU31K4WHoH2UMw6rnBukTfiGR?= =?us-ascii?Q?wZadRq/S+sb3uUionhP8gI/pGoAqDuqAwAq6ePVhF8woBym5SRNKb+KqSGcN?= =?us-ascii?Q?20BOYeyxsKIJGmDq64IdAuN3WtO2LFQDq1r2slXz8WdyfODUEFSOl/KSu6vi?= =?us-ascii?Q?+Qb518uoGTrpWbDdYzBxF0c1eiA6Q5zYsSR5A9ZMydX2MYNtQl9h8FGrHWFf?= =?us-ascii?Q?ecrNCKuJT6V0gVKXYgRsbbNWww9fnCIyfZWyoUnaIkMnuqR1y/9zL+K/sIOf?= =?us-ascii?Q?btg+uUZBkEBOGU6NNuZwWXfYWC7+aI1RZNyHS/8fSUisBtfNCXpwlA3Uz+/w?= =?us-ascii?Q?PU45QmNcyejQlCdSP7uNYgsYZIM+SyLaQKFOKISSeAOdOEB2S0GLEqtKijSv?= =?us-ascii?Q?74J1fH/XRaK3zTroj0r7VX3wpVmGhfTimN6pKbT6rFNHTIzjDVdmAL9PDPRw?= =?us-ascii?Q?zz3grP6x8FCptB8U0+dZhv+vA8wysFbeoXOT9K9LI3q+MeoehglYdqYHvprt?= =?us-ascii?Q?se2lFK/0nIfOMIHmjgpBMIYc1I/orEYlzyJZU0oH8qXRgmZXagbdw898DiE3?= =?us-ascii?Q?UX4euCJao3eAzaaq3aOE/FhRVIaYbJBpwInHD+kuqG7cEq/lPGb+NRP4unoV?= =?us-ascii?Q?1c7qxQMx07BNrzkDAbPBYH0eoJXOsaNg6V5TsMYR0W+LCiLynr1NLJP/+AOw?= =?us-ascii?Q?XGqkHcIQcCENrOPqdzkg7/WoI3ppK544E+s+KBSaqEWFq4SOIqSnYGpp20Ug?= =?us-ascii?Q?UXO9M/B38qlNsDQpkdmfhpM=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4025.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f6b2f0d-6290-4fb2-8aae-08d9a28f6c8c X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2021 08:11:53.3729 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: asxR05lVmAZzbgZHEWHx29iF4wmX1V34YeVTlrjcGTbUcCHOieXCk+QlBC8MuCMtGgAmlgkyvYmu9rZz7k6ZOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB0057 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of > ian.chiu@intel.com > Sent: Friday, November 5, 2021 5:46 PM > To: devel@edk2.groups.io > Cc: Chiu, Ian ; Chiu, Ian ; Chu, > Maggie ; Ni, Ray ; Wu, Hao A > > Subject: [edk2-devel] [PATCH v2] MdeModulePkg\UfsBlockIoPei: UFS MMIO > address size support both 32/64 bits >=20 > From: Ian Chiu >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3703 >=20 > MMIO base address size will overflow while finding two or more Host > controller in the system. Correct it and support 32 and 64 bits address > space. Reviewed-by: Hao A Wu Best Regards, Hao Wu >=20 > Signed-off-by: Ian Chiu > Cc: Maggie Chu > Cc: Ray Ni > Cc: Hao A Wu > --- > MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c | 47 > +++++++++++++++++++- > 1 file changed, 45 insertions(+), 2 deletions(-) >=20 > diff --git a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c > b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c > index 447a05b5b2..86f1529eec 100644 > --- a/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c > +++ b/MdeModulePkg/Bus/Pci/UfsPciHcPei/UfsPciHcPei.c > @@ -76,6 +76,8 @@ InitializeUfsHcPeim ( > UINT16 Device; >=20 > UINT16 Function; >=20 > UINT32 Size; >=20 > + UINT64 MmioSize; >=20 > + UINT32 BarAddr; >=20 > UINT8 SubClass; >=20 > UINT8 BaseClass; >=20 > UFS_HC_PEI_PRIVATE_DATA *Private; >=20 > @@ -106,6 +108,7 @@ InitializeUfsHcPeim ( > Private->PpiList =3D mPpiList; >=20 > Private->PpiList.Ppi =3D &Private->UfsHostControllerPpi; >=20 >=20 >=20 > + BarAddr =3D PcdGet32 (PcdUfsPciHostControllerMmioBase); >=20 > for (Bus =3D 0; Bus < 256; Bus++) { >=20 > for (Device =3D 0; Device < 32; Device++) { >=20 > for (Function =3D 0; Function < 8; Function++) { >=20 > @@ -119,17 +122,57 @@ InitializeUfsHcPeim ( > PciAnd16 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_COMMAND_OFFSET), (UINT16)~(EFI_PCI_COMMAND_BUS_MASTER | > EFI_PCI_COMMAND_MEMORY_SPACE)); >=20 > PciWrite32 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET), 0xFFFFFFFF); >=20 > Size =3D PciRead32 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET)); >=20 > + >=20 > + switch (Size & 0x07) { >=20 > + case 0x0: >=20 > + // >=20 > + // Memory space: anywhere in 32 bit address space >=20 > + // >=20 > + MmioSize =3D (~(Size & 0xFFFFFFF0)) + 1; >=20 > + break; >=20 > + case 0x4: >=20 > + // >=20 > + // Memory space: anywhere in 64 bit address space >=20 > + // >=20 > + MmioSize =3D Size & 0xFFFFFFF0; >=20 > + PciWrite32 (PCI_LIB_ADDRESS(Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET + 4), 0xFFFFFFFF); >=20 > + Size =3D PciRead32 (PCI_LIB_ADDRESS(Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET + 4)); >=20 > + >=20 > + // >=20 > + // Fix the length to support some specific 64 bit BAR >=20 > + // >=20 > + Size |=3D ((UINT32)(-1) << HighBitSet32 (Size)); >=20 > + >=20 > + // >=20 > + // Calculate the size of 64bit bar >=20 > + // >=20 > + MmioSize |=3D LShiftU64 ((UINT64) Size, 32); >=20 > + MmioSize =3D (~(MmioSize)) + 1; >=20 > + >=20 > + // >=20 > + // Clean the high 32bits of this 64bit BAR to 0 as we only= allow a 32bit > BAR. >=20 > + // >=20 > + PciWrite32 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET + 4), 0); >=20 > + break; >=20 > + default: >=20 > + // >=20 > + // Unknown BAR type >=20 > + // >=20 > + ASSERT (FALSE); >=20 > + continue; >=20 > + }; >=20 > // >=20 > // Assign resource to the Ufs Pci host controller's MMIO BAR. >=20 > // Enable the Ufs Pci host controller by setting BME and MSE b= its of > PCI_CMD register. >=20 > // >=20 > - PciWrite32 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET), (UINT32)(PcdGet32 > (PcdUfsPciHostControllerMmioBase) + Size * Private->TotalUfsHcs)); >=20 > + PciWrite32 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_BASE_ADDRESSREG_OFFSET), BarAddr); >=20 > PciOr16 (PCI_LIB_ADDRESS (Bus, Device, Function, > PCI_COMMAND_OFFSET), (EFI_PCI_COMMAND_BUS_MASTER | > EFI_PCI_COMMAND_MEMORY_SPACE)); >=20 > // >=20 > // Record the allocated Mmio base address. >=20 > // >=20 > - Private->UfsHcPciAddr[Private->TotalUfsHcs] =3D PcdGet32 > (PcdUfsPciHostControllerMmioBase) + Size * Private->TotalUfsHcs; >=20 > + Private->UfsHcPciAddr[Private->TotalUfsHcs] =3D BarAddr; >=20 > Private->TotalUfsHcs++; >=20 > + BarAddr +=3D (UINT32)MmioSize; >=20 > ASSERT (Private->TotalUfsHcs < MAX_UFS_HCS); >=20 > } >=20 > } >=20 > -- > 2.16.2.windows.1 >=20 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#83381): https://edk2.groups.io/g/devel/message/83381 > Mute This Topic: https://groups.io/mt/86836608/1768737 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [hao.a.wu@intel.com] > -=3D-=3D-=3D-=3D-=3D-=3D >=20