Re: [RFC PATCH 11/11] rust: PCI: add BAR request and ioremap

From: Danilo Krummrich
Date: Tue May 21 2024 - 07:23:04 EST


On 5/21/24 01:27, Miguel Ojeda wrote:
On Mon, May 20, 2024 at 7:27 PM Danilo Krummrich <dakr@xxxxxxxxxx> wrote:
+ let barlen = pdev.resource_len(num)?;
+ if barlen == 0 {
+ return Err(ENOMEM);
+ }
+
+ // SAFETY:
+ // `pdev` is always valid.

Please explain why it is always valid -- the point of a `SAFETY`
comment is not to say something is OK, but why it is so.

+ // `barnr` is checked for validity at the top of the function.

I added pci::Device::resource_len(), since I needed to get the VRAM bar size in Nova.

pci::Device::resource_len() also needs to check for a valid bar index and is used
above, hence the check is implicit. I just forgot to change this comment accordingly.

+ /// Returns the size of the given PCI bar resource.
+ pub fn resource_len(&self, bar: u8) -> Result<bindings::resource_size_t> {

Sometimes `bindings::` in signatures of public methods may be
justified -- is it the case here? Or should a newtype or similar be
provided instead? I only see this function being called inside the
module, anyway.

I agree, I just added this function real quick to let Nova report the VRAM bar size
and forgot to clean this up.


+ /// Mapps an entire PCI-BAR after performing a region-request on it.

Typo.

Cheers,
Miguel