svn commit: r288540 - in projects/release-pkg: . contrib/netbsd-tests/lib/libc/sys etc/etc.aarch64 games release/arm sbin/init sbin/ipf/ipftest share/mk sys/arm/arm sys/arm/broadcom/bcm2835 sys/arm...
Baptiste Daroussin
bapt at FreeBSD.org
Sat Oct 3 07:22:14 UTC 2015
Author: bapt
Date: Sat Oct 3 07:22:07 2015
New Revision: 288540
URL: https://svnweb.freebsd.org/changeset/base/288540
Log:
Remerge as previous one was broken
Added:
projects/release-pkg/usr.bin/caesar/
- copied from r288493, head/usr.bin/caesar/
projects/release-pkg/usr.bin/factor/
- copied from r288493, head/usr.bin/factor/
projects/release-pkg/usr.bin/fortune/
- copied from r288493, head/usr.bin/fortune/
projects/release-pkg/usr.bin/grdc/
- copied from r288493, head/usr.bin/grdc/
projects/release-pkg/usr.bin/morse/
- copied from r288493, head/usr.bin/morse/
projects/release-pkg/usr.bin/number/
- copied from r288493, head/usr.bin/number/
projects/release-pkg/usr.bin/pom/
- copied from r288493, head/usr.bin/pom/
projects/release-pkg/usr.bin/primes/
- copied from r288493, head/usr.bin/primes/
projects/release-pkg/usr.bin/random/
- copied from r288493, head/usr.bin/random/
projects/release-pkg/usr.bin/truss/aarch64-fbsd.c
- copied unchanged from r288493, head/usr.bin/truss/aarch64-fbsd.c
projects/release-pkg/usr.bin/truss/amd64-cloudabi64.c
- copied unchanged from r288493, head/usr.bin/truss/amd64-cloudabi64.c
projects/release-pkg/usr.bin/truss/amd64cloudabi64.conf
- copied unchanged from r288493, head/usr.bin/truss/amd64cloudabi64.conf
projects/release-pkg/usr.sbin/Makefile.arm64
- copied unchanged from r288493, head/usr.sbin/Makefile.arm64
Deleted:
projects/release-pkg/games/
Modified:
projects/release-pkg/Makefile.inc1
projects/release-pkg/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c
projects/release-pkg/etc/etc.aarch64/ttys
projects/release-pkg/release/arm/BANANAPI.conf
projects/release-pkg/release/arm/CUBIEBOARD.conf
projects/release-pkg/release/arm/CUBIEBOARD2.conf
projects/release-pkg/sbin/init/init.c
projects/release-pkg/sbin/ipf/ipftest/Makefile
projects/release-pkg/share/mk/meta.stage.mk
projects/release-pkg/sys/arm/arm/machdep.c
projects/release-pkg/sys/arm/arm/vm_machdep.c
projects/release-pkg/sys/arm/broadcom/bcm2835/bcm2836_mp.c
projects/release-pkg/sys/arm/include/atomic-v4.h
projects/release-pkg/sys/arm/include/atomic-v6.h
projects/release-pkg/sys/arm/include/atomic.h
projects/release-pkg/sys/arm/mv/mpic.c
projects/release-pkg/sys/arm64/arm64/exception.S
projects/release-pkg/sys/arm64/arm64/pmap.c
projects/release-pkg/sys/cam/ctl/ctl.c
projects/release-pkg/sys/cam/ctl/ctl_private.h
projects/release-pkg/sys/cam/ctl/ctl_tpc.c
projects/release-pkg/sys/dev/acpica/acpi.c
projects/release-pkg/sys/dev/drm2/i915/i915_gem_execbuffer.c
projects/release-pkg/sys/kern/kern_shutdown.c
projects/release-pkg/sys/kern/subr_sbuf.c
projects/release-pkg/sys/kern/vfs_default.c
projects/release-pkg/sys/net80211/ieee80211_crypto_ccmp.c
projects/release-pkg/sys/net80211/ieee80211_crypto_tkip.c
projects/release-pkg/sys/net80211/ieee80211_crypto_wep.c
projects/release-pkg/sys/sys/systm.h
projects/release-pkg/targets/pseudo/bootstrap-tools/Makefile
projects/release-pkg/targets/pseudo/stage/Makefile
projects/release-pkg/usr.bin/Makefile
projects/release-pkg/usr.bin/truss/Makefile
projects/release-pkg/usr.bin/truss/syscall.h
projects/release-pkg/usr.bin/truss/syscalls.c
projects/release-pkg/usr.sbin/bhyve/pci_virtio_net.c
projects/release-pkg/usr.sbin/ctld/ctl.conf.5
projects/release-pkg/usr.sbin/ctld/ctld.c
projects/release-pkg/usr.sbin/ctld/ctld.h
projects/release-pkg/usr.sbin/kldxref/kldxref.c
projects/release-pkg/usr.sbin/rpc.yppasswdd/yppasswdd_server.c
Directory Properties:
projects/release-pkg/ (props changed)
projects/release-pkg/sbin/ (props changed)
projects/release-pkg/share/ (props changed)
projects/release-pkg/sys/ (props changed)
projects/release-pkg/targets/ (props changed)
projects/release-pkg/usr.sbin/bhyve/ (props changed)
Modified: projects/release-pkg/Makefile.inc1
==============================================================================
--- projects/release-pkg/Makefile.inc1 Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/Makefile.inc1 Sat Oct 3 07:22:07 2015 (r288540)
@@ -61,9 +61,6 @@ SUBDIR= ${SUBDIR_OVERRIDE}
.else
SUBDIR= lib libexec
SUBDIR+=bin
-.if ${MK_GAMES} != "no"
-SUBDIR+=games
-.endif
.if ${MK_CDDL} != "no"
SUBDIR+=cddl
.endif
@@ -1409,7 +1406,7 @@ legacy:
_bt= _bootstrap-tools
.if ${MK_GAMES} != "no"
-_strfile= games/fortune/strfile
+_strfile= usr.bin/fortune/strfile
.endif
.if ${MK_GCC} != "no" && ${MK_CXX} != "no"
Modified: projects/release-pkg/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c
==============================================================================
--- projects/release-pkg/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/contrib/netbsd-tests/lib/libc/sys/t_getcontext.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -53,6 +53,8 @@ run(int n, ...)
va_start(va, n);
#if defined(__FreeBSD__) && defined(__amd64__)
for (i = 0; i < 5; i++) {
+#elif defined(__FreeBSD__) && defined(__aarch64__)
+ for (i = 0; i < 7; i++) {
#else
for (i = 0; i < 9; i++) {
#endif
@@ -116,6 +118,10 @@ ATF_TC_BODY(setcontext_link, tc)
/* FreeBSD/amd64 only permits up to 6 arguments. */
makecontext(&uc[i], (void *)run, 6, i,
0, 1, 2, 3, 4);
+#elif defined(__FreeBSD__) && defined(__aarch64__)
+ /* FreeBSD/arm64 only permits up to 8 arguments. */
+ makecontext(&uc[i], (void *)run, 8, i,
+ 0, 1, 2, 3, 4, 5, 6);
#else
makecontext(&uc[i], (void *)run, 10, i,
0, 1, 2, 3, 4, 5, 6, 7, 8);
Modified: projects/release-pkg/etc/etc.aarch64/ttys
==============================================================================
--- projects/release-pkg/etc/etc.aarch64/ttys Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/etc/etc.aarch64/ttys Sat Oct 3 07:22:07 2015 (r288540)
@@ -29,7 +29,7 @@
# when going to single-user mode.
console none unknown off secure
#
-ttyv0 "/usr/libexec/getty Pc" xterm off secure
+ttyv0 "/usr/libexec/getty Pc" xterm onifconsole secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" xterm off secure
ttyv2 "/usr/libexec/getty Pc" xterm off secure
@@ -41,9 +41,9 @@ ttyv7 "/usr/libexec/getty Pc" xterm off
#ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
# Serial terminals
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
-ttyu0 "/usr/libexec/getty std.9600" vt100 on secure
-ttyu1 "/usr/libexec/getty std.9600" dialup off secure
-ttyu2 "/usr/libexec/getty std.9600" dialup off secure
-ttyu3 "/usr/libexec/getty std.9600" dialup off secure
+ttyu0 "/usr/libexec/getty 3wire" vt100 onifconsole secure
+ttyu1 "/usr/libexec/getty 3wire" vt100 onifconsole secure
+ttyu2 "/usr/libexec/getty 3wire" vt100 onifconsole secure
+ttyu3 "/usr/libexec/getty 3wire" vt100 onifconsole secure
# Dumb console
dcons "/usr/libexec/getty std.9600" vt100 off secure
Modified: projects/release-pkg/release/arm/BANANAPI.conf
==============================================================================
--- projects/release-pkg/release/arm/BANANAPI.conf Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/release/arm/BANANAPI.conf Sat Oct 3 07:22:07 2015 (r288540)
@@ -22,10 +22,8 @@ arm_install_uboot() {
UBOOT_FILES="u-boot.img"
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
- chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/sunxi-spl.bin \
- of=/dev/${mddev} bs=1k seek=8
- chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
- of=/dev/${mddev} bs=1k seek=40 conv=notrunc,sync
+ chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/u-boot-sunxi-with-spl.bin \
+ of=/dev/${mddev} bs=1k seek=8 conv=sync
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
Modified: projects/release-pkg/release/arm/CUBIEBOARD.conf
==============================================================================
--- projects/release-pkg/release/arm/CUBIEBOARD.conf Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/release/arm/CUBIEBOARD.conf Sat Oct 3 07:22:07 2015 (r288540)
@@ -21,10 +21,8 @@ arm_install_uboot() {
UBOOT_FILES="u-boot.img"
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
- chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/sunxi-spl.bin \
- of=/dev/${mddev} bs=1k seek=8
- chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
- of=/dev/${mddev} bs=1k seek=40 conv=notrunc,sync
+ chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/u-boot-sunxi-with-spl.bin \
+ of=/dev/${mddev} bs=1k seek=8 conv=sync
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
Modified: projects/release-pkg/release/arm/CUBIEBOARD2.conf
==============================================================================
--- projects/release-pkg/release/arm/CUBIEBOARD2.conf Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/release/arm/CUBIEBOARD2.conf Sat Oct 3 07:22:07 2015 (r288540)
@@ -22,10 +22,8 @@ arm_install_uboot() {
UBOOT_FILES="u-boot.img"
FATMOUNT="${DESTDIR%${KERNEL}}/fat"
UFSMOUNT="${DESTDIR%${KERNEL}}/ufs"
- chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/sunxi-spl.bin \
- of=/dev/${mddev} bs=1k seek=8
- chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/${UBOOT_FILES} \
- of=/dev/${mddev} bs=1k seek=40 conv=notrunc,sync
+ chroot ${CHROOTDIR} dd if=${UBOOT_DIR}/u-boot-sunxi-with-spl.bin \
+ of=/dev/${mddev} bs=1k seek=8 conv=sync
chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
Modified: projects/release-pkg/sbin/init/init.c
==============================================================================
--- projects/release-pkg/sbin/init/init.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sbin/init/init.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -1487,6 +1487,15 @@ static state_func_t
death(void)
{
session_t *sp;
+ int block, blocked;
+ size_t len;
+
+ /* Temporarily block suspend. */
+ len = sizeof(blocked);
+ block = 1;
+ if (sysctlbyname("kern.suspend_blocked", &blocked, &len,
+ &block, sizeof(block)) == -1)
+ blocked = 0;
/*
* Also revoke the TTY here. Because runshutdown() may reopen
@@ -1503,6 +1512,11 @@ death(void)
/* Try to run the rc.shutdown script within a period of time */
runshutdown();
+ /* Unblock suspend if we blocked it. */
+ if (!blocked)
+ sysctlbyname("kern.suspend_blocked", NULL, NULL,
+ &blocked, sizeof(blocked));
+
return (state_func_t) death_single;
}
Modified: projects/release-pkg/sbin/ipf/ipftest/Makefile
==============================================================================
--- projects/release-pkg/sbin/ipf/ipftest/Makefile Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sbin/ipf/ipftest/Makefile Sat Oct 3 07:22:07 2015 (r288540)
@@ -32,15 +32,19 @@ CLEANFILES+= ipnat.tab.c ipnat.tab.h
CLEANFILES+= ippool_y.c ippool_l.c
CLEANFILES+= ippool.tab.c ippool.tab.h
-ipnat_y.c: ipnat_y.y
+ipnat.tab.c ipnat.tab.h: ipnat_y.y
${YACC} -b ipnat -d ${.ALLSRC}
+
+ipnat_y.c: ipnat.tab.c
sed -e 's/yy/ipnat_yy/g' \
-e 's/y.tab.c/ipnat_y.c/' \
-e s/\"ipnat_y.y\"/\"..\\/tools\\/ipnat_y.y\"/ \
ipnat.tab.c > ${.TARGET}
+
+ipnat_y.h: ipnat.tab.h
sed -e 's/yy/ipnat_yy/g' \
-e 's/y.tab.h/ipnat_y.h/' \
- ipnat.tab.h > ${.TARGET:.c=.h}
+ ipnat.tab.h > ${.TARGET}
ipnat_y.h: ipnat_y.c
@@ -54,13 +58,17 @@ ipnat_l.h: lexer.h
sed -e 's/yy/ipnat_yy/g' \
${.ALLSRC} > ${.TARGET}
-ippool_y.c: ippool_y.y
+ippool.tab.c ippool.tab.h: ippool_y.y
${YACC} -b ippool -d ${.ALLSRC}
+
+ippool_y.c: ippool.tab.c
sed -e 's/yy/ippool_yy/g' \
-e 's/"ippool_y.y"/"..\/tools\/ippool_y.y"/' \
ippool.tab.c > ${.TARGET}
+
+ippool_y.h: ippool.tab.h
sed -e 's/yy/ippool_yy/g' \
- ippool.tab.h > ${.TARGET:.c=.h}
+ ippool.tab.h > ${.TARGET}
ippool_y.h: ippool_y.c
@@ -74,13 +82,17 @@ ippool_l.h: lexer.h
sed -e 's/yy/ippool_yy/g' \
${.ALLSRC} > ${.TARGET}
-ipf_y.c: ipf_y.y
+ipf.tab.c ipf.tab.h: ipf_y.y
${YACC} -b ipf -d ${.ALLSRC}
+
+ipf_y.c: ipf.tab.c
sed -e 's/yy/ipf_yy/g' \
-e 's/"ipf_y.y"/"..\/tools\/ipf_y.y"/' \
ipf.tab.c > ${.TARGET}
+
+ipf_y.h: ipf.tab.h
sed -e 's/yy/ipf_yy/g' \
- ipf.tab.h > ${.TARGET:.c=.h}
+ ipf.tab.h > ${.TARGET}
ipf_y.h: ipf_y.c
Modified: projects/release-pkg/share/mk/meta.stage.mk
==============================================================================
--- projects/release-pkg/share/mk/meta.stage.mk Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/share/mk/meta.stage.mk Sat Oct 3 07:22:07 2015 (r288540)
@@ -237,10 +237,11 @@ stage_as.$s: .dirdep
CLEANFILES += ${STAGE_TARGETS} stage_incs stage_includes
# stage_*links usually needs to follow any others.
-.for t in ${STAGE_TARGETS:N*links:O:u}
-.ORDER: $t stage_links
-.ORDER: $t stage_symlinks
+.if !empty(STAGE_SETS) && !empty(STAGE_TARGETS:Nstage_links)
+.for s in ${STAGE_SETS:O:u}
+stage_links.$s: ${STAGE_TARGETS:Nstage_links:O:u}
.endfor
+.endif
# make sure this exists
staging:
Modified: projects/release-pkg/sys/arm/arm/machdep.c
==============================================================================
--- projects/release-pkg/sys/arm/arm/machdep.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/arm/machdep.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -1069,7 +1069,7 @@ init_proc0(vm_offset_t kstack)
(thread0.td_kstack + kstack_pages * PAGE_SIZE) - 1;
thread0.td_pcb->pcb_flags = 0;
thread0.td_pcb->pcb_vfpcpu = -1;
- thread0.td_pcb->pcb_vfpstate.fpscr = VFPSCR_DN | VFPSCR_FZ;
+ thread0.td_pcb->pcb_vfpstate.fpscr = VFPSCR_DN;
thread0.td_frame = &proc0_tf;
pcpup->pc_curpcb = thread0.td_pcb;
}
Modified: projects/release-pkg/sys/arm/arm/vm_machdep.c
==============================================================================
--- projects/release-pkg/sys/arm/arm/vm_machdep.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/arm/vm_machdep.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -134,7 +134,7 @@ cpu_fork(register struct thread *td1, re
pcb2->pcb_regs.sf_sp = STACKALIGN(td2->td_frame);
pcb2->pcb_vfpcpu = -1;
- pcb2->pcb_vfpstate.fpscr = VFPSCR_DN | VFPSCR_FZ;
+ pcb2->pcb_vfpstate.fpscr = VFPSCR_DN;
tf = td2->td_frame;
tf->tf_spsr &= ~PSR_C;
Modified: projects/release-pkg/sys/arm/broadcom/bcm2835/bcm2836_mp.c
==============================================================================
--- projects/release-pkg/sys/arm/broadcom/bcm2835/bcm2836_mp.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/broadcom/bcm2835/bcm2836_mp.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -182,6 +182,8 @@ pic_ipi_read(int i)
if (val == 0)
return (0);
ipi = ffs(val) - 1;
+ BSWR4(MBOX0CLR_CORE(cpu), 1 << ipi);
+ dsb();
return (ipi);
}
return (0x3ff);
@@ -190,12 +192,6 @@ pic_ipi_read(int i)
void
pic_ipi_clear(int ipi)
{
- int cpu;
-
- cpu = PCPU_GET(cpuid);
- dsb();
- BSWR4(MBOX0CLR_CORE(cpu), 1 << ipi);
- wmb();
}
void
Modified: projects/release-pkg/sys/arm/include/atomic-v4.h
==============================================================================
--- projects/release-pkg/sys/arm/include/atomic-v4.h Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/include/atomic-v4.h Sat Oct 3 07:22:07 2015 (r288540)
@@ -439,4 +439,37 @@ atomic_subtract_long(volatile u_long *p,
atomic_subtract_32((volatile uint32_t *)p, v);
}
+/*
+ * ARMv5 does not support SMP. For both kernel and user modes, only a
+ * compiler barrier is needed for fences, since CPU is always
+ * self-consistent.
+ */
+static __inline void
+atomic_thread_fence_acq(void)
+{
+
+ __compiler_membar();
+}
+
+static __inline void
+atomic_thread_fence_rel(void)
+{
+
+ __compiler_membar();
+}
+
+static __inline void
+atomic_thread_fence_acq_rel(void)
+{
+
+ __compiler_membar();
+}
+
+static __inline void
+atomic_thread_fence_seq_cst(void)
+{
+
+ __compiler_membar();
+}
+
#endif /* _MACHINE_ATOMIC_H_ */
Modified: projects/release-pkg/sys/arm/include/atomic-v6.h
==============================================================================
--- projects/release-pkg/sys/arm/include/atomic-v6.h Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/include/atomic-v6.h Sat Oct 3 07:22:07 2015 (r288540)
@@ -596,4 +596,32 @@ atomic_store_rel_long(volatile u_long *p
#undef ATOMIC_ACQ_REL
#undef ATOMIC_ACQ_REL_LONG
+static __inline void
+atomic_thread_fence_acq(void)
+{
+
+ dmb();
+}
+
+static __inline void
+atomic_thread_fence_rel(void)
+{
+
+ dmb();
+}
+
+static __inline void
+atomic_thread_fence_acq_rel(void)
+{
+
+ dmb();
+}
+
+static __inline void
+atomic_thread_fence_seq_cst(void)
+{
+
+ dmb();
+}
+
#endif /* _MACHINE_ATOMIC_V6_H_ */
Modified: projects/release-pkg/sys/arm/include/atomic.h
==============================================================================
--- projects/release-pkg/sys/arm/include/atomic.h Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/include/atomic.h Sat Oct 3 07:22:07 2015 (r288540)
@@ -82,34 +82,6 @@ atomic_store_long(volatile u_long *dst,
*dst = src;
}
-static __inline void
-atomic_thread_fence_acq(void)
-{
-
- dmb();
-}
-
-static __inline void
-atomic_thread_fence_rel(void)
-{
-
- dmb();
-}
-
-static __inline void
-atomic_thread_fence_acq_rel(void)
-{
-
- dmb();
-}
-
-static __inline void
-atomic_thread_fence_seq_cst(void)
-{
-
- dmb();
-}
-
#define atomic_clear_ptr atomic_clear_32
#define atomic_set_ptr atomic_set_32
#define atomic_cmpset_ptr atomic_cmpset_32
Modified: projects/release-pkg/sys/arm/mv/mpic.c
==============================================================================
--- projects/release-pkg/sys/arm/mv/mpic.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm/mv/mpic.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -378,10 +378,14 @@ int
pic_ipi_read(int i __unused)
{
uint32_t val;
+ int ipi;
val = MPIC_CPU_READ(mv_mpic_sc, MPIC_IN_DRBL);
- if (val)
- return (ffs(val) - 1);
+ if (val) {
+ ipi = ffs(val) - 1;
+ MPIC_CPU_WRITE(mv_mpic_sc, MPIC_IN_DRBL, ~(1 << ipi));
+ return (ipi);
+ }
return (0x3ff);
}
@@ -389,10 +393,6 @@ pic_ipi_read(int i __unused)
void
pic_ipi_clear(int ipi)
{
- uint32_t val;
-
- val = ~(1 << ipi);
- MPIC_CPU_WRITE(mv_mpic_sc, MPIC_IN_DRBL, val);
}
#endif
Modified: projects/release-pkg/sys/arm64/arm64/exception.S
==============================================================================
--- projects/release-pkg/sys/arm64/arm64/exception.S Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm64/arm64/exception.S Sat Oct 3 07:22:07 2015 (r288540)
@@ -131,45 +131,51 @@ __FBSDID("$FreeBSD$");
2:
.endm
-handle_el1h_sync:
+ENTRY(handle_el1h_sync)
save_registers 1
mov x0, sp
bl do_el1h_sync
restore_registers 1
eret
+END(handle_el1h_sync)
-handle_el1h_irq:
+ENTRY(handle_el1h_irq)
save_registers 1
mov x0, sp
bl arm_cpu_intr
restore_registers 1
eret
+END(handle_el1h_irq)
-handle_el1h_error:
+ENTRY(handle_el1h_error)
brk 0xf13
+END(handle_el1h_error)
-handle_el0_sync:
+ENTRY(handle_el0_sync)
save_registers 0
mov x0, sp
bl do_el0_sync
do_ast
restore_registers 0
eret
+END(handle_el0_sync)
-handle_el0_irq:
+ENTRY(handle_el0_irq)
save_registers 0
mov x0, sp
bl arm_cpu_intr
do_ast
restore_registers 0
eret
+END(handle_el0_irq)
-handle_el0_error:
+ENTRY(handle_el0_error)
save_registers 0
mov x0, sp
bl do_el0_error
brk 0xf23
1: b 1b
+END(handle_el0_error)
.macro vempty
.align 7
Modified: projects/release-pkg/sys/arm64/arm64/pmap.c
==============================================================================
--- projects/release-pkg/sys/arm64/arm64/pmap.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/arm64/arm64/pmap.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -243,6 +243,16 @@ static void _pmap_unwire_l3(pmap_t pmap,
struct spglist *free);
static int pmap_unuse_l3(pmap_t, vm_offset_t, pd_entry_t, struct spglist *);
+/*
+ * These load the old table data and store the new value.
+ * They need to be atomic as the System MMU may write to the table at
+ * the same time as the CPU.
+ */
+#define pmap_load_store(table, entry) atomic_swap_64(table, entry)
+#define pmap_set(table, mask) atomic_set_64(table, mask)
+#define pmap_load_clear(table) atomic_swap_64(table, 0)
+#define pmap_load(table) (*table)
+
/********************/
/* Inline functions */
/********************/
@@ -277,7 +287,7 @@ pmap_l1_to_l2(pd_entry_t *l1, vm_offset_
{
pd_entry_t *l2;
- l2 = (pd_entry_t *)PHYS_TO_DMAP(*l1 & ~ATTR_MASK);
+ l2 = (pd_entry_t *)PHYS_TO_DMAP(pmap_load(l1) & ~ATTR_MASK);
return (&l2[pmap_l2_index(va)]);
}
@@ -287,7 +297,7 @@ pmap_l2(pmap_t pmap, vm_offset_t va)
pd_entry_t *l1;
l1 = pmap_l1(pmap, va);
- if ((*l1 & ATTR_DESCR_MASK) != L1_TABLE)
+ if ((pmap_load(l1) & ATTR_DESCR_MASK) != L1_TABLE)
return (NULL);
return (pmap_l1_to_l2(l1, va));
@@ -298,7 +308,7 @@ pmap_l2_to_l3(pd_entry_t *l2, vm_offset_
{
pt_entry_t *l3;
- l3 = (pd_entry_t *)PHYS_TO_DMAP(*l2 & ~ATTR_MASK);
+ l3 = (pd_entry_t *)PHYS_TO_DMAP(pmap_load(l2) & ~ATTR_MASK);
return (&l3[pmap_l3_index(va)]);
}
@@ -308,7 +318,7 @@ pmap_l3(pmap_t pmap, vm_offset_t va)
pd_entry_t *l2;
l2 = pmap_l2(pmap, va);
- if (l2 == NULL || (*l2 & ATTR_DESCR_MASK) != L2_TABLE)
+ if (l2 == NULL || (pmap_load(l2) & ATTR_DESCR_MASK) != L2_TABLE)
return (NULL);
return (pmap_l2_to_l3(l2, va));
@@ -326,19 +336,19 @@ pmap_get_tables(pmap_t pmap, vm_offset_t
l1p = pmap_l1(pmap, va);
*l1 = l1p;
- if ((*l1p & ATTR_DESCR_MASK) == L1_BLOCK) {
+ if ((pmap_load(l1p) & ATTR_DESCR_MASK) == L1_BLOCK) {
*l2 = NULL;
*l3 = NULL;
return (true);
}
- if ((*l1p & ATTR_DESCR_MASK) != L1_TABLE)
+ if ((pmap_load(l1p) & ATTR_DESCR_MASK) != L1_TABLE)
return (false);
l2p = pmap_l1_to_l2(l1p, va);
*l2 = l2p;
- if ((*l2p & ATTR_DESCR_MASK) == L2_BLOCK) {
+ if ((pmap_load(l2p) & ATTR_DESCR_MASK) == L2_BLOCK) {
*l3 = NULL;
return (true);
}
@@ -348,16 +358,6 @@ pmap_get_tables(pmap_t pmap, vm_offset_t
return (true);
}
-/*
- * These load the old table data and store the new value.
- * They need to be atomic as the System MMU may write to the table at
- * the same time as the CPU.
- */
-#define pmap_load_store(table, entry) atomic_swap_64(table, entry)
-#define pmap_set(table, mask) atomic_set_64(table, mask)
-#define pmap_load_clear(table) atomic_swap_64(table, 0)
-#define pmap_load(table) (*table)
-
static __inline int
pmap_is_current(pmap_t pmap)
{
@@ -799,11 +799,11 @@ pmap_extract(pmap_t pmap, vm_offset_t va
*/
l2p = pmap_l2(pmap, va);
if (l2p != NULL) {
- l2 = *l2p;
+ l2 = pmap_load(l2p);
if ((l2 & ATTR_DESCR_MASK) == L2_TABLE) {
l3p = pmap_l2_to_l3(l2p, va);
if (l3p != NULL) {
- l3 = *l3p;
+ l3 = pmap_load(l3p);
if ((l3 & ATTR_DESCR_MASK) == L3_PAGE)
pa = (l3 & ~ATTR_MASK) |
@@ -852,23 +852,25 @@ retry:
vm_paddr_t
pmap_kextract(vm_offset_t va)
{
- pd_entry_t *l2;
+ pd_entry_t *l2p, l2;
pt_entry_t *l3;
vm_paddr_t pa;
if (va >= DMAP_MIN_ADDRESS && va < DMAP_MAX_ADDRESS) {
pa = DMAP_TO_PHYS(va);
} else {
- l2 = pmap_l2(kernel_pmap, va);
- if (l2 == NULL)
+ l2p = pmap_l2(kernel_pmap, va);
+ if (l2p == NULL)
panic("pmap_kextract: No l2");
- if ((*l2 & ATTR_DESCR_MASK) == L2_BLOCK)
- return ((*l2 & ~ATTR_MASK) | (va & L2_OFFSET));
+ l2 = pmap_load(l2p);
+ if ((l2 & ATTR_DESCR_MASK) == L2_BLOCK)
+ return ((l2 & ~ATTR_MASK) |
+ (va & L2_OFFSET));
- l3 = pmap_l2_to_l3(l2, va);
+ l3 = pmap_l2_to_l3(l2p, va);
if (l3 == NULL)
panic("pmap_kextract: No l3...");
- pa = (*l3 & ~ATTR_MASK) | (va & PAGE_MASK);
+ pa = (pmap_load(l3) & ~ATTR_MASK) | (va & PAGE_MASK);
}
return (pa);
}
@@ -1242,11 +1244,11 @@ _pmap_alloc_l3(pmap_t pmap, vm_pindex_t
return (NULL);
}
} else {
- pdpg = PHYS_TO_VM_PAGE(*l1 & ~ATTR_MASK);
+ pdpg = PHYS_TO_VM_PAGE(pmap_load(l1) & ~ATTR_MASK);
pdpg->wire_count++;
}
- l2 = (pd_entry_t *)PHYS_TO_DMAP(*l1 & ~ATTR_MASK);
+ l2 = (pd_entry_t *)PHYS_TO_DMAP(pmap_load(l1) & ~ATTR_MASK);
l2 = &l2[ptepindex & Ln_ADDR_MASK];
pmap_load_store(l2, VM_PAGE_TO_PHYS(m) | L2_TABLE);
PTE_SYNC(l2);
@@ -1738,7 +1740,7 @@ pmap_remove(pmap_t pmap, vm_offset_t sva
if (l2 == NULL)
continue;
- l3_paddr = *l2;
+ l3_paddr = pmap_load(l2);
/*
* Weed out invalid mappings.
@@ -1805,7 +1807,7 @@ pmap_remove_all(vm_page_t m)
pv_entry_t pv;
pmap_t pmap;
pt_entry_t *l3, tl3;
- pd_entry_t *l2;
+ pd_entry_t *l2, tl2;
struct spglist free;
KASSERT((m->oflags & VPO_UNMANAGED) == 0,
@@ -1817,7 +1819,9 @@ pmap_remove_all(vm_page_t m)
PMAP_LOCK(pmap);
pmap_resident_count_dec(pmap, 1);
l2 = pmap_l2(pmap, pv->pv_va);
- KASSERT((*l2 & ATTR_DESCR_MASK) == L2_TABLE,
+ KASSERT(l2 != NULL, ("pmap_remove_all: no l2 table found"));
+ tl2 = pmap_load(l2);
+ KASSERT((tl2 & ATTR_DESCR_MASK) == L2_TABLE,
("pmap_remove_all: found a table when expecting "
"a block in %p's pv list", m));
l3 = pmap_l2_to_l3(l2, pv->pv_va);
@@ -1837,7 +1841,7 @@ pmap_remove_all(vm_page_t m)
*/
if (pmap_page_dirty(tl3))
vm_page_dirty(m);
- pmap_unuse_l3(pmap, pv->pv_va, *l2, &free);
+ pmap_unuse_l3(pmap, pv->pv_va, tl2, &free);
TAILQ_REMOVE(&m->md.pv_list, pv, pv_next);
m->md.pv_gen++;
free_pv_entry(pmap, pv);
@@ -1883,7 +1887,7 @@ pmap_protect(pmap_t pmap, vm_offset_t sv
va_next = eva;
l2 = pmap_l1_to_l2(l1, sva);
- if (l2 == NULL || (*l2 & ATTR_DESCR_MASK) != L2_TABLE)
+ if (l2 == NULL || (pmap_load(l2) & ATTR_DESCR_MASK) != L2_TABLE)
continue;
if (va_next > eva)
@@ -2345,7 +2349,7 @@ pmap_unwire(pmap_t pmap, vm_offset_t sva
continue;
if ((pmap_load(l3) & ATTR_SW_WIRED) == 0)
panic("pmap_unwire: l3 %#jx is missing "
- "ATTR_SW_WIRED", (uintmax_t)*l3);
+ "ATTR_SW_WIRED", (uintmax_t)pmap_load(l3));
/*
* PG_W must be cleared atomically. Although the pmap
@@ -2836,7 +2840,7 @@ retry_pv_loop:
}
l3 = pmap_l3(pmap, pv->pv_va);
retry:
- oldl3 = *l3;
+ oldl3 = pmap_load(l3);
if ((oldl3 & ATTR_AP_RW_BIT) == ATTR_AP(ATTR_AP_RW)) {
if (!atomic_cmpset_long(l3, oldl3,
oldl3 | ATTR_AP(ATTR_AP_RO)))
@@ -2879,7 +2883,7 @@ pmap_ts_referenced(vm_page_t m)
pv_entry_t pv, pvf;
pmap_t pmap;
struct rwlock *lock;
- pd_entry_t *l2;
+ pd_entry_t *l2p, l2;
pt_entry_t *l3;
vm_paddr_t pa;
int cleared, md_gen, not_cleared;
@@ -2912,12 +2916,14 @@ retry:
goto retry;
}
}
- l2 = pmap_l2(pmap, pv->pv_va);
- KASSERT((*l2 & ATTR_DESCR_MASK) == L2_TABLE,
+ l2p = pmap_l2(pmap, pv->pv_va);
+ KASSERT(l2p != NULL, ("pmap_ts_referenced: no l2 table found"));
+ l2 = pmap_load(l2p);
+ KASSERT((l2 & ATTR_DESCR_MASK) == L2_TABLE,
("pmap_ts_referenced: found an invalid l2 table"));
- l3 = pmap_l2_to_l3(l2, pv->pv_va);
+ l3 = pmap_l2_to_l3(l2p, pv->pv_va);
if ((pmap_load(l3) & ATTR_AF) != 0) {
- if (safe_to_clear_referenced(pmap, *l3)) {
+ if (safe_to_clear_referenced(pmap, pmap_load(l3))) {
/*
* TODO: We don't handle the access flag
* at all. We need to be able to set it in
@@ -2931,8 +2937,8 @@ retry:
* them is wasted effort. We do the
* hard work for unwired pages only.
*/
- pmap_remove_l3(pmap, l3, pv->pv_va,
- *l2, &free, &lock);
+ pmap_remove_l3(pmap, l3, pv->pv_va, l2,
+ &free, &lock);
pmap_invalidate_page(pmap, pv->pv_va);
cleared++;
if (pvf == pv)
Modified: projects/release-pkg/sys/cam/ctl/ctl.c
==============================================================================
--- projects/release-pkg/sys/cam/ctl/ctl.c Sat Oct 3 07:21:27 2015 (r288539)
+++ projects/release-pkg/sys/cam/ctl/ctl.c Sat Oct 3 07:22:07 2015 (r288540)
@@ -781,9 +781,9 @@ alloc:
msg->hdr.nexus.targ_lun = lun->lun;
msg->hdr.nexus.targ_mapped_lun = lun->lun;
msg->lun.flags = lun->flags;
- msg->lun.pr_generation = lun->PRGeneration;
+ msg->lun.pr_generation = lun->pr_generation;
msg->lun.pr_res_idx = lun->pr_res_idx;
- msg->lun.pr_res_type = lun->res_type;
+ msg->lun.pr_res_type = lun->pr_res_type;
msg->lun.pr_key_count = lun->pr_key_count;
i = 0;
if (lun->lun_devid) {
@@ -1085,9 +1085,9 @@ ctl_isc_lun_sync(struct ctl_softc *softc
/* If peer is primary and we are not -- use data */
if ((lun->flags & CTL_LUN_PRIMARY_SC) == 0 &&
(lun->flags & CTL_LUN_PEER_SC_PRIMARY)) {
- lun->PRGeneration = msg->lun.pr_generation;
+ lun->pr_generation = msg->lun.pr_generation;
lun->pr_res_idx = msg->lun.pr_res_idx;
- lun->res_type = msg->lun.pr_res_type;
+ lun->pr_res_type = msg->lun.pr_res_type;
lun->pr_key_count = msg->lun.pr_key_count;
for (k = 0; k < CTL_MAX_INITIATORS; k++)
ctl_clr_prkey(lun, k);
@@ -5101,6 +5101,13 @@ ctl_scsi_reserve(struct ctl_scsiio *ctsi
ctl_set_reservation_conflict(ctsio);
goto bailout;
}
+
+ /* SPC-3 exceptions to SPC-2 RESERVE and RELEASE behavior. */
+ if (lun->flags & CTL_LUN_PR_RESERVED) {
+ ctl_set_success(ctsio);
+ goto bailout;
+ }
+
lun->flags |= CTL_LUN_RESERVED;
lun->res_idx = residx;
ctl_set_success(ctsio);
@@ -5130,7 +5137,7 @@ ctl_start_stop(struct ctl_scsiio *ctsio)
residx = ctl_get_initindex(&ctsio->io_hdr.nexus);
if (ctl_get_prkey(lun, residx) == 0 ||
- (lun->pr_res_idx != residx && lun->res_type < 4)) {
+ (lun->pr_res_idx != residx && lun->pr_res_type < 4)) {
ctl_set_reservation_conflict(ctsio);
ctl_done((union ctl_io *)ctsio);
@@ -7540,7 +7547,7 @@ retry:
goto retry;
}
- scsi_ulto4b(lun->PRGeneration, res_keys->header.generation);
+ scsi_ulto4b(lun->pr_generation, res_keys->header.generation);
scsi_ulto4b(sizeof(struct scsi_per_res_key) *
lun->pr_key_count, res_keys->header.length);
@@ -7571,7 +7578,7 @@ retry:
res = (struct scsi_per_res_in_rsrv *)ctsio->kern_data_ptr;
- scsi_ulto4b(lun->PRGeneration, res->header.generation);
+ scsi_ulto4b(lun->pr_generation, res->header.generation);
if (lun->flags & CTL_LUN_PR_RESERVED)
{
@@ -7614,7 +7621,7 @@ retry:
scsi_u64to8b(ctl_get_prkey(lun, lun->pr_res_idx),
res->data.reservation);
}
- res->data.scopetype = lun->res_type;
+ res->data.scopetype = lun->pr_res_type;
break;
}
case SPRI_RC: //report capabilities
@@ -7624,7 +7631,8 @@ retry:
res_cap = (struct scsi_per_res_cap *)ctsio->kern_data_ptr;
scsi_ulto2b(sizeof(*res_cap), res_cap->length);
- res_cap->flags2 |= SPRI_TMV | SPRI_ALLOW_5;
+ res_cap->flags1 = SPRI_CRH;
+ res_cap->flags2 = SPRI_TMV | SPRI_ALLOW_5;
type_mask = SPRI_TM_WR_EX_AR |
SPRI_TM_EX_AC_RO |
SPRI_TM_WR_EX_RO |
@@ -7659,7 +7667,7 @@ retry:
goto retry;
}
- scsi_ulto4b(lun->PRGeneration, res_status->header.generation);
+ scsi_ulto4b(lun->pr_generation, res_status->header.generation);
res_desc = &res_status->desc[0];
for (i = 0; i < CTL_MAX_INITIATORS; i++) {
@@ -7671,7 +7679,7 @@ retry:
(lun->pr_res_idx == i ||
lun->pr_res_idx == CTL_PR_ALL_REGISTRANTS)) {
res_desc->flags = SPRI_FULL_R_HOLDER;
- res_desc->scopetype = lun->res_type;
+ res_desc->scopetype = lun->pr_res_type;
}
scsi_ulto2b(i / CTL_MAX_INIT_PER_PORT,
res_desc->rel_trgt_port_id);
@@ -7760,11 +7768,11 @@ ctl_pro_preempt(struct ctl_softc *softc,
ctl_est_ua(lun, i, CTL_UA_REG_PREEMPT);
}
lun->pr_key_count = 1;
- lun->res_type = type;
- if (lun->res_type != SPR_TYPE_WR_EX_AR
- && lun->res_type != SPR_TYPE_EX_AC_AR)
+ lun->pr_res_type = type;
+ if (lun->pr_res_type != SPR_TYPE_WR_EX_AR &&
+ lun->pr_res_type != SPR_TYPE_EX_AC_AR)
lun->pr_res_idx = residx;
- lun->PRGeneration++;
+ lun->pr_generation++;
mtx_unlock(&lun->lun_lock);
/* send msg to other side */
@@ -7834,7 +7842,7 @@ ctl_pro_preempt(struct ctl_softc *softc,
ctl_done((union ctl_io *)ctsio);
return (CTL_RETVAL_COMPLETE);
}
- lun->PRGeneration++;
+ lun->pr_generation++;
mtx_unlock(&lun->lun_lock);
/* send msg to other side */
@@ -7900,19 +7908,19 @@ ctl_pro_preempt(struct ctl_softc *softc,
ctl_clr_prkey(lun, i);
lun->pr_key_count--;
ctl_est_ua(lun, i, CTL_UA_REG_PREEMPT);
- } else if (type != lun->res_type
- && (lun->res_type == SPR_TYPE_WR_EX_RO
- || lun->res_type ==SPR_TYPE_EX_AC_RO)){
+ } else if (type != lun->pr_res_type &&
+ (lun->pr_res_type == SPR_TYPE_WR_EX_RO ||
+ lun->pr_res_type == SPR_TYPE_EX_AC_RO)) {
ctl_est_ua(lun, i, CTL_UA_RES_RELEASE);
}
}
- lun->res_type = type;
- if (lun->res_type != SPR_TYPE_WR_EX_AR
- && lun->res_type != SPR_TYPE_EX_AC_AR)
+ lun->pr_res_type = type;
+ if (lun->pr_res_type != SPR_TYPE_WR_EX_AR &&
+ lun->pr_res_type != SPR_TYPE_EX_AC_AR)
lun->pr_res_idx = residx;
else
lun->pr_res_idx = CTL_PR_ALL_REGISTRANTS;
- lun->PRGeneration++;
+ lun->pr_generation++;
mtx_unlock(&lun->lun_lock);
persis_io.hdr.nexus = ctsio->io_hdr.nexus;
@@ -7949,7 +7957,7 @@ ctl_pro_preempt(struct ctl_softc *softc,
ctl_done((union ctl_io *)ctsio);
return (1);
}
- lun->PRGeneration++;
+ lun->pr_generation++;
mtx_unlock(&lun->lun_lock);
persis_io.hdr.nexus = ctsio->io_hdr.nexus;
@@ -7993,9 +8001,9 @@ ctl_pro_preempt_other(struct ctl_lun *lu
}
lun->pr_key_count = 1;
- lun->res_type = msg->pr.pr_info.res_type;
- if (lun->res_type != SPR_TYPE_WR_EX_AR
- && lun->res_type != SPR_TYPE_EX_AC_AR)
+ lun->pr_res_type = msg->pr.pr_info.res_type;
+ if (lun->pr_res_type != SPR_TYPE_WR_EX_AR &&
+ lun->pr_res_type != SPR_TYPE_EX_AC_AR)
lun->pr_res_idx = msg->pr.pr_info.residx;
} else {
for (i = 0; i < CTL_MAX_INITIATORS; i++) {
@@ -8017,20 +8025,20 @@ ctl_pro_preempt_other(struct ctl_lun *lu
ctl_clr_prkey(lun, i);
lun->pr_key_count--;
ctl_est_ua(lun, i, CTL_UA_REG_PREEMPT);
- } else if (msg->pr.pr_info.res_type != lun->res_type
- && (lun->res_type == SPR_TYPE_WR_EX_RO
- || lun->res_type == SPR_TYPE_EX_AC_RO)) {
+ } else if (msg->pr.pr_info.res_type != lun->pr_res_type
+ && (lun->pr_res_type == SPR_TYPE_WR_EX_RO ||
+ lun->pr_res_type == SPR_TYPE_EX_AC_RO)) {
ctl_est_ua(lun, i, CTL_UA_RES_RELEASE);
}
}
- lun->res_type = msg->pr.pr_info.res_type;
- if (lun->res_type != SPR_TYPE_WR_EX_AR
- && lun->res_type != SPR_TYPE_EX_AC_AR)
+ lun->pr_res_type = msg->pr.pr_info.res_type;
+ if (lun->pr_res_type != SPR_TYPE_WR_EX_AR &&
+ lun->pr_res_type != SPR_TYPE_EX_AC_AR)
lun->pr_res_idx = msg->pr.pr_info.residx;
else
lun->pr_res_idx = CTL_PR_ALL_REGISTRANTS;
}
- lun->PRGeneration++;
+ lun->pr_generation++;
}
@@ -8212,9 +8220,9 @@ ctl_persistent_reserve_out(struct ctl_sc
lun->flags &= ~CTL_LUN_PR_RESERVED;
lun->pr_res_idx = CTL_PR_NO_RESERVATION;
- if ((lun->res_type == SPR_TYPE_WR_EX_RO
- || lun->res_type == SPR_TYPE_EX_AC_RO)
- && lun->pr_key_count) {
+ if ((lun->pr_res_type == SPR_TYPE_WR_EX_RO ||
+ lun->pr_res_type == SPR_TYPE_EX_AC_RO) &&
+ lun->pr_key_count) {
/*
* If the reservation is a registrants
* only type we need to generate a UA
@@ -8230,15 +8238,15 @@ ctl_persistent_reserve_out(struct ctl_sc
CTL_UA_RES_RELEASE);
}
}
- lun->res_type = 0;
+ lun->pr_res_type = 0;
} else if (lun->pr_res_idx == CTL_PR_ALL_REGISTRANTS) {
if (lun->pr_key_count==0) {
lun->flags &= ~CTL_LUN_PR_RESERVED;
- lun->res_type = 0;
+ lun->pr_res_type = 0;
lun->pr_res_idx = CTL_PR_NO_RESERVATION;
}
}
- lun->PRGeneration++;
+ lun->pr_generation++;
mtx_unlock(&lun->lun_lock);
persis_io.hdr.nexus = ctsio->io_hdr.nexus;
@@ -8257,7 +8265,7 @@ ctl_persistent_reserve_out(struct ctl_sc
if (ctl_get_prkey(lun, residx) == 0)
lun->pr_key_count++;
ctl_set_prkey(lun, residx, sa_res_key);
- lun->PRGeneration++;
+ lun->pr_generation++;
mtx_unlock(&lun->lun_lock);
persis_io.hdr.nexus = ctsio->io_hdr.nexus;
@@ -8286,7 +8294,7 @@ ctl_persistent_reserve_out(struct ctl_sc
*/
if ((lun->pr_res_idx != residx
&& lun->pr_res_idx != CTL_PR_ALL_REGISTRANTS)
- || lun->res_type != type) {
+ || lun->pr_res_type != type) {
mtx_unlock(&lun->lun_lock);
free(ctsio->kern_data_ptr, M_CTL);
ctl_set_reservation_conflict(ctsio);
@@ -8306,7 +8314,7 @@ ctl_persistent_reserve_out(struct ctl_sc
lun->pr_res_idx = CTL_PR_ALL_REGISTRANTS;
lun->flags |= CTL_LUN_PR_RESERVED;
- lun->res_type = type;
+ lun->pr_res_type = type;
mtx_unlock(&lun->lun_lock);
@@ -8341,7 +8349,7 @@ ctl_persistent_reserve_out(struct ctl_sc
goto done;
}
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list