From: Yuvraj Sakshith <yuvraj.sakshith@oss.qualcomm.com>
To: "David Hildenbrand (Arm)" <david@kernel.org>,
Michael Kelley <mhklinux@outlook.com>
Cc: Michael Kelley <mhklinux@outlook.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"mst@redhat.com" <mst@redhat.com>,
"kys@microsoft.com" <kys@microsoft.com>,
"haiyangz@microsoft.com" <haiyangz@microsoft.com>,
"wei.liu@kernel.org" <wei.liu@kernel.org>,
"decui@microsoft.com" <decui@microsoft.com>,
"longli@microsoft.com" <longli@microsoft.com>,
"jasowang@redhat.com" <jasowang@redhat.com>,
"xuanzhuo@linux.alibaba.com" <xuanzhuo@linux.alibaba.com>,
"eperezma@redhat.com" <eperezma@redhat.com>,
"lorenzo.stoakes@oracle.com" <lorenzo.stoakes@oracle.com>,
"Liam.Howlett@oracle.com" <Liam.Howlett@oracle.com>,
"vbabka@suse.cz" <vbabka@suse.cz>,
"rppt@kernel.org" <rppt@kernel.org>,
"surenb@google.com" <surenb@google.com>,
"mhocko@suse.com" <mhocko@suse.com>,
"jackmanb@google.com" <jackmanb@google.com>,
"hannes@cmpxchg.org" <hannes@cmpxchg.org>,
"ziy@nvidia.com" <ziy@nvidia.com>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
"virtualization@lists.linux.dev" <virtualization@lists.linux.dev>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v1 4/4] page_reporting: change PAGE_REPORTING_DEFAULT_ORDER to -1
Date: Mon, 2 Mar 2026 00:00:11 -0800 [thread overview]
Message-ID: <aaVDiwEPl5t2UPX4@hu-ysakshit-lv.qualcomm.com> (raw)
In-Reply-To: <b1390b24-eaef-40e0-a16b-77c27decb77e@kernel.org>
On Mon, Mar 02, 2026 at 08:42:57AM +0100, David Hildenbrand (Arm) wrote:
> On 3/2/26 06:25, Michael Kelley wrote:
> > From: Yuvraj Sakshith <yuvraj.sakshith@oss.qualcomm.com> Sent: Sunday, March 1, 2026 7:33 PM
> >>
> >> On Fri, Feb 27, 2026 at 09:50:15PM +0100, David Hildenbrand (Arm) wrote:
> >>>
> >>> No need for the ().
> >>>
> >>> Wondering whether we now also want to do in this patch:
> >>>
> >>>
> >>> diff --git a/mm/page_reporting.c b/mm/page_reporting.c
> >>> index f0042d5743af..d432aadf9d07 100644
> >>> --- a/mm/page_reporting.c
> >>> +++ b/mm/page_reporting.c
> >>> @@ -11,8 +11,7 @@
> >>> #include "page_reporting.h"
> >>> #include "internal.h"
> >>>
> >>> -/* Initialize to an unsupported value */
> >>> -unsigned int page_reporting_order = -1;
> >>> +unsigned int page_reporting_order = PAGE_REPORTING_DEFAULT_ORDER;
> >>>
> >>> static int page_order_update_notify(const char *val, const struct
> >>> kernel_param *kp)
> >>> {
> >>> @@ -369,7 +368,7 @@ int page_reporting_register(struct
> >>> page_reporting_dev_info *prdev)
> >>> * pageblock_order.
> >>> */
> >>>
> >>> - if (page_reporting_order == -1) {
> >>> + if (page_reporting_order == PAGE_REPORTING_DEFAULT_ORDER) {
> >>>
> >>>
> >>
> >> Sure. Now that I think of it, don’t you think the first nested if() will
> >> always be false? and can be compressed down to just one if()?
> >
> > I don't think what you propose is correct. The purpose of testing
> > page_reporting_order for -1 is to see if a page reporting order has
> > been specified on the kernel boot line. If it has been specified, then
> > the page reporting order specified in the call to page_reporting_register()
> > [either a specific value or the default] is ignored and the kernel boot
> > line value prevails. But if page_reporting_order is -1 here, then
> > no kernel boot line value was specified, and the value passed to
> > page_reporting_register() should prevail.
> >
> > With this in mind, substituting PAGE_REPORTING_DEFAULT_ORDER
> > for the -1 in the test doesn’t exactly make sense to me. The -1 in the
> > test doesn't have quite the same meaning as the -1 for
> > PAGE_REPORTING_DEFAULT_ORDER. You could even use -2 for
> > the initial value of page_reporting_order, and here in the test, in
> > order to make that distinction obvious. Or use a separate symbolic
> > name like PAGE_REPORTING_ORDER_NOT_SET.
>
Option 1:
if (page_reporting_order == PAGE_REPORTING_DEFAULT_ORDER) {
if (page_reporting_order != PAGE_REPORTING_DEFAULT_ORDER
&& prdev->order <= MAX_PAGE_ORDER) {
page_reporting_order = prdev->order;
} else {
page_reporting_order = pageblock_order;
}
}
Option 2:
if (page_reporting_order == PAGE_REPORTING_ORDER_NOT_SET) {
if (page_reporting_order != PAGE_REPORTING_DEFAULT_ORDER
&& prdev->order <= MAX_PAGE_ORDER) {
page_reporting_order = prdev->order;
} else {
page_reporting_order = pageblock_order;
}
}
> I don't really see a difference between "PAGE_REPORTING_DEFAULT_ORDER"
> and "PAGE_REPORTING_ORDER_NOT_SET" that would warrant a split and adding
> confusion for the page-reporting drivers.
>
> In both cases, we want "no special requirement, just use the default".
> Maybe we can use a better name to express that.
Agreed.
If we were to read this code without context, wouldn't it be confusing as to
why PAGE_REPORTING_DEFAULT_ORDER is being checked in the first place?
Option 1 checks if page_reporting_order is equal to PAGE_REPORTING_DEFAULT_ORDER
and then immediately checks if its not equal to it. Which is a bit confusing..
And moreover, page_reporting_order can be set by two people. The commandline and
the driver itself. So PAGE_REPORTING_ORDER_NOT_SET can indicate if its set by cmdline
and PAGE_REPORTING_DEFAULT_ORDER can be used by drivers exclusively to "tell" page-reporting
to select the default value for us.
I think what Michael is pointing out is the prevalence of cmdline option over the driver's
request.
This is not obvious to the reader if we choose to only have one flag IMO :)
Thanks,
Yuvraj
> --
> Cheers,
>
> David
next prev parent reply other threads:[~2026-03-02 8:00 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-27 14:06 [PATCH v1 0/4] Allow order zero pages in page reporting Yuvraj Sakshith
2026-02-27 14:06 ` [PATCH v1 1/4] page_reporting: add PAGE_REPORTING_DEFAULT_ORDER Yuvraj Sakshith
2026-02-27 20:45 ` David Hildenbrand (Arm)
2026-02-27 14:06 ` [PATCH v1 2/4] virtio_balloon: set default page reporting order Yuvraj Sakshith
2026-02-27 20:46 ` David Hildenbrand (Arm)
2026-02-27 14:06 ` [PATCH v1 3/4] hv_balloon: " Yuvraj Sakshith
2026-02-27 14:06 ` [PATCH v1 4/4] page_reporting: change PAGE_REPORTING_DEFAULT_ORDER to -1 Yuvraj Sakshith
2026-02-27 20:50 ` David Hildenbrand (Arm)
2026-03-02 3:33 ` Yuvraj Sakshith
2026-03-02 5:25 ` Michael Kelley
2026-03-02 7:42 ` David Hildenbrand (Arm)
2026-03-02 8:00 ` Yuvraj Sakshith [this message]
2026-03-02 8:09 ` David Hildenbrand (Arm)
2026-03-02 8:54 ` Yuvraj Sakshith
2026-03-02 9:18 ` David Hildenbrand (Arm)
2026-03-02 9:50 ` Yuvraj Sakshith
2026-02-27 20:44 ` [PATCH v1 0/4] Allow order zero pages in page reporting David Hildenbrand (Arm)
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=aaVDiwEPl5t2UPX4@hu-ysakshit-lv.qualcomm.com \
--to=yuvraj.sakshith@oss.qualcomm.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=decui@microsoft.com \
--cc=eperezma@redhat.com \
--cc=haiyangz@microsoft.com \
--cc=hannes@cmpxchg.org \
--cc=jackmanb@google.com \
--cc=jasowang@redhat.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=longli@microsoft.com \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhklinux@outlook.com \
--cc=mhocko@suse.com \
--cc=mst@redhat.com \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
--cc=virtualization@lists.linux.dev \
--cc=wei.liu@kernel.org \
--cc=xuanzhuo@linux.alibaba.com \
--cc=ziy@nvidia.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox