рдПрдХреНрд╕ 86 рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рд╡реНрдпрд╡рдзрд╛рдиред рднрд╛рдЧ 3. рдХреЛрд░рдмреВрдЯ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛

рд╣рдо x86 рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рднрд╛рдЧ 1 ( рд╡реНрдпрд╡рдзрд╛рди рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ ) рдореЗрдВ, рд╣рдордиреЗ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛ 2 рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдмреВрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ, рд░реБрдХрд╛рд╡рдЯ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдХреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдиреАрдВрд╡реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдУрдПрд╕ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП BIOS IRQ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдХреЛрдИ рднреА рдЖрдзреБрдирд┐рдХ BIOS рд╡рд┐рдХрд╛рд╕ рдХрдВрдкрдиреА (рдЕрд╡рд╛рд░реНрдбрдмреЙрд╕ / рдПрдПрдордЖрдИрдмреАрдЖрдИрдУрдПрд╕ / рдЗрдВрд╕реАрдб) рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрд░рдмреВрдЯ , рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдорд╛рд▓рд┐рдХрд╛рдирд╛ BIOS рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЙрдирдХреЗ рдХреЛрдб рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред




рд╕рд┐рджреНрдзрд╛рдВрдд


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЬреНрдЮрд╛рди рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░реЗрдВ рдФрд░ рдкреВрд░рдХ рдХрд░реЗрдВред рднрд╛рдЧ 1 рдореЗрдВ, рд╣рдордиреЗ PIC рдФрд░ APIC рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╡рдзрд╛рди рдкрде рдХреА рдкрд╣рдЪрд╛рди рдХреАред

рдкреАрдЖрдИрд╕реА:



APIC:



рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ, PCI рдбрд┐рд╡рд╛рдЗрд╕ тЖТ PIR рдореИрдкрд┐рдВрдЧ рдХреЛ рдЕрдореВрд░реНрдд рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ; рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ 4 рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрдиреНрд╕ (INTA #, INTB #, INTC #, INTD #) рд╣реЛрддреА рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдЕрдзрд┐рдХрддрдо 8 рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ INTx # рд░реБрдХрд╛рд╡рдЯ рд╣реЛрддреА рд╣реИред INTx # рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреМрди рд╕реА рд▓рд╛рдЗрди рдЦреАрдВрдЪреЗрдЧрд╛ рдпрд╛ рддреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЙрдЬрд┐рдХрд▓ рдмреНрд▓реЙрдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдПрдХ Smbus рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝рдВрдХреНрд╢рди, рдПрдХ SATA рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝рдВрдХреНрд╢рди, рдПрдХ LPC рдмреНрд░рд┐рдЬ рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдУрдПрд╕ рдХреА рдУрд░, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдЕрдкрдиреЗ рдкреАрд╕реАрдЖрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИред

рдкреАрд╕реАрдЖрдИ рдЙрдкрдХрд░рдг рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ (рдФрд░ рд╕рдмрд╕реЗ рдЖрдо) рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрд╡рд░реЛрдз INTA # рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ 4 рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ 8 рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛), рдлрд┐рд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдПрдХ рдЗрдВрдЯреЗрдХреНрд╕ # рд▓рд╛рдЗрди рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ (рдкреАрд╕реАрдЖрдИ рдЗрдВрдЯрд░рдлреЗрд░рдЯреНрд╕ рд▓рд╛рдЗрди рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рд╢реЗрд╖ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдХрд░ рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреАрд╕реАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛ рдЗрдВрдЯреЗрдХреНрд╕ # рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдХреНрдпрд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо INTx # тЖТ PIRQy тЖТ IRQz, рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА PCI рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд░реБрдХрд╛рд╡рдЯ рдХреЗ рдорд╛рд░реНрдЧ (рдорд╛рд░реНрдЧ) рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  • PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ INTx # - рд▓рд╛рдЗрди INT # (INTA #, INTB #, INTC #, INTD #) рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
  • PIRQy - PIRQ рд▓рд╛рдЗрди (PIRQA, PIRQB, ...) PIR рд╕реЗ рдЬрд┐рд╕рдореЗрдВ INTx # рд▓рд╛рдЗрди рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ
  • IRQz - рдмрд╛рдзрд╛ рдирд┐рдпрдВрддреНрд░рдХ (APIC / PIC) рдкрд░ IRQ рд▓рд╛рдЗрди (0, 1, 2, ...), рдЬреЛ PIRQy рд▓рд╛рдЗрди рд╕реЗ рдЬреБрдбрд╝реА рд╣реИ

рдЖрдк рд╕рд┐рд░реНрдл рд╣рд░ рдЬрдЧрд╣ INTA # тЖТ PIRQA, INTB # тЖТ PIRQB, ... рдХреЛ рдХрдиреЗрдХреНрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ ...?


рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХреНрдпреЛрдВ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╕рднреА рдкреАрд╕реАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдПрдХ рд╣реА PIRQ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмрд╛рдзрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдФрд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ:

  • INTA # тЖТ PIRQA
  • INTB # тЖТ PIRQB
  • INTC # тЖТ PIRQC
  • INTD # тЖТ PIRQD

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рдХрд╣рд╛, рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреАрд╕реАрдЖрдИ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рд░реБрдХрд╛рд╡рдЯ INTA # рд▓рд╛рдЗрди рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпреЛрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?)ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рдЕрдЪрд╛рдирдХ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рд╡реНрдпрд╡рдзрд╛рдиреЛрдВ рдХреЛ PIRQA рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╡рд╣ IRQ16 рдкрд░ рдШрд╛рд╡ рдХрд░ рд░рд╣реА рд╣реИред рдлрд┐рд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ IRQ16 рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рд╣реИ, рддреЛ рдЙрд╕реЗ IRQ16 рд▓рд╛рдЗрди (PIRQA) рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рдиреА рд╣реЛрдЧреА рдпрджрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдзрд╛ рд╣реИред рдпрджрд┐ рдРрд╕реЗ рдХрдИ рдЙрдкрдХрд░рдг рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ PIRQB-PIRQD рд▓рд╛рдЗрдиреЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣реЗрдВрдЧреАред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рдЖрдХреГрддрд┐:



рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рддрд╕реНрд╡реАрд░ рдереЛрдбрд╝реА рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдмрд╕ INTx # рд▓рд╛рдЗрдиреЛрдВ рдХреЛ PIRQy рдХреЗ рд╕рд╛рде рд░рд╛рдЙрдВрдб-рд░реЙрдмрд┐рди (PIRQA, PIRQB, PIRQC, PIRQD, PIRQB, PIRQB, PIRQC, PIRQD, PIRQA, PIRQB, PIRQC, PIRQC рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ) ..)

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рди рдХреЗрд╡рд▓ рдкреАрд╕реАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреАрдЖрдИрдЖрд░рдХреНрдпреВ рд▓рд╛рдЗрди рдкрд░ рднрд░реА рд╣реБрдИ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд╣реА рд╡реНрдпрд╡рдзрд╛рди рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдИрдерд░рдиреЗрдЯ рдирд┐рдпрдВрддреНрд░рдХ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ PIRQ рд▓рд╛рдЗрди рдХрд╛ рдЖрд╡рдВрдЯрди рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, BIOS рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ рдХрд┐ PIRQ рд▓рд╛рдЗрдиреЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд░реБрдХрд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рднрд░реА рд╣реБрдИ рд╣реИрдВред

BIOS рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?


рд╣рдо рдЖрдХреГрддрд┐ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:



  • 1) рдмрддрд╛рдПрдВ рдХрд┐ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди INTx рдХреА рдХреМрди рд╕реА рд▓рд╛рдЗрди рдЦреАрдВрдЪрддреА рд╣реИ
    рдмрд╛рд╣рд░реА рдкреАрд╕реАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрдЗрдЯрдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреАрд╕реАрдЖрдИ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • 2) рдкреНрд░рддреНрдпреЗрдХ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП INTx # тЖТ PIRQy рдореИрдкрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
    рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рдирдХ PIRQy рд╕рд┐рдЧреНрдирд▓ (PIRQA, PIRQB, PIRQC, PIRQD) рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 8: PIRQA-PIRQHред

