Eric, Thanks for the informtion. >From the opensolaris source code, it seems like to get the target_apic_id from >cpuid is to use apic_cpu[cpuid].
> apic_cpus/J apic_cpus: apic_cpus: ffffff04e68775c0 > ffffff04e68775c0::print -axt apic_cpus_info_t { ffffff04e68775c0 uint32_t aci_local_id = 0x4 <---------- ffffff04e68775c4 uchar_t aci_local_ver = 0x10 ffffff04e68775c5 uchar_t aci_status = 0x3 ffffff04e68775c6 uchar_t aci_redistribute = 0 ffffff04e68775c8 uint_t aci_busy = 0 ffffff04e68775cc uint_t aci_spur_cnt = 0x159b ffffff04e68775d0 uint_t aci_ISR_in_progress = 0 ffffff04e68775d4 uchar_t aci_curipl = 0 ffffff04e68775d5 uchar_t [16] aci_current = [ 0, 0, 0, 0xfe, 0, 0x38, 0x48, 0, 0, 0x14, 0, 0xa0, 0x4, 0, 0xd2, 0xf0 ] ffffff04e68775e8 uint32_t aci_bound = 0 ffffff04e68775ec uint32_t aci_temp_bound = 0xffffffe8 ffffff04e68775f0 uchar_t aci_idle = 0 } This means that cpu_id 0 is actually aci_local_id 4. My MSIX table updated by Solaris: ffffff04ef7d16c0 xxx_msix_tbl_t [8] msix_tbl = [ { ffffff04ef7d16c0 uint32_t msgladdr = 0xfee0f000 ffffff04ef7d16c4 uint32_t msguaddr = 0 ffffff04ef7d16c8 uint32_t msgdata = 0x61 ffffff04ef7d16cc unsigned resvd :31 = 0 ffffff04ef7d16cf.7 unsigned mask :1 = 0 } { ffffff04ef7d16d0 uint32_t msgladdr = 0xfee04000 <---- 04 ffffff04ef7d16d4 uint32_t msguaddr = 0 ffffff04ef7d16d8 uint32_t msgdata = 0x62 ffffff04ef7d16dc unsigned resvd :31 = 0 ffffff04ef7d16df.7 unsigned mask :1 = 0 } { ffffff04ef7d16e0 uint32_t msgladdr = 0xfee05000 ffffff04ef7d16e4 uint32_t msguaddr = 0 ffffff04ef7d16e8 uint32_t msgdata = 0x63 ffffff04ef7d16ec unsigned resvd :31 = 0 ffffff04ef7d16ef.7 unsigned mask :1 = 0 } { ffffff04ef7d16f0 uint32_t msgladdr = 0xfee06000 ffffff04ef7d16f4 uint32_t msguaddr = 0 ffffff04ef7d16f8 uint32_t msgdata = 0x64 ffffff04ef7d16fc unsigned resvd :31 = 0 ffffff04ef7d16ff.7 unsigned mask :1 = 0 } These results are what I expected. -- This message posted from opensolaris.org _______________________________________________ perf-discuss mailing list perf-discuss@opensolaris.org