Date: Tue, 13 Nov 2018 11:45:10 -0700 From: Scott Long <scottl@samsco.org> To: Harry Schmalzbauer <freebsd@omnilan.de> Cc: scsi@freebsd.org, freebsd-stable <freebsd-stable@freebsd.org> Subject: Re: MSI allocation regression, still to be corrected in HEAD and please MFC before release/12.0 gets branched Message-ID: <34515651-9883-4490-A3EE-7206AE973757@samsco.org> In-Reply-To: <d28eee74-99dc-296b-fd19-ea2c1adec0ee@omnilan.de> References: <201707300653.v6U6rwLN099096@repo.freebsd.org> <597DA578.6030101@omnilan.de> <597F56A8.1060603@omnilan.de> <D18DFAD4-6E93-4AE2-BE15-EFF4D8ABCB2A@samsco.org> <59804C8C.1020003@omnilan.de> <e7d94e6a-89e8-ffa1-40da-7fb67e6bfc2b@omnilan.de> <78611650-D7A4-4B1D-A254-DB058E1AC1C6@samsco.org> <d99e383d-b09a-f3bd-f1e2-a6a808016347@omnilan.de> <A2AECF9F-2BB1-4FC0-8330-658336A3A4F0@samsco.org> <6e1e5f9f-4ece-dc9d-b059-08d52c9e6965@omnilan.de> <042090da-f73f-ce80-517c-0b1729d3d6e1@omnilan.de> <05D94EC4-D797-4246-96B5-6DC1494E7EA9@samsco.org> <d28eee74-99dc-296b-fd19-ea2c1adec0ee@omnilan.de>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Nov 13, 2018, at 11:11 AM, Harry Schmalzbauer <freebsd@omnilan.de> = wrote: >=20 > Am 13.11.2018 um 19:02 schrieb Scott Long: >>> On Nov 12, 2018, at 10:03 AM, Harry Schmalzbauer = <freebsd@omnilan.de> wrote: >>>=20 >>> Am 11.06.2018 um 20:28 schrieb Harry Schmalzbauer: >>>> Am 05.06.2018 um 19:54 schrieb Scott Long: >>>> =E2=80=A6 >>>>>>>> Late in the 11.2 phase, I identified this commit as a = regression for MSI (non-x) alloctaion. >>>>>>>> I have an idea what probably causes the problem here (INTx = allocation, although MSI (and MSI-x) capability): >>>>>>>> disable_msix is not 0 (I need to disable MSI-x because of = ESXi-passthru=E2=80=A6). >>>>>>>>=20 >>>>>>>> Corresponding lines: >>>>>>>> { >>>>>>>> device_t dev; >>>>>>>> int error, msgs; >>>>>>>>=20 >>>>>>>> dev =3D sc->mps_dev; >>>>>>>> error =3D 0; >>>>>>>> msgs =3D 0; >>>>>>>>=20 >>>>>>>> if ((sc->disable_msix =3D=3D 0) && >>>>>>>> ((msgs =3D pci_msix_count(dev)) >=3D = MPS_MSI_COUNT)) >>>>>>>> error =3D mps_alloc_msix(sc, MPS_MSI_COUNT); >>>>>>>> if ((error !=3D 0) && (sc->disable_msi =3D=3D 0) && >>>>>>>> ((msgs =3D pci_msi_count(dev)) >=3D = MPS_MSI_COUNT)) >>>>>>>> error =3D mps_alloc_msi(sc, MPS_MSI_COUNT); >>>>>>>> if (error !=3D 0) >>>>>>>> msgs =3D 0; >>>>>>>>=20 >>>>>>>> sc->msi_msgs =3D msgs; >>>>>>>> return (error); >>>>>>>> } >>>>>>>>=20 >>> =E2=80=A6 >>>>>>> Hi Harry, >>>>>>> You are correct about the bug. Please change the line at the = top of the function that reads >>>>>>> error =3D 0; >>>>>>> to >>>>>>> error =3D ENXIO; >>>>>>> Let me know if that fixes the MSI problem for you. >>>>=20 >>>> =E2=80=A6 >>>>=20 >>> =E2=80=A6 >>>> Index: src/sys/dev/mps/mps_pci.c >>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>>> --- sys/dev/mps/mps_pci.c (Revision 334948) >>>> +++ sys/dev/mps/mps_pci.c (Arbeitskopie) >>>> @@ -244,7 +244,7 @@ >>>> int error, msgs; >>>>=20 >>>> dev =3D sc->mps_dev; >>>> - error =3D 0; >>>> + error =3D ENXIO; >>>> msgs =3D 0; >>>>=20 >>>> if ((sc->disable_msix =3D=3D 0) && >>>>=20 >>>=20 >>> To my understanding, it's obvious that the way = mps_pci_alloc_interrupts() currently works is unintended. >>> This might not affect too many people, but is there a reason not to = fix it? >>>=20 >>> I already created a coresponding problem report: = https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D229267 >>> Anything else I should do? >>>=20 >> Hi Harry, >> Sorry for ignoring this for so long. I=E2=80=99m going to commit a = fix today, but it won=E2=80=99t be the same one-line change. >> Upon reviewing the code, I=E2=80=99d going to refactor it so it=E2=80=99= s not so confusing and prone to these kinds of mistakes. >> Thank you for the continued reminders to finish this. >=20 > Hi Scott, >=20 > thanks a lot, in fact I'm not surprised that you come up with a better = solution than that quick fix :-) > Had hoped someone else would do an intermediate commit to get it into = 12.0 in time, so you won't feel any time pressure - good job needs the = time it needs, as long as the right person is doing the job. >=20 > Unfortunately I don't have a non-productive setup where I could test = before release/12.0 will be branched =E2=80=93 might be subject to = change... 12.0 has completely different code from 11.x, and from my review of it = last night it should be fine. If you have evidence that what=E2=80=99s = currently in 12 is not working, please let me know ASAP. Scott
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?34515651-9883-4490-A3EE-7206AE973757>