PERFORCE change 45183 for review
Warner Losh
imp at FreeBSD.org
Sun Jan 11 18:22:38 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=45183
Change 45183 by imp at imp_pacopaco on 2004/01/11 18:22:05
Power branch: IFC @45176
Affected files ...
.. //depot/projects/power/sys/alpha/alpha/mp_machdep.c#4 integrate
.. //depot/projects/power/sys/alpha/include/sysarch.h#2 integrate
.. //depot/projects/power/sys/amd64/include/sysarch.h#3 integrate
.. //depot/projects/power/sys/boot/forth/beastie.4th#4 integrate
.. //depot/projects/power/sys/compat/ndis/kern_ndis.c#4 integrate
.. //depot/projects/power/sys/compat/ndis/ndis_var.h#4 integrate
.. //depot/projects/power/sys/compat/ndis/subr_ndis.c#4 integrate
.. //depot/projects/power/sys/conf/files.i386#4 integrate
.. //depot/projects/power/sys/conf/majors#6 integrate
.. //depot/projects/power/sys/conf/newvers.sh#4 integrate
.. //depot/projects/power/sys/conf/options.i386#5 integrate
.. //depot/projects/power/sys/dev/acpica/Osd/OsdTable.c#2 integrate
.. //depot/projects/power/sys/dev/acpica/acpi.c#9 integrate
.. //depot/projects/power/sys/dev/an/if_an.c#4 integrate
.. //depot/projects/power/sys/dev/ata/ata-all.c#5 integrate
.. //depot/projects/power/sys/dev/ata/ata-all.h#5 integrate
.. //depot/projects/power/sys/dev/ata/ata-card.c#4 integrate
.. //depot/projects/power/sys/dev/ata/ata-cbus.c#2 integrate
.. //depot/projects/power/sys/dev/ata/ata-chipset.c#7 integrate
.. //depot/projects/power/sys/dev/ata/ata-disk.c#4 integrate
.. //depot/projects/power/sys/dev/ata/ata-dma.c#4 integrate
.. //depot/projects/power/sys/dev/ata/ata-isa.c#3 integrate
.. //depot/projects/power/sys/dev/ata/ata-lowlevel.c#5 integrate
.. //depot/projects/power/sys/dev/ata/ata-pci.c#5 integrate
.. //depot/projects/power/sys/dev/ata/ata-queue.c#4 integrate
.. //depot/projects/power/sys/dev/ata/ata-raid.c#4 integrate
.. //depot/projects/power/sys/dev/ata/atapi-cd.c#6 integrate
.. //depot/projects/power/sys/dev/ata/atapi-fd.c#3 integrate
.. //depot/projects/power/sys/dev/ata/atapi-tape.c#3 integrate
.. //depot/projects/power/sys/dev/bge/if_bge.c#5 integrate
.. //depot/projects/power/sys/dev/bge/if_bgereg.h#3 integrate
.. //depot/projects/power/sys/dev/firewire/firewire.c#8 integrate
.. //depot/projects/power/sys/dev/firewire/fwohci.c#8 integrate
.. //depot/projects/power/sys/dev/firewire/if_fwe.c#7 integrate
.. //depot/projects/power/sys/dev/firewire/sbp.c#7 integrate
.. //depot/projects/power/sys/dev/if_ndis/if_ndis.c#4 integrate
.. //depot/projects/power/sys/dev/if_ndis/if_ndisvar.h#3 integrate
.. //depot/projects/power/sys/dev/pci/pci_pci.c#6 integrate
.. //depot/projects/power/sys/dev/pci/pci_user.c#5 integrate
.. //depot/projects/power/sys/dev/pci/pcib_private.h#4 integrate
.. //depot/projects/power/sys/dev/sound/pci/emu10k1.c#2 integrate
.. //depot/projects/power/sys/dev/trm/trm.c#2 integrate
.. //depot/projects/power/sys/fs/smbfs/smbfs_vnops.c#4 integrate
.. //depot/projects/power/sys/geom/geom_subr.c#4 integrate
.. //depot/projects/power/sys/gnu/dev/sound/pci/emu10k1-ac97.h#2 integrate
.. //depot/projects/power/sys/gnu/dev/sound/pci/emu10k1-alsa.h#2 integrate
.. //depot/projects/power/sys/gnu/dev/sound/pci/emu10k1.h#2 integrate
.. //depot/projects/power/sys/i386/acpica/acpi_toshiba.c#1 branch
.. //depot/projects/power/sys/i386/conf/NOTES#7 integrate
.. //depot/projects/power/sys/i386/i386/pmap.c#6 integrate
.. //depot/projects/power/sys/i386/include/sysarch.h#2 integrate
.. //depot/projects/power/sys/ia64/include/sysarch.h#3 integrate
.. //depot/projects/power/sys/kern/kern_descrip.c#4 integrate
.. //depot/projects/power/sys/kern/kern_fork.c#4 integrate
.. //depot/projects/power/sys/kern/kern_sig.c#7 integrate
.. //depot/projects/power/sys/kern/kern_thread.c#4 integrate
.. //depot/projects/power/sys/kern/sys_pipe.c#5 integrate
.. //depot/projects/power/sys/kern/tty.c#3 integrate
.. //depot/projects/power/sys/kern/uipc_syscalls.c#5 integrate
.. //depot/projects/power/sys/kern/uipc_usrreq.c#3 integrate
.. //depot/projects/power/sys/kern/vfs_syscalls.c#5 integrate
.. //depot/projects/power/sys/modules/Makefile#6 integrate
.. //depot/projects/power/sys/modules/acpi/acpi/Makefile#2 integrate
.. //depot/projects/power/sys/modules/acpi/acpi_toshiba/Makefile#1 branch
.. //depot/projects/power/sys/modules/ida/Makefile#1 branch
.. //depot/projects/power/sys/modules/ndis/Makefile#2 integrate
.. //depot/projects/power/sys/modules/sound/driver/emu10k1/Makefile#2 integrate
.. //depot/projects/power/sys/net/if_atmsubr.c#3 integrate
.. //depot/projects/power/sys/net/route.c#6 integrate
.. //depot/projects/power/sys/netgraph/ng_ether.c#4 integrate
.. //depot/projects/power/sys/netinet/ip_icmp.c#6 integrate
.. //depot/projects/power/sys/netinet/ip_output.c#4 integrate
.. //depot/projects/power/sys/netinet/tcp.h#2 integrate
.. //depot/projects/power/sys/netinet/tcp_input.c#7 integrate
.. //depot/projects/power/sys/netinet/tcp_subr.c#8 integrate
.. //depot/projects/power/sys/netinet/tcp_usrreq.c#5 integrate
.. //depot/projects/power/sys/netinet/tcp_var.h#3 integrate
.. //depot/projects/power/sys/netinet6/in6.c#4 integrate
.. //depot/projects/power/sys/netinet6/in6_ifattach.c#4 integrate
.. //depot/projects/power/sys/netinet6/in6_pcb.c#5 integrate
.. //depot/projects/power/sys/pc98/i386/machdep.c#5 integrate
.. //depot/projects/power/sys/pci/if_dc.c#8 integrate
.. //depot/projects/power/sys/pci/if_dcreg.h#6 integrate
.. //depot/projects/power/sys/rpc/rpcclnt.c#2 integrate
.. //depot/projects/power/sys/sparc64/include/ofw_machdep.h#2 integrate
.. //depot/projects/power/sys/sparc64/include/sysarch.h#2 integrate
.. //depot/projects/power/sys/sparc64/sparc64/ofw_machdep.c#4 integrate
.. //depot/projects/power/sys/sys/filedesc.h#3 integrate
.. //depot/projects/power/sys/vm/vm_contig.c#4 integrate
.. //depot/projects/power/sys/vm/vm_extern.h#3 integrate
.. //depot/projects/power/sys/vm/vm_kern.c#6 integrate
.. //depot/projects/power/sys/vm/vm_page.c#5 integrate
Differences ...
==== //depot/projects/power/sys/alpha/alpha/mp_machdep.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.51 2003/12/03 14:57:25 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.52 2004/01/07 23:00:20 jhb Exp $");
#include "opt_kstack_pages.h"
@@ -351,7 +351,7 @@
boot_cpu_id = PCPU_GET(cpuid);
KASSERT(boot_cpu_id == hwrpb->rpb_primary_cpu_id,
("cpu_mp_probe() called on non-primary CPU"));
- all_cpus = 1 << boot_cpu_id;
+ all_cpus = PCPU_GET(cpumask);
mp_ncpus = 1;
@@ -413,12 +413,12 @@
all_cpus |= (1 << i);
mp_ncpus++;
}
- PCPU_SET(other_cpus, all_cpus & ~(1 << boot_cpu_id));
+ PCPU_SET(other_cpus, all_cpus & ~PCPU_GET(cpumask));
for (i = 0; i < hwrpb->rpb_pcs_cnt; i++) {
if (i == boot_cpu_id)
continue;
- if (all_cpus & (1 << i))
+ if (!CPU_ABSENT(i))
smp_start_secondary(i);
}
}
@@ -476,7 +476,7 @@
void
ipi_self(u_int64_t ipi)
{
- ipi_selected(1 << PCPU_GET(cpuid), ipi);
+ ipi_selected(PCPU_GET(cpumask), ipi);
}
/*
@@ -489,7 +489,7 @@
u_int64_t ipi;
int cpumask;
- cpumask = 1 << PCPU_GET(cpuid);
+ cpumask = PCPU_GET(cpumask);
CTR1(KTR_SMP, "smp_handle_ipi(), ipis=%lx", ipis);
while (ipis) {
==== //depot/projects/power/sys/alpha/include/sysarch.h#2 (text+ko) ====
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/alpha/include/sysarch.h,v 1.6 2002/03/20 18:58:45 obrien Exp $
+ * $FreeBSD: src/sys/alpha/include/sysarch.h,v 1.7 2004/01/09 16:52:08 nectar Exp $
*/
/*
@@ -52,6 +52,7 @@
__BEGIN_DECLS
int alpha_sethae(u_int64_t);
+int sysarch(int, void *);
__END_DECLS
#endif
==== //depot/projects/power/sys/amd64/include/sysarch.h#3 (text+ko) ====
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/include/sysarch.h,v 1.21 2003/10/23 06:06:14 peter Exp $
+ * $FreeBSD: src/sys/amd64/include/sysarch.h,v 1.22 2004/01/09 16:52:08 nectar Exp $
*/
/*
@@ -50,9 +50,10 @@
__BEGIN_DECLS
int amd64_get_fsbase(void **);
+int amd64_get_gsbase(void **);
int amd64_set_fsbase(void *);
-int amd64_get_gsbase(void **);
int amd64_set_gsbase(void *);
+int sysarch(int, void *);
__END_DECLS
#endif
==== //depot/projects/power/sys/boot/forth/beastie.4th#4 (text+ko) ====
@@ -23,7 +23,7 @@
\ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
\ SUCH DAMAGE.
\
-\ $FreeBSD: src/sys/boot/forth/beastie.4th,v 1.7 2003/10/28 17:18:42 scottl Exp $
+\ $FreeBSD: src/sys/boot/forth/beastie.4th,v 1.8 2004/01/09 19:20:47 scottl Exp $
marker task-beastie.4th
@@ -228,6 +228,7 @@
s" acpi_load" unsetenv
s" 1" s" hint.acpi.0.disabled" setenv
s" 1" s" loader.acpi_disabled_by_user" setenv
+ s" 1" s" hint.apic.0.disabled" setenv
then
s" 0" s" hw.ata.ata_dma" setenv
s" 0" s" hw.ata.atapi_dma" setenv
==== //depot/projects/power/sys/compat/ndis/kern_ndis.c#4 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.23 2004/01/07 06:15:56 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/kern_ndis.c,v 1.25 2004/01/09 06:53:49 wpaul Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -305,17 +305,17 @@
"NDIS API Version", "0x00050001", CTLFLAG_RD);
/* Bus type (PCI, PCMCIA, etc...) */
- sprintf(buf, "%d\n", (int)sc->ndis_iftype);
+ sprintf(buf, "%d", (int)sc->ndis_iftype);
ndis_add_sysctl(sc, "BusType", "Bus Type", buf, CTLFLAG_RD);
if (sc->ndis_res_io != NULL) {
- sprintf(buf, "0x%lx\n", rman_get_start(sc->ndis_res_io));
+ sprintf(buf, "0x%lx", rman_get_start(sc->ndis_res_io));
ndis_add_sysctl(sc, "IOBaseAddress",
"Base I/O Address", buf, CTLFLAG_RD);
}
if (sc->ndis_irq != NULL) {
- sprintf(buf, "%lu\n", rman_get_start(sc->ndis_irq));
+ sprintf(buf, "%lu", rman_get_start(sc->ndis_irq));
ndis_add_sysctl(sc, "InterruptNumber",
"Interrupt Number", buf, CTLFLAG_RD);
}
@@ -600,6 +600,7 @@
priv = &(*p)->np_private;
priv->npp_totlen = m0->m_pkthdr.len;
priv->npp_packetooboffset = offsetof(ndis_packet, np_oob);
+ priv->npp_ndispktflags = NDIS_PACKET_ALLOCATED_BY_NDIS;
for (m = m0; m != NULL; m = m->m_next) {
if (m->m_len == 0)
==== //depot/projects/power/sys/compat/ndis/ndis_var.h#4 (text+ko) ====
@@ -29,7 +29,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/ndis/ndis_var.h,v 1.12 2004/01/06 07:09:26 wpaul Exp $
+ * $FreeBSD: src/sys/compat/ndis/ndis_var.h,v 1.14 2004/01/09 06:53:49 wpaul Exp $
*/
#ifndef _NDIS_VAR_H_
@@ -808,7 +808,7 @@
*/
struct ndis_miniport_interrupt {
void *ni_introbj;
- ndis_spin_lock ni_dpccountlock;
+ ndis_kspin_lock ni_dpccountlock;
void *ni_rsvd;
void *ni_isrfunc;
void *ni_dpcfunc;
@@ -919,6 +919,10 @@
#define NDIS_FLAGS_SENT_AT_DPC 0x00001000
#define NDIS_FLAGS_USES_SG_BUFFER_LIST 0x00002000
+#define NDIS_PACKET_WRAPPER_RESERVED 0x3F
+#define NDIS_PACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
+#define NDIS_PACKET_ALLOCATED_BY_NDIS 0x80
+
#define NDIS_PROTOCOL_ID_DEFAULT 0x00
#define NDIS_PROTOCOL_ID_TCP_IP 0x02
#define NDIS_PROTOCOL_ID_IPX 0x06
@@ -1157,6 +1161,14 @@
TAILQ_HEAD(nte_head, ndis_timer_entry);
+struct ndis_fh {
+ void *nf_vp;
+ void *nf_map;
+ uint32_t nf_maplen;
+};
+
+typedef struct ndis_fh ndis_fh;
+
/*
* The miniport block is basically the internal NDIS handle. We need
* to define this because, unfortunately, it is not entirely opaque
==== //depot/projects/power/sys/compat/ndis/subr_ndis.c#4 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.30 2004/01/07 19:26:47 wpaul Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.32 2004/01/09 06:53:49 wpaul Exp $");
/*
* This file implements a translation layer between the BSD networking
@@ -65,6 +65,10 @@
#include <sys/smp.h>
#include <sys/queue.h>
#include <sys/taskqueue.h>
+#include <sys/proc.h>
+#include <sys/namei.h>
+#include <sys/fcntl.h>
+#include <sys/vnode.h>
#include <net/if.h>
#include <net/if_arp.h>
@@ -100,7 +104,11 @@
#define FUNC void(*)(void)
static struct mtx ndis_interlock;
+static char ndis_filepath[MAXPATHLEN];
+SYSCTL_STRING(_hw, OID_AUTO, ndis_filepath, CTLFLAG_RW, ndis_filepath,
+ MAXPATHLEN, "Path used by NdisOpenFile() to search for files");
+
__stdcall static void ndis_initwrap(ndis_handle,
ndis_driver_object *, void *, void *);
__stdcall static ndis_status ndis_register_miniport(ndis_handle,
@@ -272,6 +280,7 @@
{
mtx_init(&ndis_interlock, "ndislock", MTX_NETWORK_LOCK,
MTX_DEF | MTX_RECURSE | MTX_DUPOK);
+ strcpy(ndis_filepath, "/compat/ndis");
return(0);
}
@@ -1539,6 +1548,13 @@
pkt->np_private.npp_packetooboffset =
offsetof(ndis_packet, np_oob);
+ /*
+ * We must initialize the packet flags correctly in order
+ * for the NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO() and
+ * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO() to work correctly.
+ */
+ pkt->np_private.npp_ndispktflags = NDIS_PACKET_ALLOCATED_BY_NDIS;
+
*packet = pkt;
head->np_private.npp_count++;
@@ -2323,12 +2339,50 @@
ndis_physaddr highestaddr;
{
char *afilename = NULL;
+ struct thread *td = curthread;
+ struct nameidata nd;
+ int flags, error;
+ struct vattr vat;
+ struct vattr *vap = &vat;
+ ndis_fh *fh;
+ char path[MAXPATHLEN];
- ndis_unicode_to_ascii(filename->nus_buf, filename->nus_len, &afilename);
- printf("ndis_open_file(\"%s\", %ju)\n", afilename,
- highestaddr.np_quad);
+ ndis_unicode_to_ascii(filename->nus_buf,
+ filename->nus_len, &afilename);
+
+ sprintf(path, "%s/%s", ndis_filepath, afilename);
free(afilename, M_DEVBUF);
- *status = NDIS_STATUS_FILE_NOT_FOUND;
+
+ fh = malloc(sizeof(ndis_fh), M_TEMP, M_NOWAIT);
+ if (fh == NULL) {
+ *status = NDIS_STATUS_RESOURCES;
+ return;
+ }
+
+ mtx_lock(&Giant);
+ NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, path, td);
+
+ flags = FREAD;
+ error = vn_open(&nd, &flags, 0, -1);
+ if (error) {
+ mtx_unlock(&Giant);
+ *status = NDIS_STATUS_FILE_NOT_FOUND;
+ free(fh, M_TEMP);
+ return;
+ }
+
+ NDFREE(&nd, NDF_ONLY_PNBUF);
+
+ /* Get the file size. */
+ VOP_GETATTR(nd.ni_vp, vap, NOCRED, td);
+ VOP_UNLOCK(nd.ni_vp, 0, td);
+ mtx_unlock(&Giant);
+
+ fh->nf_vp = nd.ni_vp;
+ fh->nf_map = NULL;
+ *filehandle = fh;
+ *filelength = fh->nf_maplen = vap->va_size & 0xFFFFFFFF;
+ *status = NDIS_STATUS_SUCCESS;
return;
}
@@ -2338,8 +2392,46 @@
void **mappedbuffer;
ndis_handle filehandle;
{
+ ndis_fh *fh;
+ struct thread *td = curthread;
+ int error, resid;
- *status = NDIS_STATUS_ALREADY_MAPPED;
+ if (filehandle == NULL) {
+ *status = NDIS_STATUS_FAILURE;
+ return;
+ }
+
+ fh = (ndis_fh *)filehandle;
+
+ if (fh->nf_vp == NULL) {
+ *status = NDIS_STATUS_FAILURE;
+ return;
+ }
+
+ if (fh->nf_map != NULL) {
+ *status = NDIS_STATUS_ALREADY_MAPPED;
+ return;
+ }
+
+ fh->nf_map = malloc(fh->nf_maplen, M_DEVBUF, M_NOWAIT);
+
+ if (fh->nf_map == NULL) {
+ *status = NDIS_STATUS_RESOURCES;
+ return;
+ }
+
+ mtx_lock(&Giant);
+ error = vn_rdwr(UIO_READ, fh->nf_vp, fh->nf_map, fh->nf_maplen, 0,
+ UIO_SYSSPACE, 0, td->td_ucred, NOCRED, &resid, td);
+ mtx_unlock(&Giant);
+
+ if (error)
+ *status = NDIS_STATUS_FAILURE;
+ else {
+ *status = NDIS_STATUS_SUCCESS;
+ *mappedbuffer = fh->nf_map;
+ }
+
return;
}
@@ -2347,6 +2439,14 @@
ndis_unmap_file(filehandle)
ndis_handle filehandle;
{
+ ndis_fh *fh;
+ fh = (ndis_fh *)filehandle;
+
+ if (fh->nf_map == NULL)
+ return;
+ free(fh->nf_map, M_DEVBUF);
+ fh->nf_map = NULL;
+
return;
}
@@ -2354,6 +2454,28 @@
ndis_close_file(filehandle)
ndis_handle filehandle;
{
+ struct thread *td = curthread;
+ ndis_fh *fh;
+
+ if (filehandle == NULL)
+ return;
+
+ fh = (ndis_fh *)filehandle;
+ if (fh->nf_map != NULL) {
+ free(fh->nf_map, M_DEVBUF);
+ fh->nf_map = NULL;
+ }
+
+ if (fh->nf_vp == NULL)
+ return;
+
+ mtx_lock(&Giant);
+ vn_close(fh->nf_vp, FREAD, td->td_ucred, td);
+ mtx_unlock(&Giant);
+
+ fh->nf_vp = NULL;
+ free(fh, M_DEVBUF);
+
return;
}
==== //depot/projects/power/sys/conf/files.i386#4 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.i386,v 1.460 2003/12/11 22:34:36 wpaul Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.461 2004/01/11 19:18:38 njl Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -168,6 +168,7 @@
geom/geom_mbr_enc.c standard
i386/acpica/OsdEnvironment.c optional acpi
i386/acpica/acpi_machdep.c optional acpi
+i386/acpica/acpi_toshiba.c optional acpi_toshiba acpi
i386/acpica/acpi_wakeup.c optional acpi
acpi_wakecode.h optional acpi \
dependency "$S/i386/acpica/acpi_wakecode.S" \
==== //depot/projects/power/sys/conf/majors#6 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/majors,v 1.186 2003/12/13 18:12:57 phk Exp $
+# $FreeBSD: src/sys/conf/majors,v 1.187 2004/01/11 06:24:34 rwatson Exp $
#
# This list is semi-obsoleted by DEVFS, but for now it still contains
# the current allocation of device major numbers.
@@ -118,7 +118,6 @@
115 dag University of Waikato DAG network capture boards
117 *acd ATAPI CDROM
119 *ast ATAPI tape
-120 aud Audit Device <rwatson at FreeBSD.org>
121 onew Dallas Semiconductor One-Wire bus <phk at freebsd.org>
122 *uhid USB HID devices <n_hibma>
123 *fb frame buffer
==== //depot/projects/power/sys/conf/newvers.sh#4 (text+ko) ====
@@ -32,7 +32,7 @@
# SUCH DAMAGE.
#
# @(#)newvers.sh 8.1 (Berkeley) 4/20/94
-# $FreeBSD: src/sys/conf/newvers.sh,v 1.57 2003/12/07 03:56:12 scottl Exp $
+# $FreeBSD: src/sys/conf/newvers.sh,v 1.60 2004/01/11 14:13:29 ru Exp $
TYPE="FreeBSD"
REVISION="5.2"
@@ -56,9 +56,9 @@
do
if [ -r "$bsd_copyright" ]; then
COPYRIGHT=`sed \
- -e "s/\[year\]/$year/" \
- -e 's/\[your name here\]\.* /FreeBSD Inc./' \
- -e 's/\[your name\]\.*/FreeBSD Inc./' \
+ -e "s/\[year\]/1992-$year/" \
+ -e 's/\[your name here\]\.* /The FreeBSD Project./' \
+ -e 's/\[your name\]\.*/The FreeBSD Project./' \
-e '/\[id for your version control system, if any\]/d' \
$bsd_copyright`
break
@@ -68,8 +68,8 @@
# no copyright found, use a dummy
if [ X"$COPYRIGHT" = X ]; then
COPYRIGHT="/*
- * Copyright (c) $year
- * FreeBSD Inc. All rights reserved.
+ * Copyright (c) 1992-$year The FreeBSD Project.
+ * All rights reserved.
*
*/"
fi
==== //depot/projects/power/sys/conf/options.i386#5 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options.i386,v 1.206 2003/12/30 07:28:53 bde Exp $
+# $FreeBSD: src/sys/conf/options.i386,v 1.207 2004/01/08 17:13:10 wpaul Exp $
# Options specific to the i386 platform kernels
AUTO_EOI_1 opt_auto_eoi.h
@@ -27,6 +27,7 @@
DEBUG_SVR4 opt_svr4.h
PECOFF_SUPPORT opt_dontuse.h
PECOFF_DEBUG opt_pecoff.h
+NDISAPI opt_dontuse.h
# Change KVM size. Changes things all over the kernel.
KVA_PAGES opt_global.h
==== //depot/projects/power/sys/dev/acpica/Osd/OsdTable.c#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/Osd/OsdTable.c,v 1.3 2003/04/29 18:50:34 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/Osd/OsdTable.c,v 1.4 2004/01/09 20:01:42 njl Exp $
*/
/*
@@ -46,16 +46,19 @@
ACPI_STRING *NewVal)
{
if (InitVal == NULL || NewVal == NULL)
- return(AE_BAD_PARAMETER);
+ return (AE_BAD_PARAMETER);
*NewVal = NULL;
- if (strncmp(InitVal->Name, "_OS_", 4) == 0 &&
- getenv_string("hw.acpi.os_name", acpi_os_name, sizeof(acpi_os_name))) {
- printf("ACPI: Overriding _OS definition with \"%s\"\n", acpi_os_name);
- *NewVal = acpi_os_name;
+
+ /* Allow both _OS and _OS_ to be overridden. */
+ if (strncmp(InitVal->Name, "_OS", 3) == 0 &&
+ getenv_string("hw.acpi.os_name", acpi_os_name, sizeof(acpi_os_name))) {
+
+ printf("ACPI: Overriding _OS definition with \"%s\"\n", acpi_os_name);
+ *NewVal = acpi_os_name;
}
- return(AE_OK);
+ return (AE_OK);
}
ACPI_STATUS
@@ -93,4 +96,3 @@
return(AE_OK);
}
-
==== //depot/projects/power/sys/dev/acpica/acpi.c#9 (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.112 2003/12/26 15:42:13 jhb Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.113 2004/01/09 21:04:28 njl Exp $
*/
#include "opt_acpi.h"
@@ -268,8 +268,9 @@
{
ACPI_TABLE_HEADER th;
char buf[20];
+ int error;
+ struct sbuf sb;
ACPI_STATUS status;
- int error;
ACPI_LOCK_DECL;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
@@ -288,8 +289,15 @@
AcpiFormatException(status));
error = ENXIO;
} else {
- sprintf(buf, "%.6s %.8s", th.OemId, th.OemTableId);
- device_set_desc_copy(dev, buf);
+ sbuf_new(&sb, buf, sizeof(buf), SBUF_FIXEDLEN);
+ sbuf_bcat(&sb, th.OemId, 6);
+ sbuf_trim(&sb);
+ sbuf_putc(&sb, ' ');
+ sbuf_bcat(&sb, th.OemTableId, 8);
+ sbuf_trim(&sb);
+ sbuf_finish(&sb);
+ device_set_desc_copy(dev, sbuf_data(&sb));
+ sbuf_delete(&sb);
error = 0;
}
ACPI_UNLOCK;
==== //depot/projects/power/sys/dev/an/if_an.c#4 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/an/if_an.c,v 1.57 2003/12/30 01:07:12 ambrisko Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/an/if_an.c,v 1.58 2004/01/10 03:02:04 ambrisko Exp $");
/*
* The Aironet 4500/4800 series cards come in PCMCIA, ISA and PCI form.
@@ -2729,27 +2729,6 @@
ifp->if_timer = 5;
}
} else { /* MPI-350 */
-/* HACK */
- {
- struct an_command cmd_struct;
- struct an_reply reply;
- /*
- * Allocate TX descriptor
- */
-
- bzero(&reply,sizeof(reply));
- cmd_struct.an_cmd = AN_CMD_ALLOC_DESC;
- cmd_struct.an_parm0 = AN_DESCRIPTOR_TX;
- cmd_struct.an_parm1 = AN_TX_DESC_OFFSET;
- cmd_struct.an_parm2 = AN_MAX_TX_DESC;
- if (an_cmd_struct(sc, &cmd_struct, &reply)) {
- printf("an%d: failed to allocate TX "
- "descriptor\n",
- sc->an_unit);
- return;
- }
- }
-/* HACK */
while (sc->an_rdata.an_tx_empty ||
idx != sc->an_rdata.an_tx_cons) {
IF_DEQUEUE(&ifp->if_snd, m0);
==== //depot/projects/power/sys/dev/ata/ata-all.c#5 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos at FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.198 2003/11/30 16:27:58 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.199 2004/01/11 22:08:34 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -40,7 +40,7 @@
#include <sys/bus.h>
#include <sys/bio.h>
#include <sys/malloc.h>
-#include <sys/mutex.h>
+#include <sys/sema.h>
#include <sys/sysctl.h>
#include <sys/taskqueue.h>
#include <machine/stdarg.h>
@@ -60,13 +60,13 @@
static struct cdevsw ata_cdevsw = {
.d_ioctl = ata_ioctl,
.d_name = "ata",
- .d_maj = 159,
};
/* prototypes */
static void ata_shutdown(void *, int);
static int ata_getparam(struct ata_device *, u_int8_t);
static void ata_identify_devices(struct ata_channel *);
+static void ata_fail_requests(struct ata_channel *ch,struct ata_device *device);
static void ata_boot_attach(void);
static void bswap(int8_t *, int);
static void btrim(int8_t *, int);
@@ -175,7 +175,6 @@
ata_detach(device_t dev)
{
struct ata_channel *ch;
- struct ata_request *request;
if (!dev || !(ch = device_get_softc(dev)) || !ch->r_irq)
return ENXIO;
@@ -190,16 +189,9 @@
#endif
/* fail outstanding requests on this channel */
- mtx_lock(&ch->queue_mtx);
- while ((request = TAILQ_FIRST(&ch->ata_queue))) {
- TAILQ_REMOVE(&ch->ata_queue, request, chain);
- request->status = ATA_S_ERROR;
- mtx_unlock(&ch->queue_mtx);
- ata_finish(request);
- mtx_lock(&ch->queue_mtx);
- }
- mtx_unlock(&ch->queue_mtx);
+ ata_fail_requests(ch, NULL);
+ /* flush cache and powerdown device */
if (ch->device[MASTER].param) {
if (ch->device[MASTER].param->support.command2 & ATA_SUPPORT_FLUSHCACHE)
ata_controlcmd(&ch->device[MASTER], ATA_FLUSHCACHE, 0, 0, 0);
@@ -237,42 +229,51 @@
return ENXIO;
/* reset the HW */
- ata_printf(ch, -1, "resetting devices ..\n");
+ if (bootverbose)
+ ata_printf(ch, -1, "reiniting channel ..\n");
ATA_FORCELOCK_CH(ch, ATA_CONTROL);
+ ch->flags |= ATA_IMMEDIATE_MODE;
ch->running = NULL;
devices = ch->devices;
ch->hw.reset(ch);
ATA_UNLOCK_CH(ch);
+ if (bootverbose)
+ ata_printf(ch, -1, "resetting done ..\n");
+
/* detach what left the channel during reset */
if ((misdev = devices & ~ch->devices)) {
if ((misdev & (ATA_ATA_MASTER | ATA_ATAPI_MASTER)) &&
ch->device[MASTER].detach) {
if (request && (request->device == &ch->device[MASTER])) {
request->result = ENXIO;
- request->flags |= ATA_R_DONE;
if (request->callback)
(request->callback)(request);
else
- wakeup(request);
+ sema_post(&request->done);
}
ch->device[MASTER].detach(&ch->device[MASTER]);
+ ata_fail_requests(ch, &ch->device[MASTER]);
+ free(ch->device[MASTER].param, M_ATA);
+ ch->device[MASTER].param = NULL;
}
if ((misdev & (ATA_ATA_SLAVE | ATA_ATAPI_SLAVE)) &&
ch->device[SLAVE].detach) {
if (request && (request->device == &ch->device[SLAVE])) {
request->result = ENXIO;
- request->flags |= ATA_R_DONE;
if (request->callback)
(request->callback)(request);
else
- wakeup(request);
+ sema_post(&request->done);
}
ch->device[SLAVE].detach(&ch->device[SLAVE]);
+ ata_fail_requests(ch, &ch->device[SLAVE]);
+ free(ch->device[SLAVE].param, M_ATA);
+ ch->device[SLAVE].param = NULL;
}
}
-
- /* identify whats present on this channel now */
+
+ /* identify what is present on the channel now */
ata_identify_devices(ch);
/* attach new devices that appeared during reset */
@@ -285,17 +286,26 @@
ch->device[SLAVE].attach(&ch->device[SLAVE]);
}
- /* restore transfermode on devices */
- if (ch->devices & (ATA_ATA_MASTER | ATA_ATAPI_MASTER))
+ /* restore device config and transfermode on devices */
+ if (ch->devices & (ATA_ATA_MASTER | ATA_ATAPI_MASTER)) {
+ if (ch->device[MASTER].config)
+ ch->device[MASTER].config(&ch->device[MASTER]);
ch->device[MASTER].setmode(&ch->device[MASTER],ch->device[MASTER].mode);
- if (ch->devices & (ATA_ATA_SLAVE | ATA_ATAPI_SLAVE))
+ }
+ if (ch->devices & (ATA_ATA_SLAVE | ATA_ATAPI_SLAVE)) {
+ if (ch->device[SLAVE].config)
+ ch->device[SLAVE].config(&ch->device[SLAVE]);
ch->device[SLAVE].setmode(&ch->device[SLAVE], ch->device[SLAVE].mode);
+ }
#ifdef DEV_ATAPICAM
atapi_cam_reinit_bus(ch);
#endif
- printf("done\n");
+ if (bootverbose)
+ ata_printf(ch, -1, "device config done ..\n");
+ ch->flags &= ~ATA_IMMEDIATE_MODE;
+ ata_start(ch);
return 0;
}
@@ -543,21 +553,18 @@
static int
ata_getparam(struct ata_device *atadev, u_int8_t command)
{
- struct ata_params *atacap;
struct ata_request *request;
int error = ENOMEM;
- if (atadev->param)
- atacap = atadev->param;
- else
- atacap = malloc(sizeof(struct ata_params), M_ATA, M_NOWAIT);
- if (atacap) {
+ if (!atadev->param)
+ atadev->param = malloc(sizeof(struct ata_params), M_ATA, M_NOWAIT);
+ if (atadev->param) {
request = ata_alloc_request();
if (request) {
request->device = atadev;
request->u.ata.command = command;
- request->flags = (ATA_R_READ | ATA_R_QUIET);
- request->data = (caddr_t)atacap;
+ request->flags = (ATA_R_READ | ATA_R_AT_HEAD);
+ request->data = (caddr_t)atadev->param;
request->timeout = 2;
request->retries = 3;
request->bytecount = sizeof(struct ata_params);
@@ -566,18 +573,19 @@
ata_queue_request(request);
if (!(error = request->result))
break;
- request->flags &= ~ATA_R_QUIET;
request->retries--;
}
ata_free_request(request);
}
- if (!isprint(atacap->model[0]) || !isprint(atacap->model[1]))
+ if (!isprint(atadev->param->model[0]) ||
+ !isprint(atadev->param->model[1]))
error = ENXIO;
if (error) {
+ free(atadev->param, M_ATA);
atadev->param = NULL;
- free(atacap, M_ATA);
}
else {
+ struct ata_params *atacap = atadev->param;
#if BYTE_ORDER == BIG_ENDIAN
int16_t *ptr;
@@ -598,7 +606,6 @@
bswap(atacap->serial, sizeof(atacap->serial));
btrim(atacap->serial, sizeof(atacap->serial));
bpack(atacap->serial, atacap->serial, sizeof(atacap->serial));
- atadev->param = atacap;
if (bootverbose)
ata_prtdev(atadev,
"pio=0x%02x wdma=0x%02x udma=0x%02x cable=%spin\n",
@@ -694,6 +701,24 @@
}
}
+static void
+ata_fail_requests(struct ata_channel *ch, struct ata_device *device)
+{
+ struct ata_request *request;
+
+ mtx_lock(&ch->queue_mtx);
+ while ((request = TAILQ_FIRST(&ch->ata_queue))) {
+ if (device == NULL || request->device == device) {
+ TAILQ_REMOVE(&ch->ata_queue, request, chain);
+ request->result = ENXIO;
+ mtx_unlock(&ch->queue_mtx);
+ ata_finish(request);
+ mtx_lock(&ch->queue_mtx);
+ }
+ }
+ mtx_unlock(&ch->queue_mtx);
+}
+
static void
ata_boot_attach(void)
{
@@ -964,12 +989,12 @@
printf("ata: malloc of delayed attach hook failed\n");
return;
}
-
ata_delayed_attach->ich_func = (void*)ata_boot_attach;
if (config_intrhook_establish(ata_delayed_attach) != 0) {
printf("ata: config_intrhook_establish failed\n");
free(ata_delayed_attach, M_TEMP);
}
+
/* Register a handler to flush write caches on shutdown */
if ((EVENTHANDLER_REGISTER(shutdown_post_sync, ata_shutdown,
NULL, SHUTDOWN_PRI_DEFAULT)) == NULL)
==== //depot/projects/power/sys/dev/ata/ata-all.h#5 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1998 - 2003 Søren Schmidt <sos at FreeBSD.org>
+ * Copyright (c) 1998 - 2004 Søren Schmidt <sos at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.68 2003/11/28 19:01:28 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.69 2004/01/11 22:08:34 sos Exp $
*/
/* ATA register defines */
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list