> -----Original Message-----
> From: Terry Loftin [mailto:[EMAIL PROTECTED]
> Sent: 2006年10月12日 6:41
> To: [email protected]; [email protected]
> Cc: Zou, Nanhai; [EMAIL PROTECTED]
> Subject: [PATCH] kexec-tools: ia64: icache flush should align to 32-bytes
> 
> Hi,
> I've run into problems testing kexec/kdump on a Montecito revision C
> processor.  In purgatory, __dummy_efi_function is copied onto the
> end of the command line boot parameter (command_line + command_line_len)
> and this address is used to replace the EFI call to set_virtual_address_map().
> The copied range is then icache flushed.
> 
> The destination address is aligned to 16-bytes (in kexec-elf-ia64.c), but
> the fc.i instruction flushes a 32-byte range "associated" with that address.
> When my command line length is 16-byte aligned but not 32-byte aligned, this
> results in the first 16-bytes of __dummy_efi_function getting flushed (and
> the 16 bytes prior to that), but the second half of the function (the part
> with the br.ret) does not get flushed.  kdump then hangs in purgatory.  By
> adding a few spaces to my command line, it becomes both 16 and 32-byte
> aligned, and kdump works.
> 
> 
> This patch makes icache_flush_range() align the start address to 32-bytes and
> account for the difference.  The patch is against Horms kexec-tools-testing
> tree.  As a side note, you could also fix this by just adding 32 to the length
> passed to flush_icache_range() but that hides the dependent behavior.
> 
> Thanks,
> -T

It seems I was always testing with command line more than 16 bytes length.....

Thanks.
Acked-by: Zou Nan hai <[EMAIL PROTECTED]>

_______________________________________________
fastboot mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/fastboot

Reply via email to