[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-ia64-devel] [patch 11/12] ia64: kexec: add __va_efi
Hi Simon-san. efi_map_pal_code() efi_get_pal_addr() and __efi_get_pal_addr() also seem to need some modification. Especially __efi_get_pal_addr() should use __va_efi() On Thu, Mar 20, 2008 at 05:52:59PM +1100, Simon Horman wrote: > sal_desc_entry_point() converts physical addresses into virtual > addresses using __va() and these virtual addresses are used > to register the SAL and PAL handlers - which exist in firmware > memory. > > As the mapping of firmware memory is being moved from > a PAGE_OFFSET of (0xf << 60) to a PAGE_OFFSET of (0xe << 60), > __va() does not provide the correct virtual address. > > By adding __va_efi(), which uses EFI_PAGE_OFFSET=(0xe << 60), > and using this in sal_desc_entry_point(), the correct address is > used. > > On an HP rx2600 this eliminates the problem where the SAL rendezvous address > can't be registered and subsequently the boot fails. I suspect it > solves similar problems that have been seen on other HP machines too. > > Actually, its rather amazing that the HP rx2620 and Tiger2 that > I have been using work without this fix. > > Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx> > > --- > > I will post a fresh series of patches shortly - I have to run to a meeting > soon, but I'm pretty excited about this and wanted to get it out there. > > I have found that the following patches works on HP rx2620, HP 2600 > and Tiger 2. > > * The "ia64: kexec: Map EFI memory in the same location as Linux" series > of 15 patches that I posed to xen-ia64-devel on the 4th March. > > http://lists.xensource.com/archives/html/xen-ia64-devel/2008-03/msg00020.html > > * Omit patch 13/15 > "ia64: kexec: Set page size identity mapping of EFI in alt_itlb_miss" > > This patch causes problems on machines that it is supposed to > fix problems on - obviously I made a mistake when collating fixes. > > * Optionally omit the following patches, as they don't seem to be used, > although they don't seem to cause much harm either. > > 09/15 "ia64: kexec: Add identity mapping of EFI memory to dtlb_miss" > 10/15 "ia64: kexec: identity mapping of EFI memory to itlb_miss" > 11/15 "ia64: kexec: Set protection key of identity mapping of EFI in > alt_dtlb_miss" > 12/15 "ia64: kexec: Set protection key of identity mapping of EFI in > alt_itlb_miss" > > * Add this patch > > Special thanks to Alex Williamson for giving me access to an > HP rx2620 so that I could debug this problem. > > Index: xen-unstable.hg/xen/arch/ia64/linux-xen/sal.c > =================================================================== > --- xen-unstable.hg.orig/xen/arch/ia64/linux-xen/sal.c 2008-03-19 > 11:52:42.000000000 +0900 > +++ xen-unstable.hg/xen/arch/ia64/linux-xen/sal.c 2008-03-19 > 11:53:03.000000000 +0900 > @@ -121,8 +121,8 @@ static void __init > sal_desc_entry_point (void *p) > { > struct ia64_sal_desc_entry_point *ep = p; > - ia64_pal_handler_init(__va(ep->pal_proc)); > - ia64_sal_handler_init(__va(ep->sal_proc), __va(ep->gp)); > + ia64_pal_handler_init(__va_efi(ep->pal_proc)); > + ia64_sal_handler_init(__va_efi(ep->sal_proc), __va_efi(ep->gp)); > } > > #ifdef CONFIG_SMP > Index: xen-unstable.hg/xen/include/asm-ia64/xenpage.h > =================================================================== > --- xen-unstable.hg.orig/xen/include/asm-ia64/xenpage.h 2008-03-19 > 11:52:42.000000000 +0900 > +++ xen-unstable.hg/xen/include/asm-ia64/xenpage.h 2008-03-19 > 11:54:41.000000000 +0900 > @@ -97,5 +97,14 @@ static inline u64 pa_clear_uc(u64 paddr) > /* It is sometimes very useful to have unsigned long as result. */ > #define __va_ul(x) ({xen_va _v; _v.l = (long) (x); _v.f.reg = -1; _v.l;}) > > +/* Do __va_efi() should just call __va() until the use of > + * __IA64_EFI_CACHED_OFFSET is activated in efi_enter_virtual_mode() > + */ > +#if 0 > +#define __va_efi(x) ((unsigned long)(x) | __IA64_EFI_CACHED_OFFSET) > +#else > +#define __va_efi(x) __va(x) > +#endif > + > #endif > #endif /* _ASM_IA64_XENPAGE_H */ > -- yamahata _______________________________________________ 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 |