Wednesday Nov 08, 2006

New misc module: pcie(7d) for x64 Solaris

PCI Express x64 Install errors: post Solaris Express Build 53


In case Solaris Express installation fails or hangs on your PCI Express system, then discard the previous suggested workaround per x64_solaris_installation_could_fail. Solaris Express Build 53 introduces a new module for x64 PCI Express Error handling called - pcie(7d). This is same as on the SPARC based machines. The workaround is now:

Step 1: Boot with -kd option

Do break into the GRUB menu editor and append "-kd" to
the line that begins with "kernel ..."

When Solaris boots, it will pause at the kernel debugger prompt.

Step 2: Set a kernel breakpoint for the symbol "attach_drivers" thus:
[0]> ::bp -d -n 1 attach_drivers
[0]> :c

Step 3: Disable PCI Express Error Handling thus:
[0]> pcie`pcie_error_disable_flag/W 1
[0]> :c

Step 4: To make this setting permanent, append to /etc/system
set pcie:pcie_errror_disable_flag = 1

A more permanent solution is in the works.

Thursday Jun 15, 2006

Dinosaurs in the desert.

Living 40 miles away from Palm Springs took a while getting used to hot summers and cold nights. But, the area started to grow on us.  Driving around, I was surprised to find  Dinosaurs near Cabazon. Here is a picture I took recently.
Will keep updating this link with more regional tid bits.

Wednesday Jun 14, 2006

OpenSolaris a Gemini?


Yes, OpenSolaris is a Gemini !!
It is probably more famous than these Geminis were when they were a year old.
Happy Birthday !!

Monday Jun 12, 2006

::softint added for x64 servers


On SPARC based systems, ::softint MDB macro provided software interrupt information. This macro was not ported over to the x64 side. Now, starting with Solaris 11 Build 42 onwards one can get live software interrupt info on the x64 systems.

# echo ::softint | mdb -k
ADDR PEND PIL ARG1 ARG2 ISR(s)
ffffffff8634d880 0 1 ffffffff8c547000 0 nge_chip_factotum
ffffffff854e6800 0 1 ffffffff8c547000 0 nge_reschedule
ffffffff84ceb380 0 1 ffffffff86a0d000 0 nge_chip_factotum
ffffffff84ceb500 0 1 ffffffff86a0d000 0 nge_reschedule
ffffffff84536f00 0 1 ffffffff82bb7b40 0 errorq_intr
fffffffffbc05b08 0 1 0 0 softlevel1
ffffffff8453c380 0 2 ffffffff82bb2400 0 errorq_intr
ffffffff8453c200 0 2 ffffffff82bb7e00 0 errorq_intr
fffffffffbc008a8 0 2 0 0 cbe_low_level
ffffffff8b487d80 0 4 ffffffff91113200 0 power_soft_intr
ffffffff861db180 0 4 ffffffff856bb198 0 ghd_doneq_process
ffffffff854e6880 0 4 ffffffff856bb198 0 ghd_timeout_softintr
ffffffff8453c800 0 4 0 0 asysoftintr
ffffffff84536d80 0 4 ffffffff842248d8 0 ghd_doneq_process
ffffffff84536c80 0 4 ffffffff842248d8 0 ghd_timeout_softintr
ffffffff8453cf80 0 9 ffffffff8558eda0 0 hcdi_soft_intr
ffffffff8453cb00 0 9 ffffffff82cd88c0 0 hcdi_soft_intr
fffffffffbc00868 0 10 0 0 cbe_softclock
#

Note that with Advanced DDI Interrupt Interfaces, interrupt service routines take two arguments (ARG1, ARG2) and the software interrupt identifier is ADDR.

Technorati Tag: Technorati Tag:

Friday Jun 09, 2006

x64: Solaris Installation could fail with certain PCI Express chipsets

                Solaris Express x64 Installation failures with certain PCI Express Chipsets

Solaris Express x64 installation, after PCI Express support was added, could fail with certain
PCI Express chipsets. This is specially seen with ATI's RS480 chipsets.  It has been fixed in
Solaris Express Build 41. Interim, if you run into this, you could apply this workaround:
Step 1: Boot with -kd option
You could break into GRUB menu editor
and append "-kd" to the line that begins with "kernel ..."

When Solaris boots, it will stop at the kernel debugger.

Step 2: Set a debugger breakpoint for the symbol "attach_drivers" thus:
::bp -d -n 1 attach_drivers
:c

Solaris will hit above breakpoint
Step 3: Disable Error Handling
npe`pcie_error_disable_flag/W 1
:c

Step 4: This setting could be made permanent by adding this line to /etc/system
set npe:pcie_errror_disable_flag = 1

Note that, above is not needed post Solaris Express Build 41.
 


Technorati Tag: Technorati Tag:

Wednesday Apr 26, 2006

LPR Vehicle

Fun stuff on the road


Driving to work, noticed a car identified itself as License Plate Recognition Vehicle using PIPS Technology.
Checked out their website and it was kind cool to see how license plates are being read and verified.

Friday Apr 14, 2006

Equivalent of 'cat /proc/interrupts'


        New MDB dcmd ::interrupts


Solaris Express now has support for a new MDB dcmd ::interrupts
that shows similar output to that of 'cat /proc/interrupts' on Linux.


Output of ::interrupts on a x64 running 64-bit Solaris Express:
(System is using IOAPIC)

# echo ::interrupts | mdb -k
IRQ  Vector IPL Bus   Type  CPU Share APIC/INT# ISR(s)
3    0xb1   12  ISA   Fixed 1    1    0x0/0x3   asyintr
4    0xb0   12  ISA   Fixed 1    1    0x0/0x4   asyintr
6    0x42   5   ISA   Fixed 3    1    0x0/0x6   fdc_intr
9    0x80   9   PCI   Fixed 1    1    0x0/0x9   acpi_wrapper_isr
15   0x41   5   ISA   Fixed 2    1    0x0/0xf   ata_intr
16   0x81   9   PCI   Fixed 1    3    0x0/0x10  hci1394_isr, uhci_intr, uhci_intr
17   0x82   9   PCI   Fixed 2    1    0x0/0x11  audio810_intr
18   0x40   5   PCI   Fixed 3    3    0x0/0x12  ata_intr, uhci_intr, ata_intr
19   0x22   1   PCI   Fixed 1    1    0x0/0x13  uhci_intr
23   0x20   1   PCI   Fixed 0    1    0x0/0x17  ehci_intr
24   0x45   5   PCI   Fixed 0    1    0x1/0x0   adpu320_intr
48   0x60   6   PCI   Fixed 2    1    0x2/0x0   e1000g_intr
72   0x43   5         MSI   3    1    -         mpt_intr
73   0x44   5         MSI   3    1    -         mpt_intr
160  0xa0   0         IPI   ALL  0    -         poke_cpu
192  0xc0   13        IPI   ALL  1    -         xc_serv
208  0xd0   14        IPI   ALL  1    -         kcpc_hw_overflow_intr
209  0xd1   14        IPI   ALL  1    -         cbe_fire
210  0xd3   14        IPI   ALL  1    -         cbe_fire
224  0xe0   15        IPI   ALL  1    -         xc_serv
225  0xe1   15        IPI   ALL  1    -         apic_error_intr

Where IPL is the interrupt priority, APIC is the local APIC,
Driver name is represented as <driver_name><instance#>
and Type shows where Fixed (legacy) or MSI interrupts are being used.
IPI interrupt type indicates xcalls.
The Share column shows if the interrupt is being shared and by how many.

On a uppc(7d)  based system, the sample output is shown here

# echo ::interrupts | mdb -k 
> ::interrupts
IRQ  Vector IPL(lo/hi) Bus Share ISR(s)
  0   0x20     14/14    -     1  cbe_fire
  3   0x23     12/12   ISA    1  asyintr
  4   0x24     12/12   ISA    1  asyintr
  5   0x25      1/1    PCI    1  ehci_intr
  6   0x26      5/5    ISA    1  fdc_intr
  7   0x27      5/5    ISA    1  ecpp_isr
  9   0x29      9/9     -     1  acpi_wrapper_isr
 10   0x2a      1/9    PCI    3  e1000g_intr, hci1394_isr, uhci_intr
 11   0x2b      1/1    PCI    1  uhci_intr
 12   0x2c      1/9    PCI    2  uhci_intr, audiovia823x_intr
 14   0x2e      5/5    PCI    1  ata_intr
 15   0x2f      5/5    PCI    1  ata_intr
# echo ::interrupts -d | mdb -k
IRQ  Vector IPL(lo/hi) Bus Share Driver Name(s)
  0   0x20     14/14    -     1  cbe_fire
  3   0x23     12/12   ISA    1  asy#1
  4   0x24     12/12   ISA    1  asy#0
  5   0x25      1/1    PCI    1  ehci#0
  6   0x26      5/5    ISA    1  fdc#0
  7   0x27      5/5    ISA    1  ecpp#0
  9   0x29      9/9     -     1  acpi_wrapper_isr
 10   0x2a      1/9    PCI    3  e1000g#0, hci1394#0, uhci#1
 11   0x2b      1/1    PCI    1  uhci#0
 12   0x2c      1/9    PCI    2  uhci#2, audiovia823x#0
 14   0x2e      5/5    PCI    1  ata#0
 15   0x2f      5/5    PCI    1  ata#1


On a Niagara based SunFire T2000, the output looks like this:

# echo ::interrupts | mdb -k

        Device   Shared  Type    MSG #   State   INO     Mondo    Pil    CPU   
      e1000g#1      no   MSI        1    enbl    0x19    0x799      6     26 
      e1000g#0      no   MSI        0    enbl    0x18    0x798      6     18 
          px#0      no   PCIe      27    enbl    0x3b    0x7bb      1     30 
          px#0      no   PCIe      51    enbl    0x3a    0x7ba     14     31 
          px#0      no   PCIe      49    enbl    0x39    0x7b9     14      0 
          px#0      no   PCIe      48    enbl    0x38    0x7b8      9      1 
      e1000g#3      no   MSI        2    enbl    0x1a    0x7da      6     28 
      e1000g#2      no   MSI        1    enbl    0x19    0x7d9      6     27 
          su#0      no   Fixed    ---    enbl    0x2     0x7c2     12     20 
        uata#0      no   Fixed    ---    enbl    0x4     0x7c4      4      3 
        ohci#1      no   Fixed    ---    enbl    0x3     0x7c3      9     22 
        ohci#0      no   Fixed    ---    enbl    0x1     0x7c1      9     23 
         mpt#0      no   MSI        0    enbl    0x18    0x7d8      4     19 
          px#1      no   PCIe      27    enbl    0x3b    0x7fb      1     24 
          px#1      no   PCIe      51    enbl    0x3a    0x7fa     14     25 
          px#1      no   PCIe      49    enbl    0x39    0x7f9     14     26 
          px#1      no   PCIe      48    enbl    0x38    0x7f8      9     27 

Here interrupt Type PCIe implies it is using PCI Express  INTx.