PIRQy рд╕рд┐рдЧреНрдирд▓ рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдкреНрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ (APIC / PIC) рдХреА IRQz рд▓рд╛рдЗрди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдо рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ( рднрд╛рдЧ 2 рджреЗрдЦреЗрдВ), рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдореИрдкрд┐рдВрдЧ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • 3 рдП) рд╕рдВрдЪрд╛рд░ PIR тЖТ I / O APIC рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ PIRQy тЖТ IRQz1 рдореЗрдВ рднрд░реЗрдВ
    рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреАрдЖрдИрд╕реАрдЖрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдПрдкреАрдЖрдИрд╕реА рд▓рд╛рдЗрди рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдо рд╕рдорд╛рдзрд╛рди PIRQA тЖТ IRQ16, PIRQB тЖТ IRQ17, ... рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PIRQy рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рд▓рд╛рдЗрдиреЛрдВ P16 рдкрд░ рд░рдЦрдХрд░, рдЖрдкрдХреЛ ISA рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдЕрд╡рд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
  • 3 рдмреА) рд╕рдВрдЪрд╛рд░ PIR тЖТ PIC рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ PIRQy тЖТ IRQz2 рднрд░реЗрдВ
    рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╣рдо PIC рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдкреАрдЖрдИрд╕реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдИ рднреА рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреАрдЖрдИрд╕реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд┐рд╕реА рдХреЛ рдЖрдИрдПрд╕рдП рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдЕрд╡рд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрддрд┐рдо рдЪреМрдерд╛ рдЖрдЗрдЯрдо рдмрд╛рдзрд╛ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдореЗрдВ рдУрдПрд╕ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрд╡рдпрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

  • 4) рдкреНрд░рддреНрдпреЗрдХ PCI рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди / рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рднрд░реЗрдВ
    рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рд░реАрдб-рдУрдирд▓реА рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╣рдо рд░рд╛рдЙрдЯрд░ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдУрдПрд╕ рдкреНрд░рджрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ PIC рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВ 2 рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рдЯреЗрдмрд▓ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдпрд╣ рдореИрдкрд┐рдВрдЧ рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ ($ рдкреАрдЖрдИрдЖрд░ / рдПрд╕реАрдкреАрдЖрдИ) рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рддреЛ рдУрдПрд╕ рдЕрдХреНрд╕рд░ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдЕрднреА рддрдХ $ рдкреАрдЖрдИрдЖрд░ / рдПрдордкреАрдЯреЗрдмрд▓ / рдПрд╕реАрдкреАрдЖрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЫреВрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдбрд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░реВрдЯрд┐рдВрдЧ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд┐рдкрд╕реЗрдЯ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрдВрдЯрд░рдкреНрдЯ рдЯреЗрдмрд▓ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ (рд╕рдВрднрд╡рддрдГ рднрд╡рд┐рд╖реНрдп рдХрд╛ рдПрдХ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИред

рддреЛ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдиреАрдВрд╡ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдЦрд┐рд░рдХрд╛рд░ рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ!

рдЕрднреНрдпрд╛рд╕


рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдПрдХ рдЗрдВрдЯреЗрд▓ рд╣реИрд╢рд╡реЗрд▓ i7 рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдПрдХ рд▓рд┐рдВрдХреНрд╕рдПрдХреНрд╕-рдПрд▓рдкреА рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдмреЛрд░реНрдб рдкрд░, рдореИрдВрдиреЗ рд╕реАрдмреАрдЖрдИрдУрдПрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХреЛрд░рдмреВрдЯ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред рдХреЛрд░рдмреВрдЯ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реАрдмреАрдЖрдИрдУрдПрд╕ рдкреЗрд▓реЛрдб рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ BIOS рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдХреЛрд░рдмреВрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ IRQ рдЗрдВрдЯрд░рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреА BIOS рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдЪреВрдВрдХрд┐ рдХреЛрд░рдмреВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рд▓реЗрдЦ рд╣рдореЗрд╢рд╛ рдЕрджреНрдпрддрд┐рдд рд░рд╣реЗ, рд╣рдо рдирд╡реАрдирддрдо рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг 4.9 (рд░рд┐рд▓реАрдЬрд╝ 2018-12-20) рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдореЗрд░рд╛ рдирд┐рдХрдЯрддрдо рдорджрд░рдмреЛрд░реНрдб Google рдмреЗрд▓реНрдЯреЛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреИрдВрдерд░ рднрд┐рдиреНрдирддрд╛ рд╣реИред рдЗрд╕ рдорджрд░рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдлрд╝реЛрд▓реНрдбрд░ "src \ mainboard \ google \ beltino" рдлрд╝реЛрд▓реНрдбрд░ рд╣реИред рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрд╣рд╛рдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВ рдФрд░ рдХреЛрдб рдЗрд╕ рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред

рддреЛ, рдЖрдЗрдП, рдпрд╣ рдЫрд╛рдВрдЯрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЖрдЗрдЯрдо рдХрд╣рд╛рдБ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ:

1) рдмрддрд╛рдПрдВ рдХрд┐ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди INTx рдХреА рдХреМрди рд╕реА рд▓рд╛рдЗрди рдЦреАрдВрдЪрддреА рд╣реИ


рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА DxxIP (рдбрд┐рд╡рд╛рдЗрд╕ xx рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ (IP) рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ rcba_config рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ "src / mainboard / google / beltino / romstage.c" рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рд╣реИред рдпрд╣ рд░рдЬрд┐рд╕реНрдЯрд░ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдкрд┐рди INTx # (рдП / рдмреА / рд╕реА / рдбреА) рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк ( "src / southbridge / Intel / lynxpoint / pch.h" рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ ):

0h = No interrupt 1h = INTA# 2h = INTB# 3h = INTC# 4h = INTD# 

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдХрд╛рд░реНрдп рдПрдХ рд╣реА рдкрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рд░реБрдХрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдкрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХреЛрдИ рд░реБрдХрд╛рд╡рдЯ рдирд╣реАрдВ)ред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред

рдкреВрд░реНрдг рдХреЛрдб рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:

 /* Device interrupt pin register (board specific) */ RCBA_SET_REG_32(D31IP, (INTC << D31IP_TTIP) | (NOINT << D31IP_SIP2) | (INTB << D31IP_SMIP) | (INTA << D31IP_SIP)), RCBA_SET_REG_32(D29IP, (INTA << D29IP_E1P)), RCBA_SET_REG_32(D28IP, (INTA << D28IP_P1IP) | (INTC << D28IP_P3IP) | (INTB << D28IP_P4IP)), RCBA_SET_REG_32(D27IP, (INTA << D27IP_ZIP)), RCBA_SET_REG_32(D26IP, (INTA << D26IP_E2P)), RCBA_SET_REG_32(D22IP, (NOINT << D22IP_MEI1IP)), RCBA_SET_REG_32(D20IP, (INTA << D20IP_XHCI)), 

рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдЙрджрд╛рд╣рд░рдг 1:

рдбрд┐рд╡рд╛рдЗрд╕ 0x1d (рджрд╢рдорд▓рд╡ рдореЗрдВ 29) рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди (EHCI рдирд┐рдпрдВрддреНрд░рдХ) рд╣реИред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, INTA # рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

00: 1d.0 - INTA #

 RCBA_SET_REG_32(D29IP, (INTA << D29IP_E1P)), 

рдЙрджрд╛рд╣рд░рдг 2:
рдбрд┐рд╡рд╛рдЗрд╕ 0x1f (рджрд╢рдорд▓рд╡ рдореЗрдВ 31) рдореЗрдВ рдерд░реНрдорд▓ рд╕реЗрдВрд╕рд░ рдирд┐рдпрдВрддреНрд░рдХ (00: 1f.6), SATA рдирд┐рдпрдВрддреНрд░рдХ 2 (00: 1f.2), SMBus рдирд┐рдпрдВрддреНрд░рдХ (00: 1f.3), SATA рдирд┐рдпрдВрддреНрд░рдХ 1 (00: 1f) рдХрд╛рд░реНрдп рд╣реИрдВ .2)ред рд╣рдо рдХреЗрд╡рд▓ SMBus рдирд┐рдпрдВрддреНрд░рдХ, SATA рдирд┐рдпрдВрддреНрд░рдХ 1 рдФрд░ рдерд░реНрдорд▓ рд╕реЗрдВрд╕рд░ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

