|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] arm/gic-v3: Fix driver probe fail on GICv4 hardware
On 05/27/2016 09:07 AM, Julien Grall wrote:
>
>
> On 27/05/16 14:48, Shanker Donthineni wrote:
>> Hi Julien,
>
> Hello Shanker,
>
>> On 05/27/2016 07:35 AM, Julien Grall wrote:
>>> On 27/05/16 00:59, Shanker Donthineni wrote:
>>>> The current driver probe fails on hardware which has GICv4 version,
>>>> even though it is fully compatible to GICv3. This patch fixes the
>>>> issue by registering the same probe function for GICv4 hardware.
>>>>
>>>> Signed-off-by: Shanker Donthineni <shankerd@xxxxxxxxxxxxxx>
>>>> ---
>>>> xen/arch/arm/gic-v3.c | 13 +++++++++++++
>>>> xen/include/asm-arm/gic.h | 1 +
>>>> 2 files changed, 14 insertions(+)
>>>>
>>>> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
>>>> index a095064..594cf6e 100644
>>>> --- a/xen/arch/arm/gic-v3.c
>>>> +++ b/xen/arch/arm/gic-v3.c
>>>> @@ -1604,10 +1604,23 @@ static int __init gicv3_acpi_preinit(const void
>>>> *data)
>>>> return 0;
>>>> }
>>>>
>>>> +static int __init gicv4_acpi_preinit(const void *data)
>>>> +{
>>>> + gicv3_info.hw_version = GIC_V4;
>>>
>>> It will crash Xen as soon as DOM0 is created (see the BUG() in
>>> arch_domain_create). Please test any patch before sending on the ML.
>>>
>>> Anyway, there is no support of GICv4 in Xen. Instead Xen will drive it
>>> using the GICv3 driver. So the hardware version should be GIC_V3 here.
>>>
>> Yes, I know I am going to fix in a separate to fix dom0 boot issue some
>> thing like below.
>
> This should have been in the same patch or before. There is no point to have
> a patch adding support for GICv4 with ACPI which will lead to an obscure
> crash (a BUG() rather than a panic with a nice message).
>
Sure, I'll do it in a single patch.
>> diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
>> index 1365b4a..56a47f5 100644
>> --- a/xen/arch/arm/domain.c
>> +++ b/xen/arch/arm/domain.c
>> @@ -571,6 +571,11 @@ int arch_domain_create(struct domain *d, unsigned int
>> domcr_flags,
>> d->arch.vgic.version = GIC_V3;
>> break;
>>
>> + case GIC_V4:
>> + config->gic_version = XEN_DOMCTL_CONFIG_GIC_V3;
>> + d->arch.vgic.version = GIC_V3;
>> + break;
>
> As mentioned in my previous mail, there is no support of GICv4 in Xen.
> Although the GICv3 driver is supporting this hardware.So we should not
> advertise GIC_V4 outside of the driver until Xen will get enough knowledge of
> GICv4 which will require sensible change in the generic code.
>
GICv4 hardware is fully compatible to GICv3 and has an additional feature vLPI.
We don't need any special driver or changes to current driver to support GICv4
for SPIs/LPIs in Xen just like Linux kernel.
Confused, you are expecting gic_hw_version() should return GIC version number
'3' on on GICv4 hardware, right?
switch ( gic_hw_version () )
{
case GIC_V2:
config->gic_version = XEN_DOMCTL_CONFIG_GIC_V2;
d->arch.vgic.version = GIC_V2;
break;
case GIC_V3:
config->gic_version = XEN_DOMCTL_CONFIG_GIC_V3;
d->arch.vgic.version = GIC_V3;
break;
> Regards,
>
--
Shanker Donthineni
Qualcomm Technologies, Inc. on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
Foundation Collaborative Project
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |