mbox series

[SRU,Bionic,0/2] hibmc-drm Causes Unreadable Display for Huawei amd64 Servers

Message ID 20190716010828.27415-1-matthew.ruffell@canonical.com
Headers show
Series hibmc-drm Causes Unreadable Display for Huawei amd64 Servers | expand

Message

Matthew Ruffell July 16, 2019, 1:08 a.m. UTC
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. 



*** BLURB HERE ***

Matthew Ruffell (2):
  UBUNTU: [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only
  UBUNTU: SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64

 debian.master/config/annotations        | 2 +-
 drivers/gpu/drm/hisilicon/hibmc/Kconfig | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Paolo Pisati July 16, 2019, 7:30 a.m. UTC | #1
On Tue, Jul 16, 2019 at 01:08:26PM +1200, Matthew Ruffell wrote:
> BugLink: https://bugs.launchpad.net/bugs/1762940

Acked-by: Paolo Pisati <paolo.pisati@canonical.com>
Stefan Bader July 19, 2019, 8:38 a.m. UTC | #2
On 16.07.19 03:08, 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. 
> 
> 
> 
> *** BLURB HERE ***
> 
> Matthew Ruffell (2):
>   UBUNTU: [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only
>   UBUNTU: SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64
> 
>  debian.master/config/annotations        | 2 +-
>  drivers/gpu/drm/hisilicon/hibmc/Kconfig | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 

Same notes about abi files as for disco.

Acked-by: Stefan Bader <stefan.bader@canonical.com>
Connor Kuehl July 19, 2019, 4:04 p.m. UTC | #3
On 7/15/19 6:08 PM, 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. 
> 
> 
> 
> *** BLURB HERE ***
> 
> Matthew Ruffell (2):
>   UBUNTU: [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only
>   UBUNTU: SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64
> 
>  debian.master/config/annotations        | 2 +-
>  drivers/gpu/drm/hisilicon/hibmc/Kconfig | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 

Acked-by: Connor Kuehl <connor.kuehl@canonical.com>
Kleber Sacilotto de Souza July 23, 2019, 1:48 p.m. UTC | #4
On 7/16/19 3:08 AM, 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. 
> 
> 
> 
> *** BLURB HERE ***
> 
> Matthew Ruffell (2):
>   UBUNTU: [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only
>   UBUNTU: SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64
> 
>  debian.master/config/annotations        | 2 +-
>  drivers/gpu/drm/hisilicon/hibmc/Kconfig | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 

Applied to bionic/master-next branch, adding a note to the annotation
files with the LP bug number and removing the module from the previous
ABI modules list for non-arm64 architectures.


Thanks,
Kleber