lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 25 Jun 2015 19:15:49 +0200
From:	"Luis R. Rodriguez" <mcgrof@...e.com>
To:	Ingo Molnar <mingo@...nel.org>
Cc:	"Luis R. Rodriguez" <mcgrof@...not-panic.com>, bp@...e.de,
	andy@...verblocksystems.net, mchehab@....samsung.com,
	dledford@...hat.com, fengguang.wu@...el.com,
	linux-media@...r.kernel.org, linux-rdma@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/2] x86/mm/pat, drivers/infiniband/ipath: replace
 WARN() with pr_warn()

On Thu, Jun 25, 2015 at 08:49:22AM +0200, Ingo Molnar wrote:
> 
> * Luis R. Rodriguez <mcgrof@...not-panic.com> wrote:
> 
> > From: "Luis R. Rodriguez" <mcgrof@...e.com>
> > 
> > WARN() may confuse users, fix that. ipath_init_one() is part the
> > device's probe so this would only be triggered if a corresponding
> > device was found.
> > 
> > Signed-off-by: Luis R. Rodriguez <mcgrof@...e.com>
> > ---
> >  drivers/infiniband/hw/ipath/ipath_driver.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
> > index 2d7e503..871dbe5 100644
> > --- a/drivers/infiniband/hw/ipath/ipath_driver.c
> > +++ b/drivers/infiniband/hw/ipath/ipath_driver.c
> > @@ -31,6 +31,8 @@
> >   * SOFTWARE.
> >   */
> >  
> > +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
> > +
> >  #include <linux/sched.h>
> >  #include <linux/spinlock.h>
> >  #include <linux/idr.h>
> > @@ -399,8 +401,8 @@ static int ipath_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
> >  	u32 bar0 = 0, bar1 = 0;
> >  
> >  #ifdef CONFIG_X86_64
> > -	if (WARN(pat_enabled(),
> > -		 "ipath needs PAT disabled, boot with nopat kernel parameter\n")) {
> > +	if (pat_enabled()) {
> > +		pr_warn("ipath needs PAT disabled, boot with nopat kernel parameter\n");
> >  		ret = -ENODEV;
> >  		goto bail;
> >  	}
> 
> So driver init will always fail with this on modern kernels.

Nope, I double checked this, ipath_init_one() is the PCI probe routine,
not the module init call. It should probably be renamed.

> Btw., on a second thought, ipath uses MTRRs to enable WC:
> 
>         ret = ipath_enable_wc(dd);
>         if (ret)
>                 ret = 0;
> 
> Note how it ignores any failures - the driver still works even if WC was not 
> enabled.

Ah, well WC strategy requires a split of the MMIO registers and the desired
WC area, right now they are combined for some type of ipath devices. There
are two things to consider when thinking about whether or not we want to
do the work required to do the split:

1) The state of affairs of the ipath driver
2) The effort required to do the ipath MMIO register / WC split

As for 1): the ipath driver is deprecated, the folks who maintain it
haven't used the driver in testing for 3-4 years now. The ipath driver
powers the old HTX bus card that only work in AMD systems, the replacement
driver is the qib infiniband driver , it powers all PCI-E cards. Doug
was even talking about removing the driver from the kernel [0] [1].

As for 2): I looked into doing the split and what makes it really
hard is that the ipath driver has a character device that is used
for diagnostics which lets userspace poke at the PCI device's
ioremap'd space, for the split case some magic needs to be done to
ensure the driver uses the right offset. So apart from addressing the
split and driver's use the character device mapping calls also would
need to be fixed.

I did the work on the atyfb driver to demo work effort required to
address the split, I did look to doing it for both the ipath and
ivtv driver but for both 1) and 2) indicated it was not worth it.

[0] http://lkml.kernel.org/r/1429728791.121496.10.camel@redhat.com
[1] http://lkml.kernel.org/r/1430159932.44548.20.camel@redhat.com

> So why don't you simply extend ipath_enable_wc() to generate the warning message 
> and return -EINVAL - which still keeps the driver working on modern kernels?

We would need to do the split.

> Just inform the user about 'nopat' if he wants WC for this driver.

If we had the split we could do this.

  Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