Re: Multiple errors with DVD drive

Niklas Cassel
2022-09-20T21:09:12Z

Readding linux-ide to CC.

On Tue, Sep 20, 2022 at 06:23:07PM +0200, J.J. Berkhout wrote:
> Hello,
>
> Thanks for looking into this.
> I do not see anything like "ASMT109x-".
> Output of lsscsi:
>
> [0:0:0:0] cd/dvd PIONEER BD-RW BDR-207M 1.60 /dev/sr0 [11:0]

Ok, then we can rule out the patch that adds the ASMT109x quirk.

>
> The output with the last non-working kernel is the same.
>
> Concerning the patch: I do not (yet) known how to apply it. Help would
> very much be appreciated.

Basically:
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

Try to copy the running kernel's config:
zcat /proc/config.gz > .config

If that didn't work, try copying the config file from /boot:
cp /boot/config-$(uname -r) .config

Since the patch is only one line, you can apply it manually now.
(Note that there are three spaces between "BD-RW BDR-207M".)

make olddefconfig
make -j$(nproc)

sudo make modules_install
sudo make install

Looking at the logs in the bug report, you do have a AMD Green Sardine
AHCI controller.

The commit 1527f69204fe ("ata: ahci: Add Green Sardine vendor ID as
board_ahci_mobile") added the PCI vendor and device id to the list of
supported AHCI controllers using the low power board version:
{ PCI_VDEVICE(AMD, 0x7901), board_ahci_low_power }, /* AMD Green Sardine */

Before the commit in question, your AHCI controller relied on this
catch-all entry:
/* Generic, PCI class code for AHCI */
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
which does not enable/allow any low power mode at all.

Now, I do think that low power modes *should* work with this AHCI
controller. Most likely, it is simply the optical drive that does
not work well when the HBA initiates a low power mode on the link.

You should be able to test this theory by adding libata.force=nolpm
on the kernel command line on a recent (non-working) kernel, low power
modes should then be disabled, and the drive should work again.
(You can press 'e' in grub to temporarily add something to the kernel
command line, and then ctrl+x to boot.)

But the proper fix is probably to add a quirk for you device, either:
+ { "PIONEER BD-RW BDR-207M", NULL, ATA_HORKAGE_NOSETXFER },
or
+ { "PIONEER BD-RW BDR-207M", NULL, ATA_HORKAGE_NOLPM },

Kind regards,
Niklas