> -----Original Message----- > From: Terry Loftin [mailto:terry.loftin@xxxxxx] > Sent: 2006年10月12日 6:41 > To: linux-ia64@xxxxxxxxxxxxxxx; fastboot@xxxxxxxxxxxxxx > Cc: Zou, Nanhai; horms@xxxxxxxxxxxx > 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 <nanhai.zou@xxxxxxxxx> - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |