Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Sep 2003 14:11:10 -0700 (PDT)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 38916 for review
Message-ID:  <200309302111.h8ULBApm024338@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=38916

Change 38916 by sam@sam_ebb on 2003/09/30 14:10:36

	IFC

Affected files ...

.. //depot/projects/netperf/sys/alpha/tlsb/zs_tlsb.c#4 integrate
.. //depot/projects/netperf/sys/amd64/amd64/pmap.c#10 integrate
.. //depot/projects/netperf/sys/amd64/include/pmap.h#2 integrate
.. //depot/projects/netperf/sys/conf/NOTES#11 integrate
.. //depot/projects/netperf/sys/conf/files#9 integrate
.. //depot/projects/netperf/sys/conf/majors#4 integrate
.. //depot/projects/netperf/sys/conf/options#10 integrate
.. //depot/projects/netperf/sys/ddb/db_elf.c#2 integrate
.. //depot/projects/netperf/sys/dev/aac/aac.c#6 integrate
.. //depot/projects/netperf/sys/dev/acpica/Osd/OsdSchedule.c#2 integrate
.. //depot/projects/netperf/sys/dev/acpica/Osd/OsdSynch.c#2 integrate
.. //depot/projects/netperf/sys/dev/acpica/acpi.c#9 integrate
.. //depot/projects/netperf/sys/dev/adlink/adlink.c#5 integrate
.. //depot/projects/netperf/sys/dev/ata/ata-all.c#5 integrate
.. //depot/projects/netperf/sys/dev/isp/isp_freebsd.c#4 integrate
.. //depot/projects/netperf/sys/dev/kbd/kbd.c#3 integrate
.. //depot/projects/netperf/sys/dev/kbd/kbdreg.h#2 integrate
.. //depot/projects/netperf/sys/dev/md/md.c#5 integrate
.. //depot/projects/netperf/sys/dev/mii/brgphy.c#5 integrate
.. //depot/projects/netperf/sys/dev/nmdm/nmdm.c#3 integrate
.. //depot/projects/netperf/sys/dev/null/null.c#3 integrate
.. //depot/projects/netperf/sys/dev/ofw/ofw_console.c#4 integrate
.. //depot/projects/netperf/sys/dev/ofw/openfirmio.c#3 integrate
.. //depot/projects/netperf/sys/dev/raidframe/rf_decluster.c#3 integrate
.. //depot/projects/netperf/sys/dev/raidframe/rf_freebsdkintf.c#3 integrate
.. //depot/projects/netperf/sys/dev/sab/sab.c#3 integrate
.. //depot/projects/netperf/sys/dev/sio/sio.c#8 integrate
.. //depot/projects/netperf/sys/dev/uart/uart_cpu_sparc64.c#4 integrate
.. //depot/projects/netperf/sys/dev/uart/uart_tty.c#3 integrate
.. //depot/projects/netperf/sys/dev/usb/ugen.c#4 integrate
.. //depot/projects/netperf/sys/dev/usb/uhid.c#4 integrate
.. //depot/projects/netperf/sys/dev/usb/ulpt.c#4 integrate
.. //depot/projects/netperf/sys/dev/usb/ums.c#4 integrate
.. //depot/projects/netperf/sys/dev/usb/uscanner.c#4 integrate
.. //depot/projects/netperf/sys/dev/vinum/vinumconfig.c#3 integrate
.. //depot/projects/netperf/sys/dev/vinum/vinumrevive.c#3 integrate
.. //depot/projects/netperf/sys/dev/vinum/vinumvar.h#2 integrate
.. //depot/projects/netperf/sys/dev/zs/zs.c#3 integrate
.. //depot/projects/netperf/sys/fs/fdescfs/fdesc_vnops.c#2 integrate
.. //depot/projects/netperf/sys/fs/msdosfs/direntry.h#2 integrate
.. //depot/projects/netperf/sys/fs/msdosfs/msdosfs_conv.c#2 integrate
.. //depot/projects/netperf/sys/fs/msdosfs/msdosfs_iconv.c#1 branch
.. //depot/projects/netperf/sys/fs/msdosfs/msdosfs_lookup.c#2 integrate
.. //depot/projects/netperf/sys/fs/msdosfs/msdosfs_vfsops.c#4 integrate
.. //depot/projects/netperf/sys/fs/msdosfs/msdosfs_vnops.c#3 integrate
.. //depot/projects/netperf/sys/fs/msdosfs/msdosfsmount.h#3 integrate
.. //depot/projects/netperf/sys/fs/ntfs/ntfs.h#2 integrate
.. //depot/projects/netperf/sys/fs/ntfs/ntfs_iconv.c#1 branch
.. //depot/projects/netperf/sys/fs/ntfs/ntfs_subr.c#3 integrate
.. //depot/projects/netperf/sys/fs/ntfs/ntfs_subr.h#2 integrate
.. //depot/projects/netperf/sys/fs/ntfs/ntfs_vfsops.c#3 integrate
.. //depot/projects/netperf/sys/fs/ntfs/ntfs_vnops.c#2 integrate
.. //depot/projects/netperf/sys/fs/ntfs/ntfsmount.h#2 integrate
.. //depot/projects/netperf/sys/fs/procfs/procfs_map.c#3 integrate
.. //depot/projects/netperf/sys/fs/smbfs/smbfs_vfsops.c#3 integrate
.. //depot/projects/netperf/sys/geom/geom_ctl.c#2 integrate
.. //depot/projects/netperf/sys/geom/geom_disk.c#4 integrate
.. //depot/projects/netperf/sys/geom/geom_io.c#4 integrate
.. //depot/projects/netperf/sys/i386/bios/smapi.c#2 integrate
.. //depot/projects/netperf/sys/i386/i386/elan-mmcr.c#4 integrate
.. //depot/projects/netperf/sys/i386/i386/pmap.c#11 integrate
.. //depot/projects/netperf/sys/i386/isa/cy.c#2 integrate
.. //depot/projects/netperf/sys/ia64/include/varargs.h#2 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_iconv.c#1 branch
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_lookup.c#3 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_mount.h#2 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_rrip.c#2 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_util.c#2 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_vfsops.c#4 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/cd9660_vnops.c#2 integrate
.. //depot/projects/netperf/sys/isofs/cd9660/iso.h#2 integrate
.. //depot/projects/netperf/sys/kern/kern_conf.c#2 integrate
.. //depot/projects/netperf/sys/kern/kern_exec.c#4 integrate
.. //depot/projects/netperf/sys/kern/kern_mac.c#5 integrate
.. //depot/projects/netperf/sys/kern/subr_devstat.c#3 integrate
.. //depot/projects/netperf/sys/kern/subr_xxx.c#2 delete
.. //depot/projects/netperf/sys/kern/sys_generic.c#3 integrate
.. //depot/projects/netperf/sys/kern/tty_cons.c#4 integrate
.. //depot/projects/netperf/sys/kern/tty_pty.c#2 integrate
.. //depot/projects/netperf/sys/kern/tty_tty.c#2 integrate
.. //depot/projects/netperf/sys/kern/vfs_default.c#2 integrate
.. //depot/projects/netperf/sys/libkern/iconv.c#2 integrate
.. //depot/projects/netperf/sys/libkern/iconv_converter_if.m#2 integrate
.. //depot/projects/netperf/sys/libkern/iconv_xlat.c#2 integrate
.. //depot/projects/netperf/sys/libkern/iconv_xlat16.c#1 branch
.. //depot/projects/netperf/sys/modules/Makefile#6 integrate
.. //depot/projects/netperf/sys/modules/cd9660/Makefile#2 integrate
.. //depot/projects/netperf/sys/modules/cd9660_iconv/Makefile#1 branch
.. //depot/projects/netperf/sys/modules/libiconv/Makefile#2 integrate
.. //depot/projects/netperf/sys/modules/msdosfs/Makefile#2 integrate
.. //depot/projects/netperf/sys/modules/msdosfs_iconv/Makefile#1 branch
.. //depot/projects/netperf/sys/modules/ntfs/Makefile#2 integrate
.. //depot/projects/netperf/sys/modules/ntfs_iconv/Makefile#1 branch
.. //depot/projects/netperf/sys/net/if.c#4 integrate
.. //depot/projects/netperf/sys/net/if_tun.c#2 integrate
.. //depot/projects/netperf/sys/net/if_tunvar.h#2 integrate
.. //depot/projects/netperf/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#2 integrate
.. //depot/projects/netperf/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#2 integrate
.. //depot/projects/netperf/sys/netipsec/ipsec.c#7 integrate
.. //depot/projects/netperf/sys/netipsec/ipsec.h#7 integrate
.. //depot/projects/netperf/sys/netipsec/ipsec_input.c#7 integrate
.. //depot/projects/netperf/sys/netipsec/ipsec_mbuf.c#3 integrate
.. //depot/projects/netperf/sys/netipsec/ipsec_output.c#7 integrate
.. //depot/projects/netperf/sys/netipsec/key.c#11 integrate
.. //depot/projects/netperf/sys/netipsec/key_debug.c#3 integrate
.. //depot/projects/netperf/sys/netipsec/keydb.h#6 integrate
.. //depot/projects/netperf/sys/netipsec/keysock.c#3 integrate
.. //depot/projects/netperf/sys/netipsec/xform_ah.c#6 integrate
.. //depot/projects/netperf/sys/netipsec/xform_esp.c#7 integrate
.. //depot/projects/netperf/sys/netipsec/xform_ipcomp.c#6 integrate
.. //depot/projects/netperf/sys/netipsec/xform_ipip.c#3 integrate
.. //depot/projects/netperf/sys/netncp/ncp_mod.c#2 integrate
.. //depot/projects/netperf/sys/netsmb/smb_dev.c#2 integrate
.. //depot/projects/netperf/sys/opencrypto/cryptodev.c#2 integrate
.. //depot/projects/netperf/sys/pc98/pc98/sio.c#4 integrate
.. //depot/projects/netperf/sys/pci/if_xl.c#6 integrate
.. //depot/projects/netperf/sys/sparc64/sparc64/pmap.c#7 integrate
.. //depot/projects/netperf/sys/sys/conf.h#2 integrate
.. //depot/projects/netperf/sys/sys/cons.h#3 integrate
.. //depot/projects/netperf/sys/sys/iconv.h#2 integrate
.. //depot/projects/netperf/sys/sys/param.h#8 integrate
.. //depot/projects/netperf/sys/sys/systm.h#2 integrate
.. //depot/projects/netperf/sys/vm/uma_dbg.c#3 integrate
.. //depot/projects/netperf/sys/vm/vm_map.c#7 integrate
.. //depot/projects/netperf/sys/vm/vm_map.h#5 integrate
.. //depot/projects/netperf/sys/vm/vm_mmap.c#5 integrate
.. //depot/projects/netperf/sys/vm/vm_page.c#6 integrate

Differences ...

==== //depot/projects/netperf/sys/alpha/tlsb/zs_tlsb.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/tlsb/zs_tlsb.c,v 1.38 2003/09/26 10:53:29 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/tlsb/zs_tlsb.c,v 1.39 2003/09/26 19:35:49 phk Exp $");
 
 #include "opt_ddb.h"
 
@@ -228,6 +228,7 @@
 	zs_console_addr = (caddr_t) ALPHA_PHYS_TO_K0SEG(base + offset);
 
 	sprintf(zs_consdev.cn_name, "zs0");
+	zs_consdev.cn_unit = 0;
 	zs_consdev.cn_pri = CN_NORMAL;
 	make_dev(&zs_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "zs0");
 	cnadd(&zs_consdev);
@@ -238,7 +239,7 @@
 zs_cngetc(struct consdev *cp)
 {
 	int s = spltty();
-	int c = zs_getc(zs_console_addr, minor(cp->cn_dev));
+	int c = zs_getc(zs_console_addr, cp->cn_unit);
 	splx(s);
 	return c;
 }
@@ -247,7 +248,7 @@
 zs_cncheckc(struct consdev *cp)
 {
 	int s = spltty();
-	int c = zs_maygetc(zs_console_addr, minor(cp->cn_dev));
+	int c = zs_maygetc(zs_console_addr, cp->cn_unit);
 	splx(s);
 	return c;
 }
@@ -256,7 +257,7 @@
 zs_cnputc(struct consdev *cp, int c)
 {
 	int s = spltty();
-	zs_putc(zs_console_addr, minor(cp->cn_dev), c);
+	zs_putc(zs_console_addr, cp->cn_unit, c);
 	splx(s);
 }
 

==== //depot/projects/netperf/sys/amd64/amd64/pmap.c#10 (text+ko) ====

@@ -73,7 +73,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.439 2003/09/26 04:12:41 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.440 2003/09/27 20:53:00 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -1015,12 +1015,6 @@
 	static vm_pindex_t color;
 
 	/*
-	 * allocate object for the ptes
-	 */
-	if (pmap->pm_pteobj == NULL)
-		pmap->pm_pteobj = vm_object_allocate(OBJT_DEFAULT, NUPDE + NUPDPE + NUPML4E + 1);
-
-	/*
 	 * allocate the page directory page
 	 */
 	while ((pml4pg = vm_page_alloc(NULL, color++, VM_ALLOC_NOOBJ |
@@ -1068,6 +1062,11 @@
 /*
  * this routine is called if the page table page is not
  * mapped correctly.
+ *
+ * Note: If a page allocation fails at page table level two or three,
+ * one or two pages may be held during the wait, only to be released
+ * afterwards.  This conservative approach is easily argued to avoid
+ * race conditions.
  */
 static vm_page_t
 _pmap_allocpte(pmap, ptepindex)
@@ -1075,15 +1074,19 @@
 	vm_pindex_t ptepindex;
 {
 	vm_page_t m, pdppg, pdpg;
-	int is_object_locked;
 
 	/*
-	 * Find or fabricate a new pagetable page
+	 * Allocate a page table page.
 	 */
-	if (!(is_object_locked = VM_OBJECT_LOCKED(pmap->pm_pteobj)))
-		VM_OBJECT_LOCK(pmap->pm_pteobj);
-	m = vm_page_grab(pmap->pm_pteobj, ptepindex,
-	    VM_ALLOC_WIRED | VM_ALLOC_ZERO | VM_ALLOC_RETRY);
+	if ((m = vm_page_alloc(NULL, ptepindex, VM_ALLOC_NOOBJ |
+	    VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL) {
+		VM_WAIT;
+		/*
+		 * Indicate the need to retry.  While waiting, the page table
+		 * page may have been allocated.
+		 */
+		return (NULL);
+	}
 	if ((m->flags & PG_ZERO) == 0)
 		pmap_zero_page(m);
 
@@ -1125,7 +1128,13 @@
 		pml4 = &pmap->pm_pml4[pml4index];
 		if ((*pml4 & PG_V) == 0) {
 			/* Have to allocate a new pdp, recurse */
-			_pmap_allocpte(pmap, NUPDE + NUPDPE + pml4index);
+			if (_pmap_allocpte(pmap, NUPDE + NUPDPE + pml4index) == NULL) {
+				vm_page_lock_queues();
+				vm_page_unhold(m);
+				vm_page_free(m);
+				vm_page_unlock_queues();
+				return (NULL);
+			}
 		} else {
 			/* Add reference to pdp page */
 			pdppg = PHYS_TO_VM_PAGE(*pml4);
@@ -1152,7 +1161,13 @@
 		pml4 = &pmap->pm_pml4[pml4index];
 		if ((*pml4 & PG_V) == 0) {
 			/* Have to allocate a new pd, recurse */
-			_pmap_allocpte(pmap, NUPDE + pdpindex);
+			if (_pmap_allocpte(pmap, NUPDE + pdpindex) == NULL) {
+				vm_page_lock_queues();
+				vm_page_unhold(m);
+				vm_page_free(m);
+				vm_page_unlock_queues();
+				return (NULL);
+			}
 			pdp = (pdp_entry_t *)PHYS_TO_DMAP(*pml4 & PG_FRAME);
 			pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
 		} else {
@@ -1160,7 +1175,13 @@
 			pdp = &pdp[pdpindex & ((1ul << NPDPEPGSHIFT) - 1)];
 			if ((*pdp & PG_V) == 0) {
 				/* Have to allocate a new pd, recurse */
-				_pmap_allocpte(pmap, NUPDE + pdpindex);
+				if (_pmap_allocpte(pmap, NUPDE + pdpindex) == NULL) {
+					vm_page_lock_queues();
+					vm_page_unhold(m);
+					vm_page_free(m);
+					vm_page_unlock_queues();
+					return (NULL);
+				}
 			} else {
 				/* Add reference to the pd page */
 				pdpg = PHYS_TO_VM_PAGE(*pdp);
@@ -1179,8 +1200,6 @@
 	vm_page_flag_clear(m, PG_ZERO);
 	vm_page_wakeup(m);
 	vm_page_unlock_queues();
-	if (!is_object_locked)
-		VM_OBJECT_UNLOCK(pmap->pm_pteobj);
 
 	return m;
 }
@@ -1196,7 +1215,7 @@
 	 * Calculate pagetable page index
 	 */
 	ptepindex = pmap_pde_pindex(va);
-
+retry:
 	/*
 	 * Get the page directory entry
 	 */
@@ -1219,13 +1238,16 @@
 	if (pd != 0 && (*pd & PG_V) != 0) {
 		m = PHYS_TO_VM_PAGE(*pd);
 		m->hold_count++;
-		return m;
+	} else {
+		/*
+		 * Here if the pte page isn't mapped, or if it has been
+		 * deallocated.
+		 */
+		m = _pmap_allocpte(pmap, ptepindex);
+		if (m == NULL)
+			goto retry;
 	}
-	/*
-	 * Here if the pte page isn't mapped, or if it has been deallocated.
-	 */
-	m = _pmap_allocpte(pmap, ptepindex);
-	return m;
+	return (m);
 }
 
 
@@ -1258,8 +1280,6 @@
 	vm_page_busy(m);
 	vm_page_free(m);
 	vm_page_unlock_queues();
-	KASSERT(TAILQ_EMPTY(&pmap->pm_pteobj->memq),
-	    ("pmap_release: leaking page table pages"));
 }
 
 static int
@@ -1955,6 +1975,7 @@
 		if (mpte && (mpte->pindex == ptepindex)) {
 			mpte->hold_count++;
 		} else {
+	retry:
 			/*
 			 * Get the page directory entry
 			 */
@@ -1971,6 +1992,8 @@
 				mpte->hold_count++;
 			} else {
 				mpte = _pmap_allocpte(pmap, ptepindex);
+				if (mpte == NULL)
+					goto retry;
 			}
 		}
 	} else {

==== //depot/projects/netperf/sys/amd64/include/pmap.h#2 (text+ko) ====

@@ -42,7 +42,7 @@
  *
  *	from: hp300: @(#)pmap.h	7.2 (Berkeley) 12/16/90
  *	from: @(#)pmap.h	7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.105 2003/07/09 23:04:23 peter Exp $
+ * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.106 2003/09/27 20:53:01 alc Exp $
  */
 
 #ifndef _MACHINE_PMAP_H_
@@ -219,7 +219,6 @@
 
 struct pmap {
 	pml4_entry_t		*pm_pml4;	/* KVA of level 4 page table */
-	vm_object_t		pm_pteobj;	/* Container for pte's */
 	TAILQ_HEAD(,pv_entry)	pm_pvlist;	/* list of mappings in pmap */
 	u_long			pm_active;	/* active on cpus */
 	struct pmap_statistics	pm_stats;	/* pmap statistics */

==== //depot/projects/netperf/sys/conf/NOTES#11 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1177 2003/09/25 16:06:17 sam Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1178 2003/09/26 20:26:22 fjoe Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -788,6 +788,12 @@
 # Cryptographically secure random number generator; /dev/[u]random
 device		random
 
+# Optional character code conversion support with LIBICONV.
+# Each option requires their base file system and LIBICONV.
+options		CD9660_ICONV
+options		MSDOSFS_ICONV
+options		NTFS_ICONV
+
 
 #####################################################################
 # POSIX P1003.1B

==== //depot/projects/netperf/sys/conf/files#9 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.825 2003/09/14 17:02:59 takawata Exp $
+# $FreeBSD: src/sys/conf/files,v 1.827 2003/09/27 12:53:32 phk Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -893,11 +893,13 @@
 fs/msdosfs/msdosfs_lookup.c	optional msdosfs
 fs/msdosfs/msdosfs_vfsops.c	optional msdosfs
 fs/msdosfs/msdosfs_vnops.c	optional msdosfs
+fs/msdosfs/msdosfs_iconv.c	optional msdosfs_iconv
 fs/ntfs/ntfs_compr.c		optional ntfs
 fs/ntfs/ntfs_ihash.c		optional ntfs
 fs/ntfs/ntfs_subr.c		optional ntfs
 fs/ntfs/ntfs_vfsops.c		optional ntfs
 fs/ntfs/ntfs_vnops.c		optional ntfs
+fs/ntfs/ntfs_iconv.c		optional ntfs_iconv
 fs/nullfs/null_subr.c	optional nullfs
 fs/nullfs/null_vfsops.c	optional nullfs
 fs/nullfs/null_vnops.c	optional nullfs
@@ -1056,6 +1058,7 @@
 isofs/cd9660/cd9660_util.c	optional cd9660
 isofs/cd9660/cd9660_vfsops.c	optional cd9660
 isofs/cd9660/cd9660_vnops.c	optional cd9660
+isofs/cd9660/cd9660_iconv.c	optional cd9660_iconv
 kern/imgact_elf.c	standard
 kern/imgact_shell.c	standard
 kern/inflate.c		optional gzip
@@ -1144,7 +1147,6 @@
 kern/subr_taskqueue.c	standard
 kern/subr_trap.c	standard
 kern/subr_witness.c	optional witness
-kern/subr_xxx.c		standard
 kern/sys_generic.c	standard
 kern/sys_pipe.c		standard
 kern/sys_process.c	standard
@@ -1198,6 +1200,7 @@
 libkern/iconv.c		optional libiconv
 libkern/iconv_converter_if.m	optional libiconv
 libkern/iconv_xlat.c	optional libiconv
+libkern/iconv_xlat16.c	optional libiconv
 libkern/index.c		standard
 libkern/inet_ntoa.c	standard
 libkern/mcount.c	optional	profiling-routine

==== //depot/projects/netperf/sys/conf/majors#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/majors,v 1.177 2003/08/27 07:35:12 simokawa Exp $
+# $FreeBSD: src/sys/conf/majors,v 1.179 2003/09/29 14:15:57 scottl Exp $
 #
 # This list is semi-obsoleted by DEVFS, but for now it still contains
 # the current allocation of device major numbers.
@@ -148,7 +148,6 @@
 146	*twe		3ware Escalade ATA RAID (controller)
 148	*agp		AGP <dfr>
 149	*tap		Ethernet tunneling device <myevmenkin@att.com>
-150	*aac		Adaptec FSA RAID (controller)
 152	*acpi		ACPI bios support (Takanori Watanabe takawata@shidahara1.planet.sci.kobe-u.ac.jp)
 153	*ti		Tigon Gigabit Ethernet driver (ken@FreeBSD.ORG)
 154	*asr		Adaptec SCSI RAID <msmith@freebsd.org>
@@ -169,8 +168,6 @@
 173	*devctl		Devd control device <imp>
 174	pciwd		Berkshire Watchdog PCI <marcel@progressix.com>
 175	ips		IBM/Adaptec ServeRAID (control device)
-178	raidctl		RAIDframe (control device)
-179	raid		RAIDframe (disk device)
 180	nvidia		NVIDIA (nvidiaN/nvidiactl) <mdodd>
 181	casm		HP/Compaq ProLiant Advanced Server Management <peter>
 183	*smapi		SMAPI BIOS interface <mdodd>

==== //depot/projects/netperf/sys/conf/options#10 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.414 2003/09/11 23:06:41 marcel Exp $
+# $FreeBSD: src/sys/conf/options,v 1.415 2003/09/26 20:26:22 fjoe Exp $
 #
 #        On the handling of kernel options
 #
@@ -198,6 +198,11 @@
 NFSCLIENT	opt_nfs.h
 NFSSERVER	opt_nfs.h
 
+# filesystems and libiconv bridge
+CD9660_ICONV	opt_dontuse.h
+MSDOSFS_ICONV	opt_dontuse.h
+NTFS_ICONV	opt_dontuse.h
+
 # If you are following the conditions in the copyright,
 # you can enable soft-updates which will speed up a lot of thigs
 # and make the system safer from crashes at the same time.

==== //depot/projects/netperf/sys/ddb/db_elf.c#2 (text+ko) ====

@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_elf.c,v 1.16 2003/06/10 22:09:23 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_elf.c,v 1.17 2003/09/28 06:02:33 bde Exp $");
 
 #include "opt_ddb.h"
 
@@ -266,6 +266,11 @@
 	for (symp = symtab_start; symp < symtab_end; symp++) {
 		if (symp->st_name == 0)
 			continue;
+		if (ELF_ST_TYPE(symp->st_info) != STT_OBJECT &&
+		    ELF_ST_TYPE(symp->st_info) != STT_FUNC &&
+		    ELF_ST_TYPE(symp->st_info) != STT_NOTYPE)
+			continue;
+
 		if (off >= symp->st_value) {
 			if ((off - symp->st_value) < diff) {
 				diff = off - symp->st_value;

==== //depot/projects/netperf/sys/dev/aac/aac.c#6 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.78 2003/09/16 16:07:15 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.79 2003/09/29 14:10:04 scottl Exp $");
 
 /*
  * Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
@@ -180,15 +180,12 @@
 static int		aac_return_aif(struct aac_softc *sc, caddr_t uptr);
 static int		aac_query_disk(struct aac_softc *sc, caddr_t uptr);
 
-#define AAC_CDEV_MAJOR	150
-
 static struct cdevsw aac_cdevsw = {
 	.d_open =	aac_open,
 	.d_close =	aac_close,
 	.d_ioctl =	aac_ioctl,
 	.d_poll =	aac_poll,
 	.d_name =	"aac",
-	.d_maj =	AAC_CDEV_MAJOR,
 };
 
 MALLOC_DEFINE(M_AACBUF, "aacbuf", "Buffers for the AAC driver");

==== //depot/projects/netperf/sys/dev/acpica/Osd/OsdSchedule.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/acpica/Osd/OsdSchedule.c,v 1.23 2002/10/31 17:58:39 iwasaki Exp $
+ *	$FreeBSD: src/sys/dev/acpica/Osd/OsdSchedule.c,v 1.24 2003/09/29 07:29:26 njl Exp $
  */
 
 /*
@@ -262,7 +262,15 @@
 {
     ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
 
-    DELAY(Microseconds);
+    /* 
+     * Maximum length for stall is 100 us.  If longer, assume caller
+     * really meant "sleep".
+     */
+    if (Microseconds <= 100)
+	DELAY(Microseconds);
+    else
+	AcpiOsSleep(Microseconds / 1000, Microseconds % 1000);
+
     return_VOID;
 }
 

==== //depot/projects/netperf/sys/dev/acpica/Osd/OsdSynch.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/acpica/Osd/OsdSynch.c,v 1.17 2003/07/13 22:57:16 njl Exp $
+ *	$FreeBSD: src/sys/dev/acpica/Osd/OsdSynch.c,v 1.18 2003/09/26 21:22:10 njl Exp $
  */
 
 /*
@@ -79,8 +79,9 @@
 #endif
 static int	acpi_semaphore_debug = 0;
 TUNABLE_INT("debug.acpi_semaphore_debug", &acpi_semaphore_debug);
-SYSCTL_INT(_debug, OID_AUTO, acpi_semaphore_debug, CTLFLAG_RW,
-    &acpi_semaphore_debug, 0, "");
+SYSCTL_DECL(_debug_acpi);
+SYSCTL_INT(_debug_acpi, OID_AUTO, semaphore_debug, CTLFLAG_RW,
+	   &acpi_semaphore_debug, 0, "Enable ACPI semaphore debug messages");
 #endif
 
 ACPI_STATUS

==== //depot/projects/netperf/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.103 2003/09/26 04:32:40 njl Exp $
+ *	$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.104 2003/09/26 21:22:10 njl Exp $
  */
 
 #include "opt_acpi.h"
@@ -157,13 +157,10 @@
 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,
-	   "");
-static int acpi_ca_version = ACPI_CA_VERSION;
-SYSCTL_INT(_debug, OID_AUTO, acpi_ca_version, CTLFLAG_RD, &acpi_ca_version, 0,
-	   "");
+SYSCTL_NODE(_debug, OID_AUTO, acpi, CTLFLAG_RW, NULL, "ACPI debugging");
+static char acpi_ca_version[12];
+SYSCTL_STRING(_debug_acpi, OID_AUTO, acpi_ca_version, CTLFLAG_RD,
+	      acpi_ca_version, 0, "Version of Intel ACPI-CA");
 
 /*
  * ACPI can only be loaded as a module by the loader; activating it after
@@ -212,6 +209,9 @@
     if (resource_disabled("acpi", 0))
 	return_VOID;
 
+    snprintf(acpi_ca_version, sizeof(acpi_ca_version), "0x%x",
+	     ACPI_CA_VERSION);
+
     /* Make sure we're not being doubly invoked. */
     if (device_find_child(parent, "acpi", 0) != NULL)
 	return_VOID;
@@ -2187,11 +2187,11 @@
 {
     char	*cp;
 
-    if (!cold)
-	return;
+    if (cold) {
+	AcpiDbgLayer = 0;
+	AcpiDbgLevel = 0;
+    }
 
-    AcpiDbgLayer = 0;
-    AcpiDbgLevel = 0;
     if ((cp = getenv("debug.acpi.layer")) != NULL) {
 	acpi_parse_debug(cp, &dbg_layer[0], &AcpiDbgLayer);
 	freeenv(cp);
@@ -2201,11 +2201,61 @@
 	freeenv(cp);
     }
 
-    printf("ACPI debug layer 0x%x debug level 0x%x\n", AcpiDbgLayer,
-	   AcpiDbgLevel);
+    if (cold) {
+	printf("ACPI debug layer 0x%x debug level 0x%x\n",
+	       AcpiDbgLayer, AcpiDbgLevel);
+    }
 }
 SYSINIT(acpi_debugging, SI_SUB_TUNABLES, SI_ORDER_ANY, acpi_set_debugging,
 	NULL);
+
+static int
+acpi_debug_sysctl(SYSCTL_HANDLER_ARGS)
+{
+    char	*options;
+    int		 error, len, *dbg;
+    struct	 debugtag *tag;
+
+    len = 512;
+    MALLOC(options, char *, len, M_TEMP, M_WAITOK);
+    options[0] = '\0';
+
+    if (strcmp(oidp->oid_arg1, "debug.acpi.layer") == 0) {
+	tag = &dbg_layer[0];
+	dbg = &AcpiDbgLayer;
+    } else {
+	tag = &dbg_level[0];
+	dbg = &AcpiDbgLevel;
+    }
+
+    /* Get old values if this is a get request. */
+    if (*dbg == 0) {
+	strlcpy(options, "NONE", sizeof(options));
+    } else if (req->newptr == NULL) {
+	for (; tag->name != NULL; tag++) {
+	    if ((*dbg & tag->value) == tag->value) {
+		strlcat(options, tag->name, len);
+		strlcat(options, " ", len); /* XXX */
+	    }
+	}
+    }
+
+    error = sysctl_handle_string(oidp, options, len, req);
+
+    /* If the user is setting a string, parse it. */
+    if (error == 0 && req->newptr != NULL) {
+	*dbg = 0;
+	setenv((char *)oidp->oid_arg1, (char *)req->newptr);
+	acpi_set_debugging(NULL);
+    }
+    FREE(options, M_TEMP);
+
+    return (error);
+}
+SYSCTL_PROC(_debug_acpi, OID_AUTO, layer, CTLFLAG_RW | CTLTYPE_STRING,
+	    "debug.acpi.layer", 0, acpi_debug_sysctl, "A", "");
+SYSCTL_PROC(_debug_acpi, OID_AUTO, level, CTLFLAG_RW | CTLTYPE_STRING,
+	    "debug.acpi.level", 0, acpi_debug_sysctl, "A", "");
 #endif
 
 static int

==== //depot/projects/netperf/sys/dev/adlink/adlink.c#5 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/adlink/adlink.c,v 1.5 2003/09/05 11:05:41 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/adlink/adlink.c,v 1.6 2003/09/27 12:00:58 phk Exp $");
 
 #ifdef _KERNEL
 #include <sys/param.h>
@@ -394,7 +394,6 @@
 
 static struct cdevsw adlink_cdevsw = {
 	.d_open =	adlink_open,
-	.d_close =	nullclose,
 	.d_ioctl =	adlink_ioctl,
 	.d_mmap =	adlink_mmap,
 	.d_name =	"adlink",

==== //depot/projects/netperf/sys/dev/ata/ata-all.c#5 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.189 2003/09/08 08:30:43 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.190 2003/09/27 12:00:58 phk Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -57,8 +57,6 @@
 /* device structures */
 static	d_ioctl_t	ata_ioctl;
 static struct cdevsw ata_cdevsw = {  
-	.d_open =	nullopen,
-	.d_close =	nullclose,
 	.d_ioctl =	ata_ioctl,
 	.d_name =	"ata",
 	.d_maj =	159,

==== //depot/projects/netperf/sys/dev/isp/isp_freebsd.c#4 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.93 2003/09/15 06:41:33 markm Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.94 2003/09/27 12:00:58 phk Exp $");
 
 #include <dev/isp/isp_freebsd.h>
 #include <sys/unistd.h>
@@ -54,8 +54,6 @@
 
 #define ISP_CDEV_MAJOR	248
 static struct cdevsw isp_cdevsw = {
-	.d_open =	nullopen,
-	.d_close =	nullclose,
 	.d_ioctl =	ispioctl,
 	.d_name =	"isp",
 	.d_maj =	ISP_CDEV_MAJOR,

==== //depot/projects/netperf/sys/dev/kbd/kbd.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/kbd/kbd.c,v 1.34 2003/08/24 17:49:15 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/kbd/kbd.c,v 1.35 2003/09/27 08:29:57 phk Exp $");
 
 #include "opt_kbd.h"
 
@@ -447,20 +447,16 @@
 int
 kbd_attach(keyboard_t *kbd)
 {
-	dev_t dev;
 
 	if (kbd->kb_index >= keyboards)
 		return EINVAL;
 	if (keyboard[kbd->kb_index] != kbd)
 		return EINVAL;
 
-	dev = make_dev(&kbd_cdevsw, kbd->kb_index, UID_ROOT, GID_WHEEL, 0600,
+	kbd->kb_dev = make_dev(&kbd_cdevsw, kbd->kb_index, UID_ROOT, GID_WHEEL, 0600,
 		       "kbd%r", kbd->kb_index);
-	if (dev->si_drv1 == NULL)
-		dev->si_drv1 = malloc(sizeof(genkbd_softc_t), M_DEVBUF,
-				      M_WAITOK);
-	bzero(dev->si_drv1, sizeof(genkbd_softc_t));
-
+	kbd->kb_dev->si_drv1 = malloc(sizeof(genkbd_softc_t), M_DEVBUF,
+			      M_WAITOK | M_ZERO);
 	printf("kbd%d at %s%d\n", kbd->kb_index, kbd->kb_name, kbd->kb_unit);
 	return 0;
 }
@@ -468,17 +464,14 @@
 int
 kbd_detach(keyboard_t *kbd)
 {
-	dev_t dev;
 
 	if (kbd->kb_index >= keyboards)
 		return EINVAL;
 	if (keyboard[kbd->kb_index] != kbd)
 		return EINVAL;
 
-	dev = makedev(kbd_cdevsw.d_maj, kbd->kb_index);
-	if (dev->si_drv1)
-		free(dev->si_drv1, M_DEVBUF);
-	destroy_dev(dev);
+	free(kbd->kb_dev->si_drv1, M_DEVBUF);
+	destroy_dev(kbd->kb_dev);
 
 	return 0;
 }

==== //depot/projects/netperf/sys/dev/kbd/kbdreg.h#2 (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/kbd/kbdreg.h,v 1.15 2001/07/20 14:49:54 yokota Exp $
+ * $FreeBSD: src/sys/dev/kbd/kbdreg.h,v 1.16 2003/09/27 08:29:58 phk Exp $
  */
 
 #ifndef _DEV_KBD_KBDREG_H_
@@ -90,6 +90,7 @@
 #define KB_DELAY2	100
 	unsigned long	kb_count;	/* # of processed key strokes */
 	u_char		kb_lastact[NUM_KEYS/2];
+	dev_t		kb_dev;
 };
 
 #define KBD_IS_VALID(k)		((k)->kb_flags & KB_VALID)

==== //depot/projects/netperf/sys/dev/md/md.c#5 (text+ko) ====

@@ -6,7 +6,7 @@
  * this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
  * ----------------------------------------------------------------------------
  *
- * $FreeBSD: src/sys/dev/md/md.c,v 1.105 2003/08/07 15:04:25 jhb Exp $
+ * $FreeBSD: src/sys/dev/md/md.c,v 1.106 2003/09/27 12:00:59 phk Exp $
  *
  */
 
@@ -116,8 +116,6 @@
 static d_ioctl_t mdctlioctl;
 
 static struct cdevsw mdctl_cdevsw = {
-	.d_open =	nullopen,
-	.d_close =	nullclose,
 	.d_ioctl =	mdctlioctl,
 	.d_name =	MD_NAME,
 	.d_maj =	CDEV_MAJOR

==== //depot/projects/netperf/sys/dev/mii/brgphy.c#5 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mii/brgphy.c,v 1.26 2003/08/24 17:54:10 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mii/brgphy.c,v 1.27 2003/09/28 04:16:16 ps Exp $");
 
 /*
  * Driver for the Broadcom BCR5400 1000baseTX PHY. Speed is always
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mii/brgphy.c,v 1.26 2003/08/24 17:54:10 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mii/brgphy.c,v 1.27 2003/09/28 04:16:16 ps Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -622,7 +622,7 @@
 	/* Enable Ethernet@WireSpeed. */
 	PHY_WRITE(sc, BRGPHY_MII_AUXCTL, 0x7007);
 	val = PHY_READ(sc, BRGPHY_MII_AUXCTL);
-	PHY_WRITE(sc, BRGPHY_MII_AUXCTL, val | (1 << 15) || (1 << 4));
+	PHY_WRITE(sc, BRGPHY_MII_AUXCTL, val | (1 << 15) | (1 << 4));
 
 	/* Enable Link LED on Dell boxes */
 	if (bge_sc->bge_no_3_led) {

==== //depot/projects/netperf/sys/dev/nmdm/nmdm.c#3 (text+ko) ====

@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.15 2003/08/24 17:54:13 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.16 2003/09/28 20:48:12 phk Exp $");
 
 /*
  * Pseudo-nulmodem driver
@@ -604,8 +604,8 @@
 		nextdev2 = makedev(CDEV_MAJOR, (i+i) + 1);
 		ptr1 = nextdev1->si_drv1;
 		if (ptr1) {
-			revoke_and_destroy_dev(nextdev1);
-			revoke_and_destroy_dev(nextdev2);
+			destroy_dev(nextdev1);
+			destroy_dev(nextdev2);
 			free(ptr1, M_NLMDM);
 		} else {
 			freedev(nextdev1);

==== //depot/projects/netperf/sys/dev/null/null.c#3 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/null/null.c,v 1.19 2003/08/24 17:54:14 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/null/null.c,v 1.21 2003/09/27 12:27:23 phk Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -53,8 +53,6 @@
 #define ZERO_MINOR	12
 
 static struct cdevsw null_cdevsw = {
-	.d_open =	nullopen,
-	.d_close =	nullclose,
 	.d_read =	null_read,
 	.d_write =	null_write,
 	.d_ioctl =	null_ioctl,
@@ -64,8 +62,6 @@
 };
 
 static struct cdevsw zero_cdevsw = {
-	.d_open =	nullopen,
-	.d_close =	nullclose,
 	.d_read =	zero_read,
 	.d_write =	null_write,
 	.d_name =	"zero",
@@ -96,7 +92,7 @@
 	int error;
 
 	if (cmd != DIOCSKERNELDUMP)
-		return (noioctl(dev, cmd, data, flags, td));
+		return (ENOIOCTL);
 	error = suser(td);
 	if (error)
 		return (error);

==== //depot/projects/netperf/sys/dev/ofw/ofw_console.c#4 (text+ko) ====

@@ -24,10 +24,10 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ofw/ofw_console.c,v 1.14 2003/09/26 10:55:07 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ofw/ofw_console.c,v 1.17 2003/09/28 06:51:47 jake Exp $");
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ofw/ofw_console.c,v 1.14 2003/09/26 10:55:07 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ofw/ofw_console.c,v 1.17 2003/09/28 06:51:47 jake Exp $");
 
 #include "opt_ddb.h"
 #include "opt_comconsole.h"
@@ -92,15 +92,17 @@
 {
 	phandle_t options;
 	char output[32];
+	dev_t dev;
 
-	if (ofw_consdev.cn_dev != NULL) {
+	if (ofw_consdev.cn_pri != CN_DEAD &&
+	    ofw_consdev.cn_name[0] != '\0') {
 		if ((options = OF_finddevice("/options")) == -1 ||
 		    OF_getprop(options, "output-device", output,
 		    sizeof(output)) == -1)
 			return;
-		make_dev(&ofw_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "%s",
+		dev = make_dev(&ofw_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "%s",

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309302111.h8ULBApm024338>