[coreboot] Out of heap space

joe at smittys.pointclark.net joe at smittys.pointclark.net
Sat Mar 29 00:29:10 CET 2008


Quoting pyro <pyro at linuxlabs.com>:

> Greetings,
>
> It should fall back, but not everything does that properly. Just for
> checking the basic functioning, any old USB 1.1 device (keyboard, mouse,
> hub) will do to at least see that it was recognized and configured.
>
I will try that
>
> IIRC, the sequence is:
> 1. detect that a device is connected to the port
> 2. enable the port
> 3. Assign a USB ID with a setup packet
> 4. query for device type and strings
> 5. If a suitable block device, load the payload.
>
> 5 used to be a stream object (like in the old LinuxBIOS code) handed to
> a copy of the the ELF loader. the read method set up the request and
> called into the USB polling loop. I'm guessing that's
>
> One potential issue there is that control of the physical port between
> UHCI or OHCI (for 1.1) and EHCI (for 2.0) is determined by a bit in a
> register. I'm not sure what happens if it's set wrong, but I suspect it
> could look like your debug output.
>
Hmm interesting, it is UHCI....
>
> was this exact setup working before r54?
Nope. Before r54 I would get a "Out of heap space" error. So if I  
upped the HEAP_SIZE to 32k, I would get this message:

malloc_diag: alloc: 28008 bytes (9 blocks), free: 103056 bytes (1 blocks)
configure_device: configure_device: set_address failed!

