From owner-p4-projects@FreeBSD.ORG Mon Mar 23 20:20:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7963D1065692; Mon, 23 Mar 2009 20:20:29 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23E26106567E for ; Mon, 23 Mar 2009 20:20:29 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0F8D08FC17 for ; Mon, 23 Mar 2009 20:20:29 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n2NKKSbh069548 for ; Mon, 23 Mar 2009 20:20:28 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n2NKKSUc069546 for perforce@freebsd.org; Mon, 23 Mar 2009 20:20:28 GMT (envelope-from jhb@freebsd.org) Date: Mon, 23 Mar 2009 20:20:28 GMT Message-Id: <200903232020.n2NKKSUc069546@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 159702 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Mar 2009 20:20:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=159702 Change 159702 by jhb@jhb_jhbbsd on 2009/03/23 20:19:50 IFC @159699 Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/pmap.c#92 integrate .. //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#41 integrate .. //depot/projects/smpng/sys/amd64/conf/GENERIC#74 integrate .. //depot/projects/smpng/sys/amd64/include/pmap.h#31 integrate .. //depot/projects/smpng/sys/arm/conf/HL200#8 integrate .. //depot/projects/smpng/sys/arm/conf/KB920X#15 integrate .. //depot/projects/smpng/sys/boot/forth/loader.conf#59 integrate .. //depot/projects/smpng/sys/boot/pc98/libpc98/bioscd.c#4 integrate .. //depot/projects/smpng/sys/boot/pc98/libpc98/biosdisk.c#16 integrate .. //depot/projects/smpng/sys/boot/pc98/libpc98/time.c#4 integrate .. //depot/projects/smpng/sys/cddl/dev/dtnfsclient/dtnfsclient.c#1 branch .. //depot/projects/smpng/sys/conf/NOTES#164 integrate .. //depot/projects/smpng/sys/conf/files#233 integrate .. //depot/projects/smpng/sys/dev/age/if_age.c#5 integrate .. //depot/projects/smpng/sys/dev/agp/agp.c#7 integrate .. //depot/projects/smpng/sys/dev/agp/agp_amd64.c#4 integrate .. //depot/projects/smpng/sys/dev/agp/agp_i810.c#8 integrate .. //depot/projects/smpng/sys/dev/agp/agp_intel.c#3 integrate .. //depot/projects/smpng/sys/dev/agp/agp_via.c#4 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ah.h#5 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#4 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#4 integrate .. //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#4 integrate .. //depot/projects/smpng/sys/dev/ath/if_ath.c#72 integrate .. //depot/projects/smpng/sys/dev/ath/if_athvar.h#44 integrate .. //depot/projects/smpng/sys/dev/bge/if_bge.c#105 integrate .. //depot/projects/smpng/sys/dev/bge/if_bgereg.h#60 integrate .. //depot/projects/smpng/sys/dev/cxgb/cxgb_main.c#20 integrate .. //depot/projects/smpng/sys/dev/cxgb/cxgb_offload.c#5 integrate .. //depot/projects/smpng/sys/dev/dc/dcphy.c#7 integrate .. //depot/projects/smpng/sys/dev/dc/pnphy.c#5 integrate .. //depot/projects/smpng/sys/dev/drm/ati_pcigart.c#7 integrate .. //depot/projects/smpng/sys/dev/drm/drm_irq.c#9 integrate .. //depot/projects/smpng/sys/dev/drm/drm_pciids.h#12 integrate .. //depot/projects/smpng/sys/dev/drm/drm_scatter.c#8 integrate .. //depot/projects/smpng/sys/dev/drm/drm_vm.c#6 integrate .. //depot/projects/smpng/sys/dev/drm/i915_drv.c#9 integrate .. //depot/projects/smpng/sys/dev/drm/i915_suspend.c#4 integrate .. //depot/projects/smpng/sys/dev/msk/if_msk.c#15 integrate .. //depot/projects/smpng/sys/dev/my/if_my.c#30 integrate .. //depot/projects/smpng/sys/dev/syscons/teken/teken.c#5 integrate .. //depot/projects/smpng/sys/dev/syscons/teken/teken_subr.h#3 integrate .. //depot/projects/smpng/sys/dev/twa/tw_cl_init.c#5 integrate .. //depot/projects/smpng/sys/dev/twa/tw_osl.h#6 integrate .. //depot/projects/smpng/sys/dev/twa/tw_osl_freebsd.c#11 integrate .. //depot/projects/smpng/sys/dev/usb/controller/at91dci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/at91dci_atmelarm.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/controller/atmegadci.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/controller/atmegadci_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ehci.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ehci.h#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ehci_ixp4xx.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ehci_mbus.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ehci_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/musb_otg.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/musb_otg_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ohci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ohci.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ohci_atmelarm.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/controller/ohci_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/uhci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/uhci.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/controller/uhci_pci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/usb_controller.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/uss820dci.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/controller/uss820dci_atmelarm.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/image/uscanner.c#5 delete .. //depot/projects/smpng/sys/dev/usb/input/uhid.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/input/ums.c#5 integrate .. //depot/projects/smpng/sys/dev/usb/misc/udbp.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/net/if_cdce.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/serial/u3g.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/serial/ubser.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/serial/ucycom.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/serial/ufoma.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/serial/ugensa.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/serial/umct.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/serial/umodem.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/serial/uplcom.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/serial/uvisor.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/storage/umass.c#5 integrate .. //depot/projects/smpng/sys/dev/usb/storage/urio.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/storage/ustorage_fs.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/template/usb_template.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_bus.h#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_busdma.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_busdma.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_compat_linux.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_compat_linux.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_controller.h#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_core.h#5 integrate .. //depot/projects/smpng/sys/dev/usb/usb_debug.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_debug.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_defs.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_dev.c#6 integrate .. //depot/projects/smpng/sys/dev/usb/usb_dev.h#5 integrate .. //depot/projects/smpng/sys/dev/usb/usb_device.c#5 integrate .. //depot/projects/smpng/sys/dev/usb/usb_device.h#6 integrate .. //depot/projects/smpng/sys/dev/usb/usb_dynamic.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_endian.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_generic.c#5 integrate .. //depot/projects/smpng/sys/dev/usb/usb_handle_request.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_hid.c#5 integrate .. //depot/projects/smpng/sys/dev/usb/usb_hid.h#4 integrate .. //depot/projects/smpng/sys/dev/usb/usb_hub.c#4 integrate .. //depot/projects/smpng/sys/dev/usb/usb_hub.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_lookup.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_lookup.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_mbuf.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_mbuf.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_msctest.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_process.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_process.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_request.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_request.h#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_sw_transfer.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_transfer.c#3 integrate .. //depot/projects/smpng/sys/dev/usb/usb_transfer.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_util.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/usb_util.h#2 integrate .. //depot/projects/smpng/sys/dev/usb/usbdevs#132 integrate .. //depot/projects/smpng/sys/geom/part/g_part.c#17 integrate .. //depot/projects/smpng/sys/i386/conf/GENERIC#106 integrate .. //depot/projects/smpng/sys/i386/conf/XBOX#12 integrate .. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#91 integrate .. //depot/projects/smpng/sys/i386/include/pmap.h#42 integrate .. //depot/projects/smpng/sys/kern/imgact_elf.c#65 integrate .. //depot/projects/smpng/sys/kern/kern_environment.c#28 integrate .. //depot/projects/smpng/sys/kern/kern_time.c#56 integrate .. //depot/projects/smpng/sys/kern/subr_bus.c#76 integrate .. //depot/projects/smpng/sys/kern/vfs_cache.c#51 integrate .. //depot/projects/smpng/sys/modules/dtrace/Makefile#2 integrate .. //depot/projects/smpng/sys/modules/dtrace/dtnfsclient/Makefile#1 branch .. //depot/projects/smpng/sys/modules/dtrace/dtraceall/dtraceall.c#2 integrate .. //depot/projects/smpng/sys/modules/usb/Makefile#14 integrate .. //depot/projects/smpng/sys/modules/usb/uscanner/Makefile#2 delete .. //depot/projects/smpng/sys/net/if.c#114 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_node.h#26 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_output.c#38 integrate .. //depot/projects/smpng/sys/netinet/ip_mroute.c#64 integrate .. //depot/projects/smpng/sys/netinet/tcp_subr.c#109 integrate .. //depot/projects/smpng/sys/netipsec/key.c#32 integrate .. //depot/projects/smpng/sys/nfs4client/nfs4_vnops.c#31 integrate .. //depot/projects/smpng/sys/nfsclient/nfs.h#34 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_krpc.c#2 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#84 integrate .. //depot/projects/smpng/sys/nfsclient/nfsnode.h#23 integrate .. //depot/projects/smpng/sys/pc98/conf/GENERIC#82 integrate .. //depot/projects/smpng/sys/powerpc/conf/GENERIC#56 integrate .. //depot/projects/smpng/sys/sparc64/central/central.c#10 integrate .. //depot/projects/smpng/sys/sparc64/conf/GENERIC#91 integrate .. //depot/projects/smpng/sys/sparc64/ebus/ebus.c#26 integrate .. //depot/projects/smpng/sys/sparc64/fhc/fhc.c#13 integrate .. //depot/projects/smpng/sys/sparc64/include/trap.h#12 integrate .. //depot/projects/smpng/sys/sparc64/isa/isa.c#21 integrate .. //depot/projects/smpng/sys/sparc64/isa/ofw_isa.c#11 integrate .. //depot/projects/smpng/sys/sparc64/pci/apb.c#16 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pcib.c#11 integrate .. //depot/projects/smpng/sys/sparc64/pci/ofw_pcibus.c#15 integrate .. //depot/projects/smpng/sys/sparc64/pci/psycho.c#49 integrate .. //depot/projects/smpng/sys/sparc64/pci/psychovar.h#17 integrate .. //depot/projects/smpng/sys/sparc64/pci/schizo.c#5 integrate .. //depot/projects/smpng/sys/sparc64/sbus/dma_sbus.c#8 integrate .. //depot/projects/smpng/sys/sparc64/sbus/sbus.c#33 integrate .. //depot/projects/smpng/sys/sparc64/sbus/sbusvar.h#7 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/eeprom.c#11 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/jbusppm.c#2 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#94 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/mp_machdep.c#37 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/nexus.c#20 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/rtc.c#7 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/sc_machdep.c#4 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/schppm.c#2 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/trap.c#83 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/upa.c#10 integrate .. //depot/projects/smpng/sys/sun4v/conf/GENERIC#15 integrate .. //depot/projects/smpng/sys/sun4v/include/trap.h#5 integrate .. //depot/projects/smpng/sys/sun4v/sun4v/trap.c#11 integrate .. //depot/projects/smpng/sys/sys/dtrace_bsd.h#2 integrate .. //depot/projects/smpng/sys/sys/param.h#139 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#92 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.656 2009/03/14 08:28:02 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.657 2009/03/22 04:32:05 alc Exp $"); /* * Manages physical address maps. @@ -542,7 +542,7 @@ * Initialize the kernel pmap (which is statically allocated). */ PMAP_LOCK_INIT(kernel_pmap); - kernel_pmap->pm_pml4 = (pdp_entry_t *) (KERNBASE + KPML4phys); + kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); kernel_pmap->pm_root = NULL; kernel_pmap->pm_active = -1; /* don't allow deactivation */ TAILQ_INIT(&kernel_pmap->pm_pvchunk); @@ -1351,7 +1351,7 @@ { PMAP_LOCK_INIT(pmap); - pmap->pm_pml4 = (pml4_entry_t *)(KERNBASE + KPML4phys); + pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys); pmap->pm_root = NULL; pmap->pm_active = 0; TAILQ_INIT(&pmap->pm_pvchunk); @@ -4695,7 +4695,7 @@ oldpmap->pm_active &= ~PCPU_GET(cpumask); pmap->pm_active |= PCPU_GET(cpumask); #endif - cr3 = vtophys(pmap->pm_pml4); + cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4); td->td_pcb->pcb_cr3 = cr3; load_cr3(cr3); critical_exit(); ==== //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#41 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.260 2009/03/02 18:43:50 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.262 2009/03/22 04:32:05 alc Exp $"); #include "opt_isa.h" #include "opt_cpu.h" @@ -103,6 +103,7 @@ register struct proc *p1; struct pcb *pcb2; struct mdproc *mdp2; + pmap_t pmap2; p1 = td1->td_proc; if ((flags & RFPROC) == 0) @@ -150,7 +151,8 @@ * Set registers for trampoline to user mode. Leave space for the * return address on stack. These are the kernel mode register values. */ - pcb2->pcb_cr3 = vtophys(vmspace_pmap(p2->p_vmspace)->pm_pml4); + pmap2 = vmspace_pmap(p2->p_vmspace); + pcb2->pcb_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap2->pm_pml4); pcb2->pcb_r12 = (register_t)fork_return; /* fork_trampoline argument */ pcb2->pcb_rbp = 0; pcb2->pcb_rsp = (register_t)td2->td_frame - sizeof(void *); @@ -287,7 +289,6 @@ * Set registers for trampoline to user mode. Leave space for the * return address on stack. These are the kernel mode register values. */ - pcb2->pcb_cr3 = vtophys(vmspace_pmap(td->td_proc->p_vmspace)->pm_pml4); pcb2->pcb_r12 = (register_t)fork_return; /* trampoline arg */ pcb2->pcb_rbp = 0; pcb2->pcb_rsp = (register_t)td->td_frame - sizeof(void *); /* trampoline arg */ @@ -295,6 +296,7 @@ pcb2->pcb_rip = (register_t)fork_trampoline; /* * If we didn't copy the pcb, we'd need to do the following registers: + * pcb2->pcb_cr3: cloned above. * pcb2->pcb_dr*: cloned above. * pcb2->pcb_savefpu: cloned above. * pcb2->pcb_onfault: cloned above (always NULL here?). ==== //depot/projects/smpng/sys/amd64/conf/GENERIC#74 (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/amd64/conf/GENERIC,v 1.521 2009/02/23 18:34:56 thompsa Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.522 2009/03/19 20:33:26 thompsa Exp $ cpu HAMMER ident GENERIC @@ -295,7 +295,6 @@ device ural # Ralink Technology RT2500USB wireless NICs device rum # Ralink Technology RT2501USB wireless NICs device urio # Diamond Rio 500 MP3 player -device uscanner # Scanners # USB Serial devices device uark # Technologies ARK3116 based serial adapters device ubsa # Belkin F5U103 and compatible serial adapters ==== //depot/projects/smpng/sys/amd64/include/pmap.h#31 (text+ko) ==== @@ -39,7 +39,7 @@ * * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.148 2008/08/04 08:04:09 alc Exp $ + * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.150 2009/03/22 18:56:26 alc Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -160,13 +160,7 @@ #define PDESHIFT (3) /* - * Address of current and alternate address space page table maps - * and directories. - * XXX it might be saner to just direct map all of physical memory - * into the kernel using 2MB pages. We have enough space to do - * it (2^47 bits of KVM, while current max physical addressability - * is 2^40 physical bits). Then we can get rid of the evil hole - * in the page tables and the evil overlapping. + * Address of current address space page table maps and directories. */ #ifdef _KERNEL #define addr_PTmap (KVADDR(PML4PML4I, 0, 0, 0)) @@ -243,6 +237,10 @@ TAILQ_HEAD(,pv_entry) pv_list; }; +/* + * The kernel virtual address (KVA) of the level 4 page table page is always + * within the direct map (DMAP) region. + */ struct pmap { struct mtx pm_mtx; pml4_entry_t *pm_pml4; /* KVA of level 4 page table */ ==== //depot/projects/smpng/sys/arm/conf/HL200#8 (text+ko) ==== @@ -15,7 +15,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/HL200,v 1.9 2009/02/23 18:34:56 thompsa Exp $ +# $FreeBSD: src/sys/arm/conf/HL200,v 1.10 2009/03/19 20:33:26 thompsa Exp $ ident HL200 @@ -103,7 +103,6 @@ device ural # Ralink Technology RT2500USB wireless NICs device rum # Ralink Technology RT2501USB wireless NICs device urio # Diamond Rio 500 MP3 player -device uscanner # Scanners # USB Ethernet, requires miibus device miibus device aue # ADMtek USB Ethernet ==== //depot/projects/smpng/sys/arm/conf/KB920X#15 (text) ==== @@ -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/KB920X,v 1.22 2009/02/23 18:34:56 thompsa Exp $ +# $FreeBSD: src/sys/arm/conf/KB920X,v 1.23 2009/03/19 20:33:26 thompsa Exp $ ident KB920X @@ -104,7 +104,6 @@ device ural # Ralink Technology RT2500USB wireless NICs device rum # Ralink Technology RT2501USB wireless NICs device urio # Diamond Rio 500 MP3 player -device uscanner # Scanners # USB Ethernet, requires miibus device miibus device aue # ADMtek USB Ethernet ==== //depot/projects/smpng/sys/boot/forth/loader.conf#59 (text+ko) ==== @@ -6,7 +6,7 @@ # # All arguments must be in double quotes. # -# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.137 2009/03/16 10:36:24 dchagin Exp $ +# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.138 2009/03/19 20:33:26 thompsa Exp $ ############################################################## ### Basic configuration options ############################ @@ -379,7 +379,6 @@ ums_load="NO" # Mouse umass_load="NO" # Mass Storage Devices umodem_load="NO" # Modems -uscanner_load="NO" # Scanners if_aue_load="NO" # ADMtek USB ethernet if_axe_load="NO" # ASIX Electronics AX88172 USB ethernet if_cue_load="NO" # CATC USB ethernet ==== //depot/projects/smpng/sys/boot/pc98/libpc98/bioscd.c#4 (text) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/bioscd.c,v 1.3 2007/10/24 04:03:25 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/bioscd.c,v 1.5 2009/03/20 13:03:33 nyan Exp $"); /* * BIOS CD device handling for CD's that have been booted off of via no @@ -170,9 +170,9 @@ static void bc_print(int verbose) { + char line[80]; int i; - char line[80]; - + for (i = 0; i < nbcinfo; i++) { sprintf(line, " cd%d: Device 0x%x\n", i, bcinfo[i].bc_sp.sp_devicespec); @@ -232,7 +232,7 @@ if (dblk % (BIOSCD_SECSIZE / DEV_BSIZE) != 0) return (EINVAL); dblk /= (BIOSCD_SECSIZE / DEV_BSIZE); - DEBUG("read %d from %d to %p", blks, dblk, buf); + DEBUG("read %d from %lld to %p", blks, dblk, buf); if (rsize) *rsize = 0; @@ -241,9 +241,9 @@ return (EIO); } #ifdef BD_SUPPORT_FRAGS - DEBUG("bc_strategy: frag read %d from %d+%d to %p", + DEBUG("frag read %d from %lld+%d to %p", fragsize, dblk, blks, buf + (blks * BIOSCD_SECSIZE)); - if (fragsize && bc_read(unit, dblk + blks, 1, fragsize)) { + if (fragsize && bc_read(unit, dblk + blks, 1, fragbuf)) { DEBUG("frag read error"); return(EIO); } @@ -254,11 +254,14 @@ return (0); } +/* Max number of sectors to bounce-buffer at a time. */ +#define CD_BOUNCEBUF 8 + static int bc_read(int unit, daddr_t dblk, int blks, caddr_t dest) { - u_int result, retry; - static unsigned short packet[8]; + u_int maxfer, resid, result, retry, x; + caddr_t bbuf, p, xp; int biosdev; #ifdef DISK_DEBUG int error; @@ -272,40 +275,73 @@ if (blks == 0) return (0); + /* Decide whether we have to bounce */ + if (VTOP(dest) >> 20 != 0) { + /* + * The destination buffer is above first 1MB of + * physical memory so we have to arrange a suitable + * bounce buffer. + */ + x = min(CD_BOUNCEBUF, (unsigned)blks); + bbuf = alloca(x * BIOSCD_SECSIZE); + maxfer = x; + } else { + bbuf = NULL; + maxfer = 0; + } + biosdev = bc_unit2bios(unit); - /* - * Loop retrying the operation a couple of times. The BIOS - * may also retry. - */ - for (retry = 0; retry < 3; retry++) { - /* If retrying, reset the drive */ - if (retry > 0) { + resid = blks; + p = dest; + + while (resid > 0) { + if (bbuf) + xp = bbuf; + else + xp = p; + x = resid; + if (maxfer > 0) + x = min(x, maxfer); + + /* + * Loop retrying the operation a couple of times. The BIOS + * may also retry. + */ + for (retry = 0; retry < 3; retry++) { + /* If retrying, reset the drive */ + if (retry > 0) { + v86.ctl = V86_FLAGS; + v86.addr = 0x1b; + v86.eax = 0x0300 | biosdev; + v86int(); + } + v86.ctl = V86_FLAGS; v86.addr = 0x1b; - v86.eax = 0x0300 | biosdev; + v86.eax = 0x0600 | (biosdev & 0x7f); + v86.ebx = x * BIOSCD_SECSIZE; + v86.ecx = dblk & 0xffff; + v86.edx = (dblk >> 16) & 0xffff; + v86.ebp = VTOPOFF(xp); + v86.es = VTOPSEG(xp); v86int(); + result = (v86.efl & PSL_C); + if (result == 0) + break; } - - v86.ctl = V86_FLAGS; - v86.addr = 0x1b; - v86.eax = 0x0600 | (biosdev & 0x7f); - v86.ebx = blks * BIOSCD_SECSIZE; - v86.ecx = dblk & 0xffff; - v86.edx = (dblk >> 16) & 0xffff; - v86.ebp = VTOPOFF(dest); - v86.es = VTOPSEG(dest); - v86int(); - result = (v86.efl & PSL_C); - if (result == 0) - break; - } #ifdef DISK_DEBUG - error = (v86.eax >> 8) & 0xff; + error = (v86.eax >> 8) & 0xff; #endif - DEBUG("%d sectors from %ld to %p (0x%x) %s", blks, dblk, dest, - VTOP(dest), result ? "failed" : "ok"); - DEBUG("unit %d status 0x%x", unit, error); + DEBUG("%d sectors from %lld to %p (0x%x) %s", x, dblk, p, + VTOP(p), result ? "failed" : "ok"); + DEBUG("unit %d status 0x%x", unit, error); + if (bbuf != NULL) + bcopy(bbuf, p, x * BIOSCD_SECSIZE); + p += (x * BIOSCD_SECSIZE); + dblk += x; + resid -= x; + } /* hexdump(dest, (blks * BIOSCD_SECSIZE)); */ return(0); ==== //depot/projects/smpng/sys/boot/pc98/libpc98/biosdisk.c#16 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.40 2009/03/19 12:33:37 nyan Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/biosdisk.c,v 1.41 2009/03/20 05:33:58 nyan Exp $"); /* * BIOS disk device handling. @@ -269,17 +269,8 @@ /* Check for a "dedicated" disk */ for (j = 0; j < od->od_nslices; j++) { - switch(dptr[j].dp_mid) { - case DOSMID_386BSD: - sprintf(line, " disk%ds%d", i, j + 1); - bd_printbsdslice(od, - dptr[j].dp_scyl * od->od_hds * od->od_sec + - dptr[j].dp_shd * od->od_sec + dptr[j].dp_ssect, - line, verbose); - break; - default: - break; - } + sprintf(line, " disk%ds%d", i, j + 1); + bd_printslice(od, &dptr[j], line, verbose); } } bd_closedisk(od); @@ -311,6 +302,52 @@ } /* + * Print information about slices on a disk. For the size calculations we + * assume a 512 byte sector. + */ +static void +bd_printslice(struct open_disk *od, struct pc98_partition *dp, char *prefix, + int verbose) +{ + int cylsecs, start, size; + char stats[80]; + char line[80]; + + cylsecs = od->od_hds * od->od_sec; + start = dp->dp_scyl * cylsecs + dp->dp_shd * od->od_sec + dp->dp_ssect; + size = (dp->dp_ecyl - dp->dp_scyl + 1) * cylsecs; + + if (verbose) + sprintf(stats, " %s (%d - %d)", display_size(size), + start, start + size); + else + stats[0] = '\0'; + + switch(dp->dp_mid & PC98_MID_MASK) { + case PC98_MID_386BSD: + bd_printbsdslice(od, start, prefix, verbose); + return; + case 0x00: /* unused partition */ + return; + case 0x01: + sprintf(line, "%s: FAT-12%s\n", prefix, stats); + break; + case 0x11: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + sprintf(line, "%s: FAT-16%s\n", prefix, stats); + break; + default: + sprintf(line, "%s: Unknown fs: 0x%x %s\n", prefix, dp->dp_mid, + stats); + } + pager_output(line); +} + +/* * Print out each valid partition in the disklabel of a FreeBSD slice. * For size calculations, we assume a 512 byte sector size. */ @@ -349,7 +386,7 @@ /* Only print out statistics in verbose mode */ if (verbose) - sprintf(line, " %s%c: %s %s (%d - %d)\n", prefix, 'a' + i, + sprintf(line, " %s%c: %s %s (%d - %d)\n", prefix, 'a' + i, (lp->d_partitions[i].p_fstype == FS_SWAP) ? "swap " : (lp->d_partitions[i].p_fstype == FS_VINUM) ? "vinum" : "FFS ", ==== //depot/projects/smpng/sys/boot/pc98/libpc98/time.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/time.c,v 1.6 2005/05/08 14:17:28 nyan Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/pc98/libpc98/time.c,v 1.7 2009/03/20 05:21:29 nyan Exp $"); #include #include @@ -33,23 +33,21 @@ #include "bootstrap.h" #include "libi386.h" +static int bios_seconds(void); + /* - * Return the time in seconds since the beginning of the day. - * - * If we pass midnight, don't wrap back to 0. + * Return the BIOS time-of-day value. * * XXX uses undocumented BCD support from libstand. */ - -time_t -time(time_t *t) +static int +bios_seconds(void) { - static time_t lasttime, now; int hr, minute, sec; unsigned char bios_time[6]; - + v86.ctl = 0; - v86.addr = 0x1c; /* int 0x1c, function 0 */ + v86.addr = 0x1c; /* int 0x1c, function 0 */ v86.eax = 0x0000; v86.es = VTOPSEG(bios_time); v86.ebx = VTOPOFF(bios_time); @@ -59,7 +57,20 @@ minute = bcd2bin(bios_time[4]); sec = bcd2bin(bios_time[5]); - now = hr * 3600 + minute * 60 + sec; + return (hr * 3600 + minute * 60 + sec); +} + +/* + * Return the time in seconds since the beginning of the day. + */ +time_t +time(time_t *t) +{ + static time_t lasttime; + time_t now; + + now = bios_seconds(); + if (now < lasttime) now += 24 * 3600; lasttime = now; ==== //depot/projects/smpng/sys/conf/NOTES#164 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1531 2009/03/15 14:21:05 rwatson Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1532 2009/03/19 20:33:26 thompsa Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -2413,8 +2413,6 @@ device ums # Diamond Rio 500 MP3 player device urio -# USB scanners -device uscanner # # USB serial support device ucom ==== //depot/projects/smpng/sys/conf/files#233 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1382 2009/03/15 14:21:05 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1383 2009/03/19 20:33:26 thompsa Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1656,10 +1656,6 @@ dev/usb/template/usb_template_msc.c optional usb_template dev/usb/template/usb_template_mtp.c optional usb_template # -# USB image drivers -# -dev/usb/image/uscanner.c optional uscanner -# # USB END # dev/utopia/idtphy.c optional utopia ==== //depot/projects/smpng/sys/dev/age/if_age.c#5 (text+ko) ==== @@ -28,7 +28,7 @@ /* Driver for Attansic Technology Corp. L1 Gigabit Ethernet. */ #include -__FBSDID("$FreeBSD: src/sys/dev/age/if_age.c,v 1.6 2008/11/07 07:02:28 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/age/if_age.c,v 1.7 2009/03/23 00:27:46 yongari Exp $"); #include #include @@ -1369,7 +1369,7 @@ AGE_LOCK_ASSERT(sc); - if (pci_find_extcap(sc->age_dev, PCIY_PMG, &pmc) == 0) { + if (pci_find_extcap(sc->age_dev, PCIY_PMG, &pmc) != 0) { CSR_WRITE_4(sc, AGE_WOL_CFG, 0); /* * No PME capability, PHY power down. ==== //depot/projects/smpng/sys/dev/agp/agp.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/agp/agp.c,v 1.63 2009/03/09 13:27:33 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/agp/agp.c,v 1.64 2009/03/20 18:30:20 rnoland Exp $"); #include "opt_agp.h" #include "opt_bus.h" @@ -532,7 +532,7 @@ int error; /* Do some sanity checks first. */ - if (offset < 0 || (offset & (AGP_PAGE_SIZE - 1)) != 0 || + if ((offset & (AGP_PAGE_SIZE - 1)) != 0 || offset + mem->am_size > AGP_GET_APERTURE(dev)) { device_printf(dev, "binding memory at bad offset %#x\n", (int)offset); ==== //depot/projects/smpng/sys/dev/agp/agp_amd64.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/agp/agp_amd64.c,v 1.18 2009/03/09 13:27:33 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/agp/agp_amd64.c,v 1.19 2009/03/20 18:30:20 rnoland Exp $"); #include "opt_bus.h" @@ -337,7 +337,7 @@ { struct agp_amd64_softc *sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return (EINVAL); sc->gatt->ag_virtual[offset >> AGP_PAGE_SHIFT] = @@ -351,7 +351,7 @@ { struct agp_amd64_softc *sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return (EINVAL); sc->gatt->ag_virtual[offset >> AGP_PAGE_SHIFT] = 0; ==== //depot/projects/smpng/sys/dev/agp/agp_i810.c#8 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/agp/agp_i810.c,v 1.50 2009/03/09 13:27:33 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/agp/agp_i810.c,v 1.51 2009/03/20 18:30:20 rnoland Exp $"); #include "opt_bus.h" @@ -840,7 +840,7 @@ { struct agp_i810_softc *sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) { + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) { device_printf(dev, "failed: offset is 0x%08jx, shift is %d, entries is %d\n", (intmax_t)offset, AGP_PAGE_SHIFT, sc->gatt->ag_entries); return EINVAL; } @@ -862,7 +862,7 @@ { struct agp_i810_softc *sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return EINVAL; if ( sc->chiptype != CHIP_I810 ) { @@ -1016,7 +1016,7 @@ vm_offset_t i; /* Do some sanity checks first. */ - if (offset < 0 || (offset & (AGP_PAGE_SIZE - 1)) != 0 || + if ((offset & (AGP_PAGE_SIZE - 1)) != 0 || offset + mem->am_size > AGP_GET_APERTURE(dev)) { device_printf(dev, "binding memory at bad offset %#x\n", (int)offset); ==== //depot/projects/smpng/sys/dev/agp/agp_intel.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/agp/agp_intel.c,v 1.37 2009/03/09 13:27:33 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/agp/agp_intel.c,v 1.38 2009/03/20 18:30:20 rnoland Exp $"); #include "opt_bus.h" @@ -371,7 +371,7 @@ sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return (EINVAL); sc->gatt->ag_virtual[offset >> AGP_PAGE_SHIFT] = physical | 0x17; @@ -385,7 +385,7 @@ sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return (EINVAL); sc->gatt->ag_virtual[offset >> AGP_PAGE_SHIFT] = 0; ==== //depot/projects/smpng/sys/dev/agp/agp_via.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/agp/agp_via.c,v 1.28 2009/03/09 13:27:33 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/agp/agp_via.c,v 1.29 2009/03/20 18:30:20 rnoland Exp $"); #include "opt_bus.h" @@ -362,7 +362,7 @@ { struct agp_via_softc *sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return EINVAL; sc->gatt->ag_virtual[offset >> AGP_PAGE_SHIFT] = physical; @@ -374,7 +374,7 @@ { struct agp_via_softc *sc = device_get_softc(dev); - if (offset < 0 || offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) + if (offset >= (sc->gatt->ag_entries << AGP_PAGE_SHIFT)) return EINVAL; sc->gatt->ag_virtual[offset >> AGP_PAGE_SHIFT] = 0; ==== //depot/projects/smpng/sys/dev/ath/ath_hal/ah.h#5 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ah.h,v 1.6 2009/02/24 01:07:06 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ah.h,v 1.7 2009/03/19 19:29:10 sam Exp $ */ #ifndef _ATH_AH_H_ @@ -598,8 +598,6 @@ */ struct ath_hal { uint32_t ah_magic; /* consistency check magic number */ - uint32_t ah_abi; /* HAL ABI version */ -#define HAL_ABI_VERSION 0x08112800 /* YYMMDDnn */ uint16_t ah_devid; /* PCI device ID */ uint16_t ah_subvendorid; /* PCI subvendor ID */ HAL_SOFTC ah_sc; /* back pointer to driver/os state */ ==== //depot/projects/smpng/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#4 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c,v 1.4 2009/02/24 01:07:06 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c,v 1.5 2009/03/19 19:29:10 sam Exp $ */ #include "opt_ah.h" @@ -38,7 +38,6 @@ static const struct ath_hal_private ar5210hal = {{ .ah_magic = AR5210_MAGIC, - .ah_abi = HAL_ABI_VERSION, .ah_getRateTable = ar5210GetRateTable, .ah_detach = ar5210Detach, ==== //depot/projects/smpng/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#4 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c,v 1.5 2009/02/24 01:07:06 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c,v 1.6 2009/03/19 19:29:10 sam Exp $ */ #include "opt_ah.h" @@ -38,7 +38,6 @@ static const struct ath_hal_private ar5211hal = {{ .ah_magic = AR5211_MAGIC, - .ah_abi = HAL_ABI_VERSION, .ah_getRateTable = ar5211GetRateTable, .ah_detach = ar5211Detach, ==== //depot/projects/smpng/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#4 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c,v 1.4 2009/02/24 01:07:06 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c,v 1.5 2009/03/19 19:29:10 sam Exp $ */ #include "opt_ah.h" @@ -34,7 +34,6 @@ static const struct ath_hal_private ar5212hal = {{ .ah_magic = AR5212_MAGIC, - .ah_abi = HAL_ABI_VERSION, >>> TRUNCATED FOR MAIL (1000 lines) <<<