when the idle-information is being updated (e.g. due acpiacad(4) events),
we can not enter the idle-loop. The lock must run at the same priority
(IPL_NONE) as ACPICA's mutexes obtained via AcpiOsCreateMutex() a.k.a.
AcpiOsCreateSemaphore(). Also check want_resched as the first thing and
clarify the suspend/resume path.
There is still one race condition identified: when the driver is loaded as a
module, we must gracefully kick all CPUs out from the ACPI idle-loop upon
detachment.
this more closely when he wakes up. Normally I wouldn't be in such
a huge rush, but due to atf bug #53 the whole test run breaks now.
At least with the KASSERT removed all tests pass again.
any thresholds which have not been set. Fixes problem reported by
njoly@ in private E-mail, where chip was initialized with only a Critical
threshold, but was reporting a warning.
in genfs_do_putpages() and uao_put().
Use 'v_uobj.uo_npages' to check for an empty memq.
Put some assertions where these marker pages may not appear.
Ok: YAMAMOTO Takashi <yamt@netbsd.org>
cpu_init_msrs() to do it). Having NX bit set on a page will raise a #GP
on fetch if NXE is not enabled, which can happen early when structures
(like idlelwp) are allocated with just rw- rights.
NX is enabled with PAE (if host supports it).
Exact same issue as for amd64, some weeks ago. Same player, shoot again...
Use use 64-bit DMA tag (where available) for ahcisata(4) at jmide(4).
Beginnings of detach/resume support for jmide(4).
Sprinkle static. Misc. little changes.
Fixes PR#43159.
Justification:
UGEN_NISORFRMS, previously 4, is now 8 because that's the number of
microframes per frame on a high speed bus. This allows data to be
transfered every microframe if necessary.
UGEN_NISOREQS, previously 6, is now 4. This is harder to justify,
but I didn't think the total number of buffer frames needed to be
much more than it was.
UGEN_NISOFRAMES, previously 500, is now (UGEN_NISORFRMS * UGEN_NISOREQS)
(32 with values as above). This is all the more we've actually used.
For some reason the driver will put virtual addresses in these variables,
so I'd say this still not quite right. Oh well, at least it compiles on LP64.
address assignment - not required by the spec but Windows does so,
fixes a problem with a Sun Keyboard reported by Jonathan Perkin,
verified by Jonathan Kollasch
It was analyzed that this DSDT busy-loops some unknown PCI memory regions in
several places. Because the regions are apparently almost constant, this
causes several conditions where the interpreter might enter into an infinite
loop. Luckily ACPICA detects this and rightly spams AE_AML_INFINITE_LOOP
warnings.
Not much we can do. Declare as broken beyond repair. Set acpi_force_load=1
to use ACPI or use a custom DSDT.