On 3/29/21 12:46 AM, Michal Hocko wrote:
> On Fri 26-03-21 14:32:01, Mike Kravetz wrote:
> [...]
>> - Just change the mutex to an irq safe spinlock.
>
> Yes please.
>
>> AFAICT, the potential
>> downsides could be:
>> - Interrupts disabled during long bitmap scans
>
> How large those
On Fri 26-03-21 14:32:01, Mike Kravetz wrote:
[...]
> - Just change the mutex to an irq safe spinlock.
Yes please.
> AFAICT, the potential
> downsides could be:
> - Interrupts disabled during long bitmap scans
How large those bitmaps are in practice?
> - Wasted cpu cycles (spinning) if
On 3/25/21 4:49 PM, Mike Kravetz wrote:
> On 3/25/21 4:19 PM, Roman Gushchin wrote:
>> On Thu, Mar 25, 2021 at 01:12:51PM -0700, Minchan Kim wrote:
>>> On Thu, Mar 25, 2021 at 06:15:11PM +0100, David Hildenbrand wrote:
On 25.03.21 17:56, Mike Kravetz wrote:
> On 3/25/21 3:22 AM, Michal
On 3/25/21 4:19 PM, Roman Gushchin wrote:
> On Thu, Mar 25, 2021 at 01:12:51PM -0700, Minchan Kim wrote:
>> On Thu, Mar 25, 2021 at 06:15:11PM +0100, David Hildenbrand wrote:
>>> On 25.03.21 17:56, Mike Kravetz wrote:
On 3/25/21 3:22 AM, Michal Hocko wrote:
> On Thu 25-03-21 10:56:38,
On Thu, Mar 25, 2021 at 01:12:51PM -0700, Minchan Kim wrote:
> On Thu, Mar 25, 2021 at 06:15:11PM +0100, David Hildenbrand wrote:
> > On 25.03.21 17:56, Mike Kravetz wrote:
> > > On 3/25/21 3:22 AM, Michal Hocko wrote:
> > > > On Thu 25-03-21 10:56:38, David Hildenbrand wrote:
> > > > > On
On Thu, Mar 25, 2021 at 06:15:11PM +0100, David Hildenbrand wrote:
> On 25.03.21 17:56, Mike Kravetz wrote:
> > On 3/25/21 3:22 AM, Michal Hocko wrote:
> > > On Thu 25-03-21 10:56:38, David Hildenbrand wrote:
> > > > On 25.03.21 01:28, Mike Kravetz wrote:
> > > > > From: Roman Gushchin
> > > > >
On 25.03.21 17:56, Mike Kravetz wrote:
On 3/25/21 3:22 AM, Michal Hocko wrote:
On Thu 25-03-21 10:56:38, David Hildenbrand wrote:
On 25.03.21 01:28, Mike Kravetz wrote:
From: Roman Gushchin
cma_release() has to lock the cma_lock mutex to clear the cma bitmap.
It makes it a blocking
On 3/25/21 3:22 AM, Michal Hocko wrote:
> On Thu 25-03-21 10:56:38, David Hildenbrand wrote:
>> On 25.03.21 01:28, Mike Kravetz wrote:
>>> From: Roman Gushchin
>>>
>>> cma_release() has to lock the cma_lock mutex to clear the cma bitmap.
>>> It makes it a blocking function, which complicates its
On Thu 25-03-21 11:17:32, Oscar Salvador wrote:
> On Thu, Mar 25, 2021 at 11:11:49AM +0100, Michal Hocko wrote:
> > I have overlooked that
> > +static void cma_clear_bitmap_fn(struct work_struct *work)
> > +{
> > + struct cma_clear_bitmap_work *w;
> > +
> > + w = container_of(work,
On Thu 25-03-21 10:56:38, David Hildenbrand wrote:
> On 25.03.21 01:28, Mike Kravetz wrote:
> > From: Roman Gushchin
> >
> > cma_release() has to lock the cma_lock mutex to clear the cma bitmap.
> > It makes it a blocking function, which complicates its usage from
> > non-blocking contexts. For
On Thu, Mar 25, 2021 at 11:11:49AM +0100, Michal Hocko wrote:
> I have overlooked that
> +static void cma_clear_bitmap_fn(struct work_struct *work)
> +{
> + struct cma_clear_bitmap_work *w;
> +
> + w = container_of(work, struct cma_clear_bitmap_work, work);
> +
> +
On 25.03.21 11:11, Michal Hocko wrote:
On Thu 25-03-21 10:45:19, Michal Hocko wrote:
On Wed 24-03-21 17:28:28, Mike Kravetz wrote:
[...]
phys_addr_t cma_get_base(const struct cma *cma)
{
return PFN_PHYS(cma->base_pfn);
@@ -146,6 +155,10 @@ static int __init
On Thu 25-03-21 10:45:19, Michal Hocko wrote:
> On Wed 24-03-21 17:28:28, Mike Kravetz wrote:
> [...]
> > phys_addr_t cma_get_base(const struct cma *cma)
> > {
> > return PFN_PHYS(cma->base_pfn);
> > @@ -146,6 +155,10 @@ static int __init cma_init_reserved_areas(void)
> > for (i = 0; i <
On Thu 25-03-21 10:54:10, Oscar Salvador wrote:
> On Thu, Mar 25, 2021 at 10:45:18AM +0100, Michal Hocko wrote:
> > On Wed 24-03-21 17:28:28, Mike Kravetz wrote:
> > [...]
> > > phys_addr_t cma_get_base(const struct cma *cma)
> > > {
> > > return PFN_PHYS(cma->base_pfn);
> > > @@ -146,6
On 25.03.21 01:28, Mike Kravetz wrote:
From: Roman Gushchin
cma_release() has to lock the cma_lock mutex to clear the cma bitmap.
It makes it a blocking function, which complicates its usage from
non-blocking contexts. For instance, hugetlbfs code is temporarily
dropping the hugetlb_lock
On Thu, Mar 25, 2021 at 10:45:18AM +0100, Michal Hocko wrote:
> On Wed 24-03-21 17:28:28, Mike Kravetz wrote:
> [...]
> > phys_addr_t cma_get_base(const struct cma *cma)
> > {
> > return PFN_PHYS(cma->base_pfn);
> > @@ -146,6 +155,10 @@ static int __init cma_init_reserved_areas(void)
> >
On Wed 24-03-21 17:28:28, Mike Kravetz wrote:
[...]
> phys_addr_t cma_get_base(const struct cma *cma)
> {
> return PFN_PHYS(cma->base_pfn);
> @@ -146,6 +155,10 @@ static int __init cma_init_reserved_areas(void)
> for (i = 0; i < cma_area_count; i++)
>
On Wed, Mar 24, 2021 at 05:28:28PM -0700, Mike Kravetz wrote:
> +struct cma_clear_bitmap_work {
> + struct work_struct work;
> + struct cma *cma;
> + unsigned long pfn;
> + unsigned int count;
> +};
> +
> struct cma cma_areas[MAX_CMA_AREAS];
> unsigned cma_area_count;
>
>
From: Roman Gushchin
cma_release() has to lock the cma_lock mutex to clear the cma bitmap.
It makes it a blocking function, which complicates its usage from
non-blocking contexts. For instance, hugetlbfs code is temporarily
dropping the hugetlb_lock spinlock to call cma_release().
This patch
19 matches
Mail list logo