2021-04-16 19:22:57

by Bhaumik Bhatt

[permalink] [raw]
Subject: [PATCH v1 3/6] bus: mhi: Add MMIO region length to controller structure

Make controller driver specify the MMIO register region length
for range checking of BHI or BHIe space. This can help validate
that offsets are in acceptable memory region or not and avoid any
boot-up issues due to BHI or BHIe memory accesses.

Signed-off-by: Bhaumik Bhatt <[email protected]>
---
include/linux/mhi.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/include/linux/mhi.h b/include/linux/mhi.h
index 944aa3a..ad53b24 100644
--- a/include/linux/mhi.h
+++ b/include/linux/mhi.h
@@ -293,6 +293,7 @@ struct mhi_controller_config {
* @mhi_dev: MHI device instance for the controller
* @debugfs_dentry: MHI controller debugfs directory
* @regs: Base address of MHI MMIO register space (required)
+ * @reg_len: Length of the MHI MMIO region (required)
* @bhi: Points to base of MHI BHI register space
* @bhie: Points to base of MHI BHIe register space
* @wake_db: MHI WAKE doorbell register address
@@ -375,6 +376,7 @@ struct mhi_controller {
struct mhi_device *mhi_dev;
struct dentry *debugfs_dentry;
void __iomem *regs;
+ size_t reg_len;
void __iomem *bhi;
void __iomem *bhie;
void __iomem *wake_db;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


2021-05-04 17:28:49

by Jeffrey Hugo

[permalink] [raw]
Subject: Re: [PATCH v1 3/6] bus: mhi: Add MMIO region length to controller structure

On 4/16/2021 12:47 PM, Bhaumik Bhatt wrote:
> Make controller driver specify the MMIO register region length
> for range checking of BHI or BHIe space. This can help validate
> that offsets are in acceptable memory region or not and avoid any
> boot-up issues due to BHI or BHIe memory accesses.
>
> Signed-off-by: Bhaumik Bhatt <[email protected]>
> ---
> include/linux/mhi.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
> index 944aa3a..ad53b24 100644
> --- a/include/linux/mhi.h
> +++ b/include/linux/mhi.h
> @@ -293,6 +293,7 @@ struct mhi_controller_config {
> * @mhi_dev: MHI device instance for the controller
> * @debugfs_dentry: MHI controller debugfs directory
> * @regs: Base address of MHI MMIO register space (required)
> + * @reg_len: Length of the MHI MMIO region (required)
> * @bhi: Points to base of MHI BHI register space
> * @bhie: Points to base of MHI BHIe register space
> * @wake_db: MHI WAKE doorbell register address
> @@ -375,6 +376,7 @@ struct mhi_controller {
> struct mhi_device *mhi_dev;
> struct dentry *debugfs_dentry;
> void __iomem *regs;
> + size_t reg_len;

Didn't Mani make sure this struct was packed using pahole when things
were first upstreamed? Feels like sticking this in the middle of a
bunch of void * entries will add some padding. Am I wrong?

> void __iomem *bhi;
> void __iomem *bhie;
> void __iomem *wake_db;
>

2021-05-04 23:39:48

by Bhaumik Bhatt

[permalink] [raw]
Subject: Re: [PATCH v1 3/6] bus: mhi: Add MMIO region length to controller structure

Hi Jeff,

On 2021-05-04 10:28 AM, Jeffrey Hugo wrote:
> On 4/16/2021 12:47 PM, Bhaumik Bhatt wrote:
>> Make controller driver specify the MMIO register region length
>> for range checking of BHI or BHIe space. This can help validate
>> that offsets are in acceptable memory region or not and avoid any
>> boot-up issues due to BHI or BHIe memory accesses.
>>
>> Signed-off-by: Bhaumik Bhatt <[email protected]>
>> ---
>> include/linux/mhi.h | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/include/linux/mhi.h b/include/linux/mhi.h
>> index 944aa3a..ad53b24 100644
>> --- a/include/linux/mhi.h
>> +++ b/include/linux/mhi.h
>> @@ -293,6 +293,7 @@ struct mhi_controller_config {
>> * @mhi_dev: MHI device instance for the controller
>> * @debugfs_dentry: MHI controller debugfs directory
>> * @regs: Base address of MHI MMIO register space (required)
>> + * @reg_len: Length of the MHI MMIO region (required)
>> * @bhi: Points to base of MHI BHI register space
>> * @bhie: Points to base of MHI BHIe register space
>> * @wake_db: MHI WAKE doorbell register address
>> @@ -375,6 +376,7 @@ struct mhi_controller {
>> struct mhi_device *mhi_dev;
>> struct dentry *debugfs_dentry;
>> void __iomem *regs;
>> + size_t reg_len;
>
> Didn't Mani make sure this struct was packed using pahole when things
> were first upstreamed? Feels like sticking this in the middle of a
> bunch of void * entries will add some padding. Am I wrong?
>
OK. I missed out on this detail. I can move this size_t entry in v2.
>> void __iomem *bhi;
>> void __iomem *bhie;
>> void __iomem *wake_db;
>>

Thanks,
Bhaumik
---
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project