[PATCH 2/2] fbdev: Don't sort deferred-I/O pages by default

Thomas Zimmermann tzimmermann at suse.de
Fri Feb 11 08:25:55 UTC 2022


Hi

Am 11.02.22 um 08:58 schrieb Dan Carpenter:
> On Thu, Feb 10, 2022 at 10:16:45PM +0100, Sam Ravnborg wrote:
>>> diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c
>>> index 3727b1ca87b1..1f672cf253b2 100644
>>> --- a/drivers/video/fbdev/core/fb_defio.c
>>> +++ b/drivers/video/fbdev/core/fb_defio.c
>>> @@ -132,15 +132,20 @@ static vm_fault_t fb_deferred_io_mkwrite(struct vm_fault *vmf)
>>>   	if (!list_empty(&page->lru))
>>>   		goto page_already_added;
>>>   
>>> -	/* we loop through the pagelist before adding in order
>>> -	to keep the pagelist sorted */
>>> -	list_for_each_entry(cur, &fbdefio->pagelist, lru) {
>>> -		if (cur->index > page->index)
>>> -			break;
>>> +	if (fbdefio->sort_pagelist) {
>>> +		/*
>>> +		 * We loop through the pagelist before adding in order
>>> +		 * to keep the pagelist sorted.
>>> +		 */
>>> +		list_for_each_entry(cur, &fbdefio->pagelist, lru) {
>>> +			if (cur->index > page->index)
>>> +				break;
>>> +		}
>>> +		list_add_tail(&page->lru, &cur->lru);
>>> +	} else {
>>> +		list_add_tail(&page->lru, &fbdefio->pagelist);
>>>   	}
>> Bikeshedding - my personal style is to have the likely part first.
>> This makes reading the code easier.
> 
> I've thought about this quite a bit...  I guess my rule is to avoid
> negatives as much as possible so I prefer the original code.  My rules
> right now are:
> 
> 1) Always do error handling.  Don't do success handling.
> 2) Return as quickly as possible and pull the code in an indent.
> 3) Avoid negatives.  Never had negatives in the variable names.

 From what I know, CPUs' branch prediction prefers backward jumps (e.g., 
loops) but avoids forward jumps. Compilers arrange the code to optimize 
for this pattern. So I tend to put the exception or error handling into 
the if branch.  But I have no idea if that really makes a difference at 
runtime.

Best regards
Thomas

> 
> regards,
> dan carpenter

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20220211/9c0321d6/attachment-0001.sig>


More information about the dri-devel mailing list