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]
Date:	Mon, 4 Jun 2007 11:24:22 +0200 (CEST)
From:	Thomas Voegtle <tv@...96.de>
To:	Robert Hancock <hancockr@...w.ca>
cc:	linux-kernel@...r.kernel.org
Subject: Re: hisax isdn card (Sedlbauer Speed Fax+) does not get an interrupt

Hi Robert,

On Thu, 31 May 2007, Robert Hancock wrote:

> Thomas Voegtle wrote:
> > 
> > ==========================================================================
[...]
> > <03>2007 May 30 14:21:40 cbs kern: irq 11: nobody cared (try booting with
> > the \"irqpoll\" option)
> > <04>2007 May 30 14:21:40 cbs kern: [<c012f243>] __report_bad_irq+0x2b/0x69
> > <04>2007 May 30 14:21:40 cbs kern: [<c012f3e7>] note_interrupt+0x166/0x193
> > <04>2007 May 30 14:21:40 cbs kern: [<c03089c0>] usb_hcd_irq+0x23/0x4f
> > <04>2007 May 30 14:21:40 cbs kern: [<c012ee7c>] handle_IRQ_event+0x21/0x4a
> > <04>2007 May 30 14:21:40 cbs kern: [<c012ef0d>] __do_IRQ+0x68/0x8f
> > <04>2007 May 30 14:21:40 cbs kern: [<c01050de>] do_IRQ+0x5c/0x77
> > <04>2007 May 30 14:21:40 cbs kern: =======================
> > <04>2007 May 30 14:21:40 cbs kern: [<c0103ada>] common_interrupt+0x1a/0x20
> > <04>2007 May 30 14:21:40 cbs kern: [<c011a87c>] __do_softirq+0x2c/0x7d
> > <04>2007 May 30 14:21:40 cbs kern: [<c0105131>] do_softirq+0x38/0x3f
> > <04>2007 May 30 14:21:40 cbs kern: =======================
> > <04>2007 May 30 14:21:40 cbs kern: [<c01050f0>] do_IRQ+0x6e/0x77
> > <04>2007 May 30 14:21:40 cbs kern: [<c0103ada>] common_interrupt+0x1a/0x20
> > <04>2007 May 30 14:21:40 cbs kern: [<d894007b>] W6692B_interrupt+0x23c/0x559
> > [hisax]
> > <04>2007 May 30 14:21:40 cbs kern: [<c010b893>] delay_pmtmr+0xb/0x13
> > <04>2007 May 30 14:21:40 cbs kern: [<c01b73f5>] __delay+0x9/0xa
> > <04>2007 May 30 14:21:40 cbs kern: [<d892f834>] setup_sedlbauer+0x1ee/0x534
> > [hisax]
> > <04>2007 May 30 14:21:40 cbs kern: [<c01175e8>] printk+0x12/0x16
> > <04>2007 May 30 14:21:40 cbs kern: [<d890dcdb>] checkcard+0x201/0x566
> > [hisax]
> > <04>2007 May 30 14:21:40 cbs kern: [<d890dd62>] checkcard+0x288/0x566
> > [hisax]
> > <04>2007 May 30 14:21:40 cbs kern: [<d88554dc>] HiSax_init+0x4dc/0x57a
> > [hisax]
> > <04>2007 May 30 14:21:40 cbs kern: [<c0159693>] new_inode+0x14/0x76
> > <04>2007 May 30 14:21:40 cbs kern: [<c017340c>] sysfs_add_file+0x1f/0x52
> > <04>2007 May 30 14:21:40 cbs kern: [<c01275fc>]
> > debug_mutex_add_waiter+0x14/0x24
> > <04>2007 May 30 14:21:40 cbs kern: [<c0173995>] sysfs_new_dirent+0x17/0x56
> > <04>2007 May 30 14:21:40 cbs kern: [<c012a782>]
> > sys_init_module+0x1364/0x1439
> > <04>2007 May 30 14:21:40 cbs kern: [<c013711c>]
> > vma_prio_tree_insert+0x17/0x2a
> > <04>2007 May 30 14:21:40 cbs kern: [<c013ac54>] vma_link+0x85/0x8b
> > <04>2007 May 30 14:21:40 cbs kern: [<c013c7a4>] do_mmap_pgoff+0x4e7/0x634
> > <04>2007 May 30 14:21:40 cbs kern: [<c0106f44>] sys_mmap2+0x61/0x90
> > <04>2007 May 30 14:21:40 cbs kern: [<c0102a79>] syscall_call+0x7/0xb
> > <03>2007 May 30 14:21:40 cbs kern: handlers:
> > <03>2007 May 30 14:21:40 cbs kern: [<c030899d>] (usb_hcd_irq+0x0/0x4f)
> > <00>2007 May 30 14:21:40 cbs kern: Disabling IRQ #11
[...]
> 
> Likely a driver problem - the device is using IRQ 11, but the driver never
> actually registered a handler for that interrupt (it's not in the list of
> handlers, only USB is). Maybe retrieving the interrupt before
> pci_enable_device? (I haven't looked at the code in question.)

Thx for your answer. Unfortunately, it didn't help us yet in finding a fix 
for the problem.

The first IRQs are received after the call to pci_enable_device, but 
before the IRQ handler itself is registered (register_irq). The IRQs seem 
to be triggered by the write operations to the card registers 
(byteout()/outb() calls around lines 676ff in sedlbauer.c); the IRQ 
handler is registered much later, though. The dump above suggests that the 
kernel relays the interrupts to the USB handler (on the same IRQ) instead 
- which obviously is wrong.

In short:
* pci_enable_device
* writing to card registers -> triggering interrupts
  (handler not yet installed -> error)
* register interrupt -> fails, as it already was disabled due to the 
  errors

Again: thx for your comments. Do you have any further ideas/advice on how 
to get the driver running?

      Thomas

-- 
 Thomas Vögtle    email: thomas@...gtle-clan.de
 ----- http://www.voegtle-clan.de/thomas ------

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