> One possability is that the USB
> code always had a bug that wasn't visible when allocations were quietly
> double the requested size.
>
> G'day,
> sjames
>
>
> On Fri, 28 Mar 2008 joe at smittys.pointclark.net wrote:
>
>> Quoting pyro <pyro at linuxlabs.com>:
>>
>> > Greetings,
>> >
>> > The code has seen some changes since I wrote it that I haven't kept up
>> > with, but it never handled USB 2.0 at all other than to ignore the EHCI
>> > controller and force any devices to fall back.
>> >
>> Right, so it should just "fall back" to USB 1.1 correct?
>> >
>> > If you have an older USB device around, it may be informative to try
>> > plugging that in just to see if it gets enumerated.
>> >
>> > G'day,
>> > sjames
>> >
>> Hmm, not sure if I have any USB 1.1 drives....
>>
>> Thanks - Joe
>> >
>> > On Fri, 28 Mar 2008 joe at smittys.pointclark.net wrote:
>> >
>> >> > Can you svn up and try again?
>> >> >
>> >> After r45, it just hangs after attempting to free non-allocated memory
>> >> (see below). Help? Could this have something to do with USB 2.0?
>> >>
>> >> Booting 'uda:/isolinux/vmlinuz console=tty0 console=ttyS0,115200n8
>> >> initrd=uda:/
>> >> isolinux/initrd.img text'
>> >> malloc_diag: alloc: 312 bytes (4 blocks), free: 32448 bytes (1 blocks)
>> >> malloc_diag: alloc: 328 bytes (5 blocks), free: 32432 bytes (1 blocks)
>> >> file_open: dev=uda, path=/isolinux/vmlinuz
>> >> LinuxLabs USB bootloader
>> >> uhc_init: Found UHCI at 28c0
>> >> uhc_reset: Resetting UHCI
>> >> uhc_init: uhc_init setting framelist to: 076b9000
>> >> uhc_start: Starting UHCI
>> >> dump_uhci: HCI at 000028c0
>> >> uhc_init: Found UHCI at 28e0
>> >> uhc_reset: Resetting UHCI
>> >> uhc_init: uhc_init setting framelist to: 076b9000
>> >> uhc_start: Starting UHCI
>> >> dump_uhci: HCI at 000028e0
>> >> uhc_init: Found UHCI at 2c00
>> >> uhc_reset: Resetting UHCI
>> >> uhc_init: uhc_init setting framelist to: 076b9000
>> >> uhc_start: Starting UHCI
>> >> dump_uhci: HCI at 00002c00
>> >> malloc_diag: alloc: 8536 bytes (6 blocks), free: 24224 bytes (1 blocks)
>> >> init_framelist: frame_list is at 13b000
>> >> dump_link: frame_list_link: addr: 0012ec70
>> >> dump_link: frame_list_link:  raw addr: 77e7c70
>> >> dump_link: frame_list_link: terminate: 0
>> >> dump_link: frame_list_link: queue: 1
>> >> dump_link: frame_list_link: depth: 0
>> >> malloc_diag: alloc: 16744 bytes (7 blocks), free: 16016 bytes (1 blocks)
>> >> init_framelist: frame_list is at 13d000
>> >> dump_link: frame_list_link: addr: 0012ec90
>> >> dump_link: frame_list_link:  raw addr: 77e7c90
>> >> dump_link: frame_list_link: terminate: 0
>> >> dump_link: frame_list_link: queue: 1
>> >> dump_link: frame_list_link: depth: 0
>> >> malloc_diag: alloc: 24952 bytes (8 blocks), free: 7808 bytes (1 blocks)
>> >> init_framelist: frame_list is at 13f000
>> >> dump_link: frame_list_link: addr: 0012ecb0
>> >> dump_link: frame_list_link:  raw addr: 77e7cb0
>> >> dump_link: frame_list_link: terminate: 0
>> >> dump_link: frame_list_link: queue: 1
>> >> dump_link: frame_list_link: depth: 0
>> >> malloc_diag: alloc: 26536 bytes (9 blocks), free: 6224 bytes (1 blocks)
>> >> poll_usb: poll_usb1 i=0	poll_u_root_hub1 v=00001080	poll_u_root_hub1
>> >> v=00001083	poll_u_root_hub2 v=00001083	poll_u_root_hub21
>> >> v=00001083	Connection on port 28d2
>> >> New USB device, setting address 2
>> >> uhci_control_msg: uhci_control_msg: request_type = 0 request = 5  
>>  wLength=0
>> >> malloc_diag: alloc: 30648 bytes (10 blocks), free: 2112 bytes (1 blocks)
>> >> dump_uhci: HCI at 000028c0
>> >> dump_td: failed_transaction: TD(0012fcc0):
>> >> dump_td: failed_transaction: type: SETUP
>> >> dump_td: failed_transaction: retries: 3
>> >> dump_td: failed_transaction: IOC
>> >> dump_td: failed_transaction: active: 0001
>> >> dump_td: failed_transaction: device_addr: 00
>> >> dump_td: failed_transaction: endpoint: 0
>> >> dump_td: failed_transaction: data_toggle: 0
>> >> dump_td: failed_transaction: max_transfer: 7
>> >> dump_td: failed_transaction: actual: 0
>> >> dump_td: failed_transaction: link:
>> >> dump_link: 	failed_transaction: addr: 0012fce0
>> >> dump_link: 	failed_transaction:  raw addr: 77e8ce0
>> >> dump_link: 	failed_transaction: terminate: 0
>> >> dump_link: 	failed_transaction: queue: 0
>> >> dump_link: 	failed_transaction: depth: 0
>> >> dump_td: failed_transaction: TD(0012fce0):
>> >> dump_td: failed_transaction: type: IN
>> >> dump_td: failed_transaction: retries: 0
>> >> dump_td: failed_transaction: active: 0001
>> >> dump_td: failed_transaction: device_addr: 00
>> >> dump_td: failed_transaction: endpoint: 0
>> >> dump_td: failed_transaction: data_toggle: 1
>> >> dump_td: failed_transaction: max_transfer: 7ff
>> >> dump_td: failed_transaction: actual: 0
>> >> dump_td: failed_transaction: link:
>> >> dump_link: 	failed_transaction: addr: f8947000
>> >> dump_link: 	failed_transaction:  raw addr: 0000
>> >> dump_link: 	failed_transaction: terminate: 1
>> >> dump_link: 	failed_transaction: queue: 0
>> >> dump_link: 	failed_transaction: depth: 0
>> >> Attempt to free non-allocated memory: 001417fc


Thanks - Joe




More information about the coreboot mailing list