PERFORCE change 38169 for review
Marcel Moolenaar
marcel at FreeBSD.org
Tue Sep 16 20:23:02 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=38169
Change 38169 by marcel at marcel_nfs on 2003/09/16 20:22:52
IFC @38168
Affected files ...
.. //depot/projects/ia64/Makefile.inc1#84 integrate
.. //depot/projects/ia64/crypto/openssh/buffer.c#4 integrate
.. //depot/projects/ia64/crypto/openssh/channels.c#9 integrate
.. //depot/projects/ia64/crypto/openssh/version.h#11 integrate
.. //depot/projects/ia64/etc/rc.d/dhclient#9 integrate
.. //depot/projects/ia64/etc/services#10 integrate
.. //depot/projects/ia64/lib/libc/net/inet_net_pton.c#3 integrate
.. //depot/projects/ia64/lib/libpthread/arch/amd64/amd64/context.S#3 integrate
.. //depot/projects/ia64/lib/libpthread/thread/thr_kern.c#35 integrate
.. //depot/projects/ia64/release/doc/en_US.ISO8859-1/errata/article.sgml#26 integrate
.. //depot/projects/ia64/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#124 integrate
.. //depot/projects/ia64/share/man/man4/ath.4#8 integrate
.. //depot/projects/ia64/share/man/man4/ath_hal.4#5 integrate
.. //depot/projects/ia64/sys/boot/i386/libi386/comconsole.c#3 integrate
.. //depot/projects/ia64/sys/boot/pc98/libpc98/comconsole.c#3 integrate
.. //depot/projects/ia64/sys/dev/aac/aac.c#31 integrate
.. //depot/projects/ia64/sys/dev/ata/ata-lowlevel.c#8 integrate
.. //depot/projects/ia64/sys/dev/ata/atapi-cd.c#30 integrate
.. //depot/projects/ia64/sys/dev/ic/ns16550.h#3 integrate
.. //depot/projects/ia64/sys/dev/sio/sioreg.h#9 integrate
.. //depot/projects/ia64/sys/dev/sound/isa/mpu.c#4 integrate
.. //depot/projects/ia64/sys/dev/sound/isa/uartsio.c#5 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus.h#3 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_core.c#3 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_dev_i8251.c#2 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_dev_ns8250.c#4 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_dev_sab82532.c#3 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_dev_z8530.c#3 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_if.m#2 integrate
.. //depot/projects/ia64/sys/modules/uart/Makefile#5 integrate
.. //depot/projects/ia64/sys/net/bridge.c#20 integrate
.. //depot/projects/ia64/sys/netinet/ip_dummynet.c#22 integrate
.. //depot/projects/ia64/sys/netinet/ip_fw2.c#26 integrate
.. //depot/projects/ia64/sys/pci/agp_intel.c#14 integrate
.. //depot/projects/ia64/sys/pci/if_dc.c#49 integrate
.. //depot/projects/ia64/usr.sbin/Makefile#50 integrate
Differences ...
==== //depot/projects/ia64/Makefile.inc1#84 (text+ko) ====
@@ -1,5 +1,5 @@
#
-# $FreeBSD: src/Makefile.inc1,v 1.391 2003/09/15 21:18:30 ru Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.392 2003/09/16 12:53:18 ru Exp $
#
# Make command line options:
# -DNO_KERBEROS Do not build Heimdal (Kerberos 5)
@@ -51,6 +51,17 @@
SUBDIR+= lib
.endif
+# When upgrading to a dynamically linked root, install the runtime
+# linker early into its new location before make(1) has a chance
+# to run the dynamically linked /bin/sh.
+.if defined(WITH_DYNAMICROOT) && !defined(NOPIC) && \
+ (!defined(TARGET_ARCH) || ${TARGET_ARCH} == ${MACHINE_ARCH}) && \
+ !defined(DISTDIR) && \
+ (!defined(DESTDIR) || empty(DESTDIR) || ${DESTDIR} == "/") && \
+ !exists(/libexec/ld-elf.so.1)
+SUBDIR+= libexec/rtld-elf
+.endif
+
.if exists(${.CURDIR}/bin)
SUBDIR+= bin
.endif
==== //depot/projects/ia64/crypto/openssh/buffer.c#4 (text+ko) ====
@@ -12,7 +12,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: buffer.c,v 1.16 2002/06/26 08:54:18 markus Exp $");
+RCSID("$OpenBSD: buffer.c,v 1.17 2003/09/16 03:03:47 deraadt Exp $");
#include "xmalloc.h"
#include "buffer.h"
@@ -23,8 +23,11 @@
void
buffer_init(Buffer *buffer)
{
- buffer->alloc = 4096;
- buffer->buf = xmalloc(buffer->alloc);
+ const u_int len = 4096;
+
+ buffer->alloc = 0;
+ buffer->buf = xmalloc(len);
+ buffer->alloc = len;
buffer->offset = 0;
buffer->end = 0;
}
@@ -34,8 +37,10 @@
void
buffer_free(Buffer *buffer)
{
- memset(buffer->buf, 0, buffer->alloc);
- xfree(buffer->buf);
+ if (buffer->alloc > 0) {
+ memset(buffer->buf, 0, buffer->alloc);
+ xfree(buffer->buf);
+ }
}
/*
@@ -69,6 +74,7 @@
void *
buffer_append_space(Buffer *buffer, u_int len)
{
+ u_int newlen;
void *p;
if (len > 0x100000)
@@ -98,11 +104,13 @@
goto restart;
}
/* Increase the size of the buffer and retry. */
- buffer->alloc += len + 32768;
- if (buffer->alloc > 0xa00000)
+
+ newlen = buffer->alloc + len + 32768;
+ if (newlen > 0xa00000)
fatal("buffer_append_space: alloc %u not supported",
- buffer->alloc);
- buffer->buf = xrealloc(buffer->buf, buffer->alloc);
+ newlen);
+ buffer->buf = xrealloc(buffer->buf, newlen);
+ buffer->alloc = newlen;
goto restart;
/* NOTREACHED */
}
==== //depot/projects/ia64/crypto/openssh/channels.c#9 (text+ko) ====
@@ -229,12 +229,13 @@
if (found == -1) {
/* There are no free slots. Take last+1 slot and expand the array. */
found = channels_alloc;
- channels_alloc += 10;
if (channels_alloc > 10000)
fatal("channel_new: internal error: channels_alloc %d "
"too big.", channels_alloc);
+ channels = xrealloc(channels,
+ (channels_alloc + 10) * sizeof(Channel *));
+ channels_alloc += 10;
debug2("channel: expanding %d", channels_alloc);
- channels = xrealloc(channels, channels_alloc * sizeof(Channel *));
for (i = found; i < channels_alloc; i++)
channels[i] = NULL;
}
==== //depot/projects/ia64/crypto/openssh/version.h#11 (text+ko) ====
@@ -1,11 +1,11 @@
/* $OpenBSD: version.h,v 1.37 2003/04/01 10:56:46 markus Exp $ */
-/* $FreeBSD: src/crypto/openssh/version.h,v 1.20 2003/04/23 17:10:53 des Exp $ */
+/* $FreeBSD: src/crypto/openssh/version.h,v 1.21 2003/09/16 14:31:46 nectar Exp $ */
#ifndef SSH_VERSION
#define SSH_VERSION (ssh_version_get())
#define SSH_VERSION_BASE "OpenSSH_3.6.1p1"
-#define SSH_VERSION_ADDENDUM "FreeBSD-20030423"
+#define SSH_VERSION_ADDENDUM "FreeBSD-20030916"
const char *ssh_version_get(void);
void ssh_version_set_addendum(const char *add);
==== //depot/projects/ia64/etc/rc.d/dhclient#9 (text+ko) ====
@@ -1,7 +1,7 @@
#!/bin/sh
#
# $NetBSD: dhclient,v 1.8 2002/03/22 04:33:58 thorpej Exp $
-# $FreeBSD: src/etc/rc.d/dhclient,v 1.9 2003/07/28 08:15:52 mbr Exp $
+# $FreeBSD: src/etc/rc.d/dhclient,v 1.10 2003/09/16 02:56:13 mbr Exp $
#
# PROVIDE: dhclient
@@ -53,8 +53,9 @@
dhclient_prestart()
{
- dhclient_common || return 1
-
+ if [ $dhclient_common_error -eq 1 ]; then
+ return 1
+ fi
for ifn in ${_cooked_list}; do
ifscript_up ${ifn}
done
@@ -78,8 +79,9 @@
dhclient_prestop()
{
- dhclient_common || return 1
-
+ if [ $dhclient_common_error -eq 1 ]; then
+ return 1
+ fi
for ifn in ${_cooked_list}; do
ipx_down ${ifn}
ifalias_down ${ifn}
@@ -110,4 +112,11 @@
fi
load_rc_config $name
+dhclient_common_error=0
+dhclient_common || dhclient_common_error=1;
+if [ -n "$_cooked_list" ]; then
+ if [ -s $pidfile ]; then
+ stop_cmd=":"
+ fi
+fi
run_rc_command "$1"
==== //depot/projects/ia64/etc/services#10 (text+ko) ====
@@ -16,7 +16,7 @@
# Kerberos services are for Kerberos v4, and are unofficial. Sites running
# v5 should uncomment v5 entries and comment v4 entries.
#
-# $FreeBSD: src/etc/services,v 1.94 2003/08/06 18:15:10 dcs Exp $
+# $FreeBSD: src/etc/services,v 1.95 2003/09/16 23:17:43 obrien Exp $
# From: @(#)services 5.8 (Berkeley) 5/9/91
#
# WELL KNOWN PORT NUMBERS
@@ -1924,6 +1924,7 @@
ccmail 3264/udp #cc:mail/lotus
dec-notes 3333/tcp #DEC Notes
dec-notes 3333/udp #DEC Notes
+rdp 3389/tcp #Microsoft Remote Desktop Protocol
rsvp-encap 3455/udp #RSVP encapsulated in UDP
nut 3493/tcp #Network UPS Tools
nut 3493/udp #Network UPS Tools
==== //depot/projects/ia64/lib/libc/net/inet_net_pton.c#3 (text+ko) ====
@@ -19,7 +19,7 @@
static const char orig_rcsid[] = "From Id: inet_net_pton.c,v 1.8 1996/11/21 10:28:12 vixie Exp $";
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/net/inet_net_pton.c,v 1.8 2002/03/22 21:52:29 obrien Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/net/inet_net_pton.c,v 1.9 2003/09/15 23:38:06 fenner Exp $");
#include <sys/types.h>
#include <sys/socket.h>
@@ -186,7 +186,7 @@
else /* Class A */
bits = 8;
/* If imputed mask is narrower than specified octets, widen. */
- if (bits >= 8 && bits < ((dst - odst) * 8))
+ if (bits < ((dst - odst) * 8))
bits = (dst - odst) * 8;
}
/* Extend network to cover the actual mask. */
==== //depot/projects/ia64/lib/libpthread/arch/amd64/amd64/context.S#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <machine/asm.h>
-__FBSDID("$FreeBSD: src/lib/libpthread/arch/amd64/amd64/context.S,v 1.2 2003/07/26 02:36:50 davidxu Exp $");
+__FBSDID("$FreeBSD: src/lib/libpthread/arch/amd64/amd64/context.S,v 1.3 2003/09/16 00:00:53 deischen Exp $");
/*
* The following notes ("cheat sheet") was provided by Peter Wemm.
@@ -72,22 +72,13 @@
* translations from i386 but with the register names updated, etc.
* The main gotcha is that FPU save/restore is in SSE format, which
* means a sparse 512 byte FPU context.
- *
- * Note that the FPU is suppose to be 512 bytes but that the
- * definition for the FPU bits in struct mcontext does not
- * agree:
- *
- * long mc_fpstate[128] __aligned(16);
- *
- * This would actually use 1024 bytes, not 512, since long is
- * 8 bytes on amd64.
*/
/*
* Where do we define these?
*/
-#define MC_SIZE 1312 /* sizeof mcontext_t */
+#define MC_SIZE 800 /* sizeof mcontext_t */
#define MC_LEN_OFFSET (24*8) /* offset to mc_len from mcontext */
#define MC_FPFMT_OFFSET (25*8) /* offset to mc_fpformat from mcontext */
#define MC_FPFMT_NODEV 0x10000
==== //depot/projects/ia64/lib/libpthread/thread/thr_kern.c#35 (text+ko) ====
@@ -33,7 +33,7 @@
*
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.94 2003/09/14 22:52:16 davidxu Exp $");
+__FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.95 2003/09/16 02:03:39 davidxu Exp $");
#include <sys/types.h>
#include <sys/kse.h>
@@ -330,6 +330,7 @@
*/
sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL);
curthread->kse->k_kcb->kcb_kmbx.km_curthread = NULL;
+ curthread->attr.flags |= PTHREAD_SCOPE_SYSTEM;
_thr_active_threads = 1;
#endif
}
@@ -1642,7 +1643,7 @@
for (i = 1; i <= _SIG_MAXSIG; ++i) {
if (SIGISMEMBER(thread->sigpend, i) &&
!SIGISMEMBER(thread->sigmask, i)) {
- restart = _thread_sigact[1 - 1].sa_flags & SA_RESTART;
+ restart = _thread_sigact[i - 1].sa_flags & SA_RESTART;
kse_thr_interrupt(&thread->tcb->tcb_tmbx,
restart ? KSE_INTR_RESTART : KSE_INTR_INTERRUPT, 0);
break;
==== //depot/projects/ia64/release/doc/en_US.ISO8859-1/errata/article.sgml#26 (text+ko) ====
@@ -38,7 +38,7 @@
The &os; Project
</corpauthor>
- <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/errata/article.sgml,v 1.48 2003/09/08 14:53:01 simon Exp $</pubdate>
+ <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/errata/article.sgml,v 1.49 2003/09/16 23:25:48 bmah Exp $</pubdate>
<copyright>
<year>2000</year>
@@ -149,6 +149,14 @@
&release.prev; security fix branch. More information can be
found in security advisory
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:10.ibcs2.asc">FreeBSD-SA-03:10</ulink>.</para>
+
+ <para><application>OpenSSH</application> contains a bug in its
+ buffer management code that could potentially cause it to crash.
+ This bug has been fixed via a vendor-supplied patch on the
+ &release.branch; development branch and the &release.prev;
+ security fix branch. For more details, refer to security
+ advisory
+ <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:12.openssh.asc">FreeBSD-SA-03:12</ulink>.</para>
]]>
</sect1>
==== //depot/projects/ia64/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#124 (text+ko) ====
@@ -3,7 +3,7 @@
<corpauthor>The FreeBSD Project</corpauthor>
- <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.622 2003/09/14 18:20:24 bmah Exp $</pubdate>
+ <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.623 2003/09/16 23:25:48 bmah Exp $</pubdate>
<copyright>
<year>2000</year>
@@ -134,6 +134,13 @@
module is not enabled in &os; by default. For more information,
see security advisory
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:10.ibcs2.asc">FreeBSD-SA-03:10</ulink>. &merged;</para>
+
+ <para>A buffer management bug in
+ <application>OpenSSH</application>, which could potentially
+ cause a crash, has been fixed. More information can be found in
+ security advisory
+ <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:12.openssh.asc">FreeBSD-SA-03:12</ulink>. &merged;</para>
+
</sect2>
<sect2 id="kernel">
==== //depot/projects/ia64/share/man/man4/ath.4#8 (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 DAMAGES.
.\"
-.\" $FreeBSD: src/share/man/man4/ath.4,v 1.8 2003/09/01 23:09:09 imp Exp $
+.\" $FreeBSD: src/share/man/man4/ath.4,v 1.9 2003/09/16 22:43:36 shiba Exp $
.\"/
.Dd August 1, 2003
.Dt ATH 4
@@ -118,6 +118,7 @@
Linksys WMP55AG AR5212 PCI
Linksys WPC51AB AR5211 CardBus
Linksys WPC55AG AR5212 CardBus
+NEC PA-WL/54AG AR5212 CardBus
Netgear WAB501 AR5211 CardBus
Netgear WAG511 AR5212 CardBus
Proxim Skyline 4030 AR5210 CardBus
==== //depot/projects/ia64/share/man/man4/ath_hal.4#5 (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 DAMAGES.
.\"
-.\" $FreeBSD: src/share/man/man4/ath_hal.4,v 1.4 2003/09/01 23:09:09 imp Exp $
+.\" $FreeBSD: src/share/man/man4/ath_hal.4,v 1.5 2003/09/16 22:43:36 shiba Exp $
.\"/
.Dd June 23, 2003
.Dt ATH_HAL 4
@@ -64,6 +64,7 @@
Linksys WMP55AG AR5212 PCI
Linksys WPC51AB AR5211 CardBus
Linksys WPC55AG AR5212 CardBus
+NEC PA-WL/54AG AR5212 CardBus
Netgear WAB501 AR5211 CardBus
Netgear WAG511 AR5212 CardBus
Proxim Skyline 4030 AR5210 CardBus
==== //depot/projects/ia64/sys/boot/i386/libi386/comconsole.c#3 (text+ko) ====
@@ -24,33 +24,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/comconsole.c,v 1.9 2003/08/25 23:28:31 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/comconsole.c,v 1.10 2003/09/16 11:24:23 bde Exp $");
#include <stand.h>
#include <bootstrap.h>
#include <machine/cpufunc.h>
+#include <dev/ic/ns16550.h>
#include "libi386.h"
-/* selected defines from ns16550.h */
-#define com_data 0 /* data register (R/W) */
-#define com_dlbl 0 /* divisor latch low (W) */
-#define com_dlbh 1 /* divisor latch high (W) */
-#define com_ier 1 /* interrupt enable (W) */
-#define com_iir 2 /* interrupt identification (R) */
-#define com_fifo 2 /* FIFO control (W) */
-#define com_lctl 3 /* line control register (R/W) */
-#define com_cfcr 3 /* line control register (R/W) */
-#define com_mcr 4 /* modem control register (R/W) */
-#define com_lsr 5 /* line status register (R/W) */
-#define com_msr 6 /* modem status register (R/W) */
-
-/* selected defines from sioreg.h */
-#define CFCR_DLAB 0x80
-#define MCR_RTS 0x02
-#define MCR_DTR 0x01
-#define LSR_TXRDY 0x20
-#define LSR_RXRDY 0x01
-
#define COMC_FMT 0x3 /* 8N1 */
#define COMC_TXWAIT 0x40000 /* transmit timeout */
#define COMC_BPS(x) (115200 / (x)) /* speed to DLAB divisor */
==== //depot/projects/ia64/sys/boot/pc98/libpc98/comconsole.c#3 (text+ko) ====
@@ -24,33 +24,14 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/comconsole.c,v 1.4 2003/09/08 09:11:20 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/comconsole.c,v 1.5 2003/09/16 11:24:23 bde Exp $");
#include <stand.h>
#include <bootstrap.h>
#include <machine/cpufunc.h>
+#include <dev/ic/ns16550.h>
#include "libi386.h"
-/* selected defines from ns16550.h */
-#define com_data 0 /* data register (R/W) */
-#define com_dlbl 0 /* divisor latch low (W) */
-#define com_dlbh 1 /* divisor latch high (W) */
-#define com_ier 1 /* interrupt enable (W) */
-#define com_iir 2 /* interrupt identification (R) */
-#define com_fifo 2 /* FIFO control (W) */
-#define com_lctl 3 /* line control register (R/W) */
-#define com_cfcr 3 /* line control register (R/W) */
-#define com_mcr 4 /* modem control register (R/W) */
-#define com_lsr 5 /* line status register (R/W) */
-#define com_msr 6 /* modem status register (R/W) */
-
-/* selected defines from sioreg.h */
-#define CFCR_DLAB 0x80
-#define MCR_RTS 0x02
-#define MCR_DTR 0x01
-#define LSR_TXRDY 0x20
-#define LSR_RXRDY 0x01
-
#define COMC_FMT 0x3 /* 8N1 */
#define COMC_TXWAIT 0x40000 /* transmit timeout */
#define COMC_BPS(x) (115200 / (x)) /* speed to DLAB divisor */
==== //depot/projects/ia64/sys/dev/aac/aac.c#31 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.77 2003/09/01 20:44:18 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.78 2003/09/16 16:07:15 scottl Exp $");
/*
* Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
@@ -1877,7 +1877,11 @@
error = ENOENT;
goto out;
}
-
+
+ /* wrap the pi so the following test works */
+ if (pi >= aac_qinfo[queue].size)
+ pi = 0;
+
notify = 0;
if (ci == pi + 1)
notify++;
==== //depot/projects/ia64/sys/dev/ata/ata-lowlevel.c#8 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.11 2003/09/10 09:57:16 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.13 2003/09/16 15:21:37 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -270,14 +270,28 @@
{
struct ata_channel *ch = (struct ata_channel *)data;
struct ata_request *request = ch->running;
- u_int8_t status;
int length;
- /* if the channel is idle this interrupt is not for us (shared) */
- if (ch->state == ATA_IDLE)
+ /* ignore this interrupt if there is no running request */
+ if (!request) {
+ if (ATA_LOCK_CH(ch, ATA_CONTROL)) {
+ u_int8_t status = ATA_IDX_INB(ch, ATA_STATUS);
+ u_int8_t error = ATA_IDX_INB(ch, ATA_ERROR);
+
+ if (bootverbose)
+ ata_printf(ch, -1,
+ "spurious interrupt - status=0x%02x error=0x%02x\n",
+ status, error);
+ ATA_UNLOCK_CH(ch);
+ }
+ else {
+ if (bootverbose)
+ ata_printf(ch, -1, "spurious interrupt - channel busy\n");
+ }
return;
+ }
- /* if device is busy it didn't interrupt, ignore interrupt (shared) */
+ /* ignore interrupt if device is busy */
if (ATA_IDX_INB(ch, ATA_ALTSTAT) & ATA_S_BUSY) {
DELAY(100);
if (!(ATA_IDX_INB(ch, ATA_ALTSTAT) & ATA_S_DRQ))
@@ -285,23 +299,8 @@
}
/* clear interrupt and get status */
- status = ATA_IDX_INB(ch, ATA_STATUS);
+ request->status = ATA_IDX_INB(ch, ATA_STATUS);
- /* if we dont have a running request shout and ignore this interrupt */
- if (request == NULL) {
- if (1 || bootverbose) {
- printf("ata%d: spurious interrupt - ", device_get_unit(ch->dev));
- if (request)
- printf("request OK - ");
- printf("status=0x%02x error=0x%02x reason=0x%02x\n",
- status, ATA_IDX_INB(ch, ATA_ERROR),
- ATA_IDX_INB(ch, ATA_IREASON));
- }
- return;
- }
-
- request->status = status;
-
switch (request->flags & (ATA_R_ATAPI | ATA_R_DMA)) {
/* ATA PIO data transfer and control commands */
@@ -545,15 +544,19 @@
stat0, err, lsb, msb);
if (!(stat0 & ATA_S_BUSY)) {
if (err == ATA_E_ILI) {
- if (stat0 & ATA_S_READY) {
+ if (lsb == ATAPI_MAGIC_LSB && msb == ATAPI_MAGIC_MSB) {
+ ch->devices |= ATA_ATAPI_MASTER;
+ }
+ else if (stat0 & ATA_S_READY) {
ch->devices |= ATA_ATA_MASTER;
}
- else if (lsb == ATAPI_MAGIC_LSB && msb == ATAPI_MAGIC_MSB) {
- ch->devices |= ATA_ATAPI_MASTER;
- }
+ }
+ else if (err == lsb && err == msb) {
+ ATA_IDX_OUTB(ch, ATA_ERROR, 0xff);
+ DELAY(10);
+ if (stat0 == ATA_IDX_INB(ch, ATA_STATUS))
+ stat0 |= ATA_S_BUSY;
}
- else if (err == lsb && err == msb)
- stat0 |= ATA_S_BUSY;
}
}
if (stat1 & ATA_S_BUSY) {
@@ -569,15 +572,19 @@
stat1, err, lsb, msb);
if (!(stat1 & ATA_S_BUSY)) {
if (err == ATA_E_ILI) {
- if (stat1 & ATA_S_READY) {
+ if (lsb == ATAPI_MAGIC_LSB && msb == ATAPI_MAGIC_MSB) {
+ ch->devices |= ATA_ATAPI_SLAVE;
+ }
+ else if (stat1 & ATA_S_READY) {
ch->devices |= ATA_ATA_SLAVE;
}
- else if (lsb == ATAPI_MAGIC_LSB && msb == ATAPI_MAGIC_MSB) {
- ch->devices |= ATA_ATAPI_SLAVE;
- }
+ }
+ else if (err == lsb && err == msb) {
+ ATA_IDX_OUTB(ch, ATA_ERROR, 0xff);
+ DELAY(10);
+ if (stat1 == ATA_IDX_INB(ch, ATA_STATUS))
+ stat1 |= ATA_S_BUSY;
}
- else if (err == lsb && err == msb)
- stat1 |= ATA_S_BUSY;
}
}
if (mask == 0x01) /* wait for master only */
==== //depot/projects/ia64/sys/dev/ata/atapi-cd.c#30 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cd.c,v 1.144 2003/09/11 19:27:24 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cd.c,v 1.145 2003/09/16 14:41:44 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -1034,7 +1034,7 @@
break;
case DIOCGMEDIASIZE:
- *(off_t *)addr = cdp->disk_size * cdp->block_size;
+ *(off_t *)addr = (off_t)cdp->disk_size * (off_t)cdp->block_size;
break;
case DIOCGSECTORSIZE:
==== //depot/projects/ia64/sys/dev/ic/ns16550.h#3 (text+ko) ====
@@ -31,21 +31,165 @@
* SUCH DAMAGE.
*
* from: @(#)ns16550.h 7.1 (Berkeley) 5/9/91
- * $FreeBSD: src/sys/dev/ic/ns16550.h,v 1.9 2002/09/22 08:51:28 phk Exp $
+ * $FreeBSD: src/sys/dev/ic/ns16550.h,v 1.14 2003/09/16 14:21:17 bde Exp $
*/
/*
- * NS16550 UART registers
+ * NS8250... UART registers.
*/
+
+/* 8250 registers #[0-6]. */
+
#define com_data 0 /* data register (R/W) */
-#define com_dlbl 0 /* divisor latch low (W) */
-#define com_dlbh 1 /* divisor latch high (W) */
-#define com_ier 1 /* interrupt enable (W) */
-#define com_iir 2 /* interrupt identification (R) */
-#define com_fifo 2 /* FIFO control (W) */
-#define com_lctl 3 /* line control register (R/W) */
-#define com_cfcr 3 /* line control register (R/W) */
+#define com_thr com_data /* transmitter holding register (W) */
+#define com_rhr com_data /* receiver holding register (R) */
+
+#define com_ier 1 /* interrupt enable register (W) */
+#define IER_ERXRDY 0x1
+#define IER_ETXRDY 0x2
+#define IER_ERLS 0x4
+#define IER_EMSC 0x8
+
+#define com_iir 2 /* interrupt identification register (R) */
+#define com_isr com_iir /* interrupt status register (R) */
+#define IIR_IMASK 0xf
+#define IIR_RXTOUT 0xc
+#define IIR_RLS 0x6
+#define IIR_RXRDY 0x4
+#define IIR_TXRDY 0x2
+#define IIR_NOPEND 0x1
+#define IIR_MLSC 0x0
+#define IIR_FIFO_MASK 0xc0 /* set if FIFOs are enabled */
+
+#define com_lcr 3 /* line control register (R/W) */
+#define com_lctl com_lcr
+#define com_cfcr com_lcr /* character format control register (R/W) */
+#define LCR_DLAB 0x80
+#define CFCR_DLAB LCR_DLAB
+#define LCR_EFR_ENABLE 0xbf /* magic to enable EFR on 16650 up */
+#define CFCR_EFR_ENABLE LCR_EFR_ENABLE
+#define CFCR_SBREAK 0x40
+#define CFCR_PZERO 0x30
+#define CFCR_PONE 0x20
+#define CFCR_PEVEN 0x10
+#define CFCR_PODD 0x00
+#define CFCR_PENAB 0x08
+#define CFCR_STOPB 0x04
+#define CFCR_8BITS 0x03
+#define CFCR_7BITS 0x02
+#define CFCR_6BITS 0x01
+#define CFCR_5BITS 0x00
+
#define com_mcr 4 /* modem control register (R/W) */
+#define MCR_PRESCALE 0x80 /* only available on 16650 up */
+#define MCR_LOOPBACK 0x10
+#define MCR_IENABLE 0x08
+#define MCR_DRS 0x04
+#define MCR_RTS 0x02
+#define MCR_DTR 0x01
+
#define com_lsr 5 /* line status register (R/W) */
+#define LSR_RCV_FIFO 0x80
+#define LSR_TSRE 0x40
+#define LSR_TXRDY 0x20
+#define LSR_BI 0x10
+#define LSR_FE 0x08
+#define LSR_PE 0x04
+#define LSR_OE 0x02
+#define LSR_RXRDY 0x01
+#define LSR_RCV_MASK 0x1f
+
#define com_msr 6 /* modem status register (R/W) */
-#define com_scr 7 /* scratch register for 16450 up (R/W) */
+#define MSR_DCD 0x80
+#define MSR_RI 0x40
+#define MSR_DSR 0x20
+#define MSR_CTS 0x10
+#define MSR_DDCD 0x08
+#define MSR_TERI 0x04
+#define MSR_DDSR 0x02
+#define MSR_DCTS 0x01
+
+/* 8250 multiplexed registers #[0-1]. Access enabled by LCR[7]. */
+#define com_dll 0 /* divisor latch low (R/W) */
+#define com_dlbl com_dll
+#define com_dlm 1 /* divisor latch high (R/W) */
+#define com_dlbh com_dlm
+
+/* 16450 register #7. Not multiplexed. */
+#define com_scr 7 /* scratch register (R/W) */
+
+/* 16550 register #2. Not multiplexed. */
+#define com_fcr 2 /* FIFO control register (W) */
+#define com_fifo com_fcr
+#define FIFO_ENABLE 0x01
+#define FIFO_RCV_RST 0x02
+#define FIFO_XMT_RST 0x04
+#define FIFO_DMA_MODE 0x08
+#define FIFO_RX_LOW 0x00
+#define FIFO_RX_MEDL 0x40
+#define FIFO_RX_MEDH 0x80
+#define FIFO_RX_HIGH 0xc0
+
+/* 16650 registers #2,[4-7]. Access enabled by LCR_EFR_ENABLE. */
+
+#define com_efr 2 /* enhanced features register (R/W) */
+#define EFR_AUTOCTS 0x80
+#define EFR_AUTORTS 0x40
+#define EFR_EFE 0x10 /* enhanced functions enable */
+
+#define com_xon1 4 /* XON 1 character (R/W) */
+#define com_xon2 5 /* XON 2 character (R/W) */
+#define com_xoff1 6 /* XOFF 1 character (R/W) */
+#define com_xoff2 7 /* XOFF 2 character (R/W) */
+
+/* 16950 register #1. Access enabled by ACR[7]. Also requires !LCR[7]. */
+#define com_asr 1 /* additional status register (R[0-7]/W[0-1]) */
+
+/* 16950 register #3. R/W access enabled by ACR[7]. */
+#define com_rfl 3 /* receiver fifo level (R) */
+
+/*
+ * 16950 register #4. Access enabled by ACR[7]. Also requires
+ * !LCR_EFR_ENABLE.
+ */
+#define com_tfl 4 /* transmitter fifo level (R) */
+
+/*
+ * 16950 register #5. Accessible if !LCR_EFR_ENABLE. Read access also
+ * requires ACR[6].
+ */
+#define com_icr 5 /* index control register (R/W) */
+
+/*
+ * 16950 register #7. It is the same as com_scr except it has a different
+ * abbreviation in the manufacturer's data sheet and it also serves as an
+ * index into the Indexed Control register set.
+ */
+#define com_spr com_scr /* scratch pad (and index) register (R/W) */
+
+/*
+ * 16950 indexed control registers #[0-0x13]. Access is via index in SPR,
+ * data in ICR (if ICR is accessible).
+ */
+
+#define com_acr 0 /* additional control register (R/W) */
+#define ACR_ASE 0x80 /* ASR/RFL/TFL enable */
+#define ACR_ICRE 0x40 /* ICR enable */
+#define ACR_TLE 0x20 /* TTL/RTL enable */
+
+#define com_cpr 1 /* clock prescaler register (R/W) */
+#define com_tcr 2 /* times clock register (R/W) */
+#define com_ttl 4 /* transmitter trigger level (R/W) */
+#define com_rtl 5 /* receiver trigger level (R/W) */
+/* ... */
+
+#ifdef PC98
+/* Hardware extension mode register for RSB-2000/3000. */
+#define com_emr com_msr
+#define EMR_EXBUFF 0x04
+#define EMR_CTSFLW 0x08
+#define EMR_DSRFLW 0x10
+#define EMR_RTSFLW 0x20
+#define EMR_DTRFLW 0x40
+#define EMR_EFMODE 0x80
+#endif
==== //depot/projects/ia64/sys/dev/sio/sioreg.h#9 (text+ko) ====
@@ -31,97 +31,12 @@
* SUCH DAMAGE.
*
* from: @(#)comreg.h 7.2 (Berkeley) 5/9/91
- * $FreeBSD: src/sys/dev/sio/sioreg.h,v 1.22 2003/03/18 21:26:28 sobomax Exp $
+ * $FreeBSD: src/sys/dev/sio/sioreg.h,v 1.23 2003/09/16 08:08:08 bde Exp $
*/
/* Receiver clock frequency for "standard" pc serial ports. */
#define DEFAULT_RCLK 1843200
-/* interrupt enable register */
-#define IER_ERXRDY 0x1
-#define IER_ETXRDY 0x2
-#define IER_ERLS 0x4
-#define IER_EMSC 0x8
-
-/* interrupt identification register */
-#define IIR_IMASK 0xf
-#define IIR_RXTOUT 0xc
-#define IIR_RLS 0x6
-#define IIR_RXRDY 0x4
-#define IIR_TXRDY 0x2
-#define IIR_NOPEND 0x1
-#define IIR_MLSC 0x0
-#define IIR_FIFO_MASK 0xc0 /* set if FIFOs are enabled */
-
-/* fifo control register */
-#define FIFO_ENABLE 0x01
-#define FIFO_RCV_RST 0x02
-#define FIFO_XMT_RST 0x04
-#define FIFO_DMA_MODE 0x08
-#define FIFO_RX_LOW 0x00
-#define FIFO_RX_MEDL 0x40
-#define FIFO_RX_MEDH 0x80
-#define FIFO_RX_HIGH 0xc0
-
-/* character format control register (aka line control register) */
-#define CFCR_DLAB 0x80
-#define CFCR_SBREAK 0x40
-#define CFCR_PZERO 0x30
-#define CFCR_PONE 0x20
-#define CFCR_PEVEN 0x10
-#define CFCR_PODD 0x00
-#define CFCR_PENAB 0x08
-#define CFCR_STOPB 0x04
-#define CFCR_8BITS 0x03
-#define CFCR_7BITS 0x02
-#define CFCR_6BITS 0x01
-#define CFCR_5BITS 0x00
-#define CFCR_EFR_ENABLE 0xbf /* magic to enable EFR on 16650 up */
-
-/* modem control register */
-#define MCR_PRESCALE 0x80 /* only available on 16650 up */
-#define MCR_LOOPBACK 0x10
-#define MCR_IENABLE 0x08
-#define MCR_DRS 0x04
-#define MCR_RTS 0x02
-#define MCR_DTR 0x01
-
-/* line status register */
-#define LSR_RCV_FIFO 0x80
-#define LSR_TSRE 0x40
-#define LSR_TXRDY 0x20
-#define LSR_BI 0x10
-#define LSR_FE 0x08
-#define LSR_PE 0x04
-#define LSR_OE 0x02
-#define LSR_RXRDY 0x01
-#define LSR_RCV_MASK 0x1f
-
-/* modem status register */
-#define MSR_DCD 0x80
-#define MSR_RI 0x40
-#define MSR_DSR 0x20
-#define MSR_CTS 0x10
-#define MSR_DDCD 0x08
-#define MSR_TERI 0x04
-#define MSR_DDSR 0x02
-#define MSR_DCTS 0x01
-
-/* enhanced feature register (only available on 16650 up) */
-#define com_efr com_fifo
-#define EFR_EFE 0x10 /* enhanced functions enable */
-
-#ifdef PC98
-/* Hardware extension mode register for RSB-2000/3000. */
-#define com_emr com_msr
-#define EMR_EXBUFF 0x04
-#define EMR_CTSFLW 0x08
-#define EMR_DSRFLW 0x10
-#define EMR_RTSFLW 0x20
-#define EMR_DTRFLW 0x40
-#define EMR_EFMODE 0x80
-#endif
-
/* speed to initialize to during chip tests */
#define SIO_TEST_SPEED 9600
==== //depot/projects/ia64/sys/dev/sound/isa/mpu.c#4 (text+ko) ====
@@ -33,7 +33,7 @@
* This handles io against /dev/midi, the midi {in, out}put event queues
* and the event/message transmittion to/from an MPU401 interface.
*
- * $FreeBSD: src/sys/dev/sound/isa/mpu.c,v 1.16 2002/04/04 21:03:16 jhb Exp $
+ * $FreeBSD: src/sys/dev/sound/isa/mpu.c,v 1.17 2003/09/16 11:04:22 bde Exp $
*
*/
@@ -42,7 +42,6 @@
#include <machine/cpufunc.h>
#include <isa/isavar.h>
-#include <dev/sio/sioreg.h>
#include <dev/ic/ns16550.h>
static devclass_t midi_devclass;
==== //depot/projects/ia64/sys/dev/sound/isa/uartsio.c#5 (text+ko) ====
@@ -42,11 +42,10 @@
* This handles io against /dev/midi, the midi {in, out}put event queues
* and the event/message transmittion to/from a serial port interface.
*
- * $FreeBSD: src/sys/dev/sound/isa/uartsio.c,v 1.13 2002/12/18 22:53:23 semenu Exp $
+ * $FreeBSD: src/sys/dev/sound/isa/uartsio.c,v 1.15 2003/09/17 01:09:10 bde Exp $
*
*/
-#include <dev/sio/sioreg.h>
#include <dev/ic/ns16550.h>
#include <dev/sound/midi/midi.h>
==== //depot/projects/ia64/sys/dev/uart/uart_bus.h#3 (text+ko) ====
@@ -23,7 +23,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/uart/uart_bus.h,v 1.2 2003/09/11 23:06:42 marcel Exp $
+ * $FreeBSD: src/sys/dev/uart/uart_bus.h,v 1.3 2003/09/17 01:41:21 marcel Exp $
*/
#ifndef _DEV_UART_BUS_H_
@@ -113,6 +113,8 @@
struct uart_bas sc_bas;
device_t sc_dev;
+ struct mtx sc_hwmtx; /* Spinlock protecting hardware. */
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list