|
From: | Josef Bacik |
Subject: | Re: [PATCH 1/3] efinet: handle get_status() properly |
Date: | Wed, 5 Aug 2015 16:26:33 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 |
On 08/05/2015 04:04 PM, Andrei Borzenkov wrote:
В Wed, 5 Aug 2015 14:36:37 -0400 Josef Bacik <address@hidden> пишет:The EFI SNP documentation isn't super clear on the value that is returned in txbuf when calling into GetStatus. The documentation says its the pointer to the recycle buffer, but the documentation for Transmit() says that it should be the pointer to the buffer that we transmitted.Actually it says "Recycled transmit buffer address" and further "GetStatus() until the transmitted buffer shows up in the recycled transmit buffer" so it looks reasonably clear to me.On the boxes I'm using it's just a random pointer (usually 0x1). It is definitely transmitting stuff, but the get_status call is not returning the pointer to the txbuf we passed in.Which sounds like firmware bug. To be sure - you observe it also using current GIT master?
This is on git master as of last week, so I have your latest patch efinet: enable hardware filters when opening interfaceand it was still happening. I know what Transmit() says, but GetStatus() says it'll just be a pointer to the recycled transmit buffer address, which to me could mean the pointer to whatever the internal queue was being used by UEFI. Anyway that's not important, what is important is that the current code doesn't work with hardware that exists in the wild. If it's a firmware bug then fine, what do users do if they have buggy firmware that isn't being updated anymore? I think making grub more tolerant to crappy firmware is a good thing. Thanks,
Josef
[Prev in Thread] | Current Thread | [Next in Thread] |