Messages in this thread | | | Subject | Re: [RFC v2 11/14] arm64: Move the ASID allocator code in a separate file | From | Julien Grall <> | Date | Mon, 15 Jul 2019 11:58:48 +0100 |
| |
On 04/07/2019 15:56, James Morse wrote: > Hi Julien,
Hi James,
Thank you for the review.
> > On 20/06/2019 14:06, Julien Grall wrote: >> We will want to re-use the ASID allocator in a separate context (e.g >> allocating VMID). So move the code in a new file. >> >> The function asid_check_context has been moved in the header as a static >> inline function because we want to avoid add a branch when checking if the >> ASID is still valid. > >> diff --git a/arch/arm64/mm/context.c b/arch/arm64/mm/context.c >> index 3df63a28856c..b745cf356fe1 100644 >> --- a/arch/arm64/mm/context.c >> +++ b/arch/arm64/mm/context.c >> @@ -23,46 +23,21 @@ > >> -#define ASID_FIRST_VERSION(info) NUM_ASIDS(info) > >> diff --git a/arch/arm64/lib/asid.c b/arch/arm64/lib/asid.c >> new file mode 100644 >> index 000000000000..7252e4fdd5e9 >> --- /dev/null >> +++ b/arch/arm64/lib/asid.c >> @@ -0,0 +1,185 @@ > >> +#define ASID_FIRST_VERSION(info) (1UL << ((info)->bits)) > > (oops!)
Good catch, I will fix it in the next version.
> > >> @@ -344,7 +115,7 @@ static int asids_init(void) >> if (!asid_allocator_init(&asid_info, bits, ASID_PER_CONTEXT, >> asid_flush_cpu_ctxt)) >> panic("Unable to initialize ASID allocator for %lu ASIDs\n", >> - 1UL << bits); >> + NUM_ASIDS(&asid_info)); > > Could this go in the patch that adds NUM_ASIDS()?
Actually this change is potentially wrong. This relies on asid_allocator_init() to set asid_info.bits even if the function fails.
So I think it would be best to keep 1UL << bits here.
Cheers,
-- Julien Grall
| |