[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |