About Brace Computer Laboratory (BCL) Blog

Brace Computer Laboratory (BCL) blog writes primarily about the following computer / electronics related topics. · Open source software development, with a particular emphasis on graphics stack development like DDX (Device Dependent X) and DRM (Direct Rendering Manager) device drivers for Unix like OSes (i.e., Linux and BSD) · Electronics repair, particularly computer related · Reviews about the computer hardware related to open source software development projects For all practical purposes, BCL blog is Kevin Brace's personal blog related to computer / electronics. As for myself, I am a self taught electronic hardware developer with specializations in external memory (DRAM) controller design and I/O subsystem (PCI and PCI Express) controller design. I am also quite experienced with Xilinx FPGA. I am fluent in Verilog HDL and VHDL based design (both RTL and verification, but prefer RTL). I decided to start this blog to publicize my open source software development projects I work on, but also to raise funds to support my open source software development projects. I specialize in developing code for underserved (i.e., old and neglected) graphics devices. At this time, I primarily work on OpenChrome (community developed device driver stack for VIA Technologies integrated graphics). I maintain (testing and code release) and develop OpenChrome. I also plan to develop code for other underserved graphics devices in the near future as well.

Regarding the rewrite of GEM / TTM memory allocator

Some of you who have been monitoring the development of OpenChrome graphics stack may have noticed the slow down in the development over the past few months.  To be honest, there were some personal reasons for this, but I will not want to go into details.  The other reason why the development pace has slowed down is due to myself forcing to work solely on the new GEM / TTM memory allocator as discussed in this blog post.  I am working on this matter slowly since I am trying to understand what the code will be doing before I write the code.

OpenChrome DRM drm-next-4.20 branch is working again

Last month, I posted 2 posts (here and here) on this blog regarding the state of OpenChrome DRM drm-next-4.20 branch.  Although I initially suspected I2C bus helper service to be the suspect, after some testing, I started to suspect something within the DRM core was causing the issue.  Unfortunately, I was not able to track down the suspect commit of DRM core even though I did try several times.

I tried Linux 4.19 rc2 from DRM subsystem repository several weeks ago, but that did not resolve the issue.  I just tried Linux 4.19 rc5 from DRM subsystem repository now, and this time around, OpenChrome DRM is working again!  Basically, I had to live with the bleeding edge of OpenChrome DRM not working for about 2 1/2 months.  It was really frustrating when someone else causes a problem that I have little control over it, but I am happy I am now out of this long tunnel.


Update on the broken OpenChrome DRM drm-next-4.20 branch

I still have not figured out why the OpenChrome DRM drm-next-4.20 branch is not working.  Looked at I2C bus subsystem related code commit, but could not really find a commit that will cause a crash like what I observed.  As an experiment, played around with Linux 4.18 rc6 to see how it will perform.  The good news is that this version is working, and in fact, I am writing this post from the computer I used to compile the code (VIA Embedded EPIA-M830 with VIA Nano 1 GHz).  I will test Linux 4.18 rc7 shortly.  Since I went back to performing full compilation, it might take a few hours to compile the code and test it.

OpenChrome DRM drm-next-4.20 branch is currently broken

I moved the OpenChrome DRM development into drm-next-4.20 branch more than a week ago, but I discovered that when OpenChrome DRM is being used, it can no longer boot the OS.

The reason for this is due to a strange bug introduced by I2C bus subsystem device driver between Linux 4.18 rc4 and rc7.  The matter was not resolved by upgrading to Linux 4.19 rc1.  I have tried to find the offending commit of I2C bus subsystem, but I am not able to find the bad commit so far.  I contacted the I2C bus subsystem maintainer, but he denied that “core” I2C bus subsystem device driver has changed recently.  Generally speaking, the I2C bus subsystem maintainer did not show much interest in the issue when I reported the issue to him directly via e-mail.  I guess I will have to go bisect the issue myself.

Status of legacy graphics stack development project (June / July 2018)

Similar to what I usually do with OpenChrome Project, I will start giving end of the month summary of what happened with what I will call, “legacy graphics stack development project.”  For now, this will mainly mean ATI Technologies RAGE 128, but it will likely expand into other devices down the road.

In June, I decided to start working on ATI Technologies RAGE 128.  This was due to RAGE 128 having good technical documentation and the device driver has limited device support scope.  Some time in early July, I was able to commit code myself.  At the present time, I am focused on code refactoring (mainly initialization code) and fixing standby resume.  I am starting to learn how the EXA code works in order to figure out why the EXA code renders some junk on the screen sometimes.

In addition to that, I went ahead and released xf86-video-r128 Version 6.11.  It fixes a bug that causes some RAGE 128 Pro models to output out of range signal to the monitor.  At this rate, I think it will take several months before I can fix one significant bug of RAGE 128 DDX.

Status of OpenChrome Project (June / July 2018)

I missed reporting the status of OpenChrome Project for June 2018, so I will make it up, and combine it with the July 2018 edition.

Ever since I started to work on developing ATI Technologies RAGE 128 graphics stack, inevitably, the time dedicated to developing OpenChrome graphics stack went down quite a bit.  I must admit that I am personally pretty bad at handling multiple tasks, so as a result, vast majority of the time went into working on RAGE 128 graphics stack, particularly xf86-video-r128 (RAGE 128 DDX).  You can verify this from RAGE 128 DDX commit log.

Anyway, I still managed to get a few things done with OpenChrome.  I helped figure out why standby resume was not working properly on Samsung NC20 netbook when Xubuntu 18.04 is used.  Also, I managed to fix VGA display issue of ECS VX900-I and VIA Embedded VE-900 mainboards when VGA and HDMI are both connected.  Furthermore, I found a remedy for VIA Embedded EPIA-M830 not restoring the display properly after standby resume.  OpenChrome DRM got the fix, but have not committed the fix for OpenChrome DDX yet due to personal laziness.  Please note that VIA Embedded EPIA-M830 still suffers from a different standby resume issue (complete freeze), and I do not think it is OpenChrome related (OpenChrome DDX and DRM are both affected).

I auctioned off VIA Embedded EPIA-M800 mainboard in June, but unfortunately, it got destroyed during transit (USPS Priority Mail).  There was a hole that penetrated even the VIA Embedded box inside a USPS Priority Mail flat rate box, and badly damaged the mainboard. If the seller packed the box better, that might have saved the mainboard.  It was insured, so I got the money back.  I was hoping to test its integrated DVI transmitter (some early revisions of VX800 chipset contained a TMDS transmitter to support DVI), but it may never happen.

The last item to report is that I restarted the development of GEM / TTM memory allocator code.  I hope to put more time into developing OpenChrome next month.