00: 1f.2 - INTA # (SATA рдирд┐рдпрдВрддреНрд░рдХ 1)
00: 1f.3 - INTB # (SMBus рдХрдВрдЯреНрд░реЛрд▓рд░)
00: 1f.2 - рдХреЛрдИ рд╡реНрдпрд╡рдзрд╛рди (SATA рдирд┐рдпрдВрддреНрд░рдХ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
00: 1f.6 - INTC # (рдерд░реНрдорд▓ рд╕реЗрдВрд╕рд░ рдирд┐рдпрдВрддреНрд░рдХ)

рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 RCBA_SET_REG_32(D31IP, (INTC << D31IP_TTIP) | (NOINT << D31IP_SIP2) | (INTB << D31IP_SMIP) | (INTA << D31IP_SIP)), 

рдЙрджрд╛рд╣рд░рдг 3:

рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ 4 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред 0x1c рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП 0-5 рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

00: 1c.0 - INTA # (рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ 0)
00.1c.1 - INTB # (рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ 1)
00.1c.2 - INTC # (рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ 2)
00.1c.3 - INTD # (рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ 3)
00.1c.4 - INTA # (рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ 4)
00.1c.5 - INTB # (рдкреАрд╕реАрдЖрдИ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкреЛрд░реНрдЯ 5)
00.1c.6 - рдХреЛрдИ рд░реБрдХрд╛рд╡рдЯ (рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреЛрд░реНрдЯ)
00.1c.7 - рдХреЛрдИ рд░реБрдХрд╛рд╡рдЯ (рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреЛрд░реНрдЯ)

 RCBA_SET_REG_32(D28IP, (INTA << D28IP_P1IP) | (INTB << D28IP_P2IP) | (INTC << D28IP_P3IP) | (INTD << D28IP_P4IP) | (INTA << D28IP_P5IP) | (INTB << D28IP_P6IP) | (NOINT << D28IP_P7IP) | (NOINT << D28IP_P8IP)), 

2) рдкреНрд░рддреНрдпреЗрдХ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП INTx # тЖТ PIRQy рдореИрдкрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА "src \ mainboard \ google \ belino \ romstage.c" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ
rcba_config рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА DxxIR (рдбрд┐рд╡рд╛рдЗрд╕ xx рдЗрдВрдЯрд░рдкреНрдЯ рд░реВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░) рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдЗрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ PIRQx рд▓рд╛рдЗрди (A / B / C / D / E / F / G / H) рдкреНрд░рддреНрдпреЗрдХ INTx # рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди рдХрд┐рд╕рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред

 /* Device interrupt route registers */ RCBA_SET_REG_32(D31IR, DIR_ROUTE(PIRQG, PIRQC, PIRQB, PIRQA)),/* LPC */ RCBA_SET_REG_32(D29IR, DIR_ROUTE(PIRQD, PIRQD, PIRQD, PIRQD)),/* EHCI */ RCBA_SET_REG_32(D28IR, DIR_ROUTE(PIRQA, PIRQB, PIRQC, PIRQD)),/* PCIE */ RCBA_SET_REG_32(D27IR, DIR_ROUTE(PIRQG, PIRQG, PIRQG, PIRQG)),/* HDA */ RCBA_SET_REG_32(D22IR, DIR_ROUTE(PIRQA, PIRQA, PIRQA, PIRQA)),/* ME */ RCBA_SET_REG_32(D21IR, DIR_ROUTE(PIRQE, PIRQF, PIRQF, PIRQF)),/* SIO */ RCBA_SET_REG_32(D20IR, DIR_ROUTE(PIRQC, PIRQC, PIRQC, PIRQC)),/* XHCI */ RCBA_SET_REG_32(D23IR, DIR_ROUTE(PIRQH, PIRQH, PIRQH, PIRQH)),/* SDIO */ 

рдЙрджрд╛рд╣рд░рдг 1:

0x1c рдбрд┐рд╡рд╛рдЗрд╕ (рджрд╢рдорд▓рд╡ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ 28) PCIe рдкреЛрд░реНрдЯ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВред

рд╣рдо "рд╕реАрдзрд╛" рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ:

  • INTA # тЖТ PIRQA
  • INTB # тЖТ PIRQB
  • INTC # тЖТ PIRQC
  • INTD # тЖТ PIRQD

 RCBA_SET_REG_32(D28IR, DIR_ROUTE(PIRQA, PIRQB, PIRQC, PIRQD)) 

рдЙрджрд╛рд╣рд░рдг 2:

рдбрд┐рд╡рд╛рдЗрд╕ 0x1d (рджрд╢рдорд▓рд╡ рдореЗрдВ 29) - INTA # рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди (EHCI рдирд┐рдпрдВрддреНрд░рдХ), рдЕрдиреНрдп рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

INTA # рд▓рд╛рдЗрди рдХреЛ PIRQD рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:

 RCBA_SET_REG_32(D29IR, DIR_ROUTE(PIRQD, PIRQD, PIRQD, PIRQD)) 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ PIRQD рд░рд┐рдХреЙрд░реНрдб (INTA # рдХреЗ рд▓рд┐рдП) рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдмрд╛рдХреА рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

3a) рдореИрдкрд┐рдВрдЧ рднрд░реЗрдВ PIRQy тЖТ IRQz1 (PIR тЖТ APIC)


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рдореИрдкрд┐рдВрдЧ рдЕрдХреНрд╕рд░ рдпрд╣рд╛рдВ рддрдп рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрд╣ рдорд╛рдорд▓рд╛ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред

  • PIRQA тЖТ IRQ16
  • PIRQB тЖТ IRQ17
  • ...
  • PIRQH тЖТ IRQ23

