Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-21 Thread Jiang Liu
On 2015/1/21 22:47, Rafael J. Wysocki wrote:
> On Wednesday, January 21, 2015 01:37:40 PM Jiang Liu wrote:
>> On 2015/1/21 8:53, Rafael J. Wysocki wrote:
>>> On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
 Add field offset to struct resource_list_entry to host address space
 translation offset so it could be used to represent bridge resources.

 Signed-off-by: Jiang Liu 
 ---
  drivers/acpi/resource.c |   13 -
  include/linux/acpi.h|1 +
  2 files changed, 9 insertions(+), 5 deletions(-)

 diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
 index 16d334a1ee25..54204ac94f8e 100644
 --- a/drivers/acpi/resource.c
 +++ b/drivers/acpi/resource.c
 @@ -462,7 +462,8 @@ struct res_proc_context {
  };
  
  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
 - struct res_proc_context *c)
 + struct res_proc_context *c,
 + resource_size_t offset)
  {
struct resource_list_entry *rentry;
  
 @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
return AE_NO_MEMORY;
}
rentry->res = *r;
 +  rentry->offset = offset;
list_add_tail(>node, c->list);
c->count++;
return AE_OK;
 @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
 void *context)
  {
 +  resource_size_t offset = 0;
struct res_proc_context *c = context;
struct resource r;
int i;
 @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
 acpi_resource *ares,
  
if (acpi_dev_resource_memory(ares, )
|| acpi_dev_resource_io(ares, )
 -  || acpi_dev_resource_address_space(ares, , NULL)
 -  || acpi_dev_resource_ext_address_space(ares, , NULL))
 -  return acpi_dev_new_resource_entry(, c);
 +  || acpi_dev_resource_address_space(ares, , )
 +  || acpi_dev_resource_ext_address_space(ares, , ))
 +  return acpi_dev_new_resource_entry(, c, offset);
  
