mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
target/riscv/kvm.c: remove group setting of KVM AIA if the machine only has 1 socket
The emulated AIA within the Linux kernel restores the HART index of the IMSICs according to the configured AIA settings. During this process, the group setting is used only when the machine partitions harts into groups. It's unnecessary to set the group configuration if the machine has only one socket, as its address space might not contain the group shift. Signed-off-by: Yong-Xuan Wang <yongxuan.wang@sifive.com> Reviewed-by: Jim Shu <jim.shu@sifive.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Message-ID: <20231218090543.22353-2-yongxuan.wang@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
dfa3c4c57e
commit
871dad3a19
1 changed files with 17 additions and 14 deletions
|
@ -1390,21 +1390,24 @@ void kvm_riscv_aia_create(MachineState *machine, uint64_t group_shift,
|
|||
exit(1);
|
||||
}
|
||||
|
||||
socket_bits = find_last_bit(&socket_count, BITS_PER_LONG) + 1;
|
||||
ret = kvm_device_access(aia_fd, KVM_DEV_RISCV_AIA_GRP_CONFIG,
|
||||
KVM_DEV_RISCV_AIA_CONFIG_GROUP_BITS,
|
||||
&socket_bits, true, NULL);
|
||||
if (ret < 0) {
|
||||
error_report("KVM AIA: failed to set group_bits");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = kvm_device_access(aia_fd, KVM_DEV_RISCV_AIA_GRP_CONFIG,
|
||||
KVM_DEV_RISCV_AIA_CONFIG_GROUP_SHIFT,
|
||||
&group_shift, true, NULL);
|
||||
if (ret < 0) {
|
||||
error_report("KVM AIA: failed to set group_shift");
|
||||
exit(1);
|
||||
if (socket_count > 1) {
|
||||
socket_bits = find_last_bit(&socket_count, BITS_PER_LONG) + 1;
|
||||
ret = kvm_device_access(aia_fd, KVM_DEV_RISCV_AIA_GRP_CONFIG,
|
||||
KVM_DEV_RISCV_AIA_CONFIG_GROUP_BITS,
|
||||
&socket_bits, true, NULL);
|
||||
if (ret < 0) {
|
||||
error_report("KVM AIA: failed to set group_bits");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ret = kvm_device_access(aia_fd, KVM_DEV_RISCV_AIA_GRP_CONFIG,
|
||||
KVM_DEV_RISCV_AIA_CONFIG_GROUP_SHIFT,
|
||||
&group_shift, true, NULL);
|
||||
if (ret < 0) {
|
||||
error_report("KVM AIA: failed to set group_shift");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
guest_bits = guest_num == 0 ? 0 :
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue