Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Feb 2014 22:10:27 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r261569 - in projects/uefi: lib/libstand sbin/dhclient sys/arm/arm sys/arm/at91 sys/arm/econa sys/arm/include sys/arm/s3c2xx0 sys/arm/xscale/ixp425 sys/boot sys/boot/i386/gptboot sys/bo...
Message-ID:  <201402062210.s16MARXS054379@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Thu Feb  6 22:10:26 2014
New Revision: 261569
URL: http://svnweb.freebsd.org/changeset/base/261569

Log:
  Merge from HEAD at r261568
  
  Sponsored by:	The FreeBSD Foundation

Added:
  projects/uefi/sys/boot/libstand32/
     - copied from r261568, head/sys/boot/libstand32/
Modified:
  projects/uefi/lib/libstand/libstand.3
  projects/uefi/sbin/dhclient/bpf.c
  projects/uefi/sbin/dhclient/dhclient.c
  projects/uefi/sys/arm/arm/locore.S
  projects/uefi/sys/arm/arm/machdep.c
  projects/uefi/sys/arm/arm/vfp.c
  projects/uefi/sys/arm/arm/vm_machdep.c
  projects/uefi/sys/arm/at91/at91_machdep.c
  projects/uefi/sys/arm/econa/econa_machdep.c
  projects/uefi/sys/arm/include/cpu.h
  projects/uefi/sys/arm/include/machdep.h
  projects/uefi/sys/arm/s3c2xx0/s3c24x0_machdep.c
  projects/uefi/sys/arm/xscale/ixp425/avila_machdep.c
  projects/uefi/sys/boot/Makefile.amd64
  projects/uefi/sys/boot/Makefile.i386
  projects/uefi/sys/boot/i386/gptboot/Makefile
  projects/uefi/sys/boot/i386/gptzfsboot/Makefile
  projects/uefi/sys/boot/i386/loader/Makefile
  projects/uefi/sys/boot/i386/zfsboot/Makefile
  projects/uefi/sys/dev/cxgbe/adapter.h
  projects/uefi/sys/dev/cxgbe/t4_main.c
  projects/uefi/tools/regression/security/cap_test/cap_test_capabilities.c
Directory Properties:
  projects/uefi/   (props changed)
  projects/uefi/sbin/   (props changed)
  projects/uefi/sys/   (props changed)
  projects/uefi/sys/boot/   (props changed)
  projects/uefi/usr.sbin/jail/   (props changed)

Modified: projects/uefi/lib/libstand/libstand.3
==============================================================================
--- projects/uefi/lib/libstand/libstand.3	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/lib/libstand/libstand.3	Thu Feb  6 22:10:26 2014	(r261569)
@@ -675,6 +675,6 @@ the environment functions and this manpa
 .Sh BUGS
 The lack of detailed memory usage data is unhelpful.
 .Pp
-On the amd64 and powerpc64 architectures
+On the powerpc64 architecture
 .Nm
 is a 32-bit library.

