RE: [PATCH 1/4] ACPICA: Remove use of caches in controlled way

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Problems with deletion of the DdbHandle object type. I think we have it under control, thanks.


>-----Original Message-----
>From: Alexey Starikovskiy [mailto:aystarik@xxxxxxxxx]
>Sent: Tuesday, May 12, 2009 11:54 AM
>To: Moore, Robert
>Cc: Lin, Ming M; Alexey Starikovskiy; Linux-acpi@xxxxxxxxxxxxxxx
>Subject: Re: [PATCH 1/4] ACPICA: Remove use of caches in controlled way
>
>What bugs are you seeing? May I be of any help?
>
>Regards,
>Alex.
>
>
>Moore, Robert wrote:
>> Removing the cache has exposed a couple of bugs that we are currently
>working on. We need to make sure that we pass the ASLTS suite before the
>code is integrated/released.
>>
>> Bob
>>
>>
>>
>>> -----Original Message-----
>>> From: Lin, Ming M
>>> Sent: Monday, May 11, 2009 1:14 AM
>>> To: Alexey Starikovskiy
>>> Cc: Moore, Robert; Linux-acpi@xxxxxxxxxxxxxxx
>>> Subject: Re: [PATCH 1/4] ACPICA: Remove use of caches in controlled way
>>>
>>> Hi, Alexey
>>>
>>> The attachment are the linuxized version of your patches.
>>> I added another patch (the 4th) to remove linux specific cache code.
>>>
>>> The patches are applied on top of linux-acpi-2.6/acpica branch.
>>>
>>> Do you have any suggestion what data I should collect to verify if these
>>> patches have a performance gain?
>>>
>>> Lin Ming
>>>
>>> On Thu, 2009-05-07 at 23:52 +0800, Alexey Starikovskiy wrote:
>>>
>>>> Signed-off-by: Alexey Starikovskiy <astarikovskiy@xxxxxxx>
>>>> ---
>>>>
>>>>  source/components/utilities/utcache.c |   99 +++++--------------------
>--
>>>>
>>> ------
>>>
>>>>  1 files changed, 14 insertions(+), 85 deletions(-)
>>>>
>>>>
>>>> diff --git a/source/components/utilities/utcache.c
>>>>
>>> b/source/components/utilities/utcache.c
>>>
>>>> index aabc0a2..d08d520 100644
>>>> --- a/source/components/utilities/utcache.c
>>>> +++ b/source/components/utilities/utcache.c
>>>> @@ -287,49 +287,15 @@ AcpiOsReleaseObject (
>>>>      ACPI_MEMORY_LIST        *Cache,
>>>>      void                    *Object)
>>>>  {
>>>> -    ACPI_STATUS             Status;
>>>> -
>>>> -
>>>>      ACPI_FUNCTION_ENTRY ();
>>>>
>>>> -
>>>>      if (!Cache || !Object)
>>>>      {
>>>>          return (AE_BAD_PARAMETER);
>>>>      }
>>>>
>>>> -    /* If cache is full, just free this object */
>>>> -
>>>> -    if (Cache->CurrentDepth >= Cache->MaxDepth)
>>>> -    {
>>>> -        ACPI_FREE (Object);
>>>> -        ACPI_MEM_TRACKING (Cache->TotalFreed++);
>>>> -    }
>>>> -
>>>> -    /* Otherwise put this object back into the cache */
>>>> -
>>>> -    else
>>>> -    {
>>>> -        Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES);
>>>> -        if (ACPI_FAILURE (Status))
>>>> -        {
>>>> -            return (Status);
>>>> -        }
>>>> -
>>>> -        /* Mark the object as cached */
>>>> -
>>>> -        ACPI_MEMSET (Object, 0xCA, Cache->ObjectSize);
>>>> -        ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_CACHED);
>>>> -
>>>> -        /* Put the object at the head of the cache list */
>>>> -
>>>> -        * (ACPI_CAST_INDIRECT_PTR (char,
>>>> -            &(((char *) Object)[Cache->LinkOffset]))) = Cache-
>>ListHead;
>>>> -        Cache->ListHead = Object;
>>>> -        Cache->CurrentDepth++;
>>>> -
>>>> -        (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES);
>>>> -    }
>>>> +    ACPI_FREE (Object);
>>>> +    ACPI_MEM_TRACKING (Cache->TotalFreed++);
>>>>
>>>>      return (AE_OK);
>>>>  }
>>>> @@ -353,8 +319,6 @@ AcpiOsAcquireObject (
>>>>      ACPI_MEMORY_LIST        *Cache)
>>>>  {
>>>>      ACPI_STATUS             Status;
>>>> -    void                    *Object;
>>>> -
>>>>
>>>>      ACPI_FUNCTION_NAME (OsAcquireObject);
>>>>
>>>> @@ -372,61 +336,26 @@ AcpiOsAcquireObject (
>>>>
>>>>      ACPI_MEM_TRACKING (Cache->Requests++);
>>>>
>>>> -    /* Check the cache first */
>>>> +    /* The cache is empty, create a new object */
>>>>
>>>> -    if (Cache->ListHead)
>>>> -    {
>>>> -        /* There is an object available, use it */
>>>> -
>>>> -        Object = Cache->ListHead;
>>>> -        Cache->ListHead = *(ACPI_CAST_INDIRECT_PTR (char,
>>>> -                                &(((char *) Object)[Cache-
>>>> LinkOffset])));
>>>> -
>>>> -        Cache->CurrentDepth--;
>>>> -
>>>> -        ACPI_MEM_TRACKING (Cache->Hits++);
>>>> -        ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
>>>> -            "Object %p from %s cache\n", Object, Cache->ListName));
>>>> -
>>>> -        Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES);
>>>> -        if (ACPI_FAILURE (Status))
>>>> -        {
>>>> -            return (NULL);
>>>> -        }
>>>> -
>>>> -        /* Clear (zero) the previously used Object */
>>>> -
>>>> -        ACPI_MEMSET (Object, 0, Cache->ObjectSize);
>>>> -    }
>>>> -    else
>>>> -    {
>>>> -        /* The cache is empty, create a new object */
>>>> -
>>>> -        ACPI_MEM_TRACKING (Cache->TotalAllocated++);
>>>> +    ACPI_MEM_TRACKING (Cache->TotalAllocated++);
>>>>
>>>>  #ifdef ACPI_DBG_TRACK_ALLOCATIONS
>>>> -        if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache-
>>>> MaxOccupied)
>>>> -        {
>>>> -            Cache->MaxOccupied = Cache->TotalAllocated - Cache-
>>>> TotalFreed;
>>>> -        }
>>>> +    if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache-
>>>> MaxOccupied)
>>>> +    {
>>>> +        Cache->MaxOccupied = Cache->TotalAllocated - Cache-
>>TotalFreed;
>>>> +    }
>>>>  #endif
>>>>
>>>> -        /* Avoid deadlock with ACPI_ALLOCATE_ZEROED */
>>>> +    /* Avoid deadlock with ACPI_ALLOCATE_ZEROED */
>>>>
>>>> -        Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES);
>>>> -        if (ACPI_FAILURE (Status))
>>>> -        {
>>>> -            return (NULL);
>>>> -        }
>>>> -
>>>> -        Object = ACPI_ALLOCATE_ZEROED (Cache->ObjectSize);
>>>> -        if (!Object)
>>>> -        {
>>>> -            return (NULL);
>>>> -        }
>>>> +    Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES);
>>>> +    if (ACPI_FAILURE (Status))
>>>> +    {
>>>> +        return (NULL);
>>>>      }
>>>>
>>>> -    return (Object);
>>>> +    return ACPI_ALLOCATE_ZEROED (Cache->ObjectSize);
>>>>  }
>>>>  #endif /* ACPI_USE_LOCAL_CACHE */
>>>>
>>>>
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-acpi"
>in
>>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux