やるきなし

2020/01/11 20:50 / Linux 5.5-rc5

Linux 5.5-rc5 で 5.4.X から .configがどう変更されるのか見てみた.以下 - は削除されたもの,+ は追加されたもの.x86_64.New features 等は https://www.phoronix.com/scan.php?page=article&item=linux-55-features 参照.

CRYPTO関連

Direct Rendering Manager, DRM 関連

Btrfs 関連

追加

削除

Renamed

追記 (2020/1/12)

drm: delete drmP.h + drm_os_linux.hによって drmP.h が削除されたので,

/var/lib/dkms/nvidia-current/430.64/build/nvidia-drm/nvidia-drm-utils.h:30:10: fatal error: drm/drmP.h: No such file or directory
 #include <drm/drmP.h>
          ^~~~~~~~~~~~

ように以下の DKMS のコンパイルに失敗する.

https://devtalk.nvidia.com/default/topic/1068332/linux/nvidia-driver-does-not-build-on-linux-v5-5-release-candidate-kernel/ にあるパッチでともに対応可能.kernel/nvidia-drm/nvidia-drm-connector.cbreak の箇所が #if で条件付けされていないのが気になるけど.

nvidia-kernel-dkms 430.64-4~bpo10+1 向け patch を https://pastebin.com/dgBadP0K に置いた.

あとパッチによるとdrm/connector: Allow max possible encoders to attach to a connectorによって DRM_CONNECTOR_MAX_ENCODER (3) の #define が削除されたものへの対応も必要らしい(drm_connector_for_each_possible_encoder マクロを利用する).

Related articles

2020/01/06 15:26 / wl-beta 2.15.9+0.20190919-1 with bbdb3 3.2-7

Emacs の MUA である Wanderlust で,bbdb を使ってメールアドレス等を収集しているのであるが,bbdb3 が 3.2-6 から 3.2-7 にあがったタイミングで以下のエラーで表示メール関連の bbdb entry が表示されなくなった.M-x bbdb 自体は機能している.

save-current-buffer: Wrong type argument: stringp, nil

そもそも bbdb3 自体が Wanderlust で設定困難で,https://github.com/wanderlust/wanderlust/issues/64#issuecomment-388231182 にあるとおり,以下のような bbdb/wl-header (see /usr/share/emacs/site-lisp/bbdb3/bbdb-wl.el)を自前で用意していたのだが,これが原因らしい.

