On Wednesday 04 May 2011 06:58:02 Jedrzej Kalinowski wrote:
> > Hi,
> > I've applied the patch and basically I got zeros everywhere:
> > http://www.iem.pw.edu.pl/~kalinoj1/public/DEBUG-undionly.kkpxe.jpg
> > http://www.iem.pw.edu.pl/~kalinoj1/public/DEBUG-undionly.kpxe.jpg
> >
> >
> > BTW. I also tried removing the second NIC, and you were right - it
> > didn't change anything.
>
> Hi Michael,
>
> Any chance you could look into this issue. I can help debugging :)
Try the attached patch with DEBUG=undionly and undionly.kpxe. (It will break
undionly.kkpxe.)
Michael
diff --git a/src/arch/i386/drivers/net/undionly.c b/src/arch/i386/drivers/net/undionly.c
index c38b574..09bc9e3 100644
--- a/src/arch/i386/drivers/net/undionly.c
+++ b/src/arch/i386/drivers/net/undionly.c
@@ -43,6 +43,9 @@ FILE_LICENCE ( GPL2_OR_LATER );
* addition to the UNDI driver, build e.g. "bin/undi.dsk".
*/
+extern char pxeprefix_dump[0];
+extern char pxeprefix_dump_len[0];
+
/**
* Probe UNDI root bus
*
@@ -58,9 +61,26 @@ static int undibus_probe ( struct root_device *rootdev ) {
/* Check for a valie preloaded UNDI device */
if ( ! undi->entry.segment ) {
DBG ( "No preloaded UNDI device found!\n" );
+
+ DBG ( "preloaded_undi:\n" );
+ DBG_HDA ( 0, undi, sizeof ( *undi ) );
return -ENODEV;
}
+ {
+ struct segoff address = {
+ .segment = 0x7c0,
+ .offset = ( int ) pxeprefix_dump,
+ };
+ size_t len = ( size_t ) pxeprefix_dump_len;
+ userptr_t user = real_to_user ( address.segment,
+ address.offset );
+ void *ptr = user_to_virt ( user, 0 );
+
+ DBG ( "pxeprefix_dump:\n" );
+ DBG_HDA ( address, ptr, len );
+ }
+
/* Add to device hierarchy */
strncpy ( undi->dev.name, "UNDI",
( sizeof ( undi->dev.name ) - 1 ) );
diff --git a/src/arch/i386/prefix/pxeprefix.S b/src/arch/i386/prefix/pxeprefix.S
index b7468cd..e7a0a94 100644
--- a/src/arch/i386/prefix/pxeprefix.S
+++ b/src/arch/i386/prefix/pxeprefix.S
@@ -642,6 +642,11 @@ print_pxe_error:
*/
.section ".prefix.data"
+#ifndef PXELOADER_KEEP_PXE
+ .globl pxeprefix_dump
+pxeprefix_dump:
+#endif
+
pxe_esp: .long 0
pxe_ss: .word 0
@@ -687,6 +692,11 @@ flags:
.equ undi_device_size, ( . - undi_device )
+#ifndef PXELOADER_KEEP_PXE
+ .globl pxeprefix_dump_len
+ .equ pxeprefix_dump_len, ( . - pxeprefix_dump )
+#endif
+
/*****************************************************************************
* Run iPXE main code
*****************************************************************************
_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo/ipxe-devel