WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

Re: [Xen-ia64-devel] [patch 11/12] ia64: kexec: add __va_efi

To: Simon Horman <horms@xxxxxxxxxxxx>
Subject: Re: [Xen-ia64-devel] [patch 11/12] ia64: kexec: add __va_efi
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: Mon, 14 Jul 2008 12:08:46 +0900
Cc: Aron Griffis <aron@xxxxxx>, Alex Williamson <alex.williamson@xxxxxx>, xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Sun, 13 Jul 2008 20:08:50 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20080423012937.113485047@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20080423012200.632155842@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <20080423012937.113485047@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.6i
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

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [Xen-ia64-devel] [patch 11/12] ia64: kexec: add __va_efi, Isaku Yamahata <=