All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chunming Zhou <zhoucm1@amd.com>
To: "Christian König" <christian.koenig@amd.com>,
	"He, Roger" <Hongbo.He@amd.com>,
	"Zhou, David(ChunMing)" <David1.Zhou@amd.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] mm/swap: add function get_total_swap_pages to expose total_swap_pages
Date: Wed, 31 Jan 2018 16:52:07 +0800	[thread overview]
Message-ID: <72eb44ec-fb94-6b41-b660-f6e6f8f589fa@amd.com> (raw)
In-Reply-To: <b7dca756-b703-ff51-196c-832e5a43c63a@amd.com>

Discussed with Roger just now, we can try "void si_swapinfo(struct 
sysinfo *val)" function to get the total swap space.

Regards,

David Zhou


On 2018年01月31日 16:12, Christian König wrote:
> Yeah, indeed. But what we could do is to rely on a fixed limit like 
> the Intel driver does and I suggested before.
>
> E.g. don't copy anything into a shmemfile when there is only x MB of 
> swap space left.
>
> Roger can you test that approach once more with your fix for the OOM 
> issues in the page fault handler?
>
> Thanks,
> Christian.
>
> Am 31.01.2018 um 09:08 schrieb He, Roger:
>>     I think this patch isn't need at all. You can directly read 
>> total_swap_pages variable in TTM.
>>
>> Because the variable is not exported by EXPORT_SYMBOL_GPL. So direct 
>> using will result in:
>> "WARNING: "total_swap_pages" [drivers/gpu/drm/ttm/ttm.ko] undefined!".
>>
>> Thanks
>> Roger(Hongbo.He)
>> -----Original Message-----
>> From: dri-devel [mailto:dri-devel-bounces@lists.freedesktop.org] On 
>> Behalf Of Chunming Zhou
>> Sent: Wednesday, January 31, 2018 3:15 PM
>> To: He, Roger <Hongbo.He@amd.com>; dri-devel@lists.freedesktop.org
>> Cc: linux-mm@kvack.org; linux-kernel@vger.kernel.org; Koenig, 
>> Christian <Christian.Koenig@amd.com>
>> Subject: Re: [PATCH] mm/swap: add function get_total_swap_pages to 
>> expose total_swap_pages
>>
>> Hi Roger,
>>
>> I think this patch isn't need at all. You can directly read 
>> total_swap_pages variable in TTM. See the comment:
>>
>> /* protected with swap_lock. reading in vm_swap_full() doesn't need 
>> lock */ long total_swap_pages;
>>
>> there are many places using it directly, you just couldn't change its 
>> value. Reading it doesn't need lock.
>>
>>
>> Regards,
>>
>> David Zhou
>>
>>
>> On 2018年01月29日 16:29, Roger He wrote:
>>> ttm module needs it to determine its internal parameter setting.
>>>
>>> Signed-off-by: Roger He <Hongbo.He@amd.com>
>>> ---
>>>    include/linux/swap.h |  6 ++++++
>>>    mm/swapfile.c        | 15 +++++++++++++++
>>>    2 files changed, 21 insertions(+)
>>>
>>> diff --git a/include/linux/swap.h b/include/linux/swap.h
>>> index c2b8128..708d66f 100644
>>> --- a/include/linux/swap.h
>>> +++ b/include/linux/swap.h
>>> @@ -484,6 +484,7 @@ extern int try_to_free_swap(struct page *);
>>>    struct backing_dev_info;
>>>    extern int init_swap_address_space(unsigned int type, unsigned 
>>> long nr_pages);
>>>    extern void exit_swap_address_space(unsigned int type);
>>> +extern long get_total_swap_pages(void);
>>>       #else /* CONFIG_SWAP */
>>>    @@ -516,6 +517,11 @@ static inline void show_swap_cache_info(void)
>>>    {
>>>    }
>>>    +long get_total_swap_pages(void)
>>> +{
>>> +    return 0;
>>> +}
>>> +
>>>    #define free_swap_and_cache(e) ({(is_migration_entry(e) || 
>>> is_device_private_entry(e));})
>>>    #define swapcache_prepare(e) ({(is_migration_entry(e) || 
>>> is_device_private_entry(e));})
>>>    diff --git a/mm/swapfile.c b/mm/swapfile.c
>>> index 3074b02..a0062eb 100644
>>> --- a/mm/swapfile.c
>>> +++ b/mm/swapfile.c
>>> @@ -98,6 +98,21 @@ static atomic_t proc_poll_event = ATOMIC_INIT(0);
>>>       atomic_t nr_rotate_swap = ATOMIC_INIT(0);
>>>    +/*
>>> + * expose this value for others use
>>> + */
>>> +long get_total_swap_pages(void)
>>> +{
>>> +    long ret;
>>> +
>>> +    spin_lock(&swap_lock);
>>> +    ret = total_swap_pages;
>>> +    spin_unlock(&swap_lock);
>>> +
>>> +    return ret;
>>> +}
>>> +EXPORT_SYMBOL_GPL(get_total_swap_pages);
>>> +
>>>    static inline unsigned char swap_count(unsigned char ent)
>>>    {
>>>        return ent & ~SWAP_HAS_CACHE;    /* may include SWAP_HAS_CONT 
>>> flag */
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>

WARNING: multiple messages have this Message-ID (diff)
From: Chunming Zhou <zhoucm1@amd.com>
To: "Christian König" <christian.koenig@amd.com>,
	"He, Roger" <Hongbo.He@amd.com>,
	"Zhou, David(ChunMing)" <David1.Zhou@amd.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] mm/swap: add function get_total_swap_pages to expose total_swap_pages
