On Wed, Sep 17, 2014 at 06:20:18PM +0100, Marc Zyngier wrote:
On Tue, Sep 16 2014 at 03:46:01 PM, Wei Huang wei@redhat.com wrote:
On 9/16/14 4:04 AM, Alexander Spyridakis wrote:
On 15 September 2014 23:26, Wei Huang wei@redhat.com wrote:
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
Yes, I thought to be more explicit but skipping that define would be better I guess.
vgic->maint_irq = acpi_register_gsi(NULL,
vgic_acpi->vgic_interrupt, trigger, ACPI_ACTIVE_HIGH);
Unless I missed something, according to GIC-400 all PPIs are active-LOW, including maintenance interrupt.
Hmm I am confused. You are indeed right that GIC-400 at 2.3.2 states that all PPIs are active-LOW, on the other hand though, the device tree files for the gic node describe the virtual maintenance interrupt as active high (0xf04 description from Documentation/devicetree/bindings/arm/gic.txt). Am I missing something?
Not sure about what the GIC-400 describes (I don't have the documentation at hand), but the GICv2 architecture document only talks of level and edge, not high/low and rising/falling.
Indeed. And whether any individual PPI is edge-triggered or level-sensitive is implementation-defined and thus must be conveyed to the operating software in the ACPI tables (although the SBSA and ARMv8 ARM do require level semantics for the timer PPI's).
This is also the case for GICv3.
scott