From owner-svn-src-all@freebsd.org Thu Apr 25 19:18:13 2019 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D067C15A0326; Thu, 25 Apr 2019 19:18:12 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com [IPv6:2607:f8b0:4864:20::72a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C2F46967DE; Thu, 25 Apr 2019 19:18:11 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: by mail-qk1-x72a.google.com with SMTP id f125so449710qke.6; Thu, 25 Apr 2019 12:18:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ULfUMHSe9EwQCA4Q6kt6JJKOCEAzqz6NA48i42sUDCk=; b=odaA9pt/t04j498nkXBKf8XDAjpntaP4z6Gc+jbwfj6EO+CavTQXYouqKmxVfCezXp 20ZQmsbzEZ9YBxYr3gB3SfXq3h13wF8B6anBVnO9xcwx4e9tUIYDDTAlcTLOM3xKlM2W RAYZ3w48KMgBVC3SrHNuzNRhQ8q1ka3C43pJTVn6I/f/YOazkEv30WQ3oPiq/hpSoPI7 F/Gy8asBV+4q1Ozu7iIxoDTDXlyDpGNM5cp9wU9FPxuUR4wrtogT7iT35EWKZH3JoslQ uV8PFxyeeqRn4tUQziZ0udwIK9/hcFoJpEbCPyT56ynp8yLafYlX/f3RAB5RZc7i3HqT cA8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ULfUMHSe9EwQCA4Q6kt6JJKOCEAzqz6NA48i42sUDCk=; b=KKYPXUai4cynCRfEDX+zOlRi5BfrQIdTbVNNsVTRw293OgaqKfKaKAgCc0EemcxNLn qmGTP+Ors/7Rk9/bxcMlQZvhXWPD/KUxfAe5P9fL1PCiFNkjR+JquVyG6EZo/nh4556U 0XJCO90dZXMSnkEWmbAhIodo3R611gVLdlSpLCwGk1Qp08z1iK4nzh+OWqrHCBUYq0ir Tb5DofVf5wPYYav1AudVRcrFObwAI3vop1P4L+qrFf+mWO8z+lytkbOp7A9DANhtVOlR EKodeG2DxvcYp628CZ2Zil6s4Tvb18U4UQCiFye6dozyxjEDR9CGV3IVE2Ku/javOXdY qPNQ== X-Gm-Message-State: APjAAAXPWHgESuotGNamoBymI9r7nR7djleHz1KI+hz89MK92+rPd+w6 b7jpfMvPbjJvNnzlFFtL412bn4w7wNNS++Rs/UL7dQ== X-Google-Smtp-Source: APXvYqw0OQkFrWJnbfYBdujXtu4gVdR2HyhZzYOJr6FcueXHGHv5IgPScpsi3KAdSpGiz4vbcWz3cGa1Tts5xwnYDQc= X-Received: by 2002:ae9:e309:: with SMTP id v9mr19774846qkf.121.1556219890840; Thu, 25 Apr 2019 12:18:10 -0700 (PDT) MIME-Version: 1.0 References: <201904191343.x3JDhYVF010453@repo.freebsd.org> In-Reply-To: <201904191343.x3JDhYVF010453@repo.freebsd.org> From: Ryan Stone Date: Thu, 25 Apr 2019 15:17:59 -0400 Message-ID: Subject: Re: svn commit: r346386 - in head/sys: dev/bge dev/pci dev/twa x86/iommu To: Tycho Nightingale Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, John Baldwin , Ed Maste Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: C2F46967DE X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=odaA9pt/; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of rysto32@gmail.com designates 2607:f8b0:4864:20::72a as permitted sender) smtp.mailfrom=rysto32@gmail.com X-Spamd-Result: default: False [-6.37 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCPT_COUNT_FIVE(0.00)[6]; RCVD_TLS_LAST(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; MX_GOOD(-0.01)[cached: alt3.gmail-smtp-in.l.google.com]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[a.2.7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; IP_SCORE(-2.92)[ip: (-9.12), ipnet: 2607:f8b0::/32(-3.14), asn: 15169(-2.25), country: US(-0.06)]; NEURAL_HAM_SHORT(-0.44)[-0.445,0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Apr 2019 19:18:13 -0000 This change makes me *very* uncomfortable. It was originally brought in due to issues with Adaptec RAID cards using the aac(9) driver. The symptoms of the bug included silent corruption of data as it was written to disk. Are we sure that this change is a good idea, given how catastrophic it is when a device gets this wrong? On Fri, Apr 19, 2019 at 9:43 AM Tycho Nightingale wrote: > > Author: tychon > Date: Fri Apr 19 13:43:33 2019 > New Revision: 346386 > URL: https://svnweb.freebsd.org/changeset/base/346386 > > Log: > remove the 4GB boundary requirement on PCI DMA segments > > Reviewed by: kib > Discussed with: jhb > Sponsored by: Dell EMC Isilon > Differential Revision: https://reviews.freebsd.org/D19867 > > Modified: > head/sys/dev/bge/if_bgereg.h > head/sys/dev/pci/pci.c > head/sys/dev/pci/pcivar.h > head/sys/dev/twa/tw_osl.h > head/sys/dev/twa/tw_osl_freebsd.c > head/sys/x86/iommu/intel_ctx.c > > Modified: head/sys/dev/bge/if_bgereg.h > ============================================================================== > --- head/sys/dev/bge/if_bgereg.h Fri Apr 19 13:23:41 2019 (r346385) > +++ head/sys/dev/bge/if_bgereg.h Fri Apr 19 13:43:33 2019 (r346386) > @@ -3067,3 +3067,11 @@ struct bge_softc { > #define BGE_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->bge_mtx, MA_OWNED) > #define BGE_UNLOCK(_sc) mtx_unlock(&(_sc)->bge_mtx) > #define BGE_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->bge_mtx) > + > +#ifdef BUS_SPACE_MAXADDR > +#if (BUS_SPACE_MAXADDR > 0xFFFFFFFF) > +#define BGE_DMA_BOUNDARY (0x100000000) > +#else > +#define BGE_DMA_BOUNDARY 0 > +#endif > +#endif > > Modified: head/sys/dev/pci/pci.c > ============================================================================== > --- head/sys/dev/pci/pci.c Fri Apr 19 13:23:41 2019 (r346385) > +++ head/sys/dev/pci/pci.c Fri Apr 19 13:43:33 2019 (r346386) > @@ -4343,9 +4343,6 @@ pci_attach_common(device_t dev) > { > struct pci_softc *sc; > int busno, domain; > -#ifdef PCI_DMA_BOUNDARY > - int error, tag_valid; > -#endif > #ifdef PCI_RES_BUS > int rid; > #endif > @@ -4365,23 +4362,7 @@ pci_attach_common(device_t dev) > if (bootverbose) > device_printf(dev, "domain=%d, physical bus=%d\n", > domain, busno); > -#ifdef PCI_DMA_BOUNDARY > - tag_valid = 0; > - if (device_get_devclass(device_get_parent(device_get_parent(dev))) != > - devclass_find("pci")) { > - error = bus_dma_tag_create(bus_get_dma_tag(dev), 1, > - PCI_DMA_BOUNDARY, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, > - NULL, NULL, BUS_SPACE_MAXSIZE, BUS_SPACE_UNRESTRICTED, > - BUS_SPACE_MAXSIZE, 0, NULL, NULL, &sc->sc_dma_tag); > - if (error) > - device_printf(dev, "Failed to create DMA tag: %d\n", > - error); > - else > - tag_valid = 1; > - } > - if (!tag_valid) > -#endif > - sc->sc_dma_tag = bus_get_dma_tag(dev); > + sc->sc_dma_tag = bus_get_dma_tag(dev); > return (0); > } > > > Modified: head/sys/dev/pci/pcivar.h > ============================================================================== > --- head/sys/dev/pci/pcivar.h Fri Apr 19 13:23:41 2019 (r346385) > +++ head/sys/dev/pci/pcivar.h Fri Apr 19 13:43:33 2019 (r346386) > @@ -693,14 +693,6 @@ int pcie_link_reset(device_t port, int pcie_location); > > void pci_print_faulted_dev(void); > > -#ifdef BUS_SPACE_MAXADDR > -#if (BUS_SPACE_MAXADDR > 0xFFFFFFFF) > -#define PCI_DMA_BOUNDARY 0x100000000 > -#else > -#define PCI_DMA_BOUNDARY 0 > -#endif > -#endif > - > #endif /* _SYS_BUS_H_ */ > > /* > > Modified: head/sys/dev/twa/tw_osl.h > ============================================================================== > --- head/sys/dev/twa/tw_osl.h Fri Apr 19 13:23:41 2019 (r346385) > +++ head/sys/dev/twa/tw_osl.h Fri Apr 19 13:43:33 2019 (r346386) > @@ -57,6 +57,12 @@ > #define TW_OSLI_MAX_NUM_IOS (TW_OSLI_MAX_NUM_REQUESTS - 2) > #define TW_OSLI_MAX_NUM_AENS 0x100 > > +#ifdef PAE > +#define TW_OSLI_DMA_BOUNDARY (1u << 31) > +#else > +#define TW_OSLI_DMA_BOUNDARY ((bus_size_t)((uint64_t)1 << 32)) > +#endif > + > /* Possible values of req->state. */ > #define TW_OSLI_REQ_STATE_INIT 0x0 /* being initialized */ > #define TW_OSLI_REQ_STATE_BUSY 0x1 /* submitted to CL */ > > Modified: head/sys/dev/twa/tw_osl_freebsd.c > ============================================================================== > --- head/sys/dev/twa/tw_osl_freebsd.c Fri Apr 19 13:23:41 2019 (r346385) > +++ head/sys/dev/twa/tw_osl_freebsd.c Fri Apr 19 13:43:33 2019 (r346386) > @@ -551,7 +551,7 @@ tw_osli_alloc_mem(struct twa_softc *sc) > /* Create the parent dma tag. */ > if (bus_dma_tag_create(bus_get_dma_tag(sc->bus_dev), /* parent */ > sc->alignment, /* alignment */ > - 0, /* boundary */ > + TW_OSLI_DMA_BOUNDARY, /* boundary */ > BUS_SPACE_MAXADDR, /* lowaddr */ > BUS_SPACE_MAXADDR, /* highaddr */ > NULL, NULL, /* filter, filterarg */ > > Modified: head/sys/x86/iommu/intel_ctx.c > ============================================================================== > --- head/sys/x86/iommu/intel_ctx.c Fri Apr 19 13:23:41 2019 (r346385) > +++ head/sys/x86/iommu/intel_ctx.c Fri Apr 19 13:43:33 2019 (r346386) > @@ -130,7 +130,7 @@ ctx_tag_init(struct dmar_ctx *ctx, device_t dev) > maxaddr = MIN(ctx->domain->end, BUS_SPACE_MAXADDR); > ctx->ctx_tag.common.ref_count = 1; /* Prevent free */ > ctx->ctx_tag.common.impl = &bus_dma_dmar_impl; > - ctx->ctx_tag.common.boundary = PCI_DMA_BOUNDARY; > + ctx->ctx_tag.common.boundary = 0; > ctx->ctx_tag.common.lowaddr = maxaddr; > ctx->ctx_tag.common.highaddr = maxaddr; > ctx->ctx_tag.common.maxsize = maxaddr; >