for (i = 0; acpi_dev_resource_interrupt(ares, i, ); i++) {
acpi_status status;
  
 -  status = acpi_dev_new_resource_entry(, c);
 +  status = acpi_dev_new_resource_entry(, c, 0);
if (ACPI_FAILURE(status))
return status;
}
 diff --git a/include/linux/acpi.h b/include/linux/acpi.h
 index bde8119f5897..fea78e772450 100644
 --- a/include/linux/acpi.h
 +++ b/include/linux/acpi.h
 @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
 *ares, int index,
  struct resource_list_entry {
struct list_head node;
struct resource res;
 +  resource_size_t offset;
>>>
>>> Well, so instead of adding the offset thing here and there, wouldn't it be
>>> cleaner to introduce something like
>>>
>>> struct ext_resource {
>>> sturct resource res;
>>> resource_size_t offset;
>>> };
>>>
>>> and use struct ext_resource instead of struct resource where an offset is 
>>> needed?
>>>
>>> Just a thought ...
>> Hi Rafael,
>>  Following patches will achieve this by sharing struct 
>> resource_list_entry.
> 
> Well, yes, they will partially, but that still won't avoid the need to pass
> offset (or pointers to that) to several functions separately if I'm not
> mistaken.  Which is kind of ugly.
Hi Rafael,
Sorry, I missed your point with last reply. I have the basic
idea about how to follow your suggestion now, will do it in next
version.
Regards,
Gerry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-21 Thread Rafael J. Wysocki
On Wednesday, January 21, 2015 01:37:40 PM Jiang Liu wrote:
> On 2015/1/21 8:53, Rafael J. Wysocki wrote:
> > On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
> >> Add field offset to struct resource_list_entry to host address space
> >> translation offset so it could be used to represent bridge resources.
> >>
> >> Signed-off-by: Jiang Liu 
> >> ---
> >>  drivers/acpi/resource.c |   13 -
> >>  include/linux/acpi.h|1 +
> >>  2 files changed, 9 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
> >> index 16d334a1ee25..54204ac94f8e 100644
> >> --- a/drivers/acpi/resource.c
> >> +++ b/drivers/acpi/resource.c
> >> @@ -462,7 +462,8 @@ struct res_proc_context {
> >>  };
> >>  
> >>  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
> >> - struct res_proc_context *c)
> >> + struct res_proc_context *c,
> >> + resource_size_t offset)
> >>  {
> >>struct resource_list_entry *rentry;
> >>  
> >> @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
> >> resource *r,
> >>return AE_NO_MEMORY;
> >>}
> >>rentry->res = *r;
> >> +  rentry->offset = offset;
> >>list_add_tail(>node, c->list);
> >>c->count++;
> >>return AE_OK;
> >> @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
> >> resource *r,
> >>  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
> >> void *context)
> >>  {
> >> +  resource_size_t offset = 0;
> >>struct res_proc_context *c = context;
> >>struct resource r;
> >>int i;
> >> @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
> >> acpi_resource *ares,
> >>  
> >>if (acpi_dev_resource_memory(ares, )
> >>|| acpi_dev_resource_io(ares, )
> >> -  || acpi_dev_resource_address_space(ares, , NULL)
> >> -  || acpi_dev_resource_ext_address_space(ares, , NULL))
> >> -  return acpi_dev_new_resource_entry(, c);
> >> +  || acpi_dev_resource_address_space(ares, , )
> >> +  || acpi_dev_resource_ext_address_space(ares, , ))
> >> +  return acpi_dev_new_resource_entry(, c, offset);
> >>  
> >>for (i = 0; acpi_dev_resource_interrupt(ares, i, ); i++) {
> >>acpi_status status;
> >>  
> >> -  status = acpi_dev_new_resource_entry(, c);
> >> +  status = acpi_dev_new_resource_entry(, c, 0);
> >>if (ACPI_FAILURE(status))
> >>return status;
> >>}
> >> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> >> index bde8119f5897..fea78e772450 100644
> >> --- a/include/linux/acpi.h
> >> +++ b/include/linux/acpi.h
> >> @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
> >> *ares, int index,
> >>  struct resource_list_entry {
> >>struct list_head node;
> >>struct resource res;
> >> +  resource_size_t offset;
> > 
> > Well, so instead of adding the offset thing here and there, wouldn't it be
> > cleaner to introduce something like
> > 
> > struct ext_resource {
> > sturct resource res;
> > resource_size_t offset;
> > };
> > 
> > and use struct ext_resource instead of struct resource where an offset is 
> > needed?
> > 
> > Just a thought ...
> Hi Rafael,
>   Following patches will achieve this by sharing struct 
> resource_list_entry.

Well, yes, they will partially, but that still won't avoid the need to pass
offset (or pointers to that) to several functions separately if I'm not
mistaken.  Which is kind of ugly.


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-21 Thread Jiang Liu
On 2015/1/21 22:47, Rafael J. Wysocki wrote:
 On Wednesday, January 21, 2015 01:37:40 PM Jiang Liu wrote:
 On 2015/1/21 8:53, Rafael J. Wysocki wrote:
 On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
 Add field offset to struct resource_list_entry to host address space
 translation offset so it could be used to represent bridge resources.

 Signed-off-by: Jiang Liu jiang@linux.intel.com
 ---
  drivers/acpi/resource.c |   13 -
  include/linux/acpi.h|1 +
  2 files changed, 9 insertions(+), 5 deletions(-)

 diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
 index 16d334a1ee25..54204ac94f8e 100644
 --- a/drivers/acpi/resource.c
 +++ b/drivers/acpi/resource.c
 @@ -462,7 +462,8 @@ struct res_proc_context {
  };
  
  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
 - struct res_proc_context *c)
 + struct res_proc_context *c,
 + resource_size_t offset)
  {
struct resource_list_entry *rentry;
  
 @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
return AE_NO_MEMORY;
}
rentry-res = *r;
 +  rentry-offset = offset;
list_add_tail(rentry-node, c-list);
c-count++;
return AE_OK;
 @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
 void *context)
  {
 +  resource_size_t offset = 0;
struct res_proc_context *c = context;
struct resource r;
int i;
 @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
 acpi_resource *ares,
  
if (acpi_dev_resource_memory(ares, r)
|| acpi_dev_resource_io(ares, r)
 -  || acpi_dev_resource_address_space(ares, r, NULL)
 -  || acpi_dev_resource_ext_address_space(ares, r, NULL))
 -  return acpi_dev_new_resource_entry(r, c);
 +  || acpi_dev_resource_address_space(ares, r, offset)
 +  || acpi_dev_resource_ext_address_space(ares, r, offset))
 +  return acpi_dev_new_resource_entry(r, c, offset);
  
