disas/riscv.c | 41 ++++++------- hw/riscv/riscv_hart.c | 6 -- hw/riscv/sifive_clint.c | 9 +-- hw/riscv/sifive_e.c | 34 +---------- hw/riscv/sifive_u.c | 65 +++++++-------------- hw/riscv/spike.c | 65 ++++++++------------- hw/riscv/virt.c | 77 +++++++++---------------- include/hw/riscv/sifive_clint.h | 4 ++ include/hw/riscv/sifive_e.h | 5 -- include/hw/riscv/sifive_u.h | 9 ++- include/hw/riscv/spike.h | 15 ++--- include/hw/riscv/virt.h | 17 +++--- target/riscv/cpu.c | 125 ++++++++++++++++++++++------------------ target/riscv/cpu.h | 6 +- target/riscv/cpu_bits.h | 3 - target/riscv/helper.c | 69 ++++++++++++++++------ target/riscv/op_helper.c | 71 ++++++++++++++--------- target/riscv/translate.c | 1 - 18 files changed, 285 insertions(+), 337 deletions(-)
This is a series of bug fixes and code cleanups that we would like to get in before the QEMU 2.12 release. We are respinning v6 of this series to include two new bug fixes. These changes are present in the downstream riscv.org riscv-all branch: - https://github.com/riscv/riscv-qemu/commits/riscv-all This series also addresses post-merge feedback such as updating the cpu initialization model to conform with other architectures as requested by Igor Mammedov. The riscv_isa_string patch has been dropped as it was merged independently. The patch to hold rcu_read_lock when accessing physical memory has been dropped as requested by Paolo Bonzini. * Implements WARL behavior for CSRs that don't support writes * Improves specification conformance of the page table walker * Change access checks from ternary operator to if statements * Checks for misaligned PPNs * Disallow M-mode or S-mode from fetching from User pages * Adds reserved PTE flag check: W or W|X * Set READ flag for PTE X flag if mstatus.mxr is in effect * Improves page walker comments and general readability * Several trivial code cleanups to hw/riscv * Replacing hard coded constants with reference to enums or the machine memory maps. * Remove unnecessary class initialization boilerplate * Adds bounds checks when writing device-tree to ROM * Updates the cpu model to use a more modern interface * Adds hexidecimal instruction bytes to disassembly output * Sets mtval/stval to zero on exceptions without addresses * Critical fix for an mstatus.FS bug when MTTCG is enabled * Fix for incorrect disassembly of addiw instructions v6 * added workaround for critical mstatus.FS MTTCG bug * added fix for incorrect disassembly of addiw v5 * dropped fix for memory allocation bug in riscv_isa_string * dropped Hold rcu_read_lock when accessing memory v4 * added fix for memory allocation bug in riscv_isa_string * trivial fix to remove erroneous comment from translate.c v3 * refactor rcu_read_lock in PTE update to use single unlock * mstatus.mxr is in effect regardless of privilege mode * remove unnecessary class init from riscv_hart * set mtval/stval to zero on exceptions without addresses v2 * remove unused class boilerplate retains qom parent_obj * convert cpu definition towards future model * honor mstatus.mxr flag in page table walker v1 * initial post merge cleanup patch series Michael Clark (26): RISC-V: Make virt create_fdt interface consistent RISC-V: Replace hardcoded constants with enum values RISC-V: Make virt board description match spike RISC-V: Use ROM base address and size from memmap RISC-V: Remove identity_translate from load_elf RISC-V: Mark ROM read-only after copying in code RISC-V: Remove unused class definitions RISC-V: Make sure rom has space for fdt RISC-V: Include intruction hex in disassembly RISC-V: Improve page table walker spec compliance RISC-V: Update E order and I extension order RISC-V: Make some header guards more specific RISC-V: Make virt header comment title consistent RISC-V: Use memory_region_is_ram in pte update RISC-V: Remove EM_RISCV ELF_MACHINE indirection RISC-V: Hardwire satp to 0 for no-mmu case RISC-V: Remove braces from satp case statement RISC-V: riscv-qemu port supports sv39 and sv48 RISC-V: vectored traps are optional RISC-V: No traps on writes to misa,minstret,mcycle RISC-V: Remove support for adhoc X_COP interrupt RISC-V: Convert cpu definition towards future model RISC-V: Clear mtval/stval on exceptions without info RISC-V: Remove erroneous comment from translate.c RISC-V: Fix incorrect disassembly for addiw RISC-V: Workaround for critical mstatus.FS MTTCG bug disas/riscv.c | 41 ++++++------- hw/riscv/riscv_hart.c | 6 -- hw/riscv/sifive_clint.c | 9 +-- hw/riscv/sifive_e.c | 34 +---------- hw/riscv/sifive_u.c | 65 +++++++-------------- hw/riscv/spike.c | 65 ++++++++------------- hw/riscv/virt.c | 77 +++++++++---------------- include/hw/riscv/sifive_clint.h | 4 ++ include/hw/riscv/sifive_e.h | 5 -- include/hw/riscv/sifive_u.h | 9 ++- include/hw/riscv/spike.h | 15 ++--- include/hw/riscv/virt.h | 17 +++--- target/riscv/cpu.c | 125 ++++++++++++++++++++++------------------ target/riscv/cpu.h | 6 +- target/riscv/cpu_bits.h | 3 - target/riscv/helper.c | 69 ++++++++++++++++------ target/riscv/op_helper.c | 71 ++++++++++++++--------- target/riscv/translate.c | 1 - 18 files changed, 285 insertions(+), 337 deletions(-) -- 2.7.0
On 24 March 2018 at 18:13, Michael Clark <mjc@sifive.com> wrote: > This is a series of bug fixes and code cleanups that we would > like to get in before the QEMU 2.12 release. We are respinning > v6 of this series to include two new bug fixes. These changes > are present in the downstream riscv.org riscv-all branch: > > - https://github.com/riscv/riscv-qemu/commits/riscv-all > > This series also addresses post-merge feedback such as updating > the cpu initialization model to conform with other architectures > as requested by Igor Mammedov. Hi. It looks to me like a fair number of these patches are already reviewed, so we don't need to wait on the rest being reviewed to get those into master. My suggestion is that you send a pullrequest now for the reviewed patches, and send a patchset for review for the new ones or the ones that still need review. (If there are patches that are reviewed but depend on earlier ones that need to go in set 2 then they go in set 2 as well.) 26 patches is a lot to still be carrying around much beyond rc1, so I would like to see the size of this set reducing rather than increasing. As the release process moves forward the bar for "can this still go in" gradually goes up -- by about rc3 it is at about "is this a really critical bug or regression from the previous release". (Also something seems to have unhelpfully decided to eat or delay about half of your emails in this patchset :-( Patchew only sees 14 of the 26. Our mailing list server does seem to do that occasionally so that would be my first guess at the culprit, but it's possible it's something at your end.) thanks -- PMM
On Sun, Mar 25, 2018 at 8:03 AM, Peter Maydell <peter.maydell@linaro.org> wrote: > On 24 March 2018 at 18:13, Michael Clark <mjc@sifive.com> wrote: > > This is a series of bug fixes and code cleanups that we would > > like to get in before the QEMU 2.12 release. We are respinning > > v6 of this series to include two new bug fixes. These changes > > are present in the downstream riscv.org riscv-all branch: > > > > - https://github.com/riscv/riscv-qemu/commits/riscv-all > > > > This series also addresses post-merge feedback such as updating > > the cpu initialization model to conform with other architectures > > as requested by Igor Mammedov. > > Hi. It looks to me like a fair number of these patches > are already reviewed, so we don't need to wait on the > rest being reviewed to get those into master. > > My suggestion is that you send a pullrequest now for the > reviewed patches, and send a patchset for review for the > new ones or the ones that still need review. (If there > are patches that are reviewed but depend on earlier ones > that need to go in set 2 then they go in set 2 as well.) > Unfortunately the reviewed patches are mostly just minor cleanups. It's almost not worth making a PR for them as *none* of the reviewed patches are actually bug fixes. They are things like removing unused definitions or replacing hardcoded constants with enums, removing unnesscary braces, etc, etc $ grep Reviewed outgoing/v6-00* outgoing/v6-0001-RISC-V-Make-virt-create_fdt-interface-consistent.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0002-RISC-V-Replace-hardcoded-constants-with-enum-valu.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0003-RISC-V-Make-virt-board-description-match-spike.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0004-RISC-V-Use-ROM-base-address-and-size-from-memmap.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0005-RISC-V-Remove-identity_translate-from-load_elf.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0007-RISC-V-Remove-unused-class-definitions.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0009-RISC-V-Include-intruction-hex-in-disassembly.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0012-RISC-V-Make-some-header-guards-more-specific.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0013-RISC-V-Make-virt-header-comment-title-consistent.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0015-RISC-V-Remove-EM_RISCV-ELF_MACHINE-indirection.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0017-RISC-V-Remove-braces-from-satp-case-statement.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0022-RISC-V-Convert-cpu-definition-towards-future-mode.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> outgoing/v6-0022-RISC-V-Convert-cpu-definition-towards-future-mode.patch:Reviewed-by: Igor Mammedov <imammedo@redhat.com> The unreviewed patches, as I've mentioned many times are the ones that require reading the RISC-V Privileged ISA Specification or are actual bug fixes and hence are harder to review. They are in the maintainer's tree and are what folk who are interested in using RISC-V in QEMU are actually running. I can drop the fix to make ROM read-only it is not critical, however it is a bug fix. I went through with a critical eye and reviewed them myself and picked up a few minor issues, but I believe the patchset as a whole should be fine as long as I can find someone to Ack them. Otherwise we're sort of in a Catch-22 situation. 26 patches is a lot to still be carrying around much > beyond rc1, so I would like to see the size of this set > reducing rather than increasing. As the release process > moves forward the bar for "can this still go in" gradually > goes up -- by about rc3 it is at about "is this a > really critical bug or regression from the previous > release". > > (Also something seems to have unhelpfully decided to eat > or delay about half of your emails in this patchset :-( > Patchew only sees 14 of the 26. Our mailing list server > does seem to do that occasionally so that would be my > first guess at the culprit, but it's possible it's > something at your end.) > Phil asked that I send out only the patches that don't have review, so that's what I did.
On Mon, Mar 26, 2018 at 11:07 AM, Michael Clark <mjc@sifive.com> wrote: > > > On Sun, Mar 25, 2018 at 8:03 AM, Peter Maydell <peter.maydell@linaro.org> > wrote: > >> On 24 March 2018 at 18:13, Michael Clark <mjc@sifive.com> wrote: >> > This is a series of bug fixes and code cleanups that we would >> > like to get in before the QEMU 2.12 release. We are respinning >> > v6 of this series to include two new bug fixes. These changes >> > are present in the downstream riscv.org riscv-all branch: >> > >> > - https://github.com/riscv/riscv-qemu/commits/riscv-all >> > >> > This series also addresses post-merge feedback such as updating >> > the cpu initialization model to conform with other architectures >> > as requested by Igor Mammedov. >> >> Hi. It looks to me like a fair number of these patches >> are already reviewed, so we don't need to wait on the >> rest being reviewed to get those into master. >> >> My suggestion is that you send a pullrequest now for the >> reviewed patches, and send a patchset for review for the >> new ones or the ones that still need review. (If there >> are patches that are reviewed but depend on earlier ones >> that need to go in set 2 then they go in set 2 as well.) >> > > Unfortunately the reviewed patches are mostly just minor cleanups. It's > almost not worth making a PR for them as *none* of the reviewed patches are > actually bug fixes. They are things like removing unused definitions or > replacing hardcoded constants with enums, removing unnesscary braces, etc, > etc > Apologies. There is one bug fix in the subset of reviewed patches. the -cpu model changes. > $ grep Reviewed outgoing/v6-00* > outgoing/v6-0001-RISC-V-Make-virt-create_fdt-interface-consistent.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0002-RISC-V-Replace-hardcoded-constants- > with-enum-valu.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0003-RISC-V-Make-virt-board-description-match-spike.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0004-RISC-V-Use-ROM-base-address-and-size-from-memmap.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0005-RISC-V-Remove-identity_translate- > from-load_elf.patch:Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0007-RISC-V-Remove-unused-class-definitions.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0009-RISC-V-Include-intruction-hex-in-disassembly.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0012-RISC-V-Make-some-header-guards-more-specific.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0013-RISC-V-Make-virt-header-comment-title-consistent.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0015-RISC-V-Remove-EM_RISCV-ELF_MACHINE-indirection.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0017-RISC-V-Remove-braces-from-satp-case-statement.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0022-RISC-V-Convert-cpu-definition-towards-future-mode.patch:Reviewed-by: > Philippe Mathieu-Daudé <f4bug@amsat.org> > outgoing/v6-0022-RISC-V-Convert-cpu-definition-towards-future-mode.patch:Reviewed-by: > Igor Mammedov <imammedo@redhat.com> > > The unreviewed patches, as I've mentioned many times are the ones that > require reading the RISC-V Privileged ISA Specification or are actual bug > fixes and hence are harder to review. They are in the maintainer's tree and > are what folk who are interested in using RISC-V in QEMU are actually > running. > > I can drop the fix to make ROM read-only it is not critical, however it is > a bug fix. I went through with a critical eye and reviewed them myself and > picked up a few minor issues, but I believe the patchset as a whole should > be fine as long as I can find someone to Ack them. Otherwise we're sort of > in a Catch-22 situation. > Most of the spec compliance bug fixes are innocuous when it comes to running Linux, nevertheless, they are bugs and will be exposed by future verification and compliance tests. The only really critical bug fix is 26/26 mstatus.FS. Igor's fix for the cpu model 22/26 is important as it addresses remaining review feedback with the initial port submission. 25/26 is a user-visible bugfix for the disassembler which is important for anyone using -d in_asm. I'm pretty comfortable with the amount of testing this series has had despite the lack of review. Testing is also important. The FDT ROM truncation issue fixed by 8/26 isn't seen in practice but it was seen during development as i've been working on patches to separate the bbl bootloader from the linux kernel (currently the kernel is embedded as a payload in embedded in the monitor firmware). I would like to change the ports to use -bios to load firmware and -kernel can then point to a regular linux kernel and we can indicate to the firmware where the kernel is loaded using a device-tree chosen entry (as some other ports do). That work is not included in this series. C=cleanup, B=bugfix, I=important bugfix, S=spec compliance bugfix, X=critical bugfix, R=reviewed C R [PATCH v6 01/26] RISC-V: Make virt create_fdt interface consistent C R [PATCH v6 02/26] RISC-V: Replace hardcoded constants with enum values C R [PATCH v6 03/26] RISC-V: Make virt board description match spike C R [PATCH v6 04/26] RISC-V: Use ROM base address and size from memmap C R [PATCH v6 05/26] RISC-V: Remove identity_translate from load_elf B - [PATCH v6 06/26] RISC-V: Mark ROM read-only after copying in code C R [PATCH v6 07/26] RISC-V: Remove unused class definitions B - [PATCH v6 08/26] RISC-V: Make sure rom has space for fdt C R [PATCH v6 09/26] RISC-V: Include instruction hex in disassembly S - [PATCH v6 10/26] RISC-V: Improve page table walker spec compliance S - [PATCH v6 11/26] RISC-V: Update E order and I extension order C R [PATCH v6 12/26] RISC-V: Make some header guards more specific C R [PATCH v6 13/26] RISC-V: Make virt header comment title consistent B - [PATCH v6 14/26] RISC-V: Use memory_region_is_ram in pte update C R [PATCH v6 15/26] RISC-V: Remove EM_RISCV ELF_MACHINE indirection S - [PATCH v6 16/26] RISC-V: Hardwire satp to 0 for no-mmu case C R [PATCH v6 17/26] RISC-V: Remove braces from satp case statement B - [PATCH v6 18/26] RISC-V: riscv-qemu port supports sv39 and sv48 S - [PATCH v6 19/26] RISC-V: vectored traps are optional S - [PATCH v6 20/26] RISC-V: No traps on writes to misa,minstret,mcycle C - [PATCH v6 21/26] RISC-V: Remove support for adhoc X_COP interrupt I R [PATCH v6 22/26] RISC-V: Convert cpu definition towards future model B - [PATCH v6 23/26] RISC-V: Clear mtval/stval on exceptions without info C - [PATCH v6 24/26] RISC-V: Remove erroneous comment from translate.c I - [PATCH v6 25/26] RISC-V: Fix incorrect disassembly for addiw X - [PATCH v6 26/26] RISC-V: Workaround for critical mstatus.FS MTTCG bug > 26 patches is a lot to still be carrying around much >> beyond rc1, so I would like to see the size of this set >> reducing rather than increasing. As the release process >> moves forward the bar for "can this still go in" gradually >> goes up -- by about rc3 it is at about "is this a >> really critical bug or regression from the previous >> release". >> >> (Also something seems to have unhelpfully decided to eat >> or delay about half of your emails in this patchset :-( >> Patchew only sees 14 of the 26. Our mailing list server >> does seem to do that occasionally so that would be my >> first guess at the culprit, but it's possible it's >> something at your end.) >> > > Phil asked that I send out only the patches that don't have review, so > that's what I did. >
On Mon, Mar 26, 2018 at 4:14 PM, Michael Clark <mjc@sifive.com> wrote: > > > On Mon, Mar 26, 2018 at 11:07 AM, Michael Clark <mjc@sifive.com> wrote: > >> >> >> On Sun, Mar 25, 2018 at 8:03 AM, Peter Maydell <peter.maydell@linaro.org> >> wrote: >> >>> On 24 March 2018 at 18:13, Michael Clark <mjc@sifive.com> wrote: >>> > This is a series of bug fixes and code cleanups that we would >>> > like to get in before the QEMU 2.12 release. We are respinning >>> > v6 of this series to include two new bug fixes. These changes >>> > are present in the downstream riscv.org riscv-all branch: >>> > >>> > - https://github.com/riscv/riscv-qemu/commits/riscv-all >>> > >>> > This series also addresses post-merge feedback such as updating >>> > the cpu initialization model to conform with other architectures >>> > as requested by Igor Mammedov. >>> >>> Hi. It looks to me like a fair number of these patches >>> are already reviewed, so we don't need to wait on the >>> rest being reviewed to get those into master. >>> >>> My suggestion is that you send a pullrequest now for the >>> reviewed patches, and send a patchset for review for the >>> new ones or the ones that still need review. (If there >>> are patches that are reviewed but depend on earlier ones >>> that need to go in set 2 then they go in set 2 as well.) >>> >> >> Unfortunately the reviewed patches are mostly just minor cleanups. It's >> almost not worth making a PR for them as *none* of the reviewed patches are >> actually bug fixes. They are things like removing unused definitions or >> replacing hardcoded constants with enums, removing unnesscary braces, etc, >> etc >> > > Apologies. There is one bug fix in the subset of reviewed patches. the > -cpu model changes. > > >> $ grep Reviewed outgoing/v6-00* >> outgoing/v6-0001-RISC-V-Make-virt-create_fdt-interface-consistent.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0002-RISC-V-Replace-hardcoded-constants-with-enum-valu.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0003-RISC-V-Make-virt-board-description-match-spike.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0004-RISC-V-Use-ROM-base-address-and-size-from-memmap.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0005-RISC-V-Remove-identity_translate-from-load_elf.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0007-RISC-V-Remove-unused-class-definitions.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0009-RISC-V-Include-intruction-hex-in-disassembly.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0012-RISC-V-Make-some-header-guards-more-specific.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0013-RISC-V-Make-virt-header-comment-title-consistent.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0015-RISC-V-Remove-EM_RISCV-ELF_MACHINE-indirection.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0017-RISC-V-Remove-braces-from-satp-case-statement.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0022-RISC-V-Convert-cpu-definition-towards-future-mode.patch:Reviewed-by: >> Philippe Mathieu-Daudé <f4bug@amsat.org> >> outgoing/v6-0022-RISC-V-Convert-cpu-definition-towards-future-mode.patch:Reviewed-by: >> Igor Mammedov <imammedo@redhat.com> >> >> The unreviewed patches, as I've mentioned many times are the ones that >> require reading the RISC-V Privileged ISA Specification or are actual bug >> fixes and hence are harder to review. They are in the maintainer's tree and >> are what folk who are interested in using RISC-V in QEMU are actually >> running. >> >> I can drop the fix to make ROM read-only it is not critical, however it >> is a bug fix. I went through with a critical eye and reviewed them myself >> and picked up a few minor issues, but I believe the patchset as a whole >> should be fine as long as I can find someone to Ack them. Otherwise we're >> sort of in a Catch-22 situation. >> > > Most of the spec compliance bug fixes are innocuous when it comes to > running Linux, nevertheless, they are bugs and will be exposed by future > verification and compliance tests. The only really critical bug fix is > 26/26 mstatus.FS. Igor's fix for the cpu model 22/26 is important as it > addresses remaining review feedback with the initial port submission. 25/26 > is a user-visible bugfix for the disassembler which is important for anyone > using -d in_asm. I'm pretty comfortable with the amount of testing this > series has had despite the lack of review. Testing is also important. > > The FDT ROM truncation issue fixed by 8/26 isn't seen in practice but it > was seen during development as i've been working on patches to separate the > bbl bootloader from the linux kernel (currently the kernel is embedded as a > payload in embedded in the monitor firmware). I would like to change the > ports to use -bios to load firmware and -kernel can then point to a regular > linux kernel and we can indicate to the firmware where the kernel is loaded > using a device-tree chosen entry (as some other ports do). That work is not > included in this series. > > C=cleanup, B=bugfix, I=important bugfix, S=spec compliance bugfix, X=critical > bugfix, R=reviewed > > C R [PATCH v6 01/26] RISC-V: Make virt create_fdt interface consistent > C R [PATCH v6 02/26] RISC-V: Replace hardcoded constants with enum values > C R [PATCH v6 03/26] RISC-V: Make virt board description match spike > C R [PATCH v6 04/26] RISC-V: Use ROM base address and size from memmap > C R [PATCH v6 05/26] RISC-V: Remove identity_translate from load_elf > B - [PATCH v6 06/26] RISC-V: Mark ROM read-only after copying in code > C R [PATCH v6 07/26] RISC-V: Remove unused class definitions > B - [PATCH v6 08/26] RISC-V: Make sure rom has space for fdt > C R [PATCH v6 09/26] RISC-V: Include instruction hex in disassembly > S - [PATCH v6 10/26] RISC-V: Improve page table walker spec compliance > S - [PATCH v6 11/26] RISC-V: Update E order and I extension order > C R [PATCH v6 12/26] RISC-V: Make some header guards more specific > C R [PATCH v6 13/26] RISC-V: Make virt header comment title consistent > B - [PATCH v6 14/26] RISC-V: Use memory_region_is_ram in pte update > C R [PATCH v6 15/26] RISC-V: Remove EM_RISCV ELF_MACHINE indirection > S - [PATCH v6 16/26] RISC-V: Hardwire satp to 0 for no-mmu case > C R [PATCH v6 17/26] RISC-V: Remove braces from satp case statement > B - [PATCH v6 18/26] RISC-V: riscv-qemu port supports sv39 and sv48 > S - [PATCH v6 19/26] RISC-V: vectored traps are optional > S - [PATCH v6 20/26] RISC-V: No traps on writes to misa,minstret,mcycle > C - [PATCH v6 21/26] RISC-V: Remove support for adhoc X_COP interrupt > I R [PATCH v6 22/26] RISC-V: Convert cpu definition towards future model > B - [PATCH v6 23/26] RISC-V: Clear mtval/stval on exceptions without info > C - [PATCH v6 24/26] RISC-V: Remove erroneous comment from translate.c > I - [PATCH v6 25/26] RISC-V: Fix incorrect disassembly for addiw > X - [PATCH v6 26/26] RISC-V: Workaround for critical mstatus.FS MTTCG bug > > > >> 26 patches is a lot to still be carrying around much >>> beyond rc1, so I would like to see the size of this set >>> reducing rather than increasing. As the release process >>> moves forward the bar for "can this still go in" gradually >>> goes up -- by about rc3 it is at about "is this a >>> really critical bug or regression from the previous >>> release". >>> >> I've made a tag for the series including the fixes from my own review during the weekend (one logic fix and 2 comment of commit log typos, and a patch hunk in the wrong commit): - https://github.com/riscv/riscv-qemu/releases/tag/riscv-qemu-2.12-fixes-v7 That said, if you want important or critical fixes only, then i'd suggest these at least these 3: I R [PATCH v6 22/26] RISC-V: Convert cpu definition towards future model I - [PATCH v6 25/26] RISC-V: Fix incorrect disassembly for addiw X - [PATCH v6 26/26] RISC-V: Workaround for critical mstatus.FS MTTCG bug The other patches are the 23 patches which were accidentially included in the initial pull on March 8, now with Signed-off-by, less the one that Paolo asked me to drop. Most of the bugs are relatively innocuous except for the mstatus.FS fix. Linux boots on upstream QEMU but has FPU register file corruption when SMP is enabled. I need advice as to which fixes you want to have included in QEMU 2.12. I'm not sure if the reviewed set is the right set as it excludes 25/26 and more importantly 26/26. (Also something seems to have unhelpfully decided to eat >>> or delay about half of your emails in this patchset :-( >>> Patchew only sees 14 of the 26. Our mailing list server >>> does seem to do that occasionally so that would be my >>> first guess at the culprit, but it's possible it's >>> something at your end.) >>> >> >> Phil asked that I send out only the patches that don't have review, so >> that's what I did. >> > >
On Mon, Mar 26, 2018 at 04:45:34PM -0700, Michael Clark wrote: > I've made a tag for the series including the fixes from my own review > during the weekend (one logic fix and 2 comment of commit log typos, and a > patch hunk in the wrong commit): > > - https://github.com/riscv/riscv-qemu/releases/tag/riscv-qemu-2.12-fixes-v7 > > That said, if you want important or critical fixes only, then i'd suggest > these at least these 3: > > I R [PATCH v6 22/26] RISC-V: Convert cpu definition towards future model > I - [PATCH v6 25/26] RISC-V: Fix incorrect disassembly for addiw > X - [PATCH v6 26/26] RISC-V: Workaround for critical mstatus.FS MTTCG bug > > The other patches are the 23 patches which were accidentially included in > the initial pull on March 8, now with Signed-off-by, less the one that > Paolo asked me to drop. > > Most of the bugs are relatively innocuous except for the mstatus.FS fix. > Linux boots on upstream QEMU but has FPU register file corruption when SMP > is enabled. Even innocuous bug fixes are still welcome before rc2 is released. > I need advice as to which fixes you want to have included in QEMU 2.12. I'm > not sure if the reviewed set is the right set as it excludes 25/26 and more > importantly 26/26. We've got rc1 now, but you can still send pull requests for pretty much any kind of bug fix to get into the rc2 release, assuming the patches have a Reviewed-by, and are not excessively complicated or likely to cause regressions. After rc2 is out you want to only be sending important bug fixes, that users cannot wait for. After rc3 is out, ideally we won't find any more important bugs that need fixing. A bug would have to be really severe to justify including at that stage. Based on your description, patches 22/25/26 definitely still welcome in a pull request before rc2 or rc3. The more innocuous patches can also still be sent if you can do send a pull request for them pretty much straightaway before rc2. You'll obviously need to chase reviews for the few that miss them still. We're slightly unlucky in this release that the time between rc1 and rc2 falls over Easter weekend and Peter is on holiday, so has pretty limited time for dealing with pull requests. So you want to do what you can to minimize the work that Peter has to do, and minimize risk that a patch will fail build or automated testing, as that risks having the PR rejected. This is why it is worth sending patches in smaller groups. If you sent 20 patches at once and the last one fails, all 20 patches get rejected. If you send two batches of 10 you would at least get some of them off your plate, even if they are innocuous fixes. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On 26 March 2018 at 19:07, Michael Clark <mjc@sifive.com> wrote: > On Sun, Mar 25, 2018 at 8:03 AM, Peter Maydell <peter.maydell@linaro.org> > wrote: >> Hi. It looks to me like a fair number of these patches >> are already reviewed, so we don't need to wait on the >> rest being reviewed to get those into master. >> >> My suggestion is that you send a pullrequest now for the >> reviewed patches, and send a patchset for review for the >> new ones or the ones that still need review. (If there >> are patches that are reviewed but depend on earlier ones >> that need to go in set 2 then they go in set 2 as well.) >> > > Unfortunately the reviewed patches are mostly just minor cleanups. It's > almost not worth making a PR for them as *none* of the reviewed patches are > actually bug fixes. They are things like removing unused definitions or > replacing hardcoded constants with enums, removing unnesscary braces, etc, > etc No, what I'm saying is that it is very much worth it. You want to shorten the size of your set of uncommitted patches. Large pull requests increase the chances that some random thing in there hits a compile issue or other minor problem that means I have to bounce the whole thing and you need to respin it. Smaller ones are more likely to go in. This is especially true during the freeze part of the release cycle, when we do an RC every week -- having patches in earlier RCs reduces the risk. I do not want to still see a 26 patch set unapplied by the time we get to RC3 or RC4. Or if you don't think the minor cleanups are worth putting into 2.12, that's fine too (it's a submaintainer judgement you can make). In that case you can put those to one side and trim down the size of the patchset you're sending out (ie make it an 01/11...11/11 patchset or whatever). > 26 patches is a lot to still be carrying around much >> beyond rc1, so I would like to see the size of this set >> reducing rather than increasing. As the release process >> moves forward the bar for "can this still go in" gradually >> goes up -- by about rc3 it is at about "is this a >> really critical bug or regression from the previous >> release". >> >> (Also something seems to have unhelpfully decided to eat >> or delay about half of your emails in this patchset :-( >> Patchew only sees 14 of the 26. Our mailing list server >> does seem to do that occasionally so that would be my >> first guess at the culprit, but it's possible it's >> something at your end.) >> > > Phil asked that I send out only the patches that don't have review, so > that's what I did. I think that was a miscommunication. You should always send out entire patchsets, not just parts of one. Philippe said: https://lists.gnu.org/archive/html/qemu-devel/2018-03/msg06038.html "You could have sent a PR of the reviewed patches, and respin the unreviewed patches separately.", which is the same thing I'm suggesting here. thanks -- PMM
On Tue, Mar 27, 2018 at 2:42 AM, Peter Maydell <peter.maydell@linaro.org> wrote: > On 26 March 2018 at 19:07, Michael Clark <mjc@sifive.com> wrote: > > On Sun, Mar 25, 2018 at 8:03 AM, Peter Maydell <peter.maydell@linaro.org > > > > wrote: > >> Hi. It looks to me like a fair number of these patches > >> are already reviewed, so we don't need to wait on the > >> rest being reviewed to get those into master. > >> > >> My suggestion is that you send a pullrequest now for the > >> reviewed patches, and send a patchset for review for the > >> new ones or the ones that still need review. (If there > >> are patches that are reviewed but depend on earlier ones > >> that need to go in set 2 then they go in set 2 as well.) > >> > > > > Unfortunately the reviewed patches are mostly just minor cleanups. It's > > almost not worth making a PR for them as *none* of the reviewed patches > are > > actually bug fixes. They are things like removing unused definitions or > > replacing hardcoded constants with enums, removing unnesscary braces, > etc, > > etc > > No, what I'm saying is that it is very much worth it. You > want to shorten the size of your set of uncommitted patches. > Large pull requests increase the chances that some > random thing in there hits a compile issue or other minor > problem that means I have to bounce the whole thing and > you need to respin it. Smaller ones are more likely to > go in. This is especially true during the freeze part > of the release cycle, when we do an RC every week -- having > patches in earlier RCs reduces the risk. I do not want > to still see a 26 patch set unapplied by the time we get > to RC3 or RC4. > > Or if you don't think the minor cleanups are worth putting > into 2.12, that's fine too (it's a submaintainer judgement > you can make). In that case you can put those to one side > and trim down the size of the patchset you're sending out > (ie make it an 01/11...11/11 patchset or whatever). I'm not sure whether maintainer or submaintainer is really that relavant. Active maintainership is probably more relevant. i.e. responding to RISC-V related emails, PRs, issues on the riscv.org qemu repo, testing PRs before merging them, etc, etc. I'm going to focus on getting the critical bug fixes in for QEMU 2.12 i.e. the ones that break RISC-V Linux in QEMU 2.12 e.g. the mstatus.FS fix. User visible bugs like the disassembler bug and the -cpu list bug. I'm going to make a 3 patch series... possibly a 2 patch series... we can leave the disassembler bug there and just include Igor's change and the mstatus.FS workaround. I don't think writable ROM is really that critical, and bounds checks for potential device-tree truncation are just nice-to-haves. Spec conformance is nice-to-have if we are triaging against critical issues. Once we can ensure we have a working RISC-V port for QEMU 2.12 we can then worry about spec conformance bug fixes and tidy ups, perhaps for QEMU 2.13. My pesonal opinion is that Tested-by: should carry more weight than Reviewed-by: assuming Reviewed-by: only means someone has reviewed the code versus checking out and testing that a critical bug has been resolved by said patch. That said, if all QEMU patches need Reviewed-by: then there is not much we can do. In GCC and Linux, subsystem maintainers are allowed to make judgements over the inclusion of critical bug fixes. i.e. Reviewed-by: is not mandatory if the change is a critical fix. I will divide the series up into 3 branches, and move through them in order of priority, with correctness ahead of tidyness: 1). riscv-qemu-2.12-critical-fixes 2). riscv-qemu-2.13-bug-fixes 3). riscv-qemu-2.13-tidy-ups Expect to see riscv-qemu-2.12-critical-fixes very soon... > 26 patches is a lot to still be carrying around much > >> beyond rc1, so I would like to see the size of this set > >> reducing rather than increasing. As the release process > >> moves forward the bar for "can this still go in" gradually > >> goes up -- by about rc3 it is at about "is this a > >> really critical bug or regression from the previous > >> release". > >> > >> (Also something seems to have unhelpfully decided to eat > >> or delay about half of your emails in this patchset :-( > >> Patchew only sees 14 of the 26. Our mailing list server > >> does seem to do that occasionally so that would be my > >> first guess at the culprit, but it's possible it's > >> something at your end.) > >> > > > > Phil asked that I send out only the patches that don't have review, so > > that's what I did. > > I think that was a miscommunication. You should always > send out entire patchsets, not just parts of one. > Philippe said: > https://lists.gnu.org/archive/html/qemu-devel/2018-03/msg06038.html > "You could have sent a PR of the reviewed patches, and > respin the unreviewed patches separately.", which is the > same thing I'm suggesting here. My mistake.
On Tue, Mar 27, 2018 at 11:39 AM, Michael Clark <mjc@sifive.com> wrote: > > I will divide the series up into 3 branches, and move through them in > order of priority, with correctness ahead of tidyness: > > 1). riscv-qemu-2.12-critical-fixes > 2). riscv-qemu-2.13-bug-fixes > 3). riscv-qemu-2.13-tidy-ups > I think we need 4 categories: 1). riscv-qemu-2.12-critical-fixes - floating point register file corruption mstatus.FS 2). riscv-qemu-2.12-important-fixes - user visible bugs, e.g. Igor's -cpu list bug, wrong dissassembly for sext.w/addiw bug 3). riscv-qemu-2.13-bug-fixes - spec bugs and other innocuous bug fixes that are not /yet/ user visible. i.e. not exercised by RISC-V Linux 4). riscv-qemu-2.13-tidy-ups - code cleanups
© 2016 - 2024 Red Hat, Inc.