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:	Wed, 21 May 2008 16:58:40 +0800
From:	Shaohua Li <shaohua.li@...el.com>
To:	Plamen Petrov <pvp-lsts@...ru.acad.bg>
Cc:	linux-kernel@...r.kernel.org,
	Luca Tettamanti <kronos.it@...il.com>,
	Jesse Barnes <jbarnes@...tuousgeek.org>
Subject: Re: [BISECTED] pata_jmicron: no drives found on post 2.6.25 kernels

On Tue, 2008-05-20 at 19:09 +0300, Plamen Petrov wrote:
> Shaohua Li написа: 
> 
> > On Tue, 2008-05-20 at 01:37 +0300, Plamen Petrov wrote:
> >> Hello, folks!  
> >> 
> >> After 2.6.26 merge window opened, the optical drives in my
> >> computer, hanging off a JMicron controler were not detected
> >> by linux any more.  
> >> 
> >> Luca Tettamanti reported similar troubles:
> >> http://marc.info/?l=linux-kernel&m=120958791323911&w=2  
> >> 
> >> Its been 20 days, so I decided to bisect.
> >> git bisect revealed that commit
> >> 7d715a6c1ae5785d00fb9a876b5abdfc43abc44b
> >> is the one causing pata_jmicron to fail to detect drives,
> >> connected to the JMicron controler on my motherboard.
> >> At least in my case, anyway...
> >> Changing kernel config to CONFIG_PCIEASPM=n makes the drives
> >> attached to the JMicron SATA/PATA controller usable again. 
> > When you enable this option, did you change any ASPM policy? By default,
> > we are using the BIOS setting, so it shouldn't change any thing. 
> > 
> 
> No, I did not change any ASPM policy, mainly because I do not how. 
> 
> > Also can you please send me the 'lspci -vvvxxxx' output with/without the
> > ASPM enabled? 
> > 
Can you please try below patch?
The Slot 03:00.* of JMicron controller has two functions, but one is
PCIE endpoint the other isn't PCIE device, very strange. PCIE spec
defines all functions should have the same config for ASPM, so disable
ASPM for the whole slot in this case.

Signed-off-by: Shaohua Li <shaohua.li@...el.com>

Index: linux/drivers/pci/pcie/aspm.c
===================================================================
--- linux.orig/drivers/pci/pcie/aspm.c	2008-05-21 16:38:17.000000000 +0800
+++ linux/drivers/pci/pcie/aspm.c	2008-05-21 16:52:35.000000000 +0800
@@ -506,6 +506,23 @@ static void free_link_state(struct pci_d
 	pdev->link_state = NULL;
 }
 
+static int pcie_aspm_sanity_check(struct pci_dev *pdev)
+{
+	struct pci_dev *child_dev;
+	int child_pos;
+
+	/*
+	 * Some functions in a slot might not all be PCIE functions, very
+	 * strange. Disable ASPM for the whole slot
+	 */
+	list_for_each_entry(child_dev, &pdev->subordinate->devices, bus_list) {
+		child_pos = pci_find_capability(child_dev, PCI_CAP_ID_EXP);
+		if (!child_pos)
+			return -EINVAL;
+	}
+	return 0;
+}
+
 /*
  * pcie_aspm_init_link_state: Initiate PCI express link state.
  * It is called after the pcie and its children devices are scaned.
@@ -526,6 +543,9 @@ void pcie_aspm_init_link_state(struct pc
 	if (list_empty(&pdev->subordinate->devices))
 		goto out;
 
+	if (pcie_aspm_sanity_check(pdev))
+		goto out;
+
 	mutex_lock(&aspm_lock);
 
 	link_state = kzalloc(sizeof(*link_state), GFP_KERNEL);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