|
[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 |