Modified: projects/uefi/sbin/dhclient/bpf.c
==============================================================================
--- projects/uefi/sbin/dhclient/bpf.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sbin/dhclient/bpf.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -269,7 +269,7 @@ if_register_receive(struct interface_inf
 	if (ioctl(info->rfdesc, BIOCLOCK, NULL) < 0)
 		error("Cannot lock bpf");
 
-	cap_rights_init(&rights, CAP_IOCTL, CAP_POLL_EVENT, CAP_READ);
+	cap_rights_init(&rights, CAP_IOCTL, CAP_EVENT, CAP_READ);
 	if (cap_rights_limit(info->rfdesc, &rights) < 0 && errno != ENOSYS)
 		error("Can't limit bpf descriptor: %m");
 	if (cap_ioctls_limit(info->rfdesc, cmds, 2) < 0 && errno != ENOSYS)

Modified: projects/uefi/sbin/dhclient/dhclient.c
==============================================================================
--- projects/uefi/sbin/dhclient/dhclient.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sbin/dhclient/dhclient.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -494,7 +494,7 @@ main(int argc, char *argv[])
 		add_protocol("AF_ROUTE", routefd, routehandler, ifi);
 	if (shutdown(routefd, SHUT_WR) < 0)
 		error("can't shutdown route socket: %m");
-	cap_rights_init(&rights, CAP_POLL_EVENT, CAP_READ);
+	cap_rights_init(&rights, CAP_EVENT, CAP_READ);
 	if (cap_rights_limit(routefd, &rights) < 0 && errno != ENOSYS)
 		error("can't limit route socket: %m");
 

Modified: projects/uefi/sys/arm/arm/locore.S
==============================================================================
--- projects/uefi/sys/arm/arm/locore.S	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/arm/locore.S	Thu Feb  6 22:10:26 2014	(r261569)
@@ -216,7 +216,7 @@ mmu_done:
 	ldr	pc, .Lvirt_done
 
 virt_done:
-	mov	r1, #20			/* loader info size is 20 bytes also second arg */
+	mov	r1, #24			/* loader info size is 24 bytes also second arg */
 	subs	sp, sp, r1		/* allocate arm_boot_params struct on stack */
 	bic	sp, sp, #7		/* align stack to 8 bytes */
 	mov	r0, sp			/* loader info pointer is first arg */
@@ -225,6 +225,8 @@ virt_done:
 	str	r8, [r0, #8]		/* Store r1 from boot loader */
 	str	ip, [r0, #12]		/* store r2 from boot loader */
 	str	fp, [r0, #16]		/* store r3 from boot loader */
+	ldr	r5, =KERNPHYSADDR	/* load KERNPHYSADDR as the physical address */
+	str	r5, [r0, #20]		/* store the physical address */
 	mov	fp, #0			/* trace back starts here */
 	bl	_C_LABEL(initarm)	/* Off we go */
 

Modified: projects/uefi/sys/arm/arm/machdep.c
==============================================================================
--- projects/uefi/sys/arm/arm/machdep.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/arm/machdep.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -788,7 +788,7 @@ makectx(struct trapframe *tf, struct pcb
  * calling pmap_bootstrap.
  */
 void
-arm_dump_avail_init(vm_offset_t ramsize, size_t max)
+arm_dump_avail_init(vm_paddr_t physaddr, vm_offset_t ramsize, size_t max)
 {
 #ifdef LINUX_BOOT_ABI
 	/*
@@ -814,8 +814,8 @@ arm_dump_avail_init(vm_offset_t ramsize,
 	if (max < 4)
 		panic("dump_avail too small\n");
 
-	dump_avail[0] = round_page(PHYSADDR);
-	dump_avail[1] = trunc_page(PHYSADDR + ramsize);
+	dump_avail[0] = round_page(physaddr);
+	dump_avail[1] = trunc_page(physaddr + ramsize);
 	dump_avail[2] = 0;
 	dump_avail[3] = 0;
 }
@@ -901,7 +901,7 @@ linux_parse_boot_param(struct arm_boot_p
 
 	board_id = abp->abp_r1;
 	walker = (struct arm_lbabi_tag *)
-	    (abp->abp_r2 + KERNVIRTADDR - KERNPHYSADDR);
+	    (abp->abp_r2 + KERNVIRTADDR - abp->abp_physaddr);
 
 	/* xxx - Need to also look for binary device tree */
 	if (ATAG_TAG(walker) != ATAG_CORE)
@@ -979,7 +979,7 @@ freebsd_parse_boot_param(struct arm_boot
 	ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t);
 	ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t);
 #endif
-	preload_addr_relocate = KERNVIRTADDR - KERNPHYSADDR;
+	preload_addr_relocate = KERNVIRTADDR - abp->abp_physaddr;
 	return lastaddr;
 }
 #endif
@@ -1081,15 +1081,15 @@ print_kenv(void)
 }
 
 static void
-physmap_init(struct mem_region *availmem_regions, int availmem_regions_sz)
+physmap_init(struct mem_region *availmem_regions, int availmem_regions_sz,
+    vm_offset_t kernload)
 {
 	int i, j, cnt;
-	vm_offset_t phys_kernelend, kernload;
+	vm_offset_t phys_kernelend;
 	uint32_t s, e, sz;
 	struct mem_region *mp, *mp1;
 
-	phys_kernelend = KERNPHYSADDR + (virtual_avail - KERNVIRTADDR);
-	kernload = KERNPHYSADDR;
+	phys_kernelend = kernload + (virtual_avail - KERNVIRTADDR);
 
 	/*
 	 * Remove kernel physical address range from avail
@@ -1331,7 +1331,7 @@ initarm(struct arm_boot_params *abp)
 	/* Define a macro to simplify memory allocation */
 #define valloc_pages(var, np)						\
 	alloc_pages((var).pv_va, (np));					\
-	(var).pv_pa = (var).pv_va + (KERNPHYSADDR - KERNVIRTADDR);
+	(var).pv_pa = (var).pv_va + (abp->abp_physaddr - KERNVIRTADDR);
 
 #define alloc_pages(var, np)						\
 	(var) = freemempos;						\
@@ -1352,7 +1352,7 @@ initarm(struct arm_boot_params *abp)
 			    L2_TABLE_SIZE_REAL * (i - j);
 			kernel_pt_table[i].pv_pa =
 			    kernel_pt_table[i].pv_va - KERNVIRTADDR +
-			    KERNPHYSADDR;
+			    abp->abp_physaddr;
 
 		}
 	}
@@ -1397,7 +1397,7 @@ initarm(struct arm_boot_params *abp)
 	pmap_curmaxkvaddr = l2_start + (l2size - 1) * L1_S_SIZE;
 
 	/* Map kernel code and data */
-	pmap_map_chunk(l1pagetable, KERNVIRTADDR, KERNPHYSADDR,
+	pmap_map_chunk(l1pagetable, KERNVIRTADDR, abp->abp_physaddr,
 	   (((uint32_t)(lastaddr) - KERNVIRTADDR) + PAGE_MASK) & ~PAGE_MASK,
 	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
 
@@ -1501,7 +1501,8 @@ initarm(struct arm_boot_params *abp)
 
 	arm_intrnames_init();
 	arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL);
-	arm_dump_avail_init(memsize, sizeof(dump_avail) / sizeof(dump_avail[0]));
+	arm_dump_avail_init(abp->abp_physaddr, memsize,
+	    sizeof(dump_avail) / sizeof(dump_avail[0]));
 	pmap_bootstrap(freemempos, &kernel_l1pt);
 	msgbufp = (void *)msgbufpv.pv_va;
 	msgbufinit(msgbufp, msgbufsize);
@@ -1510,7 +1511,7 @@ initarm(struct arm_boot_params *abp)
 	/*
 	 * Prepare map of physical memory regions available to vm subsystem.
 	 */
-	physmap_init(availmem_regions, availmem_regions_sz);
+	physmap_init(availmem_regions, availmem_regions_sz, abp->abp_physaddr);
 
 	init_param2(physmem);
 	kdb_init();

Modified: projects/uefi/sys/arm/arm/vfp.c
==============================================================================
--- projects/uefi/sys/arm/arm/vfp.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/arm/vfp.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -42,10 +42,9 @@ __FBSDID("$FreeBSD$");
 
 /* function prototypes */
 unsigned int get_coprocessorACR(void);
-int	vfp_bounce(u_int, u_int, struct trapframe *, int);
+static int vfp_bounce(u_int, u_int, struct trapframe *, int);
+static void vfp_restore(struct vfp_state *);
 void	vfp_discard(void);
-void	vfp_enable(void);
-void	vfp_restore(struct vfp_state *);
 void	vfp_store(struct vfp_state *);
 void	set_coprocessorACR(u_int);
 
@@ -134,7 +133,7 @@ SYSINIT(vfp, SI_SUB_CPU, SI_ORDER_ANY, v
 /* start VFP unit, restore the vfp registers from the PCB  and retry
  * the instruction
  */
-int
+static int
 vfp_bounce(u_int addr, u_int insn, struct trapframe *frame, int code)
 {
 	u_int fpexc;
@@ -196,7 +195,7 @@ vfp_bounce(u_int addr, u_int insn, struc
  * Eventually we will use the information that this process was the last
  * to use the VFP hardware and bypass the restore, just turn on the hardware.
  */
-void
+static void
 vfp_restore(struct vfp_state *vfpsave)
 {
 	u_int vfpscr = 0;
@@ -280,17 +279,5 @@ vfp_discard()
 	fmxr(VFPEXC, tmp);
 }
 
-/* Enable the VFP hardware without restoring registers.
- * Called when the registers are still in the VFP unit
- */
-void
-vfp_enable()
-{
-	u_int tmp = 0;
-
-	tmp = fmrx(VFPEXC);
-	tmp |= VFPEXC_EN;
-	fmxr(VFPEXC, tmp);
-}
 #endif
 

Modified: projects/uefi/sys/arm/arm/vm_machdep.c
==============================================================================
--- projects/uefi/sys/arm/arm/vm_machdep.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/arm/vm_machdep.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -298,15 +298,25 @@ cpu_set_syscall_retval(struct thread *td
 	struct trapframe *frame;
 	int fixup;
 #ifdef __ARMEB__
-	uint32_t insn;
+	u_int call;
 #endif
 
 	frame = td->td_frame;
 	fixup = 0;
 
 #ifdef __ARMEB__
-	insn = *(u_int32_t *)(frame->tf_pc - INSN_SIZE);
-	if ((insn & 0x000fffff) == SYS___syscall) {
+	/*
+	 * __syscall returns an off_t while most other syscalls return an
+	 * int. As an off_t is 64-bits and an int is 32-bits we need to
+	 * place the returned data into r1. As the lseek and frerebsd6_lseek
+	 * syscalls also return an off_t they do not need this fixup.
+	 */
+#ifdef __ARM_EABI__
+	call = frame->tf_r7;
+#else
+	call = *(u_int32_t *)(frame->tf_pc - INSN_SIZE) & 0x000fffff;
+#endif
+	if (call == SYS___syscall) {
 		register_t *ap = &frame->tf_r0;
 		register_t code = ap[_QUAD_LOWWORD];
 		if (td->td_proc->p_sysent->sv_mask)

Modified: projects/uefi/sys/arm/at91/at91_machdep.c
==============================================================================
--- projects/uefi/sys/arm/at91/at91_machdep.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/at91/at91_machdep.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -630,7 +630,8 @@ initarm(struct arm_boot_params *abp)
 	arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL);
 
 	pmap_curmaxkvaddr = afterkern + L1_S_SIZE * (KERNEL_PT_KERN_NUM - 1);
-	arm_dump_avail_init(memsize, sizeof(dump_avail)/sizeof(dump_avail[0]));
+	arm_dump_avail_init(abp->abp_physaddr, memsize,
+	    sizeof(dump_avail)/sizeof(dump_avail[0]));
 	/* Always use the 256MB of KVA we have available between the kernel and devices */
 	vm_max_kernel_address = KERNVIRTADDR + (256 << 20);
 	pmap_bootstrap(freemempos, &kernel_l1pt);

Modified: projects/uefi/sys/arm/econa/econa_machdep.c
==============================================================================
--- projects/uefi/sys/arm/econa/econa_machdep.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/econa/econa_machdep.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -322,7 +322,8 @@ initarm(struct arm_boot_params *abp)
 	arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL);
 
 	pmap_curmaxkvaddr = afterkern + L1_S_SIZE * (KERNEL_PT_KERN_NUM - 1);
-	arm_dump_avail_init(memsize, sizeof(dump_avail) / sizeof(dump_avail[0]));
+	arm_dump_avail_init(abp->abp_physaddr, memsize,
+	    sizeof(dump_avail) / sizeof(dump_avail[0]));
 	vm_max_kernel_address = KERNVIRTADDR + 3 * memsize;
 	pmap_bootstrap(freemempos, &kernel_l1pt);
 

Modified: projects/uefi/sys/arm/include/cpu.h
==============================================================================
--- projects/uefi/sys/arm/include/cpu.h	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/include/cpu.h	Thu Feb  6 22:10:26 2014	(r261569)
@@ -41,6 +41,7 @@ struct arm_boot_params {
 	register_t	abp_r1;		/* r1 from the boot loader */
 	register_t	abp_r2;		/* r2 from the boot loader */
 	register_t	abp_r3;		/* r3 from the boot loader */
+	vm_offset_t	abp_physaddr;	/* The kernel physical address */
 };
 
 void	arm_vector_init(vm_offset_t, int);

Modified: projects/uefi/sys/arm/include/machdep.h
==============================================================================
--- projects/uefi/sys/arm/include/machdep.h	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/include/machdep.h	Thu Feb  6 22:10:26 2014	(r261569)
@@ -72,6 +72,6 @@ void board_set_serial(uint64_t);
 void board_set_revision(uint32_t);
 
 /* Setup standard arrays */
-void arm_dump_avail_init( vm_offset_t memsize, size_t max);
+void arm_dump_avail_init(vm_paddr_t, vm_offset_t, size_t);
 
 #endif /* !_MACHINE_MACHDEP_H_ */

Modified: projects/uefi/sys/arm/s3c2xx0/s3c24x0_machdep.c
==============================================================================
--- projects/uefi/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/s3c2xx0/s3c24x0_machdep.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -384,7 +384,8 @@ initarm(struct arm_boot_params *abp)
 	arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL);
 
 	pmap_curmaxkvaddr = afterkern + 0x100000 * (KERNEL_PT_KERN_NUM - 1);
-	arm_dump_avail_init(memsize, sizeof(dump_avail) / sizeof(dump_avail[0]));
+	arm_dump_avail_init(abp->abp_physaddr, memsize,
+	    sizeof(dump_avail) / sizeof(dump_avail[0]));
 	vm_max_kernel_address = KERNVIRTADDR + 3 * memsize;
 	pmap_bootstrap(freemempos, &kernel_l1pt);
 	msgbufp = (void*)msgbufpv.pv_va;

Modified: projects/uefi/sys/arm/xscale/ixp425/avila_machdep.c
==============================================================================
--- projects/uefi/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/arm/xscale/ixp425/avila_machdep.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -431,7 +431,8 @@ initarm(struct arm_boot_params *abp)
 	arm_vector_init(ARM_VECTORS_HIGH, ARM_VEC_ALL);
 
 	pmap_curmaxkvaddr = afterkern + PAGE_SIZE;
-	arm_dump_avail_init(memsize, sizeof(dump_avail) / sizeof(dump_avail[0]));
+	arm_dump_avail_init(abp->abp_physaddr, memsize,
+	    sizeof(dump_avail) / sizeof(dump_avail[0]));
 	vm_max_kernel_address = 0xe0000000;
 	pmap_bootstrap(pmap_curmaxkvaddr, &kernel_l1pt);
 	msgbufp = (void*)msgbufpv.pv_va;

Modified: projects/uefi/sys/boot/Makefile.amd64
==============================================================================
--- projects/uefi/sys/boot/Makefile.amd64	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/boot/Makefile.amd64	Thu Feb  6 22:10:26 2014	(r261569)
@@ -2,6 +2,7 @@
 
 SUBDIR+=		efi
 SUBDIR+=		ficl64
+SUBDIR+=		libstand32
 SUBDIR+=		zfs
 SUBDIR+=		zfs64
 SUBDIR+=		userboot

Modified: projects/uefi/sys/boot/Makefile.i386
==============================================================================
--- projects/uefi/sys/boot/Makefile.i386	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/boot/Makefile.i386	Thu Feb  6 22:10:26 2014	(r261569)
@@ -1,4 +1,5 @@
 # $FreeBSD$
 
 SUBDIR+=		efi
+SUBDIR+=		libstand32
 SUBDIR+=		zfs

Modified: projects/uefi/sys/boot/i386/gptboot/Makefile
==============================================================================
--- projects/uefi/sys/boot/i386/gptboot/Makefile	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/boot/i386/gptboot/Makefile	Thu Feb  6 22:10:26 2014	(r261569)
@@ -43,9 +43,10 @@ LD_FLAGS=-static -N --gc-sections
 
 .if ${MACHINE_CPUARCH} == "amd64"
 LD_FLAGS+=	-m elf_i386_fbsd
-LIBSTAND=	/usr/lib32/libstand.a
 .endif
 
+LIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
+
 # Pick up ../Makefile.inc early.
 .include <bsd.init.mk>
 

Modified: projects/uefi/sys/boot/i386/gptzfsboot/Makefile
==============================================================================
--- projects/uefi/sys/boot/i386/gptzfsboot/Makefile	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/boot/i386/gptzfsboot/Makefile	Thu Feb  6 22:10:26 2014	(r261569)
@@ -40,9 +40,10 @@ LD_FLAGS=-static -N --gc-sections
 
 .if ${MACHINE_CPUARCH} == "amd64"
 LD_FLAGS+=	-m elf_i386_fbsd
-LIBSTAND=	/usr/lib32/libstand.a
 .endif
 
+LIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
+
 # Pick up ../Makefile.inc early.
 .include <bsd.init.mk>
 

Modified: projects/uefi/sys/boot/i386/loader/Makefile
==============================================================================
--- projects/uefi/sys/boot/i386/loader/Makefile	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/boot/i386/loader/Makefile	Thu Feb  6 22:10:26 2014	(r261569)
@@ -67,13 +67,14 @@ LDFLAGS=	-static -Ttext 0x0
 
 .if ${MACHINE_CPUARCH} == "amd64"
 LDFLAGS+=	-Wl,-m,elf_i386_fbsd
-LIBSTAND=	/usr/lib32/libstand.a
 .endif
 
 # i386 standalone support library
 LIBI386=	${.OBJDIR}/../libi386/libi386.a
 CFLAGS+=	-I${.CURDIR}/..
 
+LIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
+
 # BTX components
 CFLAGS+=	-I${.CURDIR}/../btx/lib
 

Modified: projects/uefi/sys/boot/i386/zfsboot/Makefile
==============================================================================
--- projects/uefi/sys/boot/i386/zfsboot/Makefile	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/boot/i386/zfsboot/Makefile	Thu Feb  6 22:10:26 2014	(r261569)
@@ -37,9 +37,10 @@ LD_FLAGS=-static -N --gc-sections
 
 .if ${MACHINE_CPUARCH} == "amd64"
 LD_FLAGS+=	-m elf_i386_fbsd
-LIBSTAND=	/usr/lib32/libstand.a
 .endif
 
+LIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
+
 # Pick up ../Makefile.inc early.
 .include <bsd.init.mk>
 

Modified: projects/uefi/sys/dev/cxgbe/adapter.h
==============================================================================
--- projects/uefi/sys/dev/cxgbe/adapter.h	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/dev/cxgbe/adapter.h	Thu Feb  6 22:10:26 2014	(r261569)
@@ -215,6 +215,7 @@ struct port_info {
 	/* These need to be int as they are used in sysctl */
 	int ntxq;	/* # of tx queues */
 	int first_txq;	/* index of first tx queue */
+	int rsrv_noflowq; /* Reserve queue 0 for non-flowid packets */
 	int nrxq;	/* # of rx queues */
 	int first_rxq;	/* index of first rx queue */
 #ifdef TCP_OFFLOAD

Modified: projects/uefi/sys/dev/cxgbe/t4_main.c
==============================================================================
--- projects/uefi/sys/dev/cxgbe/t4_main.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/sys/dev/cxgbe/t4_main.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -197,6 +197,9 @@ TUNABLE_INT("hw.cxgbe.ntxq1g", &t4_ntxq1
 static int t4_nrxq1g = -1;
 TUNABLE_INT("hw.cxgbe.nrxq1g", &t4_nrxq1g);
 
+static int t4_rsrv_noflowq = 0;
+TUNABLE_INT("hw.cxgbe.rsrv_noflowq", &t4_rsrv_noflowq);
+
 #ifdef TCP_OFFLOAD
 #define NOFLDTXQ_10G 8
 static int t4_nofldtxq10g = -1;
@@ -299,6 +302,7 @@ struct intrs_and_queues {
 	int nrxq10g;		/* # of NIC rxq's for each 10G port */
 	int ntxq1g;		/* # of NIC txq's for each 1G port */
 	int nrxq1g;		/* # of NIC rxq's for each 1G port */
+	int rsrv_noflowq;	/* Flag whether to reserve queue 0 */
 #ifdef TCP_OFFLOAD
 	int nofldtxq10g;	/* # of TOE txq's for each 10G port */
 	int nofldrxq10g;	/* # of TOE rxq's for each 10G port */
@@ -375,6 +379,7 @@ static int cxgbe_sysctls(struct port_inf
 static int sysctl_int_array(SYSCTL_HANDLER_ARGS);
 static int sysctl_bitfield(SYSCTL_HANDLER_ARGS);
 static int sysctl_btphy(SYSCTL_HANDLER_ARGS);
+static int sysctl_noflowq(SYSCTL_HANDLER_ARGS);
 static int sysctl_holdoff_tmr_idx(SYSCTL_HANDLER_ARGS);
 static int sysctl_holdoff_pktc_idx(SYSCTL_HANDLER_ARGS);
 static int sysctl_qsize_rxq(SYSCTL_HANDLER_ARGS);
@@ -783,6 +788,11 @@ t4_attach(device_t dev)
 			pi->ntxq = iaq.ntxq1g;
 		}
 
+		if (pi->ntxq > 1)
+			pi->rsrv_noflowq = iaq.rsrv_noflowq ? 1 : 0;
+		else
+			pi->rsrv_noflowq = 0;
+
 		rqidx += pi->nrxq;
 		tqidx += pi->ntxq;
 
@@ -1283,7 +1293,8 @@ cxgbe_transmit(struct ifnet *ifp, struct
 	}
 
 	if (m->m_flags & M_FLOWID)
-		txq += (m->m_pkthdr.flowid % pi->ntxq);
+		txq += ((m->m_pkthdr.flowid % (pi->ntxq - pi->rsrv_noflowq))
+		    + pi->rsrv_noflowq);
 	br = txq->br;
 
 	if (TXQ_TRYLOCK(txq) == 0) {
@@ -1735,6 +1746,7 @@ cfg_itype_and_nqueues(struct adapter *sc
 	iaq->ntxq1g = t4_ntxq1g;
 	iaq->nrxq10g = nrxq10g = t4_nrxq10g;
 	iaq->nrxq1g = nrxq1g = t4_nrxq1g;
+	iaq->rsrv_noflowq = t4_rsrv_noflowq;
 #ifdef TCP_OFFLOAD
 	if (is_offload(sc)) {
 		iaq->nofldtxq10g = t4_nofldtxq10g;
@@ -4548,6 +4560,9 @@ cxgbe_sysctls(struct port_info *pi)
 	    &pi->first_rxq, 0, "index of first rx queue");
 	SYSCTL_ADD_INT(ctx, children, OID_AUTO, "first_txq", CTLFLAG_RD,
 	    &pi->first_txq, 0, "index of first tx queue");
+	SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rsrv_noflowq", CTLTYPE_INT |
+	    CTLFLAG_RW, pi, 0, sysctl_noflowq, "IU",
+	    "Reserve queue 0 for non-flowid packets");
 
 #ifdef TCP_OFFLOAD
 	if (is_offload(sc)) {
@@ -4802,6 +4817,25 @@ sysctl_btphy(SYSCTL_HANDLER_ARGS)
 }
 
 static int
+sysctl_noflowq(SYSCTL_HANDLER_ARGS)
+{
+	struct port_info *pi = arg1;
+	int rc, val;
+
+	val = pi->rsrv_noflowq;
+	rc = sysctl_handle_int(oidp, &val, 0, req);
+	if (rc != 0 || req->newptr == NULL)
+		return (rc);
+
+	if ((val >= 1) && (pi->ntxq > 1))
+		pi->rsrv_noflowq = 1;
+	else
+		pi->rsrv_noflowq = 0;
+
+	return (rc);
+}
+
+static int
 sysctl_holdoff_tmr_idx(SYSCTL_HANDLER_ARGS)
 {
 	struct port_info *pi = arg1;

Modified: projects/uefi/tools/regression/security/cap_test/cap_test_capabilities.c
==============================================================================
--- projects/uefi/tools/regression/security/cap_test/cap_test_capabilities.c	Thu Feb  6 21:57:27 2014	(r261568)
+++ projects/uefi/tools/regression/security/cap_test/cap_test_capabilities.c	Thu Feb  6 22:10:26 2014	(r261569)
@@ -396,7 +396,7 @@ try_file_ops(int filefd, int dirfd, cap_
 	pollfd.revents = 0;
 
 	ret = poll(&pollfd, 1, 0);
-	if (rights & CAP_POLL_EVENT)
+	if (rights & CAP_EVENT)
 		CHECK((pollfd.revents & POLLNVAL) == 0);
 	else
 		CHECK((pollfd.revents & POLLNVAL) != 0);
@@ -546,7 +546,7 @@ test_capabilities(void)
 	TRY(CAP_SEM_POST);
 	TRY(CAP_SEM_WAIT);
 	TRY(CAP_POST_EVENT);
-	TRY(CAP_POLL_EVENT);
+	TRY(CAP_EVENT);
 	TRY(CAP_IOCTL);
 	TRY(CAP_TTYHOOK);
 	TRY(CAP_PDGETPID);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402062210.s16MARXS054379>