 /* First try to find some free unused space */ if (!allocate_resource(&iomem_resource, &aper_res, aper_size, 0, 0xffffffff, aper_size, NULL, NULL)) { printk(KERN_INFO "Putting aperture at %lx-%lx\n", aper_res.start, aper_res.end); return aper_res.start; }  /* No free space found. Go on to waste some memory... */ 
static u32 __init allocate_aperture(void) {#ifdef CONFIG_DISCONTIGMEM	pg_data_t *nd0 = NODE_DATA(0);#else	pg_data_t *nd0 = &contig_page_data;#endif		u32 aper_size;	void *p; 	if (fallback_aper_order > 7) 		fallback_aper_order = 7; 	aper_size = (32 * 1024 * 1024) << fallback_aper_order; 	/* 	 * Aperture has to be naturally aligned. This means an 2GB	 * aperture won't have much chances to find a place in the	 * lower 4GB of memory.  Unfortunately we cannot move it up	 * because that would make the IOMMU useless.	 */	/* First try to find some free unused space */	if (!allocate_resource(&iomem_resource, &aper_res,			       aper_size,			       0, 0xffffffff,			       aper_size,			       NULL, NULL)) {		printk(KERN_INFO "Putting aperture at %lx-%lx\n",		       aper_res.start, aper_res.end);		return aper_res.start;	}	/* No free space found. Go on to waste some memory... */	p = __alloc_bootmem_node(nd0, aper_size, aper_size, 0); 	if (!p || __pa(p)+aper_size > 0xffffffff) {		printk("Cannot allocate aperture memory hole (%p,%uK)\n",		       p, aper_size>>10);		if (p)			free_bootmem_node(nd0, (unsigned long)p, aper_size); 		return 0;	}	printk("Mapping aperture over %d KB of precious RAM @ %lx\n",	       aper_size >> 10, __pa(p)); 	return (u32)__pa(p); }
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/42442ed5744b03f5351a142649b8b4c97e6950ab/aperture.c/buggy/arch/x86_64/kernel/aperture.c