From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37685) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1baQNh-0001GH-JA for qemu-devel@nongnu.org; Thu, 18 Aug 2016 12:41:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1baQNc-0002ts-Gi for qemu-devel@nongnu.org; Thu, 18 Aug 2016 12:41:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39382) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1baQNc-0002tn-8M for qemu-devel@nongnu.org; Thu, 18 Aug 2016 12:41:20 -0400 From: Markus Armbruster References: <1471529754-29690-1-git-send-email-caoj.fnst@cn.fujitsu.com> <73BF031C-2ED4-421C-AFFA-00B8FA3811ED@daynix.com> Date: Thu, 18 Aug 2016 18:41:16 +0200 In-Reply-To: <73BF031C-2ED4-421C-AFFA-00B8FA3811ED@daynix.com> (Dmitry Fleytman's message of "Thu, 18 Aug 2016 18:31:41 +0300") Message-ID: <87inuyqbbn.fsf@dusky.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH] e1000e: remove internal interrupt flag List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Dmitry Fleytman Cc: Cao jin , "Michael S. Tsirkin" , Jason Wang , qemu-devel@nongnu.org, Marcel Apfelbaum , Paolo Bonzini Dmitry Fleytman writes: >> On 18 Aug 2016, at 17:15, Cao jin wrote: >> >> Commit 66bf7d58 removed internal msi state flag E1000E_USE_MSI, E1000E_USE_MSIX >> is not necessary too, remove it now. And interrupt flag field intr_state also >> can be removed now. >> >> CC: Dmitry Fleytman >> CC: Jason Wang >> CC: Markus Armbruster >> CC: Marcel Apfelbaum >> CC: Michael S. Tsirkin >> CC: Paolo Bonzini >> Signed-off-by: Cao jin >> --- >> hw/net/e1000e.c | 8 +------- >> 1 file changed, 1 insertion(+), 7 deletions(-) >> >> diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c >> index 82a7be1..72aad21 100644 >> --- a/hw/net/e1000e.c >> +++ b/hw/net/e1000e.c >> @@ -69,7 +69,6 @@ typedef struct E1000EState { >> uint16_t subsys_ven_used; >> uint16_t subsys_used; >> >> - uint32_t intr_state; >> bool disable_vnet; >> >> E1000ECore core; >> @@ -89,8 +88,6 @@ typedef struct E1000EState { >> #define E1000E_MSIX_TABLE (0x0000) >> #define E1000E_MSIX_PBA (0x2000) >> >> -#define E1000E_USE_MSIX BIT(0) >> - >> static uint64_t >> e1000e_mmio_read(void *opaque, hwaddr addr, unsigned size) >> { >> @@ -302,8 +299,6 @@ e1000e_init_msix(E1000EState *s) >> } else { >> if (!e1000e_use_msix_vectors(s, E1000E_MSIX_VEC_NUM)) { >> msix_uninit(d, &s->msix, &s->msix); >> - } else { >> - s->intr_state |= E1000E_USE_MSIX; > > So you are removing error handling here. But what if e1000e_use_msix_vectors fails? Before the patch, E1000E_USE_MSIX is set exactly when MSI-X was enabled successfully. It's only use is in MSI-X cleanup (next hunk): cleanup is skipped when the flag isn't set. The flag is pointless, because we can just as well test whether MSI-X is enabled directly. That's what the patch does. > >> } >> } >> } >> @@ -311,7 +306,7 @@ e1000e_init_msix(E1000EState *s) >> static void >> e1000e_cleanup_msix(E1000EState *s) >> { >> - if (s->intr_state & E1000E_USE_MSIX) { >> + if (msix_enabled(PCI_DEVICE(s))) { >> e1000e_unuse_msix_vectors(s, E1000E_MSIX_VEC_NUM); >> msix_uninit(PCI_DEVICE(s), &s->msix, &s->msix); >> } >> @@ -601,7 +596,6 @@ static const VMStateDescription e1000e_vmstate = { >> VMSTATE_MSIX(parent_obj, E1000EState), >> >> VMSTATE_UINT32(ioaddr, E1000EState), >> - VMSTATE_UINT32(intr_state, E1000EState), We can still do this, because as Paolo pointed out, no released version of QEMU had this device. >> VMSTATE_UINT32(core.rxbuf_min_shift, E1000EState), >> VMSTATE_UINT8(core.rx_desc_len, E1000EState), >> VMSTATE_UINT32_ARRAY(core.rxbuf_sizes, E1000EState, >> -- >> 2.1.0 Reviewed-by: Markus Armbruster