Displaying 4 results from an estimated 4 matches for "apic_send_msi".
2009 Jun 05
1
[PATCHv3 07/13] qemu: minimal MSI/MSI-X implementation for PC
...e MSI_ADDR_BASE 0xfee00000
+#define MSI_ADDR_SIZE 0x100000
+
typedef struct APICState {
CPUState *cpu_env;
uint32_t apicbase;
@@ -712,11 +727,31 @@ static uint32_t apic_mem_readl(void *opaque, target_phys_addr_t addr)
return val;
}
+static void apic_send_msi(target_phys_addr_t addr, uint32 data)
+{
+ uint8_t dest = (addr & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_SHIFT;
+ uint8_t vector = (data & MSI_DATA_VECTOR_MASK) >> MSI_DATA_VECTOR_SHIFT;
+ uint8_t dest_mode = (addr >> MSI_ADDR_DEST_MODE_SHIFT) & 0x1;
+...
2009 Jun 05
1
[PATCHv3 07/13] qemu: minimal MSI/MSI-X implementation for PC
...e MSI_ADDR_BASE 0xfee00000
+#define MSI_ADDR_SIZE 0x100000
+
typedef struct APICState {
CPUState *cpu_env;
uint32_t apicbase;
@@ -712,11 +727,31 @@ static uint32_t apic_mem_readl(void *opaque, target_phys_addr_t addr)
return val;
}
+static void apic_send_msi(target_phys_addr_t addr, uint32 data)
+{
+ uint8_t dest = (addr & MSI_ADDR_DEST_ID_MASK) >> MSI_ADDR_DEST_ID_SHIFT;
+ uint8_t vector = (data & MSI_DATA_VECTOR_MASK) >> MSI_DATA_VECTOR_SHIFT;
+ uint8_t dest_mode = (addr >> MSI_ADDR_DEST_MODE_SHIFT) & 0x1;
+...
2009 May 20
9
[PATCH] qemu: msi irq allocation api
...ICState {
uint64_t ioredtbl[IOAPIC_NUM_PINS];
};
+struct msi_state {
+ uint64_t addr;
+ uint32_t data;
+};
+
static void ioapic_service(IOAPICState *s)
{
uint8_t i;
@@ -259,3 +275,52 @@ IOAPICState *ioapic_init(void)
return s;
}
+
+/* MSI/MSI-X support */
+static void ioapic_send_msi(void *opaque, int irq, int level)
+{
+ struct msi_state *state = opaque;
+ uint8_t dest = (state[irq].addr & MSI_ADDR_DEST_ID_MASK)
+ >> MSI_ADDR_DEST_ID_SHIFT;
+ uint8_t vector = ((state[irq].addr >> 32) & MSI_DATA_VECTOR_MASK)
+ >> MSI_DATA_VECTOR_...
2009 May 20
9
[PATCH] qemu: msi irq allocation api
...ICState {
uint64_t ioredtbl[IOAPIC_NUM_PINS];
};
+struct msi_state {
+ uint64_t addr;
+ uint32_t data;
+};
+
static void ioapic_service(IOAPICState *s)
{
uint8_t i;
@@ -259,3 +275,52 @@ IOAPICState *ioapic_init(void)
return s;
}
+
+/* MSI/MSI-X support */
+static void ioapic_send_msi(void *opaque, int irq, int level)
+{
+ struct msi_state *state = opaque;
+ uint8_t dest = (state[irq].addr & MSI_ADDR_DEST_ID_MASK)
+ >> MSI_ADDR_DEST_ID_SHIFT;
+ uint8_t vector = ((state[irq].addr >> 32) & MSI_DATA_VECTOR_MASK)
+ >> MSI_DATA_VECTOR_...