[patch 2/3] Introduce BOOTMEM_EXCLUSIVE

Dave Hansen haveblue at us.ibm.com
Tue Oct 16 14:08:16 EDT 2007


On Tue, 2007-10-16 at 18:28 +0200, Bernhard Walle wrote:
> 
> @@ -736,7 +736,7 @@ static int __init smp_scan_config (unsig
>                         smp_found_config = 1;
>                         printk(KERN_INFO "found SMP MP-table at %08lx\n",
>                                                 virt_to_phys(mpf));
> -                       reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE);
> +                       reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE, 0);
>                         if (mpf->mpf_physptr) {
>                                 /* 

Could you give all of these 0's a name?  I really hate seeing random
magic numbers in these things.  0 completely kills the ability of
someone to read the code and figure out what it is trying to do without
going and looking at reserve_bootmem().

Or, alternatively, do something like this:

-extern void reserve_bootmem(unsigned long addr, unsigned long size);
+/*
+ * If flags is 0, then the return value is always 0 (success). If
+ * flags contains BOOTMEM_EXCLUSIVE, then -EBUSY is returned if the
+ * memory already was reserved.
+ */
+extern int reserve_bootmem(unsigned long addr, unsigned long size, int flag);
+int reserve_bootmem(unsigned long addr, unsigned long size)
+{
+	/* the 0 is because we don't
+	return reserve_bootmem_exclusive(addr, size, 0);
+}

Where all of the existing callers stay the same.  But, the ones wanting
exclusive access actually call the _exclusive() variant.  

-- Dave




More information about the kexec mailing list