PERFORCE change 52510 for review
Marcel Moolenaar
marcel at FreeBSD.org
Sat May 8 11:20:05 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=52510
Change 52510 by marcel at marcel_nfs on 2004/05/08 11:19:04
IFC @52509
Affected files ...
.. //depot/projects/gdb/include/fts.h#2 integrate
.. //depot/projects/gdb/lib/libc/gen/fts.c#3 integrate
.. //depot/projects/gdb/sys/conf/files.sparc64#5 integrate
.. //depot/projects/gdb/sys/conf/options.sparc64#3 integrate
.. //depot/projects/gdb/sys/dev/an/if_an_pccard.c#2 integrate
.. //depot/projects/gdb/sys/dev/awi/if_awi_pccard.c#4 integrate
.. //depot/projects/gdb/sys/dev/cs/if_cs_pccard.c#2 integrate
.. //depot/projects/gdb/sys/dev/ed/if_ed_pccard.c#2 integrate
.. //depot/projects/gdb/sys/dev/sn/if_sn_pccard.c#2 integrate
.. //depot/projects/gdb/sys/dev/snc/if_snc_pccard.c#2 integrate
.. //depot/projects/gdb/sys/dev/sound/pcm/ac97.c#3 integrate
.. //depot/projects/gdb/sys/dev/wi/if_wi_pccard.c#3 integrate
.. //depot/projects/gdb/sys/kern/kern_resource.c#5 integrate
.. //depot/projects/gdb/sys/kern/uipc_syscalls.c#10 integrate
.. //depot/projects/gdb/sys/kern/vfs_bio.c#6 integrate
.. //depot/projects/gdb/sys/sparc64/conf/GENERIC#5 integrate
.. //depot/projects/gdb/sys/sparc64/conf/NOTES#3 integrate
.. //depot/projects/gdb/sys/sparc64/ebus/ebus.c#5 integrate
.. //depot/projects/gdb/sys/sparc64/include/ofw_bus.h#2 integrate
.. //depot/projects/gdb/sys/sparc64/isa/isa.c#3 integrate
.. //depot/projects/gdb/sys/sparc64/isa/ofw_isa.c#3 integrate
.. //depot/projects/gdb/sys/sparc64/isa/ofw_isa.h#3 integrate
.. //depot/projects/gdb/sys/sparc64/pci/apb.c#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/ofw_pci.c#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/ofw_pci.h#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/ofw_pci_if.m#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/ofw_pcib.c#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/ofw_pcib_subr.c#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/ofw_pcib_subr.h#2 integrate
.. //depot/projects/gdb/sys/sparc64/pci/psycho.c#4 integrate
.. //depot/projects/gdb/sys/sparc64/pci/psychovar.h#3 integrate
.. //depot/projects/gdb/sys/sparc64/sparc64/ofw_bus.c#2 integrate
.. //depot/projects/gdb/sys/sparc64/sparc64/ofw_machdep.c#3 integrate
Differences ...
==== //depot/projects/gdb/include/fts.h#2 (text+ko) ====
@@ -31,12 +31,14 @@
* SUCH DAMAGE.
*
* @(#)fts.h 8.3 (Berkeley) 8/14/94
- * $FreeBSD: src/include/fts.h,v 1.7 2002/09/21 01:28:36 wollman Exp $
+ * $FreeBSD: src/include/fts.h,v 1.8 2004/05/08 15:09:01 peadar Exp $
*/
#ifndef _FTS_H_
#define _FTS_H_
+struct _fts_private; /* implementation data */
+
typedef struct {
struct _ftsent *fts_cur; /* current node */
struct _ftsent *fts_child; /* linked list of children */
@@ -63,6 +65,7 @@
#define FTS_STOP 0x200 /* (private) unrecoverable error */
int fts_options; /* fts_open options, global flags */
void *fts_clientptr; /* thunk for sort function */
+ struct _fts_private *fts_priv; /* Implementation data */
} FTS;
typedef struct _ftsent {
==== //depot/projects/gdb/lib/libc/gen/fts.c#3 (text+ko) ====
@@ -37,12 +37,13 @@
static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/fts.c,v 1.23 2004/05/05 06:33:00 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/fts.c,v 1.24 2004/05/08 15:09:02 peadar Exp $");
#include "namespace.h"
#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
+#include <sys/mount.h>
#include <dirent.h>
#include <errno.h>
@@ -63,6 +64,7 @@
static FTSENT *fts_sort(FTS *, FTSENT *, int);
static u_short fts_stat(FTS *, FTSENT *, int);
static int fts_safe_changedir(FTS *, FTSENT *, int, char *);
+static int fts_ufslinks(FTS *sp, const FTSENT *ent);
#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2])))
@@ -77,12 +79,43 @@
#define BNAMES 2 /* fts_children, names only */
#define BREAD 3 /* fts_read */
+/*
+ * Internal representation of FTS, including extra implementation details.
+ * The FTS returned from fts_open is ftsp_fts from this structure, and it's
+ * fts_priv in turn points back to this internal version. i.e. for a given
+ * fts_private *priv: &priv->fts_fts == (FTS *)f == priv->fts_fts.fts_priv
+ */
+struct _fts_private {
+ FTS ftsp_fts;
+ struct statfs ftsp_statfs;
+ dev_t ftsp_dev;
+ int ftsp_linksreliable;
+};
+
+/*
+ * The "FTS_NOSTAT" option can avoid a lot of calls to stat(2) if it knows
+ * that a directory could not possibly have subdirectories. This is decided
+ * by looking at the link count: A subdirectory would increment its parent's
+ * link count by virtue of its own ".." entry.
+ * This assumption only holds for UFS-like filesystems that implement links
+ * and directories this way, so we must punt for others.
+ */
+
+static const char *ufslike_filesystems[] = {
+ "ufs",
+ "nfs",
+ "nfs4",
+ "ext2fs",
+ 0
+};
+
FTS *
fts_open(argv, options, compar)
char * const *argv;
int options;
int (*compar)(const FTSENT * const *, const FTSENT * const *);
{
+ struct _fts_private *priv;
FTS *sp;
FTSENT *p, *root;
int nitems;
@@ -96,11 +129,13 @@
}
/* Allocate/initialize the stream */
- if ((sp = malloc(sizeof(FTS))) == NULL)
+ if ((priv = malloc(sizeof(struct _fts_private))) == NULL)
return (NULL);
- memset(sp, 0, sizeof(FTS));
+ memset(priv, 0, sizeof(struct _fts_private));
+ sp = &priv->ftsp_fts;
sp->fts_compar = compar;
sp->fts_options = options;
+ sp->fts_priv = priv;
/* Shush, GCC. */
tmp = NULL;
@@ -637,7 +672,10 @@
/* Be quiet about nostat, GCC. */
nostat = 0;
} else if (ISSET(FTS_NOSTAT) && ISSET(FTS_PHYSICAL)) {
- nlinks = cur->fts_nlink - (ISSET(FTS_SEEDOT) ? 0 : 2);
+ if (fts_ufslinks(sp, cur))
+ nlinks = cur->fts_nlink - (ISSET(FTS_SEEDOT) ? 0 : 2);
+ else
+ nlinks = -1;
nostat = 1;
} else {
nlinks = -1;
@@ -1154,3 +1192,37 @@
errno = oerrno;
return (ret);
}
+
+/*
+ * Check if the filesystem for "ent" has UFS-style links.
+ */
+static int
+fts_ufslinks(FTS *sp, const FTSENT *ent)
+{
+ struct _fts_private *priv;
+ const char **cpp;
+
+ priv = sp->fts_priv;
+ /*
+ * If this node's device is different from the previous, grab
+ * the filesystem information, and decide on the reliability
+ * of the link information from this filesystem for stat(2)
+ * avoidance.
+ */
+ if (priv->ftsp_dev != ent->fts_dev) {
+ if (statfs(ent->fts_path, &priv->ftsp_statfs) != -1) {
+ priv->ftsp_dev = ent->fts_dev;
+ priv->ftsp_linksreliable = 0;
+ for (cpp = ufslike_filesystems; *cpp; cpp++) {
+ if (strcmp(priv->ftsp_statfs.f_fstypename,
+ *cpp) == 0) {
+ priv->ftsp_linksreliable = 1;
+ break;
+ }
+ }
+ } else {
+ priv->ftsp_linksreliable = 0;
+ }
+ }
+ return priv->ftsp_linksreliable;
+}
==== //depot/projects/gdb/sys/conf/files.sparc64#5 (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.sparc64,v 1.52 2004/04/30 15:00:40 marius Exp $
+# $FreeBSD: src/sys/conf/files.sparc64,v 1.53 2004/05/08 13:53:46 marius Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -54,9 +54,9 @@
sparc64/isa/ofw_isa.c optional isa
sparc64/pci/apb.c optional pci
sparc64/pci/ofw_pci.c optional pci
-sparc64/pci/ofw_pcib.c optional pci ofw_newpci
-sparc64/pci/ofw_pcib_subr.c optional pci ofw_newpci
-sparc64/pci/ofw_pcibus.c optional pci ofw_newpci
+sparc64/pci/ofw_pcib.c optional pci
+sparc64/pci/ofw_pcib_subr.c optional pci
+sparc64/pci/ofw_pcibus.c optional pci
sparc64/pci/ofw_pci_if.m optional pci
sparc64/pci/psycho.c optional pci
sparc64/sbus/sbus.c optional sbus
==== //depot/projects/gdb/sys/conf/options.sparc64#3 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options.sparc64,v 1.9 2004/04/30 15:21:25 tmm Exp $
+# $FreeBSD: src/sys/conf/options.sparc64,v 1.10 2004/05/08 13:53:46 marius Exp $
SUN4U opt_global.h
@@ -9,7 +9,6 @@
PSYCHO_DEBUG opt_psycho.h
DEBUGGER_ON_POWERFAIL opt_psycho.h
OFW_PCI_DEBUG opt_ofw_pci.h
-OFW_NEWPCI opt_ofw_pci.h
# Debug IOMMU inserts/removes using diagnostic accesses. Very loud.
IOMMU_DIAG opt_iommu.h
PMAP_STATS opt_pmap.h
==== //depot/projects/gdb/sys/dev/an/if_an_pccard.c#2 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/an/if_an_pccard.c,v 1.23 2003/12/30 01:07:12 ambrisko Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/an/if_an_pccard.c,v 1.24 2004/05/08 06:04:05 imp Exp $");
#include "opt_inet.h"
@@ -105,7 +105,6 @@
DRIVER_MODULE(an, pccard, an_pccard_driver, an_pccard_devclass, 0, 0);
MODULE_DEPEND(an, wlan, 1, 1, 1);
-MODULE_DEPEND(an, pccard, 1, 1, 1);
static const struct pccard_product an_pccard_products[] = {
PCMCIA_CARD(AIRONET, PC4800, 0),
==== //depot/projects/gdb/sys/dev/awi/if_awi_pccard.c#4 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/awi/if_awi_pccard.c,v 1.16 2004/03/17 17:50:28 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/awi/if_awi_pccard.c,v 1.17 2004/05/08 06:04:05 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -301,4 +301,3 @@
DRIVER_MODULE(awi, pccard, awi_pccard_driver, awi_devclass, 0, 0);
MODULE_DEPEND(awi, wlan, 1, 1, 1);
-MODULE_DEPEND(awi, pccard, 1, 1, 1);
==== //depot/projects/gdb/sys/dev/cs/if_cs_pccard.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cs/if_cs_pccard.c,v 1.8 2003/10/31 18:31:58 brooks Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cs/if_cs_pccard.c,v 1.9 2004/05/08 06:06:13 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -125,5 +125,4 @@
extern devclass_t cs_devclass;
DRIVER_MODULE(cs, pccard, cs_pccard_driver, cs_devclass, 0, 0);
-MODULE_DEPEND(cs, pccard, 1, 1, 1);
MODULE_DEPEND(cs, ether, 1, 1, 1);
==== //depot/projects/gdb/sys/dev/ed/if_ed_pccard.c#2 (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/ed/if_ed_pccard.c,v 1.55 2003/12/31 04:25:00 kato Exp $
+ * $FreeBSD: src/sys/dev/ed/if_ed_pccard.c,v 1.56 2004/05/08 06:04:06 imp Exp $
*/
#include "opt_ed.h"
@@ -65,7 +65,6 @@
MODULE_DEPEND(ed, miibus, 1, 1, 1);
#endif
MODULE_DEPEND(ed, ether, 1, 1, 1);
-MODULE_DEPEND(ed, pccard, 1, 1, 1);
/*
* PC-Card (PCMCIA) specific code.
==== //depot/projects/gdb/sys/dev/sn/if_sn_pccard.c#2 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/sn/if_sn_pccard.c,v 1.20 2003/10/25 19:56:19 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/sn/if_sn_pccard.c,v 1.21 2004/05/08 06:04:06 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -169,5 +169,4 @@
extern devclass_t sn_devclass;
DRIVER_MODULE(sn, pccard, sn_pccard_driver, sn_devclass, 0, 0);
-MODULE_DEPEND(sn, pccard, 1, 1, 1);
MODULE_DEPEND(sn, ether, 1, 1, 1);
==== //depot/projects/gdb/sys/dev/snc/if_snc_pccard.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/snc/if_snc_pccard.c,v 1.4 2003/08/24 18:03:45 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/snc/if_snc_pccard.c,v 1.5 2004/05/08 06:04:06 imp Exp $");
/*
* National Semiconductor DP8393X SONIC Driver
@@ -80,7 +80,6 @@
DRIVER_MODULE(snc, pccard, snc_pccard_driver, snc_devclass, 0, 0);
MODULE_DEPEND(snc, ether, 1, 1, 1);
-MODULE_DEPEND(snc, pccard, 1, 1, 1);
/*
* snc_pccard_detach - unload the driver and clear the table.
==== //depot/projects/gdb/sys/dev/sound/pcm/ac97.c#3 (text+ko) ====
@@ -30,7 +30,7 @@
#include "mixer_if.h"
-SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/ac97.c,v 1.50 2004/01/23 16:38:54 matk Exp $");
+SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/ac97.c,v 1.51 2004/05/08 03:41:40 sanpei Exp $");
MALLOC_DEFINE(M_AC97, "ac97", "ac97 codec");
@@ -150,6 +150,7 @@
{ 0x43525900, 0x07, 0, "CS4297", 0 },
{ 0x43525910, 0x07, 0, "CS4297A", 0 },
{ 0x43525920, 0x07, 0, "CS4294/98", 0 },
+ { 0x4352592d, 0x07, 0, "CS4294", 0 },
{ 0x43525930, 0x07, 0, "CS4299", 0 },
{ 0x43525940, 0x07, 0, "CS4201", 0 },
{ 0x43525958, 0x07, 0, "CS4205", 0 },
==== //depot/projects/gdb/sys/dev/wi/if_wi_pccard.c#3 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi_pccard.c,v 1.43 2004/03/25 21:58:55 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/wi/if_wi_pccard.c,v 1.44 2004/05/08 06:04:06 imp Exp $");
#include "opt_wi.h"
@@ -120,7 +120,6 @@
DRIVER_MODULE(wi, pccard, wi_pccard_driver, wi_devclass, 0, 0);
MODULE_DEPEND(wi, wlan, 1, 1, 1);
-MODULE_DEPEND(wi, pccard, 1, 1, 1);
#if __FreeBSD_version >= 500000
static const struct pccard_product wi_pccard_products[] = {
==== //depot/projects/gdb/sys/kern/kern_resource.c#5 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_resource.c,v 1.136 2004/04/10 11:08:16 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_resource.c,v 1.137 2004/05/08 08:56:05 julian Exp $");
#include "opt_compat.h"
@@ -313,11 +313,12 @@
int
rtprio(td, uap)
- struct thread *td;
+ struct thread *td; /* curthread */
register struct rtprio_args *uap;
{
struct proc *curp;
- register struct proc *p;
+ struct proc *p;
+ struct ksegrp *kg;
struct rtprio rtp;
int cierror, error;
@@ -342,7 +343,33 @@
if ((error = p_cansee(td, p)))
break;
mtx_lock_spin(&sched_lock);
- pri_to_rtp(FIRST_KSEGRP_IN_PROC(p), &rtp);
+ /*
+ * Return OUR priority if no pid specified,
+ * or if one is, report the highest priority
+ * in the process. There isn't much more you can do as
+ * there is only room to return a single priority.
+ * XXXKSE Maybe need a new interface to report
+ * priorities of multiple system scope threads.
+ * Note: specifying our own pid is not the same
+ * as leaving it zero.
+ */
+ if (uap->pid == 0) {
+ pri_to_rtp(td->td_ksegrp, &rtp);
+ } else {
+ struct rtprio rtp2;
+
+ rtp.type = RTP_PRIO_IDLE;
+ rtp.prio = RTP_PRIO_MAX;
+ FOREACH_KSEGRP_IN_PROC(p, kg) {
+ pri_to_rtp(kg, &rtp2);
+ if ((rtp2.type < rtp.type) ||
+ ((rtp2.type == rtp.type) &&
+ (rtp2.prio < rtp.prio))) {
+ rtp.type = rtp2.type;
+ rtp.prio = rtp2.prio;
+ }
+ }
+ }
mtx_unlock_spin(&sched_lock);
PROC_UNLOCK(p);
return (copyout(&rtp, uap->rtp, sizeof(struct rtprio)));
@@ -373,7 +400,21 @@
}
}
mtx_lock_spin(&sched_lock);
- error = rtp_to_pri(&rtp, FIRST_KSEGRP_IN_PROC(p));
+ /*
+ * If we are setting our own priority, set just our
+ * KSEGRP but if we are doing another process,
+ * do all the groups on that process. If we
+ * specify our own pid we do the latter.
+ */
+ if (uap->pid == 0) {
+ error = rtp_to_pri(&rtp, td->td_ksegrp);
+ } else {
+ FOREACH_KSEGRP_IN_PROC(p, kg) {
+ if ((error = rtp_to_pri(&rtp, kg)) != 0) {
+ break;
+ }
+ }
+ }
mtx_unlock_spin(&sched_lock);
break;
default:
==== //depot/projects/gdb/sys/kern/uipc_syscalls.c#10 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.182 2004/05/06 05:03:22 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.183 2004/05/08 02:24:21 rwatson Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
@@ -1705,7 +1705,7 @@
int error, s, headersize = 0, headersent = 0;
struct iovec *hdr_iov = NULL;
- NET_LOCK_GIANT();
+ mtx_lock(&Giant);
hdtr_size = 0;
@@ -2070,7 +2070,7 @@
if (m_header)
m_freem(m_header);
- NET_UNLOCK_GIANT();
+ mtx_unlock(&Giant);
if (error == ERESTART)
error = EINTR;
==== //depot/projects/gdb/sys/kern/vfs_bio.c#6 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_bio.c,v 1.433 2004/05/06 05:03:22 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_bio.c,v 1.434 2004/05/08 06:46:40 alc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -3522,7 +3522,7 @@
void
vfs_bio_clrbuf(struct buf *bp)
{
- int i, mask = 0;
+ int i, j, mask = 0;
caddr_t sa, ea;
GIANT_REQUIRED;
@@ -3533,9 +3533,10 @@
VM_OBJECT_LOCK(bp->b_object);
if( (bp->b_npages == 1) && (bp->b_bufsize < PAGE_SIZE) &&
(bp->b_offset & PAGE_MASK) == 0) {
+ if (bp->b_pages[0] == bogus_page)
+ goto unlock;
mask = (1 << (bp->b_bufsize / DEV_BSIZE)) - 1;
- if (bp->b_pages[0] != bogus_page)
- VM_OBJECT_LOCK_ASSERT(bp->b_pages[0]->object, MA_OWNED);
+ VM_OBJECT_LOCK_ASSERT(bp->b_pages[0]->object, MA_OWNED);
if ((bp->b_pages[0]->valid & mask) == mask)
goto unlock;
if (((bp->b_pages[0]->flags & PG_ZERO) == 0) &&
@@ -3547,14 +3548,15 @@
}
ea = sa = bp->b_data;
for(i=0;i<bp->b_npages;i++,sa=ea) {
- int j = ((vm_offset_t)sa & PAGE_MASK) / DEV_BSIZE;
+ if (bp->b_pages[i] == bogus_page)
+ continue;
+ j = ((vm_offset_t)sa & PAGE_MASK) / DEV_BSIZE;
ea = (caddr_t)trunc_page((vm_offset_t)sa + PAGE_SIZE);
ea = (caddr_t)(vm_offset_t)ulmin(
(u_long)(vm_offset_t)ea,
(u_long)(vm_offset_t)bp->b_data + bp->b_bufsize);
mask = ((1 << ((ea - sa) / DEV_BSIZE)) - 1) << j;
- if (bp->b_pages[i] != bogus_page)
- VM_OBJECT_LOCK_ASSERT(bp->b_pages[i]->object, MA_OWNED);
+ VM_OBJECT_LOCK_ASSERT(bp->b_pages[i]->object, MA_OWNED);
if ((bp->b_pages[i]->valid & mask) == mask)
continue;
if ((bp->b_pages[i]->valid & mask) == 0) {
==== //depot/projects/gdb/sys/sparc64/conf/GENERIC#5 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.71 2004/05/02 20:40:19 marcel Exp $
+# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.72 2004/05/08 13:53:46 marius Exp $
machine sparc64
cpu SUN4U
@@ -76,14 +76,6 @@
device central
device fhc
-# New OpenFirmware PCI framework. This fixes a number of interrupt-
-# routing problems and changes the device enumeration to be hopefully
-# closer to Solaris. Be aware that, because of the latter, enabling or
-# disabling this option may require reconfiguration, and can even
-# cause the machine to not boot without manual intervention before the
-# fstab is adjusted.
-options OFW_NEWPCI
-
# Floppy drives
#device fdc
==== //depot/projects/gdb/sys/sparc64/conf/NOTES#3 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/sparc64/conf/NOTES,v 1.5 2004/04/30 15:00:41 marius Exp $
+# $FreeBSD: src/sys/sparc64/conf/NOTES,v 1.6 2004/05/08 13:53:46 marius Exp $
#
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
@@ -31,14 +31,6 @@
device central
device fhc
-# New OpenFirmware PCI framework. This fixes a number of interrupt-
-# routing problems and changes the device enumeration to be hopefully
-# closer to Solaris. Be aware that, because of the latter, enabling or
-# disabling this option may require reconfiguration, and can even
-# cause the machine to not boot without manual intervention before the
-# fstab is adjusted.
-#options OFW_NEWPCI
-
#####################################################################
# HARDWARE DEVICE CONFIGURATION
==== //depot/projects/gdb/sys/sparc64/ebus/ebus.c#5 (text+ko) ====
@@ -28,7 +28,7 @@
*
* from: NetBSD: ebus.c,v 1.26 2001/09/10 16:27:53 eeh Exp
*
- * $FreeBSD: src/sys/sparc64/ebus/ebus.c,v 1.14 2004/04/30 19:19:55 tmm Exp $
+ * $FreeBSD: src/sys/sparc64/ebus/ebus.c,v 1.15 2004/05/08 13:53:46 marius Exp $
*/
/*
@@ -46,8 +46,6 @@
* there are machines with both ISA and EBus.
*/
-#include "opt_ofw_pci.h"
-
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
@@ -59,7 +57,6 @@
#include <sys/rman.h>
#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_pci.h>
#include <machine/ofw_bus.h>
#include <machine/resource.h>
@@ -99,9 +96,7 @@
int sc_nrange;
int sc_nimap;
-#ifdef OFW_NEWPCI
struct ofw_bus_iinfo sc_iinfo;
-#endif
};
static device_probe_t ebus_probe;
@@ -151,25 +146,13 @@
DRIVER_MODULE(ebus, pci, ebus_driver, ebus_devclass, 0, 0);
-static phandle_t
-ebus_get_busnode(device_t dev)
-{
-
-#ifdef OFW_NEWPCI
- return (ofw_pci_get_node(dev));
-#else
- return (ofw_pci_find_node(pci_get_bus(dev), pci_get_slot(dev),
- pci_get_function(dev)));
-#endif
-}
-
static int
ebus_probe(device_t dev)
{
char name[10];
phandle_t node;
- if ((node = ebus_get_busnode(dev)) == 0)
+ if ((node = ofw_pci_get_node(dev)) == 0)
return (ENXIO);
OF_getprop(node, "name", &name, sizeof(name));
@@ -200,7 +183,7 @@
int i, rnum, rid;
sc = device_get_softc(dev);
- sc->sc_node = node = ebus_get_busnode(dev);
+ sc->sc_node = node = ofw_pci_get_node(dev);
sc->sc_nrange = OF_getprop_alloc(node, "ranges",
sizeof(*sc->sc_range), (void **)&sc->sc_range);
@@ -239,9 +222,7 @@
}
}
-#ifdef OFW_NEWPCI
ofw_bus_setup_iinfo(node, &sc->sc_iinfo, sizeof(ofw_isa_intr_t));
-#endif
/*
* Now attach our children.
@@ -490,17 +471,10 @@
nintr = OF_getprop_alloc(node, "interrupts", sizeof(*intrs),
(void **)&intrs);
for (i = 0; i < nintr; i++) {
-#ifdef OFW_NEWPCI
rintr = ofw_isa_route_intr(dev, node, &sc->sc_iinfo, intrs[i]);
- if (rintr == PCI_INVALID_IRQ) {
-#else
- rintr = ofw_bus_route_intr(node, intrs[i], ofw_pci_orb_callback,
- dev);
- if (rintr == ORIR_NOTFOUND) {
-#endif
+ if (rintr == PCI_INVALID_IRQ)
panic("ebus_setup_dinfo: could not map ebus "
"interrupt %d", intrs[i]);
- }
resource_list_add(&edi->edi_rl, SYS_RES_IRQ, i,
rintr, rintr, 1);
}
==== //depot/projects/gdb/sys/sparc64/include/ofw_bus.h#2 (text+ko) ====
@@ -22,7 +22,7 @@
* OR TORT (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/sparc64/include/ofw_bus.h,v 1.5 2003/07/01 14:52:46 tmm Exp $
+ * $FreeBSD: src/sys/sparc64/include/ofw_bus.h,v 1.6 2004/05/08 13:53:46 marius Exp $
*/
#ifndef _MACHINE_OFW_BUS_H_
@@ -37,8 +37,6 @@
*/
typedef u_int32_t pcell_t;
-#ifdef OFW_NEWPCI
-
struct ofw_bus_iinfo {
u_int8_t *opi_imap;
u_int8_t *opi_imapmsk;
@@ -52,13 +50,4 @@
int ofw_bus_search_intrmap(void *, int, void *, int, void *, int, void *,
void *, void *, int);
-#else
-
-typedef int obr_callback_t(phandle_t, u_int8_t *, int, u_int8_t *, int,
- u_int8_t **, int *, void *);
-
-u_int32_t ofw_bus_route_intr(phandle_t, int, obr_callback_t *, void *);
-
-#endif
-
#endif /* !_MACHINE_OFW_BUS_H_ */
==== //depot/projects/gdb/sys/sparc64/isa/isa.c#3 (text+ko) ====
@@ -26,36 +26,28 @@
*
* from: FreeBSD: src/sys/alpha/isa/isa.c,v 1.26 2001/07/11
*
- * $FreeBSD: src/sys/sparc64/isa/isa.c,v 1.11 2004/03/17 21:45:55 jmg Exp $
+ * $FreeBSD: src/sys/sparc64/isa/isa.c,v 1.12 2004/05/08 13:53:47 marius Exp $
*/
-#include "opt_ofw_pci.h"
-
#include <sys/param.h>
#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
#include <sys/bus.h>
+
#include <machine/bus.h>
-#include <sys/malloc.h>
-#include <sys/proc.h>
+
#include <sys/rman.h>
-#include <sys/interrupt.h>
#include <isa/isareg.h>
#include <isa/isavar.h>
#include <isa/isa_common.h>
-#include <dev/pci/pcireg.h>
-#include <dev/pci/pcivar.h>
-
-#include <dev/ofw/ofw_pci.h>
#include <dev/ofw/openfirm.h>
-#include <machine/intr_machdep.h>
-#include <machine/ofw_bus.h>
#include <machine/resource.h>
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcivar.h>
+
#include <sparc64/pci/ofw_pci.h>
#include <sparc64/isa/ofw_isa.h>
@@ -65,19 +57,16 @@
bus_space_tag_t isa_mem_bt = NULL;
bus_space_handle_t isa_mem_hdl;
-u_int64_t isa_io_base;
-u_int64_t isa_io_limit;
-u_int64_t isa_mem_base;
-u_int64_t isa_mem_limit;
+static u_int64_t isa_io_base;
+static u_int64_t isa_io_limit;
+static u_int64_t isa_mem_base;
+static u_int64_t isa_mem_limit;
device_t isa_bus_device;
static phandle_t isab_node;
static ofw_pci_intr_t isa_ino[8];
-
-#ifdef OFW_NEWPCI
struct ofw_bus_iinfo isa_iinfo;
-#endif
/*
* XXX: This is really partly partly PCI-specific, but unfortunately is
@@ -117,26 +106,17 @@
device_t bridge;
phandle_t node;
ofw_isa_intr_t ino;
-#ifndef OFW_NEWPCI
- ofw_pci_intr_t rino;
-#endif
struct isa_ranges *br;
int nbr, i;
/* The parent of the bus must be a PCI-ISA bridge. */
bridge = device_get_parent(dev);
-#ifdef OFW_NEWPCI
isab_node = ofw_pci_get_node(bridge);
-#else
- isab_node = ofw_pci_node(bridge);
-#endif
nbr = OF_getprop_alloc(isab_node, "ranges", sizeof(*br), (void **)&br);
if (nbr <= 0)
panic("isa_init: cannot get bridge range property");
-#ifdef OFW_NEWPCI
ofw_bus_setup_iinfo(isab_node, &isa_iinfo, sizeof(ofw_isa_intr_t));
-#endif
/*
* This is really a bad kludge; however, it is needed to provide
@@ -150,13 +130,8 @@
continue;
if (ino > 7)
panic("isa_init: XXX: ino too large");
-#ifdef OFW_NEWPCI
isa_ino[ino] = ofw_isa_route_intr(bridge, node, &isa_iinfo,
ino);
-#else
- rino = ofw_bus_route_intr(node, ino, ofw_pci_orb_callback, dev);
- isa_ino[ino] = rino == ORIR_NOTFOUND ? PCI_INVALID_IRQ : rino;
-#endif
}
for (nbr -= 1; nbr >= 0; nbr--) {
==== //depot/projects/gdb/sys/sparc64/isa/ofw_isa.c#3 (text+ko) ====
@@ -28,21 +28,18 @@
*
* from: NetBSD: ebus.c,v 1.26 2001/09/10 16:27:53 eeh Exp
*
- * $FreeBSD: src/sys/sparc64/isa/ofw_isa.c,v 1.7 2004/04/28 13:06:45 tmm Exp $
+ * $FreeBSD: src/sys/sparc64/isa/ofw_isa.c,v 1.8 2004/05/08 13:53:47 marius Exp $
*/
/*
* Helper functions which can be used in both ISA and EBus code.
*/
-#include "opt_ofw_pci.h"
-
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_pci.h>
#include <machine/bus.h>
#include <machine/resource.h>
@@ -100,7 +97,6 @@
*start, *end);
}
-#ifdef OFW_NEWPCI
ofw_pci_intr_t
ofw_isa_route_intr(device_t bridge, phandle_t node, struct ofw_bus_iinfo *ii,
ofw_isa_intr_t intr)
@@ -122,4 +118,3 @@
}
return (mintr);
}
-#endif /* OFW_NEWPCI */
==== //depot/projects/gdb/sys/sparc64/isa/ofw_isa.h#3 (text+ko) ====
@@ -28,7 +28,7 @@
*
* from: NetBSD: ebus.c,v 1.26 2001/09/10 16:27:53 eeh Exp
*
- * $FreeBSD: src/sys/sparc64/isa/ofw_isa.h,v 1.3 2004/04/28 13:06:45 tmm Exp $
+ * $FreeBSD: src/sys/sparc64/isa/ofw_isa.h,v 1.4 2004/05/08 13:53:47 marius Exp $
*/
#ifndef _SPARC64_ISA_OFW_ISA_H_
@@ -64,27 +64,11 @@
typedef u_int32_t ofw_isa_intr_t;
-struct isa_imap {
- u_int32_t phys_hi; /* high phys addr mask */
- u_int32_t phys_lo; /* low phys addr mask */
- ofw_isa_intr_t intr; /* interrupt mask */
- phandle_t cnode; /* child node */
- ofw_pci_intr_t cintr; /* child interrupt */
-};
-
-struct isa_imap_msk {
- u_int32_t phys_hi; /* high phys addr */
- u_int32_t phys_lo; /* low phys addr */
- ofw_isa_intr_t intr; /* interrupt */
-};
-
int ofw_isa_range_restype(struct isa_ranges *);
/* Map an IO range. Returns the resource type of the range. */
int ofw_isa_range_map(struct isa_ranges *, int, u_long *, u_long *, int *);
-#ifdef OFW_NEWPCI
ofw_pci_intr_t ofw_isa_route_intr(device_t, phandle_t, struct ofw_bus_iinfo *,
ofw_isa_intr_t);
-#endif
#endif /* !_SPARC64_ISA_OFW_ISA_H_ */
==== //depot/projects/gdb/sys/sparc64/pci/apb.c#2 (text+ko) ====
@@ -30,14 +30,14 @@
*
* from: FreeBSD: src/sys/dev/pci/pci_pci.c,v 1.3 2000/12/13
*
- * $FreeBSD: src/sys/sparc64/pci/apb.c,v 1.7 2003/08/22 07:38:07 imp Exp $
+ * $FreeBSD: src/sys/sparc64/pci/apb.c,v 1.8 2004/05/08 13:53:47 marius Exp $
*/
/*
* Support for the Sun APB (Advanced PCI Bridge) PCI-PCI bridge.
* This bridge does not fully comply to the PCI bridge specification, and is
* therefore not supported by the generic driver.
- * We can use some pf the pcib methods anyway.
+ * We can use some of the pcib methods anyway.
*/
#include "opt_ofw_pci.h"
@@ -45,11 +45,9 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
-#include <sys/malloc.h>
#include <sys/bus.h>
#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_pci.h>
#include <machine/bus.h>
#include <machine/ofw_bus.h>
@@ -76,9 +74,6 @@
static device_probe_t apb_probe;
static device_attach_t apb_attach;
static bus_alloc_resource_t apb_alloc_resource;
-#ifndef OFW_NEWPCI
-static pcib_route_interrupt_t apb_route_interrupt;
-#endif
static device_method_t apb_methods[] = {
/* Device interface */
@@ -103,17 +98,11 @@
DEVMETHOD(pcib_maxslots, pcib_maxslots),
DEVMETHOD(pcib_read_config, pcib_read_config),
DEVMETHOD(pcib_write_config, pcib_write_config),
-#ifdef OFW_NEWPCI
DEVMETHOD(pcib_route_interrupt, ofw_pcib_gen_route_interrupt),
-#else
- DEVMETHOD(pcib_route_interrupt, apb_route_interrupt),
-#endif
/* ofw_pci interface */
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list