On 2025/7/3 下午5:26, Song Gao wrote:
Add write misc  avecintc status bit and read avecintc feature and status bit.
Add feature register and misc register for avecintc feature checking and setting?

Signed-off-by: Song Gao <[email protected]>
---
  hw/loongarch/virt.c | 11 +++++++++++
  1 file changed, 11 insertions(+)

diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 112cf9a9db..26db1bbd68 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -560,6 +560,10 @@ static MemTxResult virt_iocsr_misc_write(void *opaque, 
hwaddr addr,
              return MEMTX_OK;
          }
+ if (val & BIT(IOCSRM_AVEC_EN)) {
+            lvms->misc_status |= BIT(IOCSRM_AVEC_EN);
+        }
+
          features = address_space_ldl(&lvms->as_iocsr,
                                       EXTIOI_VIRT_BASE + EXTIOI_VIRT_CONFIG,
                                       attrs, NULL);
@@ -595,6 +599,9 @@ static MemTxResult virt_iocsr_misc_read(void *opaque, 
hwaddr addr,
          break;
      case FEATURE_REG:
          ret = BIT(IOCSRF_MSI) | BIT(IOCSRF_EXTIOI) | BIT(IOCSRF_CSRIPI);
+        if (virt_is_avecintc_enabled(lvms)) {
Can the name virt_is_avecintc_enabled() be renamed as virt_has_avecintc()?

Regards
Bibo Mao
+            ret |= BIT(IOCSRF_AVEC);
+        }
          if (kvm_enabled()) {
              ret |= BIT(IOCSRF_VM);
          }
@@ -624,6 +631,10 @@ static MemTxResult virt_iocsr_misc_read(void *opaque, 
hwaddr addr,
          if (features & BIT(EXTIOI_ENABLE_INT_ENCODE)) {
              ret |= BIT_ULL(IOCSRM_EXTIOI_INT_ENCODE);
          }
+        if (virt_is_avecintc_enabled(lvms) &&
+            (lvms->misc_status & BIT(IOCSRM_AVEC_EN))) {
+            ret |= BIT_ULL(IOCSRM_AVEC_EN);
+        }
          break;
      default:
          g_assert_not_reached();



Reply via email to