PERFORCE change 102592 for review
John Baldwin
jhb at FreeBSD.org
Thu Jul 27 20:10:39 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=102592
Change 102592 by jhb at jhb_mutex on 2006/07/27 20:09:45
IFC @102591.
Affected files ...
.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#56 integrate
.. //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#33 integrate
.. //depot/projects/smpng/sys/amd64/ia32/ia32_syscall.c#14 integrate
.. //depot/projects/smpng/sys/arm/at91/kb920x_machdep.c#8 integrate
.. //depot/projects/smpng/sys/arm/include/db_machdep.h#5 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/i80321.c#6 integrate
.. //depot/projects/smpng/sys/arm/xscale/i80321/iq80321.c#11 integrate
.. //depot/projects/smpng/sys/boot/forth/loader.conf#42 integrate
.. //depot/projects/smpng/sys/compat/svr4/svr4_stream.c#39 integrate
.. //depot/projects/smpng/sys/conf/Makefile.arm#24 integrate
.. //depot/projects/smpng/sys/conf/NOTES#125 integrate
.. //depot/projects/smpng/sys/conf/files#182 integrate
.. //depot/projects/smpng/sys/conf/files.i386#99 integrate
.. //depot/projects/smpng/sys/conf/files.powerpc#30 integrate
.. //depot/projects/smpng/sys/crypto/via/padlock.c#6 integrate
.. //depot/projects/smpng/sys/crypto/via/padlock.h#1 branch
.. //depot/projects/smpng/sys/crypto/via/padlock_cipher.c#1 branch
.. //depot/projects/smpng/sys/crypto/via/padlock_hash.c#1 branch
.. //depot/projects/smpng/sys/dev/acpica/acpi_thermal.c#37 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#70 integrate
.. //depot/projects/smpng/sys/dev/ata/ata-pci.h#44 integrate
.. //depot/projects/smpng/sys/dev/ath/ath_rate/sample/sample.h#3 integrate
.. //depot/projects/smpng/sys/dev/ath/if_ath.c#42 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#70 integrate
.. //depot/projects/smpng/sys/dev/iwi/if_iwi.c#18 integrate
.. //depot/projects/smpng/sys/dev/mii/gentbi.c#1 branch
.. //depot/projects/smpng/sys/dev/mii/ip1000phy.c#1 branch
.. //depot/projects/smpng/sys/dev/mii/ip1000phyreg.h#1 branch
.. //depot/projects/smpng/sys/dev/mii/miidevs#18 integrate
.. //depot/projects/smpng/sys/dev/mpt/mpt_cam.c#12 integrate
.. //depot/projects/smpng/sys/dev/mpt/mpt_pci.c#23 integrate
.. //depot/projects/smpng/sys/dev/ral/rt2560.c#4 integrate
.. //depot/projects/smpng/sys/dev/scc/scc_core.c#2 integrate
.. //depot/projects/smpng/sys/dev/scc/scc_dev_z8530.c#2 integrate
.. //depot/projects/smpng/sys/dev/sk/if_sk.c#5 integrate
.. //depot/projects/smpng/sys/dev/sk/if_skreg.h#4 integrate
.. //depot/projects/smpng/sys/dev/stge/if_stge.c#1 branch
.. //depot/projects/smpng/sys/dev/stge/if_stgereg.h#1 branch
.. //depot/projects/smpng/sys/dev/uart/uart_cpu_powerpc.c#2 integrate
.. //depot/projects/smpng/sys/dev/uart/uart_dev_z8530.c#12 integrate
.. //depot/projects/smpng/sys/dev/uart/uart_tty.c#20 integrate
.. //depot/projects/smpng/sys/dev/usb/if_ural.c#17 integrate
.. //depot/projects/smpng/sys/dev/usb/uplcom.c#26 integrate
.. //depot/projects/smpng/sys/dev/usb/usbdevs#92 integrate
.. //depot/projects/smpng/sys/fs/udf/ecma167-udf.h#6 integrate
.. //depot/projects/smpng/sys/fs/udf/udf_vfsops.c#29 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli.c#13 integrate
.. //depot/projects/smpng/sys/geom/eli/g_eli_integrity.c#2 integrate
.. //depot/projects/smpng/sys/i386/conf/GENERIC#81 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#112 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_trap.c#10 integrate
.. //depot/projects/smpng/sys/kern/kern_malloc.c#45 integrate
.. //depot/projects/smpng/sys/kern/kern_mutex.c#133 integrate
.. //depot/projects/smpng/sys/kern/subr_acl_posix1e.c#3 integrate
.. //depot/projects/smpng/sys/kern/sys_socket.c#24 integrate
.. //depot/projects/smpng/sys/kern/uipc_domain.c#18 integrate
.. //depot/projects/smpng/sys/kern/uipc_sockbuf.c#1 branch
.. //depot/projects/smpng/sys/kern/uipc_socket.c#88 integrate
.. //depot/projects/smpng/sys/kern/uipc_socket2.c#56 integrate
.. //depot/projects/smpng/sys/kern/uipc_syscalls.c#92 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#63 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#114 integrate
.. //depot/projects/smpng/sys/modules/Makefile#126 integrate
.. //depot/projects/smpng/sys/modules/agp/Makefile#11 integrate
.. //depot/projects/smpng/sys/modules/asr/Makefile#4 integrate
.. //depot/projects/smpng/sys/modules/bridgestp/Makefile#1 branch
.. //depot/projects/smpng/sys/modules/hwpmc/Makefile#3 integrate
.. //depot/projects/smpng/sys/modules/if_bridge/Makefile#5 integrate
.. //depot/projects/smpng/sys/modules/mii/Makefile#10 integrate
.. //depot/projects/smpng/sys/modules/osf1/Makefile#8 delete
.. //depot/projects/smpng/sys/modules/padlock/Makefile#2 integrate
.. //depot/projects/smpng/sys/modules/stge/Makefile#1 branch
.. //depot/projects/smpng/sys/net/bpf.c#62 integrate
.. //depot/projects/smpng/sys/net/bridgestp.c#8 integrate
.. //depot/projects/smpng/sys/net/bridgestp.h#1 branch
.. //depot/projects/smpng/sys/net/if_bridge.c#33 integrate
.. //depot/projects/smpng/sys/net/if_bridgevar.h#10 integrate
.. //depot/projects/smpng/sys/net/if_enc.c#5 integrate
.. //depot/projects/smpng/sys/net/if_ethersubr.c#73 integrate
.. //depot/projects/smpng/sys/net/if_gif.c#36 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211.c#22 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211.h#9 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_freebsd.h#7 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.c#27 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_ioctl.h#12 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_output.c#25 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_proto.c#20 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_proto.h#12 integrate
.. //depot/projects/smpng/sys/net80211/ieee80211_var.h#21 integrate
.. //depot/projects/smpng/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c#14 integrate
.. //depot/projects/smpng/sys/netgraph/ng_ether.c#31 integrate
.. //depot/projects/smpng/sys/netgraph/ng_ksocket.c#30 integrate
.. //depot/projects/smpng/sys/netinet6/README#3 delete
.. //depot/projects/smpng/sys/netinet6/icmp6.c#33 integrate
.. //depot/projects/smpng/sys/netipsec/keysock.c#14 integrate
.. //depot/projects/smpng/sys/netncp/ncp_sock.c#8 integrate
.. //depot/projects/smpng/sys/netsmb/smb_trantcp.c#19 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_socket.c#45 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_srvsock.c#28 integrate
.. //depot/projects/smpng/sys/powerpc/conf/GENERIC#36 integrate
.. //depot/projects/smpng/sys/powerpc/conf/NOTES#3 integrate
.. //depot/projects/smpng/sys/powerpc/include/md_var.h#9 integrate
.. //depot/projects/smpng/sys/powerpc/include/ofw_machdep.h#3 integrate
.. //depot/projects/smpng/sys/powerpc/include/pcb.h#8 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/clock.c#18 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/mem.c#2 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/ofw_machdep.c#13 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/trap.c#51 integrate
.. //depot/projects/smpng/sys/powerpc/psim/sio_iobus.c#4 delete
.. //depot/projects/smpng/sys/powerpc/psim/uart_iobus.c#1 branch
.. //depot/projects/smpng/sys/sparc64/conf/GENERIC#72 integrate
.. //depot/projects/smpng/sys/sys/_label.h#7 integrate
.. //depot/projects/smpng/sys/sys/bufobj.h#7 integrate
.. //depot/projects/smpng/sys/sys/extattr.h#8 integrate
.. //depot/projects/smpng/sys/sys/mbuf.h#63 integrate
.. //depot/projects/smpng/sys/sys/mutex.h#65 integrate
.. //depot/projects/smpng/sys/sys/protosw.h#21 integrate
.. //depot/projects/smpng/sys/sys/socket.h#29 integrate
.. //depot/projects/smpng/sys/sys/socketvar.h#53 integrate
.. //depot/projects/smpng/sys/sys/syscallsubr.h#49 integrate
.. //depot/projects/smpng/sys/sys/unpcb.h#10 integrate
.. //depot/projects/smpng/sys/vm/vm.h#10 integrate
.. //depot/projects/smpng/sys/vm/vm_fault.c#59 integrate
.. //depot/projects/smpng/sys/vm/vm_map.c#81 integrate
.. //depot/projects/smpng/sys/vm/vm_meter.c#30 integrate
.. //depot/projects/smpng/sys/vm/vm_object.c#82 integrate
Differences ...
==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#56 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.650 2006/06/19 22:36:01 davidxu Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.651 2006/07/27 19:47:22 jhb Exp $");
#include "opt_atalk.h"
#include "opt_atpic.h"
==== //depot/projects/smpng/sys/amd64/amd64/vm_machdep.c#33 (text+ko) ====
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.250 2005/10/24 20:53:51 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.251 2006/07/24 12:24:56 davidxu Exp $");
#include "opt_isa.h"
#include "opt_cpu.h"
@@ -328,7 +328,6 @@
td->td_frame->tf_rsp =
((register_t)stack->ss_sp + stack->ss_size) & ~0x0f;
td->td_frame->tf_rsp -= 8;
- td->td_frame->tf_rbp = 0;
td->td_frame->tf_rip = (register_t)entry;
/*
==== //depot/projects/smpng/sys/amd64/ia32/ia32_syscall.c#14 (text+ko) ====
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_syscall.c,v 1.11 2006/02/08 08:09:15 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/ia32/ia32_syscall.c,v 1.12 2006/07/27 19:50:16 jhb Exp $");
/*
* 386 Trap and System call handling
@@ -274,6 +274,8 @@
* is not the case, this code will need to be revisited.
*/
STOPEVENT(p, S_SCX, code);
+
+ PTRACESTOP_SC(p, td, S_PT_SCX);
PTRACESTOP_SC(p, td, S_PT_SCX);
}
==== //depot/projects/smpng/sys/arm/at91/kb920x_machdep.c#8 (text) ====
@@ -48,7 +48,7 @@
#include "opt_at91.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.12 2006/07/17 21:20:00 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.13 2006/07/25 23:07:35 cognet Exp $");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
@@ -478,7 +478,7 @@
dump_avail[2] = 0;
dump_avail[3] = 0;
- phys_avail[0] = freemempos - KERNVIRTADDR + KERNPHYSADDR;
+ phys_avail[0] = virtual_avail - KERNVIRTADDR + KERNPHYSADDR;
phys_avail[1] = KERNPHYSADDR + memsize;
phys_avail[2] = 0;
phys_avail[3] = 0;
==== //depot/projects/smpng/sys/arm/include/db_machdep.h#5 (text+ko) ====
@@ -24,7 +24,7 @@
* the rights to redistribute these changes.
*
* from: FreeBSD: src/sys/i386/include/db_machdep.h,v 1.16 1999/10/04
- * $FreeBSD: src/sys/arm/include/db_machdep.h,v 1.5 2005/01/05 21:58:48 imp Exp $
+ * $FreeBSD: src/sys/arm/include/db_machdep.h,v 1.6 2006/07/27 11:41:37 cognet Exp $
*/
#ifndef _MACHINE_DB_MACHDEP_H_
@@ -89,4 +89,7 @@
u_int branch_taken (u_int insn, u_int pc);
+#ifdef __ARMEB__
+#define BYTE_MSF (1)
+#endif
#endif /* !_MACHINE_DB_MACHDEP_H_ */
==== //depot/projects/smpng/sys/arm/xscale/i80321/i80321.c#6 (text+ko) ====
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.5 2005/06/09 12:26:20 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.6 2006/07/25 01:08:41 kevlo Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -73,23 +73,6 @@
*/
struct i80321_softc *i80321_softc;
-/* Built-in devices. */
-static const struct iopxs_device {
- const char *id_name;
- bus_addr_t id_offset;
- bus_size_t id_size;
-} iopxs_devices[] = {
- { "iopaau", VERDE_AAU_BASE, VERDE_AAU_SIZE },
-/* { "iopdma", VERDE_DMA_BASE0, VERDE_DMA_CHSIZE }, */
-/* { "iopdma", VERDE_DMA_BASE1, VERDE_DMA_CHSIZE }, */
- { "iopiic", VERDE_I2C_BASE0, VERDE_I2C_CHSIZE },
- { "iopiic", VERDE_I2C_BASE1, VERDE_I2C_CHSIZE },
-/* { "iopssp", VERDE_SSP_BASE, VERDE_SSP_SIZE }, */
- { "iopmu", VERDE_MU_BASE, VERDE_MU_SIZE },
- { "iopwdog", 0, 0 },
- { NULL, 0, 0 }
-};
-
#define PCI_MAPREG_MEM_ADDR(x) ((x) & 0xfffffff0)
/*
* i80321_attach:
==== //depot/projects/smpng/sys/arm/xscale/i80321/iq80321.c#11 (text+ko) ====
@@ -42,7 +42,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq80321.c,v 1.12 2006/05/05 19:14:57 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq80321.c,v 1.13 2006/07/25 01:08:41 kevlo Exp $");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
@@ -291,7 +291,7 @@
(void) disable_interrupts(I32_bit|F32_bit);
*(__volatile uint32_t *)(IQ80321_80321_VBASE + VERDE_ATU_BASE +
ATU_PCSR) = PCSR_RIB | PCSR_RPB;
- printf("Reset failed :'(\n");
+ printf("Reset failed!\n");
for(;;);
}
==== //depot/projects/smpng/sys/boot/forth/loader.conf#42 (text+ko) ====
@@ -6,7 +6,7 @@
#
# All arguments must be in double quotes.
#
-# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.106 2006/05/14 19:04:12 marius Exp $
+# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.108 2006/07/26 12:59:42 ache Exp $
##############################################################
### Basic configuration options ############################
@@ -243,6 +243,7 @@
if_sn_load="NO" # SMC 91Cxx
if_sr_load="NO" # synchronous RISCom/N2 / WANic 400/405
if_ste_load="NO" # Sundance Technologies ST201 fast ethernet
+if_stge_load="NO" # Sundance/Tamarack TC9021 gigabit ethernet
if_ti_load="NO" # Alteon Networks Tigon 1 and Tigon 2
if_tl_load="NO" # Texas Instruments TNETE100 ("ThunderLAN")
if_tx_load="NO" # SMC 83c17x fast ethernet
@@ -253,7 +254,6 @@
if_vx_load="NO" # 3Com 3C590 family
if_wb_load="NO" # Winbond W89C840F
if_wi_load="NO" # WaveLAN/IEEE 802.11 wireless NICs
-if_wx_load="NO" # Intel Gigabit Ethernet
if_xe_load="NO" # Xircom CreditCard PCMCIA
if_xl_load="NO" # 3Com Etherlink XL (3c900, 3c905, 3c905B)
@@ -309,6 +309,7 @@
snd_csa_load="NO" # csa
snd_ds1_load="NO" # ds1
snd_emu10k1_load="NO" # Creative Sound Blaster Live
+snd_emu10kx_load="NO" # Creative SoundBlaster Live! and Audigy
snd_es137x_load="NO" # es137x
snd_ess_load="NO" # ess
snd_fm801_load="NO" # fm801
==== //depot/projects/smpng/sys/compat/svr4/svr4_stream.c#39 (text+ko) ====
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_stream.c,v 1.59 2006/07/21 20:40:13 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_stream.c,v 1.60 2006/07/27 19:54:41 jhb Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
==== //depot/projects/smpng/sys/conf/Makefile.arm#24 (text+ko) ====
@@ -1,7 +1,7 @@
# Makefile.arm -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.arm,v 1.30 2006/07/18 21:16:39 cognet Exp $
+# $FreeBSD: src/sys/conf/Makefile.arm,v 1.31 2006/07/24 22:09:47 cognet Exp $
#
# Makefile for FreeBSD
#
@@ -44,12 +44,15 @@
.if !defined(DEBUG) && !defined(PROFLEVEL)
-CFLAGS += -mno-apcs-frame
STRIP_FLAGS = -S
.endif
DDB_ENABLED!= grep DDB opt_ddb.h || true
+.if empty(DDB_ENABLED)
+CFLAGS += -mno-apcs-frame
+.endif
+
SYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader \
-warn-common -export-dynamic -dynamic-linker /red/herring -o \
${FULLKERNEL}.noheader -X ${SYSTEM_OBJS} vers.o
==== //depot/projects/smpng/sys/conf/NOTES#125 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1374 2006/07/17 09:07:01 phk Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1375 2006/07/25 00:45:54 yongari Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
@@ -1785,6 +1785,9 @@
# SMC91C90/92/94/95 chips.
# ste: Sundance Technologies ST201 PCI fast ethernet controller, includes
# the D-Link DFE-550TX.
+# stge: Support for gigabit ethernet adapters based on the Sundance/Tamarack
+# TC9021 family of controllers, including the Sundance ST2021/ST2023,
+# the Sundance/Tamarack TC9021, the D-Link DL-4000 and ASUS NX1101.
# ti: Support for PCI gigabit ethernet NICs based on the Alteon Networks
# Tigon 1 and Tigon 2 chipsets. This includes the Alteon AceNIC, the
# 3Com 3c985, the Netgear GA620 and various others.
==== //depot/projects/smpng/sys/conf/files#182 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1130 2006/07/15 20:22:40 netchild Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1133 2006/07/25 02:15:28 rwatson Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -724,8 +724,10 @@
dev/mii/e1000phy.c optional miibus | e1000phy
# XXX only xl cards?
dev/mii/exphy.c optional miibus | exphy
+dev/mii/gentbi.c optional miibus | gentbi
# XXX only fxp cards?
dev/mii/inphy.c optional miibus | inphy
+dev/mii/ip1000phy.c optional miibus | ip1000phy
dev/mii/lxtphy.c optional miibus | lxtphy
dev/mii/mii.c optional miibus | mii
dev/mii/mii_physubr.c optional miibus | mii
@@ -950,6 +952,7 @@
dev/stg/tmc18c30_pccard.c optional stg pccard
dev/stg/tmc18c30_pci.c optional stg pci
dev/stg/tmc18c30_subr.c optional stg
+dev/stge/if_stge.c optional stge
dev/streams/streams.c optional streams
dev/sym/sym_hipd.c optional sym \
dependency "$S/dev/sym/sym_{conf,defs}.h"
@@ -1420,6 +1423,7 @@
kern/uipc_mqueue.c optional p1003_1b_mqueue
kern/uipc_proto.c standard
kern/uipc_sem.c optional p1003_1b_semaphores
+kern/uipc_sockbuf.c standard
kern/uipc_socket.c standard
kern/uipc_socket2.c standard
kern/uipc_syscalls.c standard
==== //depot/projects/smpng/sys/conf/files.i386#99 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.i386,v 1.562 2006/06/26 23:41:07 obrien Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.563 2006/07/22 16:18:47 pjd Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -135,6 +135,8 @@
no-implicit-rule
crypto/des/arch/i386/des_enc.S optional crypto | ipsec ipsec_esp | netsmb
crypto/via/padlock.c optional padlock
+crypto/via/padlock_cipher.c optional padlock
+crypto/via/padlock_hash.c optional padlock
dev/advansys/adv_isa.c optional adv isa
dev/aic/aic_isa.c optional aic isa
dev/arcmsr/arcmsr.c optional arcmsr pci
==== //depot/projects/smpng/sys/conf/files.powerpc#30 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.powerpc,v 1.54 2006/06/08 23:38:01 sam Exp $
+# $FreeBSD: src/sys/conf/files.powerpc,v 1.56 2006/07/26 19:44:42 marcel Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -125,8 +125,6 @@
powerpc/psim/iobus.c optional psim
powerpc/psim/ata_iobus.c optional ata psim
powerpc/psim/openpic_iobus.c optional psim
-powerpc/psim/sio_iobus.c optional sio psim
+powerpc/psim/uart_iobus.c optional uart psim
dev/scc/scc_bfe_macio.c optional scc powermac
-dev/zs/zs.c optional powermac zs
-dev/zs/zs_macio.c optional powermac zs
==== //depot/projects/smpng/sys/crypto/via/padlock.c#6 (text+ko) ====
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2005 Pawel Jakub Dawidek <pjd at FreeBSD.org>
- * Copyright (c) 2004 Mark R V Murray
+ * Copyright (c) 2005-2006 Pawel Jakub Dawidek <pjd at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -11,7 +10,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -25,27 +24,8 @@
* SUCH DAMAGE.
*/
-/* $OpenBSD: via.c,v 1.3 2004/06/15 23:36:55 deraadt Exp $ */
-/*-
- * Copyright (c) 2003 Jason Wright
- * Copyright (c) 2003, 2004 Theo de Raadt
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/crypto/via/padlock.c,v 1.6 2006/07/13 09:15:13 mr Exp $");
+__FBSDID("$FreeBSD: src/sys/crypto/via/padlock.c,v 1.10 2006/07/25 19:04:26 pjd Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -63,67 +43,15 @@
#endif
#include <opencrypto/cryptodev.h>
-#include <opencrypto/cryptosoft.h> /* for hmac_ipad_buffer and hmac_opad_buffer */
-#include <opencrypto/xform.h>
-#include <crypto/rijndael/rijndael.h>
+#include <crypto/via/padlock.h>
-#define PADLOCK_ROUND_COUNT_AES128 10
-#define PADLOCK_ROUND_COUNT_AES192 12
-#define PADLOCK_ROUND_COUNT_AES256 14
-
-#define PADLOCK_ALGORITHM_TYPE_AES 0
-
-#define PADLOCK_KEY_GENERATION_HW 0
-#define PADLOCK_KEY_GENERATION_SW 1
-
-#define PADLOCK_DIRECTION_ENCRYPT 0
-#define PADLOCK_DIRECTION_DECRYPT 1
-
-#define PADLOCK_KEY_SIZE_128 0
-#define PADLOCK_KEY_SIZE_192 1
-#define PADLOCK_KEY_SIZE_256 2
+/*
+ * Technical documentation about the PadLock engine can be found here:
+ *
+ * http://www.via.com.tw/en/downloads/whitepapers/initiatives/padlock/programming_guide.pdf
+ */
-union padlock_cw {
- uint64_t raw;
- struct {
- u_int round_count : 4;
- u_int algorithm_type : 3;
- u_int key_generation : 1;
- u_int intermediate : 1;
- u_int direction : 1;
- u_int key_size : 2;
- u_int filler0 : 20;
- u_int filler1 : 32;
- u_int filler2 : 32;
- u_int filler3 : 32;
- } __field;
-};
-#define cw_round_count __field.round_count
-#define cw_algorithm_type __field.algorithm_type
-#define cw_key_generation __field.key_generation
-#define cw_intermediate __field.intermediate
-#define cw_direction __field.direction
-#define cw_key_size __field.key_size
-#define cw_filler0 __field.filler0
-#define cw_filler1 __field.filler1
-#define cw_filler2 __field.filler2
-#define cw_filler3 __field.filler3
-
-struct padlock_session {
- union padlock_cw ses_cw __aligned(16);
- uint32_t ses_ekey[4 * (RIJNDAEL_MAXNR + 1) + 4] __aligned(16); /* 128 bit aligned */
- uint32_t ses_dkey[4 * (RIJNDAEL_MAXNR + 1) + 4] __aligned(16); /* 128 bit aligned */
- uint8_t ses_iv[16] __aligned(16); /* 128 bit aligned */
- struct auth_hash *ses_axf;
- uint8_t *ses_ictx;
- uint8_t *ses_octx;
- int ses_mlen;
- int ses_used;
- uint32_t ses_id;
- TAILQ_ENTRY(padlock_session) ses_next;
-};
-
struct padlock_softc {
int32_t sc_cid;
uint32_t sc_sid;
@@ -139,47 +67,50 @@
static int padlock_process(void *arg __unused, struct cryptop *crp,
int hint __unused);
-static __inline void
-padlock_cbc(void *in, void *out, size_t count, void *key, union padlock_cw *cw,
- void *iv)
-{
-#ifdef __GNUCLIKE_ASM
- /* The .byte line is really VIA C3 "xcrypt-cbc" instruction */
- __asm __volatile(
- "pushf \n\t"
- "popf \n\t"
- "rep \n\t"
- ".byte 0x0f, 0xa7, 0xd0"
- : "+a" (iv), "+c" (count), "+D" (out), "+S" (in)
- : "b" (key), "d" (cw)
- : "cc", "memory"
- );
-#endif
-}
+MALLOC_DEFINE(M_PADLOCK, "padlock_data", "PadLock Data");
static int
padlock_init(void)
{
struct padlock_softc *sc;
+ char capp[256];
+
#if defined(__i386__) && !defined(PC98)
+ /* If there is no AES support, we has nothing to do here. */
if (!(via_feature_xcrypt & VIA_HAS_AES)) {
- printf("PADLOCK: No ACE support.\n");
+ printf("PadLock: No ACE support.\n");
return (EINVAL);
- } else
- printf("PADLOCK: HW support loaded.\n");
+ }
+ strlcpy(capp, "AES-CBC", sizeof(capp));
+#if 0
+ strlcat(capp, ",AES-EBC", sizeof(capp));
+ strlcat(capp, ",AES-CFB", sizeof(capp));
+ strlcat(capp, ",AES-OFB", sizeof(capp));
+#endif
+ if (via_feature_xcrypt & VIA_HAS_SHA) {
+ strlcat(capp, ",SHA1", sizeof(capp));
+ strlcat(capp, ",SHA256", sizeof(capp));
+ }
+#if 0
+ if (via_feature_xcrypt & VIA_HAS_AESCTR)
+ strlcat(capp, ",AES-CTR", sizeof(capp));
+ if (via_feature_xcrypt & VIA_HAS_MM)
+ strlcat(capp, ",RSA", sizeof(capp));
+#endif
+ printf("PadLock: HW support loaded for %s.\n", capp);
#else
return (EINVAL);
#endif
- padlock_sc = sc = malloc(sizeof(*padlock_sc), M_DEVBUF,
+ padlock_sc = sc = malloc(sizeof(*padlock_sc), M_PADLOCK,
M_WAITOK | M_ZERO);
TAILQ_INIT(&sc->sc_sessions);
sc->sc_sid = 1;
sc->sc_cid = crypto_get_driverid(0);
if (sc->sc_cid < 0) {
- printf("PADLOCK: Could not get crypto driver id.\n");
- free(padlock_sc, M_DEVBUF);
+ printf("PadLock: Could not get crypto driver id.\n");
+ free(padlock_sc, M_PADLOCK);
padlock_sc = NULL;
return (ENOMEM);
}
@@ -218,7 +149,7 @@
}
if (active > 0) {
mtx_unlock(&sc->sc_sessions_mtx);
- printf("PADLOCK: Cannot destroy, %u sessions active.\n",
+ printf("PadLock: Cannot destroy, %u sessions active.\n",
active);
return (EBUSY);
}
@@ -226,102 +157,21 @@
for (ses = TAILQ_FIRST(&sc->sc_sessions); ses != NULL;
ses = TAILQ_FIRST(&sc->sc_sessions)) {
TAILQ_REMOVE(&sc->sc_sessions, ses, ses_next);
- free(ses, M_DEVBUF);
+ free(ses, M_PADLOCK);
}
mtx_destroy(&sc->sc_sessions_mtx);
crypto_unregister_all(sc->sc_cid);
- free(sc, M_DEVBUF);
+ free(sc, M_PADLOCK);
return (0);
}
-static void
-padlock_setup_enckey(struct padlock_session *ses, caddr_t key, int klen)
-{
- union padlock_cw *cw;
- int i;
-
- cw = &ses->ses_cw;
- if (cw->cw_key_generation == PADLOCK_KEY_GENERATION_SW) {
- /* Build expanded keys for both directions */
- rijndaelKeySetupEnc(ses->ses_ekey, key, klen);
- rijndaelKeySetupDec(ses->ses_dkey, key, klen);
- for (i = 0; i < 4 * (RIJNDAEL_MAXNR + 1); i++) {
- ses->ses_ekey[i] = ntohl(ses->ses_ekey[i]);
- ses->ses_dkey[i] = ntohl(ses->ses_dkey[i]);
- }
- } else {
- bcopy(key, ses->ses_ekey, klen);
- bcopy(key, ses->ses_dkey, klen);
- }
-}
-
-static void
-padlock_setup_mackey(struct padlock_session *ses, caddr_t key, int klen)
-{
- struct auth_hash *axf;
- int i;
-
- klen /= 8;
- axf = ses->ses_axf;
-
- for (i = 0; i < klen; i++)
- key[i] ^= HMAC_IPAD_VAL;
-
- axf->Init(ses->ses_ictx);
- axf->Update(ses->ses_ictx, key, klen);
- axf->Update(ses->ses_ictx, hmac_ipad_buffer, axf->blocksize - klen);
-
- for (i = 0; i < klen; i++)
- key[i] ^= (HMAC_IPAD_VAL ^ HMAC_OPAD_VAL);
-
- axf->Init(ses->ses_octx);
- axf->Update(ses->ses_octx, key, klen);
- axf->Update(ses->ses_octx, hmac_opad_buffer, axf->blocksize - klen);
-
- for (i = 0; i < klen; i++)
- key[i] ^= HMAC_OPAD_VAL;
-}
-
-/*
- * Compute keyed-hash authenticator.
- */
static int
-padlock_authcompute(struct padlock_session *ses, struct cryptodesc *crd,
- caddr_t buf, int flags)
-{
- u_char hash[HASH_MAX_LEN];
- struct auth_hash *axf;
- union authctx ctx;
- int error;
-
- axf = ses->ses_axf;
-
- bcopy(ses->ses_ictx, &ctx, axf->ctxsize);
-
- error = crypto_apply(flags, buf, crd->crd_skip, crd->crd_len,
- (int (*)(void *, void *, unsigned int))axf->Update, (caddr_t)&ctx);
- if (error != 0)
- return (error);
-
- axf->Final(hash, &ctx);
- bcopy(ses->ses_octx, &ctx, axf->ctxsize);
- axf->Update(&ctx, hash, axf->hashsize);
- axf->Final(hash, &ctx);
-
- /* Inject the authentication data */
- crypto_copyback(flags, buf, crd->crd_inject,
- ses->ses_mlen == 0 ? axf->hashsize : ses->ses_mlen, hash);
- return (0);
-}
-
-
-static int
padlock_newsession(void *arg __unused, uint32_t *sidp, struct cryptoini *cri)
{
struct padlock_softc *sc = padlock_sc;
struct padlock_session *ses = NULL;
struct cryptoini *encini, *macini;
- union padlock_cw *cw;
+ int error;
if (sc == NULL || sidp == NULL || cri == NULL)
return (EINVAL);
@@ -357,10 +207,6 @@
*/
if (encini == NULL)
return (EINVAL);
- if (encini->cri_klen != 128 && encini->cri_klen != 192 &&
- encini->cri_klen != 256) {
- return (EINVAL);
- }
/*
* Let's look for a free session structure.
@@ -380,7 +226,7 @@
}
mtx_unlock(&sc->sc_sessions_mtx);
if (ses == NULL) {
- ses = malloc(sizeof(*ses), M_DEVBUF, M_NOWAIT | M_ZERO);
+ ses = malloc(sizeof(*ses), M_PADLOCK, M_NOWAIT | M_ZERO);
if (ses == NULL)
return (ENOMEM);
ses->ses_used = 1;
@@ -390,76 +236,17 @@
mtx_unlock(&sc->sc_sessions_mtx);
}
- cw = &ses->ses_cw;
- bzero(cw, sizeof(*cw));
- cw->cw_algorithm_type = PADLOCK_ALGORITHM_TYPE_AES;
- cw->cw_key_generation = PADLOCK_KEY_GENERATION_SW;
- cw->cw_intermediate = 0;
- switch (encini->cri_klen) {
- case 128:
- cw->cw_round_count = PADLOCK_ROUND_COUNT_AES128;
- cw->cw_key_size = PADLOCK_KEY_SIZE_128;
-#ifdef HW_KEY_GENERATION
- /* This doesn't buy us much, that's why it is commented out. */
- cw->cw_key_generation = PADLOCK_KEY_GENERATION_HW;
-#endif
- break;
- case 192:
- cw->cw_round_count = PADLOCK_ROUND_COUNT_AES192;
- cw->cw_key_size = PADLOCK_KEY_SIZE_192;
- break;
- case 256:
- cw->cw_round_count = PADLOCK_ROUND_COUNT_AES256;
- cw->cw_key_size = PADLOCK_KEY_SIZE_256;
- break;
+ error = padlock_cipher_setup(ses, encini);
+ if (error != 0) {
+ padlock_freesession(NULL, ses->ses_id);
+ return (error);
}
- if (encini->cri_key != NULL)
- padlock_setup_enckey(ses, encini->cri_key, encini->cri_klen);
- arc4rand(ses->ses_iv, sizeof(ses->ses_iv), 0);
-
if (macini != NULL) {
- ses->ses_mlen = macini->cri_mlen;
-
- /* Find software structure which describes HMAC algorithm. */
- switch (macini->cri_alg) {
- case CRYPTO_NULL_HMAC:
- ses->ses_axf = &auth_hash_null;
- break;
- case CRYPTO_MD5_HMAC:
- ses->ses_axf = &auth_hash_hmac_md5;
- break;
- case CRYPTO_SHA1_HMAC:
- ses->ses_axf = &auth_hash_hmac_sha1;
- break;
- case CRYPTO_RIPEMD160_HMAC:
- ses->ses_axf = &auth_hash_hmac_ripemd_160;
- break;
- case CRYPTO_SHA2_256_HMAC:
- ses->ses_axf = &auth_hash_hmac_sha2_256;
- break;
- case CRYPTO_SHA2_384_HMAC:
- ses->ses_axf = &auth_hash_hmac_sha2_384;
- break;
- case CRYPTO_SHA2_512_HMAC:
- ses->ses_axf = &auth_hash_hmac_sha2_512;
- break;
- }
-
- /* Allocate memory for HMAC inner and outer contexts. */
- ses->ses_ictx = malloc(ses->ses_axf->ctxsize, M_CRYPTO_DATA,
- M_NOWAIT);
- ses->ses_octx = malloc(ses->ses_axf->ctxsize, M_CRYPTO_DATA,
- M_NOWAIT);
- if (ses->ses_ictx == NULL || ses->ses_octx == NULL) {
+ error = padlock_hash_setup(ses, macini);
+ if (error != 0) {
padlock_freesession(NULL, ses->ses_id);
- return (ENOMEM);
- }
-
- /* Setup key if given. */
- if (macini->cri_key != NULL) {
- padlock_setup_mackey(ses, macini->cri_key,
- macini->cri_klen);
+ return (error);
}
}
@@ -486,15 +273,8 @@
return (EINVAL);
}
TAILQ_REMOVE(&sc->sc_sessions, ses, ses_next);
- if (ses->ses_ictx != NULL) {
- bzero(ses->ses_ictx, sizeof(ses->ses_ictx));
- free(ses->ses_ictx, M_CRYPTO_DATA);
- }
- if (ses->ses_octx != NULL) {
- bzero(ses->ses_octx, sizeof(ses->ses_octx));
- free(ses->ses_octx, M_CRYPTO_DATA);
- }
- bzero(ses, sizeof(ses));
+ padlock_hash_free(ses);
+ bzero(ses, sizeof(*ses));
ses->ses_used = 0;
TAILQ_INSERT_TAIL(&sc->sc_sessions, ses, ses_next);
mtx_unlock(&sc->sc_sessions_mtx);
@@ -505,15 +285,11 @@
padlock_process(void *arg __unused, struct cryptop *crp, int hint __unused)
{
struct padlock_softc *sc = padlock_sc;
- struct padlock_session *ses;
- union padlock_cw *cw;
+ struct padlock_session *ses = NULL;
struct cryptodesc *crd, *enccrd, *maccrd;
- uint32_t *key;
- u_char *buf, *abuf;
int error = 0;
enccrd = maccrd = NULL;
- buf = NULL;
if (crp == NULL || crp->crp_callback == NULL || crp->crp_desc == NULL) {
error = EINVAL;
@@ -562,81 +338,36 @@
goto out;
}
- buf = malloc(enccrd->crd_len + 16, M_DEVBUF, M_NOWAIT);
- if (buf == NULL) {
- error = ENOMEM;
- goto out;
- }
- /* Buffer has to be 16 bytes aligned. */
- abuf = buf + 16 - ((uintptr_t)buf % 16);
-
- if ((enccrd->crd_flags & CRD_F_KEY_EXPLICIT) != 0)
- padlock_setup_enckey(ses, enccrd->crd_key, enccrd->crd_klen);
- if (maccrd != NULL && (maccrd->crd_flags & CRD_F_KEY_EXPLICIT) != 0)
- padlock_setup_mackey(ses, maccrd->crd_key, maccrd->crd_klen);
-
- cw = &ses->ses_cw;
- cw->cw_filler0 = 0;
- cw->cw_filler1 = 0;
- cw->cw_filler2 = 0;
- cw->cw_filler3 = 0;
- if ((enccrd->crd_flags & CRD_F_ENCRYPT) != 0) {
- cw->cw_direction = PADLOCK_DIRECTION_ENCRYPT;
- key = ses->ses_ekey;
- if ((enccrd->crd_flags & CRD_F_IV_EXPLICIT) != 0)
- bcopy(enccrd->crd_iv, ses->ses_iv, 16);
-
- if ((enccrd->crd_flags & CRD_F_IV_PRESENT) == 0) {
- crypto_copyback(crp->crp_flags, crp->crp_buf,
- enccrd->crd_inject, AES_BLOCK_LEN, ses->ses_iv);
- }
- } else {
- cw->cw_direction = PADLOCK_DIRECTION_DECRYPT;
- key = ses->ses_dkey;
- if ((enccrd->crd_flags & CRD_F_IV_EXPLICIT) != 0)
- bcopy(enccrd->crd_iv, ses->ses_iv, AES_BLOCK_LEN);
- else {
- crypto_copydata(crp->crp_flags, crp->crp_buf,
- enccrd->crd_inject, AES_BLOCK_LEN, ses->ses_iv);
- }
- }
-
/* Perform data authentication if requested before encryption. */
if (maccrd != NULL && maccrd->crd_next == enccrd) {
- error = padlock_authcompute(ses, maccrd, crp->crp_buf,
- crp->crp_flags);
+ error = padlock_hash_process(ses, maccrd, crp);
if (error != 0)
goto out;
}
- crypto_copydata(crp->crp_flags, crp->crp_buf, enccrd->crd_skip,
- enccrd->crd_len, abuf);
-
- padlock_cbc(abuf, abuf, enccrd->crd_len / 16, key, cw, ses->ses_iv);
+ error = padlock_cipher_process(ses, enccrd, crp);
+ if (error != 0)
+ goto out;
- crypto_copyback(crp->crp_flags, crp->crp_buf, enccrd->crd_skip,
- enccrd->crd_len, abuf);
-
/* Perform data authentication if requested after encryption. */
if (maccrd != NULL && enccrd->crd_next == maccrd) {
- error = padlock_authcompute(ses, maccrd, crp->crp_buf,
- crp->crp_flags);
+ error = padlock_hash_process(ses, maccrd, crp);
if (error != 0)
goto out;
}
- /* copy out last block for use as next session IV */
- if ((enccrd->crd_flags & CRD_F_ENCRYPT) != 0) {
- crypto_copydata(crp->crp_flags, crp->crp_buf,
- enccrd->crd_skip + enccrd->crd_len - AES_BLOCK_LEN,
- AES_BLOCK_LEN, ses->ses_iv);
- }
-
out:
- if (buf != NULL) {
- bzero(buf, enccrd->crd_len + 16);
- free(buf, M_DEVBUF);
+#if 0
+ /*
+ * This code is not necessary, because contexts will be freed on next
+ * padlock_setup_mackey() call or at padlock_freesession() call.
+ */
+ if (ses != NULL && maccrd != NULL &&
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list