- Queries
- All Stories
- Search
- Advanced Search
- Transactions
- Transaction Logs
Advanced Search
Dec 13 2020
Apr 15 2017
Apr 19 2016
Mar 3 2016
A reminder to make sure you add the appropriate "Approved by" note in the actual commit log.
First commit looks good!
Feb 27 2016
Jan 26 2016
Sep 17 2015
Looks good. Thanks for fixing.
Jul 16 2015
Jul 8 2015
Sorry about that - the delay wasn't intentional :-(
Jul 6 2015
Jul 1 2015
Jun 28 2015
Jun 27 2015
Jun 23 2015
Jun 22 2015
Jun 20 2015
Jun 19 2015
Thanks for the quick turnaround, but this idiom is intentional (I updated the CID a couple of hours ago).
Jun 18 2015
Regarding libxo:
This patch will need to be updated after r284539
https://svnweb.freebsd.org/base?view=revision&revision=284539
Jun 10 2015
In D2762#52988, @tychon wrote:In D2762#52919, @neel wrote:In D2762#52915, @tychon wrote:Thanks Tycho. My responses inline:
This restructuring will be really handy. However, I think it's possible
to unify the handling of 'sysmem' and 'devmem' such that 'sysmem'
differs from 'devmem' only in persistance and accessibility (PROT_*).Since alloc_memseg() is already called by both vm_setup_memory() and
vm_create_devmem() you'll simply need to provide a vanity name for
"lower", "low" and "high" memory to vm_alloc_memseg() when it's
created. Then you can delete the inference that a memsesg is 'RAM'
you get when you encounter a VM_MEMSEG_NAME. You'll also need to
augment vm_alloc_memseg() will to take a persistance argument
which will be set for 'sysmem' and clear for 'devmem'.I think knowing which memory segments represent system memory is useful.
For e.g., I use this in iommu_modify() to only map 'sysmem' in the passthru
device's address space. This enforces consistency with the treatment of other
(emulated) device memory (e.g. AHCI BAR) from the point of view of the
passthru device.It appears beyond just useful but rather an implementation requirement :-)
As a side benefit to treating all memory roughly equal is that you'll
be able to expose the entire guest's memory PA-wise in
/dev/vmm/testvmm.lowermem, /dev/vmm/testvmm.lowmem and
/dev/vmm/testvmm.highmem!That's one way to do it although I don't see it as being functionally
different than mmap(/dev/vmm/vmname).It's not different so there isn't much point.
My point really was that the API as proposed would be impossible for someone with a copy of vmm_dev.h and a binary only vmm.ko to use properly. Not that that someone like that exists but libvmmapi.so and bhyve shouldn't contain too much embedded knowledge of the kernel internals.
Specifically, VM_ALLOC_MEMSEG takes a struct vm_memseg which in no way makes it obvious that when you supply a name you get a devseg and that it's necessary to omit the name when you want to get a "true" memseg. It you add 'int ismemseg' then it would be obvious.
In D2762#52915, @tychon wrote:
Jun 9 2015
Jun 6 2015
Jun 4 2015
Jun 3 2015
May 28 2015
There are many reasons why 'vm_activate_cpu()' might fail.
May 23 2015
May 22 2015
May 21 2015
May 19 2015
May 16 2015
May 12 2015
May 7 2015
Assert that AHCI reads are naturally aligned and do not straddle a 32-bit
boundary.
In D2469#45441, @mav wrote:As I see, reading single byte at offset multiple to 4 this function still return 32-bit value, at next -- 24-bit, etc. Is this expected/acceptable behavior?
May 6 2015
May 4 2015
In D2428#44714, @tychon wrote:Hi,
In most cases it was treated as such, but you've actually got the information to do better. Specifically around line 624 in the newvmm_instruction_emul.c you could set *fault to IDT_SS or IDT_GP. If you think no one will ever care about the specific fault, perhaps renaming fault to is_fault would further cement it's boolean nature.
In D2428#44714, @tychon wrote:Hi,
This looks very nice. My only feedback is that I got confused as to whether or not the "return fault (*fault)" provided by vmm_fetch_instruction was boolean or not. In most cases it was treated as such, but you've actually got the information to do better. Specifically around line 624 in the new vmm_instruction_emul.c you could set *fault to IDT_SS or IDT_GP. If you think no one will ever care about the specific fault, perhaps renaming fault to is_fault would further cement it's boolean nature.
Also as a mini-nit I'd suggest changing 'guest_fault' in the comment to 'fault' to match the function prototype vmm_instruction_emul.h
Tycho
Update all extern function declarations to use 'int *is_fault' consistently.
May 2 2015
May 1 2015
Apr 30 2015
Apr 29 2015
Apr 28 2015
Apr 24 2015
Apr 23 2015
Apr 22 2015
Apr 15 2015
Apr 14 2015
I think that it would be sufficient to test that this still allows ppt to attach to a device dynamically:
- devctl detach ixl4
- devctl set driver pci11:0:3 ppt
(replace ixl4/pci11:0:3 with some unused PCI device from your test machine)
devctl also uses the same BUS_PROBE_NOWILDCARD feature that SR-IOV uses.
The test plan should also verify that VF passthrough still works after this change.
Mar 17 2015
Apologies for the delayed review. I have some comments inline.
Mar 14 2015
Mar 10 2015
Mar 1 2015
In D1983#7, @kostikbel wrote:In D1983#3, @kostikbel wrote:Does IPI_STOP_HARD value must fit into 8 bits ? It is not the same as the spurious vector, which should be innocent as well, but slightly confusing.
There were two restrictions when choosing the value for the IPI_STOP_HARD value:
- 'native_lapic_ipi_vectored()' wants the vector to be less than 256
So if we change the assertion in native_lapic_ipi_vectored(), the IPI_STOP_HARD value could be moved outside the [0,255] range ? I mean, explicitly allow a value in the valid range OR IPI_STOP_HARD, in the assertion.
Feb 28 2015
In D1983#3, @kostikbel wrote:Does IPI_STOP_HARD value must fit into 8 bits ? It is not the same as the spurious vector, which should be innocent as well, but slightly confusing.
Feb 27 2015
Feb 24 2015
Feb 23 2015
Looks good. A couple of minor comments inline.
Jan 18 2015
Jan 14 2015
Dec 30 2014
Tycho, can you accept the revision in phabric?
Then with respect to the other code, I'm a bit curious about the VM_RTC_READ/VM_RTC_WRITE interface. I'd sort of expected a size or length parameter -- perhaps length so the NVRAM component can be bulk import/exported -- but even size would be fine. Another alternative is to make the 'value' or 'retval' uint8_t so it's obvious it's a byte-based.
Does the following seem alright?
int vm_rtc_write(struct vmctx *ctx, int offset, uint8_t value);
int vm_rtc_read(struct vmctx *ctx, int offset, uint8_t *retval);
int vm_rtc_size(struct vmctx *ctx); /* return size of the nvram including the RTC control/status registers */In rereading what I wrote, maybe I was too vague. I think that vm_rtc_write() and vm_rtc_read() are sufficient as the size of the device is well known or at least the consumer of these interfaces would be best served by knowing what they were reading or writing.
My suggestion of 'size' was along the lines of a read/write interface which allowed the access of multiple bytes at once. For one at a time interface, I think vm_rtc_size() can be omitted for simplicity.
I'm still in the process of reviewing this, however at first glance I'm not sure I see any reason to remove the HPET Legacy Routing support.
When you first mentioned it, I assumed that some interface change which made it difficult to support and that it added the to the test matrix. Now seeing the implementation it appears entirely independent from the RTC support.
The reason it appears independent is because I removed LegacyRouting :-)
Since it's not broken and provides additional functionality -- which I can't help bug imagine that some guest out there is relying on -- I don't see the justification from deleting it as there are several other examples of "redundant mechanisms".
LegacyRouting is an optional capability so guests shouldn't be upset if they don't see this capability. I haven't run into any issues with the different guests that I have tested.
Also, LegacyRouting doesn't obviate the need for a complete PIT and RTC device emulation since we'll always need to support guests that depend on them.
The interrupt routing gets complicated with LegacyRouting. For e.g., if LegacyRouting is enabled then RTC periodic interrupts are disconnected from the PIC but the alarm and update-ended interrupts are now routed to the SCI. This is not insurmountable but I don't see a tangible benefit.
In any case the most important reason to deprecate LegacyRouting is because doubles the test matrix.
That is a valid reason... out it goes.
Then with respect to the other code, I'm a bit curious about the VM_RTC_READ/VM_RTC_WRITE interface. I'd sort of expected a size or length parameter -- perhaps length so the NVRAM component can be bulk import/exported -- but even size would be fine. Another alternative is to make the 'value' or 'retval' uint8_t so it's obvious it's a byte-based.
Dec 29 2014
I'm still in the process of reviewing this, however at first glance I'm not sure I see any reason to remove the HPET Legacy Routing support.
When you first mentioned it, I assumed that some interface change which made it difficult to support and that it added the to the test matrix. Now seeing the implementation it appears entirely independent from the RTC support.
Dec 28 2014
Dec 27 2014
Addressed all issues raised in Peter's comments in the new diff.