[U-Boot] [PATCH v2 0/4] x86: Add platform PIRQ routing

Bin Meng bmeng.cn at gmail.com
Fri Apr 24 12:10:02 CEST 2015


Although by default (without pci=nomsi in the kernel bootline) Linux device
drivers try to use MSI for device's interrupt generation, there are still
some devices which only support INTx generation. Currently U-Boot on some
x86 boards do not configure those devices' IRQ and route them to 8259 PIC,
so when Linux kernel boots up it complains:

  pci 0000:00:17.0: can't find IRQ for PCI INT A; please try using pci=biosirq

This series adds the platform PIRQ routing support, so that all PCI devices
found are set up to route their INTx correctly to 8259 PIC (the so-called
PIC mode, as defined in the Multi-Processor Sepcification v1.4).

A new Kconfig option GENERATE_PIRQ_TABLE is introduced to control whether
U-Boot needs to generate a PIRQ routing table for OS to use.

Changes in v2:
- Correct a typo in the commit message
- Use a local variable in fill_irq_info()
- Print a debug message if creating pirq table fails
- Use a C structure for RCBA register access

Bin Meng (4):
  x86: Add a function to assign IRQ numbers to PCI device
  x86: Write configuration tables in last_stage_init()
  x86: Support platform PIRQ routing
  x86: queensbay: Implement PIRQ routing

 arch/x86/Kconfig                             |  31 ++++
 arch/x86/cpu/cpu.c                           |  10 ++
 arch/x86/cpu/pci.c                           |  21 +++
 arch/x86/cpu/queensbay/Makefile              |   2 +-
 arch/x86/cpu/queensbay/irq.c                 | 242 +++++++++++++++++++++++++++
 arch/x86/cpu/queensbay/tnc.c                 |  10 +-
 arch/x86/include/asm/arch-queensbay/device.h |  94 +++++++++++
 arch/x86/include/asm/arch-queensbay/irq.h    |  55 ++++++
 arch/x86/include/asm/arch-queensbay/tnc.h    |  39 ++++-
 arch/x86/include/asm/pci.h                   |  14 ++
 arch/x86/include/asm/pirq_routing.h          | 139 +++++++++++++++
 arch/x86/include/asm/tables.h                |  49 ++++++
 arch/x86/include/asm/u-boot-x86.h            |   2 +
 arch/x86/lib/Makefile                        |   2 +
 arch/x86/lib/pirq_routing.c                  | 129 ++++++++++++++
 arch/x86/lib/tables.c                        |  30 ++++
 configs/crownbay_defconfig                   |   1 +
 include/configs/crownbay.h                   |   1 +
 include/configs/x86-common.h                 |   1 +
 19 files changed, 868 insertions(+), 4 deletions(-)
 create mode 100644 arch/x86/cpu/queensbay/irq.c
 create mode 100644 arch/x86/include/asm/arch-queensbay/device.h
 create mode 100644 arch/x86/include/asm/arch-queensbay/irq.h
 create mode 100644 arch/x86/include/asm/pirq_routing.h
 create mode 100644 arch/x86/include/asm/tables.h
 create mode 100644 arch/x86/lib/pirq_routing.c
 create mode 100644 arch/x86/lib/tables.c

-- 
1.8.2.1



More information about the U-Boot mailing list