This series add generic eiointc 8 bytes access interface, so that 1/2/4/8 bytes access can use the generic 8 bytes access interface. It reduce about 500 lines redundant code and make eiointc emulation driver simpler than ever. --- v5 ... v6: 1. Merge previous patch 5 & 6 into one, patch 7 & 10 into into one and patch 12 and patch 13 into one. 2. Use sign extension with destination register for IOCSRRD.{B/H/W} kernel emulation. v4 ... v5 1. Rebase patch on latest kernel where bugfix of eiointc has been merged. 2. Add generic eiointc 8 bytes access interface, 1/2/4/8 bytes access uses generic 8 bytes access interface. v3 ... v4: 1. Remove patch about enhancement and only keep bugfix relative patches. 2. Remove INTC indication in the patch title. 3. With access size, keep default case unchanged besides 1/2/4/8 since here all patches are bugfix 4. Firstly check return value of copy_from_user() with error path, keep the same order with old patch in patch 4. v2 ... v3: 1. Add prefix INTC: in title of every patch. 2. Fix array index overflow when emulate register EIOINTC_ENABLE writing operation. 3. Add address alignment check with eiointc register access operation. v1 ... v2: 1. Add extra fix in patch 3 and patch 4, add num_cpu validation check 2. Name of stat information keeps unchanged, only move it from VM stat to vCPU stat. --- Bibo Mao (8): LoongArch: KVM: Use standard bitops API with eiointc LoongArch: KVM: Remove unused parameter len LoongArch: KVM: Add stat information with kernel irqchip LoongArch: KVM: Remove never called default case statement LoongArch: KVM: Use generic function loongarch_eiointc_read() LoongArch: KVM: Remove some unnecessary local variables LoongArch: KVM: Replace eiointc_enable_irq() with eiointc_update_irq() LoongArch: KVM: Add generic function loongarch_eiointc_write() arch/loongarch/include/asm/kvm_host.h | 12 +- arch/loongarch/kvm/intc/eiointc.c | 558 ++++---------------------- arch/loongarch/kvm/intc/ipi.c | 28 +- arch/loongarch/kvm/intc/pch_pic.c | 4 +- arch/loongarch/kvm/vcpu.c | 8 +- 5 files changed, 102 insertions(+), 508 deletions(-) base-commit: 733923397fd95405a48f165c9b1fbc8c4b0a4681 -- 2.39.3