[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC 0/3] try to solve the DMA to MMIO issue
From: |
Peter Maydell |
Subject: |
Re: [RFC 0/3] try to solve the DMA to MMIO issue |
Date: |
Thu, 3 Sep 2020 14:41:26 +0100 |
On Thu, 3 Sep 2020 at 14:36, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
> Not sure if this is a valid example, but when adding:
>
> -- >8 --
> diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c
> index bca71b5934b..b8b4ba362b1 100644
> --- a/hw/intc/ioapic.c
> +++ b/hw/intc/ioapic.c
> @@ -96,6 +96,8 @@ static void ioapic_service(IOAPICCommonState *s)
> uint32_t mask;
> uint64_t entry;
>
> + assert(!resettable_is_in_reset(OBJECT(s)));
> +
> for (i = 0; i < IOAPIC_NUM_PINS; i++) {
> mask = 1 << i;
> if (s->irr & mask) {
> ---
>
> I get a MMIO write triggered from an IRQ:
Yeah, IRQs can trigger MMIO writes. In this case one underlying
problem is that the hpet_reset() code is asserting a qemu_irq
in a reset phase that it should not, because it's an old-style
reset function and not a new-style 3-phase one (which would
do the assertion of the IRQ only in the 3rd phase). I don't
think this is a case of ending up with a recursive re-entry
into the code of the original device, though.
thanks
-- PMM
- Re: [RFC 0/3] try to solve the DMA to MMIO issue, (continued)
Re: [RFC 0/3] try to solve the DMA to MMIO issue, Peter Maydell, 2020/09/03
- Re: [RFC 0/3] try to solve the DMA to MMIO issue, Li Qiang, 2020/09/03
- Re: [RFC 0/3] try to solve the DMA to MMIO issue, Peter Maydell, 2020/09/03
- Re: [RFC 0/3] try to solve the DMA to MMIO issue, Li Qiang, 2020/09/03
- Re: [RFC 0/3] try to solve the DMA to MMIO issue, Peter Maydell, 2020/09/03
- Re: [RFC 0/3] try to solve the DMA to MMIO issue, Philippe Mathieu-Daudé, 2020/09/03
- Re: [RFC 0/3] try to solve the DMA to MMIO issue,
Peter Maydell <=
Re: [RFC 0/3] try to solve the DMA to MMIO issue, Jason Wang, 2020/09/03