3 рдмреА) рдореИрдкрд┐рдВрдЧ рднрд░реЗрдВ PIRQy тЖТ IRQz2 (PIR тЖТ PIC)


рдХреЛрд░рдмреВрдЯ рдореЗрдВ, рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рднрд░рдиреЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдорджрд░рдмреЛрд░реНрдб рдлрд╝реЛрд▓реНрдбрд░ "src \ mainboard \ google \ belino \" рдореЗрдВ devicetree.cb рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

devicetree.cb (рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдирд╛рдо devicetree, рдФрд░ "рд╕реАрдмреА" рдХреЛрд░рдмреВрдЯ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реИ) рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдЗрд╕ рдорджрд░рдмреЛрд░реНрдб рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ: рдХреМрди рд╕рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░, рдЪрд┐рдкрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреМрди рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдЙрди рдкрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рдмрдВрдж рдЖрджрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:

 register "pirqa_routing" = "0x8b" register "pirqb_routing" = "0x8a" register "pirqc_routing" = "0x8b" register "pirqd_routing" = "0x8b" register "pirqe_routing" = "0x80" register "pirqf_routing" = "0x80" register "pirqg_routing" = "0x80" register "pirqh_routing" = "0x80" 

рдпреЗ рд▓рд╛рдЗрдиреЗрдВ рдореИрдкрд┐рдВрдЧ PIRQy тЖТ IRQz2 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИрдВред рдХреЛрдб рдореЗрдВ, devicetree.cb рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ "config-> pirqX_rout" рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред

рдЪрд░ "config-> pirqa_rout = 0x8b" рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рдХрд┐ PIRQA PIC рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ IRIC11 рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди (0x0b = 11) рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрдЪреНрдЪ рдмрд┐рдЯ (рдЬреЛ 0x80 рд╣реИ) рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдкреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ PIC рд░реВрдЯрд┐рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдпрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рдмрд┐рдЯ рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ I / O APIC рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

рдпрд╣реА рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛:

 register "pirqa_routing" = "0x0b" register "pirqb_routing" = "0x0a" register "pirqc_routing" = "0x0b" register "pirqd_routing" = "0x0b" register "pirqe_routing" = "0x80" # not used register "pirqf_routing" = "0x80" # not used register "pirqg_routing" = "0x80" # not used register "pirqh_routing" = "0x80" # not used 

рд╣рдордиреЗ рдЕрдВрддрд┐рдо 4 рдХреЛ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ IRQ0 рд╡реНрдпрд╡рдзрд╛рди рд╣рдореЗрд╢рд╛ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд░ рдХреЗ рддрд╣рдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ ( рд╕рд╛рдорд╛рдиреНрдп рдЖрдИрдмреАрдПрдо-рдкреАрд╕реА рд╕рдВрдЧрдд рдЗрдВрдЯрд░рдкреНрдЯ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦреЗрдВ )ред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдмрд┐рдВрджреБ 2 рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ), рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреБрдЫ PCI рдбрд┐рд╡рд╛рдЗрд╕ PIRQE-PIRQH рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрд╕рдВрдмрджреНрдз рдЫреЛрдбрд╝рдирд╛ рдЯреВрдЯреЗ рд╣реБрдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:
 register "pirqa_routing" = "0x03" register "pirqb_routing" = "0x04" register "pirqc_routing" = "0x05" register "pirqd_routing" = "0x06" register "pirqe_routing" = "0x0a" register "pirqf_routing" = "0x0b" register "pirqg_routing" = "0x0e" register "pirqh_routing" = "0x0f" 


рд╕рдВрдмрдВрдзрд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд░рдг рдлрд╝рд╛рдЗрд▓ src \ Southbridge \ Intel \ lynxpoint \ lpc.c рдлрд╝рдВрдХреНрд╢рди pch_pirq_init рдореЗрдВ рд╣реЛрддреА рд╣реИред

