On 9/24/25 23:09, Song Gao wrote:
> Add feature register and misc register for dmsi feature checking and
> setting
>
> Signed-off-by: Song Gao <gaosong@loongson.cn>
> Reviewed-by: Bibo Mao <maobibo@loongson.cn>
> Message-ID: <20250916122109.749813-4-gaosong@loongson.cn>
> ---
> hw/loongarch/virt.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
This fails testing:
https://gitlab.com/qemu-project/qemu/-/jobs/11511929825
You wanted BIT_ULL for 64-bit values.
r~
>
> diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
> index 3ef42bafd0..4ec50f6bd9 100644
> --- a/hw/loongarch/virt.c
> +++ b/hw/loongarch/virt.c
> @@ -564,6 +564,10 @@ static MemTxResult virt_iocsr_misc_write(void *opaque, hwaddr addr,
> return MEMTX_OK;
> }
>
> + if (virt_has_dmsi(lvms) && val & BIT(IOCSRM_DMSI_EN)) {
> + lvms->misc_status |= BIT(IOCSRM_DMSI_EN);
> + }
> +
> features = address_space_ldl(&lvms->as_iocsr,
> EXTIOI_VIRT_BASE + EXTIOI_VIRT_CONFIG,
> attrs, NULL);
> @@ -599,6 +603,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_has_dmsi(lvms)) {
> + ret |= BIT(IOCSRF_DMSI);
> + }
> if (kvm_enabled()) {
> ret |= BIT(IOCSRF_VM);
> }
> @@ -628,6 +635,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_has_dmsi(lvms) &&
> + (lvms->misc_status & BIT(IOCSRM_DMSI_EN))) {
> + ret |= BIT_ULL(IOCSRM_DMSI_EN);
> + }
> break;
> default:
> g_assert_not_reached();