for (i = 0; acpi_dev_resource_interrupt(ares, i, r); i++) {
acpi_status status;
  
 -  status = acpi_dev_new_resource_entry(r, c);
 +  status = acpi_dev_new_resource_entry(r, c, 0);
if (ACPI_FAILURE(status))
return status;
}
 diff --git a/include/linux/acpi.h b/include/linux/acpi.h
 index bde8119f5897..fea78e772450 100644
 --- a/include/linux/acpi.h
 +++ b/include/linux/acpi.h
 @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
 *ares, int index,
  struct resource_list_entry {
struct list_head node;
struct resource res;
 +  resource_size_t offset;

 Well, so instead of adding the offset thing here and there, wouldn't it be
 cleaner to introduce something like

 struct ext_resource {
 sturct resource res;
 resource_size_t offset;
 };

 and use struct ext_resource instead of struct resource where an offset is 
 needed?

 Just a thought ...
 Hi Rafael,
  Following patches will achieve this by sharing struct 
 resource_list_entry.
 
 Well, yes, they will partially, but that still won't avoid the need to pass
 offset (or pointers to that) to several functions separately if I'm not
 mistaken.  Which is kind of ugly.
Hi Rafael,
Sorry, I missed your point with last reply. I have the basic
idea about how to follow your suggestion now, will do it in next
version.
Regards,
Gerry
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-21 Thread Rafael J. Wysocki
On Wednesday, January 21, 2015 01:37:40 PM Jiang Liu wrote:
 On 2015/1/21 8:53, Rafael J. Wysocki wrote:
  On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
  Add field offset to struct resource_list_entry to host address space
  translation offset so it could be used to represent bridge resources.
 
  Signed-off-by: Jiang Liu jiang@linux.intel.com
  ---
   drivers/acpi/resource.c |   13 -
   include/linux/acpi.h|1 +
   2 files changed, 9 insertions(+), 5 deletions(-)
 
  diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
  index 16d334a1ee25..54204ac94f8e 100644
  --- a/drivers/acpi/resource.c
  +++ b/drivers/acpi/resource.c
  @@ -462,7 +462,8 @@ struct res_proc_context {
   };
   
   static acpi_status acpi_dev_new_resource_entry(struct resource *r,
  - struct res_proc_context *c)
  + struct res_proc_context *c,
  + resource_size_t offset)
   {
 struct resource_list_entry *rentry;
   
  @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
  resource *r,
 return AE_NO_MEMORY;
 }
 rentry-res = *r;
  +  rentry-offset = offset;
 list_add_tail(rentry-node, c-list);
 c-count++;
 return AE_OK;
  @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
  resource *r,
   static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
  void *context)
   {
  +  resource_size_t offset = 0;
 struct res_proc_context *c = context;
 struct resource r;
 int i;
  @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
  acpi_resource *ares,
   
 if (acpi_dev_resource_memory(ares, r)
 || acpi_dev_resource_io(ares, r)
  -  || acpi_dev_resource_address_space(ares, r, NULL)
  -  || acpi_dev_resource_ext_address_space(ares, r, NULL))
  -  return acpi_dev_new_resource_entry(r, c);
  +  || acpi_dev_resource_address_space(ares, r, offset)
  +  || acpi_dev_resource_ext_address_space(ares, r, offset))
  +  return acpi_dev_new_resource_entry(r, c, offset);
   
 for (i = 0; acpi_dev_resource_interrupt(ares, i, r); i++) {
 acpi_status status;
   
  -  status = acpi_dev_new_resource_entry(r, c);
  +  status = acpi_dev_new_resource_entry(r, c, 0);
 if (ACPI_FAILURE(status))
 return status;
 }
  diff --git a/include/linux/acpi.h b/include/linux/acpi.h
  index bde8119f5897..fea78e772450 100644
  --- a/include/linux/acpi.h
  +++ b/include/linux/acpi.h
  @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
  *ares, int index,
   struct resource_list_entry {
 struct list_head node;
 struct resource res;
  +  resource_size_t offset;
  
  Well, so instead of adding the offset thing here and there, wouldn't it be
  cleaner to introduce something like
  
  struct ext_resource {
  sturct resource res;
  resource_size_t offset;
  };
  
  and use struct ext_resource instead of struct resource where an offset is 
  needed?
  
  Just a thought ...
 Hi Rafael,
   Following patches will achieve this by sharing struct 
 resource_list_entry.

Well, yes, they will partially, but that still won't avoid the need to pass
offset (or pointers to that) to several functions separately if I'm not
mistaken.  Which is kind of ugly.


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-20 Thread Jiang Liu
On 2015/1/21 8:53, Rafael J. Wysocki wrote:
> On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
>> Add field offset to struct resource_list_entry to host address space
>> translation offset so it could be used to represent bridge resources.
>>
>> Signed-off-by: Jiang Liu 
>> ---
>>  drivers/acpi/resource.c |   13 -
>>  include/linux/acpi.h|1 +
>>  2 files changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
>> index 16d334a1ee25..54204ac94f8e 100644
>> --- a/drivers/acpi/resource.c
>> +++ b/drivers/acpi/resource.c
>> @@ -462,7 +462,8 @@ struct res_proc_context {
>>  };
>>  
>>  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
>> -   struct res_proc_context *c)
>> +   struct res_proc_context *c,
>> +   resource_size_t offset)
>>  {
>>  struct resource_list_entry *rentry;
>>  
>> @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
>> resource *r,
>>  return AE_NO_MEMORY;
>>  }
>>  rentry->res = *r;
>> +rentry->offset = offset;
>>  list_add_tail(>node, c->list);
>>  c->count++;
>>  return AE_OK;
>> @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
>> resource *r,
>>  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
>>   void *context)
>>  {
>> +resource_size_t offset = 0;
>>  struct res_proc_context *c = context;
>>  struct resource r;
>>  int i;
>> @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
>> acpi_resource *ares,
>>  
>>  if (acpi_dev_resource_memory(ares, )
>>  || acpi_dev_resource_io(ares, )
>> -|| acpi_dev_resource_address_space(ares, , NULL)
>> -|| acpi_dev_resource_ext_address_space(ares, , NULL))
>> -return acpi_dev_new_resource_entry(, c);
>> +|| acpi_dev_resource_address_space(ares, , )
>> +|| acpi_dev_resource_ext_address_space(ares, , ))
>> +return acpi_dev_new_resource_entry(, c, offset);
>>  
>>  for (i = 0; acpi_dev_resource_interrupt(ares, i, ); i++) {
>>  acpi_status status;
>>  
>> -status = acpi_dev_new_resource_entry(, c);
>> +status = acpi_dev_new_resource_entry(, c, 0);
>>  if (ACPI_FAILURE(status))
>>  return status;
>>  }
>> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
>> index bde8119f5897..fea78e772450 100644
>> --- a/include/linux/acpi.h
>> +++ b/include/linux/acpi.h
>> @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
>> *ares, int index,
>>  struct resource_list_entry {
>>  struct list_head node;
>>  struct resource res;
>> +resource_size_t offset;
> 
> Well, so instead of adding the offset thing here and there, wouldn't it be
> cleaner to introduce something like
> 
>   struct ext_resource {
>   sturct resource res;
>   resource_size_t offset;
>   };
> 
> and use struct ext_resource instead of struct resource where an offset is 
> needed?
> 
> Just a thought ...
Hi Rafael,
Following patches will achieve this by sharing struct 
resource_list_entry.
Regards!
Gerry
> 
>>  };
>>  
>>  void acpi_dev_free_resource_list(struct list_head *list);
>>
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-20 Thread Rafael J. Wysocki
On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
> Add field offset to struct resource_list_entry to host address space
> translation offset so it could be used to represent bridge resources.
> 
> Signed-off-by: Jiang Liu 
> ---
>  drivers/acpi/resource.c |   13 -
>  include/linux/acpi.h|1 +
>  2 files changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
> index 16d334a1ee25..54204ac94f8e 100644
> --- a/drivers/acpi/resource.c
> +++ b/drivers/acpi/resource.c
> @@ -462,7 +462,8 @@ struct res_proc_context {
>  };
>  
>  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
> -struct res_proc_context *c)
> +struct res_proc_context *c,
> +resource_size_t offset)
>  {
>   struct resource_list_entry *rentry;
>  
> @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
> resource *r,
>   return AE_NO_MEMORY;
>   }
>   rentry->res = *r;
> + rentry->offset = offset;
>   list_add_tail(>node, c->list);
>   c->count++;
>   return AE_OK;
> @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
> resource *r,
>  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
>void *context)
>  {
> + resource_size_t offset = 0;
>   struct res_proc_context *c = context;
>   struct resource r;
>   int i;
> @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
> acpi_resource *ares,
>  
>   if (acpi_dev_resource_memory(ares, )
>   || acpi_dev_resource_io(ares, )
> - || acpi_dev_resource_address_space(ares, , NULL)
> - || acpi_dev_resource_ext_address_space(ares, , NULL))
> - return acpi_dev_new_resource_entry(, c);
> + || acpi_dev_resource_address_space(ares, , )
> + || acpi_dev_resource_ext_address_space(ares, , ))
> + return acpi_dev_new_resource_entry(, c, offset);
>  
>   for (i = 0; acpi_dev_resource_interrupt(ares, i, ); i++) {
>   acpi_status status;
>  
> - status = acpi_dev_new_resource_entry(, c);
> + status = acpi_dev_new_resource_entry(, c, 0);
>   if (ACPI_FAILURE(status))
>   return status;
>   }
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index bde8119f5897..fea78e772450 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
> *ares, int index,
>  struct resource_list_entry {
>   struct list_head node;
>   struct resource res;
> + resource_size_t offset;

Well, so instead of adding the offset thing here and there, wouldn't it be
cleaner to introduce something like

struct ext_resource {
sturct resource res;
resource_size_t offset;
};

and use struct ext_resource instead of struct resource where an offset is 
needed?

Just a thought ...

>  };
>  
>  void acpi_dev_free_resource_list(struct list_head *list);
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-20 Thread Rafael J. Wysocki
On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
 Add field offset to struct resource_list_entry to host address space
 translation offset so it could be used to represent bridge resources.
 
 Signed-off-by: Jiang Liu jiang@linux.intel.com
 ---
  drivers/acpi/resource.c |   13 -
  include/linux/acpi.h|1 +
  2 files changed, 9 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
 index 16d334a1ee25..54204ac94f8e 100644
 --- a/drivers/acpi/resource.c
 +++ b/drivers/acpi/resource.c
 @@ -462,7 +462,8 @@ struct res_proc_context {
  };
  
  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
 -struct res_proc_context *c)
 +struct res_proc_context *c,
 +resource_size_t offset)
  {
   struct resource_list_entry *rentry;
  
 @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
   return AE_NO_MEMORY;
   }
   rentry-res = *r;
 + rentry-offset = offset;
   list_add_tail(rentry-node, c-list);
   c-count++;
   return AE_OK;
 @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
