Message ID | 74a5ec02619e78867fa4052ae45f4183d9c1656b.1437197974.git.crosthwaite.peter@gmail.com |
---|---|
State | New |
Headers | show |
On 18 July 2015 at 07:00, Peter Crosthwaite <crosthwaitepeter@gmail.com> wrote: > Replace the hw_error for no-EL2 VIRQ with a LOG_UNIMP. This is more > accurate and handles the corner case where the user defeatures EL2 > using overrides in a system that would otherwise have EL2 > connectivity. > > Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> > --- > I'm primarily interested in getting rid of the hw_error() more than > anything. If my use-case seems invalid and a stronger error is > preffered, it can be redone as an assert and the code will still work > for me. > --- > target-arm/cpu.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/target-arm/cpu.c b/target-arm/cpu.c > index 29b7eca..c4b8448 100644 > --- a/target-arm/cpu.c > +++ b/target-arm/cpu.c > @@ -310,8 +310,10 @@ static void arm_cpu_set_irq(void *opaque, int irq, int level) > case ARM_CPU_VIRQ: > case ARM_CPU_VFIQ: > if (!arm_feature(env, ARM_FEATURE_EL2)) { > - hw_error("%s: Virtual interrupt line %d with no EL2 support\n", > - __func__, irq); > + qemu_log_mask(LOG_UNIMP, > + "%s: Virtual interrupt line %d with no EL2 support\n", > + __func__, irq); > + return; My inclination is to say we should assert. If the board model has put together a system where it creates a CPU with no EL2 support and then wires up the VIRQ/VFIQ lines to something, then that sounds like a board model bug to me. LOG_UNIMP is for "this is legitimate guest behaviour but we haven't written the code to support it". thanks -- PMM
diff --git a/target-arm/cpu.c b/target-arm/cpu.c index 29b7eca..c4b8448 100644 --- a/target-arm/cpu.c +++ b/target-arm/cpu.c @@ -310,8 +310,10 @@ static void arm_cpu_set_irq(void *opaque, int irq, int level) case ARM_CPU_VIRQ: case ARM_CPU_VFIQ: if (!arm_feature(env, ARM_FEATURE_EL2)) { - hw_error("%s: Virtual interrupt line %d with no EL2 support\n", - __func__, irq); + qemu_log_mask(LOG_UNIMP, + "%s: Virtual interrupt line %d with no EL2 support\n", + __func__, irq); + return; } /* fall through */ case ARM_CPU_IRQ:
Replace the hw_error for no-EL2 VIRQ with a LOG_UNIMP. This is more accurate and handles the corner case where the user defeatures EL2 using overrides in a system that would otherwise have EL2 connectivity. Signed-off-by: Peter Crosthwaite <crosthwaite.peter@gmail.com> --- I'm primarily interested in getting rid of the hw_error() more than anything. If my use-case seems invalid and a stronger error is preffered, it can be redone as an assert and the code will still work for me. --- target-arm/cpu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)