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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <201005191044.05072.bjorn.helgaas@hp.com>
Date:	Wed, 19 May 2010 10:44:04 -0600
From:	Bjorn Helgaas <bjorn.helgaas@...com>
To:	Graham Ramsey <ramsey.graham@...world.com>
Cc:	linux-kernel@...r.kernel.org, Yinghai Lu <yinghai@...nel.org>,
	linux-pci@...r.kernel.org
Subject: Re: x86/pci Oops with CONFIG_SND_HDA_INTEL

On Wednesday, May 19, 2010 09:13:24 am Graham Ramsey wrote:
> I am on x86_64 with latest (v2.6.34) kernel. When i set 
> CONFIG_SND_HDA_INTEL=Y It hangs at an early stage in boot with kernel oops.
> When i use CONFIG_SND_HDA_INTEL=M the machine will boot, and i get the 
> dmesg (below).
> 
> I have bisected down to one commit that causes the problem:
> 
>    commit 3e3da00c01d050307e753fb7b3e84aefc16da0d0
>    x86/pci: AMD one chain system to use pci read out res
>    ...

I CC'd Yinghai, the author of that patch.  That commit went in after
2.6.33, so this is probably a regression between .33 and .34.  Can
you open a report at https://bugzilla.kernel.org and respond to this
thread with the URL?

Please attach the complete dmesg (with SND_HDA_INTEL=m) to the
bugzilla.

Thanks a lot for your report!

Bjorn

> I have reverted this in my current kernel (v3.6.34) and it seems to work 
> OK like this.
> Is it possible to get this commit either removed, or amended to work 
> with SND_HDA_INTEL ?
 
