[PATCH 0/3] bsps/i386: updates to allow SMP build of x86 BSP

pisa at cmp.felk.cvut.cz pisa at cmp.felk.cvut.cz
Wed Oct 12 08:26:25 UTC 2016


From: Pavel Pisa <pisa at cmp.felk.cvut.cz>

The elimination of global interrupt lock is necessity condition
but far from being sufficient for RTEMS x86 SMP support.

Provided changes allows to build i386 BSP with configure
option --enable-smp. The build BSP runs in UP and SMP
configurations on QEMU when only one/boot CPU is used.
Testing with more CPUs has not been done and I expect
that fundamental parts of code are missing.

IRQ processing of i8259 interrupts could be sufficient
for SMP configuration now when legacy interrupts
are routed to single core only.

But there is missing mechanism to wait for finishing
interrupt service routine running on one CPU when
interrupt disable is called on another CPU.

Local, IO APIC and MSI interrupts seems to be missing.

Pavel Pisa (3):
  bsps/i386: replace global interrupt disable by SMP build supporting
    locking.
  bsps/i386: use Pentimum instructions for pc586 and pc686 builds.
  libchip/network/if_fxp.c: do not use rtems_interrupt_disable.

 c/src/lib/libbsp/i386/pc386/clock/ckinit.c        | 19 +++++---
 c/src/lib/libbsp/i386/pc386/console/inch.c        | 10 +++--
 c/src/lib/libbsp/i386/pc386/console/keyboard.c    | 55 +++++++++++------------
 c/src/lib/libbsp/i386/pc386/console/vt.c          | 13 +++---
 c/src/lib/libbsp/i386/pc386/include/bsp.h         |  5 +++
 c/src/lib/libbsp/i386/pc386/make/custom/pc586.cfg |  2 +-
 c/src/lib/libbsp/i386/pc386/make/custom/pc686.cfg |  2 +-
 c/src/lib/libbsp/i386/pc386/timer/timer.c         | 45 ++++++++++++++++---
 c/src/lib/libbsp/i386/shared/irq/idt.c            | 34 +++++++++-----
 c/src/lib/libbsp/i386/shared/irq/irq.c            | 32 +++++++++----
 c/src/lib/libbsp/i386/shared/irq/irq_init.c       |  7 ++-
 c/src/libchip/network/if_fxp.c                    | 11 ++---
 12 files changed, 154 insertions(+), 81 deletions(-)

-- 
1.9.1



More information about the devel mailing list