Message ID | 20190716010956.27539-1-matthew.ruffell@canonical.com |
---|---|
Headers | show |
Series | hibmc-drm Causes Unreadable Display for Huawei amd64 Servers | expand |
On Tue, Jul 16, 2019 at 01:09:54PM +1200, Matthew Ruffell wrote: > BugLink: https://bugs.launchpad.net/bugs/1762940 > > [Impact] > > amd64 based Huawei servers have problems where the display output of their iBMC > chips is broken, resulting in a "blurry" screen when viewed from their in house > remote kvm-like console. > > Example: > > https://launchpadlibrarian.net/365907668/creen_picture_for_blur.png > > The issue is caused by the hibmc_drm kernel module being loaded. The PCI ID for > the iBMC chips on amd64 hardware is the same as arm64 hardware, but the > hibmc_drm driver was developed only for use on arm64 hardware, most notably for > the Huawei D05 development board. > > The impact to Huawei is that their customers cannot use Ubuntu server install > media as the screen goes "blurry" when the d-i install media or subuqity > installer loads the hibmc_drm kernel module after language selection. > > The only workaround for their customers is to press the "E" key during the very > first installer menu and adding "modprobe.blacklist=hibmc_drm" to the kernel > command line in the grub menu. This is not good for customer experience with > their servers. > > Other problems exist for the hibmc_drm driver on amd64, such as working on > bios, but not uefi, and not being wayland compatible, making the screen blurry > whenever a desktop session is started and gdm loaded. > > Huawei have asked us to remove hibmc_drm from all architectures except arm64, > and this aligns with advice from Hisilicon. > > [Fix] > > I modified the config/annotations file to remove all architectures except arm64, > and created a patch for Kconfig to set a firm requirement on ARM64 for hibmc_drm. > > I will send the Kconfig patch upstream in the coming days for a more permanent > fix. > > [Testcase] > > Apply the patches and run: > > ubuntu-bionic/CONFIGS$ fakeroot debian/rules genconfigs > ubuntu-bionic/CONFIGS$ grep -Rin "hibmc" . > ./arm64-config.flavour.generic:5739:CONFIG_DRM_HISI_HIBMC=m > > You should see that only arm64 has the config option enabled. > > A test kernel has been built, and is available here: > https://launchpad.net/~mruffell/+archive/ubuntu/sf232667-test > > Huawei requested a test d-i install iso to test server install with, which can > be found here and uses the kernel from the ppa above: > https://people.canonical.com/~mruffell/sf232667_ubuntu_server_d-i_20190711b1.iso > > Both the test kernel and the custom d-i install iso have been tested on amd64 > Huawei server hardware successfully and video output is functional. > > [Regression Potential] > > Regressions will be limited to hardware containing the iBMC chips from Hisilicon, > which I believe are exclusive to Huawei servers. > > I have taken care to ensure that hibmc_drm is enabled for ARM64 so it should not > impact kernels built for the Huawei D05 arm64 development board, and d-i will > still load the hibmc_drm driver during startup for arm64. Applied, with a couple of changes. I reordered the patches to add the arm64 dependency first, otherwise a bisect which lands on the commit to update the ubuntu configs will prompt for values for other architectures. I also added enforcement of the value in the annotations along with the bug number as extra protection against changing the value of this option in the future. Thanks!