You are not logged in.
hallo had test the new 5.4 kernel and see that xrandr --prop show my that prime synchronization is 0 on my eDP-1-1 output.
i dont test it with 5.4.1 any had experience
Last edited by damachine (2019-11-29 16:08:21)
Offline
i can confirm this, both the 5.4 mainline and another machine with manjaro 5.4 kernel breaks prime sync. it's been this way from the start with 5.4
EDIT: seems every 5.4 kernel i've tested has this problem with prime sync. arch 5.4, zen 5.4, manjaro's 5.4
Last edited by dglt (2019-12-04 16:07:41)
Offline
I meet the same problem. Then I switch to PRIME_Render_Offload, by installing https://aur.archlinux.org/packages/prime/ and editing xorg conf.
Now the tearing disappear while
xrandr --verbose|grep PRIME
output nothing.
Offline
I meet the same problem. Then I switch to PRIME_Render_Offload, by installing https://aur.archlinux.org/packages/prime/ and editing xorg conf.
Now the tearing disappear while
xrandr --verbose|grep PRIME
output nothing.
hallo is multihead working for you. or is it possible you can test it and give me a little report. thanks
Offline
hallo is multihead working for you. or is it possible you can test it and give me a little report. thanks
render-offload does not support external displays unless that external port is wired directly to the intel gpu and in most cases they are not.
Offline
qifei9 wrote:I meet the same problem. Then I switch to PRIME_Render_Offload, by installing https://aur.archlinux.org/packages/prime/ and editing xorg conf.
Now the tearing disappear while
xrandr --verbose|grep PRIME
output nothing.
hallo is multihead working for you. or is it possible you can test it and give me a little report. thanks
I use my laptop and another Monitor connected to the laptop by HDMI. Currently, the laptop monitor and the external monitor work fine together.
Last edited by qifei9 (2019-12-06 08:11:30)
Offline
I have the same problem. Did not manage to fix tearing on Xorg. On the other hand, wayland (sway) works with proprietary drivers and there is no tearing.
Last edited by Garzet (2019-12-06 10:08:30)
Offline
Is there going to be a fix for this, should it be reported to the linux kernel devs?
Offline
not sure if it's reported to kernel devs but i just reported it to nvidia which i thought i already did weeks ago but i guess not.
Offline
maybe someone could make sense of this but im told support for prime sync has been dropped upstream for 5.4 kernel
https://www.collabora.com/news-and-blog … l-5.4.html
https://forum.manjaro.org/t/issues-with … /15?u=dglt
Last edited by dglt (2019-12-08 19:48:26)
Offline
So can we assume that PRIME enabled laptops will be plagued by tearing on all kernels >= 5.4? It seems rather odd that such a large feature would get dropped like this without some sort of remedy.
Offline
It seems rather odd that such a large feature would get dropped like this without some sort of remedy.
thats just it, in some twisted way they must think render offload is actually a suitable replacement and it's not. not even close.
Offline
@dglt I think you are inferring from the removal of gem_prime_res_obj hook that prime was dropped rather than just that function.
I do not believe that to be the case see https://git.kernel.org/pub/scm/linux/ke … e.c?h=v5.4
Edit:
You could also check 5.5-rc1 / drm-tip or bisect between 5.3 and 5.4
Last edited by loqs (2019-12-08 23:32:03)
Offline
@dglt I think you are inferring from the removal of gem_prime_res_obj hook that prime was dropped rather than just that function.
I do not believe that to be the case see https://git.kernel.org/pub/scm/linux/ke … e.c?h=v5.4
Edit:
You could also check 5.5-rc1 / drm-tip or bisect between 5.3 and 5.4
i hope i was informed incorrectly by @philm (manjaro) and that your right, unfortunately i'm not proficient enough in kernel to make sense of those links you provided. prime is the only reliable setup for optimus laptops, it can work without prime sync but it certainly works better with it. thanks for the response
Offline
I can confirm terrible tearing with kernel 5.4 and proprietary Nvidia driver. Not only this, but the whole performance is terrible, even the movement of mouse cursor is noticeably slower and jittery. However, I'm only experiencing this while using external monitor together with the laptop monitor. When using only laptop monitor everything runs smoothly.
Offline
You could try bisecting between 5.3 and 5.4 to find the causal commit.
The following assumes the base-devel group and git are installed and I recomend enabling Makepkg#Parallel_compilation to reduce build times
$ git clone git://git.archlinux.org/svntogit/packages.git --single-branch --branch "packages/linux"
$ cd packages/trunk
$ git checkout aa1b1a59ce1cb67d95021c26b24739d1e648a553 #5.3.31.arch1-1
$ cd ../..
$ cp -r packages/trunk linux-git
$ rm -rf packages
$ cd linux-git
# Edit replace the PKGBUILD with the one below
$ makepkg -rsi #This is to confirm 5.3 as built on your system does not have the issue.
There should be one config change for USB_RIO500 which was dropped in 5.3.7 select the default.
This build may take a very long time.
Update bootloader for new kernel if needed
$ cd linux-git/src/linux
$ git checkout v5.4
$ cd ../..
$ makepkg -ersi #This is to confirm 5.4 as built on your system does have the issue select the default option for all prompted options
Start bisection
$ cd linux-git/src/linux/
$ git bisect start
$ git bisect good v5.3
$ git bisect bad v5.4
$ cd ../..
$ makepkg -ersif
Bisection loop
$ cd linux-git/src/linux/
$ git bisect $result #Substitue good or bad here
$ cd ../..
$ makepkg -ersif #Repeat these four lines and test the generated kernel until git has found the bad commit
PKGBUILD
# Maintainer: Boohbah <boohbah at gmail.com>
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Contributor: Jonathan Chan <jyc@fastmail.fm>
# Contributor: misc <tastky@gmail.com>
# Contributor: NextHendrix <cjones12 at sheffield.ac.uk>
pkgbase=linux-git
_srcname=linux
pkgver=5.3.r0.g4d856f72c10e
pkgrel=1
arch=('x86_64')
url="https://www.kernel.org/"
license=('GPL2')
makedepends=('kmod' 'inetutils' 'bc' 'libelf' 'git')
options=('!strip')
source=('git+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git#tag=v5.3'
#'git+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git#tag=vX.X.Y'
'config' # the main kernel config file
)
sha256sums=('SKIP'
'10ee7800902b1d82f9c184b367c9d904f4dc48f6d9ce3277327e825d7ab690d1')
_kernelname=${pkgbase#linux}
pkgver() {
cd $_srcname
git describe --long | sed -E 's/^v//;s/([^-]*-g)/r\1/;s/-/./g;s/\.rc/rc/'
}
prepare() {
cd ${_srcname}
cp -Tf ../config .config
# set localversion to git commit
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
sed -i "s|^.*CONFIG_LOCALVERSION_AUTO.*|CONFIG_LOCALVERSION_AUTO=y|" ./.config
# get kernel version
make prepare
# load configuration
# Configure the kernel. Replace the line below with one of your choice.
#make menuconfig # CLI menu for configuration
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
#make olddefconfig # old config from previous kernel, defaults for new options
# ... or manually edit .config
}
build() {
cd $_srcname
make LOCALVERSION= bzImage modules
}
_package() {
pkgdesc="The Linux kernel and modules (git version)"
depends=('coreutils' 'linux-firmware' 'kmod' 'initramfs')
optdepends=('crda: to set the correct wireless channels of your country')
cd ${_srcname}
# get kernel version
_kernver="$(make LOCALVERSION= kernelrelease)"
_basekernel=${_kernver%%-*}
_basekernel=${_basekernel%.*}
local _modulesdir="$pkgdir/usr/lib/modules/$_kernver"
install -Dm644 "$(make -s image_name)" "$_modulesdir/vmlinuz"
# Used by mkinitcpio to name the kernel
echo "$pkgbase" | install -Dm644 /dev/stdin "$_modulesdir/pkgbase"
make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}/usr" modules_install
# make room for external modules
local _extramodules="extramodules-${_basekernel}${_kernelname:--ARCH}"
ln -s "../${_extramodules}" "${pkgdir}/usr/lib/modules/${_kernver}/extramodules"
# add real version for building modules and running depmod from hook
echo "${_kernver}" |
install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modules/${_extramodules}/version"
# remove build and source links
rm "${pkgdir}"/usr/lib/modules/${_kernver}/{source,build}
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for Linux kernel (git version)"
cd $_srcname
local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
install -Dt "$_builddir" -m644 .config Makefile Module.symvers
install -Dt "$_builddir/kernel" -m644 kernel/Makefile
install -Dt "$_builddir/arch/x86" -m644 arch/x86/Makefile
cp -t "$_builddir" -a scripts
# add objtool for external module building and enabled VALIDATION_STACK option
install -Dt "$_builddir/tools/objtool" tools/objtool/objtool
# add xfs and shmem for aufs building
mkdir -p "$_builddir"/{fs/xfs,mm}
cp -t "$_builddir" -a include
cp -t "$_builddir/arch/x86" -a arch/x86/include
install -Dt "$_builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
install -Dt "$_builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$_builddir/net/mac80211" -m644 net/mac80211/*.h
# http://bugs.archlinux.org/task/13146
install -Dt "$_builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# http://bugs.archlinux.org/task/20402
install -Dt "$_builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$_builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$_builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
# copy in Kconfig files
find . -name 'Kconfig*' -exec install -Dm644 {} "$_builddir/{}" \;
# remove unneeded architectures
local _arch
for _arch in "$_builddir"/arch/*/; do
[[ ${_arch} == */x86/ ]] && continue
echo "Removing $(basename "$_arch")"
rm -r "$_arch"
done
# remove files already in linux-docs package
rm -r "$_builddir/Documentation"
echo "Removing broken symlinks..."
find -L "$_builddir" -type l -printf 'Removing %P\n' -delete
# strip scripts directory
local _binary _strip
while read -rd '' _binary; do
case "$(file -bi "$_binary")" in
*application/x-sharedlib*) _strip="$STRIP_SHARED" ;; # Libraries (.so)
*application/x-archive*) _strip="$STRIP_STATIC" ;; # Libraries (.a)
*application/x-executable*) _strip="$STRIP_BINARIES" ;; # Binaries
*) continue ;;
esac
/usr/bin/strip $_strip "$_binary"
done < <(find "$_builddir/scripts" -type f -perm -u+w -print0 2>/dev/null)
# Fix permissions
chmod -R u=rwX,go=rX "${_builddir}"
}
pkgname=("$pkgbase" "$pkgbase-headers")
for _p in ${pkgname[@]}; do
eval "package_$_p() {
$(declare -f "_package${_p#$pkgbase}")
_package${_p#$pkgbase}
}"
done
# vim:set ts=8 sts=2 sw=2 et:# Maintainer: Boohbah <boohbah at gmail.com>
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Contributor: Jonathan Chan <jyc@fastmail.fm>
# Contributor: misc <tastky@gmail.com>
# Contributor: NextHendrix <cjones12 at sheffield.ac.uk>
pkgbase=linux-git
_srcname=linux
pkgver=5.3.r0.g4d856f72c10e
pkgrel=1
arch=('x86_64')
url="https://www.kernel.org/"
license=('GPL2')
makedepends=('kmod' 'inetutils' 'bc' 'libelf' 'git')
options=('!strip')
source=('git+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git#tag=v5.3'
#'git+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git#tag=vX.X.Y'
'config' # the main kernel config file
)
_kernelname=${pkgbase#linux}
pkgver() {
cd $_srcname
git describe --long | sed -E 's/^v//;s/([^-]*-g)/r\1/;s/-/./g;s/\.rc/rc/'
}
prepare() {
cd ${_srcname}
cp -Tf ../config .config
# set localversion to git commit
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
sed -i "s|^.*CONFIG_LOCALVERSION_AUTO.*|CONFIG_LOCALVERSION_AUTO=y|" ./.config
# get kernel version
make prepare
# load configuration
# Configure the kernel. Replace the line below with one of your choice.
#make menuconfig # CLI menu for configuration
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
#make olddefconfig # old config from previous kernel, defaults for new options
# ... or manually edit .config
}
build() {
cd $_srcname
make LOCALVERSION= bzImage modules
}
_package() {
pkgdesc="The Linux kernel and modules (git version)"
depends=('coreutils' 'linux-firmware' 'kmod' 'initramfs')
optdepends=('crda: to set the correct wireless channels of your country')
cd ${_srcname}
# get kernel version
_kernver="$(make LOCALVERSION= kernelrelease)"
_basekernel=${_kernver%%-*}
_basekernel=${_basekernel%.*}
local _modulesdir="$pkgdir/usr/lib/modules/$_kernver"
install -Dm644 "$(make -s image_name)" "$_modulesdir/vmlinuz"
# Used by mkinitcpio to name the kernel
echo "$pkgbase" | install -Dm644 /dev/stdin "$_modulesdir/pkgbase"
make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}/usr" modules_install
# make room for external modules
local _extramodules="extramodules-${_basekernel}${_kernelname:--ARCH}"
ln -s "../${_extramodules}" "${pkgdir}/usr/lib/modules/${_kernver}/extramodules"
# add real version for building modules and running depmod from hook
echo "${_kernver}" |
install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modules/${_extramodules}/version"
# remove build and source links
rm "${pkgdir}"/usr/lib/modules/${_kernver}/{source,build}
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for Linux kernel (git version)"
cd $_srcname
local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
install -Dt "$_builddir" -m644 .config Makefile Module.symvers
install -Dt "$_builddir/kernel" -m644 kernel/Makefile
install -Dt "$_builddir/arch/x86" -m644 arch/x86/Makefile
cp -t "$_builddir" -a scripts
# add objtool for external module building and enabled VALIDATION_STACK option
install -Dt "$_builddir/tools/objtool" tools/objtool/objtool
# add xfs and shmem for aufs building
mkdir -p "$_builddir"/{fs/xfs,mm}
cp -t "$_builddir" -a include
cp -t "$_builddir/arch/x86" -a arch/x86/include
install -Dt "$_builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
install -Dt "$_builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$_builddir/net/mac80211" -m644 net/mac80211/*.h
# http://bugs.archlinux.org/task/13146
install -Dt "$_builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# http://bugs.archlinux.org/task/20402
install -Dt "$_builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$_builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$_builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
# copy in Kconfig files
find . -name 'Kconfig*' -exec install -Dm644 {} "$_builddir/{}" \;
# remove unneeded architectures
local _arch
for _arch in "$_builddir"/arch/*/; do
[[ ${_arch} == */x86/ ]] && continue
echo "Removing $(basename "$_arch")"
rm -r "$_arch"
done
# remove files already in linux-docs package
rm -r "$_builddir/Documentation"
echo "Removing broken symlinks..."
find -L "$_builddir" -type l -printf 'Removing %P\n' -delete
# strip scripts directory
local _binary _strip
while read -rd '' _binary; do
case "$(file -bi "$_binary")" in
*application/x-sharedlib*) _strip="$STRIP_SHARED" ;; # Libraries (.so)
*application/x-archive*) _strip="$STRIP_STATIC" ;; # Libraries (.a)
*application/x-executable*) _strip="$STRIP_BINARIES" ;; # Binaries
*) continue ;;
esac
/usr/bin/strip $_strip "$_binary"
done < <(find "$_builddir/scripts" -type f -perm -u+w -print0 2>/dev/null)
# Fix permissions
chmod -R u=rwX,go=rX "${_builddir}"
}
pkgname=("$pkgbase" "$pkgbase-headers")
for _p in ${pkgname[@]}; do
eval "package_$_p() {
$(declare -f "_package${_p#$pkgbase}")
_package${_p#$pkgbase}
}"
done
# vim:set ts=8 sts=2 sw=2 et:
Offline
5.3 is done, as expected everything works. working on 5.4 now.
@loqs , thanks for the bisect instructions, i've never done it before but so far so good.
update:
built 5.3 works fine, built 5.4 does not. 5.4 breaks prime sync, iwlwifi, touchpad (5.4 is the first kernel that's ever broken wifi/touchpad on this device)
the first bisect done according to the commands you provided produced a kernel that would not boot, many errors then locks up. no tty.
im on bisect loop part now and thats building, one thing im uncertain about is should i be seeing a 5.4 kernel being built or a 5.3 kernel being built?
if i understand correctly it's building the 5.3 kernel with 5.4 commits to find the problem commit? this was from the latest bisect thats currently building
~/.../src/linux >>> git bisect bad ±[v5.4-rc1~110]
Bisecting: 3920 revisions left to test after this (roughly 12 steps)
[fe38bd6862074c0a2b9be7f31f043aaa70b2af5f] Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Last edited by dglt (2019-12-12 16:34:56)
Offline
You could try bisecting between 5.3 and 5.4 to find the causal commit.
well i at least have a better appreciation for prebuilt kernels. i finished the bisect but im not sure if i did it right or not, if the kernel failed to boot or if prime sync was broken i would
git bisect bad
and start the loop again. the only "bad" results i had to report were from failure to boot, on every kernel that would boot i had working prime sync.
i documented the best i could on each build and i put the results at the bottom. it's not very clean documentation but i wasnt sure what was needed and im not sure the results help in any way but then again this is new territory for me.
edit: pastebin was incorrect, fixed.
Last edited by dglt (2019-12-13 21:06:19)
Offline
The second kernel you built should have a 5.4 version number the rest of the kernels should be either 5.3 or a 5.4rc.
Do the touchpad and WiFi work in the 5.4 arch kernel packages?
5.3.0-git-07593-ge6bc9de71497
NO WIFI***
PRIME SYNC WORKING
TOUCHPAD WORKING
#//////////
~/.../src/linux >>> git bisect good ±[v5.4-rc1~121
Bisecting: 119 revisions left to test after this (roughly 7 steps)
[7e3d2c8210e67ebff472a0b371bb0efb4236ef52] Merge tag '5.4-smb3-fixes' of git://git.samba.org/sfrench/cifs-2.6
#^^^ KERNEL WILL NOT BOOT ^^^
#///////////
~/.../src/linux >>> git bisect bad
Bisecting: 61 revisions left to test after this (roughly 6 steps)
I think the bisection went wrong on this none booting kernel.
I should have included extra instructions for a such a situation as well as marking a commit good or bad there is `git skip` which asks git to pick another commit to test.
Edit:
You can use git bisect replay logfile where logfiles contains the following (output from git bisect log with the commit after the none booting commit removed)
git bisect start
# bad: [219d54332a09e8d8741c1e1982f5eae56099de85] Linux 5.4
git bisect bad 219d54332a09e8d8741c1e1982f5eae56099de85
# good: [4d856f72c10ecb060868ed10ff1b1453943fc6c8] Linux 5.3
git bisect good 4d856f72c10ecb060868ed10ff1b1453943fc6c8
# good: [4d856f72c10ecb060868ed10ff1b1453943fc6c8] Linux 5.3
git bisect good 4d856f72c10ecb060868ed10ff1b1453943fc6c8
# bad: [a9f8b38a071b468276a243ea3ea5a0636e848cf2] Merge tag 'for-linus-5.4-1' of git://github.com/cminyard/linux-ipmi
git bisect bad a9f8b38a071b468276a243ea3ea5a0636e848cf2
# good: [fe38bd6862074c0a2b9be7f31f043aaa70b2af5f] Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
git bisect good fe38bd6862074c0a2b9be7f31f043aaa70b2af5f
# good: [069841ef8293697e951c34f9a45601b77fb541d7] Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
git bisect good 069841ef8293697e951c34f9a45601b77fb541d7
# good: [6cfae0c26b21dce323fe8799b66cf4bc996e3565] Merge tag 'char-misc-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
git bisect good 6cfae0c26b21dce323fe8799b66cf4bc996e3565
# good: [81160dda9a7aad13c04e78bb2cfd3c4630e3afab] Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
git bisect good 81160dda9a7aad13c04e78bb2cfd3c4630e3afab
# good: [e6bc9de714972cac34daa1dc1567ee48a47a9342] Merge tag 'vfs-5.4-merge-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
git bisect good e6bc9de714972cac34daa1dc1567ee48a47a9342
I would suggest b2ad978fd00467e8109918849a817018aaaeed19 this is the parent of https://github.com/torvalds/linux/commi … 1fd59eff3a
If this is good and 51c98747113e93b6229f12d1a744a51fd59eff3a then removing gem_prime_res_obj did break the nvidia drivers use of prime.
git bisect skip b2ad978fd00467e8109918849a817018aaaeed19
Looking through the nvidia drivers source it does check for that function.
Will look more into what it does without the function.
Edit:
Simplest fix until Nvidia update the driver is to revert 51c98747113e93b6229f12d1a744a51fd59eff3a
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
index 32787acff0a8..b81cc007acb8 100644
--- a/Documentation/gpu/todo.rst
+++ b/Documentation/gpu/todo.rst
@@ -196,6 +196,15 @@ Might be good to also have some igt testcases for this.
Contact: Daniel Vetter, Noralf Tronnes
+Remove the ->gem_prime_res_obj callback
+--------------------------------------------
+
+The ->gem_prime_res_obj callback can be removed from drivers by using the
+reservation_object in the drm_gem_object. It may also be possible to use the
+generic drm_gem_reservation_object_wait helper for waiting for a bo.
+
+Contact: Daniel Vetter
+
idr_init_base()
---------------
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 0a2316e0e812..eca484106cc2 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -836,6 +836,9 @@ struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
.resv = obj->resv,
};
+ if (dev->driver->gem_prime_res_obj)
+ exp_info.resv = dev->driver->gem_prime_res_obj(obj);
+
return drm_gem_dmabuf_export(dev, &exp_info);
}
EXPORT_SYMBOL(drm_gem_prime_export);
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 8976afe48c1c..b33f2cee2099 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -615,6 +615,18 @@ struct drm_driver {
*/
struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object *obj);
+ /**
+ * @gem_prime_res_obj:
+ *
+ * Optional hook to look up the &reservation_object for an buffer when
+ * exporting it.
+ *
+ * FIXME: This hook is deprecated. Users of this hook should be replaced
+ * by setting &drm_gem_object.resv instead.
+ */
+ struct reservation_object * (*gem_prime_res_obj)(
+ struct drm_gem_object *obj);
+
/**
* @gem_prime_import_sg_table:
*
Last edited by loqs (2019-12-14 00:05:32)
Offline
The second kernel you built should have a 5.4 version number the rest of the kernels should be either 5.3 or a 5.4rc.
Do the touchpad and WiFi work in the 5.4 arch kernel packages?
i didnt start taking notes until after the second bisect but iirc that all presented as 5.3.
since the earliest 5.4rc, prime sync never worked but wifi and touchpad did though im not sure at what point that changed since i stuck with linux and linux-zen until they updated to 5.4 and the iwlwifi and touchpad issues began. im installing both linux and linux-zen now to confirm and i'll update this post after i check.
I think the bisection went wrong on this none booting kernel.
I should have included extra instructions for a such a situation as well as marking a commit good or bad there is `git skip` which asks git to pick another commit to test.
your instructions were great, my experience in this area not so much but was still a good learning experience either way. i think i see what your saying though, since the first bisect failed to boot i reported "git bisect bad" instead of "git bisect skip" and that threw off the rest of the bisect.
git bisect skip b2ad978fd00467e8109918849a817018aaaeed19
Looking through the nvidia drivers source it does check for that function.
Will look more into what it does without the function.
Edit:
Simplest fix until Nvidia update the driver is to revert 51c98747113e93b6229f12d1a744a51fd59eff3a
thanks, i'll look into how i go about applying it and report back.
edit: https://pastebin.com/raw/2y9JGYnF (git bisect log)
edit2: confirmed linux and linux-zen 5.4, no wifi, no touchpad.
Last edited by dglt (2019-12-14 00:41:52)
Offline
Using the bisect kernel you from the linux directory you could use the following
git checkout v5.4
git revert -n 51c98747113e93b6229f12d1a744a51fd59eff3a
For for the PKGBUILD arch uses either add the patch file to the list of sources or
prepare() {
cd $_srcname
msg2 "Setting version..."
scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
Add the line here so it becomes
prepare() {
cd $_srcname
msg2 "Setting version..."
scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
git revert -n 51c98747113e93b6229f12d1a744a51fd59eff3a
Offline
For for the PKGBUILD arch uses either add the patch file to the list of sources or
Add the line here so it becomes
prepare() { cd $_srcname msg2 "Setting version..." scripts/setlocalversion --save-scmversion echo "-$pkgrel" > localversion.10-pkgrel echo "${pkgbase#linux}" > localversion.20-pkgname git revert -n 51c98747113e93b6229f12d1a744a51fd59eff3a
i grabbed the latest kernel PKGBUILD for 5.4.3.arch1, put it in a clean directory, edited it and added the git revert as shown above and ran 'makepkg -sri' but it fails halfway through . i must be doing something wrong.
PKGBUILD im using (after editing)
https://pastebin.com/JcJVWDdZ
edit: error shown using above method
==> ERROR: config was not found in the build directory and is not a URL.
Last edited by dglt (2019-12-14 15:46:28)
Offline
@dglt what is the output from the executing the following in the build directory
makepkg --verifysource
Offline
~/.../tmp/linux54.3-git >>> makepkg --verifysource
==> Making package: linux 5.4.3.arch1-1 (Mon 16 Dec 2019 10:09:33 PM EST)
==> Retrieving sources...
-> Updating archlinux-linux git repo...
Fetching origin
==> ERROR: config was not found in the build directory and is not a URL.
tree of the working directory
https://pastebin.com/dEjefbWz
Offline
@dglt you need to create config file also, you can do it like so:
zcat /proc/config.gz > config
Also, not only commit with hash 51c98747113e93b6229f12d1a744a51fd59eff3a should be reverted, but also reservation_object with dma_resv at include/drm/drm_drv.h need to be replaced.
In PKGBUILD you can add something like:
sed -i 's/reservation_object/dma_resv/g' include/drm/drm_drv.h
This way 5.4.3 compiles, but still somewhere some pointer assigned with NULL and we get kernel panic
Offline