рд░рдЬрд┐рд╕реНрдЯрд░ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ:

 /* Get the chip configuration */ config_t *config = dev->chip_info; pci_write_config8(dev, PIRQA_ROUT, config->pirqa_routing); pci_write_config8(dev, PIRQB_ROUT, config->pirqb_routing); pci_write_config8(dev, PIRQC_ROUT, config->pirqc_routing); pci_write_config8(dev, PIRQD_ROUT, config->pirqd_routing); pci_write_config8(dev, PIRQE_ROUT, config->pirqe_routing); pci_write_config8(dev, PIRQF_ROUT, config->pirqf_routing); pci_write_config8(dev, PIRQG_ROUT, config->pirqg_routing); pci_write_config8(dev, PIRQH_ROUT, config->pirqh_routing); 

рд░рдЬрд┐рд╕реНрдЯрд░ рдкрддрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдПрдХ рд╣реА pch.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ

 #define PIRQA_ROUT 0x60 #define PIRQB_ROUT 0x61 #define PIRQC_ROUT 0x62 #define PIRQD_ROUT 0x63 #define PIRQE_ROUT 0x68 #define PIRQF_ROUT 0x69 #define PIRQG_ROUT 0x6A #define PIRQH_ROUT 0x6B 

рдЗрд╕ рдЪрд┐рдкрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП PIRQy тЖТ IRQz2 рдХреЛ рдореИрдк рдХрд░рдирд╛ PIRQy_ROUT рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ LPC PCI рдбрд┐рд╡рд╛рдЗрд╕ (рдкрддрд╛ 00: 1f.0) рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдХреНрд╕рд░ рдкреАрдЖрдИрд╕реА рдХреЗ рдкреНрд░рддрд┐ рд╕рднреА 15 IRQz2 рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3,4,5,6,7,9,10,11,12,14,15)ред рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЙрди рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рд▓рд┐рдП IRQs PIRQ рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рддреЛ, рдКрдкрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореИрдкрд┐рдВрдЧ рдХреЗрд╡рд▓ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм PIRQ рдХреА рд▓рд╛рдЗрди IRQ3, IRQ4, IRQ5, IRQ6, IRQ10, IRQ11, IRQ14, IRQ15 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо pch_pirq_init рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╣реИ:

 /* PIRQ[n]_ROUT[3:0] - PIRQ Routing Control * 0x00 - 0000 = Reserved * 0x01 - 0001 = Reserved * 0x02 - 0010 = Reserved * 0x03 - 0011 = IRQ3 * 0x04 - 0100 = IRQ4 * 0x05 - 0101 = IRQ5 * 0x06 - 0110 = IRQ6 * 0x07 - 0111 = IRQ7 * 0x08 - 1000 = Reserved * 0x09 - 1001 = IRQ9 * 0x0A - 1010 = IRQ10 * 0x0B - 1011 = IRQ11 * 0x0C - 1100 = IRQ12 * 0x0D - 1101 = Reserved * 0x0E - 1110 = IRQ14 * 0x0F - 1111 = IRQ15 * PIRQ[n]_ROUT[7] - PIRQ Routing Control * 0x80 - The PIRQ is not routed. */ 

4) рдкреНрд░рддреНрдпреЗрдХ PCI рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди / рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рднрд░реЗрдВ


PCI рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдерд╛рди рдореЗрдВ (рдкреНрд░рддреНрдпреЗрдХ PCI рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ) рд╣рдорд╛рд░реЗ рд▓рд┐рдП 2 рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИрдВ:

  • 3Ch: рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди - рдпрд╣рд╛рдВ рдЖрдкрдХреЛ IRQz2 рдирдВрдмрд░ (0 рд╕реЗ 15 рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛) рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╡рд╣ рдЕрд╡рд░реЛрдз рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдЕрдВрддрддрдГ PIC рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЦреАрдВрдЪрддреА рд╣реИ
  • 3Dh: рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди - рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд▓рд╛рдЗрди INTx # (A / B / C / D) рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ

рдЪрд▓реЛ рдЖрдЦрд┐рд░реА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрдЪреНрдЫреЗрдж 1 рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЪрд┐рдкрд╕реЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (DxxIP рд░рдЬрд┐рд╕реНрдЯрд░) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднрд░рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд░реАрдб-рдУрдирд▓реА рд╣реЛрдЧрд╛ред

рддреЛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ PCI рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП IRQz2 рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдЖрдмрд╛рдж рдХрд░рдирд╛ рд╣реИред

