Commit graph

242 commits

Author SHA1 Message Date
Robert Morris
cf0c095721 sscratch cleanup 2022-08-09 12:14:29 -04:00
Robert Morris
9fc9f755e1 adopt github PR98 (No need to store TRAPFRAME in sscratch register) 2022-08-09 11:44:02 -04:00
Robert Morris
ca6fc54934 tweak virtio comments 2022-08-08 11:10:54 -04:00
Xi Wang
cd00a8233a port virtio_disk to virtio spec 1.0+
The legacy interface is confusing. It's better to make virtio_disk
conform to the virtio spec. This is supported in QEMU since 4.2 by
disabling force-legacy for virtio-mmio.
2021-10-17 23:05:09 -07:00
Frans Kaashoek
8ca56e9e0b memmove(dst, src, 0) leads to overflow in while(n-- > 0) as n is uint64 (thanks
Matúš Jókay <matus.jokay@stuba.sk>)
2021-09-01 07:29:12 -04:00
yzhu
a103113db0 fix ld warning: undefined symbol _entry 2021-08-31 20:58:58 -04:00
Pavan Maddamsetti
e07ca66145 comment 2021-08-31 14:27:33 -04:00
l0stman
19ff379661 exec() only accepts MAXARG arguments
The terminating NULL string is already included (see sys_exec()).
2021-08-31 14:26:43 -04:00
l0stman
9195142959 Assert that the size in mappages() is always positive
If va % PGSIZE == 0 and size == 0, we have last < a at the start of
the loop so we might never terminate.  That being said, this
particular case couldn't be triggered for now.
2021-08-31 14:20:32 -04:00
kimjungwow
f55def8a64 Change inode cache in main.c to inode table 2021-08-31 14:17:39 -04:00
amane-uehara
dd6d5d0a41 I fixed a typo in the comment. 2021-08-31 14:16:59 -04:00
OptimisticSide
1226b09dc4 Remove setproc prototype 2021-08-31 14:14:38 -04:00
Vadim Kolontsov
f524198792 fix comment for 'sepc' 2021-08-31 14:12:36 -04:00
FIXED-TERM Chen Ian (BT-CO/QMM5)
8d4ff0bc1e fix typos in user/usertest.c & kernel/log.c 2021-08-31 14:10:14 -04:00
Jonathan Behrens
9655f71758 Configure PMP at boot 2021-08-30 16:27:52 -04:00
Robert Morris
6de0381d61 check for alignment just once 2021-08-10 07:12:41 -04:00
Frans Kaashoek
077323a8f0 Rename icache to itable
The inode cache isn't really a cache. The main purpose of it is to
allow for synchronization (locking individual inodes), providing
long-lived references to inodes, and ensuring that there is only inode
in memory.
2020-11-23 19:30:15 -05:00
Frans Kaashoek
b4c2851bb3 Be principled: acquire lock first 2020-11-05 19:50:46 -05:00
Robert Morris
38084bcea8 proc_tree_lock -> wait_lock 2020-11-05 19:50:46 -05:00
Robert Morris
ba8d9f4808 don't over-lock in exit() 2020-11-05 19:50:46 -05:00
Robert Morris
47323c97cf oops 2020-11-05 06:56:51 -05:00
Robert Morris
2875069973 Frans' proc_lock. 2020-11-05 06:56:51 -05:00
Robert Morris
b48ea5d220 free proc if kalloc fails 2020-11-05 06:56:51 -05:00
Robert Morris
5e392531c0 hopefully make writei more correct 2020-11-05 06:56:51 -05:00
Robert Morris
e1bb4c7434 test for closed pipe or killed on every char, not just if pipe full 2020-11-05 06:56:51 -05:00
Robert Morris
329935eca8 fix uart.c to work with UART_TX_BUF_SIZE == 1 2020-11-05 06:56:51 -05:00
Robert Morris
13dccb0380 consolewrite does not need cons.lock -- can lead to sleep() with lock held 2020-11-05 06:56:51 -05:00
Frans Kaashoek
d4cecb269f kvmmake() makes a complete kernel page table, matching Figure 3.3 2020-10-14 20:28:16 -04:00
Fumiya Shigemitsu
93378618df Fix minor typos 2020-10-14 20:28:14 -04:00
Robert Morris
bebecfd6fd more explicable scratch area size for machine-mode timer interrupts 2020-10-05 19:30:27 -04:00
Frans Kaashoek
c199afe4c8 Don't map the CLINT, since it never used in the kernel in supervisor mode 2020-10-05 19:30:27 -04:00
Robert Morris
c61cc69413 eliminate virtio DMA into kernel stacks. 2020-10-05 19:30:27 -04:00
Robert Morris
3092fe2c9e improve virtio_disk comments; bring it closer to wording in the spec 2020-10-05 19:30:27 -04:00
Robert Morris
548ffc97e1 don't unpin if recovering -- the resulting negative refcnt suppresses next unpin 2020-10-05 19:30:27 -04:00
Robert Morris
aeaf610c67 avoid deadlock by disk intr acking interrupt first, then processing ring 2020-10-05 19:30:27 -04:00
Fumiya Shigemitsu
9c8d1e2909 Fix minor typos 2020-10-03 16:36:20 -04:00
Frans Kaashoek
f2827b2c7b Clarify CLINT and PLIC acronym 2020-10-03 16:36:20 -04:00
Frans Kaashoek
6750608824 When either_copyin/out fails, return an error from write/read
Add a test to check that read/write return an error
2020-10-03 16:36:20 -04:00
Matt Harvey
6781ac0036
Corrects order of UART RX/TX interrupt enable bits
(per http://byterunner.com/16550.html and manually tested in qemu bare metal echo)
2020-09-14 14:49:57 -07:00
Robert Morris
490f91ab53 move panicked check to uart.c 2020-08-28 09:00:41 -04:00
Robert Morris
748809e1b3 suppress write() output after panic() 2020-08-28 09:00:41 -04:00
Frans Kaashoek
0bb2533f73 Adjust a few prototypes to be explicit that they don't take arguments 2020-08-21 11:00:45 -04:00
Robert Morris
5860dcd07d usertest for exec() out of memory recovery
and fix a few exec() bugs
2020-08-21 11:00:45 -04:00
Robert Morris
95dad4c061 x 2020-08-17 08:18:23 -04:00
Robert Morris
f2ec6777bd fix a bug in the out-of-memory handling code in exec 2020-08-17 08:18:23 -04:00
Robert Morris
8dc71a257d handle another out-of-memory in fork(). the policy here is not consistent,
since other calls (e.g. exec()) panic on out of memory.
2020-08-17 08:18:23 -04:00
Robert Morris
bc51626aab try to handle a few of the possible out-of-memory errors in fork() 2020-08-17 08:18:23 -04:00
Robert Morris
a8dd44cf59 modify uvmunmap() to be in aligned pages
fix a bug in fork() recovering from out of memory
2020-08-17 08:18:23 -04:00
Robert Morris
e283514ad0 pa isn't needed in the uvmunmap() loop 2020-08-17 08:18:23 -04:00
Frans Kaashoek
5dace67371 Typo (thanks yt <jaichenhengjie@qq.com>) 2020-08-10 16:43:33 -04:00
Frans Kaashoek
0502342335
Merge pull request #9 from d0iasm/riscv
update initcode to avoid using the compressed extension
2020-08-10 13:54:58 -04:00
Frans Kaashoek
93ca5550b8
Merge pull request #10 from takahirox/VirtioInterruptAck
Write virtio interrupt ack register in virtio_disk_intr()
2020-08-10 13:24:57 -04:00
Frans Kaashoek
d28c5d9837
Merge pull request #6 from jrrk2/riscv
Update ramdisk.c
2020-08-10 13:14:14 -04:00
Frans Kaashoek
c31d35d803
Merge branch 'riscv' into riscv 2020-08-10 13:05:17 -04:00
Robert Morris
e3b7058907 streamline copyin/copyout code in usertests
fix bugs in read/write return values when there's an error
2020-08-10 11:19:10 -04:00
Frans Kaashoek
1f555198d6 Change tf -> trapframe in a few comments 2020-08-10 11:19:10 -04:00
Robert Morris
7f35d7a14e modify each page in usertests countfree()
get rid of static for walk() and freewalk()
2020-08-10 11:19:10 -04:00
Robert Morris
2ae9c8e272 defines for UART register bits 2020-08-10 11:19:10 -04:00
Robert Morris
0f50e9527c fix printf() in interrupts 2020-08-10 11:19:10 -04:00
Robert Morris
27057bc9b4 interrupt-driven uart output, hopefully a nice example for teaching. 2020-08-10 11:19:10 -04:00
Robert Morris
1e72d5ca08 cpu->scheduler -> cpu->context to reduce confusion 2020-08-10 11:19:10 -04:00
Robert Morris
5494c91705 rename p->tf to p->trapframe, for consistency with p->context 2020-08-10 11:19:10 -04:00
Robert Morris
af9eb9114c make "echo hello > x" truncate file x. 2020-08-10 11:19:10 -04:00
Takahiro
7a5fcb28b3 Write interrupt ack register in virtio_disk_intr() 2020-04-18 14:49:54 -07:00
Asami Doi
8b052656a0 update initcode to avoid using the compressed extension 2020-03-20 12:33:32 +09:00
Jonathan Kimmitt
2b040aa379
Update ramdisk.c
The qemu syntax for a ram disk was documented incorrectly. The documented syntax is here:
https://qemu.weilnetz.de/doc/qemu-doc.html
2020-01-16 15:05:27 +00:00
Robert Morris
028af27646 mention LRU list a bit more in comments. 2019-10-29 04:32:55 -04:00
Robert Morris
e7ffb74ad1 fix a potential memory leak 2019-10-27 13:36:46 -04:00
Robert Morris
d9160fb4b9 nits 2019-10-27 08:03:19 -04:00
Anish Athalye
f2ab0eb644 Clean up linker script
This patch does the following:

- Add .text.* to the .text section in the output
- Add an assertion that the trampoline does not overflow a page
- Add the .rodata section
- Make .sdata and .sdata.* (which is for small data) be absorbed into
  the .data section, because we don't need to distinguish between them;
  this prevents .sdata from appearing in the output
- Make the analogous change for .srodata and .sbss
- Make all the data sections 16-byte aligned

This patch also updates the .editorconfig for *.ld files.
2019-10-21 22:27:18 -04:00
Fumiya Shigemitsu
90eb90b5e2 Fix minor typos 2019-10-21 21:01:07 +09:00
Robert Morris
2821d43cc9 nits 2019-10-16 12:27:08 -04:00
Robert Morris
56583b1402 updated alarmtest 2019-10-03 15:02:19 -04:00
Robert Morris
deaff5d8a6 no buf->qnext 2019-09-24 14:41:51 -04:00
Xi Wang
9ead904afe fix major validation
fileread/filewrite should validate major to avoid buffer overflows
or bogus function pointers.
2019-09-23 20:01:56 -04:00
Robert Morris
37df68e5de story is more complex than I thought. 2019-09-23 07:24:41 -04:00
Robert Morris
d175beadf5 bug fix: reparent() sometimes deadlocked
bug fix: exit() sometimes released a different parent lock than it acquired
usertests
2019-09-23 06:50:25 -04:00
Robert Morris
d940fd122d don't leak memory if exec() arguments are invalid. 2019-09-21 04:54:25 -04:00
Robert Morris
7c7ed20822 don't leak a file system block if the buf argument to write is invalid
and a usertest
2019-09-20 13:09:26 -04:00
Robert Morris
e1a37303c8 yet another sbrk() bug fix, and usertest 2019-09-20 12:13:57 -04:00
Robert Morris
4de161f973 don't panic if a program frees all its memory with sbrk().
if a program sbrk()'s to a non-page-boundary, don't free that page.
corresponding usertests.
2019-09-20 11:35:27 -04:00
Robert Morris
ca30cac702 more incorrect cast to uint 2019-09-20 10:27:03 -04:00
Robert Morris
402e7b5605 fix a potential kernel crash
add a regression test for it
2019-09-20 09:41:03 -04:00
Robert Morris
57e40a0204 nits 2019-09-20 06:02:47 -04:00
Robert Morris
2df42355f7 all of PTE_FLAGS 2019-09-17 06:07:58 -04:00
Robert Morris
036b5edf12 set architecture riscv:rv64 -- fix gdb trampoline disassembly, thanks jonathan 2019-09-12 10:48:48 -04:00
Frans Kaashoek
7e6c37e67e Support exit status for exit/wait
One test case for returning a exit status
Passes usertests, but haven't used it to simplify tests
2019-09-10 12:30:10 -04:00
Frans Kaashoek
035cca95fe Make the end variable be really at the end of bss, and delete + 4096 in freerange() 2019-09-08 15:19:19 -04:00
Robert Morris
e5b7fa62cc thanks to Anthony Coulter 2019-09-08 06:51:58 -04:00
Robert Morris
25e113138d sfence.vma in trampoline as well 2019-09-03 16:29:48 -04:00
Robert Morris
9b9e2dd0f2 fix sfence_vma comment 2019-09-03 16:25:11 -04:00
Robert Morris
86a1d4b295 sfence_vma after satp 2019-09-03 15:45:07 -04:00
Frans Kaashoek
510bcde894 Add major/minor/mkdev
Maybe apply this change to master
2019-08-23 19:41:53 -04:00
Frans Kaashoek
d98ddadd79 Also release buffer on failed copyout 2019-08-20 12:46:56 -04:00
Frans Kaashoek
6005ef5a1c Release buffer also when copyin fails 2019-08-20 11:57:24 -04:00
Frans Kaashoek
d9818b89e1 512 -> BSIZE 2019-08-20 11:56:56 -04:00
Frans Kaashoek
a825f22cf8 Merge remote-tracking branch 'origin/master' into riscv 2019-08-19 19:27:29 -04:00
Frans Kaashoek
21ad8c76bc A few now unused DOC 2019-08-19 18:12:19 -04:00
Frans Kaashoek
e10f797762 Merge remote-tracking branch 'origin/master' into riscv 2019-08-19 13:35:47 -04:00
Frans Kaashoek
2501560cd6 Cosmetic cleanup: fsinit reads sb and calls loginit. initialize icache
in main.c and don't make it disk specific; the icache is shared.  This
doesn't matter since we have only one disk, but conceptually cleaner
and maybe helpful to students for mount lab.
2019-08-18 14:35:11 -04:00