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-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0706301617240.16011@bizon.gios.gov.pl>
Date:	Sat, 30 Jun 2007 16:55:19 +0200 (CEST)
From:	Krzysztof Oledzki <olel@....pl>
To:	linux-kernel@...r.kernel.org
Subject: IRQ handling difference between i386 and x86_64

Hello,

It seems that IRQ handling is somehow different between i386 and x86_64.

In my Dell PowerEdge 1950 is it possible to enable interrupts spreading 
over all CPUs. This a single CPU, four CORE system (Quad-Core E5335 Xeon) 
so I think that interrupts migration may be useful. Unfortunately, it 
works only with 32-bit kernel. Booting it with x86_64 leads to situation, 
when all interrupts goes only to the first cpu matching a smp_affinity 
mask.

# cat /proc/interrupts (i386)
            CPU0       CPU1       CPU2       CPU3
   0:        402          1          3          3   IO-APIC-edge      timer
   1:          1          0          1          0   IO-APIC-edge      i8042
   8:         13         13         12         13   IO-APIC-edge      rtc
   9:          0          0          0          0   IO-APIC-fasteoi   acpi
  12:          1          1          0          2   IO-APIC-edge      i8042
  14:          5          4          4          4   IO-APIC-edge      libata
  15:          0          0          0          0   IO-APIC-edge      libata
  20:          0          0          0          0   IO-APIC-fasteoi   libata
  21:       1428       1434       1433       1435   IO-APIC-fasteoi   ioc0
  22:          6          6          6          6   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
  23:         18         24         23         18   IO-APIC-fasteoi   uhci_hcd:usb3
212:          1          1          1          0   PCI-MSI-edge      eth1
213:       1045       1039       1039       1041   PCI-MSI-edge      eth0
214:          0          0          0          0   PCI-MSI-edge      ioat
NMI:          0          0          0          0 
LOC:    3284200    3283865    3286809    3283934 
ERR:          0
MIS:          0

# cat /proc/interrupts (x86_64)
            CPU0       CPU1       CPU2       CPU3
   0:     330199          0          0          0   IO-APIC-edge      timer
   1:          2          0          0          0   IO-APIC-edge      i8042
   8:         16          0          0          0   IO-APIC-edge      rtc
   9:          0          0          0          0   IO-APIC-fasteoi   acpi
  12:          4          0          0          0   IO-APIC-edge      i8042
  14:         16          0          0          0   IO-APIC-edge      libata
  15:          0          0          0          0   IO-APIC-edge      libata
  20:         48          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
  21:         24          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
  23:          0          0          0          0   IO-APIC-fasteoi   libata
  64:       5104          0          0          0   IO-APIC-fasteoi   ioc0
372:          3          0          0          0   PCI-MSI-edge      eth1
373:        540          0          0          0   PCI-MSI-edge      eth0
374:          0          0          0          0   PCI-MSI-edge      ioat
NMI:          0          0          0          0 
LOC:     330055     330041     329953     329858 
ERR:          0

Please notice also that irq numbers are different:
  - libata: 20 on i386, 23 on x86_64
  - ioc: 21 on i386, 64 on x86_64
  - ehci_hcd:usb1: 22 on i386, 21 on x86_64
  - uhci_hcd:usb3: 23 on i386, 20 on x86_64
  - eth1, eth0, ioat: 212/213/214 on i386, 372/373/374 on x86_64

Two question:
  - Is it possible to make irq spreading working on x86_64?
  - Why the irq numbers are different?

Attaching dmesg and lspci from both i386 and x86_64.

Best regards,


 				Krzysztof Olędzki
View attachment "dmesg-32" of type "TEXT/PLAIN" (30231 bytes)

View attachment "dmesg-64" of type "TEXT/PLAIN" (28154 bytes)

View attachment "lspci-32" of type "TEXT/PLAIN" (65870 bytes)

View attachment "lspci-64" of type "TEXT/PLAIN" (67584 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