рдореИрдкрд┐рдВрдЧ PIRQy тЖТ IRQz2 (рдЖрдЗрдЯрдо 3 рдмреА), рдФрд░ рдореИрдкрд┐рдВрдЧ INTx # тЖТ PIRQy (рдЖрдЗрдЯрдо 2) рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ INTx (рд░реБрдХрд╛рд╡рдЯ 1) рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЖрдЗрдЯрдо 1)ред

рдХреЛрд░рдмреВрдЯ рдореЗрдВ, рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рд▓рд╛рдЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рднреА sch \ Southbridge \ Intel \ lynxpoint \ lpc.c рдлрд╝рд╛рдЗрд▓ рдореЗрдВ pch_pirq_init рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреЙрдкреБрд▓реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

 /* Eric Biederman once said we should let the OS do this. * I am not so sure anymore he was right. */ for (irq_dev = all_devices; irq_dev; irq_dev = irq_dev->next) { u8 int_pin=0, int_line=0; if (!irq_dev->enabled || irq_dev->path.type != DEVICE_PATH_PCI) continue; int_pin = pci_read_config8(irq_dev, PCI_INTERRUPT_PIN); switch (int_pin) { case 1: /* INTA# */ int_line = config->pirqa_routing; break; case 2: /* INTB# */ int_line = config->pirqb_routing; break; case 3: /* INTC# */ int_line = config->pirqc_routing; break; case 4: /* INTD# */ int_line = config->pirqd_routing; break; } if (!int_line) continue; pci_write_config8(irq_dev, PCI_INTERRUPT_LINE, int_line); } 

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдХреЛрдб рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдкрд┐рдВрдЧ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ INTA # тЖТ PIRQA, INTB # тЖТ PIRQB, INTC # тЖТ PIRQC, INTD # тЖТ PIRQDред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2 рджреЗрдЦреЗрдВ)ред

рдЖрдо рддреМрд░ рдкрд░ "рдПрд░рд┐рдХ рдмрд┐рдбрд░рдореИрди рдиреЗ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдерд╛", рдФрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдХрд╣реАрдВ рднреА рдХреЙрдкреА рдХрд┐рдпрд╛:

 $ grep "Eric Biederman once said" -r src/ src/southbridge/intel/fsp_bd82x6x/lpc.c: /* Eric Biederman once said we should let the OS do this. src/southbridge/intel/i82801gx/lpc.c: /* Eric Biederman once said we should let the OS do this. src/southbridge/intel/i82801ix/lpc.c: /* Eric Biederman once said we should let the OS do this. src/southbridge/intel/lynxpoint/lpc.c: /* Eric Biederman once said we should let the OS do this. src/southbridge/intel/sch/lpc.c: /* Eric Biederman once said we should let the OS do this. 

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреЛрд░рдмреВрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдЕрд╡рд░реЛрдз рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЧрд▓рддреА рдкрд░ рдЗрддрдирд╛ рд╣реИрд░рд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдЖрдзреБрдирд┐рдХ рдУрдПрд╕ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ "рдПрд╕рдкреАрдЖрдИ = рдСрдл рдиреЙрд▓реЗрдкрд┐рдХ" рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рд╣рдо рдкреАрд╕реАрдЖрдИ рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЪрд┐рдкрд╕реЗрдЯ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджреЛрд╣рд░рд╛рдПрдВрдЧреЗ:

  1. рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ PCI рдлрд╝рдВрдХреНрд╢рди рдХреЛ INTx # рдкрдВрдХреНрддрд┐ рдЦреАрдВрдЪрддреА рд╣реИ
  2. рдкреНрд░рддреНрдпреЗрдХ PCI рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП INTx # тЖТ PIRQy рдореИрдкрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
  3. рдореИрдкрд┐рдВрдЧ PIRQy тЖТ IRQz1 (PIR тЖТ APIC) рдФрд░ рдореИрдкрд┐рдВрдЧ PIRQy тЖТ IRQz2 (PIR тЖТ PIC) рднрд░реЗрдВ
  4. рдкреНрд░рддреНрдпреЗрдХ PCI рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреАрд╕реАрдЖрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдерд╛рди рдХреЗ рдЗрдВрдЯрд░рдкреНрдЯ рд▓рд╛рдЗрди / рдЗрдВрдЯрд░рдкреНрдЯ рдкрд┐рди рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рднрд░реЗрдВред

Source: https://habr.com/ru/post/hi440304/


All Articles