forked from luck/tmp_suning_uos_patched
Microblaze patches for 4.13-rc1
- Timer fix - Using simplified macro in dma.c - Wire-up new syscall - Remove asp-generic wrappers - Fix MMU table handling - Defconfig updates - Low level entry.S changes -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEABECAAYFAllaKO0ACgkQykllyylKDCHDPgCfcEfC56Qm90UbzEIbnpykvLQ3 wXoAniB0GP+K2PJnlzcatbH1iNbDnHb6 =fL57 -----END PGP SIGNATURE----- Merge tag 'microblaze-4.13-rc1' of git://git.monstr.eu/linux-2.6-microblaze Pull microblaze updates from Michal Simek: - timer fix - use simplified macro in dma.c - wire-up new syscall - remove asp-generic wrappers - fix MMU table handling - defconfig updates - low-level entry.S changes * tag 'microblaze-4.13-rc1' of git://git.monstr.eu/linux-2.6-microblaze: microblaze: Fix MSR flags when returning from exception microblaze: Separate GP registers from MSR handling microblaze: Enabling CONFIG_BRIDGE in mmu_defconfig microblaze: Enabling CONFIGS related to MTD microblaze: Update defconfigs microblaze: mm: Flush TLB to ensure correct mapping when higmem ON microblaze: remove asm-generic wrapper headers microblaze: wire up statx syscall microblaze: Set ->min_delta_ticks and ->max_delta_ticks for timer microblaze: use sg_phys()
This commit is contained in:
commit
058e88d37f
|
@ -1,8 +1,6 @@
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
|
@ -33,10 +31,12 @@ CONFIG_NET=y
|
|||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_BRIDGE=m
|
||||
CONFIG_MTD=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_NETDEVICES=y
|
||||
|
@ -47,9 +47,9 @@ CONFIG_XILINX_LL_TEMAC=y
|
|||
# CONFIG_VT is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_UARTLITE=y
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_XILINX_HWICAP=y
|
||||
CONFIG_I2C=y
|
||||
|
@ -66,7 +66,6 @@ CONFIG_FB=y
|
|||
CONFIG_FB_XILINX=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_UIO=y
|
||||
CONFIG_UIO_PDRV=y
|
||||
CONFIG_UIO_PDRV_GENIRQ=y
|
||||
CONFIG_UIO_DMEM_GENIRQ=y
|
||||
CONFIG_EXT2_FS=y
|
||||
|
@ -77,14 +76,13 @@ CONFIG_NFS_FS=y
|
|||
CONFIG_CIFS=y
|
||||
CONFIG_CIFS_STATS=y
|
||||
CONFIG_CIFS_STATS2=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_KGDB=y
|
||||
CONFIG_KGDB_TESTS=y
|
||||
CONFIG_KGDB_KDB=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_ENCRYPTED_KEYS=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_IKCONFIG=y
|
||||
|
@ -34,18 +31,15 @@ CONFIG_NET=y
|
|||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_RAM=y
|
||||
CONFIG_MTD_UCLINUX=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_NETDEVICES=y
|
||||
|
@ -56,9 +50,9 @@ CONFIG_XILINX_LL_TEMAC=y
|
|||
# CONFIG_VT is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_SERIAL_UARTLITE=y
|
||||
CONFIG_SERIAL_UARTLITE_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_XILINX_HWICAP=y
|
||||
CONFIG_I2C=y
|
||||
|
@ -74,10 +68,6 @@ CONFIG_XILINX_WATCHDOG=y
|
|||
CONFIG_FB=y
|
||||
CONFIG_FB_XILINX=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_UIO=y
|
||||
CONFIG_UIO_PDRV=y
|
||||
CONFIG_UIO_PDRV_GENIRQ=y
|
||||
CONFIG_UIO_DMEM_GENIRQ=y
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_CRAMFS=y
|
||||
|
@ -85,10 +75,10 @@ CONFIG_ROMFS_FS=y
|
|||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NLS=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
CONFIG_DETECT_HUNG_TASK=y
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_ENCRYPTED_KEYS=y
|
||||
|
@ -97,4 +87,3 @@ CONFIG_CRYPTO_MD4=y
|
|||
CONFIG_CRYPTO_MD5=y
|
||||
CONFIG_CRYPTO_ARC4=y
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
||||
|
|
|
@ -1,14 +1,57 @@
|
|||
|
||||
generic-y += barrier.h
|
||||
generic-y += bitops.h
|
||||
generic-y += bitsperlong.h
|
||||
generic-y += bug.h
|
||||
generic-y += bugs.h
|
||||
generic-y += clkdev.h
|
||||
generic-y += device.h
|
||||
generic-y += div64.h
|
||||
generic-y += emergency-restart.h
|
||||
generic-y += errno.h
|
||||
generic-y += exec.h
|
||||
generic-y += extable.h
|
||||
generic-y += fb.h
|
||||
generic-y += fcntl.h
|
||||
generic-y += hardirq.h
|
||||
generic-y += ioctl.h
|
||||
generic-y += ioctls.h
|
||||
generic-y += ipcbuf.h
|
||||
generic-y += irq_regs.h
|
||||
generic-y += irq_work.h
|
||||
generic-y += kdebug.h
|
||||
generic-y += kmap_types.h
|
||||
generic-y += kprobes.h
|
||||
generic-y += linkage.h
|
||||
generic-y += local.h
|
||||
generic-y += local64.h
|
||||
generic-y += mcs_spinlock.h
|
||||
generic-y += mm-arch-hooks.h
|
||||
generic-y += mman.h
|
||||
generic-y += msgbuf.h
|
||||
generic-y += param.h
|
||||
generic-y += parport.h
|
||||
generic-y += percpu.h
|
||||
generic-y += poll.h
|
||||
generic-y += preempt.h
|
||||
generic-y += resource.h
|
||||
generic-y += sembuf.h
|
||||
generic-y += serial.h
|
||||
generic-y += shmbuf.h
|
||||
generic-y += shmparam.h
|
||||
generic-y += siginfo.h
|
||||
generic-y += signal.h
|
||||
generic-y += socket.h
|
||||
generic-y += sockios.h
|
||||
generic-y += stat.h
|
||||
generic-y += statfs.h
|
||||
generic-y += swab.h
|
||||
generic-y += syscalls.h
|
||||
generic-y += termbits.h
|
||||
generic-y += termios.h
|
||||
generic-y += topology.h
|
||||
generic-y += trace_clock.h
|
||||
generic-y += ucontext.h
|
||||
generic-y += vga.h
|
||||
generic-y += word-at-a-time.h
|
||||
generic-y += kprobes.h
|
||||
generic-y += xor.h
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/bitops.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/bug.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/bugs.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/div64.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/emergency-restart.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/fb.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/hardirq.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/irq_regs.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/kdebug.h>
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef _ASM_MICROBLAZE_KMAP_TYPES_H
|
||||
#define _ASM_MICROBLAZE_KMAP_TYPES_H
|
||||
|
||||
#include <asm-generic/kmap_types.h>
|
||||
|
||||
#endif /* _ASM_MICROBLAZE_KMAP_TYPES_H */
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/linkage.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/local.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/local64.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/parport.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/percpu.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/serial.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/shmparam.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/topology.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/ucontext.h>
|
|
@ -38,6 +38,6 @@
|
|||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#define __NR_syscalls 398
|
||||
#define __NR_syscalls 399
|
||||
|
||||
#endif /* _ASM_MICROBLAZE_UNISTD_H */
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/vga.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/xor.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/bitsperlong.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/errno.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/fcntl.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/ioctl.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/ioctls.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/ipcbuf.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/kvm_para.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/mman.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/msgbuf.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/param.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/poll.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/resource.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/sembuf.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/shmbuf.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/siginfo.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/signal.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/socket.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/sockios.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/stat.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/statfs.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/swab.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/termbits.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/termios.h>
|
|
@ -413,5 +413,6 @@
|
|||
#define __NR_pkey_mprotect 395
|
||||
#define __NR_pkey_alloc 396
|
||||
#define __NR_pkey_free 397
|
||||
#define __NR_statx 398
|
||||
|
||||
#endif /* _UAPI_ASM_MICROBLAZE_UNISTD_H */
|
||||
|
|
|
@ -65,8 +65,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl,
|
|||
if (attrs & DMA_ATTR_SKIP_CPU_SYNC)
|
||||
continue;
|
||||
|
||||
__dma_sync(page_to_phys(sg_page(sg)) + sg->offset,
|
||||
sg->length, direction);
|
||||
__dma_sync(sg_phys(sg), sg->length, direction);
|
||||
}
|
||||
|
||||
return nents;
|
||||
|
|
|
@ -208,9 +208,7 @@ syscall_debug_table:
|
|||
mfs r11, rmsr; /* save MSR */ \
|
||||
swi r11, r1, PT_MSR;
|
||||
|
||||
#define RESTORE_REGS \
|
||||
lwi r11, r1, PT_MSR; \
|
||||
mts rmsr , r11; \
|
||||
#define RESTORE_REGS_GP \
|
||||
lwi r2, r1, PT_R2; /* restore SDA */ \
|
||||
lwi r3, r1, PT_R3; \
|
||||
lwi r4, r1, PT_R4; \
|
||||
|
@ -242,6 +240,18 @@ syscall_debug_table:
|
|||
lwi r30, r1, PT_R30; \
|
||||
lwi r31, r1, PT_R31; /* Restore cur task reg */
|
||||
|
||||
#define RESTORE_REGS \
|
||||
lwi r11, r1, PT_MSR; \
|
||||
mts rmsr , r11; \
|
||||
RESTORE_REGS_GP
|
||||
|
||||
#define RESTORE_REGS_RTBD \
|
||||
lwi r11, r1, PT_MSR; \
|
||||
andni r11, r11, MSR_EIP; /* clear EIP */ \
|
||||
ori r11, r11, MSR_EE | MSR_BIP; /* set EE and BIP */ \
|
||||
mts rmsr , r11; \
|
||||
RESTORE_REGS_GP
|
||||
|
||||
#define SAVE_STATE \
|
||||
swi r1, r0, TOPHYS(PER_CPU(ENTRY_SP)); /* save stack */ \
|
||||
/* See if already in kernel mode.*/ \
|
||||
|
@ -427,7 +437,7 @@ C_ENTRY(ret_from_trap):
|
|||
swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */
|
||||
VM_OFF;
|
||||
tophys(r1,r1);
|
||||
RESTORE_REGS;
|
||||
RESTORE_REGS_RTBD;
|
||||
addik r1, r1, PT_SIZE /* Clean up stack space. */
|
||||
lwi r1, r1, PT_R1 - PT_SIZE;/* Restore user stack pointer. */
|
||||
bri 6f;
|
||||
|
@ -436,7 +446,7 @@ C_ENTRY(ret_from_trap):
|
|||
2: set_bip; /* Ints masked for state restore */
|
||||
VM_OFF;
|
||||
tophys(r1,r1);
|
||||
RESTORE_REGS;
|
||||
RESTORE_REGS_RTBD;
|
||||
addik r1, r1, PT_SIZE /* Clean up stack space. */
|
||||
tovirt(r1,r1);
|
||||
6:
|
||||
|
@ -612,7 +622,7 @@ C_ENTRY(ret_from_exc):
|
|||
VM_OFF;
|
||||
tophys(r1,r1);
|
||||
|
||||
RESTORE_REGS;
|
||||
RESTORE_REGS_RTBD;
|
||||
addik r1, r1, PT_SIZE /* Clean up stack space. */
|
||||
|
||||
lwi r1, r1, PT_R1 - PT_SIZE; /* Restore user stack pointer. */
|
||||
|
@ -621,7 +631,7 @@ C_ENTRY(ret_from_exc):
|
|||
2: set_bip; /* Ints masked for state restore */
|
||||
VM_OFF;
|
||||
tophys(r1,r1);
|
||||
RESTORE_REGS;
|
||||
RESTORE_REGS_RTBD;
|
||||
addik r1, r1, PT_SIZE /* Clean up stack space. */
|
||||
|
||||
tovirt(r1,r1);
|
||||
|
@ -847,7 +857,7 @@ dbtrap_call: /* Return point for kernel/user entry + 8 because of rtsd r15, 8 */
|
|||
VM_OFF;
|
||||
tophys(r1,r1);
|
||||
/* MS: Restore all regs */
|
||||
RESTORE_REGS
|
||||
RESTORE_REGS_RTBD
|
||||
addik r1, r1, PT_SIZE /* Clean up stack space */
|
||||
lwi r1, r1, PT_R1 - PT_SIZE; /* Restore user stack pointer */
|
||||
DBTRAP_return_user: /* MS: Make global symbol for debugging */
|
||||
|
@ -858,7 +868,7 @@ DBTRAP_return_user: /* MS: Make global symbol for debugging */
|
|||
2: VM_OFF;
|
||||
tophys(r1,r1);
|
||||
/* MS: Restore all regs */
|
||||
RESTORE_REGS
|
||||
RESTORE_REGS_RTBD
|
||||
lwi r14, r1, PT_R14;
|
||||
lwi r16, r1, PT_PC;
|
||||
addik r1, r1, PT_SIZE; /* MS: Clean up stack space */
|
||||
|
|
|
@ -398,3 +398,4 @@ ENTRY(sys_call_table)
|
|||
.long sys_pkey_mprotect /* 395 */
|
||||
.long sys_pkey_alloc
|
||||
.long sys_pkey_free
|
||||
.long sys_statx
|
||||
|
|
|
@ -178,8 +178,10 @@ static __init int xilinx_clockevent_init(void)
|
|||
clockevent_xilinx_timer.shift);
|
||||
clockevent_xilinx_timer.max_delta_ns =
|
||||
clockevent_delta2ns((u32)~0, &clockevent_xilinx_timer);
|
||||
clockevent_xilinx_timer.max_delta_ticks = (u32)~0;
|
||||
clockevent_xilinx_timer.min_delta_ns =
|
||||
clockevent_delta2ns(1, &clockevent_xilinx_timer);
|
||||
clockevent_xilinx_timer.min_delta_ticks = 1;
|
||||
clockevent_xilinx_timer.cpumask = cpumask_of(0);
|
||||
clockevents_register_device(&clockevent_xilinx_timer);
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ void __kunmap_atomic(void *kvaddr)
|
|||
{
|
||||
unsigned long vaddr = (unsigned long) kvaddr & PAGE_MASK;
|
||||
int type;
|
||||
unsigned int idx;
|
||||
|
||||
if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
|
||||
pagefault_enable();
|
||||
|
@ -68,21 +69,18 @@ void __kunmap_atomic(void *kvaddr)
|
|||
}
|
||||
|
||||
type = kmap_atomic_idx();
|
||||
|
||||
idx = type + KM_TYPE_NR * smp_processor_id();
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
{
|
||||
unsigned int idx;
|
||||
|
||||
idx = type + KM_TYPE_NR * smp_processor_id();
|
||||
BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
|
||||
|
||||
/*
|
||||
* force other mappings to Oops if they'll try to access
|
||||
* this pte without first remap it
|
||||
*/
|
||||
pte_clear(&init_mm, vaddr, kmap_pte-idx);
|
||||
local_flush_tlb_page(NULL, vaddr);
|
||||
}
|
||||
BUG_ON(vaddr != __fix_to_virt(FIX_KMAP_BEGIN + idx));
|
||||
#endif
|
||||
/*
|
||||
* force other mappings to Oops if they'll try to access
|
||||
* this pte without first remap it
|
||||
*/
|
||||
pte_clear(&init_mm, vaddr, kmap_pte-idx);
|
||||
local_flush_tlb_page(NULL, vaddr);
|
||||
|
||||
kmap_atomic_idx_pop();
|
||||
pagefault_enable();
|
||||
preempt_enable();
|
||||
|
|
Loading…
Reference in New Issue
Block a user