Message ID | 20211230123539.52786-24-anup@brainfault.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | QEMU RISC-V AIA support | expand |
On Thu, Dec 30, 2021 at 11:06 PM Anup Patel <anup@brainfault.org> wrote: > > From: Anup Patel <anup.patel@wdc.com> > > To facilitate software development of RISC-V systems with large number > of HARTs, we increase the maximum number of allowed CPUs to 512 (2^9). > > We also add a detailed source level comments about limit defines which > impact the physical address space utilization. > > Signed-off-by: Anup Patel <anup.patel@wdc.com> > Signed-off-by: Anup Patel <anup@brainfault.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/riscv/virt.c | 10 ++++++++++ > include/hw/riscv/virt.h | 2 +- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index 7579f7b41f..86b03736eb 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -44,6 +44,16 @@ > #include "hw/pci-host/gpex.h" > #include "hw/display/ramfb.h" > > +/* > + * The virt machine physical address space used by some of the devices > + * namely ACLINT, PLIC, APLIC, and IMSIC depend on number of Sockets, > + * number of CPUs, and number of IMSIC guest files. > + * > + * Various limits defined by VIRT_SOCKETS_MAX_BITS, VIRT_CPUS_MAX_BITS, > + * and VIRT_IRQCHIP_MAX_GUESTS_BITS are tuned for maximum utilization > + * of virt machine physical address space. > + */ > + > #define VIRT_IMSIC_GROUP_MAX_SIZE (1U << IMSIC_MMIO_GROUP_MIN_SHIFT) > #if VIRT_IMSIC_GROUP_MAX_SIZE < \ > IMSIC_GROUP_SIZE(VIRT_CPUS_MAX_BITS, VIRT_IRQCHIP_MAX_GUESTS_BITS) > diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h > index e12e8ddcae..62d8e9c6d0 100644 > --- a/include/hw/riscv/virt.h > +++ b/include/hw/riscv/virt.h > @@ -24,7 +24,7 @@ > #include "hw/block/flash.h" > #include "qom/object.h" > > -#define VIRT_CPUS_MAX_BITS 3 > +#define VIRT_CPUS_MAX_BITS 9 > #define VIRT_CPUS_MAX (1 << VIRT_CPUS_MAX_BITS) > #define VIRT_SOCKETS_MAX_BITS 2 > #define VIRT_SOCKETS_MAX (1 << VIRT_SOCKETS_MAX_BITS) > -- > 2.25.1 > >
Anup Patel <anup@brainfault.org> 於 2021年12月30日 週四 下午9:06寫道: > From: Anup Patel <anup.patel@wdc.com> > > To facilitate software development of RISC-V systems with large number > of HARTs, we increase the maximum number of allowed CPUs to 512 (2^9). > > We also add a detailed source level comments about limit defines which > impact the physical address space utilization. > > Signed-off-by: Anup Patel <anup.patel@wdc.com> > Signed-off-by: Anup Patel <anup@brainfault.org> > --- > hw/riscv/virt.c | 10 ++++++++++ > include/hw/riscv/virt.h | 2 +- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index 7579f7b41f..86b03736eb 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -44,6 +44,16 @@ > #include "hw/pci-host/gpex.h" > #include "hw/display/ramfb.h" > > +/* > + * The virt machine physical address space used by some of the devices > + * namely ACLINT, PLIC, APLIC, and IMSIC depend on number of Sockets, > + * number of CPUs, and number of IMSIC guest files. > + * > + * Various limits defined by VIRT_SOCKETS_MAX_BITS, VIRT_CPUS_MAX_BITS, > + * and VIRT_IRQCHIP_MAX_GUESTS_BITS are tuned for maximum utilization > + * of virt machine physical address space. > + */ > + > #define VIRT_IMSIC_GROUP_MAX_SIZE (1U << IMSIC_MMIO_GROUP_MIN_SHIFT) > #if VIRT_IMSIC_GROUP_MAX_SIZE < \ > IMSIC_GROUP_SIZE(VIRT_CPUS_MAX_BITS, VIRT_IRQCHIP_MAX_GUESTS_BITS) > diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h > index e12e8ddcae..62d8e9c6d0 100644 > --- a/include/hw/riscv/virt.h > +++ b/include/hw/riscv/virt.h > @@ -24,7 +24,7 @@ > #include "hw/block/flash.h" > #include "qom/object.h" > > -#define VIRT_CPUS_MAX_BITS 3 > +#define VIRT_CPUS_MAX_BITS 9 > #define VIRT_CPUS_MAX (1 << VIRT_CPUS_MAX_BITS) > #define VIRT_SOCKETS_MAX_BITS 2 > #define VIRT_SOCKETS_MAX (1 << VIRT_SOCKETS_MAX_BITS) > -- > 2.25.1 > > > Reviewed-by: Frank Chang <frank.chang@sifive.com>
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index 7579f7b41f..86b03736eb 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -44,6 +44,16 @@ #include "hw/pci-host/gpex.h" #include "hw/display/ramfb.h" +/* + * The virt machine physical address space used by some of the devices + * namely ACLINT, PLIC, APLIC, and IMSIC depend on number of Sockets, + * number of CPUs, and number of IMSIC guest files. + * + * Various limits defined by VIRT_SOCKETS_MAX_BITS, VIRT_CPUS_MAX_BITS, + * and VIRT_IRQCHIP_MAX_GUESTS_BITS are tuned for maximum utilization + * of virt machine physical address space. + */ + #define VIRT_IMSIC_GROUP_MAX_SIZE (1U << IMSIC_MMIO_GROUP_MIN_SHIFT) #if VIRT_IMSIC_GROUP_MAX_SIZE < \ IMSIC_GROUP_SIZE(VIRT_CPUS_MAX_BITS, VIRT_IRQCHIP_MAX_GUESTS_BITS) diff --git a/include/hw/riscv/virt.h b/include/hw/riscv/virt.h index e12e8ddcae..62d8e9c6d0 100644 --- a/include/hw/riscv/virt.h +++ b/include/hw/riscv/virt.h @@ -24,7 +24,7 @@ #include "hw/block/flash.h" #include "qom/object.h" -#define VIRT_CPUS_MAX_BITS 3 +#define VIRT_CPUS_MAX_BITS 9 #define VIRT_CPUS_MAX (1 << VIRT_CPUS_MAX_BITS) #define VIRT_SOCKETS_MAX_BITS 2 #define VIRT_SOCKETS_MAX (1 << VIRT_SOCKETS_MAX_BITS)