Changeset 235d31d in mainline for kernel/arch/amd64/src


Ignore:
Timestamp:
2014-12-22T17:47:40Z (11 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8c7d5ad
Parents:
eae91e0 (diff), 759ea0d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge the CHT pre-integration branch

This branch contains:

  • the merge of lp:~adam-hraska+lp/helenos/rcu, which brings:
  • a new preemptible kernel RCU variant called A-RCU,
  • a preemptible variant of Podzimek's non-preemptible kernel RCU and
  • a new variant of usersace RCU,
  • a new concurrent hash table (CHT) implementation based on RCU,
  • a deployment of CHT in kernel futex handling,
  • a deployment of the userspace RCU in the implementation of upgradable futexes,

all described in Adam Hraska's master thesis named Read-Copy-Update
for HelenOS, defended in 2013 at MFF UK; furthemore, the branch
fixes two synchronization bugs in condvars and waitq, respectively:

  • revid:adam.hraska+hos@gmail.com-20121116144921-3to9u1tn1sg07rg7
  • revid:adam.hraska+hos@gmail.com-20121116173623-km7gwtqixwudpe66
  • build fixes required to pass make check
  • overhaul of ia64 and sparc64 trap handling, to allow exc_dispatch() to be used now when the kernel is more picky about CPU state accounting
  • an important fix of the sparc64/sun4v preemptible trap handler
  • various other fixes of issues discovered on non-x86 architectures
Location:
kernel/arch/amd64/src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/amd64.c

    reae91e0 r235d31d  
    170170}
    171171
    172 void arch_post_cpu_init()
     172void arch_post_cpu_init(void)
    173173{
    174174#ifdef CONFIG_SMP
  • kernel/arch/amd64/src/cpu/cpu.c

    reae91e0 r235d31d  
    158158void cpu_print_report(cpu_t* m)
    159159{
    160         printf("cpu%d: (%s family=%d model=%d stepping=%d) %dMHz\n",
     160        printf("cpu%d: (%s family=%d model=%d stepping=%d apicid=%u) %dMHz\n",
    161161            m->id, vendor_str[m->arch.vendor], m->arch.family, m->arch.model,
    162             m->arch.stepping, m->frequency_mhz);
     162            m->arch.stepping, m->arch.id, m->frequency_mhz);
    163163}
    164164
  • kernel/arch/amd64/src/interrupt.c

    reae91e0 r235d31d  
    5555#include <symtab.h>
    5656#include <stacktrace.h>
     57#include <smp/smp_call.h>
    5758
    5859/*
     
    161162        trap_virtual_eoi();
    162163        tlb_shootdown_ipi_recv();
     164}
     165
     166static void arch_smp_call_ipi_recv(unsigned int n, istate_t *istate)
     167{
     168        trap_virtual_eoi();
     169        smp_call_ipi_recv();
    163170}
    164171#endif
     
    224231        exc_register(VECTOR_TLB_SHOOTDOWN_IPI, "tlb_shootdown", true,
    225232            (iroutine_t) tlb_shootdown_ipi);
     233        exc_register(VECTOR_SMP_CALL_IPI, "smp_call", true,
     234                (iroutine_t) arch_smp_call_ipi_recv);
    226235#endif
    227236}
Note: See TracChangeset for help on using the changeset viewer.