PERFORCE change 168280 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Mon Sep 7 15:56:27 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=168280
Change 168280 by hselasky at hselasky_laptop001 on 2009/09/07 15:55:49
IFC @ 168278
Affected files ...
.. //depot/projects/usb/src/sys/amd64/amd64/elf_machdep.c#8 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/local_apic.c#20 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#29 integrate
.. //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#11 integrate
.. //depot/projects/usb/src/sys/arm/conf/CAMBRIA#9 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_all.c#2 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_all.h#2 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_da.c#3 integrate
.. //depot/projects/usb/src/sys/cam/ata/ata_xpt.c#3 integrate
.. //depot/projects/usb/src/sys/cam/cam_xpt.c#21 integrate
.. //depot/projects/usb/src/sys/cam/cam_xpt_internal.h#2 integrate
.. //depot/projects/usb/src/sys/cam/scsi/scsi_da.c#15 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#7 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#7 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#4 integrate
.. //depot/projects/usb/src/sys/compat/ia32/ia32_sysvec.c#12 integrate
.. //depot/projects/usb/src/sys/compat/linprocfs/linprocfs.c#23 integrate
.. //depot/projects/usb/src/sys/compat/linux/linux_ioctl.c#18 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#45 integrate
.. //depot/projects/usb/src/sys/conf/files#78 integrate
.. //depot/projects/usb/src/sys/conf/files.amd64#23 integrate
.. //depot/projects/usb/src/sys/conf/files.i386#28 integrate
.. //depot/projects/usb/src/sys/conf/files.ia64#13 integrate
.. //depot/projects/usb/src/sys/conf/files.powerpc#27 integrate
.. //depot/projects/usb/src/sys/conf/files.sparc64#14 integrate
.. //depot/projects/usb/src/sys/dev/ahci/ahci.c#2 integrate
.. //depot/projects/usb/src/sys/dev/ahci/ahci.h#2 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#15 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-dma.c#10 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ath/if_ath.c#31 integrate
.. //depot/projects/usb/src/sys/dev/coretemp/coretemp.c#5 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_main.c#22 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/hwpmc_core.c#4 integrate
.. //depot/projects/usb/src/sys/dev/hwpmc/pmc_events.h#6 integrate
.. //depot/projects/usb/src/sys/dev/ixgbe/ixgbe.c#12 integrate
.. //depot/projects/usb/src/sys/dev/mwl/if_mwl.c#5 integrate
.. //depot/projects/usb/src/sys/dev/null/null.c#3 integrate
.. //depot/projects/usb/src/sys/dev/pty/pty.c#2 integrate
.. //depot/projects/usb/src/sys/dev/rp/rp_pci.c#3 integrate
.. //depot/projects/usb/src/sys/dev/siis/siis.c#2 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac.c#35 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac_private.h#7 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac_reg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/syscons/scterm-teken.c#7 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/Makefile#2 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/gensequences#2 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/sequences#4 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken.c#9 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken.h#7 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_demo.c#5 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_scs.h#2 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_stress.c#3 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_subr.h#5 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_subr_compat.h#4 delete
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_wcwidth.h#2 delete
.. //depot/projects/usb/src/sys/dev/txp/if_txp.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#31 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_zyd.c#22 integrate
.. //depot/projects/usb/src/sys/dev/xen/blkfront/blkfront.c#7 integrate
.. //depot/projects/usb/src/sys/fs/pseudofs/pseudofs_vncache.c#9 integrate
.. //depot/projects/usb/src/sys/fs/pseudofs/pseudofs_vnops.c#17 integrate
.. //depot/projects/usb/src/sys/geom/geom_disk.c#10 integrate
.. //depot/projects/usb/src/sys/geom/geom_io.c#11 integrate
.. //depot/projects/usb/src/sys/geom/mirror/g_mirror_ctl.c#4 integrate
.. //depot/projects/usb/src/sys/geom/multipath/g_multipath.c#3 integrate
.. //depot/projects/usb/src/sys/geom/stripe/g_stripe.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/elf_machdep.c#9 integrate
.. //depot/projects/usb/src/sys/i386/i386/local_apic.c#20 integrate
.. //depot/projects/usb/src/sys/i386/i386/machdep.c#22 integrate
.. //depot/projects/usb/src/sys/i386/i386/pmap.c#26 integrate
.. //depot/projects/usb/src/sys/i386/include/pcpu.h#7 integrate
.. //depot/projects/usb/src/sys/i386/include/pmap.h#14 integrate
.. //depot/projects/usb/src/sys/i386/isa/vesa.c#5 integrate
.. //depot/projects/usb/src/sys/i386/xen/locore.s#3 integrate
.. //depot/projects/usb/src/sys/i386/xen/pmap.c#13 integrate
.. //depot/projects/usb/src/sys/kern/imgact_elf.c#14 integrate
.. //depot/projects/usb/src/sys/kern/kern_conf.c#19 integrate
.. //depot/projects/usb/src/sys/kern/kern_exit.c#23 integrate
.. //depot/projects/usb/src/sys/kern/kern_fork.c#20 integrate
.. //depot/projects/usb/src/sys/kern/kern_jail.c#31 integrate
.. //depot/projects/usb/src/sys/kern/kern_kthread.c#8 integrate
.. //depot/projects/usb/src/sys/kern/kern_lock.c#18 integrate
.. //depot/projects/usb/src/sys/kern/kern_proc.c#22 integrate
.. //depot/projects/usb/src/sys/kern/kern_sx.c#18 integrate
.. //depot/projects/usb/src/sys/kern/kern_thr.c#13 integrate
.. //depot/projects/usb/src/sys/kern/kern_thread.c#16 integrate
.. //depot/projects/usb/src/sys/kern/subr_bus.c#29 integrate
.. //depot/projects/usb/src/sys/kern/subr_witness.c#21 integrate
.. //depot/projects/usb/src/sys/kern/tty_pts.c#18 integrate
.. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#29 integrate
.. //depot/projects/usb/src/sys/kern/vfs_vnops.c#22 integrate
.. //depot/projects/usb/src/sys/modules/Makefile#42 integrate
.. //depot/projects/usb/src/sys/net/flowtable.c#11 integrate
.. //depot/projects/usb/src/sys/net/if.c#40 integrate
.. //depot/projects/usb/src/sys/net/if_arp.h#2 integrate
.. //depot/projects/usb/src/sys/net/if_llatbl.c#7 integrate
.. //depot/projects/usb/src/sys/net/rtsock.c#32 integrate
.. //depot/projects/usb/src/sys/net/vnet.c#5 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211_dfs.c#5 integrate
.. //depot/projects/usb/src/sys/net80211/ieee80211_sta.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/if_ether.c#28 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#35 integrate
.. //depot/projects/usb/src/sys/netinet/ip_fastfwd.c#14 integrate
.. //depot/projects/usb/src/sys/netinet/ip_output.c#28 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_bsd_addr.c#11 integrate
.. //depot/projects/usb/src/sys/netinet6/icmp6.c#27 integrate
.. //depot/projects/usb/src/sys/netinet6/in6.c#33 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_src.c#22 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_input.c#29 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_output.c#20 integrate
.. //depot/projects/usb/src/sys/netinet6/nd6_rtr.c#23 integrate
.. //depot/projects/usb/src/sys/netipsec/ipsec.h#16 integrate
.. //depot/projects/usb/src/sys/netipsec/key.c#25 integrate
.. //depot/projects/usb/src/sys/opencrypto/cryptodev.c#8 integrate
.. //depot/projects/usb/src/sys/sys/bus.h#10 integrate
.. //depot/projects/usb/src/sys/sys/conf.h#20 integrate
.. //depot/projects/usb/src/sys/sys/imgact_elf.h#7 integrate
.. //depot/projects/usb/src/sys/sys/ioctl_compat.h#6 integrate
.. //depot/projects/usb/src/sys/sys/proc.h#22 integrate
.. //depot/projects/usb/src/sys/sys/tty.h#12 integrate
.. //depot/projects/usb/src/sys/sys/ttycom.h#6 integrate
.. //depot/projects/usb/src/sys/sys/types.h#8 integrate
.. //depot/projects/usb/src/sys/teken/Makefile#1 branch
.. //depot/projects/usb/src/sys/teken/gensequences#1 branch
.. //depot/projects/usb/src/sys/teken/sequences#1 branch
.. //depot/projects/usb/src/sys/teken/teken.c#1 branch
.. //depot/projects/usb/src/sys/teken/teken.h#1 branch
.. //depot/projects/usb/src/sys/teken/teken_demo.c#1 branch
.. //depot/projects/usb/src/sys/teken/teken_scs.h#1 branch
.. //depot/projects/usb/src/sys/teken/teken_stress.c#1 branch
.. //depot/projects/usb/src/sys/teken/teken_subr.h#1 branch
.. //depot/projects/usb/src/sys/teken/teken_subr_compat.h#1 branch
.. //depot/projects/usb/src/sys/teken/teken_wcwidth.h#1 branch
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_softdep.c#15 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_vfsops.c#20 integrate
.. //depot/projects/usb/src/sys/vm/device_pager.c#11 integrate
.. //depot/projects/usb/src/sys/vm/sg_pager.c#2 integrate
.. //depot/projects/usb/src/sys/vm/vm.h#8 integrate
.. //depot/projects/usb/src/sys/vm/vm_extern.h#10 integrate
.. //depot/projects/usb/src/sys/vm/vm_glue.c#10 integrate
Differences ...
==== //depot/projects/usb/src/sys/amd64/amd64/elf_machdep.c#8 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.31 2009/08/24 16:19:47 bz Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/elf_machdep.c,v 1.32 2009/08/30 14:38:17 bz Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -118,7 +118,7 @@
.sysvec = &elf64_freebsd_sysvec,
.interp_newpath = NULL,
.brand_note = &elf64_kfreebsd_brandnote,
- .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE
+ .flags = BI_CAN_EXEC_DYN | BI_BRAND_NOTE_MANDATORY
};
SYSINIT(kelf64, SI_SUB_EXEC, SI_ORDER_ANY,
==== //depot/projects/usb/src/sys/amd64/amd64/local_apic.c#20 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.60 2009/08/14 21:05:08 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.61 2009/09/02 00:39:59 jhb Exp $");
#include "opt_hwpmc_hooks.h"
#include "opt_kdtrace.h"
@@ -990,18 +990,21 @@
* we don't lose an interrupt delivery race.
*/
td = curthread;
- thread_lock(td);
- if (sched_is_bound(td))
- panic("apic_free_vector: Thread already bound.\n");
- sched_bind(td, apic_cpuid(apic_id));
- thread_unlock(td);
+ if (!rebooting) {
+ thread_lock(td);
+ if (sched_is_bound(td))
+ panic("apic_free_vector: Thread already bound.\n");
+ sched_bind(td, apic_cpuid(apic_id));
+ thread_unlock(td);
+ }
mtx_lock_spin(&icu_lock);
lapics[apic_id].la_ioint_irqs[vector - APIC_IO_INTS] = -1;
mtx_unlock_spin(&icu_lock);
- thread_lock(td);
- sched_unbind(td);
- thread_unlock(td);
-
+ if (!rebooting) {
+ thread_lock(td);
+ sched_unbind(td);
+ thread_unlock(td);
+ }
}
/* Map an IDT vector (APIC) to an IRQ (interrupt source). */
==== //depot/projects/usb/src/sys/amd64/amd64/pmap.c#29 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.668 2009/08/17 13:27:55 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.672 2009/09/02 16:47:10 jkim Exp $");
/*
* Manages physical address maps.
@@ -178,6 +178,8 @@
vm_offset_t kernel_vm_end = VM_MIN_KERNEL_ADDRESS;
pt_entry_t pg_nx;
+static int pat_works = 0; /* Is page attribute table sane? */
+
SYSCTL_NODE(_vm, OID_AUTO, pmap, CTLFLAG_RD, 0, "VM/pmap parameters");
static int pg_ps_enabled = 1;
@@ -590,20 +592,56 @@
pmap_init_pat(void)
{
uint64_t pat_msr;
+ char *sysenv;
+ static int pat_tested = 0;
/* Bail if this CPU doesn't implement PAT. */
if (!(cpu_feature & CPUID_PAT))
panic("no PAT??");
/*
- * Leave the indices 0-3 at the default of WB, WT, UC, and UC-.
- * Program 4 and 5 as WP and WC.
- * Leave 6 and 7 as UC and UC-.
+ * Some Apple Macs based on nVidia chipsets cannot enter ACPI mode
+ * via SMI# when we use upper 4 PAT entries for unknown reason.
*/
- pat_msr = rdmsr(MSR_PAT);
- pat_msr &= ~(PAT_MASK(4) | PAT_MASK(5));
- pat_msr |= PAT_VALUE(4, PAT_WRITE_PROTECTED) |
- PAT_VALUE(5, PAT_WRITE_COMBINING);
+ if (!pat_tested) {
+ pat_works = 1;
+ sysenv = getenv("smbios.system.product");
+ if (sysenv != NULL) {
+ if (strncmp(sysenv, "MacBook5,1", 10) == 0 ||
+ strncmp(sysenv, "MacBookPro5,5", 13) == 0 ||
+ strncmp(sysenv, "Macmini3,1", 10) == 0)
+ pat_works = 0;
+ freeenv(sysenv);
+ }
+ pat_tested = 1;
+ }
+
+ /* Initialize default PAT entries. */
+ pat_msr = PAT_VALUE(0, PAT_WRITE_BACK) |
+ PAT_VALUE(1, PAT_WRITE_THROUGH) |
+ PAT_VALUE(2, PAT_UNCACHED) |
+ PAT_VALUE(3, PAT_UNCACHEABLE) |
+ PAT_VALUE(4, PAT_WRITE_BACK) |
+ PAT_VALUE(5, PAT_WRITE_THROUGH) |
+ PAT_VALUE(6, PAT_UNCACHED) |
+ PAT_VALUE(7, PAT_UNCACHEABLE);
+
+ if (pat_works) {
+ /*
+ * Leave the indices 0-3 at the default of WB, WT, UC-, and UC.
+ * Program 4 and 5 as WP and WC.
+ * Leave 6 and 7 as UC- and UC.
+ */
+ pat_msr &= ~(PAT_MASK(4) | PAT_MASK(5));
+ pat_msr |= PAT_VALUE(4, PAT_WRITE_PROTECTED) |
+ PAT_VALUE(5, PAT_WRITE_COMBINING);
+ } else {
+ /*
+ * Just replace PAT Index 2 with WC instead of UC-.
+ */
+ pat_msr &= ~PAT_MASK(2);
+ pat_msr |= PAT_VALUE(2, PAT_WRITE_COMBINING);
+ }
wrmsr(MSR_PAT, pat_msr);
}
@@ -754,27 +792,48 @@
pat_flag = is_pde ? PG_PDE_PAT : PG_PTE_PAT;
/* Map the caching mode to a PAT index. */
- switch (mode) {
- case PAT_UNCACHEABLE:
- pat_index = 3;
- break;
- case PAT_WRITE_THROUGH:
- pat_index = 1;
- break;
- case PAT_WRITE_BACK:
- pat_index = 0;
- break;
- case PAT_UNCACHED:
- pat_index = 2;
- break;
- case PAT_WRITE_COMBINING:
- pat_index = 5;
- break;
- case PAT_WRITE_PROTECTED:
- pat_index = 4;
- break;
- default:
- panic("Unknown caching mode %d\n", mode);
+ if (pat_works) {
+ switch (mode) {
+ case PAT_UNCACHEABLE:
+ pat_index = 3;
+ break;
+ case PAT_WRITE_THROUGH:
+ pat_index = 1;
+ break;
+ case PAT_WRITE_BACK:
+ pat_index = 0;
+ break;
+ case PAT_UNCACHED:
+ pat_index = 2;
+ break;
+ case PAT_WRITE_COMBINING:
+ pat_index = 5;
+ break;
+ case PAT_WRITE_PROTECTED:
+ pat_index = 4;
+ break;
+ default:
+ panic("Unknown caching mode %d\n", mode);
+ }
+ } else {
+ switch (mode) {
+ case PAT_UNCACHED:
+ case PAT_UNCACHEABLE:
+ case PAT_WRITE_PROTECTED:
+ pat_index = 3;
+ break;
+ case PAT_WRITE_THROUGH:
+ pat_index = 1;
+ break;
+ case PAT_WRITE_BACK:
+ pat_index = 0;
+ break;
+ case PAT_WRITE_COMBINING:
+ pat_index = 2;
+ break;
+ default:
+ panic("Unknown caching mode %d\n", mode);
+ }
}
/* Map the 3-bit index value into the PAT, PCD, and PWT bits. */
@@ -943,8 +1002,8 @@
* coherence domain.
*/
mfence();
- for (; eva < sva; eva += cpu_clflush_line_size)
- clflush(eva);
+ for (; sva < eva; sva += cpu_clflush_line_size)
+ clflush(sva);
mfence();
} else {
@@ -4476,7 +4535,8 @@
if (base < DMAP_MIN_ADDRESS)
return (EINVAL);
- cache_bits_pde = cache_bits_pte = -1;
+ cache_bits_pde = pmap_cache_bits(mode, 1);
+ cache_bits_pte = pmap_cache_bits(mode, 0);
changed = FALSE;
/*
@@ -4493,8 +4553,6 @@
* memory type, then we need not demote this page. Just
* increment tmpva to the next 1GB page frame.
*/
- if (cache_bits_pde < 0)
- cache_bits_pde = pmap_cache_bits(mode, 1);
if ((*pdpe & PG_PDE_CACHE) == cache_bits_pde) {
tmpva = trunc_1gpage(tmpva) + NBPDP;
continue;
@@ -4522,8 +4580,6 @@
* memory type, then we need not demote this page. Just
* increment tmpva to the next 2MB page frame.
*/
- if (cache_bits_pde < 0)
- cache_bits_pde = pmap_cache_bits(mode, 1);
if ((*pde & PG_PDE_CACHE) == cache_bits_pde) {
tmpva = trunc_2mpage(tmpva) + NBPDR;
continue;
@@ -4557,12 +4613,9 @@
for (tmpva = base; tmpva < base + size; ) {
pdpe = pmap_pdpe(kernel_pmap, tmpva);
if (*pdpe & PG_PS) {
- if (cache_bits_pde < 0)
- cache_bits_pde = pmap_cache_bits(mode, 1);
if ((*pdpe & PG_PDE_CACHE) != cache_bits_pde) {
pmap_pde_attr(pdpe, cache_bits_pde);
- if (!changed)
- changed = TRUE;
+ changed = TRUE;
}
if (tmpva >= VM_MIN_KERNEL_ADDRESS) {
if (pa_start == pa_end) {
@@ -4588,12 +4641,9 @@
}
pde = pmap_pdpe_to_pde(pdpe, tmpva);
if (*pde & PG_PS) {
- if (cache_bits_pde < 0)
- cache_bits_pde = pmap_cache_bits(mode, 1);
if ((*pde & PG_PDE_CACHE) != cache_bits_pde) {
pmap_pde_attr(pde, cache_bits_pde);
- if (!changed)
- changed = TRUE;
+ changed = TRUE;
}
if (tmpva >= VM_MIN_KERNEL_ADDRESS) {
if (pa_start == pa_end) {
@@ -4616,13 +4666,10 @@
}
tmpva = trunc_2mpage(tmpva) + NBPDR;
} else {
- if (cache_bits_pte < 0)
- cache_bits_pte = pmap_cache_bits(mode, 0);
pte = pmap_pde_to_pte(pde, tmpva);
if ((*pte & PG_PTE_CACHE) != cache_bits_pte) {
pmap_pte_attr(pte, cache_bits_pte);
- if (!changed)
- changed = TRUE;
+ changed = TRUE;
}
if (tmpva >= VM_MIN_KERNEL_ADDRESS) {
if (pa_start == pa_end) {
==== //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#11 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.40 2009/07/20 07:53:07 raj Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.43 2009/09/01 11:41:51 kib Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -119,9 +119,6 @@
#ifdef __XSCALE__
#ifndef CPU_XSCALE_CORE3
pmap_use_minicache(td2->td_kstack, td2->td_kstack_pages * PAGE_SIZE);
- if (td2->td_altkstack)
- pmap_use_minicache(td2->td_altkstack, td2->td_altkstack_pages *
- PAGE_SIZE);
#endif
#endif
td2->td_pcb = pcb2;
==== //depot/projects/usb/src/sys/arm/conf/CAMBRIA#9 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.12 2009/07/17 18:35:45 rpaulo Exp $
+# $FreeBSD: src/sys/arm/conf/CAMBRIA,v 1.14 2009/08/27 17:55:44 sam Exp $
ident CAMBRIA
==== //depot/projects/usb/src/sys/cam/ata/ata_all.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.1 2009/07/10 08:18:08 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.2 2009/08/30 16:31:25 mav Exp $");
#include <sys/param.h>
@@ -91,7 +91,7 @@
}
void
-ata_36bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
+ata_28bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
uint32_t lba, uint8_t sector_count)
{
bzero(&ataio->cmd, sizeof(ataio->cmd));
==== //depot/projects/usb/src/sys/cam/ata/ata_all.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/cam/ata/ata_all.h,v 1.1 2009/07/10 08:18:08 scottl Exp $
+ * $FreeBSD: src/sys/cam/ata/ata_all.h,v 1.2 2009/08/30 16:31:25 mav Exp $
*/
#ifndef CAM_ATA_ALL_H
@@ -83,7 +83,7 @@
int ata_version(int ver);
void ata_print_ident(struct ata_params *ident_data);
-void ata_36bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
+void ata_28bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint8_t features,
uint32_t lba, uint8_t sector_count);
void ata_48bit_cmd(struct ccb_ataio *ataio, uint8_t cmd, uint16_t features,
uint64_t lba, uint16_t sector_count);
==== //depot/projects/usb/src/sys/cam/ata/ata_da.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.2 2009/07/17 21:48:08 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.4 2009/08/30 16:31:25 mav Exp $");
#include <sys/param.h>
@@ -287,7 +287,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
- ata_48bit_cmd(&ccb->ataio, ATA_FLUSHCACHE, 0, 0, 0);
+ ata_28bit_cmd(&ccb->ataio, ATA_FLUSHCACHE, 0, 0, 0);
cam_periph_runccb(ccb, /*error_routine*/NULL, /*cam_flags*/0,
/*sense_flags*/SF_RETRY_UA,
softc->disk->d_devstat);
@@ -411,7 +411,7 @@
ata_48bit_cmd(&ccb.ataio, ATA_WRITE_DMA48,
0, lba, count);
} else {
- ata_36bit_cmd(&ccb.ataio, ATA_WRITE_DMA,
+ ata_28bit_cmd(&ccb.ataio, ATA_WRITE_DMA,
0, lba, count);
}
xpt_polled_action(&ccb);
@@ -441,7 +441,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(&ccb.ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
- ata_48bit_cmd(&ccb.ataio, ATA_FLUSHCACHE, 0, 0, 0);
+ ata_28bit_cmd(&ccb.ataio, ATA_FLUSHCACHE, 0, 0, 0);
xpt_polled_action(&ccb);
if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP)
@@ -856,10 +856,10 @@
}
} else {
if (bp->bio_cmd == BIO_READ) {
- ata_36bit_cmd(ataio, ATA_READ_DMA,
+ ata_28bit_cmd(ataio, ATA_READ_DMA,
0, lba, count);
} else {
- ata_36bit_cmd(ataio, ATA_WRITE_DMA,
+ ata_28bit_cmd(ataio, ATA_WRITE_DMA,
0, lba, count);
}
}
@@ -878,7 +878,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
- ata_48bit_cmd(ataio, ATA_FLUSHCACHE, 0, 0, 0);
+ ata_28bit_cmd(ataio, ATA_FLUSHCACHE, 0, 0, 0);
break;
}
start_ccb->ccb_h.ccb_state = ADA_CCB_BUFFER_IO;
@@ -1126,7 +1126,7 @@
if (softc->flags & ADA_FLAG_CAN_48BIT)
ata_48bit_cmd(&ccb.ataio, ATA_FLUSHCACHE48, 0, 0, 0);
else
- ata_48bit_cmd(&ccb.ataio, ATA_FLUSHCACHE, 0, 0, 0);
+ ata_28bit_cmd(&ccb.ataio, ATA_FLUSHCACHE, 0, 0, 0);
xpt_polled_action(&ccb);
if ((ccb.ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP)
==== //depot/projects/usb/src/sys/cam/ata/ata_xpt.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.4 2009/08/18 09:27:17 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.5 2009/08/30 16:31:25 mav Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -357,9 +357,9 @@
/*dxfer_len*/sizeof(struct ata_params),
30 * 1000);
if (periph->path->device->protocol == PROTO_ATA)
- ata_36bit_cmd(ataio, ATA_ATA_IDENTIFY, 0, 0, 0);
+ ata_28bit_cmd(ataio, ATA_ATA_IDENTIFY, 0, 0, 0);
else
- ata_36bit_cmd(ataio, ATA_ATAPI_IDENTIFY, 0, 0, 0);
+ ata_28bit_cmd(ataio, ATA_ATAPI_IDENTIFY, 0, 0, 0);
break;
}
case PROBE_SETMODE:
@@ -375,7 +375,7 @@
/*data_ptr*/NULL,
/*dxfer_len*/0,
30 * 1000);
- ata_36bit_cmd(ataio, ATA_SETFEATURES, ATA_SF_SETXFER, 0,
+ ata_28bit_cmd(ataio, ATA_SETFEATURES, ATA_SF_SETXFER, 0,
ata_max_mode(ident_buf, ATA_UDMA6, ATA_UDMA6));
break;
}
==== //depot/projects/usb/src/sys/cam/cam_xpt.c#21 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.218 2009/08/18 08:46:54 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.223 2009/09/06 19:06:50 mav Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -1033,11 +1033,12 @@
* To ensure that this is printed in one piece,
* mask out CAM interrupts.
*/
- printf("%s%d at %s%d bus %d target %d lun %d\n",
+ printf("%s%d at %s%d bus %d scbus%d target %d lun %d\n",
periph->periph_name, periph->unit_number,
path->bus->sim->sim_name,
path->bus->sim->unit_number,
path->bus->sim->bus_id,
+ path->bus->path_id,
path->target->target_id,
path->device->lun_id);
printf("%s%d: ", periph->periph_name, periph->unit_number);
@@ -2471,7 +2472,7 @@
path = start_ccb->ccb_h.path;
cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb);
- if (path->device->qfrozen_cnt == 0)
+ if (path->device->ccbq.queue.qfrozen_cnt == 0)
runq = xpt_schedule_dev_sendq(path->bus, path->device);
else
runq = 0;
@@ -2930,7 +2931,7 @@
xpt_release_devq(crs->ccb_h.path, /*count*/1,
/*run_queue*/TRUE);
}
- start_ccb->crs.qfrozen_cnt = dev->qfrozen_cnt;
+ start_ccb->crs.qfrozen_cnt = dev->ccbq.queue.qfrozen_cnt;
start_ccb->ccb_h.status = CAM_REQ_CMP;
break;
}
@@ -3226,7 +3227,7 @@
* If the device has been "frozen", don't attempt
* to run it.
*/
- if (device->qfrozen_cnt > 0) {
+ if (device->ccbq.queue.qfrozen_cnt > 0) {
continue;
}
@@ -3249,7 +3250,7 @@
* the device queue until we have a slot
* available.
*/
- device->qfrozen_cnt++;
+ device->ccbq.queue.qfrozen_cnt++;
STAILQ_INSERT_TAIL(&xsoftc.highpowerq,
&work_ccb->ccb_h,
xpt_links.stqe);
@@ -3281,7 +3282,7 @@
* The client wants to freeze the queue
* after this CCB is sent.
*/
- device->qfrozen_cnt++;
+ device->ccbq.queue.qfrozen_cnt++;
}
/* In Target mode, the peripheral driver knows best... */
@@ -4030,7 +4031,7 @@
mtx_assert(path->bus->sim->mtx, MA_OWNED);
- path->device->qfrozen_cnt += count;
+ path->device->ccbq.queue.qfrozen_cnt += count;
/*
* Mark the last CCB in the queue as needing
@@ -4048,7 +4049,7 @@
ccbh = TAILQ_LAST(&path->device->ccbq.active_ccbs, ccb_hdr_tailq);
if (ccbh && ccbh->status == CAM_REQ_INPROG)
ccbh->status = CAM_REQUEUE_REQ;
- return (path->device->qfrozen_cnt);
+ return (path->device->ccbq.queue.qfrozen_cnt);
}
u_int32_t
@@ -4092,11 +4093,12 @@
int rundevq;
rundevq = 0;
- if (dev->qfrozen_cnt > 0) {
+ if (dev->ccbq.queue.qfrozen_cnt > 0) {
- count = (count > dev->qfrozen_cnt) ? dev->qfrozen_cnt : count;
- dev->qfrozen_cnt -= count;
- if (dev->qfrozen_cnt == 0) {
+ count = (count > dev->ccbq.queue.qfrozen_cnt) ?
+ dev->ccbq.queue.qfrozen_cnt : count;
+ dev->ccbq.queue.qfrozen_cnt -= count;
+ if (dev->ccbq.queue.qfrozen_cnt == 0) {
/*
* No longer need to wait for a successful
@@ -4198,12 +4200,12 @@
mtx_lock(&cam_simq_lock);
TAILQ_INSERT_TAIL(&cam_simq, sim,
links);
+ mtx_unlock(&cam_simq_lock);
sim->flags |= CAM_SIM_ON_DONEQ;
- mtx_unlock(&cam_simq_lock);
+ if ((done_ccb->ccb_h.path->periph->flags &
+ CAM_PERIPH_POLLED) == 0)
+ swi_sched(cambio_ih, 0);
}
- if ((done_ccb->ccb_h.path->periph->flags &
- CAM_PERIPH_POLLED) == 0)
- swi_sched(cambio_ih, 0);
break;
default:
panic("unknown periph type %d",
@@ -4401,15 +4403,11 @@
SLIST_INIT(&device->periphs);
device->generation = 0;
device->owner = NULL;
- device->qfrozen_cnt = 0;
device->flags = CAM_DEV_UNCONFIGURED;
device->tag_delay_count = 0;
device->tag_saved_openings = 0;
device->refcount = 1;
- if (bus->sim->flags & CAM_SIM_MPSAFE)
- callout_init_mtx(&device->callout, bus->sim->mtx, 0);
- else
- callout_init_mtx(&device->callout, &Giant, 0);
+ callout_init_mtx(&device->callout, bus->sim->mtx, 0);
/*
* Hold a reference to our parent target so it
@@ -4604,7 +4602,7 @@
CAM_TARGET_WILDCARD,
CAM_LUN_WILDCARD)) !=CAM_REQ_CMP){
printf("xptconfigfunc: xpt_create_path failed with "
- "status %#x for bus %d\n", status, bus->path_id);
+ "status %#x for scbus%d\n", status, bus->path_id);
printf("xptconfigfunc: halting bus configuration\n");
xpt_free_ccb(work_ccb);
busses_to_config--;
@@ -4615,7 +4613,7 @@
work_ccb->ccb_h.func_code = XPT_PATH_INQ;
xpt_action(work_ccb);
if (work_ccb->ccb_h.status != CAM_REQ_CMP) {
- printf("xptconfigfunc: CPI failed on bus %d "
+ printf("xptconfigfunc: CPI failed on scbus%d "
"with status %d\n", bus->path_id,
work_ccb->ccb_h.status);
xpt_finishconfig(xpt_periph, work_ccb);
@@ -4889,16 +4887,20 @@
mtx_lock(&cam_simq_lock);
TAILQ_INIT(&queue);
- TAILQ_CONCAT(&queue, &cam_simq, links);
- mtx_unlock(&cam_simq_lock);
+ while (!TAILQ_EMPTY(&cam_simq)) {
+ TAILQ_CONCAT(&queue, &cam_simq, links);
+ mtx_unlock(&cam_simq_lock);
- while ((sim = TAILQ_FIRST(&queue)) != NULL) {
- TAILQ_REMOVE(&queue, sim, links);
- CAM_SIM_LOCK(sim);
- sim->flags &= ~CAM_SIM_ON_DONEQ;
- camisr_runqueue(&sim->sim_doneq);
- CAM_SIM_UNLOCK(sim);
+ while ((sim = TAILQ_FIRST(&queue)) != NULL) {
+ TAILQ_REMOVE(&queue, sim, links);
+ CAM_SIM_LOCK(sim);
+ sim->flags &= ~CAM_SIM_ON_DONEQ;
+ camisr_runqueue(&sim->sim_doneq);
+ CAM_SIM_UNLOCK(sim);
+ }
+ mtx_lock(&cam_simq_lock);
}
+ mtx_unlock(&cam_simq_lock);
}
static void
@@ -4969,7 +4971,7 @@
xpt_start_tags(ccb_h->path);
if ((dev->ccbq.queue.entries > 0)
- && (dev->qfrozen_cnt == 0)
+ && (dev->ccbq.queue.qfrozen_cnt == 0)
&& (device_is_send_queued(dev) == 0)) {
runq = xpt_schedule_dev_sendq(ccb_h->path->bus,
dev);
==== //depot/projects/usb/src/sys/cam/cam_xpt_internal.h#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/cam/cam_xpt_internal.h,v 1.1 2009/07/10 08:18:08 scottl Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt_internal.h,v 1.2 2009/09/06 19:06:50 mav Exp $
*/
#ifndef _CAM_CAM_XPT_INTERNAL_H
@@ -106,7 +106,6 @@
u_int8_t queue_flags; /* Queue flags from the control page */
u_int8_t serial_num_len;
u_int8_t *serial_num;
- u_int32_t qfrozen_cnt;
u_int32_t flags;
#define CAM_DEV_UNCONFIGURED 0x01
#define CAM_DEV_REL_TIMEOUT_PENDING 0x02
==== //depot/projects/usb/src/sys/cam/scsi/scsi_da.c#15 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.236 2009/07/10 08:18:08 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.238 2009/09/04 09:40:59 pjd Exp $");
#include <sys/param.h>
@@ -554,6 +554,14 @@
{
{T_DIRECT, SIP_MEDIA_REMOVABLE, "Netac", "OnlyDisk*",
"2000"}, /*quirks*/ DA_Q_NO_SYNC_CACHE
+ },
+ {
+ /*
+ * Sony Cyber-Shot DSC cameras
+ * PR: usb/137035
+ */
+ {T_DIRECT, SIP_MEDIA_REMOVABLE, "Sony", "Sony DSC", "*"},
+ /*quirks*/ DA_Q_NO_SYNC_CACHE | DA_Q_NO_PREVENT
}
};
@@ -1258,6 +1266,8 @@
softc->disk->d_flags = 0;
if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0)
softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE;
+ strlcpy(softc->disk->d_ident, cgd->serial_num,
+ MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1));
disk_create(softc->disk, DISK_VERSION);
mtx_lock(periph->sim->mtx);
==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#7 (text+ko) ====
@@ -3557,15 +3557,19 @@
#ifdef __i386__
if (prefetch_tunable_set == 0) {
- printf("ZFS NOTICE: prefetch is disabled by default on i386"
- " - add enable to tunable to change.\n" );
+ printf("ZFS NOTICE: Prefetch is disabled by default on i386 "
+ "-- to enable,\n");
+ printf(" add \"vfs.zfs.prefetch_disable=0\" "
+ "to /boot/loader.conf.\n");
zfs_prefetch_disable=1;
}
#else
if ((((uint64_t)physmem * PAGESIZE) < (1ULL << 32)) &&
prefetch_tunable_set == 0) {
- printf("ZFS NOTICE: system has less than 4GB and prefetch enable is not set"
- "... disabling.\n");
+ printf("ZFS NOTICE: Prefetch is disabled by default if less "
+ "than 4 GB of RAM is present;\n"
+ " to enable, add \"vfs.zfs.prefetch_disable=0\" "
+ "to /boot/loader.conf.\n");
zfs_prefetch_disable=1;
}
#endif
==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#3 (text+ko) ====
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -864,10 +864,11 @@
/* currently allocated, want to be allocated */
dmu_tx_hold_bonus(tx, drro->drr_object);
/*
- * We may change blocksize, so need to
- * hold_write
+ * We may change blocksize and delete old content,
+ * so need to hold_write and hold_free.
*/
dmu_tx_hold_write(tx, drro->drr_object, 0, 1);
+ dmu_tx_hold_free(tx, drro->drr_object, 0, DMU_OBJECT_END);
err = dmu_tx_assign(tx, TXG_WAIT);
if (err) {
dmu_tx_abort(tx);
==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c#3 (text+ko) ====
@@ -415,7 +415,7 @@
dnode_reallocate(dnode_t *dn, dmu_object_type_t ot, int blocksize,
dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx)
{
- int i, old_nblkptr;
+ int i, nblkptr;
dmu_buf_impl_t *db = NULL;
ASSERT3U(blocksize, >=, SPA_MINBLOCKSIZE);
@@ -445,6 +445,8 @@
dnode_free_range(dn, 0, -1ULL, tx);
}
+ nblkptr = 1 + ((DN_MAX_BONUSLEN - bonuslen) >> SPA_BLKPTRSHIFT);
+
/* change blocksize */
rw_enter(&dn->dn_struct_rwlock, RW_WRITER);
if (blocksize != dn->dn_datablksz &&
@@ -457,6 +459,8 @@
dnode_setdirty(dn, tx);
dn->dn_next_bonuslen[tx->tx_txg&TXG_MASK] = bonuslen;
dn->dn_next_blksz[tx->tx_txg&TXG_MASK] = blocksize;
+ if (dn->dn_nblkptr != nblkptr)
+ dn->dn_next_nblkptr[tx->tx_txg&TXG_MASK] = nblkptr;
rw_exit(&dn->dn_struct_rwlock);
if (db)
dbuf_rele(db, FTAG);
@@ -466,19 +470,15 @@
/* change bonus size and type */
mutex_enter(&dn->dn_mtx);
- old_nblkptr = dn->dn_nblkptr;
dn->dn_bonustype = bonustype;
dn->dn_bonuslen = bonuslen;
- dn->dn_nblkptr = 1 + ((DN_MAX_BONUSLEN - bonuslen) >> SPA_BLKPTRSHIFT);
+ dn->dn_nblkptr = nblkptr;
dn->dn_checksum = ZIO_CHECKSUM_INHERIT;
dn->dn_compress = ZIO_COMPRESS_INHERIT;
ASSERT3U(dn->dn_nblkptr, <=, DN_MAX_NBLKPTR);
- /* XXX - for now, we can't make nblkptr smaller */
- ASSERT3U(dn->dn_nblkptr, >=, old_nblkptr);
-
- /* fix up the bonus db_size if dn_nblkptr has changed */
- if (dn->dn_bonus && dn->dn_bonuslen != old_nblkptr) {
+ /* fix up the bonus db_size */
+ if (dn->dn_bonus) {
dn->dn_bonus->db.db_size =
DN_MAX_BONUSLEN - (dn->dn_nblkptr-1) * sizeof (blkptr_t);
ASSERT(dn->dn_bonuslen <= dn->dn_bonus->db.db_size);
==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c#3 (text+ko) ====
@@ -19,12 +19,10 @@
* CDDL HEADER END
*/
/*
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list