* [PATCH 0/2] crypto: qcom-rng: fix support for ACPI-based systems
@ 2024-08-29 1:20 Brian Masney
2024-08-29 1:20 ` [PATCH 1/2] crypto: qcom-rng: rename *_of_data to *_match_data Brian Masney
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Brian Masney @ 2024-08-29 1:20 UTC (permalink / raw)
To: herbert
Cc: davem, quic_omprsing, neil.armstrong, quic_bjorande,
linux-arm-msm, linux-crypto, linux-kernel
The qcom-rng driver supports both ACPI and device tree based systems.
ACPI support was broken when the hw_random interface support was added.
This small series gets that working again.
This fix was boot tested on a Qualcomm Amberwing server.
Brian Masney (2):
crypto: qcom-rng: rename *_of_data to *_match_data
crypto: qcom-rng: fix support for ACPI-based systems
drivers/crypto/qcom-rng.c | 50 +++++++++++++++++++++------------------
1 file changed, 27 insertions(+), 23 deletions(-)
--
2.46.0
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] crypto: qcom-rng: rename *_of_data to *_match_data 2024-08-29 1:20 [PATCH 0/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney @ 2024-08-29 1:20 ` Brian Masney 2024-08-29 1:20 ` [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney 2024-08-29 1:32 ` [PATCH 0/2] " Brian Masney 2 siblings, 0 replies; 7+ messages in thread From: Brian Masney @ 2024-08-29 1:20 UTC (permalink / raw) To: herbert Cc: davem, quic_omprsing, neil.armstrong, quic_bjorande, linux-arm-msm, linux-crypto, linux-kernel The qcom-rng driver supports both ACPI and device tree based systems. Let's rename all instances of *_of_data to *_match_data in preparation for fixing the ACPI support that was broken with commit f29cd5bb64c2 ("crypto: qcom-rng - Add hw_random interface support"). Signed-off-by: Brian Masney <bmasney@redhat.com> --- drivers/crypto/qcom-rng.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/crypto/qcom-rng.c b/drivers/crypto/qcom-rng.c index c670d7d0c11e..4ed545001b77 100644 --- a/drivers/crypto/qcom-rng.c +++ b/drivers/crypto/qcom-rng.c @@ -36,14 +36,14 @@ struct qcom_rng { void __iomem *base; struct clk *clk; struct hwrng hwrng; - struct qcom_rng_of_data *of_data; + struct qcom_rng_match_data *match_data; }; struct qcom_rng_ctx { struct qcom_rng *rng; }; -struct qcom_rng_of_data { +struct qcom_rng_match_data { bool skip_init; bool hwrng_support; }; @@ -155,7 +155,7 @@ static int qcom_rng_init(struct crypto_tfm *tfm) ctx->rng = qcom_rng_dev; - if (!ctx->rng->of_data->skip_init) + if (!ctx->rng->match_data->skip_init) return qcom_rng_enable(ctx->rng); return 0; @@ -196,7 +196,7 @@ static int qcom_rng_probe(struct platform_device *pdev) if (IS_ERR(rng->clk)) return PTR_ERR(rng->clk); - rng->of_data = (struct qcom_rng_of_data *)of_device_get_match_data(&pdev->dev); + rng->match_data = (struct qcom_rng_match_data *)of_device_get_match_data(&pdev->dev); qcom_rng_dev = rng; ret = crypto_register_rng(&qcom_rng_alg); @@ -206,7 +206,7 @@ static int qcom_rng_probe(struct platform_device *pdev) return ret; } - if (rng->of_data->hwrng_support) { + if (rng->match_data->hwrng_support) { rng->hwrng.name = "qcom_hwrng"; rng->hwrng.read = qcom_hwrng_read; rng->hwrng.quality = QCOM_TRNG_QUALITY; @@ -231,17 +231,17 @@ static void qcom_rng_remove(struct platform_device *pdev) qcom_rng_dev = NULL; } -static struct qcom_rng_of_data qcom_prng_of_data = { +static struct qcom_rng_match_data qcom_prng_match_data = { .skip_init = false, .hwrng_support = false, }; -static struct qcom_rng_of_data qcom_prng_ee_of_data = { +static struct qcom_rng_match_data qcom_prng_ee_match_data = { .skip_init = true, .hwrng_support = false, }; -static struct qcom_rng_of_data qcom_trng_of_data = { +static struct qcom_rng_match_data qcom_trng_match_data = { .skip_init = true, .hwrng_support = true, }; @@ -253,9 +253,9 @@ static const struct acpi_device_id __maybe_unused qcom_rng_acpi_match[] = { MODULE_DEVICE_TABLE(acpi, qcom_rng_acpi_match); static const struct of_device_id __maybe_unused qcom_rng_of_match[] = { - { .compatible = "qcom,prng", .data = &qcom_prng_of_data }, - { .compatible = "qcom,prng-ee", .data = &qcom_prng_ee_of_data }, - { .compatible = "qcom,trng", .data = &qcom_trng_of_data }, + { .compatible = "qcom,prng", .data = &qcom_prng_match_data }, + { .compatible = "qcom,prng-ee", .data = &qcom_prng_ee_match_data }, + { .compatible = "qcom,trng", .data = &qcom_trng_match_data }, {} }; MODULE_DEVICE_TABLE(of, qcom_rng_of_match); -- 2.46.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems 2024-08-29 1:20 [PATCH 0/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney 2024-08-29 1:20 ` [PATCH 1/2] crypto: qcom-rng: rename *_of_data to *_match_data Brian Masney @ 2024-08-29 1:20 ` Brian Masney 2024-08-29 10:18 ` Dmitry Baryshkov 2024-08-29 15:58 ` Ernesto A. Fernández 2024-08-29 1:32 ` [PATCH 0/2] " Brian Masney 2 siblings, 2 replies; 7+ messages in thread From: Brian Masney @ 2024-08-29 1:20 UTC (permalink / raw) To: herbert Cc: davem, quic_omprsing, neil.armstrong, quic_bjorande, linux-arm-msm, linux-crypto, linux-kernel The qcom-rng driver supports both ACPI and device tree based systems. ACPI support was broken when the hw_random interface support was added. Let's go ahead and fix this by checking has_acpi_companion(). This fix was boot tested on a Qualcomm Amberwing server. Fixes: f29cd5bb64c2 ("crypto: qcom-rng - Add hw_random interface support") Signed-off-by: Brian Masney <bmasney@redhat.com> --- drivers/crypto/qcom-rng.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/drivers/crypto/qcom-rng.c b/drivers/crypto/qcom-rng.c index 4ed545001b77..470062cb258c 100644 --- a/drivers/crypto/qcom-rng.c +++ b/drivers/crypto/qcom-rng.c @@ -176,6 +176,21 @@ static struct rng_alg qcom_rng_alg = { } }; +static struct qcom_rng_match_data qcom_prng_match_data = { + .skip_init = false, + .hwrng_support = false, +}; + +static struct qcom_rng_match_data qcom_prng_ee_match_data = { + .skip_init = true, + .hwrng_support = false, +}; + +static struct qcom_rng_match_data qcom_trng_match_data = { + .skip_init = true, + .hwrng_support = true, +}; + static int qcom_rng_probe(struct platform_device *pdev) { struct qcom_rng *rng; @@ -196,7 +211,11 @@ static int qcom_rng_probe(struct platform_device *pdev) if (IS_ERR(rng->clk)) return PTR_ERR(rng->clk); - rng->match_data = (struct qcom_rng_match_data *)of_device_get_match_data(&pdev->dev); + if (has_acpi_companion(&pdev->dev)) + rng->match_data = &qcom_prng_match_data; + else + rng->match_data = + (struct qcom_rng_match_data *)of_device_get_match_data(&pdev->dev); qcom_rng_dev = rng; ret = crypto_register_rng(&qcom_rng_alg); @@ -231,21 +250,6 @@ static void qcom_rng_remove(struct platform_device *pdev) qcom_rng_dev = NULL; } -static struct qcom_rng_match_data qcom_prng_match_data = { - .skip_init = false, - .hwrng_support = false, -}; - -static struct qcom_rng_match_data qcom_prng_ee_match_data = { - .skip_init = true, - .hwrng_support = false, -}; - -static struct qcom_rng_match_data qcom_trng_match_data = { - .skip_init = true, - .hwrng_support = true, -}; - static const struct acpi_device_id __maybe_unused qcom_rng_acpi_match[] = { { .id = "QCOM8160", .driver_data = 1 }, {} -- 2.46.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems 2024-08-29 1:20 ` [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney @ 2024-08-29 10:18 ` Dmitry Baryshkov 2024-08-29 15:58 ` Ernesto A. Fernández 1 sibling, 0 replies; 7+ messages in thread From: Dmitry Baryshkov @ 2024-08-29 10:18 UTC (permalink / raw) To: Brian Masney Cc: herbert, davem, quic_omprsing, neil.armstrong, quic_bjorande, linux-arm-msm, linux-crypto, linux-kernel On Wed, Aug 28, 2024 at 09:20:05PM GMT, Brian Masney wrote: > The qcom-rng driver supports both ACPI and device tree based systems. > ACPI support was broken when the hw_random interface support was added. > Let's go ahead and fix this by checking has_acpi_companion(). > > This fix was boot tested on a Qualcomm Amberwing server. > > Fixes: f29cd5bb64c2 ("crypto: qcom-rng - Add hw_random interface support") > Signed-off-by: Brian Masney <bmasney@redhat.com> Please reorder the patches so that the Fix comes first (it can get backported to stable kernels). Renaming the field is a cleanup and as such it can come afterwards. > --- > drivers/crypto/qcom-rng.c | 36 ++++++++++++++++++++---------------- > 1 file changed, 20 insertions(+), 16 deletions(-) > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems 2024-08-29 1:20 ` [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney 2024-08-29 10:18 ` Dmitry Baryshkov @ 2024-08-29 15:58 ` Ernesto A. Fernández 2024-08-29 16:13 ` Brian Masney 1 sibling, 1 reply; 7+ messages in thread From: Ernesto A. Fernández @ 2024-08-29 15:58 UTC (permalink / raw) To: Brian Masney, Jeffrey Hugo Cc: herbert, davem, quic_omprsing, neil.armstrong, quic_bjorande, linux-arm-msm, linux-crypto, linux-kernel Hi, thanks for the patch. I have one doubt: On Wed, Aug 28, 2024 at 09:20:05PM -0400, Brian Masney wrote: > The qcom-rng driver supports both ACPI and device tree based systems. > ACPI support was broken when the hw_random interface support was added. > Let's go ahead and fix this by checking has_acpi_companion(). > > This fix was boot tested on a Qualcomm Amberwing server. > > Fixes: f29cd5bb64c2 ("crypto: qcom-rng - Add hw_random interface support") > Signed-off-by: Brian Masney <bmasney@redhat.com> > --- > drivers/crypto/qcom-rng.c | 36 ++++++++++++++++++++---------------- > 1 file changed, 20 insertions(+), 16 deletions(-) > > diff --git a/drivers/crypto/qcom-rng.c b/drivers/crypto/qcom-rng.c > index 4ed545001b77..470062cb258c 100644 > --- a/drivers/crypto/qcom-rng.c > +++ b/drivers/crypto/qcom-rng.c > @@ -176,6 +176,21 @@ static struct rng_alg qcom_rng_alg = { > } > }; > > +static struct qcom_rng_match_data qcom_prng_match_data = { > + .skip_init = false, So with acpi, skip_init will be set to false now, right? But before f29cd5bb64c2 broke it, skip_init used to be set to true. Was that wrong before, or now? Ernesto > + .hwrng_support = false, > +}; > + > +static struct qcom_rng_match_data qcom_prng_ee_match_data = { > + .skip_init = true, > + .hwrng_support = false, > +}; > + > +static struct qcom_rng_match_data qcom_trng_match_data = { > + .skip_init = true, > + .hwrng_support = true, > +}; > + > static int qcom_rng_probe(struct platform_device *pdev) > { > struct qcom_rng *rng; > @@ -196,7 +211,11 @@ static int qcom_rng_probe(struct platform_device *pdev) > if (IS_ERR(rng->clk)) > return PTR_ERR(rng->clk); > > - rng->match_data = (struct qcom_rng_match_data *)of_device_get_match_data(&pdev->dev); > + if (has_acpi_companion(&pdev->dev)) > + rng->match_data = &qcom_prng_match_data; > + else > + rng->match_data = > + (struct qcom_rng_match_data *)of_device_get_match_data(&pdev->dev); > > qcom_rng_dev = rng; > ret = crypto_register_rng(&qcom_rng_alg); > @@ -231,21 +250,6 @@ static void qcom_rng_remove(struct platform_device *pdev) > qcom_rng_dev = NULL; > } > > -static struct qcom_rng_match_data qcom_prng_match_data = { > - .skip_init = false, > - .hwrng_support = false, > -}; > - > -static struct qcom_rng_match_data qcom_prng_ee_match_data = { > - .skip_init = true, > - .hwrng_support = false, > -}; > - > -static struct qcom_rng_match_data qcom_trng_match_data = { > - .skip_init = true, > - .hwrng_support = true, > -}; > - > static const struct acpi_device_id __maybe_unused qcom_rng_acpi_match[] = { > { .id = "QCOM8160", .driver_data = 1 }, > {} > -- > 2.46.0 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems 2024-08-29 15:58 ` Ernesto A. Fernández @ 2024-08-29 16:13 ` Brian Masney 0 siblings, 0 replies; 7+ messages in thread From: Brian Masney @ 2024-08-29 16:13 UTC (permalink / raw) To: Ernesto A. Fernández Cc: Jeffrey Hugo, herbert, davem, quic_omprsing, neil.armstrong, quic_bjorande, linux-arm-msm, linux-crypto, linux-kernel On Thu, Aug 29, 2024 at 11:58 AM Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com> wrote: > thanks for the patch. I have one doubt: > > On Wed, Aug 28, 2024 at 09:20:05PM -0400, Brian Masney wrote: > > The qcom-rng driver supports both ACPI and device tree based systems. > > ACPI support was broken when the hw_random interface support was added. > > Let's go ahead and fix this by checking has_acpi_companion(). > > > > This fix was boot tested on a Qualcomm Amberwing server. > > > > Fixes: f29cd5bb64c2 ("crypto: qcom-rng - Add hw_random interface support") > > Signed-off-by: Brian Masney <bmasney@redhat.com> > > --- > > drivers/crypto/qcom-rng.c | 36 ++++++++++++++++++++---------------- > > 1 file changed, 20 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/crypto/qcom-rng.c b/drivers/crypto/qcom-rng.c > > index 4ed545001b77..470062cb258c 100644 > > --- a/drivers/crypto/qcom-rng.c > > +++ b/drivers/crypto/qcom-rng.c > > @@ -176,6 +176,21 @@ static struct rng_alg qcom_rng_alg = { > > } > > }; > > > > +static struct qcom_rng_match_data qcom_prng_match_data = { > > + .skip_init = false, > > So with acpi, skip_init will be set to false now, right? But before > f29cd5bb64c2 broke it, skip_init used to be set to true. Was that wrong > before, or now? Good catch! I didn't check the _DSD and assumed it was always false. I'll verify on the server we have in the lab and post a v2. Brian ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] crypto: qcom-rng: fix support for ACPI-based systems 2024-08-29 1:20 [PATCH 0/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney 2024-08-29 1:20 ` [PATCH 1/2] crypto: qcom-rng: rename *_of_data to *_match_data Brian Masney 2024-08-29 1:20 ` [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney @ 2024-08-29 1:32 ` Brian Masney 2 siblings, 0 replies; 7+ messages in thread From: Brian Masney @ 2024-08-29 1:32 UTC (permalink / raw) To: herbert Cc: davem, quic_omprsing, neil.armstrong, quic_bjorande, linux-arm-msm, linux-crypto, linux-kernel, Ernesto A. Fernández On Wed, Aug 28, 2024 at 9:21 PM Brian Masney <bmasney@redhat.com> wrote: > > The qcom-rng driver supports both ACPI and device tree based systems. > ACPI support was broken when the hw_random interface support was added. > This small series gets that working again. > > This fix was boot tested on a Qualcomm Amberwing server. > > Brian Masney (2): > crypto: qcom-rng: rename *_of_data to *_match_data > crypto: qcom-rng: fix support for ACPI-based systems > > drivers/crypto/qcom-rng.c | 50 +++++++++++++++++++++------------------ > 1 file changed, 27 insertions(+), 23 deletions(-) Ohh I forgot to add this tag to the series: Reported-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-08-29 16:13 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-08-29 1:20 [PATCH 0/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney 2024-08-29 1:20 ` [PATCH 1/2] crypto: qcom-rng: rename *_of_data to *_match_data Brian Masney 2024-08-29 1:20 ` [PATCH 2/2] crypto: qcom-rng: fix support for ACPI-based systems Brian Masney 2024-08-29 10:18 ` Dmitry Baryshkov 2024-08-29 15:58 ` Ernesto A. Fernández 2024-08-29 16:13 ` Brian Masney 2024-08-29 1:32 ` [PATCH 0/2] " Brian Masney
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox