I think I've found the remaining issue with the XHCI controller on my
e350m1. The controller doesn't like the dummy context entries count
that seabios assigns during a configure event. The patch below allows
me to use keyboard and mice on the xhci controller. Interestingly,
the xhci controller doesn't seem to care about that field at all when
using super speed devices.
However, the controller still doesn't work for high speed flash
devices. It looks like the controller doesn't like getting two
configure events - it accepts the first configure event for the bulkin
pipe, but then complains about the second configure event for the
bulkout pipe. Unfortunately, it looks like fixing this would require
significant changes to the seabios usb code.
-Kevin
--- a/src/hw/usb-xhci.c
+++ b/src/hw/usb-xhci.c
@@ -922,7 +922,7 @@ xhci_alloc_pipe(struct usbdevice_s *usbdev
goto fail;
in->add |= (1 << pipe->epid);
struct xhci_slotctx *slot = (void*)&in[1 << xhci->context64];
- slot->ctx[0] |= (31 << 27); // context entries
+ slot->ctx[0] |= (pipe->epid << 27); // context entries
struct xhci_epctx *ep = (void*)&in[(pipe->epid+1) << xhci->context64];
if (eptype == USB_ENDPOINT_XFER_INT)
Maybe this is realtek ring problem like in iPXE: http://git.ipxe.org/ipxe.git/commitdiff/5d3d62d
"realtek_destroy_ring() currently does nothing if the card is operating
in legacy (pre-RTL8139C+) mode. In particular, the producer and
consumer counters are incorrectly left holding their current values.
Virtual hardware (e.g. the emulated RTL8139 in qemu and similar VMs)
is tolerant of this behaviour, but real hardware will fail to transmit
if the descriptors are not used in the correct order.
Fix by resetting the producer and consumer counters in
realtek_destroy_ring() even if the card is operating in legacy mode.
Reported-by: Gelip <mrgelip(a)gmail.com>
Signed-off-by: Michael Brown <mcb30(a)ipxe.org>"
I think that this is a problem only with chip NIC RTL8139D on coreboot because:
- many other floppy works without a problem on coreboot/seabios
- BOOT-PROM3 floppy disk image is not damage
- BOOT-PROM3 floppy disk is also not damage
- tested other floppy disk with BOOT-PROM3 and also working on vendor bios but not in coreboot
- BOOT-PROM3 floppy & disk work OK on vendor bios on RTL8139D
- BOOT-PROM1 floppy disk work ok with other NIC ISA 3com on coreboot
- I was timeout problem with my NIC RTL8139D on iPXE: http://forum.ipxe.org/showthread.php?tid=3671
solved -> http://forum.ipxe.org/showthread.php?tid=3671&pid=9081#pid9081
but not excluded, however, that this may be a problem seabios
Regarding seabios it seems to me that the floppy drive sounds are different when working in coreboot / seabios than when working in the BIOS vendor. I noticed that sometimes after select Floppy from menu SeaBIOS, have info that Floppy drive not found while try boot from BOOT-PROM3 disk. I need power down PC then power ON and now floppy found.
Is another payload supports a floppy drive for test?
I did a log but I think that there is nothing interesting to put the full log. I put the same end of the log boot from a floppy image and floppy disk.
Succesful qemu boot from BOOT-PROM3 floppy image:
=================================================
Booting from Floppy...
Floppy_drive_recal 0
Floppy_enable_controller
i8042_command cmd=ae
i8042_wait_write
Floppy_media_sense on drive 0 found rate 0
Booting from 0000:7c00
Floppy_disable_controller
Floppy_enable_controller
Floppy_drive_recal 0
Floppy_media_sense on drive 0 found rate 0
i8042_command cmd=ae
i8042_wait_write
i8042_command cmd=ae
i8042_wait_write
Floppy_disable_controller
Floppy_enable_controller
Floppy_drive_recal 0
Floppy_media_sense on drive 0 found rate 0
=================================================
Unsuccesful boot Abit BF6 from BOOT-PROM3 floppy disk:
=========================================================================
Booting from Floppy...
Floppy_drive_recal 0
Floppy_enable_controller
Floppy_media_sense on drive 0 found rate 0
Booting from 0000:7c00
Floppy_disable_controller
Floppy_enable_controller
Floppy_drive_recal 0
Floppy_media_sense on drive 0 found rate 0
i8042_command cmd=ae
i8042_wait_write
i8042_command cmd=ae
i8042_wait_write
floppy error: 44 20 20 1c 01 0a 02
invalid basic_access:96:
a=00000200 b=00000000 c=00001c0a d=00000100 ds=5000 es=6360 ss=df80
si=00000000 di=000057c0 bp=0000001e sp=0000fd20 cs=5000 ip=0188 f=0246
=========================================================================
Recently i make full access for flashrom and now possible flash bios coreboot or vendor bios from linux. After flash vendor BIOS or coreboot bios I noticed problems with timeout while load file pxelinux.0 over gPXE from TFTP server. To reslove this problem after flash vendor bios I need go to CMOS Setup (Del) and load defaults settings.
To resolve problem after flash coreboot I need clear CMOS with jumper on board. After clear CMOS have not set RTC date and time and Debian-live over PXE not boot and have error Authentication error, '...respawning too fast: disable for 5 minutes'. This is only from Debian-live over PXE. The same Debian-live from CD boot ok. Also Debian installed on HDD boot OK. After set date and time in debian HDD like this:
date -s 2013-12-28
date -s 19:00
and reboot to debian-live from PXE the problem was gone and Debian boot OK.
I think the problem floppy error is related to the network adapter and timeout. This is not SeaBIOS fault.