* Re: [9fans] bug in procwired() for x86 scheduler? [not found] <EC073287-823A-4F0C-ACFD-2831DE775D53@fb.com> @ 2014-06-22 22:25 ` Yoann Padioleau 2014-06-22 23:20 ` cinap_lenrek 2014-06-22 23:25 ` Charles Forsyth 0 siblings, 2 replies; 7+ messages in thread From: Yoann Padioleau @ 2014-06-22 22:25 UTC (permalink / raw) To: Yoann Padioleau; +Cc: Fans of the OS Plan 9 from Bell Labs The code should be if(up != p && (p->wired == nil || p->wired == MACHP(m->machno)) m->readied = p; no? > > if(up != p && (p->wired == nil || p->wired == m)) > m->readied = p; /* group scheduling */ On Jun 22, 2014, at 10:20 AM, yoann padioleau <pad@fb.com> wrote: > Hi, > > Looking at the scheduler code I think I've found a bug related to the > customized affinity one can set for a process. > > In ready() there is: > > if(up != p && (p->wired == nil || p->wired == m)) > m->readied = p; /* group scheduling */ > > but on x86 'm' is actually set to a fixed address, MACHADDR. Each cpu actually > have a different mapping in its pagetable to then translate MACHADDR virtual address to a different > physical address. > > in procwired() there is: > p->wired = MACHP(bm); > > MACHP is an array of addresses of all Mach in memory but not using this > MACHADDR fixed virtual address. Each entry corresponds to a different Mach virtual > address. > > So there is no way the test in ready() p->wired == m can even return true. > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9fans] bug in procwired() for x86 scheduler? 2014-06-22 22:25 ` [9fans] bug in procwired() for x86 scheduler? Yoann Padioleau @ 2014-06-22 23:20 ` cinap_lenrek 2014-06-22 23:25 ` Charles Forsyth 1 sibling, 0 replies; 7+ messages in thread From: cinap_lenrek @ 2014-06-22 23:20 UTC (permalink / raw) To: 9fans correct. :-) -- cinap ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9fans] bug in procwired() for x86 scheduler? 2014-06-22 22:25 ` [9fans] bug in procwired() for x86 scheduler? Yoann Padioleau 2014-06-22 23:20 ` cinap_lenrek @ 2014-06-22 23:25 ` Charles Forsyth 2014-06-23 0:57 ` erik quanstrom 1 sibling, 1 reply; 7+ messages in thread From: Charles Forsyth @ 2014-06-22 23:25 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs [-- Attachment #1: Type: text/plain, Size: 266 bytes --] On 22 June 2014 23:25, Yoann Padioleau <pad@fb.com> wrote: > if(up != p && (p->wired == nil || p->wired == MACHP(m->machno)) > m->readied = p; > yes, because on 386 m is effectively a constant. the code was written with extern register Mach *m in mind. [-- Attachment #2: Type: text/html, Size: 626 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9fans] bug in procwired() for x86 scheduler? 2014-06-22 23:25 ` Charles Forsyth @ 2014-06-23 0:57 ` erik quanstrom 2014-06-23 8:08 ` cinap_lenrek 2014-06-23 16:20 ` Yoann Padioleau 0 siblings, 2 replies; 7+ messages in thread From: erik quanstrom @ 2014-06-23 0:57 UTC (permalink / raw) To: 9fans > On 22 June 2014 23:25, Yoann Padioleau <pad@fb.com> wrote: > > > if(up != p && (p->wired == nil || p->wired == MACHP(m->machno)) > > m->readied = p; > > > > yes, because on 386 m is effectively a constant. the code was written with > extern register Mach *m in mind. > 9atom has had it as if(up != p && (p->wired == nil || p->wired->machno == m->machno)) which i believe is equivalent, and less obnoxious. the pc kernel should be rewritten with the GS extern register bit, and then we could get rid of MACHP. - erik ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9fans] bug in procwired() for x86 scheduler? 2014-06-23 0:57 ` erik quanstrom @ 2014-06-23 8:08 ` cinap_lenrek 2014-06-23 16:20 ` Yoann Padioleau 1 sibling, 0 replies; 7+ messages in thread From: cinap_lenrek @ 2014-06-23 8:08 UTC (permalink / raw) To: 9fans if(up != p && (p->wired == nil || p->wired->machno == m->machno)) dereferencing p->wired can fault when another processor rewires the proc temporarily setting p->wired to nil. -- cinap ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9fans] bug in procwired() for x86 scheduler? 2014-06-23 0:57 ` erik quanstrom 2014-06-23 8:08 ` cinap_lenrek @ 2014-06-23 16:20 ` Yoann Padioleau 2014-06-23 16:39 ` erik quanstrom 1 sibling, 1 reply; 7+ messages in thread From: Yoann Padioleau @ 2014-06-23 16:20 UTC (permalink / raw) To: Fans of the OS Plan 9 from Bell Labs Yes I agree, it's better that way. Is there a list somewhere on the web with all those 9atom patches? On Jun 22, 2014, at 5:57 PM, erik quanstrom <quanstro@quanstro.net> wrote: >> On 22 June 2014 23:25, Yoann Padioleau <pad@fb.com> wrote: >> >>> if(up != p && (p->wired == nil || p->wired == MACHP(m->machno)) >>> m->readied = p; >>> >> >> yes, because on 386 m is effectively a constant. the code was written with >> extern register Mach *m in mind. >> > > > 9atom has had it as > > if(up != p && (p->wired == nil || p->wired->machno == m->machno)) > > which i believe is equivalent, and less obnoxious. the pc kernel should be rewritten > with the GS extern register bit, and then we could get rid of MACHP. > > - erik > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [9fans] bug in procwired() for x86 scheduler? 2014-06-23 16:20 ` Yoann Padioleau @ 2014-06-23 16:39 ` erik quanstrom 0 siblings, 0 replies; 7+ messages in thread From: erik quanstrom @ 2014-06-23 16:39 UTC (permalink / raw) To: 9fans On Mon Jun 23 12:22:23 EDT 2014, pad@fb.com wrote: > Yes I agree, it's better that way. Is there a list somewhere on the web with all > those 9atom patches? > 9fs atom then look in /n/atom/patch, or /n/atom/patch/applied, or /n/atom/patch/applied$year. - erik ps. for 9fs .... case atom srv -n -q tcp!atom.9atom.org atom && mount $nflag /srv/atom /n/atom atom ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-06-23 16:39 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <EC073287-823A-4F0C-ACFD-2831DE775D53@fb.com> 2014-06-22 22:25 ` [9fans] bug in procwired() for x86 scheduler? Yoann Padioleau 2014-06-22 23:20 ` cinap_lenrek 2014-06-22 23:25 ` Charles Forsyth 2014-06-23 0:57 ` erik quanstrom 2014-06-23 8:08 ` cinap_lenrek 2014-06-23 16:20 ` Yoann Padioleau 2014-06-23 16:39 ` erik quanstrom
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).