void *context)
  {
 + resource_size_t offset = 0;
   struct res_proc_context *c = context;
   struct resource r;
   int i;
 @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
 acpi_resource *ares,
  
   if (acpi_dev_resource_memory(ares, r)
   || acpi_dev_resource_io(ares, r)
 - || acpi_dev_resource_address_space(ares, r, NULL)
 - || acpi_dev_resource_ext_address_space(ares, r, NULL))
 - return acpi_dev_new_resource_entry(r, c);
 + || acpi_dev_resource_address_space(ares, r, offset)
 + || acpi_dev_resource_ext_address_space(ares, r, offset))
 + return acpi_dev_new_resource_entry(r, c, offset);
  
   for (i = 0; acpi_dev_resource_interrupt(ares, i, r); i++) {
   acpi_status status;
  
 - status = acpi_dev_new_resource_entry(r, c);
 + status = acpi_dev_new_resource_entry(r, c, 0);
   if (ACPI_FAILURE(status))
   return status;
   }
 diff --git a/include/linux/acpi.h b/include/linux/acpi.h
 index bde8119f5897..fea78e772450 100644
 --- a/include/linux/acpi.h
 +++ b/include/linux/acpi.h
 @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
 *ares, int index,
  struct resource_list_entry {
   struct list_head node;
   struct resource res;
 + resource_size_t offset;

Well, so instead of adding the offset thing here and there, wouldn't it be
cleaner to introduce something like

struct ext_resource {
sturct resource res;
resource_size_t offset;
};

and use struct ext_resource instead of struct resource where an offset is 
needed?

Just a thought ...

  };
  
  void acpi_dev_free_resource_list(struct list_head *list);
 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC Patch 15/19] ACPI: Add field offset to struct resource_list_entry

