[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RESEND 3/9] hw/arm/smmu: Simplify the IOTLB key format
From: |
Peter Maydell |
Subject: |
Re: [PATCH RESEND 3/9] hw/arm/smmu: Simplify the IOTLB key format |
Date: |
Thu, 25 Jun 2020 16:03:17 +0100 |
On Thu, 11 Jun 2020 at 17:15, Eric Auger <eric.auger@redhat.com> wrote:
>
> Instead of using a Jenkins hash function to generate
> the key let's just use a 64 bit unsigned integer that
> contains the asid and the 40 upper bits of the iova.
> A maximum of 52-bit IOVA is supported. This change in the
> key format also prepares for the addition of new fields
> in subsequent patches (granule and level).
>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h
> index 1dceec5cb1..7b9d2f0eb7 100644
> --- a/include/hw/arm/smmu-common.h
> +++ b/include/hw/arm/smmu-common.h
> @@ -88,11 +88,6 @@ typedef struct SMMUPciBus {
> SMMUDevice *pbdev[]; /* Parent array is sparse, so dynamically alloc */
> } SMMUPciBus;
>
> -typedef struct SMMUIOTLBKey {
> - uint64_t iova;
> - uint16_t asid;
> -} SMMUIOTLBKey;
I think we should keep the SMMUIOTLBKey type to abstract out what
the key type is under the hood, so it would now be
typedef uint64_t SMMUIOTLBKey;
(and then the code that works with SMMUIOTLBKeys should never
directly look at it as a uint64_t. If you wanted you could
put the abstraction layer into place with the existing
SMMUIOTLBKey type and then change the type in a second patch.)
> +uint64_t smmu_get_iotlb_key(uint16_t asid, uint64_t iova);
This should return SMMUIOTLBKey rather than uint64_t,
or pass in the pointer, like:
smmu_get_iotlb_key(SMMUIOTLBKey *key, uint16_t asid, uint64_t iova);
thanks
-- PMM
- [PATCH RESEND 0/9] SMMUv3.2 Range-based TLB Invalidation Support, Eric Auger, 2020/06/11
- [PATCH RESEND 1/9] hw/arm/smmu-common: Factorize some code in smmu_ptw_64(), Eric Auger, 2020/06/11
- [PATCH RESEND 2/9] hw/arm/smmu-common: Add IOTLB helpers, Eric Auger, 2020/06/11
- [PATCH RESEND 3/9] hw/arm/smmu: Simplify the IOTLB key format, Eric Auger, 2020/06/11
- Re: [PATCH RESEND 3/9] hw/arm/smmu: Simplify the IOTLB key format,
Peter Maydell <=
- [PATCH RESEND 4/9] hw/arm/smmu: Introduce SMMUTLBEntry for PTW and IOTLB value, Eric Auger, 2020/06/11
- [PATCH RESEND 5/9] hw/arm/smmuv3: Store the starting level in SMMUTransTableInfo, Eric Auger, 2020/06/11
- [PATCH RESEND 6/9] hw/arm/smmu-common: Manage IOTLB block entries, Eric Auger, 2020/06/11