WorkingTipsOnUpgradingSG1DriverCentOS1810.qcow2
Aug 29, 2022
Technology
VM
Import new image:
Name it:
Upgrade kernel to 4.19.12:
$ ls
kernel-4.19.12-1.x86_64.rpm kernel-devel-4.19.12-1.x86_64.rpm kernel-headers-4.19.12-1.x86_64.rpm kmod-ukmd-4.19.12-20212.el7.x86_64.rpm
$ rpm -ivh *.rpm
$ vi /etc/default/grub
Changed to 4.19.12 kernel
$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo reboot
Change the repository using iso:
# mount /dev/sr0 /mnt
# cat /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
# yum makecache
Using official install-sg1.sh
for installing to 4.19.112 kernel for fetching the dependencies.
Merge steps
安装官方驱动的过程中会编译出相应的文件,需要按照以下步骤进行更改:
# mkdir /root/merge
# cp /root/rpmbuild/SRPMS/kmod-ukmd-4.19.112-20413.el7.centos.src.rpm /root/merge
# cd /root/merge
# mkdir kmod-ukmd-4.19.12.cpio
# cd kmod-ukmd-4.19.12.cpio
# rpm2cpio ../kmod-ukmd-4.19.112-20413.el7.centos.src.rpm | cpio -idmv
# ls
dg1_dmc_ver2_02.bin dg1_guc_49.0.1.bin dg1_huc_7.9.5.bin kmod.spec kmod-ukmd-4.19.112.tar.gz
# tar xzvf kmod-ukmd-4.19.112.tar.gz
# mv kmod-ukmd-4.19.112 kmod-ukmd-4.19.12
# vim kmod.spec
Change 4.19.112->4.19.12
# vim kmod-ukmd-4.19.12/kmod.spec
Change 4.19.112->4.19.12
# cp /usr/src/kernels/4.19.12/drivers/gpu/drm/drm_edid.c kmod-ukmd-4.19.12/orig/drivers/gpu/drm/
# cp /usr/src/kernels/4.19.12/drivers/gpu/drm/drm_probe_helper.c kmod-ukmd-4.19.12/orig/drivers/gpu/drm/
# cp /usr/src/kernels/4.19.12/drivers/gpu/drm/drm_vblank.c kmod-ukmd-4.19.12/orig/drivers/gpu/drm/
# mv kmod-ukmd-4.19.112.tar.gz /tmp
# tar czvf kmod-ukmd-4.19.12.tar.gz kmod-ukmd-4.19.12
# rm -rf kmod-ukmd-4.19.12
# ls
dg1_dmc_ver2_02.bin dg1_guc_49.0.1.bin dg1_huc_7.9.5.bin kmod.spec kmod-ukmd-4.19.12.tar.gz
# cd ..
# tar czvf kmod-ukmd-4.19.12.cpio.tar.gz kmod-ukmd-4.19.12.cpio
# ls
kmod-ukmd-4.19.112-20413.el7.centos.src.rpm kmod-ukmd-4.19.12.cpio kmod-ukmd-4.19.12.cpio.tar.gz
# mv /root/rpmbuild/SOURCES/ /root/rpmbuild/SOURCES.back && mkdir -p /root/rpmbuild/SOURCES/
# cp -ar /root/merge/kmod-ukmd-4.19.12.cpio/* /root/rpmbuild/SOURCES
# cd /root/rpmbuild/SOURCES
# vim /usr/src/kernels/4.19.12/include/linux/math64.h
在文件末尾倒数第二行添加
.....
#endif /* mul_u64_u32_div */
+++++ #define DIV64_U64_ROUND_UP(ll, d) \
+++++ ({ u64 _tmp = (d); div64_u64((ll) + _tmp - 1, _tmp); })
#endif /* _LINUX_MATH64_H */
# rpmbuild -bb kmod.spec
# ls /root/rpmbuild/RPMS/x86_64
kmod-ukmd-4.19.12-20413.el7.centos.x86_64.rpm
Verification
Install any 4.19.12 kernel, test the package kmod-ukmd-4.19.12-20413.el7.centos.x86_64.rpm
.
$ ls /dev/dri/
card0 renderD128
$ lsmod | grep i915
i915_spi 20480 0
mtd 57344 5 i915_spi
i915 1933312 0
drm_ukmd_kms_helper 188416 1 i915
drm_ukmd 495616 3 drm_ukmd_kms_helper,i915
drm_ukmd_compat 98304 3 drm_ukmd_kms_helper,i915,drm_ukmd
video 40960 1 i915
i2c_algo_bit 16384 1 i915
cec 45056 1 i915
mfd_core 16384 2 lpc_ich,i915
Examine the kernel demsg:
$ sudo dmesg | grep drm
[sudo] password for ctctest:
[ 7.776406] drm: loading out-of-tree module taints kernel.
[ 7.800836] Initialized drm/i915 compat module 20160105
[ 7.892916] [drm] i915 backporting
[ 7.893701] [drm] Intel graphics LMEM: [mem 0x00000000-0x1fb7fffff]
[ 7.893702] [drm] Intel graphics LMEM IO start: a00000000
[ 7.893702] [drm] Intel graphics LMEM size: 1fb800000
[ 7.893714] [drm] Intel graphics stolen LMEM: [mem 0x1fc000000-0x1ffffffff]
[ 7.893714] [drm] Intel graphics stolen LMEM IO start: bfc000000
[ 7.895015] i915 0000:07:00.0: [drm] Couldn't get system memory bandwidth
[ 7.895053] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 7.895054] [drm] Driver supports precise vblank timestamp query.
[ 7.971850] i915 0000:07:00.0: [drm] Finished loading DMC firmware i915/dg1_dmc_ver2_02.bin (v2.2)
[ 7.994442] [drm] GuC communication enabled
[ 7.999403] i915 0000:07:00.0: [drm] GuC firmware i915/dg1_guc_49.0.1.bin version 49.0 submission:disabled
[ 7.999405] i915 0000:07:00.0: [drm] HuC firmware i915/dg1_huc_7.9.5.bin version 7.9 authenticated:yes
[ 8.001958] [drm] Initialized i915 1.6.0 20220718-8a58be7 for 0000:07:00.0 on minor 0
[ 8.003950] i915 0000:07:00.0: [drm] Cannot find any crtc or sizes