[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-ia64-devel] [PATCH][RFC][TAKE4] the P2M/VP patches
I was also able to get networking working with Isaku's patches and Alex's. Hooray! For the last eight months, I have gulped as I told people that Xen/ia64 doesn't support networking. No longer! Domo arigato, Yamahata-san! Free beer (or sake) for you at the next summit! Dan > -----Original Message----- > From: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx > [mailto:xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf > Of Williamson, Alex (Linux Kernel Dev) > Sent: Monday, April 10, 2006 2:08 PM > To: Isaku Yamahata > Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx > Subject: Re: [Xen-ia64-devel] [PATCH][RFC][TAKE4] the P2M/VP patches > > On Mon, 2006-04-10 at 10:51 -0600, Alex Williamson wrote: > > On Fri, 2006-04-07 at 13:16 +0900, Isaku Yamahata wrote: > > > > > 9512:f5d0a531cb58_dom0_vp_model_xen_part.patch > > > > > > I'm having trouble with the legacy VGA memory descriptor > section of > > this patch. > > I managed to get my system booting with the patch below > (2-way, w/ > > 1GB RAM). Networking works, yeah! The main changes here are that I > removed the fabricated MDT entries describing the legacy VGA space, > added EFI_ACPI_RECLAIM_MEMORY to the memory types mapped, and > sorted the > resulting memory descriptor table. I also included the hack to avoid > calling assign_domain_mmio_page() for large MMIO ranges. Minor nit, > we're still subtracting IA64_GRANULE_SIZE from the MDT entry for > conventional memory, but we're not adding in the granule at the end of > memory like we used to. > > I also had to make a change to the -xen kernel which is not shown > here. The sal_cache_flush_check() appears to be causing us > some trouble > again with the P2M/VP patches (MCA'd on my system), so I commented out > the call to in in arich/ia64/kernel/sal.c:ia64_sal_init(). Thanks, > > Alex > > -- > Alex Williamson HP Linux & Open Source Lab > > --- xen/xen/arch/ia64/xen/dom_fw.c 2006-04-10 > 13:17:31.000000000 -0600 > +++ xen/xen/arch/ia64/xen/dom_fw.c 2006-04-10 > 13:15:21.000000000 -0600 > @@ -10,6 +10,7 @@ > #include <asm/pgalloc.h> > > #include <linux/efi.h> > +#include <linux/sort.h> > #include <asm/io.h> > #include <asm/pal.h> > #include <asm/sal.h> > @@ -600,9 +601,14 @@ > u64 end = start + (md->num_pages << EFI_PAGE_SHIFT); > > if (md->type == EFI_MEMORY_MAPPED_IO || > - md->type == EFI_MEMORY_MAPPED_IO_PORT_SPACE) > + md->type == EFI_MEMORY_MAPPED_IO_PORT_SPACE) { > + > + if (md->type == EFI_MEMORY_MAPPED_IO && > + ((md->num_pages << EFI_PAGE_SHIFT) > 0x100000000UL)) > + return 0; > + > paddr = assign_domain_mmio_page(d, start, end - start); > - else > + } else > paddr = assign_domain_mach_page(d, start, end - start); > #else > paddr = md->phys_addr; > @@ -610,6 +616,7 @@ > > BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE && > md->type != EFI_RUNTIME_SERVICES_DATA && > + md->type != EFI_ACPI_RECLAIM_MEMORY && > md->type != EFI_MEMORY_MAPPED_IO && > md->type != EFI_MEMORY_MAPPED_IO_PORT_SPACE); > > @@ -626,6 +633,18 @@ > return 0; > } > > +static int > +efi_mdt_cmp(const void *a, const void *b) > +{ > + const efi_memory_desc_t *x = a, *y = b; > + > + if (x->phys_addr > y->phys_addr) > + return 1; > + if (x->phys_addr < y->phys_addr) > + return -1; > + return 0; > +} > + > static struct ia64_boot_param * > dom_fw_init (struct domain *d, const char *args, int arglen, > char *fw_mem, int fw_mem_size) > { > @@ -834,6 +853,7 @@ > /* simulate 1MB free memory at physical address zero */ > > MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB,0*MB,1*MB, 0);//XXX > #else > +#if 0 > //XXX dom0 should use VGA? > #define VGA_RAM_START 0xb8000 > #define VGA_RAM_END 0xc0000 > @@ -852,6 +872,7 @@ > pcolour_map_end = pcolour_map + VGA_CMAPSZ * 8; > MAKE_MD(EFI_LOADER_DATA, EFI_MEMORY_WB, 0 * MB, > pvga_start, 1); > MAKE_MD(EFI_LOADER_DATA, EFI_MEMORY_WB, > pcolour_map_end, 1 * MB, 1); > +#endif /* 0 */ > #endif > /* hypercall patches live here, masquerade as > reserved PAL memory */ > > MAKE_MD(EFI_PAL_CODE,EFI_MEMORY_WB,HYPERCALL_START,HYPERCALL_END, 0); > @@ -890,6 +911,8 @@ > // for ACPI table. > efi_memmap_walk_type(EFI_RUNTIME_SERVICES_DATA, > dom_fw_dom0_passthrough, &arg); > + efi_memmap_walk_type(EFI_ACPI_RECLAIM_MEMORY, > + dom_fw_dom0_passthrough, &arg); > efi_memmap_walk_type(EFI_MEMORY_MAPPED_IO, > dom_fw_dom0_passthrough, &arg); > efi_memmap_walk_type(EFI_MEMORY_MAPPED_IO_PORT_SPACE, > @@ -902,8 +925,10 @@ > #ifndef CONFIG_XEN_IA64_DOM0_VP > MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB,0*MB,1*MB, 1); > #else > +#if 0 > MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB, 0 * MB, > VGA_RAM_START, 1); > MAKE_MD(EFI_LOADER_DATA,EFI_MEMORY_WB, > VGA_COLOURMAP_END, 1*MB, 1); > +#endif /* 0 */ > #endif > /* hypercall patches live here, masquerade as > reserved PAL memory */ > > MAKE_MD(EFI_PAL_CODE,EFI_MEMORY_WB,HYPERCALL_START,HYPERCALL_END, 1); > @@ -915,6 +940,8 @@ > MAKE_MD(EFI_RESERVED_TYPE,0,0,0,0); > } > > + sort(efi_memmap, i, sizeof(efi_memory_desc_t), > efi_mdt_cmp, NULL); > + > bp->efi_systab = dom_pa((unsigned long) fw_mem); > bp->efi_memmap = dom_pa((unsigned long) efi_memmap); > BUG_ON(i > NUM_MEM_DESCS); > > > > _______________________________________________ > Xen-ia64-devel mailing list > Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-ia64-devel > _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |