svn commit: r197188 - in stable/8/sys: . amd64/include/xen cddl/contrib/opensolaris contrib/dev/acpica contrib/pf dev/coretemp dev/xen/xenpci fs/pseudofs
Author: kib Date: Mon Sep 14 11:01:15 2009 New Revision: 197188 URL: http://svn.freebsd.org/changeset/base/197188 Log: MFC r196921: Do not decrement pfs_vncache_entries for the vnode that was not in the pfs_vncache list. Approved by: re (bz) Modified: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/coretemp/coretemp.c (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/fs/pseudofs/pseudofs_vncache.c Modified: stable/8/sys/fs/pseudofs/pseudofs_vncache.c == --- stable/8/sys/fs/pseudofs/pseudofs_vncache.c Mon Sep 14 08:04:48 2009 (r197187) +++ stable/8/sys/fs/pseudofs/pseudofs_vncache.c Mon Sep 14 11:01:15 2009 (r197188) @@ -246,11 +246,13 @@ pfs_vncache_free(struct vnode *vp) KASSERT(pvd != NULL, (pfs_vncache_free(): no vnode data\n)); if (pvd-pvd_next) pvd-pvd_next-pvd_prev = pvd-pvd_prev; - if (pvd-pvd_prev) + if (pvd-pvd_prev) { pvd-pvd_prev-pvd_next = pvd-pvd_next; - else if (pfs_vncache == pvd) + --pfs_vncache_entries; + } else if (pfs_vncache == pvd) { pfs_vncache = pvd-pvd_next; - --pfs_vncache_entries; + --pfs_vncache_entries; + } mtx_unlock(pfs_vncache_mutex); free(pvd, M_PFSVNCACHE); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197190 - head/sys/dev/asmc
Author: rpaulo Date: Mon Sep 14 11:46:43 2009 New Revision: 197190 URL: http://svn.freebsd.org/changeset/base/197190 Log: Make the sudden motion sensor work on older models and add a bit of debugging. Submitted by: Christoph Langguth christoph at rosenkeller.org MFC after:1 week Modified: head/sys/dev/asmc/asmc.c head/sys/dev/asmc/asmcvar.h Modified: head/sys/dev/asmc/asmc.c == --- head/sys/dev/asmc/asmc.cMon Sep 14 11:20:45 2009(r197189) +++ head/sys/dev/asmc/asmc.cMon Sep 14 11:46:43 2009(r197190) @@ -86,6 +86,10 @@ static void asmc_sms_handler(void *arg) #endif static voidasmc_sms_printintr(device_t dev, uint8_t); static voidasmc_sms_task(void *arg, int pending); +#ifdef DEBUG +void asmc_dumpall(device_t); +static int asmc_key_dump(device_t, int); +#endif /* * Model functions. @@ -532,6 +536,17 @@ asmc_detach(device_t dev) return (0); } +#ifdef DEBUG +void asmc_dumpall(device_t dev) +{ + int i; + + /* XXX magic number */ + for (i=0; i 0x100; i++) + asmc_key_dump(dev, i); +} +#endif + static int asmc_init(device_t dev) { @@ -584,13 +599,17 @@ asmc_init(device_t dev) asmc_key_write(dev, ASMC_KEY_SMS_FLAG, buf, 1); DELAY(100); + sc-sc_sms_intr_works = 0; + /* -* Wait up to 5 seconds for SMS initialization. +* Retry SMS initialization 1000 times +* (takes approx. 2 seconds in worst case) */ - for (i = 0; i 1; i++) { + for (i = 0; i 1000; i++) { if (asmc_key_read(dev, ASMC_KEY_SMS, buf, 2) == 0 - (buf[0] != 0x00 || buf[1] != 0x00)) { + (buf[0] == ASMC_SMS_INIT1 buf[1] == ASMC_SMS_INIT2)) { error = 0; + sc-sc_sms_intr_works = 1; goto out; } buf[0] = ASMC_SMS_INIT1; @@ -620,6 +639,10 @@ nosms: device_printf(dev, number of keys: %d\n, buf[3]); } +#ifdef DEBUG + asmc_dumpall(dev); +#endif + return (error); } @@ -729,6 +752,99 @@ out: return (error); } +#ifdef DEBUG +static int +asmc_key_dump(device_t dev, int number) +{ + struct asmc_softc *sc = device_get_softc(dev); + char key[5] = { 0 }; + char type[7] = { 0 }; + uint8_t index[4]; + uint8_t v[32]; + uint8_t maxlen; + int i, error = 1, try = 0; + + mtx_lock_spin(sc-sc_mtx); + + index[0] = (number 24) 0xff; + index[1] = (number 16) 0xff; + index[2] = (number 8) 0xff; + index[3] = (number) 0xff; + +begin: + if (asmc_command(dev, 0x12)) + goto out; + + for (i = 0; i 4; i++) { + ASMC_DATAPORT_WRITE(sc, index[i]); + if (asmc_wait(dev, 0x04)) + goto out; + } + + ASMC_DATAPORT_WRITE(sc, 4); + + for (i = 0; i 4; i++) { + if (asmc_wait(dev, 0x05)) + goto out; + key[i] = ASMC_DATAPORT_READ(sc); + } + + /* get type */ + if (asmc_command(dev, 0x13)) + goto out; + + for (i = 0; i 4; i++) { + ASMC_DATAPORT_WRITE(sc, key[i]); + if (asmc_wait(dev, 0x04)) + goto out; + } + + ASMC_DATAPORT_WRITE(sc, 6); + + for (i = 0; i 6; i++) { + if (asmc_wait(dev, 0x05)) + goto out; + type[i] = ASMC_DATAPORT_READ(sc); + } + + error = 0; +out: + if (error) { + if (++try 10) goto begin; + device_printf(dev,%s for key %s failed %d times, giving up\n, + __func__, key, try); + mtx_unlock_spin(sc-sc_mtx); + } + else { + char buf[1024]; + char buf2[8]; + mtx_unlock_spin(sc-sc_mtx); + maxlen = type[0]; + type[0] = ' '; + type[5] = 0; + if (maxlen sizeof(v)) { + device_printf(dev, WARNING: cropping maxlen + from %d to %lud\n, maxlen, sizeof(v)); + maxlen = sizeof(v); + } + for (i = 0; i sizeof(v); i++) { + v[i] = 0; + } + asmc_key_read(dev, key, v, maxlen); + snprintf(buf, sizeof(buf), key %d is: %s, type %s + (len %d), data, number, key, type, maxlen); + for (i = 0; i maxlen; i++) { + snprintf(buf2, sizeof(buf), %02x, v[i]); + strlcat(buf, buf2, sizeof(buf)); + } + strlcat(buf, \n, sizeof(buf)); + device_printf(dev, buf); + } + +
svn commit: r197191 - head/sys/dev/agp
Author: n_hibma Date: Mon Sep 14 13:16:16 2009 New Revision: 197191 URL: http://svn.freebsd.org/changeset/base/197191 Log: John Baldwin suggested that 'stolen memory' only happens in the case of i810 and therefore is useful info there. Aperture size and stolen memory are now printed on one line. Submitted by: jhb Modified: head/sys/dev/agp/agp_i810.c Modified: head/sys/dev/agp/agp_i810.c == --- head/sys/dev/agp/agp_i810.c Mon Sep 14 11:46:43 2009(r197190) +++ head/sys/dev/agp/agp_i810.c Mon Sep 14 13:16:16 2009(r197191) @@ -667,14 +667,12 @@ agp_i810_attach(device_t dev) gatt-ag_physical = pgtblctl ~1; } - if (bootverbose) { - device_printf(dev, aperture size is %dM, - sc-initial_aperture / 1024 / 1024); - if (sc-stolen 0) - printf(, detected %dk stolen memory\n, sc-stolen * 4); - else - printf(\n); - } + device_printf(dev, aperture size is %dM, + sc-initial_aperture / 1024 / 1024); + if (sc-stolen 0) + printf(, detected %dk stolen memory\n, sc-stolen * 4); + else + printf(\n); if (0) agp_i810_dump_regs(dev); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r197191 - head/sys/dev/agp
On Mon, 2009-09-14 at 13:16 +, Nick Hibma wrote: Author: n_hibma Date: Mon Sep 14 13:16:16 2009 New Revision: 197191 URL: http://svn.freebsd.org/changeset/base/197191 Log: John Baldwin suggested that 'stolen memory' only happens in the case of i810 and therefore is useful info there. Aperture size and stolen memory are now printed on one line. Submitted by: jhb This is fine, thanks. robert. Modified: head/sys/dev/agp/agp_i810.c Modified: head/sys/dev/agp/agp_i810.c == --- head/sys/dev/agp/agp_i810.c Mon Sep 14 11:46:43 2009 (r197190) +++ head/sys/dev/agp/agp_i810.c Mon Sep 14 13:16:16 2009 (r197191) @@ -667,14 +667,12 @@ agp_i810_attach(device_t dev) gatt-ag_physical = pgtblctl ~1; } - if (bootverbose) { - device_printf(dev, aperture size is %dM, - sc-initial_aperture / 1024 / 1024); - if (sc-stolen 0) - printf(, detected %dk stolen memory\n, sc-stolen * 4); - else - printf(\n); - } + device_printf(dev, aperture size is %dM, + sc-initial_aperture / 1024 / 1024); + if (sc-stolen 0) + printf(, detected %dk stolen memory\n, sc-stolen * 4); + else + printf(\n); if (0) agp_i810_dump_regs(dev); -- Robert Noland rnol...@freebsd.org FreeBSD ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r197102 - head/sys/dev/amdtemp
On Sunday 13 September 2009 12:12 pm, Kris Kennaway wrote: Jung-uk Kim wrote: Author: jkim Date: Fri Sep 11 21:47:44 2009 New Revision: 197102 URL: http://svn.freebsd.org/changeset/base/197102 Log: Improve amdtemp(4) significantly: - Improve newer AMD processor support (Family 0Fh Revision F and later). - Adjust offset if DiodeOffet is set and valid. Note it is experimental but it seems to give us more realistic temperatures. Newer Linux driver blindly adds 21C for Family 0Fh desktop processors, however. - Always populate dev.cpu and dev.amdtemp sysctl trees regardless of probe order for consistency. Previously, dev.cpu.N.temperature was not populated if amdtemp was loaded later than ACPI CPU driver and temperatures were not accessible from dev.amdtemp.N.sensor0 tree for Family 10h/11h processors. - Read the CPUID from PCI register instead of CPUID instruction to prevent possible revision mismatches on multi-socket system. - Change macros and variables to make them closer to AMD documents. - Fix style(9) nits and improve comments. It no longer appears to work for me. The old version reported: dev.amdtemp.0.%desc: AMD K8 Thermal Sensors dev.amdtemp.0.%driver: amdtemp dev.amdtemp.0.%parent: hostb9 dev.amdtemp.0.sensor0.core0: 38.0C dev.amdtemp.0.sensor0.core1: 45.0C dev.amdtemp.0.sensor1.core0: 38.0C dev.amdtemp.0.sensor1.core1: 45.0C dev.cpu.0.temperature: 38.0C dev.cpu.1.temperature: 38.0C but none of those sysctl nodes are now present. CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ (2400.10-MHz K8-class CPU) Origin = AuthenticAMD Id = 0x20f32 Stepping = 2 Features=0x178bfbffFPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTR R,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT Features2=0x1SSE3 AMD Features=0xe2500800SYSCALL,NX,MMX+,FFXSR,LM,3DNow!+,3DNow! AMD Features2=0x3LAHF,CMP ACPI APIC Table: A M I OEMAPIC Arg... This is a Socket 939, Revision E processor and Revision C/D/E seems to have different DiodeOffset encoding. Please try the attached patch until I fix it properly. Sorry for the inconvenience. Jung-uk Kim --- sys/dev/amdtemp/amdtemp.c +++ sys/dev/amdtemp/amdtemp.c @@ -185,13 +185,6 @@ amdtemp_probe(device_t dev) break; case 0x10: case 0x11: - /* -* DiodeOffset must be non-zero if thermal diode is supported. -*/ - temp = pci_read_config(dev, AMDTEMP_THERMTP_STAT, 4); - temp = (temp 8) 0x7f; - if (temp == 0) - return (ENXIO); break; default: return (ENXIO); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r197102 - head/sys/dev/amdtemp
On Monday 14 September 2009 12:29 pm, Jung-uk Kim wrote: On Sunday 13 September 2009 12:12 pm, Kris Kennaway wrote: Jung-uk Kim wrote: Author: jkim Date: Fri Sep 11 21:47:44 2009 New Revision: 197102 URL: http://svn.freebsd.org/changeset/base/197102 Log: Improve amdtemp(4) significantly: - Improve newer AMD processor support (Family 0Fh Revision F and later). - Adjust offset if DiodeOffet is set and valid. Note it is experimental but it seems to give us more realistic temperatures. Newer Linux driver blindly adds 21C for Family 0Fh desktop processors, however. - Always populate dev.cpu and dev.amdtemp sysctl trees regardless of probe order for consistency. Previously, dev.cpu.N.temperature was not populated if amdtemp was loaded later than ACPI CPU driver and temperatures were not accessible from dev.amdtemp.N.sensor0 tree for Family 10h/11h processors. - Read the CPUID from PCI register instead of CPUID instruction to prevent possible revision mismatches on multi-socket system. - Change macros and variables to make them closer to AMD documents. - Fix style(9) nits and improve comments. It no longer appears to work for me. The old version reported: dev.amdtemp.0.%desc: AMD K8 Thermal Sensors dev.amdtemp.0.%driver: amdtemp dev.amdtemp.0.%parent: hostb9 dev.amdtemp.0.sensor0.core0: 38.0C dev.amdtemp.0.sensor0.core1: 45.0C dev.amdtemp.0.sensor1.core0: 38.0C dev.amdtemp.0.sensor1.core1: 45.0C dev.cpu.0.temperature: 38.0C dev.cpu.1.temperature: 38.0C but none of those sysctl nodes are now present. CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ (2400.10-MHz K8-class CPU) Origin = AuthenticAMD Id = 0x20f32 Stepping = 2 Features=0x178bfbffFPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,M TR R,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT Features2=0x1SSE3 AMD Features=0xe2500800SYSCALL,NX,MMX+,FFXSR,LM,3DNow!+,3DNow! AMD Features2=0x3LAHF,CMP ACPI APIC Table: A M I OEMAPIC Arg... This is a Socket 939, Revision E processor and Revision C/D/E seems to have different DiodeOffset encoding. Please try the attached patch until I fix it properly. Please ignore this patch. I need some time to think and fix it properly. There are too many families and revisions. :-( Sorry, Jung-uk Kim ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197196 - head/etc/rc.d
Author: emaste Date: Mon Sep 14 16:52:38 2009 New Revision: 197196 URL: http://svn.freebsd.org/changeset/base/197196 Log: Protect cross-script invocation by checking that the target script exists. This allows pruning of rc.d scripts without getting too many ugly boottime error messages. Inspired by phk's r128714 change to netif. Modified: head/etc/rc.d/ppp Modified: head/etc/rc.d/ppp == --- head/etc/rc.d/ppp Mon Sep 14 16:16:07 2009(r197195) +++ head/etc/rc.d/ppp Mon Sep 14 16:52:38 2009(r197196) @@ -95,8 +95,12 @@ ppp_poststart() { # Re-Sync ipfilter and pf so they pick up any new network interfaces # - /etc/rc.d/ipfilter quietresync - /etc/rc.d/pf quietresync + if [ -f /etc/rc.d/ipfilter ]; then + /etc/rc.d/ipfilter quietresync + fi + if [ -f /etc/rc.d/pf ]; then + /etc/rc.d/pf quietresync + fi } ppp_stop_profile() { ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197192 - in stable/8/sys: . amd64/include/xen cddl/contrib/opensolaris contrib/dev/acpica contrib/pf dev/coretemp dev/xen/xenpci fs/nfsclient nfsclient
Author: rmacklem Date: Mon Sep 14 15:16:17 2009 New Revision: 197192 URL: http://svn.freebsd.org/changeset/base/197192 Log: MFC r197048: Add LK_NOWITNESS to the vn_lock() calls done on newly created nfs vnodes, since these nodes are not linked into the mount queue and, as such, the vn_lock() cannot cause a deadlock so LORs are harmless. Suggested by: kib Approved by: re (kensmith), kib (mentor) Modified: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/coretemp/coretemp.c (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/fs/nfsclient/nfs_clnode.c stable/8/sys/fs/nfsclient/nfs_clport.c stable/8/sys/nfsclient/nfs_node.c Modified: stable/8/sys/fs/nfsclient/nfs_clnode.c == --- stable/8/sys/fs/nfsclient/nfs_clnode.c Mon Sep 14 13:16:16 2009 (r197191) +++ stable/8/sys/fs/nfsclient/nfs_clnode.c Mon Sep 14 15:16:17 2009 (r197192) @@ -157,7 +157,7 @@ ncl_nget(struct mount *mntp, u_int8_t *f M_NFSFH, M_WAITOK); bcopy(fhp, np-n_fhp-nfh_fh, fhsize); np-n_fhp-nfh_len = fhsize; - lockmgr(vp-v_vnlock, LK_EXCLUSIVE, NULL); + lockmgr(vp-v_vnlock, LK_EXCLUSIVE | LK_NOWITNESS, NULL); error = insmntque(vp, mntp); if (error != 0) { *npp = NULL; Modified: stable/8/sys/fs/nfsclient/nfs_clport.c == --- stable/8/sys/fs/nfsclient/nfs_clport.c Mon Sep 14 13:16:16 2009 (r197191) +++ stable/8/sys/fs/nfsclient/nfs_clport.c Mon Sep 14 15:16:17 2009 (r197192) @@ -232,7 +232,7 @@ nfscl_nget(struct mount *mntp, struct vn */ VN_LOCK_AREC(vp); VN_LOCK_ASHARE(vp); - lockmgr(vp-v_vnlock, LK_EXCLUSIVE, NULL); + lockmgr(vp-v_vnlock, LK_EXCLUSIVE | LK_NOWITNESS, NULL); error = insmntque(vp, mntp); if (error != 0) { *npp = NULL; Modified: stable/8/sys/nfsclient/nfs_node.c == --- stable/8/sys/nfsclient/nfs_node.c Mon Sep 14 13:16:16 2009 (r197191) +++ stable/8/sys/nfsclient/nfs_node.c Mon Sep 14 15:16:17 2009 (r197192) @@ -158,7 +158,7 @@ nfs_nget(struct mount *mntp, nfsfh_t *fh np-n_fhp = np-n_fh; bcopy((caddr_t)fhp, (caddr_t)np-n_fhp, fhsize); np-n_fhsize = fhsize; - lockmgr(vp-v_vnlock, LK_EXCLUSIVE, NULL); + lockmgr(vp-v_vnlock, LK_EXCLUSIVE | LK_NOWITNESS, NULL); error = insmntque(vp, mntp); if (error != 0) { *npp = NULL; ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197195 - head/sys/dev/asmc
Author: rpaulo Date: Mon Sep 14 16:16:07 2009 New Revision: 197195 URL: http://svn.freebsd.org/changeset/base/197195 Log: Fix previous commit. I got it backwards. MFC after:1 week Modified: head/sys/dev/asmc/asmc.c Modified: head/sys/dev/asmc/asmc.c == --- head/sys/dev/asmc/asmc.cMon Sep 14 16:13:12 2009(r197194) +++ head/sys/dev/asmc/asmc.cMon Sep 14 16:16:07 2009(r197195) @@ -824,7 +824,7 @@ out: type[5] = 0; if (maxlen sizeof(v)) { device_printf(dev, WARNING: cropping maxlen - from %u to %u\n, maxlen, sizeof(v)); + from %u to %lu\n, maxlen, sizeof(v)); maxlen = sizeof(v); } for (i = 0; i sizeof(v); i++) { ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197197 - in stable/7: sys sys/amd64/amd64 sys/arm/arm sys/conf sys/contrib/pf sys/fs/procfs sys/i386/i386 sys/ia64/ia64 sys/kern sys/sparc64/sparc64 sys/sys sys/vm usr.bin/procstat
Author: jhb Date: Mon Sep 14 17:34:49 2009 New Revision: 197197 URL: http://svn.freebsd.org/changeset/base/197197 Log: MFC 195840, 195844, and 196637: Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar to a device pager (OBJT_DEVICE) object in that it uses fictitious pages to provide aliases to other memory addresses. The primary difference is that it uses an sglist(9) to determine the physical addresses for a given offset into the object instead of invoking the d_mmap() method in a device driver. Added: stable/7/sys/vm/sg_pager.c - copied, changed from r195840, head/sys/vm/sg_pager.c Modified: stable/7/sys/ (props changed) stable/7/sys/amd64/amd64/pmap.c stable/7/sys/arm/arm/pmap.c stable/7/sys/conf/files stable/7/sys/contrib/pf/ (props changed) stable/7/sys/fs/procfs/procfs_map.c stable/7/sys/i386/i386/pmap.c stable/7/sys/ia64/ia64/pmap.c stable/7/sys/kern/kern_proc.c stable/7/sys/sparc64/sparc64/pmap.c stable/7/sys/sys/user.h stable/7/sys/vm/vm.h stable/7/sys/vm/vm_fault.c stable/7/sys/vm/vm_map.c stable/7/sys/vm/vm_meter.c stable/7/sys/vm/vm_object.c stable/7/sys/vm/vm_object.h stable/7/sys/vm/vm_page.c stable/7/sys/vm/vm_pageout.c stable/7/sys/vm/vm_pager.c stable/7/sys/vm/vm_pager.h stable/7/usr.bin/procstat/ (props changed) stable/7/usr.bin/procstat/procstat_vm.c Modified: stable/7/sys/amd64/amd64/pmap.c == --- stable/7/sys/amd64/amd64/pmap.c Mon Sep 14 16:52:38 2009 (r197196) +++ stable/7/sys/amd64/amd64/pmap.c Mon Sep 14 17:34:49 2009 (r197197) @@ -3350,7 +3350,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs int pat_mode; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object-type == OBJT_DEVICE, + KASSERT(object-type == OBJT_DEVICE || object-type == OBJT_SG, (pmap_object_init_pt: non-device object)); if ((addr (NBPDR - 1)) == 0 (size (NBPDR - 1)) == 0) { if (!vm_object_populate(object, pindex, pindex + atop(size))) @@ -4592,7 +4592,8 @@ vm_offset_t pmap_addr_hint(vm_object_t obj, vm_offset_t addr, vm_size_t size) { - if ((obj == NULL) || (size NBPDR) || (obj-type != OBJT_DEVICE)) { + if ((obj == NULL) || (size NBPDR) || + (obj-type != OBJT_DEVICE obj-type != OBJT_SG)) { return addr; } Modified: stable/7/sys/arm/arm/pmap.c == --- stable/7/sys/arm/arm/pmap.c Mon Sep 14 16:52:38 2009(r197196) +++ stable/7/sys/arm/arm/pmap.c Mon Sep 14 17:34:49 2009(r197197) @@ -3071,7 +3071,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs { VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object-type == OBJT_DEVICE, + KASSERT(object-type == OBJT_DEVICE || object-type == OBJT_SG, (pmap_object_init_pt: non-device object)); } Modified: stable/7/sys/conf/files == --- stable/7/sys/conf/files Mon Sep 14 16:52:38 2009(r197196) +++ stable/7/sys/conf/files Mon Sep 14 17:34:49 2009(r197197) @@ -2210,6 +2210,7 @@ vm/default_pager.cstandard vm/device_pager.c standard vm/phys_pager.cstandard vm/redzone.c optional DEBUG_REDZONE +vm/sg_pager.c standard vm/swap_pager.cstandard vm/uma_core.c standard vm/uma_dbg.c standard Modified: stable/7/sys/fs/procfs/procfs_map.c == --- stable/7/sys/fs/procfs/procfs_map.c Mon Sep 14 16:52:38 2009 (r197196) +++ stable/7/sys/fs/procfs/procfs_map.c Mon Sep 14 17:34:49 2009 (r197197) @@ -177,6 +177,7 @@ procfs_doprocmap(PFS_FILL_ARGS) type = swap; vp = NULL; break; + case OBJT_SG: case OBJT_DEVICE: type = device; vp = NULL; Modified: stable/7/sys/i386/i386/pmap.c == --- stable/7/sys/i386/i386/pmap.c Mon Sep 14 16:52:38 2009 (r197196) +++ stable/7/sys/i386/i386/pmap.c Mon Sep 14 17:34:49 2009 (r197197) @@ -3474,7 +3474,7 @@ pmap_object_init_pt(pmap_t pmap, vm_offs int pat_mode; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); - KASSERT(object-type == OBJT_DEVICE, + KASSERT(object-type == OBJT_DEVICE || object-type == OBJT_SG, (pmap_object_init_pt: non-device object)); if (pseflag (addr (NBPDR - 1)) == 0 (size (NBPDR - 1)) == 0) { @@ -4712,7 +4712,8 @@
svn commit: r197198 - stable/7/sys/sys
Author: jhb Date: Mon Sep 14 17:45:58 2009 New Revision: 197198 URL: http://svn.freebsd.org/changeset/base/197198 Log: Bump __FreeBSD_version to 702106 for the recent PAT, d_mmap_single(), and OBJT_SG changes. Modified: stable/7/sys/sys/param.h Modified: stable/7/sys/sys/param.h == --- stable/7/sys/sys/param.hMon Sep 14 17:34:49 2009(r197197) +++ stable/7/sys/sys/param.hMon Sep 14 17:45:58 2009(r197198) @@ -57,7 +57,7 @@ * is created, otherwise 1. */ #undef __FreeBSD_version -#define __FreeBSD_version 702105 /* Master, propagated to newvers */ +#define __FreeBSD_version 702106 /* Master, propagated to newvers */ #ifndef LOCORE #include sys/types.h ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197199 - in stable/8/sys: . amd64/include/xen cddl/contrib/opensolaris contrib/dev/acpica contrib/pf dev/coretemp dev/xen/xenpci
Author: jhb Date: Mon Sep 14 17:49:59 2009 New Revision: 197199 URL: http://svn.freebsd.org/changeset/base/197199 Log: Fix botched mergeinfo. Approved by: re (kib, bz) Modified: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/coretemp/coretemp.c (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r197195 - head/sys/dev/asmc
On Mon, 14 Sep 2009, Rui Paulo wrote: Log: Fix previous commit. I got it backwards. It is still unfixed. MFC after: 1 week Modified: head/sys/dev/asmc/asmc.c Modified: head/sys/dev/asmc/asmc.c == --- head/sys/dev/asmc/asmc.cMon Sep 14 16:13:12 2009(r197194) +++ head/sys/dev/asmc/asmc.cMon Sep 14 16:16:07 2009(r197195) @@ -824,7 +824,7 @@ out: type[5] = 0; if (maxlen sizeof(v)) { device_printf(dev, WARNING: cropping maxlen - from %u to %u\n, maxlen, sizeof(v)); + from %u to %lu\n, maxlen, sizeof(v)); maxlen = sizeof(v); } This printf has the following errors: Fatal printf format error: values of type size_t should be printed using %zu, but here sizeof(v) is printed using %lu. Printing it using %u would be fatal on different systems. Non-fatal printf format error: maxlen has type uint8_t, so its default promotion is int, and this should be printed using %d like it was 2 commits ago. %u will work since the value is representable using both int and u_int, but this is not easy to see (in fact, I can't see it in C99 -- I can only see where C99 requires va_arg(ap, u_int) to work on a u_int). Format-printf error (style bug). The message is obfuscated using C90 string concatenation. Fixed version: device_printf(dev, WARNING: cropping maxlen from %d to %zu\n, maxlen, sizeof(v)); Bruce ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
Re: svn commit: r197102 - head/sys/dev/amdtemp
On Monday 14 September 2009 12:38 pm, Jung-uk Kim wrote: On Monday 14 September 2009 12:29 pm, Jung-uk Kim wrote: On Sunday 13 September 2009 12:12 pm, Kris Kennaway wrote: Jung-uk Kim wrote: Author: jkim Date: Fri Sep 11 21:47:44 2009 New Revision: 197102 URL: http://svn.freebsd.org/changeset/base/197102 Log: Improve amdtemp(4) significantly: - Improve newer AMD processor support (Family 0Fh Revision F and later). - Adjust offset if DiodeOffet is set and valid. Note it is experimental but it seems to give us more realistic temperatures. Newer Linux driver blindly adds 21C for Family 0Fh desktop processors, however. - Always populate dev.cpu and dev.amdtemp sysctl trees regardless of probe order for consistency. Previously, dev.cpu.N.temperature was not populated if amdtemp was loaded later than ACPI CPU driver and temperatures were not accessible from dev.amdtemp.N.sensor0 tree for Family 10h/11h processors. - Read the CPUID from PCI register instead of CPUID instruction to prevent possible revision mismatches on multi-socket system. - Change macros and variables to make them closer to AMD documents. - Fix style(9) nits and improve comments. It no longer appears to work for me. The old version reported: dev.amdtemp.0.%desc: AMD K8 Thermal Sensors dev.amdtemp.0.%driver: amdtemp dev.amdtemp.0.%parent: hostb9 dev.amdtemp.0.sensor0.core0: 38.0C dev.amdtemp.0.sensor0.core1: 45.0C dev.amdtemp.0.sensor1.core0: 38.0C dev.amdtemp.0.sensor1.core1: 45.0C dev.cpu.0.temperature: 38.0C dev.cpu.1.temperature: 38.0C but none of those sysctl nodes are now present. CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ (2400.10-MHz K8-class CPU) Origin = AuthenticAMD Id = 0x20f32 Stepping = 2 Features=0x178bfbffFPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP ,M TR R,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT Features2=0x1SSE3 AMD Features=0xe2500800SYSCALL,NX,MMX+,FFXSR,LM,3DNow!+,3DNow! AMD Features2=0x3LAHF,CMP ACPI APIC Table: A M I OEMAPIC Arg... This is a Socket 939, Revision E processor and Revision C/D/E seems to have different DiodeOffset encoding. Please try the attached patch until I fix it properly. Please ignore this patch. I need some time to think and fix it properly. There are too many families and revisions. :-( Please try the attached patch. I tried to implement all the quirks in Revision Guide carefully but I must admit that I haven't tried it on anything earlier than Revision F. Thanks, Jung-uk Kim --- sys/dev/amdtemp/amdtemp.c +++ sys/dev/amdtemp/amdtemp.c @@ -42,6 +42,7 @@ #include sys/sysctl.h #include sys/systm.h +#include machine/cpufunc.h #include machine/md_var.h #include machine/specialreg.h @@ -58,10 +59,14 @@ struct amdtemp_softc { device_tsc_dev; - uint32_tsc_mask; + int sc_flags; +#defineAMDTEMP_FLAG_DO_QUIRK 0x01/* DiodeOffset is incorrect. */ +#defineAMDTEMP_FLAG_DO_ZERO0x02/* DiodeOffset starts from 0C. */ +#defineAMDTEMP_FLAG_DO_SIGN0x04/* DiodeOffsetSignBit is present. */ +#defineAMDTEMP_FLAG_CSWAP 0x08/* Core0/Core1 selector is swapped. */ +#defineAMDTEMP_FLAG_10BIT 0x10/* CurTmp is 10-bit wide. */ int sc_ncores; int sc_ntemps; - int sc_swap; int32_t (*sc_gettemp)(device_t, amdsensor_t); struct sysctl_oid *sc_sysctl_cpu[MAXCPU]; struct intr_config_hook sc_ich; @@ -168,30 +173,22 @@ static int amdtemp_probe(device_t dev) { - uint32_t cpuid, family, model, temp; + uint32_t family, model; if (resource_disabled(amdtemp, 0)) return (ENXIO); - cpuid = pci_read_config(dev, AMDTEMP_CPUID, 4); - family = CPUID_TO_FAMILY(cpuid); - model = CPUID_TO_MODEL(cpuid); + family = CPUID_TO_FAMILY(cpu_id); + model = CPUID_TO_MODEL(cpu_id); switch (family) { case 0x0f: - if ((model == 0x04 (cpuid CPUID_STEPPING) == 0) || - (model == 0x05 (cpuid CPUID_STEPPING) = 1)) + if ((model == 0x04 (cpu_id CPUID_STEPPING) == 0) || + (model == 0x05 (cpu_id CPUID_STEPPING) = 1)) return (ENXIO); break; case 0x10: case 0x11: - /* -* DiodeOffset must be non-zero if thermal diode is supported. -*/ - temp = pci_read_config(dev, AMDTEMP_THERMTP_STAT, 4); - temp = (temp 8) 0x7f; - if (temp == 0) - return (ENXIO); break; default: return (ENXIO); @@ -207,34 +204,59 @@ struct amdtemp_softc *sc =
Re: svn commit: r197102 - head/sys/dev/amdtemp
On Monday 14 September 2009 04:08 pm, Jung-uk Kim wrote: Please try the attached patch. I tried to implement all the quirks in Revision Guide carefully but I must admit that I haven't tried it on anything earlier than Revision F. This patch has one typo: + /* +* Errata #154: Incorect Diode Offset +*/ + if (cpu_id == 0x20f32) { + do_cpuid(0x8001, regs); + if ((regs[1] 0xfff) == 0x2c) ^^ + sc-sc_flags |= AMDTEMP_FLAG_DO_QUIRK; + } Today is not my day. :-( Sorry again, Jung-uk Kim ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197200 - head/sbin/mount
Author: pjd Date: Mon Sep 14 21:08:22 2009 New Revision: 197200 URL: http://svn.freebsd.org/changeset/base/197200 Log: Modify mount(8) to skip MNT_IGNORE file systems by default, just like df(1) does. This is not POLA violation, because there is no single file system in the base that use MNT_IGNORE currently, although ZFS snapshots will be mounted with MNT_IGNORE after next commit. Reviewed by: kib MFC after:3 days Modified: head/sbin/mount/mount.8 head/sbin/mount/mount.c Modified: head/sbin/mount/mount.8 == --- head/sbin/mount/mount.8 Mon Sep 14 17:49:59 2009(r197199) +++ head/sbin/mount/mount.8 Mon Sep 14 21:08:22 2009(r197200) @@ -469,6 +469,12 @@ or option. .It Fl v Verbose mode. +If the +.Fl v +is used alone, show all file systems, including those that were mounted with the +.Dv MNT_IGNORE +flag and show additional information about each file system (including fsid +when run by root). .It Fl w The file system object is to be read and write. .El Modified: head/sbin/mount/mount.c == --- head/sbin/mount/mount.c Mon Sep 14 17:49:59 2009(r197199) +++ head/sbin/mount/mount.c Mon Sep 14 21:08:22 2009(r197200) @@ -348,6 +348,9 @@ main(int argc, char *argv[]) if (checkvfsname(mntbuf[i].f_fstypename, vfslist)) continue; + if (!verbose + (mntbuf[i].f_flags MNT_IGNORE) != 0) + continue; prmount(mntbuf[i]); } } ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197201 - in head: . sys/cddl/compat/opensolaris/kern sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Author: pjd Date: Mon Sep 14 21:10:40 2009 New Revision: 197201 URL: http://svn.freebsd.org/changeset/base/197201 Log: - Mount ZFS snapshots with MNT_IGNORE flag, so they are not visible in regular df(1) and mount(8) output. This is a bit smilar to OpenSolaris and follows ZFS route of not listing snapshots by default with 'zfs list' command. - Add UPDATING entry to note that ZFS snapshots are no longer visible in mount(8) and df(1) output by default. Reviewed by: kib MFC after:3 days Modified: head/UPDATING head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c head/sys/cddl/compat/opensolaris/sys/vfs.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c Modified: head/UPDATING == --- head/UPDATING Mon Sep 14 21:08:22 2009(r197200) +++ head/UPDATING Mon Sep 14 21:10:40 2009(r197201) @@ -22,6 +22,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090910: + ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for + mount(8) and -a option for df(1) to see them. + 20090825: The old tunable hw.bus.devctl_disable has been superseded by hw.bus.devctl_queue. hw.bus.devctl_disable=1 in loader.conf should be Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c == --- head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c Mon Sep 14 21:08:22 2009(r197200) +++ head/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c Mon Sep 14 21:10:40 2009(r197201) @@ -112,12 +112,13 @@ vfs_optionisset(const vfs_t *vfsp, const } int -domount(kthread_t *td, vnode_t *vp, const char *fstype, char *fspath, +mount_snapshot(kthread_t *td, vnode_t **vpp, const char *fstype, char *fspath, char *fspec, int fsflags) { struct mount *mp; struct vfsconf *vfsp; struct ucred *cr; + vnode_t *vp; int error; /* @@ -132,23 +133,28 @@ domount(kthread_t *td, vnode_t *vp, cons if (vfsp == NULL) return (ENODEV); + vp = *vpp; if (vp-v_type != VDIR) return (ENOTDIR); + /* +* We need vnode lock to protect v_mountedhere and vnode interlock +* to protect v_iflag. +*/ + vn_lock(vp, LK_SHARED | LK_RETRY); VI_LOCK(vp); - if ((vp-v_iflag VI_MOUNT) != 0 || - vp-v_mountedhere != NULL) { + if ((vp-v_iflag VI_MOUNT) != 0 || vp-v_mountedhere != NULL) { VI_UNLOCK(vp); + VOP_UNLOCK(vp, 0); return (EBUSY); } vp-v_iflag |= VI_MOUNT; VI_UNLOCK(vp); + VOP_UNLOCK(vp, 0); /* * Allocate and initialize the filesystem. */ - vn_lock(vp, LK_SHARED | LK_RETRY); mp = vfs_mount_alloc(vp, vfsp, fspath, td-td_ucred); - VOP_UNLOCK(vp, 0); mp-mnt_optnew = NULL; vfs_setmntopt(mp, from, fspec, 0); @@ -158,11 +164,18 @@ domount(kthread_t *td, vnode_t *vp, cons /* * Set the mount level flags. */ - if (fsflags MNT_RDONLY) - mp-mnt_flag |= MNT_RDONLY; - mp-mnt_flag =~ MNT_UPDATEMASK; + mp-mnt_flag = ~MNT_UPDATEMASK; mp-mnt_flag |= fsflags (MNT_UPDATEMASK | MNT_FORCE | MNT_ROOTFS); /* +* Snapshots are always read-only. +*/ + mp-mnt_flag |= MNT_RDONLY; + /* +* We don't want snapshots to be visible in regular +* mount(8) and df(1) output. +*/ + mp-mnt_flag |= MNT_IGNORE; + /* * Unprivileged user can trigger mounting a snapshot, but we don't want * him to unmount it, so we switch to privileged of original mount. */ @@ -170,11 +183,6 @@ domount(kthread_t *td, vnode_t *vp, cons mp-mnt_cred = crdup(vp-v_mount-mnt_cred); mp-mnt_stat.f_owner = mp-mnt_cred-cr_uid; /* -* Mount the filesystem. -* XXX The final recipients of VFS_MOUNT just overwrite the ndp they -* get. No freeing of cn_pnbuf. -*/ - /* * XXX: This is evil, but we can't mount a snapshot as a regular user. * XXX: Is is safe when snapshot is mounted from within a jail? */ @@ -183,7 +191,7 @@ domount(kthread_t *td, vnode_t *vp, cons error = VFS_MOUNT(mp); td-td_ucred = cr; - if (!error) { + if (error == 0) { if (mp-mnt_opt != NULL) vfs_freeopts(mp-mnt_opt); mp-mnt_opt = mp-mnt_optnew; @@ -195,42 +203,33 @@ domount(kthread_t *td, vnode_t *vp, cons */ mp-mnt_optnew = NULL; vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - /* -* Put the new
svn commit: r197202 - head/sys/dev/asmc
Author: rpaulo Date: Mon Sep 14 21:33:00 2009 New Revision: 197202 URL: http://svn.freebsd.org/changeset/base/197202 Log: Use %zu for size_t. Fix printf format string (again) Pointed out by: bde, ed Modified: head/sys/dev/asmc/asmc.c Modified: head/sys/dev/asmc/asmc.c == --- head/sys/dev/asmc/asmc.cMon Sep 14 21:10:40 2009(r197201) +++ head/sys/dev/asmc/asmc.cMon Sep 14 21:33:00 2009(r197202) @@ -823,8 +823,9 @@ out: type[0] = ' '; type[5] = 0; if (maxlen sizeof(v)) { - device_printf(dev, WARNING: cropping maxlen - from %u to %lu\n, maxlen, sizeof(v)); + device_printf(dev, + WARNING: cropping maxlen from %d to %zu\n, + maxlen, sizeof(v)); maxlen = sizeof(v); } for (i = 0; i sizeof(v); i++) { ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197203 - head/sys/netinet
Author: qingli Date: Mon Sep 14 22:19:47 2009 New Revision: 197203 URL: http://svn.freebsd.org/changeset/base/197203 Log: Previously local end of point-to-point interface is not reachable within the system that owns the interface. Packets destined to the local end point leak to the wire towards the default gateway if one exists. This behavior is changed as part of the L2/L3 rewrite efforts. The local end point is now reachable within the system. The inpcb code needs to consider this fact during the address selection process. Reviewed by: bz MFC after:immediately Modified: head/sys/netinet/in_pcb.c Modified: head/sys/netinet/in_pcb.c == --- head/sys/netinet/in_pcb.c Mon Sep 14 21:33:00 2009(r197202) +++ head/sys/netinet/in_pcb.c Mon Sep 14 22:19:47 2009(r197203) @@ -701,6 +701,8 @@ in_pcbladdr(struct inpcb *inp, struct in ia = ifatoia(ifa_ifwithdstaddr(sintosa(sain))); if (ia == NULL) ia = ifatoia(ifa_ifwithnet(sintosa(sain))); + if (ia == NULL) + ia = ifatoia(ifa_ifwithaddr(sintosa(sain))); if (cred == NULL || !prison_flag(cred, PR_IP4)) { if (ia == NULL) { ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197205 - head/sys/dev/amdtemp
Author: jkim Date: Mon Sep 14 23:08:19 2009 New Revision: 197205 URL: http://svn.freebsd.org/changeset/base/197205 Log: Restore (undocumented) support for early revisions and add more comments. Reported by: kris Modified: head/sys/dev/amdtemp/amdtemp.c Modified: head/sys/dev/amdtemp/amdtemp.c == --- head/sys/dev/amdtemp/amdtemp.c Mon Sep 14 22:49:48 2009 (r197204) +++ head/sys/dev/amdtemp/amdtemp.c Mon Sep 14 23:08:19 2009 (r197205) @@ -42,6 +42,7 @@ __FBSDID($FreeBSD$); #include sys/sysctl.h #include sys/systm.h +#include machine/cpufunc.h #include machine/md_var.h #include machine/specialreg.h @@ -58,10 +59,14 @@ typedef enum { struct amdtemp_softc { device_tsc_dev; - uint32_tsc_mask; int sc_ncores; int sc_ntemps; - int sc_swap; + int sc_flags; +#defineAMDTEMP_FLAG_DO_QUIRK 0x01/* DiodeOffset may be incorrect. */ +#defineAMDTEMP_FLAG_DO_ZERO0x02/* DiodeOffset starts from 0C. */ +#defineAMDTEMP_FLAG_DO_SIGN0x04/* DiodeOffsetSignBit is present. */ +#defineAMDTEMP_FLAG_CS_SWAP0x08/* ThermSenseCoreSel is inverted. */ +#defineAMDTEMP_FLAG_CT_10BIT 0x10/* CurTmp is 10-bit wide. */ int32_t (*sc_gettemp)(device_t, amdsensor_t); struct sysctl_oid *sc_sysctl_cpu[MAXCPU]; struct intr_config_hook sc_ich; @@ -168,30 +173,22 @@ amdtemp_identify(driver_t *driver, devic static int amdtemp_probe(device_t dev) { - uint32_t cpuid, family, model, temp; + uint32_t family, model; if (resource_disabled(amdtemp, 0)) return (ENXIO); - cpuid = pci_read_config(dev, AMDTEMP_CPUID, 4); - family = CPUID_TO_FAMILY(cpuid); - model = CPUID_TO_MODEL(cpuid); + family = CPUID_TO_FAMILY(cpu_id); + model = CPUID_TO_MODEL(cpu_id); switch (family) { case 0x0f: - if ((model == 0x04 (cpuid CPUID_STEPPING) == 0) || - (model == 0x05 (cpuid CPUID_STEPPING) = 1)) + if ((model == 0x04 (cpu_id CPUID_STEPPING) == 0) || + (model == 0x05 (cpu_id CPUID_STEPPING) = 1)) return (ENXIO); break; case 0x10: case 0x11: - /* -* DiodeOffset must be non-zero if thermal diode is supported. -*/ - temp = pci_read_config(dev, AMDTEMP_THERMTP_STAT, 4); - temp = (temp 8) 0x7f; - if (temp == 0) - return (ENXIO); break; default: return (ENXIO); @@ -207,32 +204,66 @@ amdtemp_attach(device_t dev) struct amdtemp_softc *sc = device_get_softc(dev); struct sysctl_ctx_list *sysctlctx; struct sysctl_oid *sysctlnode; + uint32_t regs[4]; uint32_t cpuid, family, model; - cpuid = pci_read_config(dev, AMDTEMP_CPUID, 4); - family = CPUID_TO_FAMILY(cpuid); - model = CPUID_TO_MODEL(cpuid); + /* +* Errata #154: Incorect Diode Offset +*/ + if (cpu_id == 0x20f32) { + do_cpuid(0x8001, regs); + if ((regs[1] 0xfff) == 0x2c) + sc-sc_flags |= AMDTEMP_FLAG_DO_QUIRK; + } + + /* +* CPUID Register is available from Revision F. +*/ + family = CPUID_TO_FAMILY(cpu_id); + model = CPUID_TO_MODEL(cpu_id); + if (family != 0x0f || model = 0x40) { + cpuid = pci_read_config(dev, AMDTEMP_CPUID, 4); + family = CPUID_TO_FAMILY(cpuid); + model = CPUID_TO_MODEL(cpuid); + } switch (family) { case 0x0f: /* -* Thermaltrip Status Register - CurTmp +* Thermaltrip Status Register +* +* - DiodeOffsetSignBit +* +* Revision D E: bit 24 +* Other: N/A +* +* - ThermSenseCoreSel +* +* Revision F G: 0 - Core1, 1 - Core0 +* Other: 0 - Core0, 1 - Core1 +* +* - CurTmp * * Revision G: bits 23-14 -* Earlier: bits 23-16 -*/ - if (model = 0x60 model != 0xc1) - sc-sc_mask = 0x3ff 14; - else - sc-sc_mask = 0xff 16; - - /* -* Thermaltrip Status Register - ThermSenseCoreSel +* Other: bits 23-16 * -* Revision F: 0 - Core1, 1 - Core0 -*
svn commit: r197208 - head/sys/cam
Author: ken Date: Tue Sep 15 00:15:24 2009 New Revision: 197208 URL: http://svn.freebsd.org/changeset/base/197208 Log: Fix some instances where CAM rescans get hung up or take a long time to complete. Also, allow xpt_rescan() to rescan a LUN instead of a full bus. MFC after:3 days Sponsored by: Copan Systems, Inc. Modified: head/sys/cam/cam_xpt.c Modified: head/sys/cam/cam_xpt.c == --- head/sys/cam/cam_xpt.c Mon Sep 14 23:46:40 2009(r197207) +++ head/sys/cam/cam_xpt.c Tue Sep 15 00:15:24 2009(r197208) @@ -794,8 +794,9 @@ xpt_scanner_thread(void *dummy) * processed. */ xpt_lock_buses(); - msleep(xsoftc.ccb_scanq, xsoftc.xpt_topo_lock, PRIBIO, - ccb_scanq, 0); + if (TAILQ_EMPTY(xsoftc.ccb_scanq)) + msleep(xsoftc.ccb_scanq, xsoftc.xpt_topo_lock, PRIBIO, + ccb_scanq, 0); TAILQ_INIT(queue); TAILQ_CONCAT(queue, xsoftc.ccb_scanq, sim_links.tqe); xpt_unlock_buses(); @@ -806,9 +807,12 @@ xpt_scanner_thread(void *dummy) sim = ccb-ccb_h.path-bus-sim; CAM_SIM_LOCK(sim); - ccb-ccb_h.func_code = XPT_SCAN_BUS; + if( ccb-ccb_h.path-target-target_id == CAM_TARGET_WILDCARD ) + ccb-ccb_h.func_code = XPT_SCAN_BUS; + else + ccb-ccb_h.func_code = XPT_SCAN_LUN; ccb-ccb_h.cbfcnp = xptdone; - xpt_setup_ccb(ccb-ccb_h, ccb-ccb_h.path, 5); + xpt_setup_ccb(ccb-ccb_h, ccb-ccb_h.path, 1); cam_periph_runccb(ccb, NULL, 0, 0, NULL); xpt_free_path(ccb-ccb_h.path); xpt_free_ccb(ccb); @@ -828,6 +832,7 @@ xpt_rescan(union ccb *ccb) xpt_lock_buses(); TAILQ_FOREACH(hdr, xsoftc.ccb_scanq, sim_links.tqe) { if (xpt_path_comp(hdr-path, ccb-ccb_h.path) == 0) { + wakeup(xsoftc.ccb_scanq); xpt_unlock_buses(); xpt_print(ccb-ccb_h.path, rescan already queued\n); xpt_free_path(ccb-ccb_h.path); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197210 - in head/sys: netinet nfsclient
Author: qingli Date: Tue Sep 15 01:01:03 2009 New Revision: 197210 URL: http://svn.freebsd.org/changeset/base/197210 Log: The bootp code installs an interface address and the nfs client module tries to install the same address again. This extra code is removed, which was discovered by the removal of a call to in_ifscrub() in r196714. This call to in_ifscrub is put back here because the SIOCAIFADDR command can be used to change the prefix length of an existing alias. Reviewed by:kmacy Modified: head/sys/netinet/in.c head/sys/nfsclient/nfs_vfsops.c Modified: head/sys/netinet/in.c == --- head/sys/netinet/in.c Tue Sep 15 00:26:23 2009(r197209) +++ head/sys/netinet/in.c Tue Sep 15 01:01:03 2009(r197210) @@ -536,6 +536,16 @@ in_control(struct socket *so, u_long cmd hostIsNew = 0; } if (ifra-ifra_mask.sin_len) { + /* +* QL: XXX +* Need to scrub the prefix here in case +* the issued command is SIOCAIFADDR with +* the same address, but with a different +* prefix length. And if the prefix length +* is the same as before, then the call is +* un-necessarily executed here. +*/ + in_ifscrub(ifp, ia); ia-ia_sockmask = ifra-ifra_mask; ia-ia_sockmask.sin_family = AF_INET; ia-ia_subnetmask = @@ -544,6 +554,7 @@ in_control(struct socket *so, u_long cmd } if ((ifp-if_flags IFF_POINTOPOINT) (ifra-ifra_dstaddr.sin_family == AF_INET)) { + in_ifscrub(ifp, ia); ia-ia_dstaddr = ifra-ifra_dstaddr; maskIsNew = 1; /* We lie; but the effect's the same */ } Modified: head/sys/nfsclient/nfs_vfsops.c == --- head/sys/nfsclient/nfs_vfsops.c Tue Sep 15 00:26:23 2009 (r197209) +++ head/sys/nfsclient/nfs_vfsops.c Tue Sep 15 01:01:03 2009 (r197210) @@ -463,9 +463,13 @@ nfs_mountroot(struct mount *mp) break; } #endif + +#if 0 /* QL: XXX */ error = ifioctl(so, SIOCAIFADDR, (caddr_t)nd-myif, td); if (error) panic(nfs_mountroot: SIOCAIFADDR: %d, error); +#endif + if ((cp = getenv(boot.netif.mtu)) != NULL) { ir.ifr_mtu = strtol(cp, NULL, 10); bcopy(nd-myif.ifra_name, ir.ifr_name, IFNAMSIZ); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197212 - head/sys/nfsclient
Author: qingli Date: Tue Sep 15 02:22:57 2009 New Revision: 197212 URL: http://svn.freebsd.org/changeset/base/197212 Log: Simply remove the code instead of using #if 0. Pointed out by sam Modified: head/sys/nfsclient/nfs_vfsops.c Modified: head/sys/nfsclient/nfs_vfsops.c == --- head/sys/nfsclient/nfs_vfsops.c Tue Sep 15 02:04:16 2009 (r197211) +++ head/sys/nfsclient/nfs_vfsops.c Tue Sep 15 02:22:57 2009 (r197212) @@ -464,12 +464,6 @@ nfs_mountroot(struct mount *mp) } #endif -#if 0 /* QL: XXX */ - error = ifioctl(so, SIOCAIFADDR, (caddr_t)nd-myif, td); - if (error) - panic(nfs_mountroot: SIOCAIFADDR: %d, error); -#endif - if ((cp = getenv(boot.netif.mtu)) != NULL) { ir.ifr_mtu = strtol(cp, NULL, 10); bcopy(nd-myif.ifra_name, ir.ifr_name, IFNAMSIZ); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197213 - stable/7/sys/cam
Author: emaste Date: Tue Sep 15 02:23:16 2009 New Revision: 197213 URL: http://svn.freebsd.org/changeset/base/197213 Log: MFC r195685: Fix leaks in probestart, probedone, and scsi_scan_bus. Also free page_list using the matching malloc type for the allocation. (In HEAD these functions have moved to scsi_xpt.c) Reviewed by: scottl Modified: stable/7/sys/cam/cam_xpt.c Modified: stable/7/sys/cam/cam_xpt.c == --- stable/7/sys/cam/cam_xpt.c Tue Sep 15 02:22:57 2009(r197212) +++ stable/7/sys/cam/cam_xpt.c Tue Sep 15 02:23:16 2009(r197213) @@ -5240,6 +5240,7 @@ xpt_scan_bus(struct cam_periph *periph, } work_ccb = xpt_alloc_ccb_nowait(); if (work_ccb == NULL) { + xpt_free_ccb((union ccb *)scan_info-cpi); free(scan_info, M_CAMXPT); xpt_free_path(path); request_ccb-ccb_h.status = CAM_RESRC_UNAVAIL; @@ -5360,6 +5361,7 @@ xpt_scan_bus(struct cam_periph *periph, } if ((scan_info-cpi-hba_misc PIM_SEQSCAN) == 0) { + xpt_free_ccb(request_ccb); break; } status = xpt_create_path(path, xpt_periph, @@ -5828,8 +5830,11 @@ probestart(struct cam_periph *periph, un serial_buf = NULL; device = periph-path-device; - device-serial_num = NULL; - device-serial_num_len = 0; + if (device-serial_num != NULL) { + free(device-serial_num, M_CAMXPT); + device-serial_num = NULL; + device-serial_num_len = 0; + } serial_buf = (struct scsi_vpd_unit_serial_number *) malloc(sizeof(*serial_buf), M_CAMXPT, M_NOWAIT|M_ZERO); @@ -6168,7 +6173,7 @@ probedone(struct cam_periph *periph, uni } if (page_list != NULL) - free(page_list, M_DEVBUF); + free(page_list, M_CAMXPT); if (serialnum_supported) { xpt_release_ccb(done_ccb); ___ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org
svn commit: r197214 - head/sys/dev/isp
Author: mjacob Date: Tue Sep 15 02:25:03 2009 New Revision: 197214 URL: http://svn.freebsd.org/changeset/base/197214 Log: Accomodate old style XPT_IMMED_NOTIFY and XPT_NOTIFY_ACK so that we at least don't panic. We don't really support dual role mode (INITIATOR/TARGET) any more. We should but it's broken and will take a fair amount of effort to fix and correctly manage both initiator and target roles sharing the port database. So, for now, disallow it. Modified: head/sys/dev/isp/isp.c head/sys/dev/isp/isp_freebsd.c Modified: head/sys/dev/isp/isp.c == --- head/sys/dev/isp/isp.c Tue Sep 15 02:23:16 2009(r197213) +++ head/sys/dev/isp/isp.c Tue Sep 15 02:25:03 2009(r197214) @@ -2771,21 +2771,15 @@ isp_pdb_sync(ispsoftc_t *isp, int chan) /* * Make sure we're okay for doing this right now. */ - if (fcp-isp_loopstate != LOOP_PDB_RCVD - fcp-isp_loopstate != LOOP_FSCAN_DONE - fcp-isp_loopstate != LOOP_LSCAN_DONE) { - isp_prt(isp, ISP_LOGWARN, isp_pdb_sync: bad loopstate %d, - fcp-isp_loopstate); + if (fcp-isp_loopstate != LOOP_PDB_RCVD fcp-isp_loopstate != LOOP_FSCAN_DONE fcp-isp_loopstate != LOOP_LSCAN_DONE) { + isp_prt(isp, ISP_LOGWARN, isp_pdb_sync: bad loopstate %d, fcp-isp_loopstate); return (-1); } - if (fcp-isp_topo == TOPO_FL_PORT || - fcp-isp_topo == TOPO_NL_PORT || - fcp-isp_topo == TOPO_N_PORT) { + if (fcp-isp_topo == TOPO_FL_PORT || fcp-isp_topo == TOPO_NL_PORT || fcp-isp_topo == TOPO_N_PORT) { if (fcp-isp_loopstate LOOP_LSCAN_DONE) { if (isp_scan_loop(isp, chan) != 0) { - isp_prt(isp, ISP_LOGWARN, - isp_pdb_sync: isp_scan_loop failed); + isp_prt(isp, ISP_LOGWARN, isp_pdb_sync: isp_scan_loop failed); return (-1); } } @@ -2794,15 +2788,13 @@ isp_pdb_sync(ispsoftc_t *isp, int chan) if (fcp-isp_topo == TOPO_F_PORT || fcp-isp_topo == TOPO_FL_PORT) { if (fcp-isp_loopstate LOOP_FSCAN_DONE) { if (isp_scan_fabric(isp, chan) != 0) { - isp_prt(isp, ISP_LOGWARN, - isp_pdb_sync: isp_scan_fabric failed); + isp_prt(isp, ISP_LOGWARN, isp_pdb_sync: isp_scan_fabric failed); return (-1); } } } - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, - Chan %d Synchronizing PDBs, chan); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, Chan %d Synchronizing PDBs, chan); fcp-isp_loopstate = LOOP_SYNCING_PDB; @@ -2831,11 +2823,7 @@ isp_pdb_sync(ispsoftc_t *isp, int chan) lp-state = FC_PORTDB_STATE_NIL; isp_async(isp, ISPASYNC_DEV_GONE, chan, lp); if (lp-autologin == 0) { - (void) isp_plogx(isp, chan, lp-handle, - lp-portid, - PLOGX_FLG_CMD_LOGO | - PLOGX_FLG_IMPLICIT | - PLOGX_FLG_FREE_NPHDL, 0); + (void) isp_plogx(isp, chan, lp-handle, lp-portid, PLOGX_FLG_CMD_LOGO | PLOGX_FLG_IMPLICIT | PLOGX_FLG_FREE_NPHDL, 0); } else { lp-autologin = 0; } @@ -3081,8 +3069,7 @@ isp_scan_loop(ispsoftc_t *isp, int chan) for (i = 0; i MAX_FC_TARG; i++) { lp = fcp-portdb[i]; - if (lp-state == FC_PORTDB_STATE_NIL || - lp-target_mode) { + if (lp-state == FC_PORTDB_STATE_NIL || lp-target_mode) { continue; } if (lp-node_wwn != tmp.node_wwn) { @@ -3600,8 +3587,7 @@ isp_scan_fabric(ispsoftc_t *isp, int cha for (dbidx = 0; dbidx MAX_FC_TARG; dbidx++) { lp = fcp-portdb[dbidx]; - if (lp-state != FC_PORTDB_STATE_PROBATIONAL || - lp-target_mode) { + if (lp-state != FC_PORTDB_STATE_PROBATIONAL || lp-target_mode) { continue; } if (lp-portid == portid) { @@ -3838,8 +3824,7 @@ isp_scan_fabric(ispsoftc_t *isp, int cha if (fcp-portdb[dbidx].target_mode) { continue; } - if (fcp-portdb[dbidx].node_wwn ==