2015-01-20 Thread Jiang Liu
On 2015/1/21 8:53, Rafael J. Wysocki wrote:
 On Thursday, January 08, 2015 10:33:02 AM Jiang Liu wrote:
 Add field offset to struct resource_list_entry to host address space
 translation offset so it could be used to represent bridge resources.

 Signed-off-by: Jiang Liu jiang@linux.intel.com
 ---
  drivers/acpi/resource.c |   13 -
  include/linux/acpi.h|1 +
  2 files changed, 9 insertions(+), 5 deletions(-)

 diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
 index 16d334a1ee25..54204ac94f8e 100644
 --- a/drivers/acpi/resource.c
 +++ b/drivers/acpi/resource.c
 @@ -462,7 +462,8 @@ struct res_proc_context {
  };
  
  static acpi_status acpi_dev_new_resource_entry(struct resource *r,
 -   struct res_proc_context *c)
 +   struct res_proc_context *c,
 +   resource_size_t offset)
  {
  struct resource_list_entry *rentry;
  
 @@ -472,6 +473,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
  return AE_NO_MEMORY;
  }
  rentry-res = *r;
 +rentry-offset = offset;
  list_add_tail(rentry-node, c-list);
  c-count++;
  return AE_OK;
 @@ -480,6 +482,7 @@ static acpi_status acpi_dev_new_resource_entry(struct 
 resource *r,
  static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
   void *context)
  {
 +resource_size_t offset = 0;
  struct res_proc_context *c = context;
  struct resource r;
  int i;
 @@ -500,14 +503,14 @@ static acpi_status acpi_dev_process_resource(struct 
 acpi_resource *ares,
  
  if (acpi_dev_resource_memory(ares, r)
  || acpi_dev_resource_io(ares, r)
 -|| acpi_dev_resource_address_space(ares, r, NULL)
 -|| acpi_dev_resource_ext_address_space(ares, r, NULL))
 -return acpi_dev_new_resource_entry(r, c);
 +|| acpi_dev_resource_address_space(ares, r, offset)
 +|| acpi_dev_resource_ext_address_space(ares, r, offset))
 +return acpi_dev_new_resource_entry(r, c, offset);
  
  for (i = 0; acpi_dev_resource_interrupt(ares, i, r); i++) {
  acpi_status status;
  
 -status = acpi_dev_new_resource_entry(r, c);
 +status = acpi_dev_new_resource_entry(r, c, 0);
  if (ACPI_FAILURE(status))
  return status;
  }
 diff --git a/include/linux/acpi.h b/include/linux/acpi.h
 index bde8119f5897..fea78e772450 100644
 --- a/include/linux/acpi.h
 +++ b/include/linux/acpi.h
 @@ -300,6 +300,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource 
 *ares, int index,
  struct resource_list_entry {
  struct list_head node;
  struct resource res;
 +resource_size_t offset;
 
 Well, so instead of adding the offset thing here and there, wouldn't it be
 cleaner to introduce something like
 
   struct ext_resource {
   sturct resource res;
   resource_size_t offset;
   };
 
 and use struct ext_resource instead of struct resource where an offset is 
 needed?
 
 Just a thought ...
Hi Rafael,
Following patches will achieve this by sharing struct 
resource_list_entry.
Regards!
Gerry
 
  };
  
  void acpi_dev_free_resource_list(struct list_head *list);

 
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/