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

Re: [PATCH v2] xen/arm: fix the build error for GIC on ARM64 QEMU Platform



Dongjiu Geng <gengdongjiu1@xxxxxxxxx> 于2021年12月26日周日 18:06写道:
>
> Julien Grall <julien@xxxxxxx> 于2021年12月24日周五 22:21写道:
> >
> > Hi,
> >
> > I am not sure why you dropped the others. I have added them back.
>
> sorry, it is my mistake
>
> >
> > On 24/12/2021 14:36, Dongjiu Geng wrote:
> > > Julien Grall <julien@xxxxxxx> 于2021年12月24日周五 21:25写道:
> > >>
> > >> Hi,
> > >>
> > >> On 24/12/2021 13:24, Dongjiu Geng wrote:
> > >>> when enable CONFIG_NEW_VGIC in ARM64 QEMU Platform, it will build 
> > >>> failed.
> > >>> so fix it and make it can select GICV2.
> > >>
> > >> As I said in v1, last time I checked QEMU was only able to support
> > >> virtualization with GICv3. This is why we added a depends on.
> > >
> > > I enabled CONFIG_NEW_VGIC, then it will use GICv2. In my check, it
> > > does not report an error.
> > > My QEMU emulator version is 4.0.0.  What is the QEMU version that you 
> > > used?
> >
> > I am using a more recent QEMU. However, I have always only used GICv3
> > becuase it was IIRC there first.
> >
> > >
> > >>
> > >> If you want to remove it, then I think you ought to explain in the
> > >> commit message why this is fine. A pointer to the commit or a QEMU
> > >> version used would be useful.
> > >
> > > OK,thanks. Can you check if QEMU 4.0.0 is workable with GICv2 on your 
> > > side?
> >
> > I don't have direct access to my QEMU setup at the moment. However,
> > looking at the history.
> >
> > So I would suggest the following commit message:
> >
> > "
> > xen/arm: Allow QEMU platform to be built with GICv2
> >
> > Trying to select PLATFORM_QEMU with NEW_VGIC will result to Kconfig
> > complain about unmet dependencies:
> >
> > tools/kconfig/conf  --syncconfig Kconfig
> >
> > WARNING: unmet direct dependencies detected for GICV3
> >    Depends on [n]: ARM_64 [=y] && !NEW_VGIC [=y]
> >    Selected by [y]:
> >    - QEMU [=y] && <choice> && ARM_64 [=y]
> >
> > WARNING: unmet direct dependencies detected for GICV3
> >    Depends on [n]: ARM_64 [=y] && !NEW_VGIC [=y]
> >    Selected by [y]:
> >    - QEMU [=y] && <choice> && ARM_64 [=y]
> >
> > WARNING: unmet direct dependencies detected for GICV3
> >    Depends on [n]: ARM_64 [=y] && !NEW_VGIC [=y]
> >    Selected by [y]:
> >    - QEMU [=y] && <choice> && ARM_64 [=y]
> >
> >
> > It turns out that QEMU has been supporting GICv2 virtualization since
> > v3.1.0. So an easy way to solve the issue and allow more custom support
> > is to remove the dependencies on GICv3.
> > "
>
> Ok, thanks very much for your suggestion.
>
> >
> > > It is workable on my side.
> > >
> > >
> > >>
> > >>>
> > >>> Signed-off-by: Dongjiu Geng <gengdongjiu1@xxxxxxxxx>
> > >>> ---
> > >>> $ make dist-xen XEN_TARGET_ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- 
> > >>> -j10
> > >>> make -C xen install
> > >>> make[1]: Entering directory 
> > >>> '/home/workspace/gengdongjiu/old_machine/XEN/xen/xen'
> > >>> make -f 
> > >>> /home/workspace/gengdongjiu/old_machine/XEN/xen/xen/tools/kconfig/Makefile.kconfig
> > >>>  ARCH=arm64 SRCARCH=arm HOSTCC="gcc" HOSTCXX="g++" syncconfig
> > >>> make[2]: Entering directory 
> > >>> '/home/workspace/gengdongjiu/old_machine/XEN/xen/xen'
> > >>> gcc -Wp,-MD,tools/kconfig/.conf.o.d      -c -o tools/kconfig/conf.o 
> > >>> tools/kconfig/conf.c
> > >>> gcc -Wp,-MD,tools/kconfig/.confdata.o.d      -c -o 
> > >>> tools/kconfig/confdata.o tools/kconfig/confdata.c
> > >>> gcc -Wp,-MD,tools/kconfig/.expr.o.d      -c -o tools/kconfig/expr.o 
> > >>> tools/kconfig/expr.c
> > >>> flex -otools/kconfig/lexer.lex.c -L tools/kconfig/lexer.l
> > >>> bison -o tools/kconfig/parser.tab.c 
> > >>> --defines=tools/kconfig/parser.tab.h -t -l tools/kconfig/parser.y
> > >>> gcc -Wp,-MD,tools/kconfig/.preprocess.o.d      -c -o 
> > >>> tools/kconfig/preprocess.o tools/kconfig/preprocess.c
> > >>> gcc -Wp,-MD,tools/kconfig/.symbol.o.d      -c -o tools/kconfig/symbol.o 
> > >>> tools/kconfig/symbol.c
> > >>> gcc -Wp,-MD,tools/kconfig/.lexer.lex.o.d     -I 
> > >>> /home/workspace/gengdongjiu/old_machine/XEN/xen/xen/tools/kconfig -c -o 
> > >>> tools/kconfig/lexer.lex.o tools/kconfig/lexer.lex.c
> > >>> gcc -Wp,-MD,tools/kconfig/.parser.tab.o.d     -I 
> > >>> /home/workspace/gengdongjiu/old_machine/XEN/xen/xen/tools/kconfig -c -o 
> > >>> tools/kconfig/parser.tab.o tools/kconfig/parser.tab.c
> > >>> gcc  -o tools/kconfig/conf tools/kconfig/conf.o 
> > >>> tools/kconfig/confdata.o tools/kconfig/expr.o tools/kconfig/lexer.lex.o 
> > >>> tools/kconfig/parser.tab.o tools/kconfig/preprocess.o 
> > >>> tools/kconfig/symbol.o
> > >>> tools/kconfig/conf  --syncconfig Kconfig
> > >>>
> > >>> WARNING: unmet direct dependencies detected for GICV3
> > >>>     Depends on [n]: ARM_64 [=y] && !NEW_VGIC [=y]
> > >>>     Selected by [y]:
> > >>>     - QEMU [=y] && <choice> && ARM_64 [=y]
> > >>>
> > >>> WARNING: unmet direct dependencies detected for GICV3
> > >>>     Depends on [n]: ARM_64 [=y] && !NEW_VGIC [=y]
> > >>>     Selected by [y]:
> > >>>     - QEMU [=y] && <choice> && ARM_64 [=y]
> > >>>
> > >>> WARNING: unmet direct dependencies detected for GICV3
> > >>>     Depends on [n]: ARM_64 [=y] && !NEW_VGIC [=y]
> > >>>     Selected by [y]:
> > >>>     - QEMU [=y] && <choice> && ARM_64 [=y]
> > >>> make[2]: Leaving directory 
> > >>> '/home/workspace/gengdongjiu/old_machine/XEN/xen/xen'
> > >>> make -f Rules.mk _install
> > >>> make[2]: Entering directory 
> > >>> '/home/workspace/gengdongjiu/old_machine/XEN/xen/xen'
> > >>> ---
> > >>>    xen/arch/arm/Kconfig           | 5 +++--
> > >>>    xen/arch/arm/platforms/Kconfig | 1 -
> > >>>    2 files changed, 3 insertions(+), 3 deletions(-)
> > >>>
> > >>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> > >>> index ecfa6822e4..373c698018 100644
> > >>> --- a/xen/arch/arm/Kconfig
> > >>> +++ b/xen/arch/arm/Kconfig
> > >>
> > >> The change in arch/arm/Kconfig is not really related to this patch.
> > >> Technically the part in platforms/Kconfig is sufficient. I still think
> > >> the change is good to have but it should be in a separate patch.
> > >
> > > sure
> > >
> > >>
> > >>> @@ -35,7 +35,7 @@ config ACPI
> > >>>
> > >>>    config GICV3
> > >>>        bool "GICv3 driver"
> > >>> -     depends on ARM_64 && !NEW_VGIC
> > >>> +     depends on ARM_64
> > >>>        default y
> > >>>        ---help---
> > >>>
> > >>> @@ -44,13 +44,14 @@ config GICV3
> > >>>
> > >>>    config HAS_ITS
> > >>>            bool "GICv3 ITS MSI controller support (UNSUPPORTED)" if 
> > >>> UNSUPPORTED
> > >>> -        depends on GICV3 && !NEW_VGIC
> > >>> +        depends on GICV3
> > >>>
> > >>>    config HVM
> > >>>            def_bool y
> > >>>
> > >>>    config NEW_VGIC
> > >>>        bool "Use new VGIC implementation"
> > >>> +     depends on !GICV3
> > >>>        ---help---
> > >>>
> > >>>        This is an alternative implementation of the ARM GIC interrupt
> > >>> diff --git a/xen/arch/arm/platforms/Kconfig 
> > >>> b/xen/arch/arm/platforms/Kconfig
> > >>> index c93a6b2756..6d3ee99456 100644
> > >>> --- a/xen/arch/arm/platforms/Kconfig
> > >>> +++ b/xen/arch/arm/platforms/Kconfig
> > >>> @@ -15,7 +15,6 @@ config ALL_PLAT
> > >>>    config QEMU
> > >>>        bool "QEMU aarch virt machine support"
> > >>>        depends on ARM_64
> > >>> -     select GICV3
> > >>>        select HAS_PL011
> > >>>        ---help---
> > >>>        Enable all the required drivers for QEMU aarch64 virt emulated
> >
> > While writing a proposal for the commit message, I remembered that the
> > goal of CONFIG_QEMU was to select all the required drivers to be able to
> > boot Xen on QEMU.
> >
> > AFAICT, if you start from tiny64_defconfig, you would not have GICv3
> > selected. So we would technically break users of QEMU with GICv3.

Hi, Julien

I revert my patch and generate the .config file using this comand :
"make tiny64_defconfig CROSS_COMPILE=aarch64-linux-gnu-
XEN_TARGET_ARCH=arm64"
The generated  .config[1] also does not select CONFIG_GICV3 and
CONFIG_NEW_VGIC.  I think you metioned issue does not related with my
changes.  thanks.


[1]
#
# Architecture Features
#
CONFIG_64BIT=y
CONFIG_NR_CPUS=128
# CONFIG_GICV3 is not set
CONFIG_HVM=y
# CONFIG_NEW_VGIC is not set



>
> I think I can add CONFIG_GICV3=y in arch/arm/configs/tiny64_defconfig
> to this patch, if it must to use GICV3.
>
> >
> > I am not entirely sure how to approach it. I can think of 2 options:
> >
> >   1) Use 'select GICv3 if !NEW_VGIC'
> >   2) Add a specific platform for QEMU new vGIC
> >
> > I have the feeling that 1) will result to same unmet dependency issue.
> > Stefano any opinions?
>
> Stefano?
>
> >
> > Cheers,
> >
> > --
> > Julien Grall



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.