From nobody Sat Jul 25 03:20:17 2026 Received: from mail-qv1-f53.google.com (mail-qv1-f53.google.com [209.85.219.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51D124086A for ; Mon, 20 Jul 2026 02:02:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784512954; cv=none; b=N9ST5g8H+x1AMmAONsNqraw1KiRVuYPDR+Th2rOsQDG9jYgU0t56uRJvsQxQmijN3lG+ulSv7xImG444P1h8m5GDTQCB8rCtnWQw0ktUBT+HFew+/Ncdg4eHWE3rMOGNx2s+UCl+EfK80t8n2vTfl+41/epk9xrHeFJbIWnR9X0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784512954; c=relaxed/simple; bh=N7bV8IhOFF9GBhLm5PFUUKuPkaLfsq/MU5lnX57/+gc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=VE4mcCePvs2kZ1Ho7QYjDVxP54Jbse3GaFC/yFyz+R6qkVq/w/PE5C27qWHrD/FzoVjllp6vGmbf0xM5Ey/K983L92fSJlZpHThAR4Sc0WcVNXfpGOi4L34BkxTP2V3CLCd+4vrAefe2u7SFkwkU9bRsRyNN8mmo7LChRiFJmZM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GCrXCfdV; arc=none smtp.client-ip=209.85.219.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GCrXCfdV" Received: by mail-qv1-f53.google.com with SMTP id 6a1803df08f44-90327237340so33696906d6.1 for ; Sun, 19 Jul 2026 19:02:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784512952; x=1785117752; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=fZjEI+rH+GkZRFlNAE3Vjq6nP1qdwM39GIwm4i94NEE=; b=GCrXCfdVZO82gWt5lwl6V9c1kguGnyEXUnVFyJXBYgOZ1/IVxpKyKGtd2FU77leDfz u6sH7nzy7vfQYM9VTcM5s7BDrYPlm0rDZQqCbrEcZg0OlUCX1rUgcHSb6d+lCBnFOqM8 isSIX8I7nylg9YCRs90RtdPpU34xQprLmvd0zFkb+oekEKZ6gMMvcU5BiiVbjD3lVagA +GG5sjjDxnjaZVEhEa+5y2aIfNUy8i5WiwEd3f2IdnmVc9Dvx9acBtwsMguw7pgbsMWX yCvVwG9DvivbpHmPp64YZYdXO6fEvHyevgtpR4iuDyB+eMR0Nhoc0h1TEvBkg2xG/MUg jCWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784512952; x=1785117752; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=fZjEI+rH+GkZRFlNAE3Vjq6nP1qdwM39GIwm4i94NEE=; b=eH03serVOAA2xvQZQt+A9Pm5gsPSB+l36u1a+v6BFgnG9bk01mr4VXJgn8EkeofzKW EfoLyfoiWlX/RkFQnXk445xkcIu4Hd/dsdCTs3Pe0xn/PzSu7aGGQ5cf6nMHH9FoDayc zpDe9MAaxxW7jCkMXF9KKHaGnITWHmToDPYb+XrTN5F1F4CsCxgo9xL8Jw/4GFhplpZk JRZIQxbcDiyHjfo9gz0q5F0UX/HUChKrJrIet0/P7HaNCoBrzO5AYbY9OH/ofQ388nQr Lu8yVPnnMMuDBzNwKgrmYg/l8EL6kn9yHPUiQoDwHhqU508+U2BA3HpB+fn7QycPn6A8 Gqng== X-Forwarded-Encrypted: i=1; AHgh+RoZiZ/hY2YXs0gWTzNmasBV/7/P6vW/8wtObGYFSeBOnLdDt0CRj78hJuP9tnV3XMlktVpQbZCoOXGp+Vw=@vger.kernel.org X-Gm-Message-State: AOJu0YwllK7hBig9zBmmDyt4Gv8z+ttcTHnozUj7dWmgYZmLdVkMCHDg p/qAgIQic11tlSH0HZ86k1EC1Mgqurx3HTDR7E2KSxFlnf5eYAJ1O7jX X-Gm-Gg: AfdE7clATn24/TBMth378SNFUXvxWVFYhW+VHZTn8mIwpzSY1hXk0RaST5GR2aca4GQ e9LFf58P88huCQFPUnHbS6EZZODgsZYMRowyYffUpE03DxnG+OfpjEpLSRcsV0lnO3DUS4sqTYR ryo67U8x7Gy7LpaOLCowKK/4W5993EFgoTWysvn3SdRoVMiLXTCaO6WVajoUzRaagnOcIqPRWv+ NQxRy6H9jP5u/3oisxqg2LJgjIl5PPwAlMb66wmfh2UAl/lc9wDy8xLDuShigqX8hF/vzlXQhuh C7q0dtwID+NewE7/AXqegh22DkvJpXS60HdIU6dqDx87qj5IFpV8zfZ0Hxz/1JEgkNSSyouZ60w fiFj/lUBT4jhIzHNSzLzXTn6WWWefdmCA5yXYlL8vq2XuCJQsM8R/wo+Ng7W2gxezayRmLHAb56 XI+/dWAlhDhRDHneaK5V+/sV7/zyNLrHDOn+O2Lkeoiigt1CHKDa8qdVM/u3Xa3+q0jX2sPS3cD oOudrcqDZD/Zin0JCNX3FF1yMuX5fLT/KQ0vx3myG7AUoD+nHymZlw= X-Received: by 2002:a05:6214:600d:b0:907:8960:fb59 with SMTP id 6a1803df08f44-9078960fde1mr75673126d6.34.1784512952081; Sun, 19 Jul 2026 19:02:32 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e35]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-9077871d06csm81613826d6.43.2026.07.19.19.02.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 19:02:31 -0700 (PDT) From: Rosen Penev To: linux-ide@vger.kernel.org Cc: Damien Le Moal , Niklas Cassel , linux-kernel@vger.kernel.org (open list) Subject: [PATCHv2] ata: pata_ep93xx: fix PIO fallback when DMA init fails Date: Sun, 19 Jul 2026 19:02:29 -0700 Message-ID: <20260720020229.1972888-1-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ep93xx_pata_dma_init() returns an error when dma_request_chan() fails, which causes ep93xx_pata_probe() to abort entirely. The probe function already has a PIO fallback path (it checks both channel pointers before enabling UDMA), so the DMA init should not fail the probe on non-fatal errors. Propagate -EPROBE_DEFER, such that we allow the DMA controller driver to load, in case we got probed before the DMA controller driver. For all other failures (e.g. -ENODEV when the DMA controller is missing in the device tree), fall back to PIO. Assisted-by: Opencode:Big-Pickle Signed-off-by: Rosen Penev --- v2: fix EPROBE_DEFER description drivers/ata/pata_ep93xx.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/ata/pata_ep93xx.c b/drivers/ata/pata_ep93xx.c index 42a24dc51d26..339ee5e43e9f 100644 --- a/drivers/ata/pata_ep93xx.c +++ b/drivers/ata/pata_ep93xx.c @@ -656,14 +656,22 @@ static int ep93xx_pata_dma_init(struct ep93xx_pata_da= ta *drv_data) * start of new transfer. */ drv_data->dma_rx_channel =3D dma_request_chan(dev, "rx"); - if (IS_ERR(drv_data->dma_rx_channel)) - return dev_err_probe(dev, PTR_ERR(drv_data->dma_rx_channel), - "rx DMA setup failed\n"); + if (IS_ERR(drv_data->dma_rx_channel)) { + ret =3D PTR_ERR(drv_data->dma_rx_channel); + drv_data->dma_rx_channel =3D NULL; + if (ret =3D=3D -EPROBE_DEFER) + return ret; + dev_warn(dev, "rx DMA unavailable, using PIO\n"); + return 0; + } =20 drv_data->dma_tx_channel =3D dma_request_chan(&pdev->dev, "tx"); if (IS_ERR(drv_data->dma_tx_channel)) { - ret =3D dev_err_probe(dev, PTR_ERR(drv_data->dma_tx_channel), - "tx DMA setup failed\n"); + ret =3D PTR_ERR(drv_data->dma_tx_channel); + drv_data->dma_tx_channel =3D NULL; + if (ret =3D=3D -EPROBE_DEFER) + goto fail_release_rx; + dev_warn(dev, "tx DMA unavailable, using PIO\n"); goto fail_release_rx; } =20 @@ -674,7 +682,7 @@ static int ep93xx_pata_dma_init(struct ep93xx_pata_data= *drv_data) conf.src_addr_width =3D DMA_SLAVE_BUSWIDTH_4_BYTES; ret =3D dmaengine_slave_config(drv_data->dma_rx_channel, &conf); if (ret) { - dev_err_probe(dev, ret, "failed to configure rx dma channel"); + dev_warn(dev, "failed to configure rx dma channel, using PIO\n"); goto fail_release_dma; } =20 @@ -685,7 +693,7 @@ static int ep93xx_pata_dma_init(struct ep93xx_pata_data= *drv_data) conf.dst_addr_width =3D DMA_SLAVE_BUSWIDTH_4_BYTES; ret =3D dmaengine_slave_config(drv_data->dma_tx_channel, &conf); if (ret) { - dev_err_probe(dev, ret, "failed to configure tx dma channel"); + dev_warn(dev, "failed to configure tx dma channel, using PIO\n"); goto fail_release_dma; } =20 @@ -693,10 +701,14 @@ static int ep93xx_pata_dma_init(struct ep93xx_pata_da= ta *drv_data) =20 fail_release_rx: dma_release_channel(drv_data->dma_rx_channel); + drv_data->dma_rx_channel =3D NULL; + if (ret =3D=3D -EPROBE_DEFER) + return ret; + return 0; + fail_release_dma: ep93xx_pata_release_dma(drv_data); - - return ret; + return 0; } =20 static void ep93xx_pata_dma_start(struct ata_queued_cmd *qc) --=20 2.55.0