> OOPS from dmesg
> ---------------
> Pid: 1714, comm: modprobe Not tainted 2.6.34 #3 
> ALiveSATA2-GLAN/ALiveSATA2-GLAN
> RIP: 0010:[<ffffffffa0018d11>]  [<ffffffffa0018d11>] 
> azx_probe+0x3a2/0xa6a [snd_hda_intel]
> RSP: 0018:ffff88007e80bd18  EFLAGS: 00010282
> RAX: ffffc90000078000 RBX: ffff88007d724c00 RCX: 000000000000000d
> RDX: 0000000000000000 RSI: 0000000000000246 RDI: ffffffff813f2f24
> RBP: ffff88007f9da088 R08: 0000000000000000 R09: 0000000000000040
> R10: 0000000000000008 R11: 000000000000000a R12: ffff88007f9da000
> R13: ffff88007d726400 R14: 0000000000000000 R15: 0000000000000000
> FS:  00007f1a13aa6700(0000) GS:ffff880001700000(0000) 
> knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: ffffc90000078000 CR3: 0000000037ad1000 CR4: 00000000000006e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process modprobe (pid: 1714, threadinfo ffff88007e80a000, task 
> ffff88007d0ed080)
> Stack:
>   0000000000000292 0000000000000005 ffff88007f9c62c8 ffff88007d60e948
> <0> ffff88007d60e948 ffffffff810c5d3f ffff88007e80bd64 ffff88007e80bdb8
> <0> ffff88007f9033f0 ffff88007d60e948 ffff88007e80bdb8 ffff88007e80bdb8
> Call Trace:
>   [<ffffffff810c5d3f>] ? sysfs_addrm_finish+0x29/0xb4
>   [<ffffffff8116e849>] ? local_pci_probe+0x12/0x19
>   [<ffffffff8116ea65>] ? pci_device_probe+0x60/0x8e
>   [<ffffffff811ac286>] ? driver_sysfs_add+0x42/0x69
>   [<ffffffff811ac4cd>] ? driver_probe_device+0x8e/0x10e
>   [<ffffffff811ac59c>] ? __driver_attach+0x4f/0x6f
>   [<ffffffff811ac54d>] ? __driver_attach+0x0/0x6f
>   [<ffffffff811ab8cc>] ? bus_for_each_dev+0x47/0x72
>   [<ffffffff811abede>] ? bus_add_driver+0xa2/0x1f2
>   [<ffffffff811ac7bc>] ? driver_register+0x8d/0xf5
>   [<ffffffff8116ecb0>] ? __pci_register_driver+0x50/0xbb
>   [<ffffffffa001e000>] ? alsa_card_azx_init+0x0/0x22 [snd_hda_intel]
>   [<ffffffff810002d0>] ? do_one_initcall+0x4f/0x13f
>   [<ffffffff8104aa56>] ? sys_init_module+0xc5/0x2cf
>   [<ffffffff81001eab>] ? system_call_fastpath+0x16/0x1b
> Code: 83 f0 01 00 00 31 f6 48 89 df e8 9f e4 ff ff 85 c0 0f 88 f5 03 00 
> 00 4c 89 e7 e8 e2 45 15 e1 8b 7b 40 e8 70 41 03 e1 48 8b 43 38 <66> 44 
> 8b 38 8b 43 14 83 e8 03 83 f8 01 77 2c 31 d2 be 85 43 00
> RIP  [<ffffffffa0018d11>] azx_probe+0x3a2/0xa6a [snd_hda_intel]
>   RSP <ffff88007e80bd18>
> CR2: ffffc90000078000
> ---[ end trace 1814cadd98ff217d ]---
> 
> 
> 
> Patch for revert of commit
> -------------------------------------
> 
> --- a/arch/x86/pci/amd_bus.c
> +++ b/arch/x86/pci/amd_bus.c
> @@ -83,12 +83,11 @@ static int __init early_fill_mp_bus_info(void)
>          struct range range[RANGE_NUM];
>          u64 val;
>          u32 address;
> -       bool found;
> 
>          if (!early_pci_allowed())
>                  return -1;
> 
> -       found = false;
> +       found_all_numa_early = 0;
>          for (i = 0; i < ARRAY_SIZE(pci_probes); i++) {
>                  u32 id;
>                  u16 device;
> @@ -102,12 +101,12 @@ static int __init early_fill_mp_bus_info(void)
>                  device = (id>>16) & 0xffff;
>                  if (pci_probes[i].vendor == vendor &&
>                      pci_probes[i].device == device) {
> -                       found = true;
> +                       found_all_numa_early = 1;
>                          break;
>                  }
>          }
> 
> -       if (!found)
> +       if (!found_all_numa_early)
>                  return 0;
> 
>          pci_root_num = 0;
> diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
> index 64a1228..894a17e 100644
> --- a/arch/x86/pci/bus_numa.c
> +++ b/arch/x86/pci/bus_numa.c
> @@ -6,6 +6,7 @@
> 
>   int pci_root_num;
>   struct pci_root_info pci_root_info[PCI_ROOT_NR];
> +int found_all_numa_early;
> 
>   void x86_pci_root_bus_res_quirks(struct pci_bus *b)
>   {
> @@ -21,6 +22,10 @@ void x86_pci_root_bus_res_quirks(struct pci_bus *b)
>          if (!pci_root_num)
>                  return;
> 
> +       /* for amd, if only one root bus, don't need to do anything */
> +       if (pci_root_num < 2 && found_all_numa_early)
> +               return;
> +
>          for (i = 0; i < pci_root_num; i++) {
>                  if (pci_root_info[i].bus_min == b->number)
>                          break;
> diff --git a/arch/x86/pci/bus_numa.h b/arch/x86/pci/bus_numa.h
> index 804a4b4..d4ad5fa 100644
> --- a/arch/x86/pci/bus_numa.h
> +++ b/arch/x86/pci/bus_numa.h
> @@ -19,6 +19,7 @@ struct pci_root_info {
>   #define PCI_ROOT_NR 4
>   extern int pci_root_num;
>   extern struct pci_root_info pci_root_info[PCI_ROOT_NR];
> +extern int found_all_numa_early;
> 
>   extern void update_res(struct pci_root_info *info, resource_size_t start,
>                        resource_size_t end, unsigned long flags, int 
> merge);
> 
> My lspci
> --------
> 
> 00:00.0 Host bridge: VIA Technologies, Inc. K8T890CF Host Bridge
> 00:00.1 Host bridge: VIA Technologies, Inc. VT3351 Host Bridge
> 00:00.2 Host bridge: VIA Technologies, Inc. VT3351 Host Bridge
> 00:00.3 Host bridge: VIA Technologies, Inc. VT3351 Host Bridge
> 00:00.4 Host bridge: VIA Technologies, Inc. VT3351 Host Bridge
> 00:00.5 PIC: VIA Technologies, Inc. VT3351 I/O APIC Interrupt Controller
> 00:00.7 Host bridge: VIA Technologies, Inc. VT3351 Host Bridge
> 00:01.0 PCI bridge: VIA Technologies, Inc. [K8T890 North / VT8237 South] 
> PCI Bridge
> 00:02.0 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge 
> Controller
> 00:03.0 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge 
> Controller
> 00:03.1 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge 
> Controller
> 00:03.2 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge 
> Controller
> 00:03.3 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge 
> Controller
> 00:0f.0 RAID bus controller: VIA Technologies, Inc. VT8237A SATA 2-Port 
> Controller (rev 80)
> 00:0f.1 IDE interface: VIA Technologies, Inc. 
> VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 07)
> 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
> Controller (rev a0)
> 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
> Controller (rev a0)
> 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
> Controller (rev a0)
> 00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
> Controller (rev a0)
> 00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)
> 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237A PCI to ISA Bridge
> 00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
> 00:13.0 Host bridge: VIA Technologies, Inc. VT8237A Host Bridge
> 00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
> HyperTransport Technology Configuration
> 00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
> Address Map
> 00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
> DRAM Controller
> 00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
> Miscellaneous Control
> 02:00.0 SATA controller: JMicron Technology Corp. JMB362/JMB363 Serial 
> ATA Controller (rev 02)
> 02:00.1 IDE interface: JMicron Technology Corp. JMB362/JMB363 Serial ATA 
> Controller (rev 02)
> 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. 
> RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
> 06:00.0 VGA compatible controller: nVidia Corporation G71 [GeForce 7900 
> GS] (rev a1)
> 80:01.0 Audio device: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA 
> High Definition Audio Controller) (rev 10)
--
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