Age | Commit message (Collapse) | Author |
|
OK kettenis@
|
|
able to react to this suitably.
|
|
unused but intended to be used to correlate audio and wskbd devices.
ok ratchov@
|
|
with AML parsing outside the acpi thread, the locking-release dance
around wsdisplay_{suspend,resume} can be removed
ok kettenis
|
|
reset the MD state before bailing out. New MD function sleep_abort()
does that.
|
|
in sleep_resume(), which seems sensible for other future systems also
|
|
inst_trap_return() was checking for rfir by masking with 0xfc001fc0
which made it impossible to match rfir (0xca0)
rfi: return from interruption
00 rv rv rv 60 0
6 5 5 3 8 5
rfir: return from interruption and restore
00 rv rv rv 65 0
6 5 5 3 8 5
from "PA-RISC 1.1 Architecture and Instruction Set Reference Manual"
where rv indicates reserved bits
change the mask to only mask out reserved bits and check for rfi
in addition to rfir
ok miod@
|
|
ok miod@
|
|
ok visa@
|
|
This prevents errors on luna88k in src/usr.sbin/fw_update/pattern.c
which includes dev/pci/pcivar.h, which includes machine/bus.h.
Suggested by miod@
|
|
ok kettenis@
|
|
|
|
in the device tree -1 is returned, causing a panic in the following malloc
call.
ok kn@ patrick@ kettenis@
|
|
ok kettenis
|
|
the interrupt controller, the second method used implementation-specific
CPU registers. The M1 Pro/Max SoCs use a modified interrupt controller
that no longer provides the first method. So switch to the second method
in preparation for adding M1 Pro/Max support to OpenBSD. As a bonus this
mechanism seems to be faster (which may be why Apple calls these "fast"
IPIs).
ok patrick@
|
|
(most notably the WiFi chip). This is done through a GPIO controlled by
the SMC. Add support for this and make sure we wait for the 100ms required
by the PCIe standard when we use that GPIO to turn on power. This makes sure
these devices are available even if U-Boot doesn't turn them on for us.
ok patrick@
|
|
ok patrick@
|
|
|
|
|
|
|
|
|
|
need to do this can do it a few moments later in a different hook
|
|
noticed by kettenis
|
|
HIBERNATE that needs to be in MD code.
ok gkoehler
|
|
|
|
These stubs don't work; they only pretend to suspend the machine.
SUSPEND + MULTIPROCESSOR doesn't build. zzz(8) stops giving an error
message, even in no-SUSPEND kernels.
Add intr_enable in <powerpc/cpu.h>, adapted from powerpc64, because
subr_suspend.c calls intr_enable().
|
|
|
|
|
|
|
|
for sharing between i386 and amd64.
ok mlarkin kettenis
|
|
OK deraadt@
|
|
|
|
This splits out the MI sequencing, backing it with per-architecture helper
functions. Further steps will be neccesary because ACPI and MD are too
tightly coupled, but soon we'll be able to use this code for more architectures
(which depends on figuring out the lowest-level cpu sleeping method)
ok kettenis
|
|
In the powerpc pmap, hash collisions can spill page table entries.
Page faults can use pte_spill_v to reinsert a spilled pte. If the
fault is a write (DSISR_STORE), then pte_spill_v tries to check for a
read-only page. The existing check (pte_lo & PTE_RO_64) also matched
rw pages, because PTE_RO_64 is 3 and PTE_RW_64 is 2. This caused
pte_spill_v to deny writes to rw pages. Then uvm_fault might allow
the write; but uvm_fault can't handle some pages in the kernel. Such
faults caused, "panic: uvm_fault: fault on non-pageable map", or
"panic: trap type 300".
Change it to ((pte_lo & PTE_PP_64) == PTE_RO_64). This seems to fix
one reason why bsd.mp on a macppc dual G5 might panic.
ok kettenis@ miod@
|
|
If cpu0 sends PPC_IPI_DDB to cpu1, then cpu1 stops on its interrupt
stack. Teach ININTSTK to allow traces through all interrupt stacks,
not only cpu0's.
ININTSTK now works by looping for all cpus. It doesn't remember which
cpu owns the stack. A macppc has at most 4 cpus.
ok kettenis@ miod@
|
|
a DART in bypass mode.
ok patrick@
|
|
I have a machine where the dmesg is too big for 4 pages.
ok deraadt@
|
|
we did for arm64 and powerpc64 some time ago.
ok guenther@
|
|
that we implement proper "break-before-make" semantics and I've stared
at the code for long enough that I've convinced myself that we do indeed
implement this correctly several times.
ok guenther@
|
|
|
|
This driver implements an interface for using DMA for audio output.
ok ratchov@
|
|
than assuming it will always be zero.
ok kettenis@
|
|
put BIOS objects into there, and rely upon them. We are shocked, SHOCKED,
to find a machine that does so in a large object (Supermicro 5019D-FTN4).
So now we need to ignore memory regions < 32MB in size. If we put this
memory into use, the zerothread will soon clear it, and on this particular
case the machine resets because something in AML or SMI gets unhappy.
Other machines with similar problems may exhibit other misbehaviours, so
this could fix heisenbugs. Sadly I expect products to get worse.
ok kettenis, miod
|
|
Fixes an issue uncovered by the recent change to enlarge kva space where
an unaligned address was passed resulting in memset() writing past the
end of the newly allocated page.
ok miod@
|
|
do not bother operating on its first 8 bytes, which will always be zero.
ok visa@
|
|
can't be written to while any thread can see the original version
of the page via a not-yet-flushed stale TLB entry: pmaps can indicate
they do this correctly by defining __HAVE_PMAP_MPSAFE_ENTER_COW;
uvm will force the initial CoW fault to be read-only otherwise.
Set that on amd64 and fix the problem case in pmap_enter() by putting
a read-only mapping in place, shooting the TLB entry, then fixing
it to the final read-write entry so this thread can continue without
re-faulting.
reported by jsing@ from https://github.com/golang/go/issues/34988
assisted by discussion in https://reviews.freebsd.org/D14347
tweaks from jsing@ and kettenis@
ok jsing@ mpi@ kettenis@
|
|
clock that drives the audio clocks on Apple silicon.
ok patrick@
|
|
truncating them to 32bit as documented by the SDM and verified on an Intel
CPU in a Lenovo T510. Use that in the clamping logic and all the tests,
adjusting DPRINTF() format strings to match.
ok mlarkin@
|
|
Edit db_regs[] in db_trace.c on both powerpc and powerpc64, so ddb can
access $r14, $r15, $r16, $dar, $dsisr.
Only for powerpc: change db_trap_glue to copy all registers to and
from ddb_regs (it was skipping some); change db_set_single_step and
db_clear_single_step to flip the correct bit of srr1; delete
FIXUP_PC_AFTER_BREAK, which was off by 1 instruction.
"ddb{1}> s" on my PowerMac7,3 (dual G5 at 2700 MHz) began to panic
like, "*cpu0: mutex 0xa7d0a0 not held in tc_update_timekeep". Add an
arbitrary delay(100) after sending PPC_IPI_DDB; I want cpu0 to get the
ipi before it can see db_active == 1 and skip acquiring a mutex.
ok kettenis@
|
|
No objection from miod@
|