lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 23 Mar 2012 14:12:27 -0500
From:	Chris Holland <bandidoirlandes@...il.com>
To:	Matthew Garrett <mjg59@...f.ucam.org>
Cc:	Robert Hancock <hancockrwd@...il.com>,
	linux-kernel@...r.kernel.org, jbarnes@...tuousgeek.org,
	Chris Holland <bandidoirlandes@...il.com>
Subject: Re: IDE DVD and CD drive seem to not work with Linux desktop 3.3.0-030300-generic

On Fri, Mar 23, 2012 at 12:20 PM, Matthew Garrett <mjg59@...f.ucam.org> wrote:
> Ok, this is very odd - ASPM is disabled in both cases. The only thing I
> can think of here is that the hardware dislikes us writing to the
> registers? Can you test this patch on top of the broken kernel?
>
> diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
> index 24f049e..04eb680 100644
> --- a/drivers/pci/pcie/aspm.c
> +++ b/drivers/pci/pcie/aspm.c
> @@ -185,6 +185,7 @@ static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
>        int ppos, cpos, same_clock = 1;
>        u16 reg16, parent_reg, child_reg[8];
>        unsigned long start_jiffies;
> +       bool retrain = false;
>        struct pci_dev *child, *parent = link->pdev;
>        struct pci_bus *linkbus = parent->subordinate;
>        /*
> @@ -215,7 +216,10 @@ static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
>                        reg16 |= PCI_EXP_LNKCTL_CCC;
>                else
>                        reg16 &= ~PCI_EXP_LNKCTL_CCC;
> -               pci_write_config_word(child, cpos + PCI_EXP_LNKCTL, reg16);
> +               if (reg16 != child_reg[PCI_FUNC(child->devfn)]) {
> +                       retrain = true;
> +                       pci_write_config_word(child, cpos + PCI_EXP_LNKCTL, reg16);
> +               }
>        }
>
>        /* Configure upstream component */
> @@ -225,9 +229,15 @@ static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
>                reg16 |= PCI_EXP_LNKCTL_CCC;
>        else
>                reg16 &= ~PCI_EXP_LNKCTL_CCC;
> -       pci_write_config_word(parent, ppos + PCI_EXP_LNKCTL, reg16);
> +       if (reg16 != parent_reg) {
> +               retrain = true;
> +               pci_write_config_word(parent, ppos + PCI_EXP_LNKCTL, reg16);
> +       }
>
>        /* Retrain link */
> +       if (!retrain)
> +               return;
> +
>        reg16 |= PCI_EXP_LNKCTL_RL;
>        pci_write_config_word(parent, ppos + PCI_EXP_LNKCTL, reg16);
>
> @@ -436,13 +446,16 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist)
>
>  static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val)
>  {
> -       u16 reg16;
> +       u16 reg16, orig_reg16;
>        int pos = pci_pcie_cap(pdev);
>
>        pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, &reg16);
> +       orig_reg16 = reg16;
>        reg16 &= ~0x3;
>        reg16 |= val;
> -       pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, reg16);
> +
> +       if (reg16 != orig_reg16)
> +               pci_write_config_word(pdev, pos + PCI_EXP_LNKCTL, reg16);
>  }
>
>  static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state)
>
> --
> Matthew Garrett | mjg59@...f.ucam.org

git apply patch1
make oldconfig
fakeroot make deb-pkg

reboot
cat /var/log/dmesg | egrep '(CD|DVD)'
[    0.000000] Linux version 3.3.0+ (root@...ktop) (gcc version 4.6.1
(Ubuntu/Linaro 4.6.1-9ubuntu3) ) #9 SMP Fri Mar 23 13:35:53 CDT 2012
[    0.000000]   CD000-EFFFF uncachable
[    5.686638] ata9.01: ATAPI: LITE-ON DVDRW SHW-160P6S, PS0A, max UDMA/66
[    5.760581] scsi 8:0:0:0: CD-ROM            LITE-ON  LTR-48246S
  SS0B PQ: 0 ANSI: 5
[    5.783482] cdrom: Uniform CD-ROM driver Revision: 3.20
[    5.783589] sr 8:0:0:0: Attached scsi CD-ROM sr0
[    5.790804] scsi 8:0:1:0: CD-ROM            LITE-ON  DVDRW
SHW-160P6S PS0A PQ: 0 ANSI: 5
[    5.793286] sr 8:0:1:0: Attached scsi CD-ROM sr1

View attachment "lspci.with.patch" of type "text/x-diff" (26619 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