Date: Wed, 31 Jan 2018 16:52:07 +0800	[thread overview]
Message-ID: <72eb44ec-fb94-6b41-b660-f6e6f8f589fa@amd.com> (raw)
In-Reply-To: <b7dca756-b703-ff51-196c-832e5a43c63a@amd.com>

Discussed with Roger just now, we can try "void si_swapinfo(struct 
sysinfo *val)" function to get the total swap space.

Regards,

David Zhou


On 2018a1'01ae??31ae?JPY 16:12, Christian KA?nig wrote:
> Yeah, indeed. But what we could do is to rely on a fixed limit like 
> the Intel driver does and I suggested before.
>
> E.g. don't copy anything into a shmemfile when there is only x MB of 
> swap space left.
>
> Roger can you test that approach once more with your fix for the OOM 
> issues in the page fault handler?
>
> Thanks,
> Christian.
>
> Am 31.01.2018 um 09:08 schrieb He, Roger:
>> A A A A I think this patch isn't need at all. You can directly read 
>> total_swap_pages variable in TTM.
>>
>> Because the variable is not exported by EXPORT_SYMBOL_GPL. So direct 
>> using will result in:
>> "WARNING: "total_swap_pages" [drivers/gpu/drm/ttm/ttm.ko] undefined!".
>>
>> Thanks
>> Roger(Hongbo.He)
>> -----Original Message-----
>> From: dri-devel [mailto:dri-devel-bounces@lists.freedesktop.org] On 
>> Behalf Of Chunming Zhou
>> Sent: Wednesday, January 31, 2018 3:15 PM
>> To: He, Roger <Hongbo.He@amd.com>; dri-devel@lists.freedesktop.org
>> Cc: linux-mm@kvack.org; linux-kernel@vger.kernel.org; Koenig, 
>> Christian <Christian.Koenig@amd.com>
>> Subject: Re: [PATCH] mm/swap: add function get_total_swap_pages to 
>> expose total_swap_pages
>>
>> Hi Roger,
>>
>> I think this patch isn't need at all. You can directly read 
>> total_swap_pages variable in TTM. See the comment:
>>
>> /* protected with swap_lock. reading in vm_swap_full() doesn't need 
>> lock */ long total_swap_pages;
>>
>> there are many places using it directly, you just couldn't change its 
>> value. Reading it doesn't need lock.
>>
>>
>> Regards,
>>
>> David Zhou
>>
>>
>> On 2018a1'01ae??29ae?JPY 16:29, Roger He wrote:
>>> ttm module needs it to determine its internal parameter setting.
>>>
>>> Signed-off-by: Roger He <Hongbo.He@amd.com>
>>> ---
>>> A A  include/linux/swap.h |A  6 ++++++
>>> A A  mm/swapfile.cA A A A A A A  | 15 +++++++++++++++
>>> A A  2 files changed, 21 insertions(+)
>>>
>>> diff --git a/include/linux/swap.h b/include/linux/swap.h
>>> index c2b8128..708d66f 100644
>>> --- a/include/linux/swap.h
>>> +++ b/include/linux/swap.h
>>> @@ -484,6 +484,7 @@ extern int try_to_free_swap(struct page *);
>>> A A  struct backing_dev_info;
>>> A A  extern int init_swap_address_space(unsigned int type, unsigned 
>>> long nr_pages);
>>> A A  extern void exit_swap_address_space(unsigned int type);
>>> +extern long get_total_swap_pages(void);
>>> A A  A A  #else /* CONFIG_SWAP */
>>> A A  @@ -516,6 +517,11 @@ static inline void show_swap_cache_info(void)
>>> A A  {
>>> A A  }
>>> A A  +long get_total_swap_pages(void)
>>> +{
>>> +A A A  return 0;
>>> +}
>>> +
>>> A A  #define free_swap_and_cache(e) ({(is_migration_entry(e) || 
>>> is_device_private_entry(e));})
>>> A A  #define swapcache_prepare(e) ({(is_migration_entry(e) || 
>>> is_device_private_entry(e));})
>>> A A  diff --git a/mm/swapfile.c b/mm/swapfile.c
>>> index 3074b02..a0062eb 100644
>>> --- a/mm/swapfile.c
>>> +++ b/mm/swapfile.c
>>> @@ -98,6 +98,21 @@ static atomic_t proc_poll_event = ATOMIC_INIT(0);
>>> A A  A A  atomic_t nr_rotate_swap = ATOMIC_INIT(0);
>>> A A  +/*
>>> + * expose this value for others use
>>> + */
>>> +long get_total_swap_pages(void)
>>> +{
>>> +A A A  long ret;
>>> +
>>> +A A A  spin_lock(&swap_lock);
>>> +A A A  ret = total_swap_pages;
>>> +A A A  spin_unlock(&swap_lock);
>>> +
>>> +A A A  return ret;
>>> +}
>>> +EXPORT_SYMBOL_GPL(get_total_swap_pages);
>>> +
>>> A A  static inline unsigned char swap_count(unsigned char ent)
>>> A A  {
>>> A A A A A A  return ent & ~SWAP_HAS_CACHE;A A A  /* may include SWAP_HAS_CONT 
>>> flag */
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Chunming Zhou <zhoucm1@amd.com>
To: "Christian König" <christian.koenig@amd.com>,
	"He, Roger" <Hongbo.He@amd.com>,
	"Zhou, David(ChunMing)" <David1.Zhou@amd.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] mm/swap: add function get_total_swap_pages to expose total_swap_pages
Date: Wed, 31 Jan 2018 16:52:07 +0800	[thread overview]
Message-ID: <72eb44ec-fb94-6b41-b660-f6e6f8f589fa@amd.com> (raw)
In-Reply-To: <b7dca756-b703-ff51-196c-832e5a43c63a@amd.com>

Discussed with Roger just now, we can try "void si_swapinfo(struct 
sysinfo *val)" function to get the total swap space.

Regards,

David Zhou


On 2018年01月31日 16:12, Christian König wrote:
> Yeah, indeed. But what we could do is to rely on a fixed limit like 
> the Intel driver does and I suggested before.
>
> E.g. don't copy anything into a shmemfile when there is only x MB of 
> swap space left.
>
> Roger can you test that approach once more with your fix for the OOM 
> issues in the page fault handler?
>
> Thanks,
> Christian.
>
> Am 31.01.2018 um 09:08 schrieb He, Roger:
>>     I think this patch isn't need at all. You can directly read 
>> total_swap_pages variable in TTM.
>>
>> Because the variable is not exported by EXPORT_SYMBOL_GPL. So direct 
>> using will result in:
>> "WARNING: "total_swap_pages" [drivers/gpu/drm/ttm/ttm.ko] undefined!".
>>
>> Thanks
>> Roger(Hongbo.He)
>> -----Original Message-----
>> From: dri-devel [mailto:dri-devel-bounces@lists.freedesktop.org] On 
>> Behalf Of Chunming Zhou
>> Sent: Wednesday, January 31, 2018 3:15 PM
>> To: He, Roger <Hongbo.He@amd.com>; dri-devel@lists.freedesktop.org
>> Cc: linux-mm@kvack.org; linux-kernel@vger.kernel.org; Koenig, 
>> Christian <Christian.Koenig@amd.com>
>> Subject: Re: [PATCH] mm/swap: add function get_total_swap_pages to 
>> expose total_swap_pages
>>
>> Hi Roger,
>>
>> I think this patch isn't need at all. You can directly read 
>> total_swap_pages variable in TTM. See the comment:
>>
>> /* protected with swap_lock. reading in vm_swap_full() doesn't need 
>> lock */ long total_swap_pages;
>>
>> there are many places using it directly, you just couldn't change its 
>> value. Reading it doesn't need lock.
>>
>>
>> Regards,
>>
>> David Zhou
>>
>>
>> On 2018年01月29日 16:29, Roger He wrote:
>>> ttm module needs it to determine its internal parameter setting.
>>>
>>> Signed-off-by: Roger He <Hongbo.He@amd.com>
>>> ---
>>>    include/linux/swap.h |  6 ++++++
>>>    mm/swapfile.c        | 15 +++++++++++++++
>>>    2 files changed, 21 insertions(+)
>>>
>>> diff --git a/include/linux/swap.h b/include/linux/swap.h
>>> index c2b8128..708d66f 100644
>>> --- a/include/linux/swap.h
>>> +++ b/include/linux/swap.h
>>> @@ -484,6 +484,7 @@ extern int try_to_free_swap(struct page *);
>>>    struct backing_dev_info;
>>>    extern int init_swap_address_space(unsigned int type, unsigned 
>>> long nr_pages);
>>>    extern void exit_swap_address_space(unsigned int type);
>>> +extern long get_total_swap_pages(void);
>>>       #else /* CONFIG_SWAP */
>>>    @@ -516,6 +517,11 @@ static inline void show_swap_cache_info(void)
>>>    {
>>>    }
>>>    +long get_total_swap_pages(void)
>>> +{
>>> +    return 0;
>>> +}
>>> +
>>>    #define free_swap_and_cache(e) ({(is_migration_entry(e) || 
>>> is_device_private_entry(e));})
>>>    #define swapcache_prepare(e) ({(is_migration_entry(e) || 
>>> is_device_private_entry(e));})
>>>    diff --git a/mm/swapfile.c b/mm/swapfile.c
>>> index 3074b02..a0062eb 100644
>>> --- a/mm/swapfile.c
>>> +++ b/mm/swapfile.c
>>> @@ -98,6 +98,21 @@ static atomic_t proc_poll_event = ATOMIC_INIT(0);
>>>       atomic_t nr_rotate_swap = ATOMIC_INIT(0);
>>>    +/*
>>> + * expose this value for others use
>>> + */
>>> +long get_total_swap_pages(void)
>>> +{
>>> +    long ret;
>>> +
>>> +    spin_lock(&swap_lock);
>>> +    ret = total_swap_pages;
>>> +    spin_unlock(&swap_lock);
>>> +
>>> +    return ret;
>>> +}
>>> +EXPORT_SYMBOL_GPL(get_total_swap_pages);
>>> +
>>>    static inline unsigned char swap_count(unsigned char ent)
>>>    {
>>>        return ent & ~SWAP_HAS_CACHE;    /* may include SWAP_HAS_CONT 
>>> flag */
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2018-01-31  8:52 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-29  8:29 [PATCH] mm/swap: add function get_total_swap_pages to expose total_swap_pages Roger He
2018-01-29  8:29 ` Roger He
2018-01-29  8:29 ` Roger He
2018-01-29 16:31 ` Michal Hocko
2018-01-29 16:31   ` Michal Hocko
2018-01-29 16:31   ` Michal Hocko
2018-01-30  2:56   ` He, Roger
2018-01-30  2:56     ` He, Roger
2018-01-30  5:13     ` He, Roger
2018-01-30  7:55     ` Michal Hocko
2018-01-30  7:55       ` Michal Hocko
2018-01-30  7:55       ` Michal Hocko
2018-01-30  9:00       ` Christian König
2018-01-30  9:00         ` Christian König
2018-01-30  9:00         ` Christian König
2018-01-30 10:18         ` Michal Hocko
2018-01-30 10:18           ` Michal Hocko
2018-01-30 10:18           ` Michal Hocko
2018-01-30 10:32           ` Christian König
2018-01-30 10:32             ` Christian König
2018-01-30 10:32             ` Christian König
2018-01-30 12:28             ` Michal Hocko
2018-01-30 12:28               ` Michal Hocko
2018-01-30 12:28               ` Michal Hocko
2018-01-30 12:52               ` Christian König
2018-01-30 12:52                 ` Christian König
2018-01-31  5:52               ` He, Roger
2018-01-31  5:52                 ` He, Roger
2018-01-31  5:52                 ` He, Roger
2018-02-01  6:13               ` He, Roger
2018-02-01  6:13                 ` He, Roger
2018-02-01  8:15                 ` Michal Hocko
2018-02-01  8:15                   ` Michal Hocko
2018-01-31  7:15 ` Chunming Zhou
2018-01-31  7:15   ` Chunming Zhou
2018-01-31  7:15   ` Chunming Zhou
2018-01-31  8:08   ` He, Roger
2018-01-31  8:12     ` Christian König
2018-01-31  8:12       ` Christian König
2018-01-31  8:12       ` Christian König
2018-01-31  8:52       ` Chunming Zhou [this message]
2018-01-31  8:52         ` Chunming Zhou
2018-01-31  8:52         ` Chunming Zhou
2018-02-01  5:48       ` He, Roger
2018-02-01  5:48         ` He, Roger
2018-02-01  8:03         ` He, Roger
2018-02-02  6:57         ` He, Roger
2018-02-02  6:57           ` He, Roger
2018-02-02  7:46           ` Christian König
2018-02-02  7:46             ` Christian König
2018-02-02  7:46             ` Christian König
2018-02-02  7:54             ` He, Roger
2018-02-02  8:59               ` He, Roger

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=72eb44ec-fb94-6b41-b660-f6e6f8f589fa@amd.com \
    --to=zhoucm1@amd.com \
    --cc=David1.Zhou@amd.com \
    --cc=Hongbo.He@amd.com \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.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.