--- orig.el     2020-01-06 15:24:44.308354408 +0900
+++ new.el      2020-01-06 15:25:24.643900212 +0900
@@ -1,7 +1,7 @@
 (defun bbdb/wl-header (header)
-  (with-current-buffer wl-summary-buffer-name
+  (with-current-buffer wl-message-buffer-cur-summary-buffer
     (elmo-message-entity-field
      (elmo-message-entity wl-summary-buffer-elmo-folder
                           (wl-summary-message-number))
      (intern (downcase header))
      'string)))

3.2-7 では

のとおり bbdb-mua-auto-updatewl-message-redisplay-hookではなく wl-summary-redisplay-hookadd-hookされるようになったので,上記自前 bbdb/wl-header は不要になった様子.

2019/12/29 16:01 / Windows 10 mobile hotspot

いつもハマるのでメモ.有線接続している NotePC を AP にする話.

有線は Realtek USB GbE Family Controller のアダプタで接続されていて,これを WiFi で共有する.WiFi のアダプタは Intel(R) Dual Band Wireless-AC 8265.

Intel(R) Dual Band Wireless-AC 8265 では Hosted Network をサポートしていなくて (See Why Hosted and Ad-Hoc Networks Are Not Working on Windows® 10)

% netsh wlan show drivers

で調べても

Hosted network supported : No

と表示される.つまり

% netsh wlan set hostednetwork mode=allow ssid=NetworkName key=YourPassword
% netsh wlan start hostednetwork

とかで有効にできない(↑上の情報がWeb上にあふれている).さて...

以下設定方法(for Windows 10 で最近の Intel WiFi Adapter の場合).

Settings → Network and Internet → Mobile hotspot

から Share my Internet connection with other devices を On にする(同じページのSSIDおよびパスワードの設定があるので,ここは適宜).

これが出来ない場合は Device Manager でおもむろに有線およびWiFi,Microsoft Wi-Fi Direct Virtual Adapter 等関連アダプタを削除して,Scan for hardware changes でデバイスを検索してデバイスを再認識する (大抵これでできるようになる).

ただこの状態だと,Client (子)側で WiFi 経由で IP Address が取得できない.そこで

Control Panel\Network and Internet\Network Connections

でアダプタ一覧を表示し,有線のアダプタの Property で Sharing Tab から

Allow other network users to connect through this computers internet connection

をチェックして,共有先として Microsoft Wi-Fi Direct Virtual Adapter のネットワーク名(Local Area Connection* 2 等)を指定する.これでつながるはず.

2019/12/11 21:32 / MHonArc+Namazu での Namazu の UTF-8 対応

ひさしぶりに MHonArc (2.6.19-2) と Namazu (2.0.21-22) をつかってメール検索システム構築(対象はFMLで送られてきたメール).いろいろ嵌ったのでメモ.

MHonArc が生成する HTML を X-Mail-Count の値(整数)にしたい

mhonarcの出力ファイル名の数字を特定のフィールドから決める場当たり的改造」で紹介されているパッチをあてる.mhonarc 実行時に mhonarc -seqnumfield x-mail-count というオプションをつける.以下念の為の 2.6.19 向け版パッチ.

diff --git a/perl/mhamain.pl b/perl/mhamain.pl
index 7af1fcc..eefca45 100644
--- a/perl/mhamain.pl
+++ b/perl/mhamain.pl
@@ -771,7 +771,7 @@ sub write_mail {
 sub read_mail_header {
     my $handle = shift;
     my($date, $tmp, $i, $field, $value);
-    my($from, $sub, $msgid, $ctype);
+    my($from, $sub, $msgid, $ctype, $seq);
     local($_);
 
     my $index  = undef;
@@ -927,6 +927,14 @@ sub read_mail_header {
     }
     @refs = remove_dups(\@refs);        # Remove duplicate msg-ids
 
+    ##------------------##
+    ## Get seq number   ##
+    ##------------------##
+    if (defined($SEQNUMFIELD)) {
+        $seq = $fields->{$SEQNUMFIELD}[0];
+        $seq =~ s/(\d+)/$1/;
+        print STDOUT "($seq)";
+    }
     ##------------------##
     ## Get Content-Type ##
     ##------------------##
@@ -941,6 +949,10 @@ sub read_mail_header {
     my $t = $index;
     $index .= $X . sprintf('%d',(defined($msgnum)?$msgnum:($LastMsgNum+1)));
 
+    if (defined($SEQNUMFIELD)) {
+        $IndexNum{$index} = $seq;
+    }
+
     ## Set mhonarc fields.  Note how values are NOT arrays.
     $fields->{'x-mha-index'} = $index;
     $fields->{'x-mha-message-id'} = $msgid;
@@ -970,7 +982,11 @@ sub read_mail_header {
    $IndexNum{$index} = $msgnum;
    ++$NumOfMsgs; # Counteract decrement by delmsg
     } else {
-   $IndexNum{$index} = getNewMsgNum();
+   if(defined $SEQNUMFIELD) {
+       &getNewMsgNum();
+   }else{
+       $IndexNum{$index} = getNewMsgNum();
+   }
     }
 
     $Refs{$index} = [ @refs ]  if (@refs);
diff --git a/perl/mhopt.pl b/perl/mhopt.pl
index 939109b..587ccab 100644
--- a/perl/mhopt.pl
+++ b/perl/mhopt.pl
@@ -221,7 +221,8 @@ sub get_resources {
    'readdb',   # Just read db
 
    'v',        # Version information
-   'help'      # A brief usage message
+   'help',     # A brief usage message
+   'seqnumfield=s',    # Sequence number field name
     );
 
     ## Check for help/version options (nothing to do)
@@ -576,6 +577,8 @@ sub get_resources {
 
     $IdxPageNum  = $opt{'pagenum'}   if defined($opt{'pagenum'});
 
+    $SEQNUMFIELD = $opt{'seqnumfield'}   if defined($opt{'seqnumfield'});
+
     $AttachmentDir = $opt{'attachmentdir'}  if defined($opt{'attachmentdir'});
     $AttachmentUrl = $opt{'attachmenturl'}  if defined($opt{'attachmenturl'});
 

MHonArc が抽出する添付ファイルのファイル名を MD5SUM 由来のものにしたい

Default だとランダムな文字列(しかも実行する度に異なる)ファイル名になる.

ということもあって MD5SUM 由来のものにする.以下パッチ.やるきなしなのでオプション切り替え不能なパッチ.ファイルが存在する場合は上書きしないことにしてある.

diff --git a/perl/mhmimetypes.pl b/perl/mhmimetypes.pl
index deb806b..c723ead 100644
--- a/perl/mhmimetypes.pl
+++ b/perl/mhmimetypes.pl
@@ -28,6 +28,7 @@
 package mhonarc;
 
 use File::Basename;
+use Digest::MD5 qw(md5_hex);
 
 $UnknownExt     = 'bin';
 
@@ -336,26 +337,27 @@ sub write_attachment {
    $fname =~ tr/\0-\40\t\n\r?:\57\134*"'<>|\177-\377/_/;
     }
 
-    ## Write to random file first
-    my($fh, $tmpfile) = file_temp($ext.'XXXXXXXXXX', $pathname, '.'.$ext);
-    binmode($fh);
-    print $fh $$sref;
-    close($fh);
-
-    ## Set pathname for file
+    my $target;
     if ($fname) {
-   # need to rename to desired filename
-   $pathname .= $DIRSEP . $fname;
-   if (!rename($tmpfile, $pathname)) {
-       die qq/ERROR: Unable to rename "$tmpfile" to "$pathname": $!\n/;
-   }
+        $target = $pathname . $DIRSEP . $fname;
     } else {
-   # just use random filename
-   $pathname = $tmpfile;
-   $fname    = basename($tmpfile);
+        my $md5 = md5_hex($$sref);
+        $fname = $md5.".".$ext;
+        $target = $pathname . $DIRSEP . $fname;
+    }
+    if(! -e $target) {
+        ## Write to random file first
+        my($fh, $tmpfile) = file_temp($ext.'XXXXXXXXXX', $pathname, '.'.$ext);
+        $pathname = $target;
+        binmode($fh);
+        print $fh $$sref;
+        close($fh);
+        if (!rename($tmpfile, $pathname)) {
+            die qq/ERROR: Unable to rename "$tmpfile" to "$pathname": $!\n/;
+        }
+        file_chmod($pathname);
     }
     $url .= '/' if ($url); $url .= urlize_file_path($fname);
-    file_chmod($pathname);
 
     if ($rel_outdir) {
    $pathname  = $path;

なお m2h_external::filterusename argument (添付ファイル名をそのまま用いる,ただし日本語は_に変換される)は活かしておく.誰も使わないだろうけど.usename を使う場合はrcfileに以下を書いておく(See https://www.mhonarc.org/MHonArc/doc/resources/mimeargs.html).

<MIMEArgs>
m2h_external::filter; usename
</MIMEArgs>

Namazu で PDF が検索対象にならない (pdftotext オプション問題)

PDF ファイルは pdftotext で一旦テキストに変換されてインデックスされるが,日本語環境(LANG=ja_JP mknmz . -O indexとか)だと Unable to convert pdf file (maybe copying protection) と怒られてインデックスされない.これ,Namazu の内部処理文字コードの EUC-JP に変換しようとして pdftotext のオプションの箇所でコケている(copy protection が原因ではない).

手元のpdftotextは version 0.71.0 (poppler)なのだが,mknmz はなぜか pdftotext -eucjp で EUC-JP 出力をしようとする(古いやり方).これをpdftotext -enc EUC-JPに変更する.以下パッチやるきなしなし.どこでバージョンのカウントを間違えたのだろうか?...

diff --git a/perl/pdf.pl b/perl/pdf.pl
index 5d63763..2d12946 100644
--- a/perl/pdf.pl
+++ b/perl/pdf.pl
@@ -61,12 +61,13 @@ sub status() {
         if (util::islang("ja")) {
             if ($pdfconvver >= 1.00) {
                 @pdfconvopts = ('-q', '-raw', '-enc', 'EUC-JP');
             } else {
                 @pdfconvopts = ('-q', '-raw', '-eucjp');
             }
+        @pdfconvopts = ('-q', '-raw', '-enc', 'EUC-JP');
         } else {
             @pdfconvopts = ('-q', '-raw');
         }
         if (defined $pdfinfopath) {
             my @cmd = ("$pdfinfopath");
             my $result = "";

Namazu でエクセルファイルが検索対象にならない

というかxlhtmlって今手に入るの? 問題.xlhtmlでHTMLに変換してそれをインデックスすることになっている.

python-excelerator付属のpy_xls2htmlで代用する.PATHの通っているところにxlhtmlとしてシンボリックリンクを作る(これだけでOK).

MHonArc で日本語をそれなりに...

Default だと UTF-8 ではなく数値文字参照(&#xXXXX;とか)を大量に含む HTML になって極めて感じ悪い.http://www.mhonarc.jp/MHonArc の日本語化 (for v2.6.x)を行う.具体的には以下をrcfileに書いておく.

<Include>
/usr/share/doc/mhonarc/examples/utf-8-encode.mrc
</Include>

<DefCharset>
iso-2022-jp
</DefCharset>

<DecodeHeads>

MHonArc のインデックスファイルと Namazu の連携で文字化け

<IdxPgBegin> に Namazu の form を置いておくと便利かと思ったら,Namazuに適切にクエリが渡らない.これは MHonArc が UTF-8 で Namazu が EUC-JP だから.今どき EUC-JP て...

対策は以下のように別 script (ラッパー)でクエリを一旦受け取り,それを EUC-JP に変換して namazu を呼び出すというもの.

perl で書かれているものは手元では動かず,http://www.ne.jp/asahi/music/marinkyo/namazu/utf8.html.ja の下の方にある ruby 版を利用することにした (真ん中あたりに書いてある iconv 版は,今どきのruby には iconv が付属しないので注意...String#encodeを使うことになる).ほぼ同じだが以下私版.

#!/usr/bin/env ruby

require 'cgi'

cgi = CGI.new
query_str = ""

cgi.params.each{|key, values|
    values.each{|a_value|
        query_str += key + "=" + CGI.escape(a_value.encode("EUC-JP")) + ";"
    }
}
print "Location: https://myn.example.com/namazu/?"+query_str+"\n\n"

MHonArc でインクリメンタルにファイルを追加できない

MHonArc では -add オプションにより,追加されたファイルのみ処理するモードがある.ただし以下でコケる.

% mhonarc -rcfile mhonarc.rc -outdir output -seqnumfield x-mail-count archive -add
This is MHonArc v2.6.19+, Perl 5.028001 linux
Reading database ...

Can't locate output/.mhonarc.db in @INC (@INC contains: lib /usr/share/mhonarc /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/mhonarc/mhopt.pl line 401.

もうやるきなしなので,以下で @INC. を追加して MHonArc 実行.

% perl -I. `which mhonarc` -rcfile mhonarc.rc -outdir output -seqnumfield x-mail-count archive -add

2019/11/25 14:45 / nvidia-kernel-dkms 418.74-1 with Linux 5.4

以下の nvidia のドライバが Linux 5.4 でコンパイルできない話.

まず以下のエラー.

The Module.symvers file is missing, or does not contain any
symbols exported from the kernel. This could cause the NVIDIA
kernel modules to be built against a configuration that does
not accurately reflect the actual target kernel.
The Module.symvers file check can be disabled by setting the
environment variable IGNORE_MISSING_MODULE_SYMVERS to 1.

これは modpost: add support for symbol namespacesModule.symvers に1つエントリ(namespace)が追加されたことによる.conftest.shModule.symvers の symbol をチェックするがその箇所はただの grep なので影響なし.IGNORE_MISSING_MODULE_SYMVERS=1 にしても問題ないが conftest.sh を修正する.

次,以下のエラー.

In file included from /var/lib/dkms/nvidia-current/418.74/build/nvidia/nv.c:14:
/var/lib/dkms/nvidia-current/418.74/build/common/inc/nv-linux.h:1852:6: error: "NV_BUILD_MODULE_INSTANCES" is not defined, evaluates to 0 [-Werror=undef]
 #if (NV_BUILD_MODULE_INSTANCES != 0)
      ^~~~~~~~~~~~~~~~~~~~~~~~~

これ,なに由来のエラーか不明.NV_BUILD_MODULE_INSTANCES = 0 で問題ないはずなので,Kbuild ファイルで define してしまう.

次,以下のエラー.

/var/lib/dkms/nvidia-current/418.74/build/nvidia-drm/nvidia-drm-drv.c:657:44: error: ‘DRIVER_PRIME’ undeclared here (not in a function); did you mean ‘DRIVER_PCI_DMA’?
     .driver_features        = DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER,
                                            ^~~~~~~~~~~~
                                            DRIVER_PCI_DMA

これは drm/prime: Actually remove DRIVER_PRIME everywhereDRIVER_PRIMEが削除されたことによる.削除する.

次,以下のエラー.

/var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c: In function ‘nv_drm_gem_prime_export’:
/var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c:64:33: error: passing argument 1 of ‘drm_gem_prime_export’ from incomp
atible pointer type [-Werror=incompatible-pointer-types]
     return drm_gem_prime_export(dev, gem, flags);
                                 ^~~
In file included from ./include/drm/drmP.h:75,
                 from /var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-priv.h:30,
                 from /var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c:27:
./include/drm/drm_prime.h:94:17: note: expected ‘struct drm_gem_object *’ but argument is of type ‘struct drm_device *’
 struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
                 ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c:64:38: warning: passing argument 2 of ‘drm_gem_prime_export’ makes int
eger from pointer without a cast [-Wint-conversion]
     return drm_gem_prime_export(dev, gem, flags);
                                      ^~~
In file included from ./include/drm/drmP.h:75,
                 from /var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-priv.h:30,
                 from /var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c:27:
./include/drm/drm_prime.h:94:17: note: expected ‘int’ but argument is of type ‘struct drm_gem_object *’
 struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
                 ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c:64:12: error: too many arguments to function ‘drm_gem_prime_export’
     return drm_gem_prime_export(dev, gem, flags);
            ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/drm/drmP.h:75,
                 from /var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-priv.h:30,
                 from /var/lib/dkms/nvidia-legacy-390xx/390.116/build/nvidia-drm/nvidia-drm-gem.c:27:
./include/drm/drm_prime.h:94:17: note: declared here
 struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj,
                 ^~~~~~~~~~~~~~~~~~~~

これdrm/prime: Align gem_prime_export with obj_funcs.exportによりdrm_gem_prime_exportの引数が変更になった(3つの引数のうち1つ目が削除された)ことが原因.

以下まとめてパッチ.ただし5.3でコンパイルするためのパッチがあたっていることを想定.

nvidia-kernel-dkms 418.74-1

diff --git a/Kbuild b/Kbuild
index 6a65185..ff3417c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -62,6 +62,7 @@ EXTRA_CFLAGS += -Wall -MD $(DEFINES) $(INCLUDES) -Wno-cast-qual -Wno-error -Wno-
 EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"418.74\" -Wno-unused-function -Wuninitialized -fno-strict-aliasing -mno-red-zone -mcmodel=kernel -DNV_UVM_ENABLE
 EXTRA_CFLAGS += $(call cc-option,-Werror=undef,)
 EXTRA_CFLAGS += -DNV_SPECTRE_V2=$(NV_SPECTRE_V2)
+EXTRA_CFLAGS += -DNV_BUILD_MODULE_INSTANCES=0
 
 #
 # Detect SGI UV systems and apply system-specific optimizations.
diff --git a/conftest.sh b/conftest.sh
index d17ba21..087fda5 100644
--- a/conftest.sh
+++ b/conftest.sh
@@ -3708,7 +3708,7 @@ case "$6" in
         TAB='  '
 
         if [ -f "$OUTPUT/Module.symvers" ] && \
-             grep -e "^[^${TAB}]*${TAB}[^${TAB}]*${TAB}vmlinux" \
+             grep -e "^[^${TAB}]*${TAB}[^${TAB}]*${TAB}[^${TAB}]*${TAB}vmlinux" \
                      "$OUTPUT/Module.symvers" >/dev/null 2>&1; then
             exit 0
         fi
diff --git a/nvidia-drm/nvidia-drm-drv.c b/nvidia-drm/nvidia-drm-drv.c
index 6ec01f4..18cf167 100644
--- a/nvidia-drm/nvidia-drm-drv.c
+++ b/nvidia-drm/nvidia-drm-drv.c
@@ -654,7 +654,7 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = {
 
 static struct drm_driver nv_drm_driver = {
 
-    .driver_features        = DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER,
+    .driver_features        = DRIVER_GEM | DRIVER_RENDER,
 
     .gem_free_object        = nv_drm_gem_free,

nvidia-legacy-390xx-kernel-dkms 390.116-1

diff --git a/Kbuild b/Kbuild
index 0665f50..992a48c 100644
--- a/Kbuild
+++ b/Kbuild
@@ -61,6 +61,7 @@ EXTRA_CFLAGS += -I$(src)
 EXTRA_CFLAGS += -Wall -MD $(DEFINES) $(INCLUDES) -Wsign-compare -Wno-cast-qual -Wno-error
 EXTRA_CFLAGS += -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"390.116\" -Wno-unused-function -Wuninitialized -fno-strict-aliasing -mno-red-zone -mcmodel=kernel -DNV_UVM_ENABLE -Wno-sign-compare -Wno-format-extra-args
 EXTRA_CFLAGS += $(call cc-option,-Werror=undef,)
+EXTRA_CFLAGS += -DNV_BUILD_MODULE_INSTANCES=0
 
 #
 # Detect SGI UV systems and apply system-specific optimizations.
diff --git a/nvidia-drm/nvidia-drm-drv.c b/nvidia-drm/nvidia-drm-drv.c
index 90ce30b..d9f3961 100644
--- a/nvidia-drm/nvidia-drm-drv.c
+++ b/nvidia-drm/nvidia-drm-drv.c
@@ -634,7 +634,7 @@ static const struct drm_ioctl_desc nv_drm_ioctls[] = {
 
 static struct drm_driver nv_drm_driver = {
 
-    .driver_features        = DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER,
+    .driver_features        = DRIVER_GEM | DRIVER_RENDER,
 
     .gem_free_object        = nv_drm_gem_free,
 
diff --git a/nvidia-drm/nvidia-drm-gem.c b/nvidia-drm/nvidia-drm-gem.c
index 3d51196..addff14 100644
--- a/nvidia-drm/nvidia-drm-gem.c
+++ b/nvidia-drm/nvidia-drm-gem.c
@@ -46,10 +46,9 @@ void nv_drm_gem_free(struct drm_gem_object *gem)
 
     nv_gem->ops->free(nv_gem);
 }
-
-struct dma_buf *nv_drm_gem_prime_export(struct drm_device *dev,
-                                        struct drm_gem_object *gem, int flags)
+struct dma_buf *nv_drm_gem_prime_export(struct drm_gem_object *gem, int flags)
 {
+    struct drm_device *dev = gem->dev;
     struct nv_drm_device *nv_dev = to_nv_device(dev);
 
     struct nv_drm_gem_object *nv_gem = to_nv_gem_object(gem);
@@ -61,7 +60,7 @@ struct dma_buf *nv_drm_gem_prime_export(struct drm_device *dev,
         return ERR_PTR(-EINVAL);
     }
 
-    return drm_gem_prime_export(dev, gem, flags);
+    return drm_gem_prime_export(gem, flags);
 }
 
 struct sg_table *nv_drm_gem_prime_get_sg_table(struct drm_gem_object *gem)
diff --git a/nvidia-drm/nvidia-drm-gem.h b/nvidia-drm/nvidia-drm-gem.h
index c3cb875..c4da335 100644
--- a/nvidia-drm/nvidia-drm-gem.h
+++ b/nvidia-drm/nvidia-drm-gem.h
@@ -156,8 +156,7 @@ done:
 
 void nv_drm_gem_free(struct drm_gem_object *gem);
 
-struct dma_buf *nv_drm_gem_prime_export(struct drm_device *dev,
-                                        struct drm_gem_object *gem, int flags);
+struct dma_buf *nv_drm_gem_prime_export(struct drm_gem_object *gem, int flags);
 
 static inline struct nv_drm_gem_object *nv_drm_gem_object_lookup(
     struct drm_device *dev,

Related articles