On 03/28/2018 08:49 PM, Heinrich Schuchardt wrote: > The old coding resulted in a "data abort" when compiled with gcc 6.3 for > armhf and run on an Allwinner A20 SOC. > > The unaligned access occured when path->Length was on an uneven address. > > Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de> > --- > src/interface/efi/efi_utils.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/interface/efi/efi_utils.c b/src/interface/efi/efi_utils.c > index 4dc75414..dd59613b 100644 > --- a/src/interface/efi/efi_utils.c > +++ b/src/interface/efi/efi_utils.c > @@ -39,12 +39,15 @@ FILE_LICENCE ( GPL2_OR_LATER ); > * @ret path_end End of device path > */ > EFI_DEVICE_PATH_PROTOCOL * efi_devpath_end ( EFI_DEVICE_PATH_PROTOCOL *path > ) { > + EFI_DEVICE_PATH_PROTOCOL path_c; > > - while ( path->Type != END_DEVICE_PATH_TYPE ) { > + memcpy(&path_c, path, sizeof(EFI_DEVICE_PATH_PROTOCOL)); > + while ( path_c.Type != END_DEVICE_PATH_TYPE ) { > path = ( ( ( void * ) path ) + > /* There's this amazing new-fangled thing known as > * a UINT16, but who wants to use one of those? */ > - ( ( path->Length[1] << 8 ) | path->Length[0] ) ); > + ( ( path_c.Length[1] << 8 ) | path_c.Length[0] ) ); > + memcpy(&path_c, path, sizeof(EFI_DEVICE_PATH_PROTOCOL)); > } > > return path; >
Hello Michael, with the patch above I reach the iPXE prompt on a BananaPi. But when executing the dhcp command I see another "data abort", see below. I am trying to track down, in which routine this happens. The error occurs in monojob_wait(). Where do I find the job-code that is executed in monojob_wait? Best regards Heinrich iPXE> dhcp hci/commands/ifmgmt_cmd.c(219) ifconf_payload: SNP net0 could not set station address before initialising: Error 0x7f594083 (http://ipxe.org/7f594083) ethernet@01c50000 Waiting for PHY auto negotiation to complete...... done Speed: 1000, full duplex SNP net0 could not set station address after initialising: Error 0x7f594083 (http://ipxe.org/7f594083) SNP net0 could not set receive filters 0x00 (have 0x00): Error 0x7f594083 (http://ipxe.org/7f594083) SNP net0 could not set receive filters 0x07 (have 0x00): Error 0x7f594083 (http://ipxe.org/7f594083) SNP net0 could not set receive filters 0x05 (have 0x00): Error 0x7f594083 (http://ipxe.org/7f594083) SNP net0 could not set receive filters 0x01 (have 0x00): Error 0x7f594083 (http://ipxe.org/7f594083) SNPDEV 0x79eaaa64 link is up net/udp/dhcp.c(1348) start_dhcp: INTF 0x79eab014+18 opening (SOCK_DGRAM,AF_INET) socket net/udp/dhcp.c(1354) start_dhcp: DHCP 0x79eab014 entering discovery state net/udp/dhcp.c(1356) start_dhcp: Configuring (net0 02:49:04:c2:32:99)usr/ifmgmt.c(300) ifconf: usr/ifmgmt.c(189) ifpoller_wait: core/monojob.c(97) monojob_wait: ...data abort pc : [<79e979a8>] lr : [<79e83713>] reloc pc : [<44f329a8>] lr : [<44f1e713>] sp : 7af3a438 ip : 7af3a448 fp : 7af3a458 r10: 00000005 r9 : 7af3a4c4 r8 : 00000000 r7 : 00000000 r6 : 79ea9ee8 r5 : 79e978c9 r4 : 7af3a4c4 r3 : 79eaa9f0 r2 : 00000005 r1 : 00000000 r0 : 7af3a4c4 Flags: nZCv IRQs off FIQs off Mode SVC_32 Resetting CPU ... resetting ... _______________________________________________ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel