qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 0/3] Implement "non 100% native mode" in via-ide


From: Mark Cave-Ayland
Subject: Re: [PATCH v3 0/3] Implement "non 100% native mode" in via-ide
Date: Tue, 10 Mar 2020 18:31:16 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0

On 09/03/2020 19:18, BALATON Zoltan wrote:

> This small series implements "non-100% native mode" of via-ide found
> at least on pegasos2 where io addresses come from PCI BARs but
> interrupts are hard coded to legacy IRQ14 and 15. This is needed for
> guests that expect it and activate work arounds on that platform and
> don't work unless this is emulated. (Symptom is missing IDE IRQs after
> enabling BMDMA and boot freezes waiting for interrupt.)
> 
> We need a flag to turn this mode on or off so the first patch
> repurposes the last remaining CMD646 specific field in PCIIDEState to
> allow more flags and make room for the new legacy-irq flag there. (The
> CMD646 may need similar mode or something else may need more flags in
> the future.) Boards using CMD646 and VIA IDE are updated for the above
> changes. Second patch fixes up PCI reset to not clear value set by
> device emulation on bus reset when wmask does not allow that.
> 
> Tested with Linux and MorphOS on pegasos2 and a Gentoo live CD kernel
> for mips_fulong2e that's the only one I could find but being beta not
> sure if that fully works on real hardware. (The mips_fulong2e also
> seems to have problems with pci devices so to boot Linux you need
> -net none -vga none and use serial console otherwise the kernel panics.)
> 
> Regards,
> BALATON Zoltan
> 
> BALATON Zoltan (3):
>   ide: Make room for flags in PCIIDEState and add one for legacy IRQ
>     routing
>   pci: Honour wmask when resetting PCI_INTERRUPT_LINE
>   via-ide: Also emulate non 100% native mode
> 
>  hw/alpha/dp264.c        |  2 +-
>  hw/ide/cmd646.c         | 12 ++++++------
>  hw/ide/via.c            | 37 +++++++++++++++++++++++++++++--------
>  hw/mips/mips_fulong2e.c |  2 +-
>  hw/pci/pci.c            |  4 +++-
>  hw/sparc64/sun4u.c      |  9 ++-------
>  include/hw/ide.h        |  7 ++++---
>  include/hw/ide/pci.h    |  7 ++++++-
>  8 files changed, 52 insertions(+), 28 deletions(-)

To summarise what has been quite a long thread, I don't believe the approach of
introducing a feature flag for legacy IRQ routing is the correct solution here. 
It
seems to me that qdev can do all the work: provide qdev gpio connectors for 2 
IRQ
sets: a named "legacy-irq" array and a standard ("irq") qdev connector and then 
let
the boards wire up the ones as they need.

With this in place it is simple to always fallback to the legacy IRQs if no PCI 
IRQ
is connected regardless of mode, and this also allows the deprecated 
isa_get_irq()
function to be removed.


ATB,

Mark.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]