[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Almost working pci-arbiter with rumpdisk

From: Damien Zammit
Subject: Re: Almost working pci-arbiter with rumpdisk
Date: Wed, 24 Feb 2021 22:35:40 +1100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0

On 21/2/21 9:21 pm, Samuel Thibault wrote:
> Mmm. I guess that's missing _hurd_init initialization. It would
> be tricky to separate out the really basic pieces from proc/auth
> initialization, I'd say it will be a lot less tricky to just make
> hurd_pci.c use the dir_readdir RPC directly on the root port instead of
> going through the readdir layer. dir_readdir is not that complex to use.

It seems to be getting stuck on dir_readdir RPC as well:

pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
PCI device_open (irq)
PCI not pci, fallback to kernel
pciaccess: hurd got device master port
PCI device_open (pci)
PCI opening...
PCI open success
enum_devices: pci_port is not null
dir_lookup 1
dir_lookup 2
dir_lookup 3
dir_lookup 4
dir_lookup 5
dir_lookup 6
dir_lookup 7
dir_lookup 8
dir_lookup end
enum_devices: root is not null
enum_devices: got to while loop

static struct dirent *
simple_readdir(mach_port_t port, uint32_t *first_entry)
    struct dirent *e;
    char *data;
    int nentries = 0;
    vm_size_t size;
    int err;
    mach_print ("dir_readdir...");
    err = dir_readdir (port, &data, &size, *first_entry, -1, 0, &nentries);
    mach_print ("done\n");
    if (err) {
        mach_print("dir_readdir failed\n");
        return NULL;
    if (nentries) {
        *first_entry = *first_entry + 1;
        e = (struct dirent *)(data+4);
        return e;
    *first_entry = 0;
    return NULL;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]