PERFORCE change 167614 for review
Alexander Motin
mav at FreeBSD.org
Sat Aug 22 14:36:16 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=167614
Change 167614 by mav at mav_mavbook on 2009/08/22 14:35:45
IFC
Affected files ...
.. //depot/projects/scottl-camlock/src/share/man/man9/sglist.9#2 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/amd64/machdep.c#27 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/aac/aac.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_battery.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_cpu.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_dock.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_thermal.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/adb/adb_bus.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/amdtemp/amdtemp.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/amr/amr.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#23 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/atkbdc/psm.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/bktr/bktr_os.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/drm/drm_drv.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hptrr/hptrr_osm_bsd.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ips/ips_pci.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi.c#19 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mlx/mlx.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mmc/mmc.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/pccbb/pccbb.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/pst/pst-iop.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/rp/rp.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/hda/hdac.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/twe/twe.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/controller/usb_controller.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/input/ukbd.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/net/usb_ethernet.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_compat_linux.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_dev.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_handle_request.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/usb_hub.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_upgt.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/xen/blkback/blkback.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/xen/netback/netback.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/acpica/acpi_machdep.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/bios/smapi.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/bios/smbios.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/bios/vpd.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/machdep.c#25 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/subr_bus.c#29 integrate
.. //depot/projects/scottl-camlock/src/sys/kern/subr_sglist.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/net/flowtable.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ip_fw.h#16 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw2.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw_pfil.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/netinet/tcp_timewait.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/pc98/cbus/fdc.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/bus.h#15 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/sglist.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/xen/xenbus/xenbus_probe.c#3 integrate
.. //depot/projects/scottl-camlock/src/tools/tools/vimage/Makefile#3 integrate
.. //depot/projects/scottl-camlock/src/tools/tools/vimage/vimage.8#2 integrate
.. //depot/projects/scottl-camlock/src/tools/tools/vimage/vimage.c#3 integrate
Differences ...
==== //depot/projects/scottl-camlock/src/share/man/man9/sglist.9#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/share/man/man9/sglist.9,v 1.1 2009/06/01 20:35:53 jhb Exp $
+.\" $FreeBSD: src/share/man/man9/sglist.9,v 1.3 2009/08/21 02:59:07 jhb Exp $
.\"
.Dd May 15, 2009
.Dt SGLIST 9
@@ -70,7 +70,7 @@
.Ft struct sglist *
.Fn sglist_clone "struct sglist *sg" "int mflags"
.Ft int
-.Fn sglist_consume_uio "struct sglist *sg" "struct uio *uio" "int resid"
+.Fn sglist_consume_uio "struct sglist *sg" "struct uio *uio" "size_t resid"
.Ft int
.Fn sglist_count "void *buf" "size_t len"
.Ft void
@@ -191,6 +191,8 @@
family of routines can be used to append the physical address ranges described
by an object to the end of a scatter/gather list.
All of these routines return 0 on success or an error on failure.
+If a request to append an address range to a scatter/gather list fails,
+the scatter/gather list will remain unchanged.
.Pp
The
.Nm sglist_append
@@ -445,6 +447,7 @@
to append the physical address ranges from
.Fa second .
.El
+.Pp
The
.Nm sglist_slice
function returns the following errors on failure:
@@ -470,6 +473,7 @@
.Fa *slice
to describe the requested physical address ranges.
.El
+.Pp
The
.Nm sglist_split
function returns the following errors on failure:
==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/machdep.c#27 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.708 2009/08/19 20:39:33 ed Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.709 2009/08/20 22:58:05 jkim Exp $");
#include "opt_atalk.h"
#include "opt_atpic.h"
@@ -236,19 +236,21 @@
#ifdef PERFMON
perfmon_init();
#endif
+ realmem = Maxmem;
+
+ /*
+ * Display physical memory if SMBIOS reports reasonable amount.
+ */
+ memsize = 0;
sysenv = getenv("smbios.memory.enabled");
if (sysenv != NULL) {
- memsize = (uintmax_t)strtoul(sysenv, (char **)NULL, 10);
+ memsize = (uintmax_t)strtoul(sysenv, (char **)NULL, 10) << 10;
freeenv(sysenv);
- } else
- memsize = 0;
- if (memsize > 0)
- printf("real memory = %ju (%ju MB)\n", memsize << 10,
- memsize >> 10);
- else
- printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)Maxmem),
- ptoa((uintmax_t)Maxmem) / 1048576);
- realmem = Maxmem;
+ }
+ if (memsize < ptoa((uintmax_t)cnt.v_free_count))
+ memsize = ptoa((uintmax_t)Maxmem);
+ printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
+
/*
* Display any holes after the first chunk of extended memory.
*/
==== //depot/projects/scottl-camlock/src/sys/dev/aac/aac.c#12 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.143 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/aac/aac.c,v 1.144 2009/08/20 19:17:53 jhb Exp $");
/*
* Driver for the Adaptec 'FSA' family of PCI/SCSI RAID adapters.
@@ -3270,10 +3270,10 @@
while (co != NULL) {
if (co->co_found == 0) {
mtx_unlock(&sc->aac_io_lock);
- newbus_xlock();
+ mtx_lock(&Giant);
device_delete_child(sc->aac_dev,
co->co_disk);
- newbus_xunlock();
+ mtx_unlock(&Giant);
mtx_lock(&sc->aac_io_lock);
co_next = TAILQ_NEXT(co, co_link);
mtx_lock(&sc->aac_container_lock);
@@ -3291,9 +3291,9 @@
/* Attach the newly created containers */
if (added) {
mtx_unlock(&sc->aac_io_lock);
- newbus_xlock();
+ mtx_lock(&Giant);
bus_generic_attach(sc->aac_dev);
- newbus_xunlock();
+ mtx_unlock(&Giant);
mtx_lock(&sc->aac_io_lock);
}
==== //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi.c#22 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.265 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.266 2009/08/20 19:17:53 jhb Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -675,6 +675,8 @@
device_t child, *devlist;
int error, i, numdevs, pstate;
+ GIANT_REQUIRED;
+
/* First give child devices a chance to suspend. */
error = bus_generic_suspend(dev);
if (error)
@@ -717,6 +719,8 @@
int i, numdevs, error;
device_t child, *devlist;
+ GIANT_REQUIRED;
+
/*
* Put all devices in D0 before resuming them. Call _S0D on each one
* since some systems expect this.
@@ -741,6 +745,8 @@
acpi_shutdown(device_t dev)
{
+ GIANT_REQUIRED;
+
/* Allow children to shutdown first. */
bus_generic_shutdown(dev);
@@ -2528,7 +2534,11 @@
thread_unlock(curthread);
#endif
- newbus_xlock();
+ /*
+ * Be sure to hold Giant across DEVICE_SUSPEND/RESUME since non-MPSAFE
+ * drivers need this.
+ */
+ mtx_lock(&Giant);
slp_state = ACPI_SS_NONE;
@@ -2601,7 +2611,7 @@
if (slp_state >= ACPI_SS_SLEPT)
acpi_enable_fixed_events(sc);
- newbus_xunlock();
+ mtx_unlock(&Giant);
#ifdef SMP
thread_lock(curthread);
==== //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_battery.c#12 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_battery.c,v 1.29 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_battery.c,v 1.30 2009/08/20 19:17:53 jhb Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -329,7 +329,6 @@
dev = NULL;
found_unit = 0;
- newbus_slock();
batt_dc = devclass_find("battery");
maxunit = devclass_get_maxunit(batt_dc);
for (i = 0; i < maxunit; i++) {
@@ -341,7 +340,6 @@
found_unit++;
dev = NULL;
}
- newbus_sunlock();
return (dev);
}
@@ -371,17 +369,13 @@
*/
switch (cmd) {
case ACPIIO_BATT_GET_UNITS:
- newbus_slock();
*(int *)addr = acpi_battery_get_units();
- newbus_sunlock();
error = 0;
break;
case ACPIIO_BATT_GET_BATTINFO:
if (dev != NULL || unit == ACPI_BATTERY_ALL_UNITS) {
bzero(&ioctl_arg->battinfo, sizeof(ioctl_arg->battinfo));
- newbus_slock();
error = acpi_battery_get_battinfo(dev, &ioctl_arg->battinfo);
- newbus_sunlock();
}
break;
case ACPIIO_BATT_GET_BIF:
@@ -422,11 +416,6 @@
{
int val, error;
- /*
- * Tolerate a race here because newbus lock can't be acquired before
- * acpi_battery_get_battinfo() as it can create a LOR with the sysctl
- * lock.
- */
acpi_battery_get_battinfo(NULL, &acpi_battery_battinfo);
val = *(u_int *)oidp->oid_arg1;
error = sysctl_handle_int(oidp, &val, 0, req);
@@ -438,10 +427,6 @@
{
int count, error;
- /*
- * Tolerate a race here in order to avoid a LOR between sysctl lock
- * and newbus lock.
- */
count = acpi_battery_get_units();
error = sysctl_handle_int(oidp, &count, 0, req);
return (error);
==== //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_cpu.c#15 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.79 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.80 2009/08/20 19:17:53 jhb Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -732,9 +732,7 @@
int i;
/* Get set of CPU devices */
- newbus_slock();
devclass_get_devices(acpi_cpu_devclass, &cpu_devices, &cpu_ndevices);
- newbus_sunlock();
/*
* Setup any quirks that might necessary now that we have probed
==== //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_dock.c#8 (text) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi_dock.c,v 1.8 2009/08/02 14:28:40 attilio Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi_dock.c,v 1.9 2009/08/20 19:17:53 jhb Exp $
*/
#include "opt_acpi.h"
@@ -188,12 +188,12 @@
dev = (device_t)context;
- newbus_xlock();
if (!device_is_enabled(dev))
device_enable(dev);
+ mtx_lock(&Giant);
device_probe_and_attach(dev);
- newbus_xunlock();
+ mtx_unlock(&Giant);
}
static ACPI_STATUS
@@ -299,11 +299,11 @@
"ejecting device for %s\n", acpi_name(handle));
dev = acpi_get_device(handle);
- newbus_xlock();
if (dev != NULL && device_is_attached(dev)) {
+ mtx_lock(&Giant);
device_detach(dev);
+ mtx_unlock(&Giant);
}
- newbus_xunlock();
acpi_SetInteger(handle, "_EJ0", 0);
out:
==== //depot/projects/scottl-camlock/src/sys/dev/acpica/acpi_thermal.c#13 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.72 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.73 2009/08/20 19:17:53 jhb Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -936,8 +936,6 @@
sc = NULL;
for (;;) {
- newbus_slock();
-
/* If the number of devices has changed, re-evaluate. */
if (devclass_get_count(acpi_tz_devclass) != devcount) {
if (devs != NULL) {
@@ -950,7 +948,6 @@
for (i = 0; i < devcount; i++)
sc[i] = device_get_softc(devs[i]);
}
- newbus_sunlock();
/* Check for temperature events and act on them. */
for (i = 0; i < devcount; i++) {
==== //depot/projects/scottl-camlock/src/sys/dev/adb/adb_bus.c#3 (text+ko) ====
@@ -22,7 +22,7 @@
* 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/adb/adb_bus.c,v 1.5 2009/08/02 14:28:40 attilio Exp $
+ * $FreeBSD: src/sys/dev/adb/adb_bus.c,v 1.6 2009/08/20 19:17:53 jhb Exp $
*/
#include <sys/cdefs.h>
@@ -113,7 +113,6 @@
uint8_t i, next_free;
uint16_t r3;
- newbus_xlock();
sc->sc_dev = dev;
sc->parent = device_get_parent(dev);
@@ -188,7 +187,6 @@
}
bus_generic_attach(dev);
- newbus_xunlock();
config_intrhook_disestablish(&sc->enum_hook);
}
==== //depot/projects/scottl-camlock/src/sys/dev/amdtemp/amdtemp.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/amdtemp/amdtemp.c,v 1.4 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/amdtemp/amdtemp.c,v 1.5 2009/08/20 19:17:53 jhb Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -269,7 +269,6 @@
/*
* dev.cpu.N.temperature.
*/
- newbus_xlock();
nexus = device_find_child(root_bus, "nexus", 0);
acpi = device_find_child(nexus, "acpi", 0);
@@ -286,7 +285,6 @@
"Max of sensor 0 / 1");
}
}
- newbus_xunlock();
config_intrhook_disestablish(&sc->sc_ich);
}
==== //depot/projects/scottl-camlock/src/sys/dev/amr/amr.c#15 (text+ko) ====
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/amr/amr.c,v 1.90 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/amr/amr.c,v 1.91 2009/08/20 19:17:53 jhb Exp $");
/*
* Driver for the AMI MegaRaid family of controllers.
@@ -90,10 +90,6 @@
SYSCTL_NODE(_hw, OID_AUTO, amr, CTLFLAG_RD, 0, "AMR driver parameters");
-/*
- * In order to get rid of Giant, amr_state should be protected by
- * a proper softc lock for the cdev operations.
- */
static d_open_t amr_open;
static d_close_t amr_close;
static d_ioctl_t amr_ioctl;
@@ -316,11 +312,9 @@
config_intrhook_disestablish(&sc->amr_ich);
sc->amr_ich.ich_func = NULL;
- newbus_xlock();
/* get up-to-date drive information */
if (amr_query_controller(sc)) {
device_printf(sc->amr_dev, "can't scan controller for drives\n");
- newbus_xunlock();
return;
}
@@ -353,7 +347,6 @@
/* interrupts will be enabled before we do anything more */
sc->amr_state |= AMR_STATE_INTEN;
- newbus_xunlock();
/*
* Start the timeout routine.
@@ -441,12 +434,8 @@
amr_open(struct cdev *dev, int flags, int fmt, struct thread *td)
{
int unit = dev2unit(dev);
- struct amr_softc *sc;
+ struct amr_softc *sc = devclass_get_softc(devclass_find("amr"), unit);
- newbus_slock();
- sc = devclass_get_softc(devclass_find("amr"), unit);
- newbus_sunlock();
-
debug_called(1);
sc->amr_state |= AMR_STATE_OPEN;
@@ -501,11 +490,7 @@
amr_close(struct cdev *dev, int flags, int fmt, struct thread *td)
{
int unit = dev2unit(dev);
- struct amr_softc *sc;
-
- newbus_slock();
- sc = devclass_get_softc(devclass_find("amr"), unit);
- newbus_sunlock();
+ struct amr_softc *sc = devclass_get_softc(devclass_find("amr"), unit);
debug_called(1);
@@ -522,7 +507,6 @@
struct amr_softc *sc = (struct amr_softc *)dev->si_drv1;
int i, error = 0;
- newbus_xlock();
sc->amr_state |= AMR_STATE_REMAP_LD;
while (sc->amr_busyslots) {
device_printf(sc->amr_dev, "idle controller\n");
@@ -546,7 +530,6 @@
sc->amr_drive[i].al_disk = 0;
}
}
- newbus_xunlock();
shutdown_out:
amr_startup(sc);
@@ -822,9 +805,7 @@
struct amr_linux_ioctl ali;
int adapter, error;
- newbus_slock();
devclass = devclass_find("amr");
- newbus_sunlock();
if (devclass == NULL)
return (ENOENT);
==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#23 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.308 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-all.c,v 1.309 2009/08/20 19:17:53 jhb Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -63,6 +63,7 @@
static d_ioctl_t ata_ioctl;
static struct cdevsw ata_cdevsw = {
.d_version = D_VERSION,
+ .d_flags = D_NEEDGIANT, /* we need this as newbus isn't mpsafe */
.d_ioctl = ata_ioctl,
.d_name = "ata",
};
@@ -276,9 +277,7 @@
{
device_t dev = (device_t)context;
- newbus_xlock();
ata_reinit(dev);
- newbus_xunlock();
}
int
@@ -320,6 +319,7 @@
/* reinit the children and delete any that fails */
if (!device_get_children(dev, &children, &nchildren)) {
+ mtx_lock(&Giant); /* newbus suckage it needs Giant */
for (i = 0; i < nchildren; i++) {
/* did any children go missing ? */
if (children[i] && device_is_attached(children[i]) &&
@@ -342,6 +342,7 @@
}
}
free(children, M_TEMP);
+ mtx_unlock(&Giant); /* newbus suckage dealt with, release Giant */
}
/* if we still have a good request put it on the queue again */
@@ -472,7 +473,6 @@
int *value = (int *)data;
int i, nchildren, error = ENOTTY;
- newbus_xlock();
switch (cmd) {
case IOCATAGMAXCHANNEL:
/* In case we have channel 0..n this will return n+1. */
@@ -483,40 +483,32 @@
case IOCATAREINIT:
if (*value >= devclass_get_maxunit(ata_devclass) ||
!(device = devclass_get_device(ata_devclass, *value)) ||
- !device_is_attached(device)) {
- newbus_xunlock();
+ !device_is_attached(device))
return ENXIO;
- }
error = ata_reinit(device);
break;
case IOCATAATTACH:
if (*value >= devclass_get_maxunit(ata_devclass) ||
!(device = devclass_get_device(ata_devclass, *value)) ||
- !device_is_attached(device)) {
- newbus_xunlock();
+ !device_is_attached(device))
return ENXIO;
- }
error = DEVICE_ATTACH(device);
break;
case IOCATADETACH:
if (*value >= devclass_get_maxunit(ata_devclass) ||
!(device = devclass_get_device(ata_devclass, *value)) ||
- !device_is_attached(device)) {
- newbus_xunlock();
+ !device_is_attached(device))
return ENXIO;
- }
error = DEVICE_DETACH(device);
break;
case IOCATADEVICES:
if (devices->channel >= devclass_get_maxunit(ata_devclass) ||
!(device = devclass_get_device(ata_devclass, devices->channel)) ||
- !device_is_attached(device)) {
- newbus_xunlock();
+ !device_is_attached(device))
return ENXIO;
- }
bzero(devices->name[0], 32);
bzero(&devices->params[0], sizeof(struct ata_params));
bzero(devices->name[1], 32);
@@ -551,7 +543,6 @@
if (ata_raid_ioctl_func)
error = ata_raid_ioctl_func(cmd, data);
}
- newbus_xunlock();
return error;
}
@@ -660,7 +651,7 @@
struct ata_channel *ch;
int ctlr;
- newbus_xlock();
+ mtx_lock(&Giant); /* newbus suckage it needs Giant */
/* kick of probe and attach on all channels */
for (ctlr = 0; ctlr < devclass_get_maxunit(ata_devclass); ctlr++) {
@@ -675,7 +666,8 @@
free(ata_delayed_attach, M_TEMP);
ata_delayed_attach = NULL;
}
- newbus_xunlock();
+
+ mtx_unlock(&Giant); /* newbus suckage dealt with, release Giant */
}
#endif
@@ -804,6 +796,7 @@
if (bootverbose)
device_printf(dev, "Identifying devices: %08x\n", ch->devices);
+ mtx_lock(&Giant);
/* Skip existing devices. */
if (!device_get_children(dev, &children, &nchildren)) {
for (i = 0; i < nchildren; i++) {
@@ -815,8 +808,10 @@
/* Create new devices. */
if (bootverbose)
device_printf(dev, "New devices: %08x\n", n);
- if (n == 0)
+ if (n == 0) {
+ mtx_unlock(&Giant);
return (0);
+ }
for (i = 0; i < ATA_PM; ++i) {
if (n & (((ATA_ATA_MASTER | ATA_ATAPI_MASTER) << i))) {
int unit = -1;
@@ -859,6 +854,7 @@
}
bus_generic_probe(dev);
bus_generic_attach(dev);
+ mtx_unlock(&Giant);
return 0;
}
==== //depot/projects/scottl-camlock/src/sys/dev/atkbdc/psm.c#11 (text+ko) ====
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/atkbdc/psm.c,v 1.104 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/atkbdc/psm.c,v 1.105 2009/08/20 19:17:53 jhb Exp $");
#include "opt_isa.h"
#include "opt_psm.h"
@@ -1488,9 +1488,7 @@
if (sc->state & PSM_OPEN)
return (EBUSY);
- newbus_xlock();
device_busy(devclass_get_device(psm_devclass, unit));
- newbus_xunlock();
/* Initialize state */
sc->mode.level = sc->dflt_mode.level;
@@ -1645,9 +1643,7 @@
/* close is almost always successful */
sc->state &= ~PSM_OPEN;
kbdc_lock(sc->kbdc, FALSE);
- newbus_xlock();
device_unbusy(devclass_get_device(psm_devclass, unit));
- newbus_xunlock();
return (0);
}
==== //depot/projects/scottl-camlock/src/sys/dev/bktr/bktr_os.c#11 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bktr/bktr_os.c,v 1.58 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bktr/bktr_os.c,v 1.59 2009/08/20 19:17:53 jhb Exp $");
/*
* This is part of the Driver for Video Capture Cards (Frame grabbers)
@@ -597,9 +597,7 @@
return( ENXIO );
/* Record that the device is now busy */
- newbus_xlock();
device_busy(devclass_get_device(bktr_devclass, unit));
- newbus_xunlock();
if (bt848_card != -1) {
@@ -670,11 +668,8 @@
}
/* If there was an error opening the device, undo the busy status */
- if (result != 0) {
- newbus_xlock();
+ if (result != 0)
device_unbusy(devclass_get_device(bktr_devclass, unit));
- newbus_xunlock();
- }
return( result );
}
@@ -694,7 +689,6 @@
/* Get the device data */
bktr = (struct bktr_softc*)devclass_get_softc(bktr_devclass, unit);
if (bktr == NULL) {
-
/* the device is no longer valid/functioning */
return (ENXIO);
}
@@ -711,11 +705,10 @@
break;
default:
return (ENXIO);
+ break;
}
- newbus_xlock();
device_unbusy(devclass_get_device(bktr_devclass, unit));
- newbus_xunlock();
return( result );
}
==== //depot/projects/scottl-camlock/src/sys/dev/drm/drm_drv.c#9 (text+ko) ====
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drv.c,v 1.28 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drv.c,v 1.29 2009/08/20 19:17:53 jhb Exp $");
/** @file drm_drv.c
* The catch-all file for DRM device support, including module setup/teardown,
@@ -614,13 +614,11 @@
if (!retcode) {
atomic_inc(&dev->counts[_DRM_STAT_OPENS]);
- newbus_xlock();
DRM_LOCK();
device_busy(dev->device);
if (!dev->open_count++)
retcode = drm_firstopen(dev);
DRM_UNLOCK();
- newbus_xunlock();
}
return retcode;
@@ -634,11 +632,6 @@
DRM_DEBUG("open_count = %d\n", dev->open_count);
- /*
- * We require to lock newbus here for handling device_unbusy() and
- * avoid a LOR with DRM_LOCK.
- */
- newbus_xlock();
DRM_LOCK();
if (dev->driver->preclose != NULL)
@@ -715,7 +708,6 @@
}
DRM_UNLOCK();
- newbus_xunlock();
}
/* drm_ioctl is called whenever a process performs an ioctl on /dev/drm.
==== //depot/projects/scottl-camlock/src/sys/dev/hptrr/hptrr_osm_bsd.c#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/hptrr/hptrr_osm_bsd.c,v 1.4 2008/03/08 18:06:48 scottl Exp $
+ * $FreeBSD: src/sys/dev/hptrr/hptrr_osm_bsd.c,v 1.5 2009/08/21 01:00:15 kensmith Exp $
*/
#include <dev/hptrr/hptrr_config.h>
/* $Id: osm_bsd.c,v 1.27 2007/11/22 07:35:49 gmm Exp $
@@ -814,6 +814,10 @@
strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
strncpy(cpi->hba_vid, "HPT ", HBA_IDLEN);
strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
+ cpi->transport = XPORT_SPI;
+ cpi->transport_version = 2;
+ cpi->protocol = PROTO_SCSI;
+ cpi->protocol_version = SCSI_REV_2;
cpi->ccb_h.status = CAM_REQ_CMP;
break;
}
==== //depot/projects/scottl-camlock/src/sys/dev/ips/ips_pci.c#7 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ips/ips_pci.c,v 1.16 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ips/ips_pci.c,v 1.17 2009/08/20 19:17:53 jhb Exp $");
#include <dev/ips/ipsreg.h>
#include <dev/ips/ips.h>
@@ -173,12 +173,10 @@
struct ips_softc *sc = (struct ips_softc *)arg;
config_intrhook_disestablish(&sc->ips_ich);
- newbus_xlock();
if (ips_adapter_init(sc))
ips_pci_free(sc);
else
sc->configured = 1;
- newbus_xunlock();
}
static int ips_pci_free(ips_softc_t *sc)
==== //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi.c#19 (text) ====
@@ -51,7 +51,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.51 2009/08/02 14:28:40 attilio Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.52 2009/08/20 19:17:53 jhb Exp $");
#include "opt_mfi.h"
@@ -1327,11 +1327,11 @@
mfi_release_command(cm);
mtx_unlock(&sc->mfi_io_lock);
- newbus_xlock();
+ mtx_lock(&Giant);
if ((child = device_add_child(sc->mfi_dev, "mfid", -1)) == NULL) {
device_printf(sc->mfi_dev, "Failed to add logical disk\n");
free(ld_info, M_MFIBUF);
- newbus_xunlock();
+ mtx_unlock(&Giant);
mtx_lock(&sc->mfi_io_lock);
return;
}
@@ -1339,7 +1339,7 @@
device_set_ivars(child, ld_info);
device_set_desc(child, "MFI Logical Disk");
bus_generic_attach(sc->mfi_dev);
- newbus_xunlock();
+ mtx_unlock(&Giant);
mtx_lock(&sc->mfi_io_lock);
}
@@ -1805,9 +1805,9 @@
KASSERT(ld != NULL, ("volume dissappeared"));
if (cm->cm_frame->header.cmd_status == MFI_STAT_OK) {
mtx_unlock(&sc->mfi_io_lock);
- newbus_xlock();
+ mtx_lock(&Giant);
device_delete_child(sc->mfi_dev, ld->ld_dev);
- newbus_xunlock();
+ mtx_unlock(&Giant);
mtx_lock(&sc->mfi_io_lock);
} else
mfi_disk_enable(ld);
@@ -1815,11 +1815,11 @@
case MFI_DCMD_CFG_CLEAR:
if (cm->cm_frame->header.cmd_status == MFI_STAT_OK) {
mtx_unlock(&sc->mfi_io_lock);
- newbus_xlock();
+ mtx_lock(&Giant);
TAILQ_FOREACH_SAFE(ld, &sc->mfi_ld_tqh, ld_link, ldn) {
device_delete_child(sc->mfi_dev, ld->ld_dev);
}
- newbus_xunlock();
+ mtx_unlock(&Giant);
mtx_lock(&sc->mfi_io_lock);
} else {
TAILQ_FOREACH(ld, &sc->mfi_ld_tqh, ld_link)
@@ -1985,9 +1985,7 @@
adapter = ioc->mfi_adapter_no;
if (device_get_unit(sc->mfi_dev) == 0 && adapter != 0) {
- newbus_slock();
devclass = devclass_find("mfi");
- newbus_sunlock();
sc = devclass_get_softc(devclass, adapter);
}
mtx_lock(&sc->mfi_io_lock);
@@ -2175,9 +2173,7 @@
struct mfi_linux_ioc_packet l_ioc;
int adapter;
- newbus_slock();
devclass = devclass_find("mfi");
- newbus_sunlock();
if (devclass == NULL)
return (ENOENT);
@@ -2198,9 +2194,7 @@
struct mfi_linux_ioc_aen l_aen;
int adapter;
- newbus_slock();
devclass = devclass_find("mfi");
- newbus_sunlock();
if (devclass == NULL)
return (ENOENT);
==== //depot/projects/scottl-camlock/src/sys/dev/mlx/mlx.c#10 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/mlx/mlx.c,v 1.59 2009/08/02 14:28:40 attilio Exp $
+ * $FreeBSD: src/sys/dev/mlx/mlx.c,v 1.60 2009/08/20 19:17:53 jhb Exp $
*/
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list