On a SunFire V890, (which does not support MSI interrupts, the ouput looks like this:

# echo ::interrupts | mdb -k
        Device   Shared  Type    MSG #   State   INO     Mondo    Pil    CPU   
        uata#0      no   Fixed    ---    enbl    0x1c    0x21c      4     19 
          ge#0      no   Fixed    ---    enbl    0x0     0x200      6      7 
         qlc#0      no   Fixed    ---    enbl    0x4     0x204      4     18 
          su#1      no   Fixed    ---    enbl    0x2d    0x26d     12      1 
          su#0      no   Fixed    ---    enbl    0x2e    0x26e     12      0 
     pcf8584#2     yes   Fixed    ---    enbl    0x28    0x268      4      2 
     pcf8584#3     yes   Fixed    ---    enbl    0x28    0x268      4      2 
         eri#0      no   Fixed    ---    enbl    0x1d    0x25d      6     17 
        ohci#0      no   Fixed    ---    enbl    0x1f    0x25f      9     20 
          se#0      no   Fixed    ---    enbl    0x22    0x262     12     21 
   todds1287#0      no   Fixed    ---    enbl    0x24    0x264     15     22 
     hpc3130#3      no   Fixed    ---    enbl    0x26    0x266      1     23 
     hpc3130#0     yes   Fixed    ---    enbl    0x27    0x267      1      7 
     hpc3130#1     yes   Fixed    ---    enbl    0x27    0x267      1      7 
     hpc3130#2     yes   Fixed    ---    enbl    0x27    0x267      1      7 
     pcf8584#1     yes   Fixed    ---    enbl    0x23    0x263      4      0 
     pcf8584#0     yes   Fixed    ---    enbl    0x23    0x263      4      0 



Technorati Tag: Technorati Tag:

Wednesday Mar 29, 2006

New Article on Advanced DDI interrupt interfaces

A new article has been posted to http://developers.sun.com/  that has all the details about
Advanced DDI Interrupt Handlers.

Thanks to John Stearns for making it possible.


Technorati Tag: Technorati Tag:

Tuesday Feb 28, 2006

In India in Feb 2006

Recent India Trip Feb 2006


I was in India and went to visit the holy Mata Vaishno Devi Shrine on Feb 18. 
First I traveled by bus with a couple of friends to the town of Katra. We then
took an auto-rickshaw to Ban Ganga which forms the Holy Entrance for the trek.
The temple is located at 5200ft above sea level and is 13 kilometers (~8 miles) away from Ban Ganga.

One could walk along the serpentine paved path or walk up the steps all the way to the top.
We walked along the path and took the steps most of the way down.
Here is a View of Trikuta Hills taken about 50 miles away shows the serpentine trekking route
to the top of the hills ( see the white dotted lines). I have seen people run, crawl and roll up
the entire path. Our visit (or darshan) was successfully done within 8 hours.

On an unrelated topic, here is a picture of an Elephant near my house in Jammu Tawi.



Monday Jan 30, 2006

SX 1/06: PCIe x86


See What's new for SX 1/06 for details on x86: PCI Express Support.


Technorati Tag: Technorati Tag:

Wednesday Dec 28, 2005

Few more MSI capable drivers

Since initial MSI support which was added in OpenSolaris, number of drivers that
use MSIs (if the underlying hardware is capable) has increased. List includes:
  • bge (Broadcom GbE)
  • mpt (LSI Logic SCSI HBA)
  • ehci/ohci/uhci (USB EHCI/OpenHCI/UHCI)
  • e1000g (Intel GbE)
  • tavor (InfiniBand HCA)
  • px_pci (Sparc PCIe to PCI bridge driver)
  • qlc (Qlogic FC HBA)

In addition, the following drivers use the new Advanced DDI Interrupt Framework natively.
  • audio1575 (Sparc Audio driver )
  • pcie_pci (x86 PCIe bridge driver)
  • qcn (on Sparc servers)
  • rge (Realtek GbE driver)
  • nge (Nvidia GbE driver)
  • SATA HBA drivers


  • Technorati Tag: Technorati Tag:

Tuesday Dec 27, 2005

PCIe support for x86

"x86" Support for PCI Express (PCIe)


OpenSolaris b28 onwards provides support for  the PCIe (PCIe) interconnect which is designed to interconnect peripheral devices to desktop, enterprise, mobile, communcation, and embedded applications. For details on PCIe serial I/O bus see PCI SIG.

With Opensolaris b28 release onwards the followin features are being provided
  • Support for PCIe extended configuration space
  • New nexus drivers for PCIe (npe(7d)) and PCIe to PCI bridge (pcie_pci(7d))
    • On PCIe systems npe(7d) replaces pci(7d)
    • This can be viewed through prtconf(1m)
  • Support for MSI interrupts and PCIe baseline error handling
  • Modified IEEE-1275 properties (device_type shows 'pciex' )
    • Any OpenSolaris drivers that look for device_type "pci" should also look for "pciex"
  • Support for PCIe hotplug (both ACPI based and Native PCIe).
    • Provided via cfgadm(1m) CLI by modifying cfgadm_pci(1m)
    • ATTN Button usage based PCIe peripheral auto-configuration
    • Administrative model for PCIe hotplug is akin to PCI

Sunday Dec 25, 2005

Details at Wikipedia

I have been adding stuff about Jammu Tawi at  the existing Wikipedia link.
See details at Jammu Tawi which has all the gory details ;-)


Friday Nov 04, 2005

Solaris b26: changes to DDI interrupt interfaces

Legacy DDI interrupt interfaces update


More legacy DDI interrupt interfaces are obsoleted


With Solaris b26 the following DDI Interrupt interfaces and data structures are being obsoleted:
  • ddi_dev_nintrs(9f)
  • ddi_get_iblock_cookie(9f)
  • ddi_intr_hilevel(9f)
  • ddi_add_intr(9f)
  • ddi_remove_intr(9f)
  • ddi_get_soft_iblock_cookie(9f)
  • ddi_add_softintr(9f)
  • ddi_remove_softintr(9f)
  • ddi_trigger_softintr(9f)
  • ddi_idevice_cookie(9s)

See modified Appendix B of the latest Solaris Express WDD that maps above obsoleted interfaces, data structures
to the new DDI Interrupt interfaces and data structures respectively.


We strongly urge the device driver developers to start using the new interrupt DDI Interfaces

Technorati Tag: Technorati Tag:

Monday Jul 11, 2005

Solaris Express 6/05 WDD released

Updated WDD for Solaris Express 6/05 Here is the updated WDD. It has details about the Advanced DDI interrupt interfaces.

Technorati Tag: Technorati Tag:
About

anish

Search

Top Tags
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today