[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