Re: FAILED: patch "[PATCH] iommu/amd/pgtbl_v2: Fix domain max address" failed to apply to 6.3-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,


On 6/6/2023 4:13 AM, Jerry Snitselaar wrote:
> On Mon, Jun 05, 2023 at 10:38:48PM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
>>
>> The patch below does not apply to the 6.3-stable tree.
>> If someone wants it applied there, or to any other stable or longterm
>> tree, then please email the backport, including the original git commit
>> id to <stable@xxxxxxxxxxxxxxx>.
>>
>> To reproduce the conflict and resubmit, you may use the following commands:
>>
>> git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.3.y
>> git checkout FETCH_HEAD
>> git cherry-pick -x 11c439a19466e7feaccdbce148a75372fddaf4e9
>> # <resolve conflicts, build, test, etc.>
>> git commit -s
>> git send-email --to '<stable@xxxxxxxxxxxxxxx>' --in-reply-to '2023060548-rake-strongman-fdbe@gregkh' --subject-prefix 'PATCH 6.3.y' HEAD^..
>>
>> Possible dependencies:
>>
>>
>>
>> thanks,
>>
>> greg k-h
>>
> 
> I'm not sure what happened, but it works for me:

You are right. This applies cleanly on 6.3 stable branch. But it won't build. We
have dependency on below commit:

f594496403fa ("iommu/amd: Add 5 level guest page table support")

-Vasant



> 
> # git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.3.y
> From https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux
>  * branch                      linux-6.3.y -> FETCH_HEAD
> Auto packing the repository in background for optimum performance.
> See "git help gc" for manual housekeeping.
> # git co FETCH_HEAD
> Note: switching to 'FETCH_HEAD'.
> 
> You are in 'detached HEAD' state. You can look around, make experimental
> changes and commit them, and you can discard any commits you make in this
> state without impacting any branches by switching back to a branch.
> 
> If you want to create a new branch to retain commits you create, you may
> do so (now or later) by using -c with the switch command. Example:
> 
>   git switch -c <new-branch-name>
> 
> Or undo this operation with:
> 
>   git switch -
> 
> Turn off this advice by setting config variable advice.detachedHead to false
> 
> HEAD is now at abfd9cf1c3d4 Linux 6.3.6
> # git cherry-pick -x 11c439a19466e7feaccdbce148a75372fddaf4e9
> Auto-merging drivers/iommu/amd/iommu.c
> [detached HEAD 20a7d8fdd693] iommu/amd/pgtbl_v2: Fix domain max address
>  Author: Vasant Hegde <vasant.hegde@xxxxxxx>
>  Date: Thu May 18 05:43:51 2023 +0000
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> It also worked with 6.1.y:
> 
> # git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
> From https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux
>  * branch                      linux-6.1.y -> FETCH_HEAD
> Auto packing the repository in background for optimum performance.
> See "git help gc" for manual housekeeping.
> # git co FETCH_HEAD                                                                      
> Note: switching to 'FETCH_HEAD'.
> 
> You are in 'detached HEAD' state. You can look around, make experimental
> changes and commit them, and you can discard any commits you make in this
> state without impacting any branches by switching back to a branch.
> 
> If you want to create a new branch to retain commits you create, you may
> do so (now or later) by using -c with the switch command. Example:
> 
>   git switch -c <new-branch-name>
> 
> Or undo this operation with:
> 
>   git switch -
> 
> Turn off this advice by setting config variable advice.detachedHead to false
> 
> HEAD is now at 76ba310227d2 Linux 6.1.32
> # git cherry-pick -x 11c439a19466e7feaccdbce148a75372fddaf4e9                            
> Auto-merging drivers/iommu/amd/iommu.c
> [detached HEAD 75eead6b6b81] iommu/amd/pgtbl_v2: Fix domain max address
>  Author: Vasant Hegde <vasant.hegde@xxxxxxx>
>  Date: Thu May 18 05:43:51 2023 +0000
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> 
> Regards,
> Jerry
> 
> 
>> ------------------ original commit in Linus's tree ------------------
>>
>> From 11c439a19466e7feaccdbce148a75372fddaf4e9 Mon Sep 17 00:00:00 2001
>> From: Vasant Hegde <vasant.hegde@xxxxxxx>
>> Date: Thu, 18 May 2023 05:43:51 +0000
>> Subject: [PATCH] iommu/amd/pgtbl_v2: Fix domain max address
>>
>> IOMMU v2 page table supports 4 level (47 bit) or 5 level (56 bit) virtual
>> address space. Current code assumes it can support 64bit IOVA address
>> space. If IOVA allocator allocates virtual address > 47/56 bit (depending
>> on page table level) then it will do wrong mapping and cause invalid
>> translation.
>>
>> Hence adjust aperture size to use max address supported by the page table.
>>
>> Reported-by: Jerry Snitselaar <jsnitsel@xxxxxxxxxx>
>> Fixes: aaac38f61487 ("iommu/amd: Initial support for AMD IOMMU v2 page table")
>> Cc: <Stable@xxxxxxxxxxxxxxx>  # v6.0+
>> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@xxxxxxx>
>> Signed-off-by: Vasant Hegde <vasant.hegde@xxxxxxx>
>> Reviewed-by: Jerry Snitselaar <jsnitsel@xxxxxxxxxx>
>> Link: https://lore.kernel.org/r/20230518054351.9626-1-vasant.hegde@xxxxxxx
>> Signed-off-by: Joerg Roedel <jroedel@xxxxxxx>
>>
>> diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c
>> index 0f3ac4b489d6..dc1ec6849775 100644
>> --- a/drivers/iommu/amd/iommu.c
>> +++ b/drivers/iommu/amd/iommu.c
>> @@ -2129,6 +2129,15 @@ static struct protection_domain *protection_domain_alloc(unsigned int type)
>>  	return NULL;
>>  }
>>  
>> +static inline u64 dma_max_address(void)
>> +{
>> +	if (amd_iommu_pgtable == AMD_IOMMU_V1)
>> +		return ~0ULL;
>> +
>> +	/* V2 with 4/5 level page table */
>> +	return ((1ULL << PM_LEVEL_SHIFT(amd_iommu_gpt_level)) - 1);
>> +}
>> +
>>  static struct iommu_domain *amd_iommu_domain_alloc(unsigned type)
>>  {
>>  	struct protection_domain *domain;
>> @@ -2145,7 +2154,7 @@ static struct iommu_domain *amd_iommu_domain_alloc(unsigned type)
>>  		return NULL;
>>  
>>  	domain->domain.geometry.aperture_start = 0;
>> -	domain->domain.geometry.aperture_end   = ~0ULL;
>> +	domain->domain.geometry.aperture_end   = dma_max_address();
>>  	domain->domain.geometry.force_aperture = true;
>>  
>>  	return &domain->domain;
>>
> 



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux