From: Vladimir Murzin <vladimir.murzin@arm.com>
To: Marc Zyngier <marc.zyngier@arm.com>, kvmarm@lists.cs.columbia.edu
Cc: andre.przywara@arm.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 6/8] ARM: Change MPIDR_AFFINITY_LEVEL to ignore Aff3
Date: Mon, 12 Sep 2016 10:39:58 +0100 [thread overview]
Message-ID: <57D677EE.4080706@arm.com> (raw)
In-Reply-To: <57D2EA7F.9030705@arm.com>
On 09/09/16 17:59, Marc Zyngier wrote:
> On 08/09/16 17:06, Vladimir Murzin wrote:
>> vgic-v3 driver queries CPU affinity level up to Aff3, which is valid
>> for arm64. However, for arm up to Aff2 levels are supported, so
>> querying for third level ends with upper bits of MPIDR are treated as
>> valid affinity level which is not true. Make sure we report zero for
>> any affinity level above two.
>>
>> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
>> ---
>> arch/arm/include/asm/cputype.h | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
>> index 1ee94c7..f08fac4 100644
>> --- a/arch/arm/include/asm/cputype.h
>> +++ b/arch/arm/include/asm/cputype.h
>> @@ -55,9 +55,10 @@
>>
>> #define MPIDR_LEVEL_BITS 8
>> #define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1)
>> +#define MPIDR_LEVEL_SHIFT(level) (MPIDR_LEVEL_BITS * level)
>>
>> #define MPIDR_AFFINITY_LEVEL(mpidr, level) \
>> - ((mpidr >> (MPIDR_LEVEL_BITS * level)) & MPIDR_LEVEL_MASK)
>> + (((mpidr & MPIDR_HWID_BITMASK) >> MPIDR_LEVEL_SHIFT(level)) & MPIDR_LEVEL_MASK)
>>
>> #define ARM_CPU_IMP_ARM 0x41
>> #define ARM_CPU_IMP_INTEL 0x69
>>
>
> There is something I don't quite get. Is this patch really necessary?
> Are there cases where we construct a MPIDR that can have Aff3 set on 32bit?
I've just checked and it seems that I've been keeping the change for
MPIDR_AFFINITY_LEVEL() since vgic-old era where it was used with
static u32 compress_mpidr(unsigned long mpidr)
{
u32 ret;
ret = MPIDR_AFFINITY_LEVEL(mpidr, 0);
ret |= MPIDR_AFFINITY_LEVEL(mpidr, 1) << 8;
ret |= MPIDR_AFFINITY_LEVEL(mpidr, 2) << 16;
ret |= MPIDR_AFFINITY_LEVEL(mpidr, 3) << 24;
return ret;
}
and now that code gone and nobody passes level 3 into this macro, so I
can drop this change.
However, I do need MPIDR_LEVEL_SHIFT() macro since it is used in vgic-v3.
Should I leave patch as is or you have something in mind?
Cheers
Vladimir
>
> Thanks,
>
> M.
>
WARNING: multiple messages have this Message-ID (diff)
From: vladimir.murzin@arm.com (Vladimir Murzin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 6/8] ARM: Change MPIDR_AFFINITY_LEVEL to ignore Aff3
Date: Mon, 12 Sep 2016 10:39:58 +0100 [thread overview]
Message-ID: <57D677EE.4080706@arm.com> (raw)
In-Reply-To: <57D2EA7F.9030705@arm.com>
On 09/09/16 17:59, Marc Zyngier wrote:
> On 08/09/16 17:06, Vladimir Murzin wrote:
>> vgic-v3 driver queries CPU affinity level up to Aff3, which is valid
>> for arm64. However, for arm up to Aff2 levels are supported, so
>> querying for third level ends with upper bits of MPIDR are treated as
>> valid affinity level which is not true. Make sure we report zero for
>> any affinity level above two.
>>
>> Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
>> ---
>> arch/arm/include/asm/cputype.h | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
>> index 1ee94c7..f08fac4 100644
>> --- a/arch/arm/include/asm/cputype.h
>> +++ b/arch/arm/include/asm/cputype.h
>> @@ -55,9 +55,10 @@
>>
>> #define MPIDR_LEVEL_BITS 8
>> #define MPIDR_LEVEL_MASK ((1 << MPIDR_LEVEL_BITS) - 1)
>> +#define MPIDR_LEVEL_SHIFT(level) (MPIDR_LEVEL_BITS * level)
>>
>> #define MPIDR_AFFINITY_LEVEL(mpidr, level) \
>> - ((mpidr >> (MPIDR_LEVEL_BITS * level)) & MPIDR_LEVEL_MASK)
>> + (((mpidr & MPIDR_HWID_BITMASK) >> MPIDR_LEVEL_SHIFT(level)) & MPIDR_LEVEL_MASK)
>>
>> #define ARM_CPU_IMP_ARM 0x41
>> #define ARM_CPU_IMP_INTEL 0x69
>>
>
> There is something I don't quite get. Is this patch really necessary?
> Are there cases where we construct a MPIDR that can have Aff3 set on 32bit?
I've just checked and it seems that I've been keeping the change for
MPIDR_AFFINITY_LEVEL() since vgic-old era where it was used with
static u32 compress_mpidr(unsigned long mpidr)
{
u32 ret;
ret = MPIDR_AFFINITY_LEVEL(mpidr, 0);
ret |= MPIDR_AFFINITY_LEVEL(mpidr, 1) << 8;
ret |= MPIDR_AFFINITY_LEVEL(mpidr, 2) << 16;
ret |= MPIDR_AFFINITY_LEVEL(mpidr, 3) << 24;
return ret;
}
and now that code gone and nobody passes level 3 into this macro, so I
can drop this change.
However, I do need MPIDR_LEVEL_SHIFT() macro since it is used in vgic-v3.
Should I leave patch as is or you have something in mind?
Cheers
Vladimir
>
> Thanks,
>
> M.
>
next prev parent reply other threads:[~2016-09-12 9:31 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-08 16:06 [PATCH v3 0/8] ARM: KVM: Support for vgic-v3 Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 1/8] arm64: KVM: Use static keys for selecting the GIC backend Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 9:19 ` Marc Zyngier
2016-09-09 9:19 ` Marc Zyngier
2016-09-09 9:33 ` Vladimir Murzin
2016-09-09 9:33 ` Vladimir Murzin
2016-09-09 13:45 ` Vladimir Murzin
2016-09-09 13:45 ` Vladimir Murzin
2016-09-09 14:17 ` Marc Zyngier
2016-09-09 14:17 ` Marc Zyngier
2016-09-09 15:14 ` Vladimir Murzin
2016-09-09 15:14 ` Vladimir Murzin
2016-09-09 15:25 ` Marc Zyngier
2016-09-09 15:25 ` Marc Zyngier
2016-09-09 16:18 ` Vladimir Murzin
2016-09-09 16:18 ` Vladimir Murzin
2016-09-09 17:06 ` Marc Zyngier
2016-09-09 17:06 ` Marc Zyngier
2016-09-08 16:06 ` [PATCH v3 2/8] arm64: KVM: Move GIC accessors to arch_gicv3.h Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 16:32 ` Marc Zyngier
2016-09-09 16:32 ` Marc Zyngier
2016-09-12 9:18 ` Vladimir Murzin
2016-09-12 9:18 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 3/8] arm64: KVM: Move vgic-v3 save/restore to virt/kvm/arm/hyp Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 16:33 ` Marc Zyngier
2016-09-09 16:33 ` Marc Zyngier
2016-09-12 9:18 ` Vladimir Murzin
2016-09-12 9:18 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 4/8] KVM: arm64: vgic-its: Introduce config option to guard ITS specific code Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 16:46 ` Marc Zyngier
2016-09-09 16:46 ` Marc Zyngier
2016-09-12 9:23 ` Vladimir Murzin
2016-09-12 9:23 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 5/8] KVM: arm: vgic: Support 64-bit data manipulation on 32-bit host systems Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 16:55 ` Marc Zyngier
2016-09-09 16:55 ` Marc Zyngier
2016-09-12 9:25 ` Vladimir Murzin
2016-09-12 9:25 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 6/8] ARM: Change MPIDR_AFFINITY_LEVEL to ignore Aff3 Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 16:59 ` Marc Zyngier
2016-09-09 16:59 ` Marc Zyngier
2016-09-12 9:39 ` Vladimir Murzin [this message]
2016-09-12 9:39 ` Vladimir Murzin
2016-09-12 9:48 ` Marc Zyngier
2016-09-12 9:48 ` Marc Zyngier
2016-09-12 9:51 ` Vladimir Murzin
2016-09-12 9:51 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 7/8] ARM: Move system register accessors to asm/cp15.h Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 17:05 ` Marc Zyngier
2016-09-09 17:05 ` Marc Zyngier
2016-09-12 9:42 ` Vladimir Murzin
2016-09-12 9:42 ` Vladimir Murzin
2016-09-12 9:44 ` Vladimir Murzin
2016-09-12 9:44 ` Vladimir Murzin
2016-09-08 16:06 ` [PATCH v3 8/8] ARM: KVM: Support vgic-v3 Vladimir Murzin
2016-09-08 16:06 ` Vladimir Murzin
2016-09-09 16:45 ` Marc Zyngier
2016-09-09 16:45 ` Marc Zyngier
2016-09-12 9:23 ` Vladimir Murzin
2016-09-12 9:23 ` Vladimir Murzin
2016-09-09 7:58 ` [PATCH v3 0/8] ARM: KVM: Support for vgic-v3 Vladimir Murzin
2016-09-09 7:58 ` Vladimir Murzin
2016-09-09 11:26 ` Christoffer Dall
2016-09-09 11:26 ` Christoffer Dall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57D677EE.4080706@arm.com \
--to=vladimir.murzin@arm.com \
--cc=andre.przywara@arm.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.