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

Re: [Xen-devel] [PATCH v3 11/24] xen/arm: Let the toolstack configure the number of SPIs



On Wed, 28 Jan 2015, Julien Grall wrote:
> Hi Stefano,
> 
> On 28/01/15 18:26, Stefano Stabellini wrote:
> > On Tue, 13 Jan 2015, Julien Grall wrote:
> >> Each domain may have a different number of IRQs depending on the devices
> >> assigned to it.
> >>
> >> Rather re-using the number of IRQs used by the hardwared GIC, let the
> >> toolstack specify the number of SPIs when the domain is created. This
> >> will avoid to waste memory.
> >>
> >> To calculate the number of SPIs, we assume that any IRQ given via the 
> >> option
> >> "irqs=" in xl is mapped 1:1 to the guest.
> >>
> >> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
> >> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> >> Cc: Jan Beulich <jbeulich@xxxxxxxx>
> >> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
> >>
> >> ---
> >>     Changes in v3:
> >>         - Fix typoes
> >>         - A separate has been created to extend the DOMCTL create domain
> >>
> >>     Changes in v2:
> >>         - Patch added
> >> ---
> >>  tools/libxc/xc_domain.c       |  1 +
> >>  tools/libxl/libxl_arm.c       | 19 +++++++++++++++++++
> >>  xen/arch/arm/domain.c         |  7 ++++++-
> >>  xen/arch/arm/setup.c          |  1 +
> >>  xen/arch/arm/vgic.c           | 10 +++++-----
> >>  xen/include/asm-arm/domain.h  |  2 ++
> >>  xen/include/asm-arm/setup.h   |  1 +
> >>  xen/include/asm-arm/vgic.h    |  2 +-
> >>  xen/include/public/arch-arm.h |  2 ++
> >>  9 files changed, 38 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c
> >> index eebc121..eb066cf 100644
> >> --- a/tools/libxc/xc_domain.c
> >> +++ b/tools/libxc/xc_domain.c
> >> @@ -67,6 +67,7 @@ int xc_domain_create(xc_interface *xch,
> >>      /* No arch-specific configuration for now */
> >>  #elif defined (__arm__) || defined(__aarch64__)
> >>      config.gic_version = XEN_DOMCTL_CONFIG_GIC_DEFAULT;
> >> +    config.nr_spis = 0;
> >>  #else
> >>      errno = ENOSYS;
> >>      return -1;
> >> diff --git a/tools/libxl/libxl_arm.c b/tools/libxl/libxl_arm.c
> >> index cddce6e..53177eb 100644
> >> --- a/tools/libxl/libxl_arm.c
> >> +++ b/tools/libxl/libxl_arm.c
> >> @@ -39,6 +39,25 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
> >>                                        libxl_domain_config *d_config,
> >>                                        xc_domain_configuration_t 
> >> *xc_config)
> >>  {
> >> +    uint32_t nr_spis = 0;
> >> +    unsigned int i;
> >> +
> >> +    for (i = 0; i < d_config->b_info.num_irqs; i++) {
> >> +        int irq = d_config->b_info.irqs[i];
> > 
> > unsigned int
> 
> I will use uint32_t.
> 
> >> +        int spi = irq - 32;
> 
> Same here.
> 
> > 
> >> +        if (irq < 32)
> >> +            continue;
> >> +
> >> +        if (nr_spis <= spi)
> >> +            nr_spis = spi + 1;
> > 
> > overflow check?
> 
> If I use unsigned int, the overflow will go back to 0. While it won't
> affect the code, the domain creation will fail later (unable to assign
> the SPI).
> 
> So is it useful to add a check here?

The maximum number of allowed spis has to be lower than UINT_MAX, right?

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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