[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH] xen/arm: setup: nr_banks should be unsigned int
Hi Julien, > -----Original Message----- > From: Xen-devel <xen-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On Behalf Of > Julien Grall > Sent: 2022年5月24日 3:47 > To: xen-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Michal Orzel <Michal.Orzel@xxxxxxx>; Julien Grall <jgrall@xxxxxxxxxx>; > Stefano Stabellini <sstabellini@xxxxxxxxxx>; Julien Grall <julien@xxxxxxx>; > Bertrand Marquis <Bertrand.Marquis@xxxxxxx>; Volodymyr Babchuk > <Volodymyr_Babchuk@xxxxxxxx> > Subject: [PATCH] xen/arm: setup: nr_banks should be unsigned int > > From: Julien Grall <jgrall@xxxxxxxxxx> > > It is not possible to have a negative number of banks. So switch > to unsigned int. > > The type change is also propagated to any users of nr_banks that > were using "int" (there are not that many). > > Note that fdt_num_mem_rsv() can actually returns a negative value > in case of an error. So the return should be checked before assigning > the result to an unsigned variable. > > Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx> > --- > xen/arch/arm/domain_build.c | 9 +++++---- > xen/arch/arm/efi/efi-dom0.c | 4 ++-- > xen/arch/arm/include/asm/setup.h | 6 +++--- > xen/arch/arm/setup.c | 17 +++++++++++++---- > 4 files changed, 23 insertions(+), 13 deletions(-) > > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > index aa777741bdd0..6ecb6673a3cd 100644 > --- a/xen/arch/arm/domain_build.c > +++ b/xen/arch/arm/domain_build.c > @@ -111,7 +111,8 @@ static bool __init insert_11_bank(struct domain *d, > struct page_info *pg, > unsigned int order) > { > - int res, i; > + unsigned int i; > + int res; > mfn_t smfn; > paddr_t start, size; > > @@ -264,7 +265,7 @@ static void __init allocate_memory_11(struct domain *d, > const unsigned int min_order = get_order_from_bytes(MB(4)); > struct page_info *pg; > unsigned int order = get_allocation_size(kinfo->unassigned_mem); > - int i; > + unsigned int i; > > bool lowmem = true; > unsigned int lowmem_bitsize = min(32U, arch_get_dma_bitsize()); > @@ -1022,8 +1023,8 @@ static int __init make_memory_node(const struct > domain *d, > int addrcells, int sizecells, > struct meminfo *mem) > { > - int res, i; > - int reg_size = addrcells + sizecells; > + unsigned int i; > + int res, reg_size = addrcells + sizecells; > int nr_cells = 0; > /* Placeholder for memory@ + a 64-bit number + \0 */ > char buf[24]; > diff --git a/xen/arch/arm/efi/efi-dom0.c b/xen/arch/arm/efi/efi-dom0.c > index 494420eaa23e..aae0f979112a 100644 > --- a/xen/arch/arm/efi/efi-dom0.c > +++ b/xen/arch/arm/efi/efi-dom0.c > @@ -34,14 +34,14 @@ > /* Constant to indicate "Xen" in unicode u16 format */ > static const CHAR16 xen_efi_fw_vendor[] = {0x0058, 0x0065, 0x006E, > 0x0000}; > > -size_t __init estimate_efi_size(int mem_nr_banks) > +size_t __init estimate_efi_size(unsigned int mem_nr_banks) > { > size_t size; > size_t est_size = sizeof(EFI_SYSTEM_TABLE); > size_t ect_size = sizeof(EFI_CONFIGURATION_TABLE); > size_t emd_size = sizeof(EFI_MEMORY_DESCRIPTOR); > size_t fw_vendor_size = sizeof(xen_efi_fw_vendor); > - int acpi_mem_nr_banks = 0; > + unsigned int acpi_mem_nr_banks = 0; > > if ( !acpi_disabled ) > acpi_mem_nr_banks = bootinfo.acpi.nr_banks; > diff --git a/xen/arch/arm/include/asm/setup.h > b/xen/arch/arm/include/asm/setup.h > index 7a1e1d67989c..2bb01ecfa88f 100644 > --- a/xen/arch/arm/include/asm/setup.h > +++ b/xen/arch/arm/include/asm/setup.h > @@ -30,7 +30,7 @@ struct membank { > }; > > struct meminfo { > - int nr_banks; > + unsigned int nr_banks; > struct membank bank[NR_MEM_BANKS]; > }; > > @@ -93,7 +93,7 @@ extern domid_t max_init_domid; > > void copy_from_paddr(void *dst, paddr_t paddr, unsigned long len); > > -size_t estimate_efi_size(int mem_nr_banks); > +size_t estimate_efi_size(unsigned int mem_nr_banks); > > void acpi_create_efi_system_table(struct domain *d, > struct membank tbl_add[]); > @@ -109,7 +109,7 @@ void create_dom0(void); > > void discard_initial_modules(void); > void fw_unreserved_regions(paddr_t s, paddr_t e, > - void (*cb)(paddr_t, paddr_t), int first); > + void (*cb)(paddr_t, paddr_t), unsigned int > first); > > size_t boot_fdt_info(const void *fdt, paddr_t paddr); > const char *boot_fdt_cmdline(const void *fdt); > diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c > index db1768c03f03..b30bccbaa7df 100644 > --- a/xen/arch/arm/setup.c > +++ b/xen/arch/arm/setup.c > @@ -201,9 +201,17 @@ static void __init processor_id(void) > > static void __init dt_unreserved_regions(paddr_t s, paddr_t e, > void (*cb)(paddr_t, paddr_t), > - int first) > + unsigned int first) > { > - int i, nr = fdt_num_mem_rsv(device_tree_flattened); > + unsigned int i, nr; > + int rc; > + > + rc = fdt_num_mem_rsv(device_tree_flattened); > + if ( rc < 0 ) > + panic("Unable to retrieve the number of reserved regions > (rc=%d)\n", > + rc); > + > + nr = rc; > > for ( i = first; i < nr ; i++ ) > { > @@ -249,7 +257,8 @@ static void __init dt_unreserved_regions(paddr_t s, > paddr_t e, > } > > void __init fw_unreserved_regions(paddr_t s, paddr_t e, > - void (*cb)(paddr_t, paddr_t), int first) > + void (*cb)(paddr_t, paddr_t), > + unsigned int first) > { > if ( acpi_disabled ) > dt_unreserved_regions(s, e, cb, first); > @@ -693,7 +702,7 @@ static void __init setup_mm(void) > paddr_t ram_start, ram_end, ram_size, e; > unsigned long ram_pages; > unsigned long heap_pages, xenheap_pages, domheap_pages; > - int i; > + unsigned int i; > const uint32_t ctr = READ_CP32(CTR); > > if ( !bootinfo.mem.nr_banks ) Reviewed-by: Wei Chen <Wei.Chen@xxxxxxx> > -- > 2.32.0 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |