History log of /openbsd/sys/arch/octeon/dev/octciu.c (Results 1 – 19 of 19)
Revision Date Author Comments
# ae38162b 11-Dec-2022 visa <visa@openbsd.org>

Use evcount_percpu() with platform interrupt counters on octeon.


# 85caa4b9 22-Aug-2022 cheloha <cheloha@openbsd.org>

mips64, octeon, loonson: trigger deferred clock interrupts from splx(9)

As with powerpc, powerpc64, and riscv64, on mips64 platforms we need
to isolate the clock interrupt schedule from the MD clock

mips64, octeon, loonson: trigger deferred clock interrupts from splx(9)

As with powerpc, powerpc64, and riscv64, on mips64 platforms we need
to isolate the clock interrupt schedule from the MD clock interrupt
code. To do this, we need to stop deferring clock interrupt work
until the next tick and instead defer the work until we logically
unmask the clock interrupt from splx(9).

Add a boolean (ci_clock_deferred) to the cpu_info struct to note
whether we need to trigger the clock interrupt by hand, and then
do so from splx(9) by calling md_triggerclock().

Currently md_triggerclock is only ever set to cp0_trigger_int5(). The
routine takes great care to ensure that INT5 has fired or will fire
before returning.

There are some loongson machines that use glxclk instead of CP0. They
can be switched to use CP0 later.

With input and advice from visa@ and miod@.

Compiled and extensively tested by visa@ and miod@ on various octeon
and loongson machines. No issues seen on octeon machines. miod@ saw
some odd things on loongsoon, but suggests that all issues are
probably unrelated to this patch.

Link: https://marc.info/?l=openbsd-tech&m=165929192702632&w=2

ok visa@, miod@

show more ...


# 5e9543b6 01-Sep-2019 visa <visa@openbsd.org>

Make it clearer where message "spurious interrupt" comes from.


# 7abddf2d 17-Mar-2019 visa <visa@openbsd.org>

Remember to detach the event counter when disestablishing
an interrupt handler.


# 041e95ae 17-Mar-2019 visa <visa@openbsd.org>

Replace a hand-rolled linked list with SLIST.


# 0dd6b0da 17-Mar-2019 visa <visa@openbsd.org>

Let each interrupt controller driver choose how to implement
intr_barrier(9).

With this change, the barrier should finally work properly with
cnmac(4) interrupts that have been assigned to secondary

Let each interrupt controller driver choose how to implement
intr_barrier(9).

With this change, the barrier should finally work properly with
cnmac(4) interrupts that have been assigned to secondary cores.

show more ...


# 095618eb 16-Mar-2019 visa <visa@openbsd.org>

Include header <sys/evcount.h> where event counters are used, so that
header <machine/intr.h> can eventually stop including it on octeon.


# 273c963e 15-Mar-2019 visa <visa@openbsd.org>

Use a locally defined intrhand in octciu.c to ease future changes.


# fee69528 14-Mar-2019 visa <visa@openbsd.org>

Fix the balancing of work queue interrupts.

The value of `ncpusfound' no longer reflects the number of cores that
will be utilized by the kernel; it can be larger if secondary cores
have not been en

Fix the balancing of work queue interrupts.

The value of `ncpusfound' no longer reflects the number of cores that
will be utilized by the kernel; it can be larger if secondary cores
have not been enabled by the firmware. This can lead to incorrect
assignment of work queue interrupts, making certain cnmac(4) ports
unable to receive packets. This is a regression introduced in r1.108 of
octeon/machdep.c.

Correct the problem by using `ncpus' for the balancing. All secondary
cores have been attached and the value is final by the time work queue
interrupt handlers are set up.

Network issue reported by krw@

show more ...


# cb5217fb 24-Feb-2018 visa <visa@openbsd.org>

Declare ci_ipl volatile to prevent the compiler from optimizing
or reordering accesses to the variable. Assume that the assembler
preserves the correct sequence of instructions, which allows the
remo

Declare ci_ipl volatile to prevent the compiler from optimizing
or reordering accesses to the variable. Assume that the assembler
preserves the correct sequence of instructions, which allows the
removal of the explicit noreorder/reorder toggles from the C code.

With ci_ipl being volatile, drop mips_sync() calls that follow
the accesses of the variable. The sync is redundant as a compiler
barrier. In addition, the MIPS64 CPU designs should not need the
sync for pipeline or write buffer control. According to miod@,
the use of the instruction is a carryover from code targeting
early MIPS designs that lack tight integration with the cache
and write buffer.

Discussed with and testing help from miod@.
Tested on CN5020, CN6120, CN7130, CN7360, Loongson 2F and 3A1000,
R4400, R8000, R10000 and R16000.

show more ...


# f8189779 23-Jan-2018 visa <visa@openbsd.org>

Always lock the kernel lock with non-MP-safe interrupt handlers.

Suggested by kettenis@


# cb20e335 03-Nov-2017 visa <visa@openbsd.org>

Fix a stupid typo.


# e842824b 02-Nov-2017 visa <visa@openbsd.org>

Assign each cnmac(4) port its own input work group, and assign
the interrupt processing of each work group to one of the available
CPUs. This enables some parallelism in the early stages of packet Rx.


# 429e2826 13-Jul-2017 visa <visa@openbsd.org>

Add handling for the third interrupt summary vector,
needed by upcoming work.


# d7d80ecd 13-Jul-2017 visa <visa@openbsd.org>

Get cpuid from `ci' to avoid an extra function call.


# 4196a899 12-Jul-2017 visa <visa@openbsd.org>

Reorganize separate configuration fields into per-CPU structs
to compact the data indexing. This additionally improves the cache
locality of the data.


# 34745855 07-Jul-2017 visa <visa@openbsd.org>

Fix function name in panic message.


# f83d439f 19-Jun-2017 visa <visa@openbsd.org>

Use a consistent naming for fdt attach arguments.


# 89182934 18-Jun-2017 visa <visa@openbsd.org>

Split octeon interrupt code into a glue layer and a CIU driver.
This makes possible to add drivers for other interrupt controllers
on the platform.

The glue layer has been derived from arm64/armv7.