On 01/14/2014 04:20 PM, Roger Pau Monné wrote: > On 14/01/14 17:14, Julien Grall wrote: >> On 01/14/2014 04:08 PM, Roger Pau Monné wrote: >>> On 14/01/14 16:41, Julien Grall wrote: >>>> On 01/14/2014 02:59 PM, Roger Pau Monne wrote: >>>>> +static int >>>>> +xenpv_attach(device_t dev) >>>>> +{ >>>>> + device_t child; >>>>> + >>>>> + if (xen_hvm_domain()) { >>>>> + device_t xenpci; >>>>> + devclass_t dc; >>>>> + >>>>> + /* Make sure xenpci has been attached */ >>>>> + dc = devclass_find("xenpci"); >>>>> + if (dc == NULL) >>>>> + panic("unable to find xenpci devclass"); >>>>> + >>>>> + xenpci = devclass_get_device(dc, 0); >>>>> + if (xenpci == NULL) >>>>> + panic("unable to find xenpci device"); >>>>> + >>>>> + if (!device_is_attached(xenpci)) >>>>> + panic("trying to attach xenpv before xenpci"); >>>>> + } >>>> >>>> Can you use the identify method to add the xenpci device? >>> >>> I don't think so, xenpci is a pci device, it is detected and plugged by >>> the pci bus code. >> >> Oups, I though you are trying to add the device. In this case, the check >> seems pointless. In which case the xenpci couldn't exist? > > It's just a "belt and suspenders", if we attach the xenpv bus without > xenpci being attached first a bunch of things are going to fail, I > though it might be best to print a clear error message about what went > wrong in order to help debug it. I only see one place which could failed, and we are already protected. It's when we are trying to allocate space from grant-table via xenpci_alloc_space. I think this error should be enough to understand the problem. At the same time, it's the same things with xenstore. If grant-table initialization has failed, an error message is just printed and FreeBSD will likely failed later when it will try to initialized the PV disk. -- Julien GrallReceived on Tue Jan 14 2014 - 15:49:27 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:46 UTC