On Tue, 11 Dec 2018 at 13:44, Pankaj Bansal <pankaj.bansal@xxxxxxx> wrote: > > > > > -----Original Message----- > > From: Ard Biesheuvel [mailto:ard.biesheuvel@xxxxxxxxxx] > > Sent: Tuesday, December 11, 2018 6:02 PM > > To: Pankaj Bansal <pankaj.bansal@xxxxxxx> > > Cc: Bhupesh Sharma <bhsharma@xxxxxxxxxx>; Mark Rutland > > <mark.rutland@xxxxxxx>; Leif Lindholm <leif.lindholm@xxxxxxxxxx>; Grant > > Likely <grant.likely@xxxxxxx>; Varun Sethi <V.Sethi@xxxxxxx>; Udit Kumar > > <udit.kumar@xxxxxxx>; linux-efi <linux-efi@xxxxxxxxxxxxxxx> > > Subject: Re: [PATCH v2 2/2] drivers: firmware: efi: install new fdt in > > configuration table > > > > On Tue, 11 Dec 2018 at 13:29, Pankaj Bansal <pankaj.bansal@xxxxxxx> wrote: > > > > > > > > > > > > > -----Original Message----- > > > > From: Ard Biesheuvel [mailto:ard.biesheuvel@xxxxxxxxxx] > > > > Sent: Tuesday, December 11, 2018 5:55 PM > > > > To: Pankaj Bansal <pankaj.bansal@xxxxxxx> > > > > Cc: Bhupesh Sharma <bhsharma@xxxxxxxxxx>; Mark Rutland > > > > <mark.rutland@xxxxxxx>; Leif Lindholm <leif.lindholm@xxxxxxxxxx>; > > > > Grant Likely <grant.likely@xxxxxxx>; Varun Sethi <V.Sethi@xxxxxxx>; > > > > Udit Kumar <udit.kumar@xxxxxxx>; linux-efi > > > > <linux-efi@xxxxxxxxxxxxxxx> > > > > Subject: Re: [PATCH v2 2/2] drivers: firmware: efi: install new fdt > > > > in configuration table > > > > > > > > On Tue, 11 Dec 2018 at 13:22, Pankaj Bansal <pankaj.bansal@xxxxxxx> > > wrote: > > > > > > -----Original Message----- > > > > > > From: Bhupesh Sharma [mailto:bhsharma@xxxxxxxxxx] > > > > > > Sent: Tuesday, December 11, 2018 4:25 PM > > > > > > To: Pankaj Bansal <pankaj.bansal@xxxxxxx> > > > > > > Cc: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx>; Mark Rutland > > > > > > <mark.rutland@xxxxxxx>; Leif Lindholm > > > > > > <leif.lindholm@xxxxxxxxxx>; Grant Likely <grant.likely@xxxxxxx>; > > > > > > Varun Sethi <V.Sethi@xxxxxxx>; Udit Kumar <udit.kumar@xxxxxxx>; > > > > > > linux-efi@xxxxxxxxxxxxxxx > > > > > > Subject: Re: [PATCH v2 2/2] drivers: firmware: efi: install new > > > > > > fdt in configuration table > > > > > > > > > > > > Hi Pankaj, > > > > > > > > > > .. > > > > > > Can you please share an example, as the above description is not > > > > > > very clear to me. May be you can include a dt property that you > > > > > > are trying to fix via kernel and what happens in the kernel > > > > > > driver when it is not in > > > > a expected state. > > > > > > > > > > We already do. The "status = "okay";" or "status = "disabled";" is > > > > > added to the > > > > device node in dts file. > > > > > Based on this the device structure is created or not created in > > > > > kernel when > > > > booting. > > > > > > > > > > > > > > > > > Also may be you can share why the boot firmware is not able to > > > > > > set a correct state of the same. > > > > > > > > > > The correct state of device would depend on the user supplied > > > > > parameters and > > > > boot time configuration. > > > > > Boot firmware is able to set the "status" in fdt file in exit boot services. > > > > > > > > But why not before? Why does it have to wait until ExitBootServices() to do > > this? > > > > > > We attempt to apply the user supplied parameters in ExitBootServices. > > > > What does 'user supplied' mean? And why can't you apply them earlier? > > The parameters are not part of uefi firmware. There is separate binary file that > the uefi firmware copies from Nonvolatile flash memory and applied to device. > As I have already said, if we apply them earlier, the boot firmware would not be > able to use these devices. While we want to use these devices in uefi firmware. > How does updating the DT 'status' field prevent you from using the device in UEFI? > > > > > If it fails, then the device state is un deterministic. If it passed, then device can > > be used in kernel. > > > Once there parameters are applied, regardless of they failed or passed, the > > boot firmware cannot use the device. > > > So we have no choice but to apply these parameters when we no longer wish > > to use the device in boot firmware. > > > > > > > This is incorrect. Setting the DT status property does absolutely nothing until > > long after ExitBootServices() completes. So if you want to set the device status, > > you need to do it before invoking the kernel. > > As I have said before, how do we determine "we have invoked kernel or we have invoked any other efi application" ? > We can hit the scenario where > 1. we fetched the efi images (from tftp or from fat partition etc) > 2. we applied the parameters and modified the dts file. > 3. we started the efi image. > 4. The efi image was NOT kernel image but a efi driver. (say hello world) > 5. we are back in uefi firmware, but now we can't use the device. !!! Big problem > > How do I solve this? Why is it not possible to use the device now? Please describe *exactly* how updating the DT status property results in the device no longer being usable in the firmware.