From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from nat-hk.nvidia.com (nat-hk.nvidia.com [203.18.50.4]) by mx.groups.io with SMTP id smtpd.web10.335.1571159978952916365 for ; Tue, 15 Oct 2019 10:19:40 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=n1 header.b=n+aO5PfB; spf=pass (domain: nvidia.com, ip: 203.18.50.4, mailfrom: ashishsingha@nvidia.com) Received: from hkpgpgate102.nvidia.com (Not Verified[10.18.92.9]) by nat-hk.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Wed, 16 Oct 2019 01:19:37 +0800 Received: from HKMAIL103.nvidia.com ([10.18.16.12]) by hkpgpgate102.nvidia.com (PGP Universal service); Tue, 15 Oct 2019 10:19:36 -0700 X-PGP-Universal: processed; by hkpgpgate102.nvidia.com on Tue, 15 Oct 2019 10:19:36 -0700 Received: from HKMAIL102.nvidia.com (10.18.16.11) by HKMAIL103.nvidia.com (10.18.16.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 15 Oct 2019 17:19:35 +0000 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (104.47.41.57) by HKMAIL102.nvidia.com (10.18.16.11) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Tue, 15 Oct 2019 17:19:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VEsd3OpQiYbla1WWw0NmSddUPWJBjwU/wp85Q9T7JHiPEZWTnREOwhv6pTc4R8J6qzMuqiiZft+ujRUycxT6spQoz8npQPfsaSgDcVnzr0lLg+SUxEhE6Bz92GHJHeuFi+rNPyCS2Lhl1YE4lkEknFCW3NtX+RZ93+RDSe7Li1YyBR8bNR41mBS3g5DV4PK1Rekirk8Hl/fjLS37vjK++UftfLce9SGCXi2Ixq+bgX7EH3ZaR1DbLbkkBnHM3N7uS4tm2Tdg0o+VOgw6k3GbnCsTC48UueMcY0Zct+bp+7gKIMaeBleHsODOUUFRjjZFiqcFDT3HcNPxXeMfqZ/ucQ== 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=cF7BsT9h8NZVLFOMPSYsrziKkWyp3P0nQ0xWb9WgB1A=; b=WAloUY6KflNBvRk+vIfCoC9AQB21SbgV7LrIafGzsGa36sBhJBSagkYcLt2qkxfHZKafNZf4pKAMnAkN2rCfAm2CoLa2bJYp0cdlMcyGb9ozS7pgOLr9pnZUcBXfddpwTicMhYwfxHvjfX/ueFH+MZeeEOWTMiUAPMBxNCZsxuQMALOIvhPqlsljPeCsLxFzFgsxLAAaQLlaXkpJPYjC4xK9ArOKgEoOX0Zq7kX07fibAqYS6rTwZg282XhDsRgBbICNrqmPa/y8vSOFTr4zQsGL+BhQLBhk49OQoOvdwjzRwYFNm5LITp4wBZH3ohZtLRYVrG6seWCfw5q1XKBLvg== 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 DM6PR12MB3916.namprd12.prod.outlook.com (10.255.174.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Tue, 15 Oct 2019 17:19:32 +0000 Received: from DM6PR12MB3324.namprd12.prod.outlook.com ([fe80::1807:a182:87ae:55de]) by DM6PR12MB3324.namprd12.prod.outlook.com ([fe80::1807:a182:87ae:55de%5]) with mapi id 15.20.2347.023; Tue, 15 Oct 2019 17:19:32 +0000 From: "Ashish Singhal" To: "Wu, Hao A" , "devel@edk2.groups.io" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation Thread-Index: AQHVfsNV/8sSJTw/YUqQWeYilI1PdqdTF8OAgAAGroCAAAOUAIABBmEGgACZ/oCAAAcD4IAAKYKAgADM+i2ABLml0IAAdpeAgAELXPg= Date: Tue, 15 Oct 2019 17:19:32 +0000 Message-ID: References: <9ce268553db91fbe7fb13e2205d0e1611e1d0212.1570640221.git.ashishsingha@nvidia.com> , ,, , In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=ashishsingha@nvidia.com; x-originating-ip: [216.228.112.22] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 61ab926a-d7ac-4e55-9ca5-08d75193d83b x-ms-traffictypediagnostic: DM6PR12MB3916: x-ms-exchange-purlcount: 5 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-forefront-prvs: 01917B1794 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(39860400002)(396003)(346002)(366004)(136003)(189003)(51874003)(51914003)(13464003)(199004)(64756008)(66946007)(6436002)(11346002)(6116002)(3846002)(5660300002)(14444005)(76236002)(99286004)(19627235002)(256004)(102836004)(53546011)(6506007)(76176011)(7696005)(446003)(52536014)(236005)(6306002)(9686003)(55016002)(6246003)(229853002)(54896002)(26005)(2906002)(86362001)(486006)(476003)(76116006)(105004)(186003)(66446008)(66556008)(66476007)(110136005)(14454004)(7736002)(478600001)(316002)(2501003)(74316002)(19627405001)(25786009)(71200400001)(71190400001)(8936002)(81166006)(8676002)(81156014)(561944003)(33656002)(606006)(66066001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3916;H:DM6PR12MB3324.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A: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: Jdj1JjJRSrp1e6YolCskhyLBZJE9Qp7Ni8Y7TVXFk659WWVwav47iJEDAqCBAyzTDh7+zA303Yuo6bERp2PgGgW3RJ/9GZ6fJV8NP6NnonHkB+bATJm5xXhPfmRDbKGBDLNuKHcRzwNbI44zhQ1z6Veuc6vWyziTXXEmaZhyhTd2ZukUXnJ6vdQirmJHaTTHIBH6ZVbPE6yyPtLazT7qvFCm6v3+bLs7srLnRaI48WjmX3RJDd47j6n/8mwBGboatVG3cjMcJe8HkvkwExRVOa8QDsK/+qznwx6rhlCBEpDoioLYSDRc1LIaAWqmfMpDVhMfeUVsf1NQHe2xyYt178F9/jAfo/0KocxVvm4UokeTckmpOyflbRK4e2pXFQ/gSi6BUd5imLaWXj933WngHam1/q0pIhtI4U7sZ2z1kXfovM8rE+gcrlKyDW330hU0aVFfEod4k7DLSpUf9VD8qg== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 61ab926a-d7ac-4e55-9ca5-08d75193d83b X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Oct 2019 17:19:32.4683 (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: G0cCYmHqX6iN+ToDMhb8wrGxDolyNoon8Hufrgu4Yz0GAB7dIXrNq30MLe4j8mHtTkZnzZoOiChvJ9e+ry78ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3916 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=1571159978; bh=cF7BsT9h8NZVLFOMPSYsrziKkWyp3P0nQ0xWb9WgB1A=; 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: authentication-results:x-originating-ip:x-ms-publictraffictype: x-ms-office365-filtering-correlation-id:x-ms-traffictypediagnostic: x-ms-exchange-purlcount: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; b=n+aO5PfBiVhwj0CxrO/yZl9XrCv7W0uHWqLa5AHXkDN8HYv3CgtKE5jOZEBtKPGqy PAHFxMQ8JAc/8UdVhLbNhMhmq4GUE6mKMXQ9xilNLfqXsvPsJVwa3ZrFH4HQ3yAw9V NRURJhkCOk6jhDEtQsNkFoKfVWap/rOVGBXp7kYwOvVmC7esoCcMjmff+wM7PGh0ek vDBl7j0PSdim3b4Qn58dL4P3oeqW//W0UVANP37Y6nvmPc4uIE4j4ws3p+8Q39JHG0 wj7U3J7HLrvEH6d5MEhNHj3KBIku0yNeOf/+zm/ohT6Jf4QLvnj74HqiiN5MDzmBio ajGTtQVUFoJ3g== Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_DM6PR12MB33241AB5F80107EBF57D7D23BA930DM6PR12MB3324namp_" --_000_DM6PR12MB33241AB5F80107EBF57D7D23BA930DM6PR12MB3324namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello Hao, Thanks for the clarification. I have made the changes and submitted a new = patch. Also, in case the IOMMU PPI does not exist, we are now allocating th= e memory and adjust return pointers to be aligned. There is no freeing of u= naligned pages here as PEI framework does not provide a mechanism for that. Thanks Ashish ________________________________ From: Wu, Hao A Sent: Monday, October 14, 2019 7:21 PM To: Ashish Singhal ; devel@edk2.groups.io ; Ni, Ray Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Hello, Sorry for the delayed response. For the PEI changes, I found that when using the function IoMmuFreeBuffer(= ) to free the first/last unaligned page(s), the below operations related to 'Ma= pping': >| Status =3D mIoMmu->SetAttribute (mIoMmu, Mapping, 0); >| Status =3D mIoMmu->Unmap (mIoMmu, Mapping); will be done multiple times. I think they should only be done once and sho= uld happen when freeing the aligned buffer. Hence, I would suggest to add a new helper function called IoMmuAllocateAlignedBuffer(), which will be similar to the existing IoMmuAllocateBuffer() but with a couple of additional things to handle: 1. If the IOMMU PPI exists: a. Allocate the buffer according to the real number of pages needed; b. (New) Free the first & last unaligned pages; c. Map the allocated aligned buffer; d. Set the IOMMU attribute for the buffer. 2. If the IOMMU PPI does not exist: a. Allocate the buffer according to the real number of pages needed; b. (New) Free the first & last unaligned pages. Also, could you help to separate the change for XhciPei into a separate pa= tch? It will be helpful to locate the exact commit made to XhciPei and XhciDxe = in the future. Best Regards, Hao Wu From: Ashish Singhal [mailto:ashishsingha@nvidia.com] Sent: Tuesday, October 15, 2019 2:17 AM To: Wu, Hao A; devel@edk2.groups.io; Ni, Ray Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Hello Hao, Were you able to validate the PEI change I sent last week? Thanks Ashish ________________________________ From: Ashish Singhal Sent: Friday, October 11, 2019 12:07 PM To: Wu, Hao A ; devel@edk2.groups.io ; Ni, Ray Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Patch set 2 has been submitted for review. Thanks Ashish ________________________________ From: Wu, Hao A Sent: Thursday, October 10, 2019 11:53 PM To: devel@edk2.groups.io ; Ashish Singhal ; Ni, Ray Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Hello Ashish, I think the IOMMU feature is added for the protection of FW integrity agai= nst HW devices, which is the motivation to use IOMMU PPI for memory allocation= . The fix is easy for the DXE part since the IOMMU part has been integrated = to the implementation of the PciIo protocol. As for the XhciPei case, my thought is that a new helper function (maybe c= alled 'IoMmuAllocateAlignedBuffer') can be added in DmaMem.c file. The main diff= erece between IoMmuAllocateAlignedBuffer() and existing IoMmuAllocateBuffer() wi= ll be: 1. If IOMMU PPI exists, mIoMmu->AllocateBuffer() should be called with big= ger number of pages for alignment and mIoMmu->FreeBuffer() can be called right= after to free the unused pages. 2. If IOMMU PPI does not exist, this case will fall back to a similar fix = for the DXE case. Ideally, IoMmuFreeBuffer() can be reused to free the aligned buffer. Please help to raise if you observe any open for the above proposal, thank= s. Best Regards, Hao Wu From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Ashi= sh Singhal Sent: Friday, October 11, 2019 11:30 AM To: Wu, Hao A; devel@edk2.groups.io; Ni, Ray Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Hello Hao, What is your motivation towards using IoMMUPei for memory allocation now i= nstead of Pei Services? The fix would be simple if we just change the numbe= r of pages needed to accommodate for the alignment. The call to free the pa= ges would not do anything. If we use IoMMUPei, we may need to change function definition for allocate= to return how many pages were allocated for each call so that freeing can = be done correctly as well. This may need more refactoring of the code that = initially thought of. Thanks Ashish From: Wu, Hao A Sent: Thursday, October 10, 2019 9:00 PM To: devel@edk2.groups.io; Ashish Singhal ; Ni, Ra= y Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Thanks Ashish, Please help to send out the fix for XhciPei in a separate patch as well. I can help to see if verification can be done on my side. Best Regards, Hao Wu From: devel@edk2.groups.io [mailto:devel@edk2= .groups.io] On Behalf Of Ashish Singhal Sent: Friday, October 11, 2019 1:51 AM To: Wu, Hao A; devel@edk2.groups.io; Ni, Ray Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page A= llocation Hello Hao, I agree that for completeness we should fix the issue in both DXE as well = as PEI but on my target, we do not have any PEI phase for me to be able to = verify any change that I will be making. If you still want, I can still mak= e the change so that someone else can verify or we can have someone else fi= x PEI and push my change meanwhile to fix the issue in DXE. Thanks Ashish ________________________________ From: Wu, Hao A > Sent: Wednesday, October 9, 2019 8:09 PM To: Ashish Singhal >; devel@edk2.groups.io >; Ni, Ray > Subject: RE: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation > -----Original Message----- > From: Ashish Singhal [mailto:ashishsingha@nvidia.com] > Sent: Thursday, October 10, 2019 9:58 AM > To: Wu, Hao A; devel@edk2.groups.io; Ni, Ra= y > Subject: RE: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation > > Hello Hao, > > I can see that the PEI also has the same issue and take a look at that a= s well > but I have no way to verify that as we are not using it. For the change = I have > made in DXE, I have verified it with an alignment of 4K and 64K. Is it possible for you to verify the PEI case with a test PEI module that performs read operation to a USB storage device? I think this will trigger the affecting codes. In my opinion, it would be better for the fix to be complete. Best Regards, Hao Wu > > Thanks > Ashish > > -----Original Message----- > From: Wu, Hao A > > Sent: Wednesday, October 9, 2019 7:33 PM > To: Ashish Singhal >; devel@edk2.groups.io; Ni, > Ray > > Subject: RE: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation > > > -----Original Message----- > > From: Ashish Singhal [mailto:ashishsingha@nvidia.com] > > Sent: Thursday, October 10, 2019 1:02 AM > > To: devel@edk2.groups.io; Wu, Hao A; Ni, = Ray > > Cc: Ashish Singhal > > Subject: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation > > > > While allocating pages aligned at an alignment higher than 4K, > > allocate memory taking into consideration the padding required for > > that alignment. The calls to free pages takes care of this already. > > > > Signed-off-by: Ashish Singhal > > > --- > > MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c > > b/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c > > index fd79988..aa69c47 100644 > > --- a/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c > > +++ b/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c > > @@ -656,7 +656,7 @@ UsbHcAllocateAlignedPages ( > > PciIo, > > AllocateAnyPages, > > EfiBootServicesData, > > - Pages, > > + RealPages, > > &Memory, > > 0 > > ); > > > Hello, > > The change looks good to me. > > Just a couple of things to confirm: > > 1. I think there is a similar case within the XhciPei driver Could you h= elp to > resolve it as well? > > I think for the PEI counterpart you may need to update both > UsbHcAllocateAlignedPages() and UsbHcFreeAlignedPages(), since the > IOMMU helper functions like IoMmuAllocateBuffer() and IoMmuFreeBuffer() > might not be suitable now. Instead, I think services in the IoMmu PPI ca= n be > used. > > 2. Could you help to provide the information on what test has been done = for > the proposed patch? > > Thanks in advance. > > Best Regards, > Hao Wu > > > > -- > > 2.7.4 > > ------------------------------------------------------------------------= ----------- > This email message is for the sole use of the intended recipient(s) and = may > contain > confidential information. Any unauthorized review, use, disclosure or > distribution > is prohibited. If you are not the intended recipient, please contact th= e > sender by > reply email and destroy all copies of the original message. > ------------------------------------------------------------------------= ----------- --_000_DM6PR12MB33241AB5F80107EBF57D7D23BA930DM6PR12MB3324namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Hello Hao,

Thanks for the clarification. I have made the changes and submitted a new = patch. Also, in case the IOMMU PPI does not exist, we are now allocating th= e memory and adjust return pointers to be aligned. There is no freeing of u= naligned pages here as PEI framework does not provide a mechanism for that.

Thanks
Ashish

From: Wu, Hao A <hao.a.= wu@intel.com>
Sent: Monday, October 14, 2019 7:21 PM
To: Ashish Singhal <ashishsingha@nvidia.com>; devel@edk2.grou= ps.io <devel@edk2.groups.io>; Ni, Ray <ray.ni@intel.com>
Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned= Page Allocation
 

Hello,

 

Sorry for the delaye= d response.

 

For the PEI changes,= I found that when using the function IoMmuFreeBuffer() to

free the first/last = unaligned page(s), the below operations related to 'Mapping':

 

>|  Status =3D mIoMmu->SetAttribute (mIoMmu,= Mapping, 0);

>|  Status =3D mIoMmu->Unmap (mIoMmu, Mappin= g);

 

will be done multipl= e times. I think they should only be done once and should

happen when freeing = the aligned buffer.

 

Hence, I would sugge= st to add a new helper function called

IoMmuAllocateAlignedBuffer(= ), which will be similar to the existing

IoMmuAllocateBuffer() but w= ith a couple of additional things to handle:

 

1. If the IOMMU PPI = exists:

a. Allocate the buff= er according to the real number of pages needed;

b. (New) Free the fi= rst & last unaligned pages;

c. Map the allocated= aligned buffer;

d. Set the IOMMU att= ribute for the buffer.

 

2. If the IOMMU PPI = does not exist:

a. Allocate the buff= er according to the real number of pages needed;

b. (New) Free the fi= rst & last unaligned pages.

 

 

Also, could you help= to separate the change for XhciPei into a separate patch?

It will be helpful t= o locate the exact commit made to XhciPei and XhciD= xe in

the future.

 

Best Regards,=

Hao Wu

 

From: Ash= ish Singhal [mailto:ashishsingha@nvidia.com]
Sent: Tuesday, October 15, 2019 2:17 AM
To: Wu, Hao A; devel@edk2.groups.io; Ni, Ray
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation

 

Hello Hao,

 

Were you able to validate the PEI change= I sent last week?

 

Thanks

Ashish


From: Ashish Singhal <ashishsingha@nvidia.com>
Sent: Friday, October 11, 2019 12:07 PM
To: Wu, Hao A <hao.a.wu@intel.com>; devel@edk2.groups.io <= devel@edk2.groups.io>; Ni, Ray <ray.ni@intel.com>
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation

 

Patch set 2 has been submitted for revie= w.

 

Thanks

Ashish


From: Wu, Hao A <hao.a.wu@intel.com>
Sent: Thursday, October 10, 2019 11:53 PM
To: devel@edk2.groups.io <devel@edk2.groups.io>; Ashish Singh= al <ashishsingha@nvidia.com>; Ni, Ray <ray.ni@intel.com>
Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation

 

Hello Ashish,

 

I think the IOMMU = feature is added for the protection of FW integrity against

HW devices, which = is the motivation to use IOMMU PPI for memory allocation.

 

The fix is easy fo= r the DXE part since the IOMMU part has been integrated to the

implementation of = the PciIo pr= otocol.

 

As for the XhciPei = case, my thought is that a new helper function (maybe called

'IoMmuAllocateAlignedBuffer= ') can be added in DmaMem.c= file. The main differece

between IoMmuAllocateAlignedBu= ffer() and existing IoMmuAllocateBuffer() will be:

 

1. If IOMMU PPI ex= ists, mIoMmu-&= gt;AllocateBuffer() should be called with bigger

number of pages fo= r alignment and mIoMmu-&= gt;FreeBuffer() can be called right after

to free the unused= pages.

 

2. If IOMMU PPI do= es not exist, this case will fall back to a similar fix for

the DXE case.

 

Ideally, IoMmuFreeBuffer= () can be reused to free the aligned buffer.

Please help to rai= se if you observe any open for the above proposal, thanks.

 

Best Regards,

Hao Wu

 

From: d= evel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Ashish Singhal
Sent: Friday, October 11, 2019 11:30 AM
To: Wu, Hao A; devel@edk2.groups.io; Ni, Ray
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page All= ocation

 

Hello Hao,

 

What is your motivation towards u= sing IoMMUPei= for memory allocation now instead of Pei Services? The fix would be simple= if we just change the number of pages needed to accommodate for the alignm= ent. The call to free the pages would not do anything.

 

If we use IoMMUPei= , we may need to change function definition for allocate to return how many= pages were allocated for each call so that freeing can be done correctly a= s well. This may need more refactoring of the code that initially thought of.

 

Thanks

Ashish

 

From:= Wu, Hao A <hao.a.wu@intel.com>
Sent: Thursday, October 10, 2019 9:00 PM
To: devel@edk2.groups.io; Ashish Singhal <ashishsingha@nvidia.co= m>; Ni, Ray <ray.ni@intel.com>
Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page All= ocation

 

Thanks Ashish,

 

Please help to sen= d out the fix for XhciPei = in a separate patch as well.

I can help to see = if verification can be done on my side.

 

Best Regards,

Hao Wu

 

From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Ashish Singhal
Sent: Friday, October 11, 2019 1:51 AM
To: Wu, Hao A; devel@edk2.g= roups.io; Ni, Ray
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page All= ocation

 

Hello Hao,

 

I agree that for completeness we shoul= d fix the issue in both DXE as well as PEI but on my target, we do not have= any PEI phase for me to be able to verify any change that I will be making. If you still want, I can still make the change so that = someone else can verify or we can have someone else fix PEI and push my cha= nge meanwhile to fix the issue in DXE.

 

Thanks

Ashish


From:<= span style=3D"font-size:11.0pt; font-family:"Calibri","sans-= serif"; color:black"> Wu, Hao A <hao.a.wu@intel.com>
Sent: Wednesday, October 9, 2019 8:09 PM
To: Ashish Singhal <a= shishsingha@nvidia.com>; devel@edk2.groups.io <devel@edk2.groups.io>; Ni, Ray &l= t;ray.ni@intel.com>
Subject: RE: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation

 

> -----Orig= inal Message-----
> From: Ashish Singhal [mail= to:ashishsingha@nvidia.com]
> Sent: Thursday, October 10, 2019 9:58 AM
> To: Wu, Hao A; devel@edk2.gro= ups.io; Ni, Ray
> Subject: RE: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation
>
> Hello Hao,
>
> I can see that the PEI also has the same issue and take a look at tha= t as well
> but I have no way to verify that as we are not using it. For the chan= ge I have
> made in DXE, I have verified it with an alignment of 4K and 64K.


Is it possible for you to verify the PEI case with a test PEI module that<= br> performs read operation to a USB storage device? I think this will trigger=
the affecting codes.

In my opinion, it would be better for the fix to be complete.

Best Regards,
Hao Wu


>
> Thanks
> Ashish
>
> -----Original Message-----
> From: Wu, Hao A <hao.a.wu@in= tel.com>
> Sent: Wednesday, October 9, 2019 7:33 PM
> To: Ashish Singhal <ash= ishsingha@nvidia.com>; devel@edk2.groups.io; Ni,
> Ray <ray.ni@intel.com><= br> > Subject: RE: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation
>
> > -----Original Message-----
> > From: Ashish Singhal [mailto:ashishsingha@nvidia.com]
> > Sent: Thursday, October 10, 2019 1:02 AM
> > To: devel@edk2.groups.io= ; Wu, Hao A; Ni, Ray
> > Cc: Ashish Singhal
> > Subject: [PATCH] MdeModulePkg/XhciDxe: Fix Aligned Page Allocation
> >
> > While allocating pages aligned at an alignment higher than 4K, > > allocate memory taking into consideration the padding required f= or
> > that alignment. The calls to free pages takes care of this alrea= dy.
> >
> > Signed-off-by: Ashish Singhal <ashishsingha@nvidia.com>
> > ---
> >  MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c
> > b/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c
> > index fd79988..aa69c47 100644
> > --- a/MdeModulePkg/Bus/Pci/XhciDxe/UsbHcMem.c
> > +++ b/MdeModulePkg/Bus/Pci
/XhciDxe/UsbHcMem.c
> > @@ -656,7 +656,7 @@ UsbHcAllocateAlignedPages (
> >           = ;             <= span class=3D"x_SpellE">PciIo
,
> >           = ;             <= span class=3D"x_SpellE">AllocateAnyPages<= /span>,
> >           = ;             <= span class=3D"x_SpellE">EfiBootServicesData,
> > -          &nb= sp;           Pages,
> > +          = ;            RealPages,
> >           = ;             &= amp;Memory,
> >           = ;             0=
> >           = ;             )= ;
>
>
> Hello,
>
> The change looks good to me.
>
> Just a couple of things to confirm:
>
> 1. I think there is a similar case within the XhciPei driver Could you help to=
> resolve it as well?
>
> I think for the PEI counterpart you may need to update both
> UsbHcAllocateAlig= nedPages() and UsbHcFreeAlignedPages<= /span>(), since the
> IOMMU helper functions like IoMmuAllocateBuffer() and IoMmuFreeBuffer= ()
> might not be suitable now. Instead, I think services in the IoMmu PPI can be
> used.
>
> 2. Could you help to provide the information on what test has been do= ne for
> the proposed patch?
>
> Thanks in advance.
>
> Best Regards,
> Hao Wu
>
>
> > --
> > 2.7.4
>
> ---------------------------------------------------------------------= --------------
> This email message is for the sole use of the intended recipient(s) a= nd may
> contain
> confidential information.  Any unauthorized review, use, disclos= ure or
> distribution
> is prohibited.  If you are not the intended recipient, please co= ntact the
> sender by
> reply email and destroy all copies of the original message.
> ---------------------------------------------------------------------= --------------

--_000_DM6PR12MB33241AB5F80107EBF57D7D23BA930DM6PR12MB3324namp_--