PERFORCE change 37260 for review
Marcel Moolenaar
marcel at FreeBSD.org
Sat Aug 30 23:45:07 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=37260
Change 37260 by marcel at marcel_nfs on 2003/08/30 23:44:57
IFC @37254
Affected files ...
.. //depot/projects/uart/alpha/alpha/pmap.c#9 integrate
.. //depot/projects/uart/alpha/alpha/vm_machdep.c#6 integrate
.. //depot/projects/uart/amd64/acpica/OsdEnvironment.c#3 integrate
.. //depot/projects/uart/amd64/acpica/acpi_machdep.c#3 integrate
.. //depot/projects/uart/amd64/acpica/acpi_wakeup.c#3 integrate
.. //depot/projects/uart/amd64/amd64/vm_machdep.c#5 integrate
.. //depot/projects/uart/amd64/pci/pci_bus.c#4 integrate
.. //depot/projects/uart/conf/files#19 integrate
.. //depot/projects/uart/ddb/db_ps.c#4 integrate
.. //depot/projects/uart/dev/acpica/Osd/OsdHardware.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi.c#7 integrate
.. //depot/projects/uart/dev/acpica/acpi_cpu.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_lid.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_powerres.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_resource.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_thermal.c#3 integrate
.. //depot/projects/uart/dev/acpica/acpi_timer.c#4 integrate
.. //depot/projects/uart/dev/acpica/acpica_support.c#3 delete
.. //depot/projects/uart/dev/acpica/acpica_support.h#2 delete
.. //depot/projects/uart/dev/acpica/acpiio.h#3 integrate
.. //depot/projects/uart/dev/acpica/acpivar.h#4 integrate
.. //depot/projects/uart/dev/ata/ata-lowlevel.c#4 integrate
.. //depot/projects/uart/dev/ata/ata-queue.c#3 integrate
.. //depot/projects/uart/dev/ep/if_ep.c#5 integrate
.. //depot/projects/uart/dev/ep/if_ep_isa.c#4 integrate
.. //depot/projects/uart/dev/ep/if_ep_pccard.c#4 integrate
.. //depot/projects/uart/dev/exca/exca.c#4 integrate
.. //depot/projects/uart/dev/firewire/sbp.c#8 integrate
.. //depot/projects/uart/dev/ichsmb/ichsmb_pci.c#4 integrate
.. //depot/projects/uart/dev/pccard/pccardvar.h#2 integrate
.. //depot/projects/uart/dev/pci/pci.c#6 integrate
.. //depot/projects/uart/dev/pci/pcireg.h#3 integrate
.. //depot/projects/uart/dev/puc/puc_pci.c#4 integrate
.. //depot/projects/uart/dev/sound/pci/es137x.c#4 integrate
.. //depot/projects/uart/dev/sound/pci/ich.c#7 integrate
.. //depot/projects/uart/dev/sound/pcm/ac97.c#4 integrate
.. //depot/projects/uart/geom/geom.h#2 integrate
.. //depot/projects/uart/geom/geom_dev.c#4 integrate
.. //depot/projects/uart/i386/acpica/OsdEnvironment.c#2 integrate
.. //depot/projects/uart/i386/acpica/acpi_machdep.c#2 integrate
.. //depot/projects/uart/i386/acpica/acpi_wakecode.S#2 integrate
.. //depot/projects/uart/i386/acpica/acpi_wakeup.c#5 integrate
.. //depot/projects/uart/i386/i386/vm_machdep.c#4 integrate
.. //depot/projects/uart/i386/pci/pci_bus.c#4 integrate
.. //depot/projects/uart/ia64/acpica/OsdEnvironment.c#2 integrate
.. //depot/projects/uart/ia64/acpica/acpi_machdep.c#2 integrate
.. //depot/projects/uart/ia64/acpica/acpi_wakeup.c#2 integrate
.. //depot/projects/uart/ia64/ia64/vm_machdep.c#5 integrate
.. //depot/projects/uart/kern/uipc_syscalls.c#4 integrate
.. //depot/projects/uart/kern/vfs_bio.c#4 integrate
.. //depot/projects/uart/kern/vfs_cluster.c#3 integrate
.. //depot/projects/uart/modules/Makefile#6 integrate
.. //depot/projects/uart/modules/acpi/Makefile#5 integrate
.. //depot/projects/uart/modules/pst/Makefile#1 branch
.. //depot/projects/uart/net/if_ethersubr.c#4 integrate
.. //depot/projects/uart/netatalk/aarp.c#2 integrate
.. //depot/projects/uart/netatalk/ddp_output.c#2 integrate
.. //depot/projects/uart/netinet/igmp.c#3 integrate
.. //depot/projects/uart/pc98/pc98/sio.c#4 integrate
.. //depot/projects/uart/pccard/i82365.h#2 integrate
.. //depot/projects/uart/pccard/pcic.c#3 integrate
.. //depot/projects/uart/powerpc/powerpc/vm_machdep.c#5 integrate
.. //depot/projects/uart/sparc64/sparc64/vm_machdep.c#4 integrate
.. //depot/projects/uart/sys/buf.h#3 integrate
.. //depot/projects/uart/sys/mac.h#4 integrate
.. //depot/projects/uart/ufs/ffs/ffs_softdep.c#2 integrate
.. //depot/projects/uart/vm/swap_pager.c#9 integrate
.. //depot/projects/uart/vm/vm_map.c#8 integrate
.. //depot/projects/uart/vm/vm_map.h#5 integrate
.. //depot/projects/uart/vm/vm_page.c#5 integrate
.. //depot/projects/uart/vm/vm_pageout.c#6 integrate
.. //depot/projects/uart/vm/vnode_pager.c#5 integrate
Differences ...
==== //depot/projects/uart/alpha/alpha/pmap.c#9 (text+ko) ====
@@ -148,7 +148,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.134 2003/08/20 20:12:05 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.135 2003/08/28 23:12:28 alc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -340,7 +340,6 @@
static int pmap_release_free_page(pmap_t pmap, vm_page_t p);
static vm_page_t _pmap_allocpte(pmap_t pmap, unsigned ptepindex);
-static vm_page_t pmap_page_lookup(vm_object_t object, vm_pindex_t pindex);
static int pmap_unuse_pt(pmap_t, vm_offset_t, vm_page_t);
#ifdef SMP
static void pmap_invalidate_page_action(void *arg);
@@ -914,22 +913,6 @@
return ALPHA_PHYS_TO_K0SEG(start);
}
-
-static vm_page_t
-pmap_page_lookup(vm_object_t object, vm_pindex_t pindex)
-{
- vm_page_t m;
-retry:
- m = vm_page_lookup(object, pindex);
- if (m != NULL) {
- vm_page_lock_queues();
- if (vm_page_sleep_if_busy(m, FALSE, "pplookp"))
- goto retry;
- vm_page_unlock_queues();
- }
- return m;
-}
-
/***************************************************
* Page table page management routines.....
***************************************************/
@@ -967,10 +950,8 @@
if (m->pindex < NUSERLEV3MAPS) {
/* unhold the level 2 page table */
vm_page_t lev2pg;
- lev2pg = vm_page_lookup(pmap->pm_pteobj,
- NUSERLEV3MAPS + pmap_lev1_index(va));
- while (vm_page_sleep_if_busy(lev2pg, FALSE, "pulook"))
- vm_page_lock_queues();
+
+ lev2pg = PHYS_TO_VM_PAGE(pmap_pte_pa(pmap_lev1pte(pmap, va)));
vm_page_unhold(lev2pg);
if (lev2pg->hold_count == 0)
_pmap_unwire_pte_hold(pmap, va, lev2pg);
@@ -1027,9 +1008,7 @@
(pmap->pm_ptphint->pindex == ptepindex)) {
mpte = pmap->pm_ptphint;
} else {
- while ((mpte = vm_page_lookup(pmap->pm_pteobj, ptepindex)) != NULL &&
- vm_page_sleep_if_busy(mpte, FALSE, "pulook"))
- vm_page_lock_queues();
+ mpte = PHYS_TO_VM_PAGE(pmap_pte_pa(pmap_lev2pte(pmap, va)));
pmap->pm_ptphint = mpte;
}
}
@@ -1240,9 +1219,9 @@
if (!pmap_pte_v(l1pte))
_pmap_allocpte(pmap, NUSERLEV3MAPS + l1index);
else {
- vm_page_t l2page =
- pmap_page_lookup(pmap->pm_pteobj,
- NUSERLEV3MAPS + l1index);
+ vm_page_t l2page;
+
+ l2page = PHYS_TO_VM_PAGE(pmap_pte_pa(l1pte));
l2page->hold_count++;
}
l2map = (pt_entry_t*) ALPHA_PHYS_TO_K0SEG(pmap_pte_pa(l1pte));
@@ -1297,7 +1276,7 @@
(pmap->pm_ptphint->pindex == ptepindex)) {
m = pmap->pm_ptphint;
} else {
- m = pmap_page_lookup(pmap->pm_pteobj, ptepindex);
+ m = PHYS_TO_VM_PAGE(pmap_pte_pa(lev2pte));
pmap->pm_ptphint = m;
}
m->hold_count++;
@@ -1999,7 +1978,6 @@
if (mpte && (mpte->pindex == ptepindex)) {
mpte->hold_count++;
} else {
-retry:
/*
* Get the level 2 entry
*/
@@ -2014,12 +1992,9 @@
(pmap->pm_ptphint->pindex == ptepindex)) {
mpte = pmap->pm_ptphint;
} else {
- mpte = pmap_page_lookup(pmap->pm_pteobj,
- ptepindex);
+ mpte = PHYS_TO_VM_PAGE(pmap_pte_pa(l2pte));
pmap->pm_ptphint = mpte;
}
- if (mpte == NULL)
- goto retry;
mpte->hold_count++;
} else {
mpte = _pmap_allocpte(pmap, ptepindex);
==== //depot/projects/uart/alpha/alpha/vm_machdep.c#6 (text+ko) ====
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/vm_machdep.c,v 1.93 2003/08/16 23:15:13 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/vm_machdep.c,v 1.94 2003/08/29 20:04:09 alc Exp $");
#include "opt_kstack_pages.h"
@@ -82,6 +82,8 @@
#include <sys/vnode.h>
#include <sys/vmmeter.h>
#include <sys/kernel.h>
+#include <sys/mbuf.h>
+#include <sys/socketvar.h>
#include <sys/sysctl.h>
#include <sys/unistd.h>
@@ -101,6 +103,20 @@
#include <sys/user.h>
+static void sf_buf_init(void *arg);
+SYSINIT(sock_sf, SI_SUB_MBUF, SI_ORDER_ANY, sf_buf_init, NULL)
+
+/*
+ * Expanded sf_freelist head. Really an SLIST_HEAD() in disguise, with the
+ * sf_freelist head with the sf_lock mutex.
+ */
+static struct {
+ SLIST_HEAD(, sf_buf) sf_head;
+ struct mtx sf_lock;
+} sf_freelist;
+
+static u_int sf_buf_alloc_want;
+
/*
* Finish a fork operation, with process p2 nearly set up.
* Copy and update the pcb, set up the stack so that the child
@@ -370,6 +386,91 @@
}
/*
+ * Allocate a pool of sf_bufs (sendfile(2) or "super-fast" if you prefer. :-))
+ */
+static void
+sf_buf_init(void *arg)
+{
+ struct sf_buf *sf_bufs;
+ vm_offset_t sf_base;
+ int i;
+
+ mtx_init(&sf_freelist.sf_lock, "sf_bufs list lock", NULL, MTX_DEF);
+ mtx_lock(&sf_freelist.sf_lock);
+ SLIST_INIT(&sf_freelist.sf_head);
+ sf_base = kmem_alloc_nofault(kernel_map, nsfbufs * PAGE_SIZE);
+ sf_bufs = malloc(nsfbufs * sizeof(struct sf_buf), M_TEMP,
+ M_NOWAIT | M_ZERO);
+ for (i = 0; i < nsfbufs; i++) {
+ sf_bufs[i].kva = sf_base + i * PAGE_SIZE;
+ SLIST_INSERT_HEAD(&sf_freelist.sf_head, &sf_bufs[i], free_list);
+ }
+ sf_buf_alloc_want = 0;
+ mtx_unlock(&sf_freelist.sf_lock);
+}
+
+/*
+ * Get an sf_buf from the freelist. Will block if none are available.
+ */
+struct sf_buf *
+sf_buf_alloc(struct vm_page *m)
+{
+ struct sf_buf *sf;
+ int error;
+
+ mtx_lock(&sf_freelist.sf_lock);
+ while ((sf = SLIST_FIRST(&sf_freelist.sf_head)) == NULL) {
+ sf_buf_alloc_want++;
+ error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM|PCATCH,
+ "sfbufa", 0);
+ sf_buf_alloc_want--;
+
+ /*
+ * If we got a signal, don't risk going back to sleep.
+ */
+ if (error)
+ break;
+ }
+ if (sf != NULL) {
+ SLIST_REMOVE_HEAD(&sf_freelist.sf_head, free_list);
+ sf->m = m;
+ pmap_qenter(sf->kva, &sf->m, 1);
+ }
+ mtx_unlock(&sf_freelist.sf_lock);
+ return (sf);
+}
+
+/*
+ * Detatch mapped page and release resources back to the system.
+ */
+void
+sf_buf_free(void *addr, void *args)
+{
+ struct sf_buf *sf;
+ struct vm_page *m;
+
+ sf = args;
+ pmap_qremove((vm_offset_t)addr, 1);
+ m = sf->m;
+ vm_page_lock_queues();
+ vm_page_unwire(m, 0);
+ /*
+ * Check for the object going away on us. This can
+ * happen since we don't hold a reference to it.
+ * If so, we're responsible for freeing the page.
+ */
+ if (m->wire_count == 0 && m->object == NULL)
+ vm_page_free(m);
+ vm_page_unlock_queues();
+ sf->m = NULL;
+ mtx_lock(&sf_freelist.sf_lock);
+ SLIST_INSERT_HEAD(&sf_freelist.sf_head, sf, free_list);
+ if (sf_buf_alloc_want > 0)
+ wakeup_one(&sf_freelist);
+ mtx_unlock(&sf_freelist.sf_lock);
+}
+
+/*
* Software interrupt handler for queued VM system processing.
*/
void
==== //depot/projects/uart/amd64/acpica/OsdEnvironment.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/acpica/OsdEnvironment.c,v 1.10 2003/07/25 21:10:18 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/acpica/OsdEnvironment.c,v 1.11 2003/08/28 16:30:31 njl Exp $");
/*
* 6.1 : Environmental support
@@ -40,7 +40,7 @@
u_long amd64_acpi_root;
SYSCTL_ULONG(_machdep, OID_AUTO, acpi_root, CTLFLAG_RD, &amd64_acpi_root, 0,
- "The physical address of the RSDP");
+ "The physical address of the RSDP");
ACPI_STATUS
AcpiOsInitialize(void)
==== //depot/projects/uart/amd64/acpica/acpi_machdep.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_machdep.c,v 1.10 2003/07/25 21:10:19 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_machdep.c,v 1.11 2003/08/28 16:30:31 njl Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -38,9 +38,8 @@
{
struct acpi_softc *sc;
- if ((sc = device_get_softc(dev)) == NULL) {
+ if ((sc = device_get_softc(dev)) == NULL)
return (ENXIO);
- }
acpi_install_wakeup_handler(sc);
==== //depot/projects/uart/amd64/acpica/acpi_wakeup.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_wakeup.c,v 1.20 2003/07/25 21:10:19 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_wakeup.c,v 1.21 2003/08/28 16:30:31 njl Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -37,7 +37,6 @@
int
acpi_sleep_machdep(struct acpi_softc *sc, int state)
{
-
return (0);
}
==== //depot/projects/uart/amd64/amd64/vm_machdep.c#5 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.216 2003/08/16 23:15:14 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.217 2003/08/29 20:04:09 alc Exp $");
#include "opt_isa.h"
#include "opt_kstack_pages.h"
@@ -57,7 +57,9 @@
#include <sys/vmmeter.h>
#include <sys/kernel.h>
#include <sys/ktr.h>
+#include <sys/mbuf.h>
#include <sys/mutex.h>
+#include <sys/socketvar.h>
#include <sys/sysctl.h>
#include <sys/unistd.h>
@@ -78,8 +80,21 @@
#include <amd64/isa/isa.h>
static void cpu_reset_real(void);
+static void sf_buf_init(void *arg);
+SYSINIT(sock_sf, SI_SUB_MBUF, SI_ORDER_ANY, sf_buf_init, NULL)
/*
+ * Expanded sf_freelist head. Really an SLIST_HEAD() in disguise, with the
+ * sf_freelist head with the sf_lock mutex.
+ */
+static struct {
+ SLIST_HEAD(, sf_buf) sf_head;
+ struct mtx sf_lock;
+} sf_freelist;
+
+static u_int sf_buf_alloc_want;
+
+/*
* Finish a fork operation, with process p2 nearly set up.
* Copy and update the pcb, set up the stack so that the child
* ready to run and return to user mode.
@@ -349,6 +364,86 @@
}
/*
+ * Allocate a pool of sf_bufs (sendfile(2) or "super-fast" if you prefer. :-))
+ */
+static void
+sf_buf_init(void *arg)
+{
+ struct sf_buf *sf_bufs;
+ int i;
+
+ mtx_init(&sf_freelist.sf_lock, "sf_bufs list lock", NULL, MTX_DEF);
+ mtx_lock(&sf_freelist.sf_lock);
+ SLIST_INIT(&sf_freelist.sf_head);
+ sf_bufs = malloc(nsfbufs * sizeof(struct sf_buf), M_TEMP,
+ M_NOWAIT | M_ZERO);
+ for (i = 0; i < nsfbufs; i++)
+ SLIST_INSERT_HEAD(&sf_freelist.sf_head, &sf_bufs[i], free_list);
+ sf_buf_alloc_want = 0;
+ mtx_unlock(&sf_freelist.sf_lock);
+}
+
+/*
+ * Get an sf_buf from the freelist. Will block if none are available.
+ */
+struct sf_buf *
+sf_buf_alloc(struct vm_page *m)
+{
+ struct sf_buf *sf;
+ int error;
+
+ mtx_lock(&sf_freelist.sf_lock);
+ while ((sf = SLIST_FIRST(&sf_freelist.sf_head)) == NULL) {
+ sf_buf_alloc_want++;
+ error = msleep(&sf_freelist, &sf_freelist.sf_lock, PVM|PCATCH,
+ "sfbufa", 0);
+ sf_buf_alloc_want--;
+
+ /*
+ * If we got a signal, don't risk going back to sleep.
+ */
+ if (error)
+ break;
+ }
+ if (sf != NULL) {
+ SLIST_REMOVE_HEAD(&sf_freelist.sf_head, free_list);
+ sf->m = m;
+ sf->kva = PHYS_TO_DMAP(m->phys_addr);
+ }
+ mtx_unlock(&sf_freelist.sf_lock);
+ return (sf);
+}
+
+/*
+ * Detatch mapped page and release resources back to the system.
+ */
+void
+sf_buf_free(void *addr, void *args)
+{
+ struct sf_buf *sf;
+ struct vm_page *m;
+
+ sf = args;
+ m = sf->m;
+ vm_page_lock_queues();
+ vm_page_unwire(m, 0);
+ /*
+ * Check for the object going away on us. This can
+ * happen since we don't hold a reference to it.
+ * If so, we're responsible for freeing the page.
+ */
+ if (m->wire_count == 0 && m->object == NULL)
+ vm_page_free(m);
+ vm_page_unlock_queues();
+ sf->m = NULL;
+ mtx_lock(&sf_freelist.sf_lock);
+ SLIST_INSERT_HEAD(&sf_freelist.sf_head, sf, free_list);
+ if (sf_buf_alloc_want > 0)
+ wakeup_one(&sf_freelist);
+ mtx_unlock(&sf_freelist.sf_lock);
+}
+
+/*
* Software interrupt handler for queued VM system processing.
*/
void
==== //depot/projects/uart/amd64/pci/pci_bus.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.101 2003/08/22 07:36:49 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.102 2003/08/28 21:22:24 jhb Exp $");
#include "opt_cpu.h"
@@ -328,10 +328,18 @@
for (slot = 0; slot <= PCI_SLOTMAX; slot++) {
func = 0;
hdrtype = nexus_pcib_read_config(0, bus, slot, func,
- PCIR_HEADERTYPE, 1);
+ PCIR_HDRTYPE, 1);
+ /*
+ * When enumerating bus devices, the standard says that
+ * one should check the header type and ignore the slots whose
+ * header types that the software doesn't know about. We use
+ * this to filter out devices.
+ */
+ if ((hdrtype & PCIM_HDRTYPE) > PCI_MAXHDRTYPE)
+ continue;
if ((hdrtype & PCIM_MFDEV) &&
(!found_orion || hdrtype != 0xff))
- pcifunchigh = 7;
+ pcifunchigh = PCI_FUNCMAX;
else
pcifunchigh = 0;
for (func = 0; func <= pcifunchigh; func++) {
==== //depot/projects/uart/conf/files#19 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.816 2003/08/24 09:22:25 sos Exp $
+# $FreeBSD: src/sys/conf/files,v 1.817 2003/08/29 04:02:18 njl Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -235,7 +235,6 @@
dev/aac/aac_cam.c optional aacp aac
dev/aac/aac_linux.c optional aac compat_linux
dev/acpica/acpi.c optional acpi
-dev/acpica/acpica_support.c optional acpi
dev/acpica/acpi_acad.c optional acpi
dev/acpica/acpi_battery.c optional acpi
dev/acpica/acpi_button.c optional acpi
==== //depot/projects/uart/ddb/db_ps.c#4 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.48 2003/07/31 17:29:42 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.49 2003/08/30 19:06:57 phk Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -70,7 +70,7 @@
p = &proc0;
db_setup_paging(db_simple_pager, &quit, DB_LINES_PER_PAGE);
- db_printf(" pid proc addr uid ppid pgrp flag stat wmesg wchan cmd\n");
+ db_printf(" pid proc uarea uid ppid pgrp flag stat wmesg wchan cmd\n");
while (--np >= 0 && !quit) {
if (p == NULL) {
printf("oops, ran out of processes early!\n");
==== //depot/projects/uart/dev/acpica/Osd/OsdHardware.c#3 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/Osd/OsdHardware.c,v 1.10 2003/07/13 22:57:16 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/Osd/OsdHardware.c,v 1.11 2003/08/28 21:22:25 jhb Exp $
*/
/*
@@ -213,10 +213,10 @@
return (bus);
subclass = pci_cfgregread(bus, slot, func, PCIR_SUBCLASS, 1);
/* Find the header type, masking off the multifunction bit */
- header = pci_cfgregread(bus, slot, func, PCIR_HEADERTYPE, 1) & 0x7f;
- if (header == 1 && subclass == PCIS_BRIDGE_PCI)
+ header = pci_cfgregread(bus, slot, func, PCIR_HDRTYPE, 1) & PCIM_HDRTYPE;
+ if (header == PCIM_HDRTYPE_BRIDGE && subclass == PCIS_BRIDGE_PCI)
bus = pci_cfgregread(bus, slot, func, PCIR_SECBUS_1, 1);
- if (header == 2 && subclass == PCIS_BRIDGE_CARDBUS)
+ if (header == PCIM_HDRTYPE_CARDBUS && subclass == PCIS_BRIDGE_CARDBUS)
bus = pci_cfgregread(bus, slot, func, PCIR_SECBUS_2, 1);
return (bus);
}
==== //depot/projects/uart/dev/acpica/acpi.c#7 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.95 2003/08/15 02:10:38 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.97 2003/08/29 04:02:19 njl Exp $
*/
#include "opt_acpi.h"
@@ -46,28 +46,18 @@
#include <machine/clock.h>
#include <machine/resource.h>
-
#include <isa/isavar.h>
#include "acpi.h"
-
-#include <dev/acpica/acpica_support.h>
-
#include <dev/acpica/acpivar.h>
#include <dev/acpica/acpiio.h>
MALLOC_DEFINE(M_ACPIDEV, "acpidev", "ACPI devices");
-/*
- * Hooks for the ACPI CA debugging infrastructure
- */
+/* Hooks for the ACPI CA debugging infrastructure */
#define _COMPONENT ACPI_BUS
ACPI_MODULE_NAME("ACPI")
-/*
- * Character device
- */
-
static d_open_t acpiopen;
static d_close_t acpiclose;
static d_ioctl_t acpiioctl;
@@ -95,34 +85,36 @@
static void acpi_identify(driver_t *driver, device_t parent);
static int acpi_probe(device_t dev);
static int acpi_attach(device_t dev);
-static device_t acpi_add_child(device_t bus, int order, const char *name, int unit);
+static device_t acpi_add_child(device_t bus, int order, const char *name,
+ int unit);
static int acpi_print_child(device_t bus, device_t child);
-static int acpi_read_ivar(device_t dev, device_t child, int index, uintptr_t *result);
-static int acpi_write_ivar(device_t dev, device_t child, int index, uintptr_t value);
-static int acpi_set_resource(device_t dev, device_t child, int type, int rid, u_long start,
- u_long count);
-static int acpi_get_resource(device_t dev, device_t child, int type, int rid, u_long *startp,
- u_long *countp);
-static struct resource *acpi_alloc_resource(device_t bus, device_t child, int type, int *rid,
- u_long start, u_long end, u_long count, u_int flags);
-static int acpi_release_resource(device_t bus, device_t child, int type, int rid, struct resource *r);
+static int acpi_read_ivar(device_t dev, device_t child, int index,
+ uintptr_t *result);
+static int acpi_write_ivar(device_t dev, device_t child, int index,
+ uintptr_t value);
+static int acpi_set_resource(device_t dev, device_t child, int type,
+ int rid, u_long start, u_long count);
+static int acpi_get_resource(device_t dev, device_t child, int type,
+ int rid, u_long *startp, u_long *countp);
+static struct resource *acpi_alloc_resource(device_t bus, device_t child,
+ int type, int *rid, u_long start, u_long end,
+ u_long count, u_int flags);
+static int acpi_release_resource(device_t bus, device_t child, int type,
+ int rid, struct resource *r);
static u_int32_t acpi_isa_get_logicalid(device_t dev);
static u_int32_t acpi_isa_get_compatid(device_t dev);
-static int acpi_isa_pnp_probe(device_t bus, device_t child, struct isa_pnp_id *ids);
-
+static int acpi_isa_pnp_probe(device_t bus, device_t child,
+ struct isa_pnp_id *ids);
static void acpi_probe_children(device_t bus);
-static ACPI_STATUS acpi_probe_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status);
-
+static ACPI_STATUS acpi_probe_child(ACPI_HANDLE handle, UINT32 level,
+ void *context, void **status);
static void acpi_shutdown_pre_sync(void *arg, int howto);
static void acpi_shutdown_final(void *arg, int howto);
-
static void acpi_enable_fixed_events(struct acpi_softc *sc);
-
static void acpi_system_eventhandler_sleep(void *arg, int state);
static void acpi_system_eventhandler_wakeup(void *arg, int state);
static int acpi_supported_sleep_state_sysctl(SYSCTL_HANDLER_ARGS);
static int acpi_sleep_state_sysctl(SYSCTL_HANDLER_ARGS);
-
static int acpi_pm_func(u_long cmd, void *arg, ...);
static device_method_t acpi_methods[] = {
@@ -165,15 +157,19 @@
DRIVER_MODULE(acpi, nexus, acpi_driver, acpi_devclass, acpi_modevent, 0);
MODULE_VERSION(acpi, 100);
-SYSCTL_INT(_debug, OID_AUTO, acpi_debug_layer, CTLFLAG_RW, &AcpiDbgLayer, 0, "");
-SYSCTL_INT(_debug, OID_AUTO, acpi_debug_level, CTLFLAG_RW, &AcpiDbgLevel, 0, "");
+SYSCTL_INT(_debug, OID_AUTO, acpi_debug_layer, CTLFLAG_RW, &AcpiDbgLayer, 0,
+ "");
+SYSCTL_INT(_debug, OID_AUTO, acpi_debug_level, CTLFLAG_RW, &AcpiDbgLevel, 0,
+ "");
static int acpi_ca_version = ACPI_CA_VERSION;
-SYSCTL_INT(_debug, OID_AUTO, acpi_ca_version, CTLFLAG_RD, &acpi_ca_version, 0, "");
+SYSCTL_INT(_debug, OID_AUTO, acpi_ca_version, CTLFLAG_RD, &acpi_ca_version, 0,
+ "");
/*
* ACPI can only be loaded as a module by the loader; activating it after
* system bootstrap time is not useful, and can be fatal to the system.
- * It also cannot be unloaded, since the entire system bus heirarchy hangs off it.
+ * It also cannot be unloaded, since the entire system bus heirarchy hangs
+ * off it.
*/
static int
acpi_modevent(struct module *mod, int event, void *junk)
@@ -182,17 +178,17 @@
case MOD_LOAD:
if (!cold) {
printf("The ACPI driver cannot be loaded after boot.\n");
- return(EPERM);
+ return (EPERM);
}
break;
case MOD_UNLOAD:
if (!cold && power_pm_get_type() == POWER_PM_TYPE_ACPI)
- return(EBUSY);
+ return (EBUSY);
break;
default:
break;
}
- return(0);
+ return (0);
}
/*
@@ -201,10 +197,10 @@
static void
acpi_identify(driver_t *driver, device_t parent)
{
- device_t child;
- int error;
+ device_t child;
+ int error;
#ifdef ACPI_DEBUGGER
- char *debugpoint;
+ char *debugpoint;
#endif
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
@@ -212,32 +208,26 @@
if (!cold)
return_VOID;
- /*
- * Check that we haven't been disabled with a hint.
- */
+ /* Check that we haven't been disabled with a hint. */
if (resource_disabled("acpi", 0))
return_VOID;
- /*
- * Make sure we're not being doubly invoked.
- */
+ /* Make sure we're not being doubly invoked. */
if (device_find_child(parent, "acpi", 0) != NULL)
return_VOID;
#if __FreeBSD_version >= 500000
- /* initialise the ACPI mutex */
+ /* Initialise the ACPI mutex */
mtx_init(&acpi_mutex, "ACPI global lock", NULL, MTX_DEF);
#endif
- /*
- * Start up the ACPI CA subsystem.
- */
+ /* Start up the ACPI CA subsystem. */
#ifdef ACPI_DEBUGGER
debugpoint = getenv("debug.acpi.debugger");
if (debugpoint) {
if (!strcmp(debugpoint, "init"))
acpi_EnterDebugger();
- freeenv(debugpoint);
+ freeenv(debugpoint);
}
#endif
if (ACPI_FAILURE(error = AcpiInitializeSubsystem())) {
@@ -249,7 +239,7 @@
if (debugpoint) {
if (!strcmp(debugpoint, "tables"))
acpi_EnterDebugger();
- freeenv(debugpoint);
+ freeenv(debugpoint);
}
#endif
@@ -258,12 +248,10 @@
return_VOID;
}
- /*
- * Attach the actual ACPI device.
- */
+ /* Attach the actual ACPI device. */
if ((child = BUS_ADD_CHILD(parent, 0, "acpi", 0)) == NULL) {
- device_printf(parent, "ACPI: could not attach\n");
- return_VOID;
+ device_printf(parent, "ACPI: could not attach\n");
+ return_VOID;
}
}
@@ -282,7 +270,8 @@
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
if (power_pm_get_type() != POWER_PM_TYPE_NONE &&
- power_pm_get_type() != POWER_PM_TYPE_ACPI) {
+ power_pm_get_type() != POWER_PM_TYPE_ACPI) {
+
device_printf(dev, "Other PM system enabled.\n");
return_VALUE(ENXIO);
}
@@ -290,7 +279,8 @@
ACPI_LOCK;
if (ACPI_FAILURE(status = AcpiGetTableHeader(ACPI_TABLE_XSDT, 1, &th))) {
- device_printf(dev, "couldn't get XSDT header: %s\n", AcpiFormatException(status));
+ device_printf(dev, "couldn't get XSDT header: %s\n",
+ AcpiFormatException(status));
error = ENXIO;
} else {
sprintf(buf, "%.6s %.8s", th.OemId, th.OemTableId);
@@ -325,61 +315,61 @@
if (debugpoint) {
if (!strcmp(debugpoint, "spaces"))
acpi_EnterDebugger();
- freeenv(debugpoint);
+ freeenv(debugpoint);
}
#endif
- /*
- * Install the default address space handlers.
- */
+ /* Install the default address space handlers. */
error = ENXIO;
- if (ACPI_FAILURE(status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
- ACPI_ADR_SPACE_SYSTEM_MEMORY,
- ACPI_DEFAULT_HANDLER,
- NULL, NULL))) {
- device_printf(dev, "could not initialise SystemMemory handler: %s\n", AcpiFormatException(status));
+ status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
+ ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_DEFAULT_HANDLER, NULL, NULL);
+ if (ACPI_FAILURE(status)) {
+ device_printf(dev, "Could not initialise SystemMemory handler: %s\n",
+ AcpiFormatException(status));
goto out;
}
- if (ACPI_FAILURE(status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
- ACPI_ADR_SPACE_SYSTEM_IO,
- ACPI_DEFAULT_HANDLER,
- NULL, NULL))) {
- device_printf(dev, "could not initialise SystemIO handler: %s\n", AcpiFormatException(status));
+ status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
+ ACPI_ADR_SPACE_SYSTEM_IO, ACPI_DEFAULT_HANDLER, NULL, NULL);
+ if (ACPI_FAILURE(status)) {
+ device_printf(dev, "Could not initialise SystemIO handler: %s\n",
+ AcpiFormatException(status));
goto out;
}
- if (ACPI_FAILURE(status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
- ACPI_ADR_SPACE_PCI_CONFIG,
- ACPI_DEFAULT_HANDLER,
- NULL, NULL))) {
- device_printf(dev, "could not initialise PciConfig handler: %s\n", AcpiFormatException(status));
+ status = AcpiInstallAddressSpaceHandler(ACPI_ROOT_OBJECT,
+ ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL);
+ if (ACPI_FAILURE(status)) {
+ device_printf(dev, "could not initialise PciConfig handler: %s\n",
+ AcpiFormatException(status));
goto out;
}
/*
* Bring ACPI fully online.
*
- * Note that some systems (specifically, those with namespace evaluation issues
- * that require the avoidance of parts of the namespace) must avoid running _INI
- * and _STA on everything, as well as dodging the final object init pass.
+ * Note that some systems (specifically, those with namespace evaluation
+ * issues that require the avoidance of parts of the namespace) must
+ * avoid running _INI and _STA on everything, as well as dodging the final
+ * object init pass.
*
* For these devices, we set ACPI_NO_DEVICE_INIT and ACPI_NO_OBJECT_INIT).
*
- * XXX We should arrange for the object init pass after we have attached all our
- * child devices, but on many systems it works here.
+ * XXX We should arrange for the object init pass after we have attached
+ * all our child devices, but on many systems it works here.
*/
#ifdef ACPI_DEBUGGER
debugpoint = getenv("debug.acpi.debugger");
if (debugpoint) {
if (!strcmp(debugpoint, "enable"))
acpi_EnterDebugger();
- freeenv(debugpoint);
+ freeenv(debugpoint);
}
#endif
flags = 0;
if (testenv("debug.acpi.avoid"))
flags = ACPI_NO_DEVICE_INIT | ACPI_NO_OBJECT_INIT;
if (ACPI_FAILURE(status = AcpiEnableSubsystem(flags))) {
- device_printf(dev, "could not enable ACPI: %s\n", AcpiFormatException(status));
+ device_printf(dev, "Could not enable ACPI: %s\n",
+ AcpiFormatException(status));
goto out;
}
@@ -390,7 +380,8 @@
acpi_ec_ecdt_probe(dev);
if (ACPI_FAILURE(status = AcpiInitializeObjects(flags))) {
- device_printf(dev, "could not initialize ACPI objects: %s\n", AcpiFormatException(status));
+ device_printf(dev, "Could not initialize ACPI objects: %s\n",
+ AcpiFormatException(status));
goto out;
}
@@ -431,8 +422,8 @@
OID_AUTO, "verbose", CTLFLAG_RD | CTLFLAG_RW,
&sc->acpi_verbose, 0, "verbose mode");
SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree),
- OID_AUTO, "disable_on_poweroff", CTLFLAG_RD | CTLFLAG_RW,
- &sc->acpi_disable_on_poweroff, 0, "ACPI subsystem disable on poweroff");
+ OID_AUTO, "disable_on_poweroff", CTLFLAG_RD | CTLFLAG_RW,
+ &sc->acpi_disable_on_poweroff, 0, "ACPI subsystem disable on poweroff");
/*
* Default to 5 seconds before sleeping to give some machines time to
@@ -472,51 +463,47 @@
}
#endif
- /*
- * Register our shutdown handlers
- */
- EVENTHANDLER_REGISTER(shutdown_pre_sync, acpi_shutdown_pre_sync, sc, SHUTDOWN_PRI_LAST);
- EVENTHANDLER_REGISTER(shutdown_final, acpi_shutdown_final, sc, SHUTDOWN_PRI_LAST);
+ /* Register our shutdown handlers */
+ EVENTHANDLER_REGISTER(shutdown_pre_sync, acpi_shutdown_pre_sync, sc,
+ SHUTDOWN_PRI_LAST);
+ EVENTHANDLER_REGISTER(shutdown_final, acpi_shutdown_final, sc,
+ SHUTDOWN_PRI_LAST);
/*
* Register our acpi event handlers.
* XXX should be configurable eg. via userland policy manager.
*/
- EVENTHANDLER_REGISTER(acpi_sleep_event, acpi_system_eventhandler_sleep, sc, ACPI_EVENT_PRI_LAST);
- EVENTHANDLER_REGISTER(acpi_wakeup_event, acpi_system_eventhandler_wakeup, sc, ACPI_EVENT_PRI_LAST);
+ EVENTHANDLER_REGISTER(acpi_sleep_event, acpi_system_eventhandler_sleep,
+ sc, ACPI_EVENT_PRI_LAST);
+ EVENTHANDLER_REGISTER(acpi_wakeup_event, acpi_system_eventhandler_wakeup,
+ sc, ACPI_EVENT_PRI_LAST);
- /*
- * Flag our initial states.
- */
+ /* Flag our initial states. */
sc->acpi_enabled = 1;
sc->acpi_sstate = ACPI_STATE_S0;
sc->acpi_sleep_disabled = 0;
- /*
- * Create the control device
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list