summaryrefslogtreecommitdiff
path: root/sys/src/9/zynq
AgeCommit message (Collapse)Author
2016-12-10devmouse: change msec argument of *mousetrack() to ulongcinap_lenrek
2016-11-19link loopbackmedium and netdevmedium in bcm/pif, sgi/indy and zynq kernelscinap_lenrek
2016-09-17etherzynq: implement promisc mode and multicast filter supportcinap_lenrek
2016-03-29zynq: cleanup devarch, flushmmu() after procflushpsecg()cinap_lenrek
2016-03-27zynq: introduce SG_FAULT to prevent access to AXI segment while PL is not readycinap_lenrek
access to the axi segment hangs the machine when the fpga is not programmed yet. to prevent access, we introduce a new SG_FAULT flag, that when set on the Segment.type or Physseg.attr, causes the fault handler to immidiately return with an error (as if the segment would not be mapped). during programming, we temporarily set the SG_FAULT flag on the axi physseg, flush all processes tlb's that have the segment mapped and when programming is done, we clear the flag again.
2016-01-05kernel: change active.machs from bitmap to char array to support up to 64 ↵cinap_lenrek
cpus on pc64
2015-11-30kernel: cleanup exit()/shutdown()/reboot() codecinap_lenrek
introduce cpushutdown() function that does the common operation of initiating shutdown, returning once all cpu's got the message and are about to shutdown. this avoids duplicated code which isnt really machine specific. automatic reboot on panic only when *debug= is not set and the machine is a cpu server or has no display, otherwise just hang.
2015-09-05devqspi: fix qunlock error on stat() -> close()cinap_lenrek
2015-09-05zynq: clean cache unconditionally *before* dma, invalidate cache *after* dma ↵cinap_lenrek
for read case processor might bring data speculatively into the cache, before the dma completes.
2015-09-05zynq: fix cache flush bug for emmc driver (have to invalidate cache *before* ↵cinap_lenrek
read)
2015-08-09zunq: remove unused variables from devqspicinap_lenrek
2015-07-07all kernels: declare _tas() to prevent pulling in libc version (for libmemdraw)cinap_lenrek
2015-06-18zynq: use KADDR() for kmap() if we can avoiding the mappingcinap_lenrek
2015-06-18zynq: fix barrierscinap_lenrek
unlock()/iunlock(): we need to place the coherence() *before* "l->key = 0", so that any stores that where done while holding the lock become observable *before* other processors see the lock released. cas()/tas(): place memory barrier before successfull return to prevent reordering.
2015-06-18kernel: do not inherit Proc.dot (current working directory) in kproc()cinap_lenrek
making sure to close the dot in every kproc appears repetitive, so instead stop inheriting the dot in kproc() as this is usually never what you wanted in the first place.
2015-06-15kernel: add pagechaindone() to wakeup processes waiting for memorycinap_lenrek
we keep the details about palloc in page.c, providing pagechaindone() for mmu code to be called after a series of pagechainhead() calls.
2015-06-15zynq: remove unused PTE typedefcinap_lenrek
all the mmu code uses ulong, so get rid of the typeded.
2015-06-15zynq: remove unused statistics fields from Mach structurecinap_lenrek
2015-06-11zynq: increase kernel memory for graphicscinap_lenrek
2015-06-11zynq: mouse accelerationcinap_lenrek
2015-06-11zynq: make screen and cursor kprocs exit properlycinap_lenrek
2015-06-11zynq: add support for hardware cursorcinap_lenrek
to enable hardware cursor, write "addr va" to /dev/mousectl where va is the virtual address of the cursor position register.
2015-06-10zynq: fix flushmemscreen()cinap_lenrek
2015-06-09zynq: add /dev/fbctl to attach framebuffer to devdrawcinap_lenrek
2015-06-07zynq: fix /dev/plcinap_lenrek
prevent double sleep(): callers to sleep() need to be serialized as there can only be one process sleeping at a time. plrlock and plwlock do this. wait for dma to complete in plwrite(): we have to wait for the dma to complete before touching plbuf again. maintain COPEN flag in archopen()/archclose(): when open fails because it was in use, clear the COPEN flag, so archclose() wont screw stuff up.
2015-05-11emmc/pmmc: make all symbols staticcinap_lenrek
2015-04-30pass Ureg* argument to note handler in R0 register on armcinap_lenrek
userspace note handlers, like any function, expect ther first argument in R0 register on arm.
2015-04-13zynq: invalidate cache before booting cpu1cinap_lenrek
sometimes, machine would crash on boot because of data cache inconsistency. invalidating the cache before booting cpu1 fixes it.
2015-04-12segment: fix print buffer overflow, map fixed segments uncached, add to zynq ↵cinap_lenrek
kernel
2015-04-07kernel: move arrow cursor definition to port/devmouse.ccinap_lenrek
2015-03-25zynq: fix out of bounds access in etherprobe()cinap_lenrek
calling etherprobe() with -1 cardno will rereference and call cards[-1].reset() which is wrong. don't do that!
2015-03-06zynq: sdio supportcinap_lenrek
2015-03-06zynq: do mpinit() early so cpu1 debug prints do not intermixcinap_lenrek
2015-03-05zynq: fix usb by implementing delay() and give proper port speed in portstatuscinap_lenrek
2015-02-14usbehci: initial support for usb on zynq, remove uncached.hcinap_lenrek
the following hooks have been added to the ehci Ctlr structore to handle cache coherency (on arm): void* (*tdalloc)(ulong,int,ulong); void* (*dmaalloc)(ulong); void (*dmafree)(void*); void (*dmaflush)(int,void*,ulong); tdalloc() is used to allocate descriptors and the periodic frame schedule array. on arm, this needs to return uncached memory. tdalloc()ed memory is never freed. dmaalloc()/dmafree() is used for io buffers. this can return cached memory when when hardware maintains cache coherency (pc) or dmaflush() is provided to flush/invalidate the cache (zynq), otherwise needs to return uncached memory. dmaflush() is used to flush/invalidate the cache. the first argument tells us if we need to flush (non zero) or invalidate (zero). uncached.h is gone now. this change makes the handling explicit.
2015-02-14zynq: do fixed mapping for ocm memory on boot and make kaddr() and paddr() ↵cinap_lenrek
work with it map the whole ocm memory on boot so we can translate physical to virtual addresses and back for uncached memory using KADDR() and PADDR(). replace ualloc() with ucalloc() returning virtual address. physical address can be acquired with PADDR() now. as ocm is now always mapped, use KADDR() instead of tmpmap() for mp bootstrap.
2015-02-07zynq: fix print format warning in screeninit()cinap_lenrek
2015-02-07kernel: reduce Page structure size by changing Page.cachectl[]cinap_lenrek
there are no kernels currently that do page coloring, so the only use of cachectl[] is flushing the icache (on arm and ppc). on pc64, cachectl consumes 32 bytes in each page resulting in over 200 megabytes of overhead for 32gb of ram with 4K pages. this change removes cachectl[] and adds txtflush ulong that is set to ~0 by pio() to instruct putmmu() to flush the icache.
2015-01-01zynq: differentiate various pagefault types in faultarm()cinap_lenrek
2014-12-30zynq: enable branch predictioncinap_lenrek
2014-12-30zynq: implement µs()cinap_lenrek
2014-12-30zynq: enable prefetch hints and drop-prefetchcinap_lenrek
2014-12-29zymq: lilu dallas, multicorecinap_lenrek
implement multiprocessor support.
2014-12-25zynq: only tmpmap() while splhi(), remove unneeded coherence() after ↵cinap_lenrek
tmpunmap(), splhi() in l2free() we have to call tmpmap() with interrupts disabled as the map is a per cpu and a interrupt can preempt us while we where commited to use a entry but *before* we wrote it! tmpunmap() already calls coherence() before flushpg() so it is not needed after tmpunmap(). splhi() in l2free() isnt needed as l2free() is always called with interrupts disabled from mmuswitch() and mmurelease().
2014-12-25zynq: dont do install target by default in the mkfilecinap_lenrek
2014-12-24zynq: fpsave() and fpclear() both need to disable the fpucinap_lenrek
fpsave needs to disable the fpu! otherwise we won't catch the mathtrap() in the kernel or when context switching to another process that will attempt to use it.
2014-12-24zynq: active.machs = 1cinap_lenrek
2014-12-24zynq: set mainmem->maxsize so kernel malloc() wont fail after 4MBcinap_lenrek
2014-12-24zynq: fix kernel configuration so it buildscinap_lenrek
2014-12-24added zynq kernelaiju