qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Jan Kiszka" <jan.kiszka@siemens.com>,
	"Dmitry Fleytman" <dmitry.fleytman@gmail.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH] e1000e: Do not auto-clear ICR bits which aren't set in EIAC
Date: Fri, 15 Jun 2018 10:07:47 +0800	[thread overview]
Message-ID: <4b28b3a0-634b-fc7b-230f-9a1dfec9fc0c@redhat.com> (raw)
In-Reply-To: <6eeac4b0-7a10-de17-1fdd-8d4417934623@redhat.com>



On 2018年06月13日 10:29, Jason Wang wrote:
>
>
> On 2018年06月13日 10:26, Philippe Mathieu-Daudé wrote:
>> Hi Jason,
>>
>> On 06/12/2018 11:18 PM, Jason Wang wrote:
>>> On 2018年06月13日 03:00, Philippe Mathieu-Daudé wrote:
>>>> Cc'ing Jason who is also listed as co-maintainer:
>>>>
>>>>     ./scripts/get_maintainer.pl -f hw/net/e1000e_core.c
>>>>     Dmitry Fleytman <dmitry.fleytman@gmail.com> (maintainer:e1000e)
>>>>     Jason Wang <jasowang@redhat.com> (odd fixer:Network devices)
>>>>
>>>> On 06/12/2018 03:43 PM, Jan Kiszka wrote:
>>>>> On 2018-06-12 20:38, Philippe Mathieu-Daudé wrote:
>>>>>> On 06/12/2018 03:30 PM, Jan Kiszka wrote:
>>>>>>> On 2018-06-12 20:11, Philippe Mathieu-Daudé wrote:
>>>>>>>> Hi Jan,
>>>>>>>>
>>>>>>>> On 06/12/2018 02:22 PM, Jan Kiszka wrote:
>>>>>>>>> On 2018-05-22 09:00, Jan Kiszka wrote:
>>>>>>>>>> On 2018-04-16 17:29, Peter Maydell wrote:
>>>>>>>>>>> On 16 April 2018 at 16:25, Jan Kiszka <jan.kiszka@siemens.com>
>>>>>>>>>>> wrote:
>>>>>>>>>>>> On 2018-04-01 23:17, Jan Kiszka wrote:
>>>>>>>>>>>>> From: Jan Kiszka <jan.kiszka@siemens.com>
>>>>>>>>>>>>>
>>>>>>>>>>>>> The spec does not justify clearing of any
>>>>>>>>>>>>> E1000_ICR_OTHER_CAUSES when
>>>>>>>>>>>>> E1000_ICR_OTHER is set in EIAC. In fact, removing this code
>>>>>>>>>>>>> fixes the
>>>>>>>>>>>>> issue the Linux driver runs into since 4aea7a5c5e94 ("e1000e:
>>>>>>>>>>>>> Avoid
>>>>>>>>>>>>> receiver overrun interrupt bursts") and was worked around by
>>>>>>>>>>>>> 745d0bd3af99 ("e1000e: Remove Other from EIAC").
>>>>>>>>>>>>>
>>>>>>>>>>>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>>>>>>>>>>>> ---
>>>>>>>>>>>>>
>>>>>>>>>>>>> This resolves the issue I reported on February 18 ("e1000e:
>>>>>>>>>>>>> MSI-X
>>>>>>>>>>>>> problem with recent Linux drivers").
>>>>>>>>>>>>>
>>>>>>>>>>>>>    hw/net/e1000e_core.c | 4 ----
>>>>>>>>>>>>>    1 file changed, 4 deletions(-)
>>>>>>>>>>>>>
>>>>>>>>>>>>> diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c
>>>>>>>>>>>>> index ecf9b15555..d38f025c0f 100644
>>>>>>>>>>>>> --- a/hw/net/e1000e_core.c
>>>>>>>>>>>>> +++ b/hw/net/e1000e_core.c
>>>>>>>>>>>>> @@ -2022,10 +2022,6 @@ e1000e_msix_notify_one(E1000ECore
>>>>>>>>>>>>> *core, uint32_t cause, uint32_t int_cfg)
>>>>>>>>>>>>>
>>>>>>>>>>>>>        effective_eiac = core->mac[EIAC] & cause;
>>>>>>>>>>>>>
>>>>>>>>>>>>> -    if (effective_eiac == E1000_ICR_OTHER) {
>>>>>>>>>>>>> -        effective_eiac |= E1000_ICR_OTHER_CAUSES;
>>>>>>>>>>>>> -    }
>>>>>>>>>>>>> -
>>>>>>>>>>>>>        core->mac[ICR] &= ~effective_eiac;
>>>>>>>>>>>>>
>>>>>>>>>>>>>        if (!(core->mac[CTRL_EXT] & E1000_CTRL_EXT_IAME)) {
>>>>>>>>>>>>>
>>>>>>>>>>>> Ping for this - as well as
>>>>>>>>>>>> https://patchwork.ozlabs.org/patch/895476.
>>>>>>>>>>>>
>>>>>>>>>>>> Given that q35 uses e1000e by default and many Linux kernel
>>>>>>>>>>>> versions no
>>>>>>>>>>>> longer work, this should likely go into upcoming and stable
>>>>>>>>>>>> versions
>>>>>>>>>>> I'd rather not put it into 2.12 at this point in the release
>>>>>>>>>>> cycle unless it's a regression from 2.11, I think.
>>>>>>>>>> Second ping - nothing hit the repo so far, nor did I receive
>>>>>>>>>> feedback.
>>>>>>>>>>
>>>>>>>>> And another ping. For both.
>>>>>>>>>
>>>>>>>>> These days I had to help someone with a broken QEMU setup that
>>>>>>>>> failed
>>>>>>>>> installing from network. It turned out that "modprobe e1000e
>>>>>>>>> IntMode=0"
>>>>>>>>> was needed to workaround the issues my patches address.
>>>>>>>> What about the IMS register? It is set just after.
>>>>>>>>
>>>>>>>> Looking at b38636b8372, can you test this patch?
>>>>>>>>
>>>>>>>> -- >8 --
>>>>>>>> diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c
>>>>>>>> index c93c4661ed..a484b68a5a 100644
>>>>>>>> --- a/hw/net/e1000e_core.c
>>>>>>>> +++ b/hw/net/e1000e_core.c
>>>>>>>> @@ -2022,13 +2022,13 @@ e1000e_msix_notify_one(E1000ECore *core,
>>>>>>>> uint32_t cause, uint32_t int_cfg)
>>>>>>>>
>>>>>>>>        effective_eiac = core->mac[EIAC] & cause;
>>>>>>>>
>>>>>>>> -    if (effective_eiac == E1000_ICR_OTHER) {
>>>>>>>> -        effective_eiac |= E1000_ICR_OTHER_CAUSES;
>>>>>>>> -    }
>>>>>>>> -
>>>>>>>>        core->mac[ICR] &= ~effective_eiac;
>>>>>>>>
>>>>>>>>        if (!(core->mac[CTRL_EXT] & E1000_CTRL_EXT_IAME)) {
>>>>>>>> +        if (effective_eiac == E1000_ICR_OTHER) {
>>>>>>>> +            effective_eiac |= E1000_ICR_OTHER_CAUSES;
>>>>>>>> +        }
>>>>>>>> +
>>>>>>>>            core->mac[IMS] &= ~effective_eiac;
>>>>>>>>        }
>>>>>>>>    }
>>>>>>>>
>>>>>>> Before testing this: What would be the reasoning for this change?
>>>>>> Not breaking the purpose of b38636b8372 :)
>>>>> I disagree on this expansion of bit 31 ("other causes"). I see no
>>>>> indication in the spec that setting this bit for autoclear has more
>>>>> impact than on the very same bit itself. Therefore I'm asking for a
>>>>> reasoning - based on the spec.
>>>>     Interrupt Cause Registers
>>>>
>>>>       Other bits in this register are the legacy indication of
>>>>       interrupts as the MDIC complete, management and link status
>>>>       change. There is a specific Other Cause bit that is set if
>>>>       one of these bits are set, this bit can be mapped to a
>>>>       specific MSI-X interrupt message.
>>>>
>>>> I spent half an hour reading the relevant parts of the spec and can't
>>>> figure out, so I'll let the authors of b38636b8372 to review your 
>>>> patch.
>>>>
>>>> Regards,
>>>>
>>>> Phil.
>>> Looking at EIAC part of the spec:
>>>
>>> Bits 24:20 in this register enables clearing of the corresponding 
>>> bit in
>>> ICR following
>>> interrupt generation. When a bit is set, the corresponding bit in ICR
>>> and in IMS is
>>> automatically cleared following an interrupt.
>> Thanks for looking at this.
>>
>>> It looks to me that only the other bit itself need to be cleared.
>> So no need to set the other_causes bits, thus Jan patch is correct?
>>
>> Thanks,
>>
>> Phil.
>>
>
> Yes, I think so. But I think we can wait for few days to see if Dmitry 
> have come comments.
>
> Thanks
>

Ok, I applied this first.

Thanks

  reply	other threads:[~2018-06-15  2:08 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-01 21:17 [Qemu-devel] [PATCH] e1000e: Do not auto-clear ICR bits which aren't set in EIAC Jan Kiszka
2018-04-01 21:25 ` no-reply
2018-04-01 21:32 ` no-reply
2018-04-16 15:25 ` Jan Kiszka
2018-04-16 15:29   ` Peter Maydell
2018-05-22  7:00     ` Jan Kiszka
2018-06-12 17:22       ` Jan Kiszka
2018-06-12 18:11         ` Philippe Mathieu-Daudé
2018-06-12 18:30           ` Jan Kiszka
2018-06-12 18:38             ` Philippe Mathieu-Daudé
2018-06-12 18:43               ` Jan Kiszka
2018-06-12 19:00                 ` Philippe Mathieu-Daudé
2018-06-13  2:18                   ` Jason Wang
2018-06-13  2:26                     ` Philippe Mathieu-Daudé
2018-06-13  2:29                       ` Jason Wang
2018-06-15  2:07                         ` Jason Wang [this message]
2018-06-15 16:06                           ` Jan Kiszka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4b28b3a0-634b-fc7b-230f-9a1dfec9fc0c@redhat.com \
    --to=jasowang@redhat.com \
    --cc=agraf@suse.de \
    --cc=dmitry.fleytman@gmail.com \
    --cc=f4bug@amsat.org \
    --cc=jan.kiszka@siemens.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).