[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH RFC] p2m: p2m_mmio_direct set RW permissions



>>> On 22.01.15 at 18:34, <elena.ufimtseva@xxxxxxxxxx> wrote:
> On Thu, Jan 22, 2015 at 04:42:52PM +0100, Roger Pau Monnà wrote:
>> El 22/01/15 a les 16.18, Elena Ufimtseva ha escrit:
>> > 
>> > ----- JBeulich@xxxxxxxx wrote:
>> > 
>> >>>>> On 22.01.15 at 12:37, <roger.pau@xxxxxxxxxx> wrote:
>> >>> El 22/01/15 a les 12.09, Jan Beulich ha escrit:
>> >>>>>>> On 22.01.15 at 11:59, <andrew.cooper3@xxxxxxxxxx> wrote:
>> >>>>> On 22/01/15 09:53, Jan Beulich wrote:
>> >>>>>>>>> On 21.01.15 at 21:55, <elena.ufimtseva@xxxxxxxxxx> wrote:
>> >>>>>>> p2m_mmio_direct should result in setting IOMMUF_readable and
>> >> IOMMUF_writable
>> >>>>>>> flags.
>> >>>>>>> When pvh domain maps mmio regions, the EPT entries are not
>> >> getting mapped.
>> >>>>>>> This leads to IOMMU Page faults for some devices, as for example
>> >> USB Host
>> >>>>>>> controllers with embedded Debug devices. See
>> >> pvh-set-need_iommu-early RFC
>> >>>>>>> patch discussion fgor detail.
>> >>>>>> Even more so that the two patches aren't even a series, that
>> >> part
>> >>>>>> of the description belongs here, not in the other patch.
>> >>>>>>
>> >>>>>>> I will appreciate your comments and ideas in regards to this
>> >> change.
>> >>>>>>>
>> >>>>>>> Looking at Roger patches (xen/pvh: check permissions when adding
>> >> MMIO 
>> >>>>>>> regions)
>> >>>>>>> the mmio memory type is proposed to be changed from
>> >> p2m_mmio_direct to 
>> >>>>>>> p2m_access_rw.
>> >>>>>>> This type still does not have proper IOMMU flags mapping.
>> >>>>>> A fundamental question is what business devices have to DMA
>> >> their
>> >>>>>> own (or other devices') MMIO space. I could remotely see a need
>> >>>>>> for this for e.g. frame buffers, but I have difficulty
>> >> understanding
>> >>>>>> this for USB devices. Please at the very least provide details on
>> >> the
>> >>>>>> MMIO regions that those devices have, and which of them you
>> >>>>>> observed IOMMU faults on.
>> >>>>>
>> >>>>> It would appear that, in this case, it is a USB controller lacking
>> >> an
>> >>>>> appropriate RMRR description in the ACPI tables.
>> >>>>
>> >>>> No, RMRRs only reference RAM pages afaik.
>> >>>
>> >>> According to Linux IOMMU support document RMRRs reference regions
>> >> marked
>> >>> as "reserved" in the e820 memory map:
>> >>>
>> >>> https://www.kernel.org/doc/Documentation/Intel-IOMMU.txt 
>> >>
>> >> Exactly. And MMIO PCI BARs in particular are never to be
>> >> reflected in the E820 (not the least because they're relocatable).
>> >>
>> >>> I don't think we are setting proper IOMMU entries for this regions
>> >> at
>> >>> all with the current PVH Dom0 code. IMHO instead of just adding
>> >> IOMMU
>> >>> entries for every MMIO region we should just add IOMMU entries for
>> >> the
>> >>> RMRR regions.
>> >>
>> >> Yes, RMRR regions should certainly be put there as r/w entries.
>> >>
>> >> Jan
>> > 
>> > How it will help in cases like this when this regions are not reported as 
> RMRRs in ACPI?
>> 
>> AFAIK even if they are properly reported as RMRRs they won't have the
>> right IOMMU mappings, are you sure they are not reported as RMRRs?
>> 
>> Roger.
>>
> 
> Here are some details on machine config, lspci and etc.
> 
> Bare metal:
> 
> lspci
> 
> 
> 00:00.0 0600: 8086:0c00 (rev 06)
>       Subsystem: 17aa:3097
>       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort+ 
> >SERR- <PERR- INTx-
>       Latency: 0
>       Capabilities: [e0] Vendor Specific Information: Len=0c <?>
>       Kernel driver in use: hsw_uncore
> 
> 00:02.0 0300: 8086:0412 (rev 06) (prog-if 00 [VGA controller])
>       Subsystem: 17aa:3097
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx+
>       Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0
>       Interrupt: pin A routed to IRQ 30
>       Region 0: Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
>       Region 2: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>       Region 4: I/O ports at f000 [size=64]
>       Expansion ROM at <unassigned> [disabled]
>       Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
>               Address: fee00018  Data: 0000
>       Capabilities: [d0] Power Management version 2
>               Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA 
> PME(D0-,D1-,D2-,D3hot-,D3cold-)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [a4] PCI Advanced Features
>               AFCap: TP+ FLR+
>               AFCtrl: FLR-
>               AFStatus: TP-
>       Kernel driver in use: i915
> 
> 00:03.0 0403: 8086:0c0c (rev 06)
>       Subsystem: 17aa:3097
>       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx+
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0, Cache Line Size: 64 bytes
>       Interrupt: pin A routed to IRQ 31
>       Region 0: Memory at f7c30000 (64-bit, non-prefetchable) [size=16K]
>       Capabilities: [50] Power Management version 2
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA 
> PME(D0-,D1-,D2-,D3hot-,D3cold-)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit-
>               Address: fee003d8  Data: 0000
>       Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
>               DevCap: MaxPayload 128 bytes, PhantFunc 0
>                       ExtTag- RBE-
>               DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
> Unsupported-
>                       RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>                       MaxPayload 128 bytes, MaxReadReq 128 bytes
>               DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- 
> TransPend-
>       Kernel driver in use: snd_hda_intel
> 
> 00:14.0 0c03: 8086:8c31 (rev 05) (prog-if 30 [XHCI])
>       Subsystem: 17aa:3097
>       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx+
>       Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort- 
> >SERR- <PERR- INTx-
>       Latency: 0
>       Interrupt: pin A routed to IRQ 28
>       Region 0: Memory at f7c20000 (64-bit, non-prefetchable) [size=64K]
>       Capabilities: [70] Power Management version 2
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA 
> PME(D0-,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
>               Address: 00000000fee00378  Data: 0000
>       Kernel driver in use: xhci_hcd
> 
> 00:16.0 0780: 8086:8c3a (rev 04)
>       Subsystem: 17aa:3097
>       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx+
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0
>       Interrupt: pin A routed to IRQ 29
>       Region 0: Memory at f7c3b000 (64-bit, non-prefetchable) [size=16]
>       Capabilities: [50] Power Management version 3
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA 
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
>               Address: 00000000fee00398  Data: 0000
>       Kernel driver in use: mei_me
> 
> 00:19.0 0200: 8086:153a (rev 05)
>       Subsystem: 17aa:3097
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx+
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0
>       Interrupt: pin A routed to IRQ 26
>       Region 0: Memory at f7c00000 (32-bit, non-prefetchable) [size=128K]
>       Region 1: Memory at f7c39000 (32-bit, non-prefetchable) [size=4K]
>       Region 2: I/O ports at f080 [size=32]
>       Capabilities: [c8] Power Management version 2
>               Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA 
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
>       Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>               Address: 00000000fee002f8  Data: 0000
>       Capabilities: [e0] PCI Advanced Features
>               AFCap: TP+ FLR+
>               AFCtrl: FLR-
>               AFStatus: TP-
>       Kernel driver in use: e1000e
> 
> 00:1a.0 0c03: 8086:8c2d (rev 05) (prog-if 20 [EHCI])
>       Subsystem: 17aa:3097
>       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort- 
> >SERR- <PERR- INTx-
>       Latency: 0
>       Interrupt: pin A routed to IRQ 17
>       Region 0: Memory at f7c38000 (32-bit, non-prefetchable) [size=1K]
>       Capabilities: [50] Power Management version 2
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA 
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [58] Debug port: BAR=1 offset=00a0
>       Capabilities: [98] PCI Advanced Features
>               AFCap: TP+ FLR+
>               AFCtrl: FLR-
>               AFStatus: TP-
>       Kernel driver in use: ehci-pci
> 
> 00:1c.0 0604: 8086:8c10 (rev d5) (prog-if 00 [Normal decode])
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0, Cache Line Size: 64 bytes
>       Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
>       I/O behind bridge: 0000f000-00000fff
>       Memory behind bridge: fff00000-000fffff
>       Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
>       Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort+ 
> <SERR- <PERR-
>       BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>               PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>       Capabilities: [40] Express (v2) Root Port (Slot-), MSI 00
>               DevCap: MaxPayload 128 bytes, PhantFunc 0
>                       ExtTag- RBE+
>               DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
> Unsupported-
>                       RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>                       MaxPayload 128 bytes, MaxReadReq 128 bytes
>               DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ 
> TransPend-
>               LnkCap: Port #1, Speed 5GT/s, Width x1, ASPM L0s L1, Exit 
> Latency L0s <1us, L1 
> <4us
>                       ClockPM- Surprise- LLActRep+ BwNot+
>               LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk-
>                       ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>               LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ 
> DLActive- BWMgmt- ABWMgmt-
>               RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- 
> CRSVisible-
>               RootCap: CRSVisible-
>               RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>               DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF 
> Via WAKE# 
> ARIFwd-
>               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, 
> OBFF Disabled 
> ARIFwd-
>               LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>                        Transmit Margin: Normal Operating Range, 
> EnterModifiedCompliance- 
> ComplianceSOS-
>                        Compliance De-emphasis: -6dB
>               LnkSta2: Current De-emphasis Level: -3.5dB, 
> EqualizationComplete-, 
> EqualizationPhase1-
>                        EqualizationPhase2-, EqualizationPhase3-, 
> LinkEqualizationRequest-
>       Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
>               Address: 00000000  Data: 0000
>       Capabilities: [90] Subsystem: 17aa:3097
>       Capabilities: [a0] Power Management version 3
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA 
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Kernel driver in use: pcieport
> 
> 00:1c.3 0604: 8086:8c16 (rev d5) (prog-if 00 [Normal decode])
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0, Cache Line Size: 64 bytes
>       Bus: primary=00, secondary=02, subordinate=03, sec-latency=0
>       I/O behind bridge: 0000f000-00000fff
>       Memory behind bridge: fff00000-000fffff
>       Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
>       Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort+ 
> <SERR- <PERR-
>       BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>               PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>       Capabilities: [40] Express (v2) Root Port (Slot+), MSI 00
>               DevCap: MaxPayload 128 bytes, PhantFunc 0
>                       ExtTag- RBE+
>               DevCtl: Report errors: Correctable- Non-Fatal- Fatal- 
> Unsupported-
>                       RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>                       MaxPayload 128 bytes, MaxReadReq 128 bytes
>               DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ 
> TransPend-
>               LnkCap: Port #4, Speed 5GT/s, Width x1, ASPM L0s L1, Exit 
> Latency L0s <1us, L1 
> <16us
>                       ClockPM- Surprise- LLActRep+ BwNot+
>               LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
>                       ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>               LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ 
> DLActive+ BWMgmt+ 
> ABWMgmt-
>               SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- 
> Surprise-
>                       Slot #3, PowerLimit 10.000W; Interlock- NoCompl+
>               SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- 
> LinkChg-
>                       Control: AttnInd Unknown, PwrInd Unknown, Power- 
> Interlock-
>               SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ 
> Interlock-
>                       Changed: MRL- PresDet- LinkState-
>               RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- 
> CRSVisible-
>               RootCap: CRSVisible-
>               RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>               DevCap2: Completion Timeout: Range ABC, TimeoutDis+, LTR+, OBFF 
> Not 
> Supported ARIFwd-
>               DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, 
> OBFF Disabled 
> ARIFwd-
>               LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
>                        Transmit Margin: Normal Operating Range, 
> EnterModifiedCompliance- 
> ComplianceSOS-
>                        Compliance De-emphasis: -6dB
>               LnkSta2: Current De-emphasis Level: -3.5dB, 
> EqualizationComplete-, 
> EqualizationPhase1-
>                        EqualizationPhase2-, EqualizationPhase3-, 
> LinkEqualizationRequest-
>       Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit-
>               Address: 00000000  Data: 0000
>       Capabilities: [90] Subsystem: 17aa:3097
>       Capabilities: [a0] Power Management version 3
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA 
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Kernel driver in use: pcieport
> 
> 00:1d.0 0c03: 8086:8c26 (rev 05) (prog-if 20 [EHCI])
>       Subsystem: 17aa:3097
>       Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort- 
> >SERR- <PERR- INTx-
>       Latency: 0
>       Interrupt: pin A routed to IRQ 23
>       Region 0: Memory at f7c37000 (32-bit, non-prefetchable) [size=1K]
>       Capabilities: [50] Power Management version 2
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA 
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [58] Debug port: BAR=1 offset=00a0
>       Capabilities: [98] PCI Advanced Features
>               AFCap: TP+ FLR+
>               AFCtrl: FLR-
>               AFStatus: TP-
>       Kernel driver in use: ehci-pci
> 
> 00:1f.0 0601: 8086:8c4e (rev 05)
>       Subsystem: 17aa:3097
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort- 
> >SERR- <PERR- INTx-
>       Latency: 0
>       Capabilities: [e0] Vendor Specific Information: Len=0c <?>
>       Kernel driver in use: lpc_ich
> 
> 00:1f.2 0106: 8086:8c02 (rev 05) (prog-if 01 [AHCI 1.0])
>       Subsystem: 17aa:3097
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx+
>       Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort- 
> >SERR- <PERR- INTx-
>       Latency: 0
>       Interrupt: pin B routed to IRQ 27
>       Region 0: I/O ports at f0d0 [size=8]
>       Region 1: I/O ports at f0c0 [size=4]
>       Region 2: I/O ports at f0b0 [size=8]
>       Region 3: I/O ports at f0a0 [size=4]
>       Region 4: I/O ports at f060 [size=32]
>       Region 5: Memory at f7c36000 (32-bit, non-prefetchable) [size=2K]
>       Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
>               Address: fee00358  Data: 0000
>       Capabilities: [70] Power Management version 3
>               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA 
> PME(D0-,D1-,D2-,D3hot+,D3cold-)
>               Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
>       Kernel driver in use: ahci
> 
> 00:1f.3 0c05: 8086:8c22 (rev 05)
>       Subsystem: 17aa:3097
>       Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- SERR- 
> FastB2B- DisINTx-
>       Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort- 
> >SERR- <PERR- INTx-
>       Interrupt: pin C routed to IRQ 18
>       Region 0: Memory at f7c35000 (64-bit, non-prefetchable) [size=256]
>       Region 4: I/O ports at 0580 [size=32]
> 
> 02:00.0 0604: 1283:8893 (rev 41) (prog-if 01 [Subtractive decode])
>       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
> Stepping- 
> SERR- FastB2B- DisINTx-
>       Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
> <MAbort- >SERR- 
> <PERR- INTx-
>       Latency: 0, Cache Line Size: 64 bytes
>       Bus: primary=02, secondary=03, subordinate=03, sec-latency=32
>       I/O behind bridge: 0000f000-00000fff
>       Memory behind bridge: fff00000-000fffff
>       Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff
>       Secondary status: 66MHz+ FastB2B- ParErr- DEVSEL=medium >TAbort- 
> <TAbort- <MAbort+ 
> <SERR- <PERR-
>       BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>               PriDiscTmr- SecDiscTmr+ DiscTmrStat- DiscTmrSERREn-
>       Capabilities: [90] Power Management version 2
>               Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA 
> PME(D0+,D1+,D2+,D3hot+,D3cold+)
>               Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>       Capabilities: [a0] Subsystem: 17aa:3097
> 
> 
> 
> 
> # dmidecode 2.12
> SMBIOS 2.8 present.
> 89 structures occupying 3527 bytes.
> Table at 0x000EDC10.
> 
> Handle 0x0000, DMI type 0, 24 bytes
> BIOS Information
>       Vendor: LENOVO
>       Version: FBKTA4AUS
>       Release Date: 12/11/2014
>       Address: 0xF0000
>       Runtime Size: 64 kB
>       ROM Size: 6656 kB
>       Characteristics:
>               PCI is supported
>               BIOS is upgradeable
>               BIOS shadowing is allowed
>               Boot from CD is supported
>               Selectable boot is supported
>               BIOS ROM is socketed
>               EDD is supported
>               5.25"/1.2 MB floppy services are supported (int 13h)
>               3.5"/720 kB floppy services are supported (int 13h)
>               3.5"/2.88 MB floppy services are supported (int 13h)
>               Print screen service is supported (int 5h)
>               8042 keyboard services are supported (int 9h)
>               Serial services are supported (int 14h)
>               Printer services are supported (int 17h)
>               ACPI is supported
>               USB legacy is supported
>               BIOS boot specification is supported
>               Targeted content distribution is supported
>               UEFI is supported
>       BIOS Revision: 1.164
>       Firmware Revision: 1.13
> 
> Handle 0x0001, DMI type 1, 27 bytes
> System Information
>       Manufacturer: LENOVO
>       Product Name: 10A6S09R01
>       Version: ThinkCentre M93p
>       Serial Number:  
>       UUID: CD155584-7150-11E4-A0B5-AE7A9F861500
>       Wake-up Type: Power Switch
>       SKU Number: LENOVO_MT_10A6
>       Family: To be filled by O.E.M.
> 
> Handle 0x0002, DMI type 2, 15 bytes
> Base Board Information
>       Manufacturer: LENOVO
>       Product Name: SHARKBAY
>       Version: 0B98401 WIN
>       Serial Number:                     
>       Asset Tag:                          
>       Features:
>               Board is a hosting board
>               Board is replaceable
>       Location In Chassis: To be filled by O.E.M.
>       Chassis Handle: 0x0003
>       Type: Motherboard
>       Contained Object Handles: 0
> 
> Handle 0x0003, DMI type 3, 25 bytes
> Chassis Information
>       Manufacturer: To Be Filled By O.E.M.
>       Type: Desktop
>       Lock: Not Present
>       Version: To Be Filled By O.E.M.
>       Serial Number: MJ01S0UJ
>       Asset Tag:  
>       Boot-up State: Safe
>       Power Supply State: Safe
>       Thermal State: Safe
>       Security Status: None
>       OEM Information: 0x00000000
>       Height: Unspecified
>       Number Of Power Cords: 1
>       Contained Elements: 1
>               <OUT OF SPEC> (0)
>       SKU Number: To be filled by O.E.M.
> 
> Handle 0x0004, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J1A1
>       Internal Connector Type: None
>       External Reference Designator: PS2Mouse
>       External Connector Type: PS/2
>       Port Type: Mouse Port
> 
> Handle 0x0005, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J1A1
>       Internal Connector Type: None
>       External Reference Designator: Keyboard
>       External Connector Type: PS/2
>       Port Type: Keyboard Port
> 
> Handle 0x0006, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J2A1
>       Internal Connector Type: None
>       External Reference Designator: TV Out
>       External Connector Type: Mini Centronics Type-14
>       Port Type: Other
> 
> Handle 0x0007, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J2A2A
>       Internal Connector Type: None
>       External Reference Designator: COM A
>       External Connector Type: DB-9 male
>       Port Type: Serial Port 16550A Compatible
> 
> Handle 0x0008, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J2A2B
>       Internal Connector Type: None
>       External Reference Designator: Video
>       External Connector Type: DB-15 female
>       Port Type: Video Port
> 
> Handle 0x0009, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J3A1
>       Internal Connector Type: None
>       External Reference Designator: USB1
>       External Connector Type: Access Bus (USB)
>       Port Type: USB
> 
> Handle 0x000A, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J3A1
>       Internal Connector Type: None
>       External Reference Designator: USB2
>       External Connector Type: Access Bus (USB)
>       Port Type: USB
> 
> Handle 0x000B, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J3A1
>       Internal Connector Type: None
>       External Reference Designator: USB3
>       External Connector Type: Access Bus (USB)
>       Port Type: USB
> 
> Handle 0x000C, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9A1 - TPM HDR
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x000D, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9C1 - PCIE DOCKING CONN
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x000E, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J2B3 - CPU FAN
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x000F, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J6C2 - EXT HDMI
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0010, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J3C1 - GMCH FAN
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0011, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J1D1 - ITP
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0012, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9E2 - MDC INTPSR
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0013, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9E4 - MDC INTPSR
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0014, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9E3 - LPC HOT DOCKING
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0015, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9E1 - SCAN MATRIX
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0016, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J9G1 - LPC SIDE BAND
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0017, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J8F1 - UNIFIED
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0018, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J6F1 - LVDS
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x0019, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J2F1 - LAI FAN
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x001A, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J2G1 - GFX VID
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x001B, DMI type 8, 9 bytes
> Port Connector Information
>       Internal Reference Designator: J1G6 - AC JACK
>       Internal Connector Type: Other
>       External Reference Designator: Not Specified
>       External Connector Type: None
>       Port Type: Other
> 
> Handle 0x001C, DMI type 9, 17 bytes
> System Slot Information
>       Designation: J6B2
>       Type: x16 PCI Express
>       Current Usage: In Use
>       Length: Long
>       ID: 0
>       Characteristics:
>               3.3 V is provided
>               Opening is shared
>               PME signal is supported
>       Bus Address: 0000:00:01.0
> 
> Handle 0x001D, DMI type 9, 17 bytes
> System Slot Information
>       Designation: J6B1
>       Type: x1 PCI Express
>       Current Usage: In Use
>       Length: Short
>       ID: 1
>       Characteristics:
>               3.3 V is provided
>               Opening is shared
>               PME signal is supported
>       Bus Address: 0000:00:1c.3
> 
> Handle 0x001E, DMI type 9, 17 bytes
> System Slot Information
>       Designation: J6D1
>       Type: x1 PCI Express
>       Current Usage: In Use
>       Length: Short
>       ID: 2
>       Characteristics:
>               3.3 V is provided
>               Opening is shared
>               PME signal is supported
>       Bus Address: 0000:00:1c.4
> 
> Handle 0x001F, DMI type 9, 17 bytes
> System Slot Information
>       Designation: J7B1
>       Type: x1 PCI Express
>       Current Usage: In Use
>       Length: Short
>       ID: 3
>       Characteristics:
>               3.3 V is provided
>               Opening is shared
>               PME signal is supported
>       Bus Address: 0000:00:1c.5
> 
> Handle 0x0020, DMI type 10, 12 bytes
> On Board Device 1 Information
>       Type: Video
>       Status: Enabled
>       Description:    Onboard Video
> On Board Device 2 Information
>       Type: Ethernet
>       Status: Enabled
>       Description: Onboard LAN
> On Board Device 3 Information
>       Type: Sound
>       Status: Disabled
>       Description:   Onboard Audio
> On Board Device 4 Information
>       Type: SATA Controller
>       Status: Enabled
>       Description:   Sata Controller
> 
> Handle 0x0021, DMI type 11, 5 bytes
> OEM Strings
>       String 1: LENOVO ThinkCentre Embedded Controller -[FBCT13A-1.13]-
>       String 2: LENOVO ThinkCentre BIOS Boot Block Revision 1.A1
> 
> Handle 0x0022, DMI type 12, 5 bytes
> System Configuration Options
>       Option 1: scre++
> 
> Handle 0x0023, DMI type 24, 5 bytes
> Hardware Security
>       Power-On Password Status: Disabled
>       Keyboard Password Status: Enabled
>       Administrator Password Status: Disabled
>       Front Panel Reset Status: Not Implemented
> 
> Handle 0x0024, DMI type 32, 20 bytes
> System Boot Information
>       Status: No errors detected
> 
> Handle 0x0025, DMI type 34, 11 bytes
> Management Device
>       Description: LM78-1
>       Type: LM78
>       Address: 0x00000000
>       Address Type: I/O Port
> 
> Handle 0x0026, DMI type 26, 22 bytes
> Voltage Probe
>       Description: LM78A
>       Location: <OUT OF SPEC>
>       Status: <OUT OF SPEC>
>       Maximum Value: Unknown
>       Minimum Value: Unknown
>       Resolution: Unknown
>       Tolerance: Unknown
>       Accuracy: Unknown
>       OEM-specific Information: 0x00000000
>       Nominal Value: Unknown
> 
> Handle 0x0027, DMI type 36, 16 bytes
> Management Device Threshold Data
>       Lower Non-critical Threshold: 1
>       Upper Non-critical Threshold: 2
>       Lower Critical Threshold: 3
>       Upper Critical Threshold: 4
>       Lower Non-recoverable Threshold: 5
>       Upper Non-recoverable Threshold: 6
> 
> Handle 0x0028, DMI type 35, 11 bytes
> Management Device Component
>       Description: To Be Filled By O.E.M.
>       Management Device Handle: 0x0025
>       Component Handle: 0x0025
>       Threshold Handle: 0x0026
> 
> Handle 0x0029, DMI type 28, 22 bytes
> Temperature Probe
>       Description: LM78A
>       Location: <OUT OF SPEC>
>       Status: <OUT OF SPEC>
>       Maximum Value: Unknown
>       Minimum Value: Unknown
>       Resolution: Unknown
>       Tolerance: Unknown
>       Accuracy: Unknown
>       OEM-specific Information: 0x00000000
>       Nominal Value: Unknown
> 
> Handle 0x002A, DMI type 36, 16 bytes
> Management Device Threshold Data
>       Lower Non-critical Threshold: 1
>       Upper Non-critical Threshold: 2
>       Lower Critical Threshold: 3
>       Upper Critical Threshold: 4
>       Lower Non-recoverable Threshold: 5
>       Upper Non-recoverable Threshold: 6
> 
> Handle 0x002B, DMI type 35, 11 bytes
> Management Device Component
>       Description: To Be Filled By O.E.M.
>       Management Device Handle: 0x0025
>       Component Handle: 0x0028
>       Threshold Handle: 0x0029
> 
> Handle 0x002C, DMI type 27, 15 bytes
> Cooling Device
>       Temperature Probe Handle: 0x0029
>       Type: <OUT OF SPEC>
>       Status: <OUT OF SPEC>
>       Cooling Unit Group: 1
>       OEM-specific Information: 0x00000000
>       Nominal Speed: Unknown Or Non-rotating
>       Description: Cooling Dev 1
> 
> Handle 0x002D, DMI type 36, 16 bytes
> Management Device Threshold Data
>       Lower Non-critical Threshold: 1
>       Upper Non-critical Threshold: 2
>       Lower Critical Threshold: 3
>       Upper Critical Threshold: 4
>       Lower Non-recoverable Threshold: 5
>       Upper Non-recoverable Threshold: 6
> 
> Handle 0x002E, DMI type 35, 11 bytes
> Management Device Component
>       Description: To Be Filled By O.E.M.
>       Management Device Handle: 0x0025
>       Component Handle: 0x002B
>       Threshold Handle: 0x002C
> 
> Handle 0x002F, DMI type 27, 15 bytes
> Cooling Device
>       Temperature Probe Handle: 0x0029
>       Type: <OUT OF SPEC>
>       Status: <OUT OF SPEC>
>       Cooling Unit Group: 1
>       OEM-specific Information: 0x00000000
>       Nominal Speed: Unknown Or Non-rotating
>       Description: Not Specified
> 
> Handle 0x0030, DMI type 36, 16 bytes
> Management Device Threshold Data
>       Lower Non-critical Threshold: 1
>       Upper Non-critical Threshold: 2
>       Lower Critical Threshold: 3
>       Upper Critical Threshold: 4
>       Lower Non-recoverable Threshold: 5
>       Upper Non-recoverable Threshold: 6
> 
> Handle 0x0031, DMI type 35, 11 bytes
> Management Device Component
>       Description: To Be Filled By O.E.M.
>       Management Device Handle: 0x0025
>       Component Handle: 0x002E
>       Threshold Handle: 0x002F
> 
> Handle 0x0032, DMI type 29, 22 bytes
> Electrical Current Probe
>       Description: ABC
>       Location: <OUT OF SPEC>
>       Status: <OUT OF SPEC>
>       Maximum Value: Unknown
>       Minimum Value: Unknown
>       Resolution: Unknown
>       Tolerance: Unknown
>       Accuracy: Unknown
>       OEM-specific Information: 0x00000000
>       Nominal Value: Unknown
> 
> Handle 0x0033, DMI type 36, 16 bytes
> Management Device Threshold Data
> 
> Handle 0x0034, DMI type 35, 11 bytes
> Management Device Component
>       Description: To Be Filled By O.E.M.
>       Management Device Handle: 0x0025
>       Component Handle: 0x0031
>       Threshold Handle: 0x002F
> 
> Handle 0x0035, DMI type 26, 22 bytes
> Voltage Probe
>       Description: LM78A
>       Location: Power Unit
>       Status: OK
>       Maximum Value: Unknown
>       Minimum Value: Unknown
>       Resolution: Unknown
>       Tolerance: Unknown
>       Accuracy: Unknown
>       OEM-specific Information: 0x00000000
>       Nominal Value: Unknown
> 
> Handle 0x0036, DMI type 28, 22 bytes
> Temperature Probe
>       Description: LM78A
>       Location: Power Unit
>       Status: OK
>       Maximum Value: Unknown
>       Minimum Value: Unknown
>       Resolution: Unknown
>       Tolerance: Unknown
>       Accuracy: Unknown
>       OEM-specific Information: 0x00000000
>       Nominal Value: Unknown
> 
> Handle 0x0037, DMI type 27, 15 bytes
> Cooling Device
>       Temperature Probe Handle: 0x0036
>       Type: Power Supply Fan
>       Status: OK
>       Cooling Unit Group: 1
>       OEM-specific Information: 0x00000000
>       Nominal Speed: Unknown Or Non-rotating
>       Description: Cooling Dev 1
> 
> Handle 0x0038, DMI type 29, 22 bytes
> Electrical Current Probe
>       Description: ABC
>       Location: Power Unit
>       Status: OK
>       Maximum Value: Unknown
>       Minimum Value: Unknown
>       Resolution: Unknown
>       Tolerance: Unknown
>       Accuracy: Unknown
>       OEM-specific Information: 0x00000000
>       Nominal Value: Unknown
> 
> Handle 0x0039, DMI type 39, 22 bytes
> System Power Supply
>       Power Unit Group: 1
>       Location: To Be Filled By O.E.M.
>       Name: To Be Filled By O.E.M.
>       Manufacturer: To Be Filled By O.E.M.
>       Serial Number: To Be Filled By O.E.M.
>       Asset Tag: To Be Filled By O.E.M.
>       Model Part Number: To Be Filled By O.E.M.
>       Revision: To Be Filled By O.E.M.
>       Max Power Capacity: Unknown
>       Status: Present, OK
>       Type: Switching
>       Input Voltage Range Switching: Auto-switch
>       Plugged: Yes
>       Hot Replaceable: No
>       Input Voltage Probe Handle: 0x0035
>       Cooling Device Handle: 0x0037
>       Input Current Probe Handle: 0x0038
> 
> Handle 0x003A, DMI type 41, 11 bytes
> Onboard Device
>       Reference Designation:  Onboard IGD
>       Type: Video
>       Status: Enabled
>       Type Instance: 1
>       Bus Address: 0000:00:02.0
> 
> Handle 0x003B, DMI type 41, 11 bytes
> Onboard Device
>       Reference Designation:  Onboard LAN
>       Type: Ethernet
>       Status: Enabled
>       Type Instance: 1
>       Bus Address: 0000:00:19.0
> 
> Handle 0x003C, DMI type 41, 11 bytes
> Onboard Device
>       Reference Designation:  Onboard 1394
>       Type: Other
>       Status: Enabled
>       Type Instance: 1
>       Bus Address: 0000:03:1c.2
> 
> Handle 0x003D, DMI type 4, 42 bytes
> Processor Information
>       Socket Designation: SOCKET 0
>       Type: Central Processor
>       Family: Core i7
>       Manufacturer: Intel
>       ID: C3 06 03 00 FF FB EB BF
>       Signature: Type 0, Family 6, Model 60, Stepping 3
>       Flags:
>               FPU (Floating-point unit on-chip)
>               VME (Virtual mode extension)
>               DE (Debugging extension)
>               PSE (Page size extension)
>               TSC (Time stamp counter)
>               MSR (Model specific registers)
>               PAE (Physical address extension)
>               MCE (Machine check exception)
>               CX8 (CMPXCHG8 instruction supported)
>               APIC (On-chip APIC hardware supported)
>               SEP (Fast system call)
>               MTRR (Memory type range registers)
>               PGE (Page global enable)
>               MCA (Machine check architecture)
>               CMOV (Conditional move instruction supported)
>               PAT (Page attribute table)
>               PSE-36 (36-bit page size extension)
>               CLFSH (CLFLUSH instruction supported)
>               DS (Debug store)
>               ACPI (ACPI supported)
>               MMX (MMX technology supported)
>               FXSR (FXSAVE and FXSTOR instructions supported)
>               SSE (Streaming SIMD extensions)
>               SSE2 (Streaming SIMD extensions 2)
>               SS (Self-snoop)
>               HTT (Multi-threading)
>               TM (Thermal monitor supported)
>               PBE (Pending break enabled)
>       Version: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
>       Voltage: 1.2 V
>       External Clock: 100 MHz
>       Max Speed: 3800 MHz
>       Current Speed: 3400 MHz
>       Status: Populated, Enabled
>       Upgrade: Socket BGA1155
>       L1 Cache Handle: 0x003F
>       L2 Cache Handle: 0x003E
>       L3 Cache Handle: 0x0040
>       Serial Number: Not Specified
>       Asset Tag: Fill By OEM
>       Part Number: Fill By OEM
>       Core Count: 4
>       Core Enabled: 4
>       Thread Count: 8
>       Characteristics:
>               64-bit capable
> 
> Handle 0x003E, DMI type 7, 19 bytes
> Cache Information
>       Socket Designation: CPU Internal L2
>       Configuration: Enabled, Not Socketed, Level 2
>       Operational Mode: Write Back
>       Location: Internal
>       Installed Size: 1024 kB
>       Maximum Size: 1024 kB
>       Supported SRAM Types:
>               Unknown
>       Installed SRAM Type: Unknown
>       Speed: Unknown
>       Error Correction Type: Single-bit ECC
>       System Type: Unified
>       Associativity: 8-way Set-associative
> 
> Handle 0x003F, DMI type 7, 19 bytes
> Cache Information
>       Socket Designation: CPU Internal L1
>       Configuration: Enabled, Not Socketed, Level 1
>       Operational Mode: Write Back
>       Location: Internal
>       Installed Size: 256 kB
>       Maximum Size: 256 kB
>       Supported SRAM Types:
>               Unknown
>       Installed SRAM Type: Unknown
>       Speed: Unknown
>       Error Correction Type: Single-bit ECC
>       System Type: Other
>       Associativity: 8-way Set-associative
> 
> Handle 0x0040, DMI type 7, 19 bytes
> Cache Information
>       Socket Designation: CPU Internal L3
>       Configuration: Enabled, Not Socketed, Level 3
>       Operational Mode: Write Back
>       Location: Internal
>       Installed Size: 8192 kB
>       Maximum Size: 8192 kB
>       Supported SRAM Types:
>               Unknown
>       Installed SRAM Type: Unknown
>       Speed: Unknown
>       Error Correction Type: Single-bit ECC
>       System Type: Unified
>       Associativity: 16-way Set-associative
> 
> Handle 0x0041, DMI type 16, 23 bytes
> Physical Memory Array
>       Location: System Board Or Motherboard
>       Use: System Memory
>       Error Correction Type: None
>       Maximum Capacity: 32 GB
>       Error Information Handle: Not Provided
>       Number Of Devices: 4
> 
> Handle 0x0042, DMI type 17, 40 bytes
> Memory Device
>       Array Handle: 0x0041
>       Error Information Handle: Not Provided
>       Total Width: Unknown
>       Data Width: Unknown
>       Size: No Module Installed
>       Form Factor: DIMM
>       Set: None
>       Locator: ChannelA-DIMM0
>       Bank Locator: BANK 0
>       Type: Unknown
>       Type Detail: None
>       Speed: Unknown
>       Manufacturer: [Empty]
>       Serial Number: [Empty]
>       Asset Tag: 9876543210
>       Part Number: [Empty]
>       Rank: Unknown
>       Configured Clock Speed: Unknown
>       Minimum voltage:  Unknown
>       Maximum voltage:  Unknown
>       Configured voltage:  Unknown
> 
> Handle 0x0043, DMI type 15, 73 bytes
> System Event Log
>       Area Length: 4096 bytes
>       Header Start Offset: 0x0000
>       Header Length: 16 bytes
>       Data Start Offset: 0x0010
>       Access Method: Memory-mapped physical 32-bit address
>       Access Address: 0x000EF250
>       Status: Valid, Not Full
>       Change Token: 0x00000001
>       Header Format: Type 1
>       Supported Log Type Descriptors: 25
>       Descriptor 1: Single-bit ECC memory error
>       Data Format 1: None
>       Descriptor 2: Multi-bit ECC memory error
>       Data Format 2: None
>       Descriptor 3: Parity memory error
>       Data Format 3: None
>       Descriptor 4: Bus timeout
>       Data Format 4: None
>       Descriptor 5: I/O channel block
>       Data Format 5: None
>       Descriptor 6: Software NMI
>       Data Format 6: None
>       Descriptor 7: POST memory resize
>       Data Format 7: None
>       Descriptor 8: POST error
>       Data Format 8: POST results bitmap
>       Descriptor 9: PCI parity error
>       Data Format 9: None
>       Descriptor 10: PCI system error
>       Data Format 10: None
>       Descriptor 11: CPU failure
>       Data Format 11: None
>       Descriptor 12: EISA failsafe timer timeout
>       Data Format 12: None
>       Descriptor 13: Correctable memory log disabled
>       Data Format 13: None
>       Descriptor 14: Logging disabled
>       Data Format 14: None
>       Descriptor 15: System limit exceeded
>       Data Format 15: None
>       Descriptor 16: Asynchronous hardware timer expired
>       Data Format 16: None
>       Descriptor 17: System configuration information
>       Data Format 17: None
>       Descriptor 18: Hard disk information
>       Data Format 18: None
>       Descriptor 19: System reconfigured
>       Data Format 19: None
>       Descriptor 20: Uncorrectable CPU-complex error
>       Data Format 20: None
>       Descriptor 21: Log area reset/cleared
>       Data Format 21: None
>       Descriptor 22: System boot
>       Data Format 22: None
>       Descriptor 23: End of log
>       Data Format 23: None
>       Descriptor 24: OEM-specific
>       Data Format 24: OEM-specific
>       Descriptor 25: OEM-specific
>       Data Format 25: OEM-specific
> 
> Handle 0x0044, DMI type 17, 40 bytes
> Memory Device
>       Array Handle: 0x0041
>       Error Information Handle: Not Provided
>       Total Width: 64 bits
>       Data Width: 64 bits
>       Size: 8192 MB
>       Form Factor: DIMM
>       Set: None
>       Locator: ChannelA-DIMM1
>       Bank Locator: BANK 1
>       Type: DDR3
>       Type Detail: Synchronous
>       Speed: 1600 MHz
>       Manufacturer: Samsung
>       Serial Number: 17C7415F
>       Asset Tag: 9876543210
>       Part Number: M378B1G73QH0-CK0  
>       Rank: 2
>       Configured Clock Speed: 1600 MHz
>       Minimum voltage:  1.500 V
>       Maximum voltage:  1.500 V
>       Configured voltage:  1.500 V
> 
> Handle 0x0045, DMI type 20, 35 bytes
> Memory Device Mapped Address
>       Starting Address: 0x00000000000
>       Ending Address: 0x001FFFFFFFF
>       Range Size: 8 GB
>       Physical Device Handle: 0x0044
>       Memory Array Mapped Address Handle: 0x0049
>       Partition Row Position: Unknown
>       Interleave Position: 1
>       Interleaved Data Depth: 2
> 
> Handle 0x0046, DMI type 17, 40 bytes
> Memory Device
>       Array Handle: 0x0041
>       Error Information Handle: Not Provided
>       Total Width: Unknown
>       Data Width: Unknown
>       Size: No Module Installed
>       Form Factor: DIMM
>       Set: None
>       Locator: ChannelB-DIMM0
>       Bank Locator: BANK 2
>       Type: Unknown
>       Type Detail: None
>       Speed: Unknown
>       Manufacturer: [Empty]
>       Serial Number: [Empty]
>       Asset Tag: 9876543210
>       Part Number: [Empty]
>       Rank: Unknown
>       Configured Clock Speed: Unknown
>       Minimum voltage:  Unknown
>       Maximum voltage:  Unknown
>       Configured voltage:  Unknown
> 
> Handle 0x0047, DMI type 17, 40 bytes
> Memory Device
>       Array Handle: 0x0041
>       Error Information Handle: Not Provided
>       Total Width: 64 bits
>       Data Width: 64 bits
>       Size: 8192 MB
>       Form Factor: DIMM
>       Set: None
>       Locator: ChannelB-DIMM1
>       Bank Locator: BANK 3
>       Type: DDR3
>       Type Detail: Synchronous
>       Speed: 1600 MHz
>       Manufacturer: Samsung
>       Serial Number: 17C73CB4
>       Asset Tag: 9876543210
>       Part Number: M378B1G73QH0-CK0  
>       Rank: 2
>       Configured Clock Speed: 1600 MHz
>       Minimum voltage:  1.500 V
>       Maximum voltage:  1.500 V
>       Configured voltage:  1.500 V
> 
> Handle 0x0048, DMI type 20, 35 bytes
> Memory Device Mapped Address
>       Starting Address: 0x00200000000
>       Ending Address: 0x003FFFFFFFF
>       Range Size: 8 GB
>       Physical Device Handle: 0x0047
>       Memory Array Mapped Address Handle: 0x0049
>       Partition Row Position: Unknown
>       Interleave Position: 2
>       Interleaved Data Depth: 2
> 
> Handle 0x0049, DMI type 19, 31 bytes
> Memory Array Mapped Address
>       Starting Address: 0x00000000000
>       Ending Address: 0x003FFFFFFFF
>       Range Size: 16 GB
>       Physical Array Handle: 0x0041
>       Partition Width: 4
> 
> Handle 0x004D, DMI type 131, 22 bytes
> OEM-specific Type
>       Header and Data:
>               83 16 4D 00 01 03 00 00 00 00 00 00 00 00 00 00
>               00 00 00 00 80 01
>       Strings:
>               TVT-Enablement
> 
> Handle 0x004E, DMI type 136, 6 bytes
> OEM-specific Type
>       Header and Data:
>               88 06 4E 00 00 00
> 
> Handle 0x004F, DMI type 140, 85 bytes
> OEM-specific Type
>       Header and Data:
>               8C 55 4F 00 4C 45 4E 4F 56 4F 0B 00 01 57 AA 83
>               75 D9 46 9D 5C 0C 0F 8A D3 41 A8 37 81 01 00 00
>               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>               00 00 00 00 00
> 
> Handle 0x0050, DMI type 140, 47 bytes
> OEM-specific Type
>       Header and Data:
>               8C 2F 50 00 4C 45 4E 4F 56 4F 0B 01 01 08 00 AF
>               DF D1 79 CB 90 B9 6D A8 16 19 07 5E 54 2C 86 00
>               00 00 00 10 00 10 00 10 01 D0 00 20 01 00 01
> 
> Handle 0x0051, DMI type 140, 63 bytes
> OEM-specific Type
>       Header and Data:
>               8C 3F 51 00 4C 45 4E 4F 56 4F 0B 02 01 00 00 00
>               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 
> Handle 0x0052, DMI type 140, 17 bytes
> OEM-specific Type
>       Header and Data:
>               8C 11 52 00 4C 45 4E 4F 56 4F 0B 03 01 00 00 00
>               00
> 
> Handle 0x0053, DMI type 140, 19 bytes
> OEM-specific Type
>       Header and Data:
>               8C 13 53 00 4C 45 4E 4F 56 4F 0B 04 01 B2 00 4D
>               53 20 00
> 
> Handle 0x0054, DMI type 134, 16 bytes
> OEM-specific Type
>       Header and Data:
>               86 10 54 00 00 4A 10 00 00 4E 00 00 00 02 01 02
>       Strings:
>               TPM INFO
>               System Reserved
> 
> Handle 0x0055, DMI type 10, 6 bytes
> On Board Device Information
>       Type: Other
>       Status: Disabled
>       Description: IBM Embedded Security Hardware Type 3
> 
> Handle 0x0056, DMI type 140, 19 bytes
> OEM-specific Type
>       Header and Data:
>               8C 13 56 00 4C 45 4E 4F 56 4F 0B 05 01 02 00 00
>               00 53 55
> 
> Handle 0x0057, DMI type 140, 23 bytes
> OEM-specific Type
>       Header and Data:
>               8C 17 57 00 4C 45 4E 4F 56 4F 0B 06 01 00 00 00
>               00 00 00 00 00 00 00
> 
> Handle 0x0058, DMI type 130, 20 bytes
> OEM-specific Type
>       Header and Data:
>               82 14 58 00 24 41 4D 54 00 00 00 00 00 A5 8F 02
>               01 00 00 00
> 
> Handle 0x0059, DMI type 131, 64 bytes
> OEM-specific Type
>       Header and Data:
>               83 40 59 00 35 00 00 00 0A 00 00 00 00 00 04 00
>               F8 00 4E 8C 00 00 00 00 09 E0 00 00 01 00 09 00
>               60 04 00 00 00 00 00 00 C8 00 3A 15 00 00 00 00
>               00 00 00 00 66 00 00 00 76 50 72 6F 00 00 00 00
> 
> Handle 0x005A, DMI type 13, 22 bytes
> BIOS Language Information
>       Language Description Format: Long
>       Installable Languages: 3
>               en|US|iso8859-1
>               fr|FR|iso8859-1
>               zh|CN|unicode
>       Currently Installed Language: en|US|iso8859-1
> 
> Handle 0x005D, DMI type 127, 4 bytes
> End Of Table
> 
> 
> XEN dmesg:
> 
> Xen 4.6.0-unstable
> (XEN) Xen version 4.6.0-unstable (root@) (gcc (Debian 4.9.1-19) 4.9.1) 
> debug=y 
> Thu Jan 22 05:41:00 EST 2015
> (XEN) Latest ChangeSet: Fri Jan 16 04:59:02 2015 -0500 git:8ecc953
> (XEN) Console output is synchronous.
> (XEN) Bootloader: GRUB 2.02~beta2-15
> (XEN) Command line: loglvl=all guest_loglvl=all dom0pvh=1 dom0_mem=max:2G 
> sync_console com1=19200,8n1 console=com1 
> iommu=debug,verbose,no-sharept,no-qinval,no-snoop apic_verbosity=debug
> (XEN) Video information:
> (XEN)  VGA is text mode 80x25, font 8x16
> (XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
> (XEN) Disc information:
> (XEN)  Found 1 MBR signatures
> (XEN)  Found 1 EDD information structures
> (XEN) Xen-e820 RAM map:
> (XEN)  0000000000000000 - 000000000009d800 (usable)
> (XEN)  000000000009d800 - 00000000000a0000 (reserved)
> (XEN)  00000000000e0000 - 0000000000100000 (reserved)
> (XEN)  0000000000100000 - 00000000c27e0000 (usable)
> (XEN)  00000000c27e0000 - 00000000c27e7000 (ACPI NVS)
> (XEN)  00000000c27e7000 - 00000000c2c2f000 (usable)
> (XEN)  00000000c2c2f000 - 00000000c30d6000 (reserved)
> (XEN)  00000000c30d6000 - 00000000d48ea000 (usable)
> (XEN)  00000000d48ea000 - 00000000d4976000 (reserved)
> (XEN)  00000000d4976000 - 00000000d49d8000 (ACPI data)
> (XEN)  00000000d49d8000 - 00000000d56f0000 (ACPI NVS)
> (XEN)  00000000d56f0000 - 00000000d5fff000 (reserved)

So this is where one of the RMRRs sits in (and also where
the faults occur according to the two numbers you sent
earlier, which - as others have already said - is an indication
of the reported RMRRs being incomplete), ...

> (XEN)  00000000d5fff000 - 00000000d6000000 (usable)
> (XEN)  00000000d7000000 - 00000000df200000 (reserved)

... and this is the exact range of the other one. But the usable
entry between them is a sign of the firmware not doing the
best job in assigning resources.

I don't, btw, think that blindly mapping all the reserved regions
into PVH Dom0's P2M would be (or is, if that's what's happening
today) correct - these regions are named reserved for a
reason. In the case here it's actually RAM, not MMIO, and
Dom0 (as well as Xen) has no business accessing these (for others
this may be different, e.g. the LAPIC and IO-APIC ones below,
but Xen learns/knows of them by means different from looking
at the memory map).

> (XEN)  00000000f8000000 - 00000000fc000000 (reserved)
> (XEN)  00000000fec00000 - 00000000fec01000 (reserved)
> (XEN)  00000000fed00000 - 00000000fed04000 (reserved)
> (XEN)  00000000fed1c000 - 00000000fed20000 (reserved)
> (XEN)  00000000fee00000 - 00000000fee01000 (reserved)
> (XEN)  00000000ff000000 - 0000000100000000 (reserved)
> (XEN)  0000000100000000 - 000000041ee00000 (usable)

> (XEN) [VT-D]dmar.c:788: Host address width 39
> (XEN) [VT-D]dmar.c:802: found ACPI_DMAR_DRHD:
> (XEN) [VT-D]dmar.c:472:   dmaru->address = fed90000
> (XEN) [VT-D]iommu.c:1136: drhd->address = fed90000 iommu->reg = 
> ffff82c000201000
> (XEN) [VT-D]iommu.c:1138: cap = c0000020660462 ecap = f0101a
> (XEN) [VT-D]dmar.c:383:  endpoint: 0000:00:02.0
> (XEN) [VT-D]dmar.c:802: found ACPI_DMAR_DRHD:
> (XEN) [VT-D]dmar.c:472:   dmaru->address = fed91000
> (XEN) [VT-D]iommu.c:1136: drhd->address = fed91000 iommu->reg = 
> ffff82c000203000
> (XEN) [VT-D]iommu.c:1138: cap = d2008020660462 ecap = f010da
> (XEN) [VT-D]dmar.c:397:  IOAPIC: 0000:f0:1f.0
> (XEN) [VT-D]dmar.c:361:  MSI HPET: 0000:f0:0f.0
> (XEN) [VT-D]dmar.c:486:   flags: INCLUDE_ALL
> (XEN) [VT-D]dmar.c:807: found ACPI_DMAR_RMRR:
> (XEN) [VT-D]dmar.c:383:  endpoint: 0000:00:1d.0
> (XEN) [VT-D]dmar.c:383:  endpoint: 0000:00:1a.0
> (XEN) [VT-D]dmar.c:383:  endpoint: 0000:00:14.0
> (XEN) [VT-D]dmar.c:676:   RMRR region: base_addr d5e6b000 end_address d5e91fff
> (XEN) [VT-D]dmar.c:807: found ACPI_DMAR_RMRR:
> (XEN) [VT-D]dmar.c:383:  endpoint: 0000:00:02.0
> (XEN) [VT-D]dmar.c:676:   RMRR region: base_addr d7000000 end_address df1fffff

So there are at least some RMRRs here.

> (XEN) Bogus DMIBAR 0xfed18001 on 0000:00:00.0

Pretty clearly a firmware flaw.

> (XEN) traps.c:3216: GPF (0000): ffff82d0801e0716 -> ffff82d080235ef9
> (XEN) traps.c:3216: GPF (0000): ffff82d0801e0716 -> ffff82d080235ef9
> (XEN) traps.c:3216: GPF (0000): ffff82d0801e0716 -> ffff82d080235ef9
> (XEN) traps.c:3216: GPF (0000): ffff82d0801e0716 -> ffff82d080235ef9
> 
> I am not sure about last lines here, I have not seen it before and leaving 
> it as it is. 

These should at least be investigated.

But - this being the end of the log: Where are the IOMMU faults
you say you see? Without those, it's unclear which of the devices
cause(s) them, and hence the lspci output isn't useful.

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.