* [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find @ 2021-06-22 12:44 Dov Murik 2021-06-22 12:47 ` Philippe Mathieu-Daudé 0 siblings, 1 reply; 8+ messages in thread From: Dov Murik @ 2021-06-22 12:44 UTC (permalink / raw) To: qemu-devel Cc: Eduardo Habkost, Michael S. Tsirkin, Richard Henderson, Dov Murik, Paolo Bonzini, Philippe Mathieu-Daudé Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> --- hw/i386/pc_sysfw.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c index 6ce37a2b05..e8d20cb83f 100644 --- a/hw/i386/pc_sysfw.c +++ b/hw/i386/pc_sysfw.c @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) ovmf_table += tot_len; } +/** + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's + * reset vector GUIDed table. + * + * @entry: GUID string of the entry to lookup + * @data: Filled with a pointer to the entry's value (if not NULL) + * @data_len: Filled with the length of the entry's value (if not NULL). Pass + * NULL here if the length of data is known. + * + * Note that this function must be called after the OVMF table was found and + * copied by pc_system_parse_ovmf_flash(). + * + * Return: true if the entry was found in the OVMF table; false otherwise. + */ bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, int *data_len) { -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-22 12:44 [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find Dov Murik @ 2021-06-22 12:47 ` Philippe Mathieu-Daudé 2021-06-22 12:58 ` Dov Murik 0 siblings, 1 reply; 8+ messages in thread From: Philippe Mathieu-Daudé @ 2021-06-22 12:47 UTC (permalink / raw) To: Dov Murik, qemu-devel Cc: Paolo Bonzini, Richard Henderson, Eduardo Habkost, Michael S. Tsirkin On 6/22/21 2:44 PM, Dov Murik wrote: > Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> > --- > hw/i386/pc_sysfw.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c > index 6ce37a2b05..e8d20cb83f 100644 > --- a/hw/i386/pc_sysfw.c > +++ b/hw/i386/pc_sysfw.c > @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) > ovmf_table += tot_len; > } > > +/** > + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's > + * reset vector GUIDed table. > + * > + * @entry: GUID string of the entry to lookup > + * @data: Filled with a pointer to the entry's value (if not NULL) > + * @data_len: Filled with the length of the entry's value (if not NULL). Pass > + * NULL here if the length of data is known. > + * > + * Note that this function must be called after the OVMF table was found and > + * copied by pc_system_parse_ovmf_flash(). What about replacing this comment by: assert(ovmf_table && ovmf_table_len); Otherwise, Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Thanks! > + * > + * Return: true if the entry was found in the OVMF table; false otherwise. > + */ > bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, > int *data_len) > { > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-22 12:47 ` Philippe Mathieu-Daudé @ 2021-06-22 12:58 ` Dov Murik 2021-06-28 22:03 ` Tom Lendacky 0 siblings, 1 reply; 8+ messages in thread From: Dov Murik @ 2021-06-22 12:58 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel Cc: Tom Lendacky, Eduardo Habkost, Michael S. Tsirkin, Richard Henderson, Paolo Bonzini +cc: Tom Lendacky On 22/06/2021 15:47, Philippe Mathieu-Daudé wrote: > On 6/22/21 2:44 PM, Dov Murik wrote: >> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> >> --- >> hw/i386/pc_sysfw.c | 14 ++++++++++++++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c >> index 6ce37a2b05..e8d20cb83f 100644 >> --- a/hw/i386/pc_sysfw.c >> +++ b/hw/i386/pc_sysfw.c >> @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) >> ovmf_table += tot_len; >> } >> >> +/** >> + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's >> + * reset vector GUIDed table. >> + * >> + * @entry: GUID string of the entry to lookup >> + * @data: Filled with a pointer to the entry's value (if not NULL) >> + * @data_len: Filled with the length of the entry's value (if not NULL). Pass >> + * NULL here if the length of data is known. >> + * >> + * Note that this function must be called after the OVMF table was found and >> + * copied by pc_system_parse_ovmf_flash(). > > What about replacing this comment by: > > assert(ovmf_table && ovmf_table_len); > I think this will break things: in target/i386/sev.c we have SEV-ES code that calls pc_system_ovmf_table_find() and can deal with the case when there's no OVMF table. An assert will break it. > Otherwise, > > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Thanks! -Dov > Thanks! > >> + * >> + * Return: true if the entry was found in the OVMF table; false otherwise. >> + */ >> bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, >> int *data_len) >> { >> > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-22 12:58 ` Dov Murik @ 2021-06-28 22:03 ` Tom Lendacky 2021-06-29 5:56 ` Dov Murik 0 siblings, 1 reply; 8+ messages in thread From: Tom Lendacky @ 2021-06-28 22:03 UTC (permalink / raw) To: Dov Murik, Philippe Mathieu-Daudé, qemu-devel Cc: Marcel Apfelbaum, Eduardo Habkost, Paolo Bonzini, Michael S. Tsirkin, Richard Henderson On 6/22/21 7:58 AM, Dov Murik wrote: > +cc: Tom Lendacky > > On 22/06/2021 15:47, Philippe Mathieu-Daudé wrote: >> On 6/22/21 2:44 PM, Dov Murik wrote: >>> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>> Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> >>> --- >>> hw/i386/pc_sysfw.c | 14 ++++++++++++++ >>> 1 file changed, 14 insertions(+) >>> >>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c >>> index 6ce37a2b05..e8d20cb83f 100644 >>> --- a/hw/i386/pc_sysfw.c >>> +++ b/hw/i386/pc_sysfw.c >>> @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) >>> ovmf_table += tot_len; >>> } >>> >>> +/** >>> + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's >>> + * reset vector GUIDed table. >>> + * >>> + * @entry: GUID string of the entry to lookup >>> + * @data: Filled with a pointer to the entry's value (if not NULL) >>> + * @data_len: Filled with the length of the entry's value (if not NULL). Pass >>> + * NULL here if the length of data is known. >>> + * >>> + * Note that this function must be called after the OVMF table was found and >>> + * copied by pc_system_parse_ovmf_flash(). >> >> What about replacing this comment by: >> >> assert(ovmf_table && ovmf_table_len); >> > > I think this will break things: in target/i386/sev.c we have SEV-ES code > that calls pc_system_ovmf_table_find() and can deal with the case when > there's no OVMF table. An assert will break it. Right, what would be best is to differentiate between an OVMF table that isn't present in the flash vs the fact that pc_system_parse_ovmf_flash() wasn't called, asserting only on the latter. Thanks, Tom > > >> Otherwise, >> >> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> >> > > Thanks! > > -Dov > > > >> Thanks! >> >>> + * >>> + * Return: true if the entry was found in the OVMF table; false otherwise. >>> + */ >>> bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, >>> int *data_len) >>> { >>> >> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-28 22:03 ` Tom Lendacky @ 2021-06-29 5:56 ` Dov Murik 2021-06-29 7:11 ` Philippe Mathieu-Daudé 2021-06-29 7:29 ` Dov Murik 0 siblings, 2 replies; 8+ messages in thread From: Dov Murik @ 2021-06-29 5:56 UTC (permalink / raw) To: Tom Lendacky, Philippe Mathieu-Daudé, qemu-devel Cc: Eduardo Habkost, Michael S. Tsirkin, James Bottomley, Richard Henderson, Paolo Bonzini On 29/06/2021 1:03, Tom Lendacky wrote: > On 6/22/21 7:58 AM, Dov Murik wrote: >> +cc: Tom Lendacky >> >> On 22/06/2021 15:47, Philippe Mathieu-Daudé wrote: >>> On 6/22/21 2:44 PM, Dov Murik wrote: >>>> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>>> Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> >>>> --- >>>> hw/i386/pc_sysfw.c | 14 ++++++++++++++ >>>> 1 file changed, 14 insertions(+) >>>> >>>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c >>>> index 6ce37a2b05..e8d20cb83f 100644 >>>> --- a/hw/i386/pc_sysfw.c >>>> +++ b/hw/i386/pc_sysfw.c >>>> @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) >>>> ovmf_table += tot_len; >>>> } >>>> >>>> +/** >>>> + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's >>>> + * reset vector GUIDed table. >>>> + * >>>> + * @entry: GUID string of the entry to lookup >>>> + * @data: Filled with a pointer to the entry's value (if not NULL) >>>> + * @data_len: Filled with the length of the entry's value (if not NULL). Pass >>>> + * NULL here if the length of data is known. >>>> + * >>>> + * Note that this function must be called after the OVMF table was found and >>>> + * copied by pc_system_parse_ovmf_flash(). >>> >>> What about replacing this comment by: >>> >>> assert(ovmf_table && ovmf_table_len); >>> >> >> I think this will break things: in target/i386/sev.c we have SEV-ES code >> that calls pc_system_ovmf_table_find() and can deal with the case when >> there's no OVMF table. An assert will break it. > > Right, what would be best is to differentiate between an OVMF table that > isn't present in the flash vs the fact that pc_system_parse_ovmf_flash() > wasn't called, asserting only on the latter. > [+cc James who wrote this code] Thanks Tom; I agree. To achieve that, we need one of these: (a) add a 'static bool ovmf_table_parsed' which will be set to true at the beginning of pc_system_parse_ovmf_flash(). Then, at the beginning of pc_system_ovmf_table_find add: assert(ovmf_table_parsed). (b) (ab)use our existing ovmf_table_len static variable: initialize it to -1 (meaning that we haven't parsed the OVMF flash yet). When looking for the table set it to 0 (meaning that OVMF table doesn't exist or is invalid). When a proper table is found and copied to ovmf_table, then set it to the real length (>= 0). At the beginning of pc_system_ovmf_table_find add: assert(ovmf_table_len != -1). (this -1 can be #define OVMF_FLASH_NOT_PARSED -1). Phil, Tom, James: which do you prefer? other options? Rust enum? ;-) Thanks, Dov > Thanks, > Tom > >> >> >>> Otherwise, >>> >>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>> >> >> Thanks! >> >> -Dov >> >> >> >>> Thanks! >>> >>>> + * >>>> + * Return: true if the entry was found in the OVMF table; false otherwise. >>>> + */ >>>> bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, >>>> int *data_len) >>>> { >>>> >>> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-29 5:56 ` Dov Murik @ 2021-06-29 7:11 ` Philippe Mathieu-Daudé 2021-06-29 13:28 ` Tom Lendacky 2021-06-29 7:29 ` Dov Murik 1 sibling, 1 reply; 8+ messages in thread From: Philippe Mathieu-Daudé @ 2021-06-29 7:11 UTC (permalink / raw) To: Dov Murik, Tom Lendacky, qemu-devel Cc: Eduardo Habkost, Michael S. Tsirkin, James Bottomley, Richard Henderson, Paolo Bonzini On 6/29/21 7:56 AM, Dov Murik wrote: > On 29/06/2021 1:03, Tom Lendacky wrote: >> On 6/22/21 7:58 AM, Dov Murik wrote: >>> +cc: Tom Lendacky >>> >>> On 22/06/2021 15:47, Philippe Mathieu-Daudé wrote: >>>> On 6/22/21 2:44 PM, Dov Murik wrote: >>>>> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>>>> Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> >>>>> --- >>>>> hw/i386/pc_sysfw.c | 14 ++++++++++++++ >>>>> 1 file changed, 14 insertions(+) >>>>> >>>>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c >>>>> index 6ce37a2b05..e8d20cb83f 100644 >>>>> --- a/hw/i386/pc_sysfw.c >>>>> +++ b/hw/i386/pc_sysfw.c >>>>> @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) >>>>> ovmf_table += tot_len; >>>>> } >>>>> >>>>> +/** >>>>> + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's >>>>> + * reset vector GUIDed table. >>>>> + * >>>>> + * @entry: GUID string of the entry to lookup >>>>> + * @data: Filled with a pointer to the entry's value (if not NULL) >>>>> + * @data_len: Filled with the length of the entry's value (if not NULL). Pass >>>>> + * NULL here if the length of data is known. >>>>> + * >>>>> + * Note that this function must be called after the OVMF table was found and >>>>> + * copied by pc_system_parse_ovmf_flash(). >>>> >>>> What about replacing this comment by: >>>> >>>> assert(ovmf_table && ovmf_table_len); >>>> >>> >>> I think this will break things: in target/i386/sev.c we have SEV-ES code >>> that calls pc_system_ovmf_table_find() and can deal with the case when >>> there's no OVMF table. An assert will break it. >> >> Right, what would be best is to differentiate between an OVMF table that >> isn't present in the flash vs the fact that pc_system_parse_ovmf_flash() >> wasn't called, asserting only on the latter. >> > > [+cc James who wrote this code] > > > Thanks Tom; I agree. To achieve that, we need one of these: > > (a) add a 'static bool ovmf_table_parsed' which will be set to true at > the beginning of pc_system_parse_ovmf_flash(). Then, at the beginning of > pc_system_ovmf_table_find add: assert(ovmf_table_parsed). > > (b) (ab)use our existing ovmf_table_len static variable: initialize it > to -1 (meaning that we haven't parsed the OVMF flash yet). When looking > for the table set it to 0 (meaning that OVMF table doesn't exist or is > invalid). When a proper table is found and copied to ovmf_table, then > set it to the real length (>= 0). At the beginning of > pc_system_ovmf_table_find add: assert(ovmf_table_len != -1). (this -1 > can be #define OVMF_FLASH_NOT_PARSED -1). > > > Phil, Tom, James: which do you prefer? other options? Rust enum? ;-) Since we are discussing code that should not be called, I don't have strong preference as long as we keep the code easy to review :) With that in mind, (a) seems simpler. Regards, Phil. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-29 7:11 ` Philippe Mathieu-Daudé @ 2021-06-29 13:28 ` Tom Lendacky 0 siblings, 0 replies; 8+ messages in thread From: Tom Lendacky @ 2021-06-29 13:28 UTC (permalink / raw) To: Philippe Mathieu-Daudé, Dov Murik, qemu-devel Cc: Marcel Apfelbaum, Eduardo Habkost, Paolo Bonzini, Michael S. Tsirkin, Richard Henderson, James Bottomley On 6/29/21 2:11 AM, Philippe Mathieu-Daudé wrote: > On 6/29/21 7:56 AM, Dov Murik wrote: >> On 29/06/2021 1:03, Tom Lendacky wrote: >>> On 6/22/21 7:58 AM, Dov Murik wrote: >> >> (a) add a 'static bool ovmf_table_parsed' which will be set to true at >> the beginning of pc_system_parse_ovmf_flash(). Then, at the beginning of >> pc_system_ovmf_table_find add: assert(ovmf_table_parsed). >> >> (b) (ab)use our existing ovmf_table_len static variable: initialize it >> to -1 (meaning that we haven't parsed the OVMF flash yet). When looking >> for the table set it to 0 (meaning that OVMF table doesn't exist or is >> invalid). When a proper table is found and copied to ovmf_table, then >> set it to the real length (>= 0). At the beginning of >> pc_system_ovmf_table_find add: assert(ovmf_table_len != -1). (this -1 >> can be #define OVMF_FLASH_NOT_PARSED -1). >> >> >> Phil, Tom, James: which do you prefer? other options? Rust enum? ;-) > > Since we are discussing code that should not be called, I don't have > strong preference as long as we keep the code easy to review :) > > With that in mind, (a) seems simpler. Yes, to me (a) seems simpler, too. Thanks, Tom > > Regards, > > Phil. > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find 2021-06-29 5:56 ` Dov Murik 2021-06-29 7:11 ` Philippe Mathieu-Daudé @ 2021-06-29 7:29 ` Dov Murik 1 sibling, 0 replies; 8+ messages in thread From: Dov Murik @ 2021-06-29 7:29 UTC (permalink / raw) To: Tom Lendacky, Philippe Mathieu-Daudé, qemu-devel Cc: Eduardo Habkost, Michael S. Tsirkin, James Bottomley, Richard Henderson, Dov Murik, Paolo Bonzini On 29/06/2021 8:56, Dov Murik wrote: > > > On 29/06/2021 1:03, Tom Lendacky wrote: >> On 6/22/21 7:58 AM, Dov Murik wrote: >>> +cc: Tom Lendacky >>> >>> On 22/06/2021 15:47, Philippe Mathieu-Daudé wrote: >>>> On 6/22/21 2:44 PM, Dov Murik wrote: >>>>> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>>>> Signed-off-by: Dov Murik <dovmurik@linux.ibm.com> >>>>> --- >>>>> hw/i386/pc_sysfw.c | 14 ++++++++++++++ >>>>> 1 file changed, 14 insertions(+) >>>>> >>>>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c >>>>> index 6ce37a2b05..e8d20cb83f 100644 >>>>> --- a/hw/i386/pc_sysfw.c >>>>> +++ b/hw/i386/pc_sysfw.c >>>>> @@ -176,6 +176,20 @@ static void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size) >>>>> ovmf_table += tot_len; >>>>> } >>>>> >>>>> +/** >>>>> + * pc_system_ovmf_table_find - Find the data associated with an entry in OVMF's >>>>> + * reset vector GUIDed table. >>>>> + * >>>>> + * @entry: GUID string of the entry to lookup >>>>> + * @data: Filled with a pointer to the entry's value (if not NULL) >>>>> + * @data_len: Filled with the length of the entry's value (if not NULL). Pass >>>>> + * NULL here if the length of data is known. >>>>> + * >>>>> + * Note that this function must be called after the OVMF table was found and >>>>> + * copied by pc_system_parse_ovmf_flash(). >>>> >>>> What about replacing this comment by: >>>> >>>> assert(ovmf_table && ovmf_table_len); >>>> >>> >>> I think this will break things: in target/i386/sev.c we have SEV-ES code >>> that calls pc_system_ovmf_table_find() and can deal with the case when >>> there's no OVMF table. An assert will break it. >> >> Right, what would be best is to differentiate between an OVMF table that >> isn't present in the flash vs the fact that pc_system_parse_ovmf_flash() >> wasn't called, asserting only on the latter. >> > > [+cc James who wrote this code] > > > Thanks Tom; I agree. To achieve that, we need one of these: > > (a) add a 'static bool ovmf_table_parsed' which will be set to true at > the beginning of pc_system_parse_ovmf_flash(). Then, at the beginning of > pc_system_ovmf_table_find add: assert(ovmf_table_parsed). > > (b) (ab)use our existing ovmf_table_len static variable: initialize it > to -1 (meaning that we haven't parsed the OVMF flash yet). When looking > for the table set it to 0 (meaning that OVMF table doesn't exist or is > invalid). When a proper table is found and copied to ovmf_table, then > set it to the real length (>= 0). typo: That should be (> 0). > At the beginning of > pc_system_ovmf_table_find add: assert(ovmf_table_len != -1). (this -1 > can be #define OVMF_FLASH_NOT_PARSED -1). > > > Phil, Tom, James: which do you prefer? other options? Rust enum? ;-) > > > Thanks, > Dov > > >> Thanks, >> Tom >> >>> >>> >>>> Otherwise, >>>> >>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> >>>> >>> >>> Thanks! >>> >>> -Dov >>> >>> >>> >>>> Thanks! >>>> >>>>> + * >>>>> + * Return: true if the entry was found in the OVMF table; false otherwise. >>>>> + */ >>>>> bool pc_system_ovmf_table_find(const char *entry, uint8_t **data, >>>>> int *data_len) >>>>> { >>>>> >>>> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-06-29 13:29 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-22 12:44 [PATCH] hw/i386/pc: Document pc_system_ovmf_table_find Dov Murik 2021-06-22 12:47 ` Philippe Mathieu-Daudé 2021-06-22 12:58 ` Dov Murik 2021-06-28 22:03 ` Tom Lendacky 2021-06-29 5:56 ` Dov Murik 2021-06-29 7:11 ` Philippe Mathieu-Daudé 2021-06-29 13:28 ` Tom Lendacky 2021-06-29 7:29 ` Dov Murik
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).