I'm sponsoring the following fast track for Andy Sang. The timer is
set to expire on 06/09/2010.
The fast-track and man page documents are located in the case directory
under "materials/"
- Govinda
Template Version: @(#)sac_nextcase 1.70 03/30/10 SMI
This information is Copyright (c) 2010, Oracle and/or its affiliates. All
rights reserved.
1. Introduction
1.1. Project/Component Working Name:
PCITool Output Improvement
1.2. Name of Document Author/Supplier:
Author: Andy Sang
1.3 Date of This Document:
02 June, 2010
4. Technical Description
4. Technical Description:
4.1 Project Summary
PCITool is a low-level tool which provides a facility for getting and
setting interrupt routing information. It is first introduced by
PSARC/2005/232 and then made public by PSARC/2009/215. It's enhanced
to support retargeting MSI/X interrupts by PSARC/2009/340 and improved
to support multi-CPU x86 system by PSARC/2009/665.
Currently PCITool output doesn't provide enough interrupt information
to the customer. To improve PCITool more efficient and friendly, this
project will define the changes to PCITool to retrieve more interrupt
information from kernel, and also will propose some output changes.
These changes are expected to be backported to S10 after the changes
of PSARC/2009/340 and PSARC/2009/665 are backported, so micro/patch
binding is requested.
4.2 PCITool syntax changes
Current syntax:
pcitool pci@<unit-address> -i<cpu#,ino#> | all
[ -r [ -c ] | -w<cpu#> [ -g ] ] [ -v ] [ -q ]
pcitool pci@<unit-address> -m<cpu#,msi#> | all
[ -r [ -c ] | -w<cpu#> [ -g ] ] [ -v ] [ -q ]
Proposed syntax:
pcitool pci@<unit-address> -i<cpu#, ino#> |
[ all [ -s cpu | driver ][ -h | -d ] ]
[ -r [ -c ] | -w<cpu#> [ -g ] ] [ -v ] [ -q ]
pcitool pci@<unit-address> -m<cpu#, msi#> |
[ all [ -s cpu | driver ][ -h | -d ] ]
[ -r [ -c ] | -w<cpu#> [ -g ] ] [ -v ] [ -q ]
4.3 PCITool feature changes
- A new function to make the "all" in "-i all" optional.
- A new option, "-s cpu | driver" to sort by cpu or driver name.
- A new option switch, "-d" and "-h" control displaying all numbers
in decimal or hexadecimal. No "0x" prefix is used in the output
when the -h option is used. The numbers are by default display in
decimal.
4.4 PCITool output changes
This project adds some fields to improve the PCITool output, include:
IRQ/MSG, Type, PIL, APIC/Mondo, Share, inum.
In the output, the Driver field displays driver information for the
interrupts from the real device as below, while it displays ISR name.
drivername # instance number [inum]
Current output:
Show all interrupt information on /p...@0,0
# pcitool /p...@0,0 -i all
0x0,0x21: pcieb 3 /p...@0,0/pci8086,3...@4
0x0,0x22: mpt 0 /p...@0,0/pci8086,3...@4/pci1000,3...@0
0x0,0x24: asy 0 /p...@0,0/i...@1f/a...@1,3f8
Proposed output:
Show all interrupt information on /p...@0,0
# pcitool /p...@0,0 -i
CPU Vect IRQ Type PIL APIC/INT# Share Driver Path
0 32 9 FIXED 9 - 1 acpi_sci_vect -
0 33 - MSI 7 - 1 pcieb#3[0]
/p...@0,0/pci8086,3...@4
0 34 - MSI 5 - 1 mpt#0[0]
/p...@0,0/pci8086,3...@4/pci1000,3...@0
0 35 - MSI 5 - 1 mpt#0[1]
/p...@0,0/pci8086,3...@4/pci1000,3...@0
0 36 4 FIXED 12 1/12 1 asy#1[0]
/p...@0,0/i...@1f/a...@1,3f8
Show all interrupt information on /p...@0,0, sort by driver name,
display numbers in hexadecimal
# pcitool /p...@0,0 -i all -s driver -h
CPU Vect IRQ Type PIL APIC/INT# Share Driver Path
0 20 9 FIXED 9 - 1 acpi_sci_vect -
0 24 4 FIXED c 1/c 1 asy#1[0]
/p...@0,0/i...@1f/a...@1,3f8
0 22 - MSI 5 - 1 mpt#0[0]
/p...@0,0/pci8086,3...@4/pci1000,3...@0
0 23 - MSI 5 - 1 mpt#0[1]
/p...@0,0/pci8086,3...@4/pci1000,3...@0
0 21 - MSI 7 - 1 pcieb#3[0]
/p...@0,0/pci8086,3...@4
Note that the header is different on between x86 platforms and sparc
platforms since the some item meaning is different. The detail is
that "Vector" vs "INO", "IRQ" vs "MSG" and "APIC/INT#" vs "Mondo"
as below example:
Show all interrupt information on /p...@400 on sparc platform
# pcitool /p...@400 -i all
CPU INO MSG Type PIL Mondo Share Driver Path
81 21 - Fixed 9 1045 1 ohci#0[0]
/p...@400/p...@0/p...@1/p...@0/u...@0
44 25 254 MSI-X 6 1049 1 nxge#0[0]
/p...@500/p...@0/p...@8/netw...@0
75 56 48 PCIe 9 1110 1 px#1[0] /p...@500
4.5 Data structure changes
pcitool_intr_get_t
This is the argument data structure for PCITOOL_DEVICE_GET_INTR ioctl,
which retrieve a given interrupt information.
This project adds some new fields to get more information, including
IRQ/MSG, Type, PIL, APIC/Mondo, Share, inum, State, Bus, Triger.
4.6 Bug/RFE Number(s)
The changes described in this case will be done as a follow on work to the
following RFE:
CR 6669984 Solaris x86 need to provide large number of interrupt vectors
4.7 Interfaces
Imported Interfaces
Interface Stability Comments
----------------------------+---------------+--------------------------
pcitool Project Some syntax changes. Added
Private Some new fields (IRQ/MSG,
Type,PIL,APIC/Mondo,Share,
inum) changed output format
PCITOOL_DEVICE_GET_INTR Consolidation Ioctl to retrieve more intr
Private information
pcitool_intr_get_t Consolidation PCITOOL_DEVICE_GET_INTR arg
Private data structure
-----------------------------------------------------------------------
4.8 References
[1] PCITool and its nexus ioctl support - PSARC/2005/232
http://sac.sfbay.sun.com/PSARC/2005/232
[2] PCITool Public Interrupts - PSARC/2009/215
http://sac.sfbay.sun.com/PSARC/2009/215
[3] Interrupt Affinity Interfaces and PCITool Enhancements - PSARC/2009/340
http://sac.sfbay.sun.com/PSARC/2009/340
[4] PCITool Extensions - PSARC/2009/665
http://sac.sfbay.sun.com/PSARC/2009/665
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
ON
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open
_______________________________________________
opensolaris-arc mailing list
[email protected]