From: "Emilio López" <emilio.lopez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
To: Javier Martinez Canillas
<javier-0uQlZySMnqxg9hUCZPvPmw@public.gmane.org>
Cc: "Greg Kroah-Hartman"
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
"Olof Johansson" <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
"Kukjin Kim" <kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"Krzysztof Kozłowski"
<k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
"Guenter Roeck" <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>,
"Linux Kernel"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
"linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH v2 2/3] platform/chrome: Support reading/writing the vboot context
Date: Tue, 15 Sep 2015 17:24:50 -0300 [thread overview]
Message-ID: <55F87E92.8000609@collabora.co.uk> (raw)
In-Reply-To: <CABxcv=mnCNQPtVBU4tPOWD237_-RojoW+RVLTj+F=3PHbUHfQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Hi Javier,
On 15/09/15 16:43, Javier Martinez Canillas wrote:
> Hello Emilio,
>
> On Tue, Sep 15, 2015 at 9:16 PM, Emilio López
> <emilio.lopez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org> wrote:
>
> [snip]
>
>>>>
>>>> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>>>> obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o
>>>> -cros_ec_devs-objs := cros_ec_dev.o cros_ec_sysfs.o
>>>> cros_ec_lightbar.o
>>>> +cros_ec_devs-objs := cros_ec_dev.o
>>>> +cros_ec_devs-objs += cros_ec_lightbar.o
>>>> +cros_ec_devs-objs += cros_ec_sysfs.o
>>>> +cros_ec_devs-objs += cros_ec_vbc.o
>>>
>>>
>>> Why are you changing the Makefile? AFAIK += is usually used when the
>>> compilation is conditional based on a Kconfig symbol but since these
>>> are build unconditionally, I'll just keep it as foo := bar baz
>>
>>
>> As far as I'm aware, += is append[0]. It's used for stuff like
>> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>> because the left part will resolve to "obj-y" or similar, and you want to
>> add to it, not replace it. I only changed the Makefile here because the line
>> was growing too long, and I thought it looked neater this way; it shouldn't
>> cause any functional change apart from the intended one.
>>
>> [0] https://www.gnu.org/software/make/manual/html_node/Appending.html
>>
>
> Yes, I know how Kbuild works. What I tried to say is that you usually
> append based on a Kconfig symbol. In fact even you are mentioning such
> an example.
> So appending unconditionally like you are doing makes the Makefile
> harder to read IMHO. If the line grows to long you can use a backlash
> (\) char to split the line.
I guess it just boils down to personal preference; I don't feel that
strongly about it, I'll change it in v3
(...)
>>>> + struct device *dev = container_of(kobj, struct device, kobj);
>>>> + struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev,
>>>> + class_dev);
>>>> + struct cros_ec_device *ecdev = ec->ec_dev;
>>>> + struct ec_params_vbnvcontext *params;
>>>> + struct cros_ec_command *msg;
>>>> + int err;
>>>> + const size_t para_sz = sizeof(struct ec_params_vbnvcontext);
>>>> + const size_t resp_sz = sizeof(struct ec_response_vbnvcontext);
>>>> + const size_t payload = max(para_sz, resp_sz);
>>>> +
>>>> + msg = kmalloc(sizeof(*msg) + payload, GFP_KERNEL);
>>>> + if (!msg)
>>>> + return -ENOMEM;
>>>> +
>>>> + params = (struct ec_params_vbnvcontext *)msg->data;
>>>> + params->op = EC_VBNV_CONTEXT_OP_READ;
>>>> +
>>>> + msg->version = EC_VER_VBNV_CONTEXT;
>>>> + msg->command = EC_CMD_VBNV_CONTEXT;
>>>> + msg->outsize = sizeof(params->op);
>>>
>>>
>>> Shouldn't this be para_sz ? Since you are sending to the EC the whole
>>> struct ec_params_vbnvcontext and not only the op field.
>>>
>>> Or if the EC only expects to get the u32 op field, then I think your
>>> max payload calculation is not correct.
>>
>>
>> The params struct is the same for both read and write ops, so it has the op
>
> That's not true, struct ec_response_vbnvcontext has only the block
> field while struct ec_param_vbnvcontext has both the op and block
> fields.
The former is a response struct, not a params struct.
>> flag and a buffer for the write op. During the read op I believe there's no
>> need to send this potentially-garbage-filled buffer to the EC, so outsize is
>> set accordingly here.
>
> Yes, I agree with you but then as I mentioned I think your payload
> calculation is wrong since you want instead max(sizeof(struct
> ec_response_vbnvcontext), sizeof(param->op)). Otherwise you are
> allocating 4 bytes more than needed.
Yeah, I can see that. If I do that though, max(...) would be less than
the size of the full params struct, and casting data to it could lead to
subtle bugs in the future. I can change it and add a comment mentioning
this, deal?
(...)
> with the needed changes, feel free to add my:
>
> Reviewed-by: Javier Martinez Canillas <javier-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
Ok, thanks!
Emilio
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: emilio.lopez@collabora.co.uk (Emilio López)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/3] platform/chrome: Support reading/writing the vboot context
Date: Tue, 15 Sep 2015 17:24:50 -0300 [thread overview]
Message-ID: <55F87E92.8000609@collabora.co.uk> (raw)
In-Reply-To: <CABxcv=mnCNQPtVBU4tPOWD237_-RojoW+RVLTj+F=3PHbUHfQQ@mail.gmail.com>
Hi Javier,
On 15/09/15 16:43, Javier Martinez Canillas wrote:
> Hello Emilio,
>
> On Tue, Sep 15, 2015 at 9:16 PM, Emilio L?pez
> <emilio.lopez@collabora.co.uk> wrote:
>
> [snip]
>
>>>>
>>>> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>>>> obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o
>>>> -cros_ec_devs-objs := cros_ec_dev.o cros_ec_sysfs.o
>>>> cros_ec_lightbar.o
>>>> +cros_ec_devs-objs := cros_ec_dev.o
>>>> +cros_ec_devs-objs += cros_ec_lightbar.o
>>>> +cros_ec_devs-objs += cros_ec_sysfs.o
>>>> +cros_ec_devs-objs += cros_ec_vbc.o
>>>
>>>
>>> Why are you changing the Makefile? AFAIK += is usually used when the
>>> compilation is conditional based on a Kconfig symbol but since these
>>> are build unconditionally, I'll just keep it as foo := bar baz
>>
>>
>> As far as I'm aware, += is append[0]. It's used for stuff like
>> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>> because the left part will resolve to "obj-y" or similar, and you want to
>> add to it, not replace it. I only changed the Makefile here because the line
>> was growing too long, and I thought it looked neater this way; it shouldn't
>> cause any functional change apart from the intended one.
>>
>> [0] https://www.gnu.org/software/make/manual/html_node/Appending.html
>>
>
> Yes, I know how Kbuild works. What I tried to say is that you usually
> append based on a Kconfig symbol. In fact even you are mentioning such
> an example.
> So appending unconditionally like you are doing makes the Makefile
> harder to read IMHO. If the line grows to long you can use a backlash
> (\) char to split the line.
I guess it just boils down to personal preference; I don't feel that
strongly about it, I'll change it in v3
(...)
>>>> + struct device *dev = container_of(kobj, struct device, kobj);
>>>> + struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev,
>>>> + class_dev);
>>>> + struct cros_ec_device *ecdev = ec->ec_dev;
>>>> + struct ec_params_vbnvcontext *params;
>>>> + struct cros_ec_command *msg;
>>>> + int err;
>>>> + const size_t para_sz = sizeof(struct ec_params_vbnvcontext);
>>>> + const size_t resp_sz = sizeof(struct ec_response_vbnvcontext);
>>>> + const size_t payload = max(para_sz, resp_sz);
>>>> +
>>>> + msg = kmalloc(sizeof(*msg) + payload, GFP_KERNEL);
>>>> + if (!msg)
>>>> + return -ENOMEM;
>>>> +
>>>> + params = (struct ec_params_vbnvcontext *)msg->data;
>>>> + params->op = EC_VBNV_CONTEXT_OP_READ;
>>>> +
>>>> + msg->version = EC_VER_VBNV_CONTEXT;
>>>> + msg->command = EC_CMD_VBNV_CONTEXT;
>>>> + msg->outsize = sizeof(params->op);
>>>
>>>
>>> Shouldn't this be para_sz ? Since you are sending to the EC the whole
>>> struct ec_params_vbnvcontext and not only the op field.
>>>
>>> Or if the EC only expects to get the u32 op field, then I think your
>>> max payload calculation is not correct.
>>
>>
>> The params struct is the same for both read and write ops, so it has the op
>
> That's not true, struct ec_response_vbnvcontext has only the block
> field while struct ec_param_vbnvcontext has both the op and block
> fields.
The former is a response struct, not a params struct.
>> flag and a buffer for the write op. During the read op I believe there's no
>> need to send this potentially-garbage-filled buffer to the EC, so outsize is
>> set accordingly here.
>
> Yes, I agree with you but then as I mentioned I think your payload
> calculation is wrong since you want instead max(sizeof(struct
> ec_response_vbnvcontext), sizeof(param->op)). Otherwise you are
> allocating 4 bytes more than needed.
Yeah, I can see that. If I do that though, max(...) would be less than
the size of the full params struct, and casting data to it could lead to
subtle bugs in the future. I can change it and add a comment mentioning
this, deal?
(...)
> with the needed changes, feel free to add my:
>
> Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Ok, thanks!
Emilio
WARNING: multiple messages have this Message-ID (diff)
From: "Emilio López" <emilio.lopez@collabora.co.uk>
To: Javier Martinez Canillas <javier@dowhile0.org>
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Olof Johansson" <olof@lixom.net>,
"Kukjin Kim" <kgene@kernel.org>,
"Krzysztof Kozłowski" <k.kozlowski@samsung.com>,
"Guenter Roeck" <linux@roeck-us.net>,
"Linux Kernel" <linux-kernel@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-samsung-soc@vger.kernel.org"
<linux-samsung-soc@vger.kernel.org>
Subject: Re: [PATCH v2 2/3] platform/chrome: Support reading/writing the vboot context
Date: Tue, 15 Sep 2015 17:24:50 -0300 [thread overview]
Message-ID: <55F87E92.8000609@collabora.co.uk> (raw)
In-Reply-To: <CABxcv=mnCNQPtVBU4tPOWD237_-RojoW+RVLTj+F=3PHbUHfQQ@mail.gmail.com>
Hi Javier,
On 15/09/15 16:43, Javier Martinez Canillas wrote:
> Hello Emilio,
>
> On Tue, Sep 15, 2015 at 9:16 PM, Emilio López
> <emilio.lopez@collabora.co.uk> wrote:
>
> [snip]
>
>>>>
>>>> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>>>> obj-$(CONFIG_CHROMEOS_PSTORE) += chromeos_pstore.o
>>>> -cros_ec_devs-objs := cros_ec_dev.o cros_ec_sysfs.o
>>>> cros_ec_lightbar.o
>>>> +cros_ec_devs-objs := cros_ec_dev.o
>>>> +cros_ec_devs-objs += cros_ec_lightbar.o
>>>> +cros_ec_devs-objs += cros_ec_sysfs.o
>>>> +cros_ec_devs-objs += cros_ec_vbc.o
>>>
>>>
>>> Why are you changing the Makefile? AFAIK += is usually used when the
>>> compilation is conditional based on a Kconfig symbol but since these
>>> are build unconditionally, I'll just keep it as foo := bar baz
>>
>>
>> As far as I'm aware, += is append[0]. It's used for stuff like
>> obj-$(CONFIG_CHROMEOS_LAPTOP) += chromeos_laptop.o
>> because the left part will resolve to "obj-y" or similar, and you want to
>> add to it, not replace it. I only changed the Makefile here because the line
>> was growing too long, and I thought it looked neater this way; it shouldn't
>> cause any functional change apart from the intended one.
>>
>> [0] https://www.gnu.org/software/make/manual/html_node/Appending.html
>>
>
> Yes, I know how Kbuild works. What I tried to say is that you usually
> append based on a Kconfig symbol. In fact even you are mentioning such
> an example.
> So appending unconditionally like you are doing makes the Makefile
> harder to read IMHO. If the line grows to long you can use a backlash
> (\) char to split the line.
I guess it just boils down to personal preference; I don't feel that
strongly about it, I'll change it in v3
(...)
>>>> + struct device *dev = container_of(kobj, struct device, kobj);
>>>> + struct cros_ec_dev *ec = container_of(dev, struct cros_ec_dev,
>>>> + class_dev);
>>>> + struct cros_ec_device *ecdev = ec->ec_dev;
>>>> + struct ec_params_vbnvcontext *params;
>>>> + struct cros_ec_command *msg;
>>>> + int err;
>>>> + const size_t para_sz = sizeof(struct ec_params_vbnvcontext);
>>>> + const size_t resp_sz = sizeof(struct ec_response_vbnvcontext);
>>>> + const size_t payload = max(para_sz, resp_sz);
>>>> +
>>>> + msg = kmalloc(sizeof(*msg) + payload, GFP_KERNEL);
>>>> + if (!msg)
>>>> + return -ENOMEM;
>>>> +
>>>> + params = (struct ec_params_vbnvcontext *)msg->data;
>>>> + params->op = EC_VBNV_CONTEXT_OP_READ;
>>>> +
>>>> + msg->version = EC_VER_VBNV_CONTEXT;
>>>> + msg->command = EC_CMD_VBNV_CONTEXT;
>>>> + msg->outsize = sizeof(params->op);
>>>
>>>
>>> Shouldn't this be para_sz ? Since you are sending to the EC the whole
>>> struct ec_params_vbnvcontext and not only the op field.
>>>
>>> Or if the EC only expects to get the u32 op field, then I think your
>>> max payload calculation is not correct.
>>
>>
>> The params struct is the same for both read and write ops, so it has the op
>
> That's not true, struct ec_response_vbnvcontext has only the block
> field while struct ec_param_vbnvcontext has both the op and block
> fields.
The former is a response struct, not a params struct.
>> flag and a buffer for the write op. During the read op I believe there's no
>> need to send this potentially-garbage-filled buffer to the EC, so outsize is
>> set accordingly here.
>
> Yes, I agree with you but then as I mentioned I think your payload
> calculation is wrong since you want instead max(sizeof(struct
> ec_response_vbnvcontext), sizeof(param->op)). Otherwise you are
> allocating 4 bytes more than needed.
Yeah, I can see that. If I do that though, max(...) would be less than
the size of the full params struct, and casting data to it could lead to
subtle bugs in the future. I can change it and add a comment mentioning
this, deal?
(...)
> with the needed changes, feel free to add my:
>
> Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Ok, thanks!
Emilio
next prev parent reply other threads:[~2015-09-15 20:24 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-14 12:34 [PATCH v2 0/3] platform/chrome: vboot context support Emilio López
2015-09-14 12:34 ` Emilio López
2015-09-14 12:34 ` Emilio López
2015-09-14 12:34 ` [PATCH v2 1/3] sysfs: Support is_visible() on binary attributes Emilio López
2015-09-14 12:34 ` Emilio López
2015-09-14 15:33 ` Guenter Roeck
2015-09-14 15:33 ` Guenter Roeck
2015-09-14 12:34 ` [PATCH v2 2/3] platform/chrome: Support reading/writing the vboot context Emilio López
2015-09-14 12:34 ` Emilio López
2015-09-15 13:47 ` Javier Martinez Canillas
2015-09-15 13:47 ` Javier Martinez Canillas
2015-09-15 19:16 ` Emilio López
2015-09-15 19:16 ` Emilio López
2015-09-15 19:43 ` Javier Martinez Canillas
2015-09-15 19:43 ` Javier Martinez Canillas
2015-09-15 20:22 ` Greg Kroah-Hartman
2015-09-15 20:22 ` Greg Kroah-Hartman
[not found] ` <CABxcv=mnCNQPtVBU4tPOWD237_-RojoW+RVLTj+F=3PHbUHfQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-15 20:24 ` Emilio López [this message]
2015-09-15 20:24 ` Emilio López
2015-09-15 20:24 ` Emilio López
2015-09-15 22:26 ` Javier Martinez Canillas
2015-09-15 22:26 ` Javier Martinez Canillas
2015-09-14 12:34 ` [PATCH v2 3/3] ARM: dts: Enable EC vboot context support on Peach boards Emilio López
2015-09-14 12:34 ` Emilio López
2015-09-15 0:00 ` Krzysztof Kozlowski
2015-09-15 0:00 ` Krzysztof Kozlowski
2015-09-15 13:49 ` Javier Martinez Canillas
2015-09-15 13:49 ` Javier Martinez Canillas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55F87E92.8000609@collabora.co.uk \
--to=emilio.lopez-zgy8ohtn/8ppycu2f3hruq@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=javier-0uQlZySMnqxg9hUCZPvPmw@public.gmane.org \
--cc=k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.