i2c-dev mismatch with proprietary nvidia driver
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- Subject: i2c-dev mismatch with proprietary nvidia driver
- From: Sanford Rockowitz <rockowitz@xxxxxxxxxxx>
- Date: Sun, 25 Sep 2022 21:12:54 -0400
- Feedback-id: i954946e7:Fastmail
- Organization: Minaret Software
- User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.23) Gecko/20090812 Thunderbird/2.0.0.23 Mnenhy/0.7.6.666
I'm not sure where to post this bug report on the Linux side, I have
already posted it at developer.nvida.com. If there's a more appropriate
location, please let me know.
At approximately line 41 of nvidia driver file nv-i2c.c, in function
nv_i2c_algo_master_transfer(), there's an if-test for symbol
I2C_M_DMA_SAFE. If the symbol is not defined, a call to the function
with the bit set fails with error -EINVAL. The file includes
"linux/i2c.h", so apparently there are versions of I2c.h in which the
flag is undefined.
At approximately line 262 of i2c-dev driver file i2c-dev.c, in function
i2cdev_ioctl_wdrw(), this bit is set unconditionally, with the comment
"memdup_user allocates with GFP_KERNEL, so DMA is ok ". This behavior is
not the result of the userspace caller setting the flag, the driver sets
it unconditionally. The result is that calls into i2c-dev using its
ioctl() interface, as opposed to the read()/write() interface, always
fail with error EINVAL.
Every version of i2c.h that I have defines I2C_M_DMA_SAFE, so the
version of the nvidia driver that DKMS builds for me works. However, as
the developer of ddcutil (https://github.com/rockowitz/ddcutil,
https://www.ddcutil.com) I receive bug reports of failures with the
nvidia proprietary driver due to this mismatch, so it is a problem.
I
[Index of Archives]
[Linux GPIO]
[Linux SPI]
[Linux Hardward Monitoring]
[LM Sensors]
[Linux USB Devel]
[Linux Media]
[Video for Linux]
[Linux Audio Users]
[Yosemite News]
[Linux Kernel]
[Linux SCSI]