1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 4 */ 5 6#include <linux/debugfs.h> 7#include <linux/kvm_host.h> 8#include <linux/seq_file.h> 9#include "kvmcpu.h" 10#include "ls3a_ext_irq.h" 11#include "ls7a_irq.h" 12 13#ifdef CONFIG_DEBUG_FS 14static int irqchip_state_show(struct seq_file *m, void *v) 15{ 16 struct kvm *kvm = m->private; 17 18 kvm_get_kvm(kvm); 19 kvm_dump_ls3a_extirq_state(m, kvm->arch.v_extirq); 20 kvm_dump_ls7a_ioapic_state(m, kvm->arch.v_ioapic); 21 kvm_put_kvm(kvm); 22 23 return 0; 24} 25 26static int irqchip_debug_open(struct inode *inode, struct file *file) 27{ 28 return single_open(file, irqchip_state_show, inode->i_private); 29} 30 31static const struct file_operations irqchip_debug_fops = { 32 .open = irqchip_debug_open, 33 .read = seq_read, 34 .llseek = seq_lseek, 35 .release = single_release, 36}; 37 38void irqchip_debug_init(struct kvm *kvm) 39{ 40 debugfs_create_file("irqchip-state", 0444, kvm->debugfs_dentry, kvm, 41 &irqchip_debug_fops); 42} 43#else 44 45void irqchip_debug_init(struct kvm *kvm) {} 46#endif 47void irqchip_debug_destroy(struct kvm *kvm) 48{ 49} 50