Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
soc:2008:stefanha:journal:week5 [2008/06/24 05:34]
stefanha
soc:2008:stefanha:journal:week5 [2008/06/30 10:03] (current)
stefanha
Line 29: Line 29:
 **Noticed that "Linux Device Drivers, Third Edition"​ is free**. ​ See [[http://​lwn.net/​Kernel/​LDD3/​|here]]. ​ Some of the book applies to gPXE since our code is often inspired or based off the Linux kernel. **Noticed that "Linux Device Drivers, Third Edition"​ is free**. ​ See [[http://​lwn.net/​Kernel/​LDD3/​|here]]. ​ Some of the book applies to gPXE since our code is often inspired or based off the Linux kernel.
  
-Next steps: +**The b44 cannot access ​memory ​above 1 GB**.  We need a workaround that allocates descriptor rings and IO buffers ​from memory below 1 GB.  We hit this issue today when dmb tested the driver on his machine with 2 GB memory. ​ I have a temporary hack to place the gPXE heap at 4 MB into the address space. ​ Need to talk to mentors about a long term solution. 
-  ​[b44] Can DMA memory ​ever be allocated ​from >1GB? + 
-  * [b44] Cleanup & testing. +==== Wed Jun 25 ==== 
-  * [GDB] Update ​[[:dev:gdbstub|GDB stub page]] and screencast when UDP code is merged into mainline. ​ See [[http://grub.enbug.org/DebuggingWithGDB|GRUB GDB wiki page]] for inspiration+**Tested and sent bzImage patch for review**. ​ The bzImage patch updates gPXE lkrn images to a modern Linux kernel image format. ​ It also includes a fix for zImage loading in gPXE and allows Lilo to load gPXE lkrn images. 
-  * [GDB] Real-mode remote debugging.+ 
 +**Currently investigating a solution to the b44 1 GB memory limitation**. ​ Will also continue simplifying the driver. ​ While testing, dmb mentioned it downloaded images slowly so I may work on the performance I did not port the performance optimizations in the Linux driver, so there is plenty of low-hanging fruit. 
 + 
 +==== Fri Jun 27 ==== 
 +**Linux DMA mapping as a solution to driver memory constraints**. ​ The b44 driver can only access the first gigabyte of memory. ​ When I asked how to work around this limitation, mcb30 suggest looking at Linux ''​pci_map_single()''​. ​ I am going to implement something similar to manage bounce buffers for devices that cannot access gPXE's heap. 
 + 
 +==== Sat Jun 28 ==== 
 +Git commit: 
 +  * [[http://​git.etherboot.org/?​p=people/​stefanha/​gpxe.git;​a=commit;​h=3c923c79098190c12b686965d8bd48e1cedecd4d|[b44DMA mapping for device address limitations]
 +  [[http://git.etherboot.org/?​p=people/​stefanha/​gpxe.git;​a=commit;​h=87455683845a6694fdc89cf986caa50571be8ef0|[b44Fix DMA mapping]
 + 
 +**Working on DMA mapping**. ​ I have designed and implemented DMA mapping ​for gPXE, see commits above. ​ The b44 driver uses DMA mapping to work around the chip addressing limitations. ​ I am currently writing tests. 
 + 
 +I am not done with the code but wanted to commit instead of keeping this out of tree.  Before submitting the code for review I will break it up into several patches: 
 +  * **uhmalloc**,​ general-purpose external memory allocator ​Separates the ''​umalloc''​ heap from its memory allocator (which I call ''​uhmalloc''​). ​ The idea is that DMA mapping reuses ''​uhmalloc''​ to manage its DMA heap. 
 +  * **DMA mapping** for transparently managing bounce buffers when needed by hardware. ​ The DMA mapping API provides a way to structure DMA transactions. ​ If the hardware has addressing limitations and is unable to access gPXE's heap, bounce buffers are used to communicate via regions of memory that the device has access to. 
 +  * **b44 with DMA mapping**. ​ Update b44 code using DMA mapping API so it runs on machines with more than 1 GB of RAM.  This reverses the hack to place the gPXE heap at 4 MB into the physical address space. 
 + 
 +===== Next week ===== 
 +On to [[.:​week6|Week 6]]!

Navigation

* [[:start|Home]] * [[:about|About our Project]] * [[:download|Download]] * [[:screenshots|Screenshots]] * Documentation * [[:howtos|HowTo Guides]] * [[:appnotes|Application Notes]] * [[:faq:|FAQs]] * [[:doc|General Doc]] * [[:talks|Videos, Talks, and Papers]] * [[:hardwareissues|Hardware Issues]] * [[:mailinglists|Mailing lists]] * [[http://support.etherboot.org/|Bugtracker]] * [[:contributing|Contributing]] * [[:editing_permission|Wiki Edit Permission]] * [[:wiki:syntax|Wiki Syntax]] * [[:contact|Contact]] * [[:relatedlinks|Related Links]] * [[:commerciallinks|Commercial Links]] * [[:acknowledgements|Acknowledgements]] * [[:logos|Logo Art]]

QR Code
QR Code soc:2008:stefanha:journal:week5 (generated for current page)