On Sun, Mar 11, 2012 at 08:46:38AM +0100, Jan Kiszka wrote:
>On 2012-03-11 08:04, Wanpeng Li wrote:
>> ISA bus only use IRQ 0~15, so don't need to give an array qemu_irq 0~23, just
>> array qemu_irq i8259 is ok.
>> 
>> Signed-off-by: Wanpeng Li <l...@linux.vnet.ibm.com>
>> ---
>>  hw/pc_piix.c |    3 ++-
>>  1 files changed, 2 insertions(+), 1 deletions(-)
>> 
>> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
>> index 63dba4e..52f7cf8 100644
>> --- a/hw/pc_piix.c
>> +++ b/hw/pc_piix.c
>> @@ -210,7 +210,6 @@ static void pc_init1(MemoryRegion *system_memory,
>>          isa_bus = isa_bus_new(NULL, system_io);
>>          no_hpet = 1;
>>      }
>> -    isa_bus_irqs(isa_bus, gsi);
>>  
>>      if (kvm_irqchip_in_kernel()) {
>>          i8259 = kvm_i8259_init(isa_bus);
>> @@ -221,6 +220,8 @@ static void pc_init1(MemoryRegion *system_memory,
>>          i8259 = i8259_init(isa_bus, cpu_irq[0]);
>>      }
>>  
>> +    isa_bus_irqs(isa_bus, i8259);
>> +
>>      for (i = 0; i < ISA_NUM_IRQS; i++) {
>>          gsi_state->i8259_irq[i] = i8259[i];
>>      }
>
>This is bogus. isa_bus_irqs sets the output IRQs of the ISA bus. And
>those are not only delivered to the PIC on the PIIX2, but also the
>IOAPIC. Thus we have to pass in the GSI input lines which dispatch to
>both. Of those lines, only the first 16 will be used by the ISA bus
>(there is even an assert to ensure this).
>
>Did you see any concrete bug in the context of this logic?
>
>Jan
>

Yes, but actually PIC is being used at present, whether passing qemu_irq
0~23 to isa_bus is not safe or not.

Wanpeng Li


Reply via email to