Age | Commit message (Collapse) | Author |
|
This commit greatly improves the handling of how inter-processor
interrupts are allocated and managed. Previously Hyra used handlers at
fixed interrupt vectors for IPIs, however, that is very rigid and not
very scalable at all. With the new IPI framework, one may allocate IPIs
by calling 'md_ipi_alloc()' and initializing the handler field.
To send an IPI to a specific processor, one can use cpu_ipi_send() and
pass the specific CPU structure as well as the IPI identifier.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Give each core a bit that indicates whether the core is online or
halted. We also provide a cpu_halt() which marks the core as offline.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces support for pinning processes to specific cores
which can be useful for things like, keeping core-specific workthreads
running on their respective processors as well as mitigating very
specific cases of false-sharing and performance degradation caused by a
thread jumping between cores which requires cache-line entries to be thrashed
around between them. Threads pinned to a specific core will always see their
cached data in the same L1, L2, etc.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
The CPU family ID and model number are sometimes useful in order to
detect the presence of certain CPU features as well as detecting CPU
specific quirks.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Some CPUs support Supervisor Memory Execution Protection that prevent ring 3
code from being executed in a ring 0 context. Enable this on CPUs that
support it.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Keep track of per-cpu features by using a 'feat' field which contains
the results of various CPUIDs.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Ensure interrupts are disabled at the start of panic()
to prevent any interrupts from further degrading the
state of the system. Also adds a newline before "panic: "
to clean up the logs.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Was supposed to happen on Jan 1, sorry! Happy late new year!
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit changes how reboot() handles REBOOT_HALT. Now instead of one
core being halted, all cores will be halted through an IPI to a halt
vector.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
This commit introduces usage of swapgs to switch out the GS register
with the user GS register. An md_td_kick() function is also introduced
to start up user threads. The this_cpu() function uses the GS register
to read the current CPU structure using a new "self" field.
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|
|
Signed-off-by: Ian Moffett <ian@osmora.org>
|