* Re: [PATCH libdrm] xf86drm: Parse the separate files to retrieve the vendor/device info
From: Mauro Santos @ 2016-11-08 18:08 UTC (permalink / raw)
To: Emil Velikov; +Cc: Michel Dänzer, ML dri-devel
In-Reply-To: <CACvgo51Q=xGYtuKPY0crhqiMPj_dH_ZOXAJ-u+A95SQvhhN9HA@mail.gmail.com>
On 08-11-2016 17:13, Emil Velikov wrote:
> On 8 November 2016 at 16:57, Mauro Santos <registo.mailling@gmail.com> wrote:
>> On 08-11-2016 15:57, Emil Velikov wrote:
>>> On 8 November 2016 at 15:27, Mauro Santos <registo.mailling@gmail.com> wrote:
>>>> On 08-11-2016 15:00, Emil Velikov wrote:
>>>>> On 8 November 2016 at 13:38, Mauro Santos <registo.mailling@gmail.com> wrote:
>>>>>> On 08-11-2016 11:06, Emil Velikov wrote:
>>>>>>> On 1 November 2016 at 18:47, Mauro Santos <registo.mailling@gmail.com> wrote:
>>>>>>>> On 01-11-2016 18:13, Emil Velikov wrote:
>>>>>>>>> From: Emil Velikov <emil.velikov@collabora.com>
>>>>>>>>>
>>>>>>>>> Parsing config sysfs file wakes up the device. The latter of which may
>>>>>>>>> be slow and isn't required to begin with.
>>>>>>>>>
>>>>>>>>> Reading through config is/was required since the revision is not
>>>>>>>>> available by other means, although with a kernel patch in the way we can
>>>>>>>>> 'cheat' temporarily.
>>>>>>>>>
>>>>>>>>> That should be fine, since no open-source project has ever used the
>>>>>>>>> value.
>>>>>>>>>
>>>>>>>>> Cc: Michel Dänzer <michel.daenzer@amd.com>
>>>>>>>>> Cc: Mauro Santos <registo.mailling@gmail.com>
>>>>>>>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98502
>>>>>>>>> Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
>>>>>>>>> ---
>>>>>>>>> Mauro can you apply this against libdrm and rebuild it. You do _not_
>>>>>>>>> need to rebuild mesa afterwords.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> ---
>>>>>>>>> xf86drm.c | 50 +++++++++++++++++++++++++++++++++++---------------
>>>>>>>>> 1 file changed, 35 insertions(+), 15 deletions(-)
>>>>>>>>>
>>>>>>>>> diff --git a/xf86drm.c b/xf86drm.c
>>>>>>>>> index 52add5e..5a5100c 100644
>>>>>>>>> --- a/xf86drm.c
>>>>>>>>> +++ b/xf86drm.c
>>>>>>>>> @@ -2950,25 +2950,45 @@ static int drmParsePciDeviceInfo(const char *d_name,
>>>>>>>>> drmPciDeviceInfoPtr device)
>>>>>>>>> {
>>>>>>>>> #ifdef __linux__
>>>>>>>>> +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
>>>>>>>>> + static const char *attrs[] = {
>>>>>>>>> + "revision", /* XXX: make sure it's always first, see note below */
>>>>>>>>> + "vendor",
>>>>>>>>> + "device",
>>>>>>>>> + "subsystem_vendor",
>>>>>>>>> + "subsystem_device",
>>>>>>>>> + };
>>>>>>>>> char path[PATH_MAX + 1];
>>>>>>>>> - unsigned char config[64];
>>>>>>>>> - int fd, ret;
>>>>>>>>> + unsigned int data[ARRAY_SIZE(attrs)];
>>>>>>>>> + FILE *fp;
>>>>>>>>> + int ret;
>>>>>>>>>
>>>>>>>>> - snprintf(path, PATH_MAX, "/sys/class/drm/%s/device/config", d_name);
>>>>>>>>> - fd = open(path, O_RDONLY);
>>>>>>>>> - if (fd < 0)
>>>>>>>>> - return -errno;
>>>>>>>>> + for (unsigned i = 0; i < ARRAY_SIZE(attrs); i++) {
>>>>>>>>> + snprintf(path, PATH_MAX, "/sys/class/drm/%s/device/%s",
>>>>>>>>> + d_name, attrs[i]);
>>>>>>>>> + fp = fopen(path, "r");
>>>>>>>>> + if (!fp) {
>>>>>>>>> + /* Note: First we check the revision, since older kernels
>>>>>>>>> + * may not have it. Default to zero in such cases. */
>>>>>>>>> + if (i == 0) {
>>>>>>>>> + data[i] = 0;
>>>>>>>>> + continue;
>>>>>>>>> + }
>>>>>>>>> + return -errno;
>>>>>>>>> + }
>>>>>>>>>
>>>>>>>>> - ret = read(fd, config, sizeof(config));
>>>>>>>>> - close(fd);
>>>>>>>>> - if (ret < 0)
>>>>>>>>> - return -errno;
>>>>>>>>> + ret = fscanf(fp, "%x", &data[i]);
>>>>>>>>> + fclose(fp);
>>>>>>>>> + if (ret != 1)
>>>>>>>>> + return -errno;
>>>>>>>>> +
>>>>>>>>> + }
>>>>>>>>>
>>>>>>>>> - device->vendor_id = config[0] | (config[1] << 8);
>>>>>>>>> - device->device_id = config[2] | (config[3] << 8);
>>>>>>>>> - device->revision_id = config[8];
>>>>>>>>> - device->subvendor_id = config[44] | (config[45] << 8);
>>>>>>>>> - device->subdevice_id = config[46] | (config[47] << 8);
>>>>>>>>> + device->revision_id = data[0] & 0xff;
>>>>>>>>> + device->vendor_id = data[1] & 0xffff;
>>>>>>>>> + device->device_id = data[2] & 0xffff;
>>>>>>>>> + device->subvendor_id = data[3] & 0xffff;
>>>>>>>>> + device->subdevice_id = data[4] & 0xffff;
>>>>>>>>>
>>>>>>>>> return 0;
>>>>>>>>> #else
>>>>>>>>>
>>>>>>>>
>>>>>>>> I have applied this against libdrm 2.4.71 and I don't see any delays
>>>>>>>> when starting firefox/chromium/thunderbird/glxgears.
>>>>>>>>
>>>>>>>> There is also no indication in dmesg that the dGPU is being
>>>>>>>> reinitialized when starting the programs where I've detected the problem.
>>>>>>>>
>>>>>>> Thanks Mauro. Can you give this a try alongside the kernel fix [1] ?
>>>>>>> I'd love to get the latter merged soon(ish).
>>>>>>> Independent of the kernel side, I might need to go another way for
>>>>>>> libdrm/mesa so I'll CC you on future patches.
>>>>>>>
>>>>>>> Your help is greatly appreciated !
>>>>>>>
>>>>>>> Thanks
>>>>>>> Emil
>>>>>>>
>>>>>>> [1] http://patchwork.ozlabs.org/patch/689975/
>>>>>>>
>>>>>>
>>>>>> I have applied the patch on top of kernel 4.8.6 and I'm using the libdrm
>>>>>> with the patch you sent me previously.
>>>>>>
>>>>>> With this patch things still seem work fine, I don't see any of the
>>>>>> problems I've seen before, but I don't know how to confirm that the
>>>>>> value from sysfs is now being used by libdrm instead of defaulting to zero.
>>>>>>
>>>>> Grr my bad. $libdrm_builddir/tests/drmdevice should do it. You might
>>>>> need to explicitly build it (cd tests && make drmdevice)
>>>>>
>>>>
>>>> When running drmdevice as my user it still wakes up the dGPU. The
>>>> correct device revisions are being reported by I suppose that is not
>>>> being read from sysfs.
>>>>
>>> Based on the output you're spot on - doesn't seem like the revision
>>> sysfs gets used. Most likely drmdevice is linked/using the pre-patch
>>> (system/local?) libdrm.so ?
>>>
>>
>> I've been using the patched libdrm.so ever since you sent me the patch
>> for libdrm and I've recompiled libdrm today to get drmdevice so both the
>> system's and in-tree libdrm.so should have the patch. Arch's PKGBUILD
>> does have a non default --enable-udev configure parameter, could that
>> make any difference?
>>
> The --enable-udev does not make any difference.
>
> The rest does not make sense - the exact same functions are used by
> drmdevice and mesa, yet it two different results are produced :-\
> Or something very funny is happening and reading the device/vendor
> file does _not_ wake the device, while the revision one does.
>
If I do 'cat revision' for the dGPU it does not wake up the device so I
guess we can scratch that.
> Can you pull out the kernel patch and check drmdevice/dmesg with
> patched libdrm ?
>
Same behavior as before, both versions of drmdevice wake up the dGPU.
Could it be that some other lib called by drmdevice and not called by
other programs is doing something to wake up the dGPU?
> Thanks
> Emil
>
--
Mauro Santos
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply
* RE: Is there a maximum bytes in flight limitation in the tcp stack? -->limit in scp
From: De Schepper, Koen (Nokia - BE) @ 2016-11-08 18:07 UTC (permalink / raw)
To: Yuchung Cheng; +Cc: netdev@vger.kernel.org
Seems to be a limitation in the application. We used scp, and it (still) seems to limit the bytes in flight. Using our own application, we didn't see a limit indeed. Thanks for your response, and sorry for the noise...
Koen.
> -----Original Message-----
> From: Yuchung Cheng [mailto:ycheng@google.com]
> Sent: dinsdag 8 november 2016 5:51
> To: De Schepper, Koen (Nokia - BE) <koen.de_schepper@nokia-bell-
> labs.com>
> Cc: netdev@vger.kernel.org
> Subject: Re: Is there a maximum bytes in flight limitation in the tcp stack?
>
> On Thu, Nov 3, 2016 at 9:37 AM, De Schepper, Koen (Nokia - BE)
> <koen.de_schepper@nokia-bell-labs.com> wrote:
> >
> > Hi,
> >
> > We experience some limit on the maximum packets in flight which seem
> not to be related with the receive or write buffers. Does somebody know if
> there is an issue with a maximum of around 1MByte (or sometimes 2Mbyte)
> of data in flight per TCP flow?
>
> does not ring a bell. I've definitely see cubic reaching >2MB cwnd (inflight)
> some packet trace will help.
>
> btw, tcp_rmem is the maximum receive buffer including all header and
> control overhead. the receive window announced is (very roughly) half
> of your rcvbuf.
>
> >
> > It seems to be a strict and stable limit independent from the CC (tested
> with Cubic, Reno and DCTCP). On a link of 200Mbps and 200ms RTT our link is
> only 20% (sometimes 40%, see conditions below) utilized for a single TCP
> flow with no drop experienced at all (no bottleneck in the AQM or RTT
> emulation, as it supports more throughput if multiple flows are active).
> >
> > Some configuration changes we already tried on both client and server
> (kernel 3.18.9):
> >
> > net.ipv4.tcp_no_metrics_save = 1
> > net.ipv4.tcp_rmem = 4096 87380 6291456
> > net.ipv4.tcp_wmem = 4096 16384 4194304
> >
> > SERVER# ss -i
> > tcp ESTAB 0 1049728 10.187.255.211:46642 10.187.16.194:ssh
> > dctcp wscale:7,7 rto:408 rtt:204.333/0.741 ato:40 mss:1448 cwnd:1466
> send 83.1Mbps unacked:728 rcv_rtt:212 rcv_space:29200
> > CLIENT# ss -i
> > tcp ESTAB 0 288 10.187.16.194:ssh 10.187.255.211:46642
> > dctcp wscale:7,7 rto:404 rtt:203.389/0.213 ato:40 mss:1448 cwnd:78
> send 4.4Mbps unacked:8 rcv_rtt:204 rcv_space:1074844
> >
> > When increasing the write and receive mem further (they were already
> way above 1 or 2 MB) it steps to double (40%; 2Mbytes in flight):
> > net.ipv4.tcp_no_metrics_save = 1
> > net.ipv4.tcp_rmem = 4096 8000000 16291456
> > net.ipv4.tcp_wmem = 4096 8000000 16291456
> >
> > SERVER # ss -i
> > tcp ESTAB 0 2068976 10.187.255.212:54637 10.187.16.112:ssh
> > cubic wscale:8,8 rto:404 rtt:202.622/0.061 ato:40 mss:1448 cwnd:1849
> ssthresh:1140 send 105.7Mbps unacked:1457 rcv_rtt:217.5 rcv_space:29200
> > CLIENT# ss -i
> > tcp ESTAB 0 648 10.187.16.112:ssh 10.187.255.212:54637
> > cubic wscale:8,8 rto:404 rtt:201.956/0.038 ato:40 mss:1448 cwnd:132
> send 7.6Mbps unacked:18 rcv_rtt:204 rcv_space:2093044
> >
> > Further increasing (x10) does not help anymore...
> > net.ipv4.tcp_no_metrics_save = 1
> > net.ipv4.tcp_rmem = 4096 80000000 162914560
> > net.ipv4.tcp_wmem = 4096 80000000 162914560
> >
> > As all these parameters autotune, it is hard to find out which one is
> limiting... In the examples, above unacked does not want to go higher, while
> congestion window in the server is big enough... rcv_space could be limiting,
> but it tunes up if I change the server with the higher buffers (switching to
> 2MByte in flight).
> >
> > We also tried tcp_limit_output_bytes, setting it bigger (x10) and
> smaller(/10), without effect. We've put it in /etc/sysctl.conf and rebooted, to
> make sure that it is effective.
> >
> > Some more detailed tests that had an effect on the 1 or 2MByte:
> > - It seems that with TSO off, if we configure a bigger wmem buffer, an
> ongoing flow suddenly is able to immediately double its bytes in flight limit.
> We configured further up to more than 10x the buffer, but no further
> increase helps, and the limits we saw are only 1MByte and 2Mbyte (no
> intermediate values depending on any parameter). When setting tcp_wmem
> smaller again, the 2MByte limit stays on the ongoing flow. We have to restart
> the flow to make the buffer reduction to 1MByte effective.
> > - With TSO on, only the 2MByte limit is effective, independent from the
> wmem buffer. We have to restart the flow to make a tso change effective.
> >
> > Koen.
> >
^ permalink raw reply
* [U-Boot] [PATCH] driver: net: fsl-mc: Use aligned address for MC FW load
From: york sun @ 2016-11-08 18:07 UTC (permalink / raw)
To: u-boot
In-Reply-To: <DB5PR04MB1064689B63732DC25A2576AF95A60@DB5PR04MB1064.eurprd04.prod.outlook.com>
On 11/07/2016 09:37 PM, Ashish Kumar wrote:
> Hello York,
>
> Please see inline.
>
> Regards
> Ashish
>
> -----Original Message-----
> From: york sun
> Sent: Tuesday, November 08, 2016 12:23 AM
> To: Priyanka Jain <priyanka.jain@nxp.com>; u-boot at lists.denx.de
> Cc: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>; Ashish Kumar <ashish.kumar@nxp.com>
> Subject: Re: [PATCH] driver: net: fsl-mc: Use aligned address for MC FW load
>
> On 10/24/2016 01:05 AM, Priyanka Jain wrote:
>> Firmware of Management Complex (MC) should be loaded at 512MB aligned
>> address.
>> So use aligned address for firmware load.
>>
>> Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
>> Signed-off-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>
>> Signed-off-by: Ashish Kumar <Ashish.Kumar@nxp.com>
>> ---
>> drivers/net/fsl-mc/mc.c | 62 ++++++++++++++++++++++++++--------------------
>> 1 files changed, 35 insertions(+), 27 deletions(-)
>>
>> diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c index
>> 1811b0f..c66340b 100644
>> --- a/drivers/net/fsl-mc/mc.c
>> +++ b/drivers/net/fsl-mc/mc.c
>> @@ -29,6 +29,7 @@
>> DECLARE_GLOBAL_DATA_PTR;
>> static int mc_boot_status = -1;
>> static int mc_dpl_applied = -1;
>> +static u64 mc_ram_aligned_base_addr;
>
> Why do you need this static variable? You didn't use it.
> [Ashish Kumar] following two function uses global static variable
> -357,7 +369,6 @@ static unsigned long get_mc_boot_timeout_ms(void)
> #ifdef CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET
> static int load_mc_aiop_img(u64 aiop_fw_addr)
> {
> - u64 mc_ram_addr = mc_get_dram_addr();
> #ifndef CONFIG_SYS_LS_MC_DPC_IN_DDR
> void *aiop_img;
> #endif
>
>
> @@ -440,7 +451,6 @@ int mc_init(u64 mc_fw_addr, u64 mc_dpc_addr)
> size_t raw_image_size = 0;
> #endif
> struct mc_version mc_ver_info;
> - u64 mc_ram_aligned_base_addr;
> u8 mc_ram_num_256mb_blocks;
> size_t mc_ram_size = mc_get_dram_block_size();
>
You showed the deletion of local variable. You added a static variable,
but also use local variable within function. The only place where this
static variable gets assigned is by a pointer in
calculate_mc_private_ram_params(). I don't see the need to declare it as
a global variable.
>> #ifdef CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET
>> static int mc_aiop_applied = -1;
>> #endif
>> @@ -87,12 +88,15 @@ void dump_mc_ccsr_regs(struct mc_ccsr_registers
>> __iomem *mc_ccsr_regs)
>> /**
>> * Copying MC firmware or DPL image to DDR
>> */
>> -static int mc_copy_image(const char *title,
>> - u64 image_addr, u32 image_size, u64 mc_ram_addr)
>> +static int mc_copy_image(const char *title, u64 image_addr,
>> + u32 image_size, u64 mc_ram_aligned_base_addr)
>> {
>> - debug("%s copied to address %p\n", title, (void *)mc_ram_addr);
>> - memcpy((void *)mc_ram_addr, (void *)image_addr, image_size);
>> - flush_dcache_range(mc_ram_addr, mc_ram_addr + image_size);
>> + debug("%s copied to address %p\n", title,
>> + (void *)mc_ram_aligned_base_addr);
>> + memcpy((void *)mc_ram_aligned_base_addr,
>> + (void *)image_addr, image_size);
>> + flush_dcache_range(mc_ram_aligned_base_addr,
>> + mc_ram_aligned_base_addr + image_size);
>> return 0;
>> }
>>
>> @@ -224,7 +228,8 @@ static int mc_fixup_dpc(u64 dpc_addr)
>> return 0;
>> }
>>
>> -static int load_mc_dpc(u64 mc_ram_addr, size_t mc_ram_size, u64
>> mc_dpc_addr)
>> +static int load_mc_dpc(u64 mc_ram_aligned_base_addr, size_t mc_ram_size,
>> + u64 mc_dpc_addr)
>> {
>> u64 mc_dpc_offset;
>> #ifndef CONFIG_SYS_LS_MC_DPC_IN_DDR
>> @@ -246,7 +251,8 @@ static int load_mc_dpc(u64 mc_ram_addr, size_t mc_ram_size, u64 mc_dpc_addr)
>> * Load the MC DPC blob in the MC private DRAM block:
>> */
>> #ifdef CONFIG_SYS_LS_MC_DPC_IN_DDR
>> - printf("MC DPC is preloaded to %#llx\n", mc_ram_addr + mc_dpc_offset);
>> + printf("MC DPC is preloaded to %#llx\n",
>> + mc_ram_aligned_base_addr + mc_dpc_offset);
>> #else
>> /*
>> * Get address and size of the DPC blob stored in flash:
>> @@ -270,18 +276,20 @@ static int load_mc_dpc(u64 mc_ram_addr, size_t mc_ram_size, u64 mc_dpc_addr)
>> return -EINVAL;
>> }
>>
>> - mc_copy_image("MC DPC blob",
>> - (u64)dpc_fdt_hdr, dpc_size, mc_ram_addr + mc_dpc_offset);
>> + mc_copy_image("MC DPC blob", (u64)dpc_fdt_hdr, dpc_size,
>> + mc_ram_aligned_base_addr + mc_dpc_offset);
>> #endif /* not defined CONFIG_SYS_LS_MC_DPC_IN_DDR */
>>
>> - if (mc_fixup_dpc(mc_ram_addr + mc_dpc_offset))
>> + if (mc_fixup_dpc(mc_ram_aligned_base_addr + mc_dpc_offset))
>> return -EINVAL;
>>
>> - dump_ram_words("DPC", (void *)(mc_ram_addr + mc_dpc_offset));
>> + dump_ram_words("DPC",
>> + (void *)(mc_ram_aligned_base_addr + mc_dpc_offset));
>> return 0;
>> }
>>
>> -static int load_mc_dpl(u64 mc_ram_addr, size_t mc_ram_size, u64
>> mc_dpl_addr)
>> +static int load_mc_dpl(u64 mc_ram_aligned_base_addr, size_t mc_ram_size,
>> + u64 mc_dpl_addr)
>> {
>> u64 mc_dpl_offset;
>> #ifndef CONFIG_SYS_LS_MC_DPL_IN_DDR
>> @@ -303,7 +311,8 @@ static int load_mc_dpl(u64 mc_ram_addr, size_t mc_ram_size, u64 mc_dpl_addr)
>> * Load the MC DPL blob in the MC private DRAM block:
>> */
>> #ifdef CONFIG_SYS_LS_MC_DPL_IN_DDR
>> - printf("MC DPL is preloaded to %#llx\n", mc_ram_addr + mc_dpl_offset);
>> + printf("MC DPL is preloaded to %#llx\n",
>> + mc_ram_aligned_base_addr + mc_dpl_offset);
>> #else
>> /*
>> * Get address and size of the DPL blob stored in flash:
>> @@ -323,11 +332,12 @@ static int load_mc_dpl(u64 mc_ram_addr, size_t mc_ram_size, u64 mc_dpl_addr)
>> return -EINVAL;
>> }
>>
>> - mc_copy_image("MC DPL blob",
>> - (u64)dpl_fdt_hdr, dpl_size, mc_ram_addr + mc_dpl_offset);
>> + mc_copy_image("MC DPL blob", (u64)dpl_fdt_hdr, dpl_size,
>> + mc_ram_aligned_base_addr + mc_dpl_offset);
>> #endif /* not defined CONFIG_SYS_LS_MC_DPL_IN_DDR */
>>
>> - dump_ram_words("DPL", (void *)(mc_ram_addr + mc_dpl_offset));
>> + dump_ram_words("DPL",
>> + (void *)(mc_ram_aligned_base_addr + mc_dpl_offset));
>> return 0;
>> }
>>
>> @@ -364,7 +374,6 @@ __weak bool soc_has_aiop(void)
>>
>> static int load_mc_aiop_img(u64 aiop_fw_addr) {
>> - u64 mc_ram_addr = mc_get_dram_addr();
>> #ifndef CONFIG_SYS_LS_MC_DPC_IN_DDR
>> void *aiop_img;
>> #endif
>> @@ -377,13 +386,14 @@ static int load_mc_aiop_img(u64 aiop_fw_addr)
>> */
>>
>> #ifdef CONFIG_SYS_LS_MC_DPC_IN_DDR
>> - printf("MC AIOP is preloaded to %#llx\n", mc_ram_addr +
>> + printf("MC AIOP is preloaded to %#llx\n", mc_ram_aligned_base_addr +
>> CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET);
>> #else
>> aiop_img = (void *)aiop_fw_addr;
>> mc_copy_image("MC AIOP image",
>> (u64)aiop_img, CONFIG_SYS_LS_MC_AIOP_IMG_MAX_LENGTH,
>> - mc_ram_addr + CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET);
>> + mc_ram_aligned_base_addr +
>> + CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET);
>> #endif
>> mc_aiop_applied = 0;
>>
>> @@ -450,7 +460,6 @@ int mc_init(u64 mc_fw_addr, u64 mc_dpc_addr)
>> size_t raw_image_size = 0;
>> #endif
>> struct mc_version mc_ver_info;
>> - u64 mc_ram_aligned_base_addr;
>> u8 mc_ram_num_256mb_blocks;
>> size_t mc_ram_size = mc_get_dram_block_size();
>>
>> @@ -478,7 +487,7 @@ int mc_init(u64 mc_fw_addr, u64 mc_dpc_addr)
>> dmb();
>>
>> #ifdef CONFIG_SYS_LS_MC_FW_IN_DDR
>> - printf("MC firmware is preloaded to %#llx\n", mc_ram_addr);
>> + printf("MC firmware is preloaded to %#llx\n",
>> +mc_ram_aligned_base_addr);
>> #else
>> error = parse_mc_firmware_fit_image(mc_fw_addr, &raw_image_addr,
>> &raw_image_size);
>> @@ -487,12 +496,12 @@ int mc_init(u64 mc_fw_addr, u64 mc_dpc_addr)
>> /*
>> * Load the MC FW at the beginning of the MC private DRAM block:
>> */
>> - mc_copy_image("MC Firmware",
>> - (u64)raw_image_addr, raw_image_size, mc_ram_addr);
>> + mc_copy_image("MC Firmware", (u64)raw_image_addr, raw_image_size,
>> + mc_ram_aligned_base_addr);
>> #endif
>> - dump_ram_words("firmware", (void *)mc_ram_addr);
>> + dump_ram_words("firmware", (void *)mc_ram_aligned_base_addr);
>>
>> - error = load_mc_dpc(mc_ram_addr, mc_ram_size, mc_dpc_addr);
>> + error = load_mc_dpc(mc_ram_aligned_base_addr, mc_ram_size,
>> +mc_dpc_addr);
>> if (error != 0)
>> goto out;
>>
>> @@ -569,10 +578,9 @@ int mc_apply_dpl(u64 mc_dpl_addr)
>> struct mc_ccsr_registers __iomem *mc_ccsr_regs = MC_CCSR_BASE_ADDR;
>> int error = 0;
>> u32 reg_gsr;
>> - u64 mc_ram_addr = mc_get_dram_addr();
>> size_t mc_ram_size = mc_get_dram_block_size();
>>
>> - error = load_mc_dpl(mc_ram_addr, mc_ram_size, mc_dpl_addr);
>> + error = load_mc_dpl(mc_ram_aligned_base_addr, mc_ram_size,
>> +mc_dpl_addr);
>> if (error != 0)
>> return error;
>>
>>
>
> Do you have substantial change beside the changing name from mc_ram_addr to mc_ram_aligned_base_addr?
> [Ashish Kumar] It is not exactly name change. Here intent is to use userdefine memory size for MC before this only 512MB of memory can be allocated to MC since it incorrectly used mc_ram_addr in place of mc_aligned_base_addr.
> Ok, Name changes are there only in the function parameters to avoid confusion and retain the function signatures.
Actually your change is more confusing. Let us try another way, for
example not changing the name, shall we?
York
^ permalink raw reply
* Re: amd756 driver error introduced with kernel-4.9.0-0.rc1.git0.2.fc26
From: Johnny Bieren @ 2016-11-08 18:07 UTC (permalink / raw)
To: Jean Delvare; +Cc: linux-i2c
In-Reply-To: <20161108145822.7194beac@endymion>
Hey Jean,
No, that option is not enabled.
cat /boot/config-4.9.0-0.rc1.git0.2.fc26.x86_64 | grep DEBUG_TEST
# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
Thanks,
Johnny
On 11/08/2016 08:58 AM, Jean Delvare wrote:
> Hi Johnny,
>
> On Tue, 8 Nov 2016 07:50:34 -0500, Johnny Bieren wrote:
>> Hello,
>> It appears that a driver_probe_device failure was introduced with
>> kernel-4.9.0-0.rc1.git0.2.fc26. When booting this kernel, or any newer
>> kernel, I see the following:
>>
>> [ 15.675485] ------------[ cut here ]------------
>> [ 15.680129] WARNING: CPU: 4 PID: 528 at drivers/base/dd.c:343
>> driver_probe_device+0x353/0x430
>> [ 15.688678] Modules linked in: i2c_amd756(+) pcc_cpufreq(-) k8temp
>> (...)
>>
>> The problem does not appear in kernel-4.9.0-0.rc0.git9.1.fc26, but it
>> does appear in kernel-4.9.0-0.rc1.git0.2.fc26. It reproduces 100% of
>> the time for me. Can you please look into this issue?
> Are the failing kernels built with option DEBUG_TEST_DRIVER_REMOVE
> enabled?
>
^ permalink raw reply
* Re: [PATCH] sched/rt: RT_RUNTIME_GREED sched feature
From: Peter Zijlstra @ 2016-11-08 18:05 UTC (permalink / raw)
To: Steven Rostedt
Cc: Daniel Bristot de Oliveira, Ingo Molnar, Christoph Lameter,
linux-rt-users, LKML
In-Reply-To: <20161108121710.3e7eb664@gandalf.local.home>
On Tue, Nov 08, 2016 at 12:17:10PM -0500, Steven Rostedt wrote:
> On Tue, 8 Nov 2016 17:51:33 +0100
> Peter Zijlstra <peterz@infradead.org> wrote:
>
> > You really should already know this.
>
> I know what we want to do, but there's some momentous problems that
> need to be solved first.
Like what?
> Until then, we may be forced to continue with
> hacks.
Well, the more ill specified hacks we put in, the harder if will be to
replace because people will end up depending on it.
^ permalink raw reply
* [LTP] [PATCH 1/1] network: fix bashisms + shebang
From: Petr Vorel @ 2016-11-08 18:05 UTC (permalink / raw)
To: ltp
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
testcases/network/nfs/nfs_stress/nfs_lib.sh | 1 +
testcases/network/sockets/ltpSockets.sh | 4 ++--
testcases/network/virt/virt_lib.sh | 3 ++-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/testcases/network/nfs/nfs_stress/nfs_lib.sh b/testcases/network/nfs/nfs_stress/nfs_lib.sh
index 78df4d3..0abf39d 100644
--- a/testcases/network/nfs/nfs_stress/nfs_lib.sh
+++ b/testcases/network/nfs/nfs_stress/nfs_lib.sh
@@ -1,3 +1,4 @@
+#!/bin/sh
# Copyright (c) 2015-2016 Oracle and/or its affiliates. All Rights Reserved.
# Copyright (c) International Business Machines Corp., 2001
#
diff --git a/testcases/network/sockets/ltpSockets.sh b/testcases/network/sockets/ltpSockets.sh
index 48fa8c6..65b2320 100755
--- a/testcases/network/sockets/ltpSockets.sh
+++ b/testcases/network/sockets/ltpSockets.sh
@@ -54,10 +54,10 @@ echo "Starting UDP, TCP and Multicast tests..."
echo "Starting ltpServer..."
./ltpServer $hostname1 &
-sleep 5s
+sleep 5
echo "Starting ltpClient..."
./ltpClient $hostname1 $hostname1 $testdata
-sleep 1s
+sleep 1
killall -9 ltpServer
killall -9 ltpClient
diff --git a/testcases/network/virt/virt_lib.sh b/testcases/network/virt/virt_lib.sh
index ee6488c..df453e5 100644
--- a/testcases/network/virt/virt_lib.sh
+++ b/testcases/network/virt/virt_lib.sh
@@ -103,7 +103,8 @@ trap "tst_brkm TBROK 'test interrupted'" INT
virt_add()
{
local vname=$1
- local opt="${@:2}"
+ shift
+ local opt="$*"
case $virt_type in
vlan|vxlan)
--
2.10.2
^ permalink raw reply related
* [U-Boot] U-Boot overlaps BSS and initrd on arm64
From: Tom Rini @ 2016-11-08 18:04 UTC (permalink / raw)
To: u-boot
In-Reply-To: <20161108180142.GL20591@arm.com>
On Tue, Nov 08, 2016 at 06:01:42PM +0000, Will Deacon wrote:
> On Tue, Nov 08, 2016 at 12:51:44PM -0500, Tom Rini wrote:
> > On Tue, Nov 08, 2016 at 09:41:13AM -0800, Dmitry Vyukov wrote:
> > > Hello,
> > >
> > > We've got a boot problem on arm64 devices. Here is boot log:
> > > https://storage.kernelci.org/mainline/v4.9-rc4/arm64-defconfig+CONFIG_KASAN=y/lab-baylibre-seattle/boot-juno-r2.txt
> > > https://kernelci.org/boot/id/581ece5a59b514e448f03bd7/
> > >
> > > Here is some debugging that Andrey and Mark did:
> > >
> > > On Tue, Nov 8, 2016 at 2:00 AM, Andrey Ryabinin wrote:
> > > > I've looked at juno-r2: https://kernelci.org/boot/id/581ece5a59b514e448f03bd7/
> > > > So we have
> > > > Dtb address 0x81f00000
> > > > Load address 0x80000000
> > > > Which gives us 31Mb for kernel.
> > > >
> > > > It says that Kernel image is 24.62 MiB, but that's without BSS.
> > > > If bss is big enough it might overwrite dtb.
> > > > And indeed, build details -
> > > > https://kernelci.org/build/id/581e850959b514e564f03bdc/
> > > > shows that bss is 8.5 Mb which is enough to overlap with dtb.
> > >
> > > On Tue, Nov 8, 2016 at 3:21 AM, Mark Rutland wrote:
> > > > FWIW, since v3.17 we've had an image_size field in the arm64 Image
> > > > header which describes the "real" size of the Image, BSS included. See
> > > > [1,2].
> > > > It should be possible to modify U-Boot to use that to automatically
> > > > place the DTB and initrd at non-clashing locations (or at least to
> > > > expose the value somehow).
> > > > I had assumed U-Boot already did that, but it doesn't seem to be the
> > > > case.
> >
> > Yes, we've supported the image_size field since v2016.07 and that board
> > is running v2016.01. Unfortunately the booting.txt changes that added
> > the image_size field weren't publicized widely so we didn't see it until
> > someone else ran into the problem you're describing.
>
> Hmm, that's a good point. If you like, I could add something to that file
> asking for all changes to CC the u-boot list? We should probably do the
> same for edk2.
That would be nice, sure. I was even thinking that something like the
cross-distro or boot-architecture lists that linaro runs would have had
this info go by as well. Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161108/42d74654/attachment.sig>
^ permalink raw reply
* RE: [PATCH V3 13/14] Drivers: hv: vmbus: On write cleanup the logic to interrupt the host
From: Stephen Hemminger @ 2016-11-08 17:31 UTC (permalink / raw)
To: KY Srinivasan, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org, devel@linuxdriverproject.org,
olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com,
jasowang@redhat.com, leann.ogasawara@canonical.com
In-Reply-To: <1478466858-32153-13-git-send-email-kys@exchange.microsoft.com>
Please don't add name/date information into comments.
This kind of meta data belongs in the commit message only.
My philosophy is that comments should be reserved for explain the semantics of the code, not the history.
+ *
+ * KYS: Oct. 30, 2016:
+ * It looks like Windows hosts have logic to deal with DOS attacks that
+ * can be triggered if it receives interrupts when it is not expecting
+ * the interrupt. The host expects interrupts only when the ring
+ * transitions from empty to non-empty (or full to non full on the
+ guest
+ * to host ring).
+ * So, base the signaling decision solely on the ring state until the
+ * host logic is fixed.
*/
^ permalink raw reply
* [PATCH] webkitgtk: drop patch 0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
From: Carlos Alberto Lopez Perez @ 2016-11-08 17:52 UTC (permalink / raw)
To: openembedded-core
* This patch is not longer needed. Upstream has fixed this issue in:
https://trac.webkit.org/changeset/205672 which is already included
in WebKitGTK+ >= 2.14.0
Signed-off-by: Carlos Alberto Lopez Perez <clopez@igalia.com>
---
...bKitMacros-Append-to-I-and-not-to-isystem.patch | 181 ---------------------
meta/recipes-sato/webkit/webkitgtk_2.14.1.bb | 1 -
2 files changed, 182 deletions(-)
delete mode 100644 meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
diff --git a/meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch b/meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
deleted file mode 100644
index ef209c8..0000000
--- a/meta/recipes-sato/webkit/files/0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 20ee11dd188e1538f8cdd17a289dc6f9c63a011e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 17 Apr 2016 12:35:41 -0700
-Subject: [PATCH] WebKitMacros: Append to -I and not to -isystem
-
-gcc-6 has now introduced stdlib.h in libstdc++ for better
-compliance and its including the C library stdlib.h using
-include_next which is sensitive to order of system header
-include paths. Its infact better to not tinker with the
-system header include paths at all. Since adding /usr/include
-to -system is redundant and compiler knows about it moreover
-now with gcc6 it interferes with compiler's functioning
-and ends up with compile errors e.g.
-
-/usr/include/c++/6.0.0/cstdlib:75:25: fatal error: stdlib.h: No such file or directory
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
----
- Source/JavaScriptCore/shell/CMakeLists.txt | 2 +-
- Source/WebCore/PlatformGTK.cmake | 6 +++---
- Source/WebKit2/PlatformGTK.cmake | 2 +-
- Source/cmake/WebKitMacros.cmake | 2 +-
- Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt | 2 +-
- Tools/ImageDiff/CMakeLists.txt | 2 +-
- Tools/MiniBrowser/gtk/CMakeLists.txt | 2 +-
- Tools/TestWebKitAPI/PlatformGTK.cmake | 2 +-
- Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt | 2 +-
- Tools/WebKitTestRunner/CMakeLists.txt | 2 +-
- 10 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/Source/JavaScriptCore/shell/CMakeLists.txt b/Source/JavaScriptCore/shell/CMakeLists.txt
-index 155c797..80fe22b 100644
---- a/Source/JavaScriptCore/shell/CMakeLists.txt
-+++ b/Source/JavaScriptCore/shell/CMakeLists.txt
-@@ -20,7 +20,7 @@ WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
-
- WEBKIT_WRAP_SOURCELIST(${JSC_SOURCES})
- include_directories(./ ${JavaScriptCore_INCLUDE_DIRECTORIES})
--include_directories(SYSTEM ${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
-+include_directories(${JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES})
- add_executable(jsc ${JSC_SOURCES})
- target_link_libraries(jsc ${JSC_LIBRARIES})
-
-diff --git a/Source/WebCore/PlatformGTK.cmake b/Source/WebCore/PlatformGTK.cmake
-index 567bd79..1fabea8 100644
---- a/Source/WebCore/PlatformGTK.cmake
-+++ b/Source/WebCore/PlatformGTK.cmake
-@@ -340,7 +340,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
- ${GTK2_INCLUDE_DIRS}
- ${GDK2_INCLUDE_DIRS}
- )
-- target_include_directories(WebCorePlatformGTK2 SYSTEM PRIVATE
-+ target_include_directories(WebCorePlatformGTK2 PRIVATE
- ${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
- )
- target_link_libraries(WebCorePlatformGTK2
-@@ -365,7 +365,7 @@ WEBKIT_SET_EXTRA_COMPILER_FLAGS(WebCorePlatformGTK)
- target_include_directories(WebCorePlatformGTK PRIVATE
- ${WebCore_INCLUDE_DIRECTORIES}
- )
--target_include_directories(WebCorePlatformGTK SYSTEM PRIVATE
-+target_include_directories(WebCorePlatformGTK PRIVATE
- ${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
- ${GTK_INCLUDE_DIRS}
- ${GDK_INCLUDE_DIRS}
-@@ -383,7 +383,7 @@ include_directories(
- "${DERIVED_SOURCES_GOBJECT_DOM_BINDINGS_DIR}"
- )
-
--include_directories(SYSTEM
-+include_directories(
- ${WebCore_SYSTEM_INCLUDE_DIRECTORIES}
- )
-
-diff --git a/Source/WebKit2/PlatformGTK.cmake b/Source/WebKit2/PlatformGTK.cmake
-index e4805a4..c57df5d 100644
---- a/Source/WebKit2/PlatformGTK.cmake
-+++ b/Source/WebKit2/PlatformGTK.cmake
-@@ -822,7 +822,7 @@ if (ENABLE_PLUGIN_PROCESS_GTK2)
- target_include_directories(WebKitPluginProcess2 PRIVATE
- ${WebKit2CommonIncludeDirectories}
- )
-- target_include_directories(WebKitPluginProcess2 SYSTEM PRIVATE
-+ target_include_directories(WebKitPluginProcess2 PRIVATE
- ${WebKit2CommonSystemIncludeDirectories}
- ${GTK2_INCLUDE_DIRS}
- ${GDK2_INCLUDE_DIRS}
-diff --git a/Source/cmake/WebKitMacros.cmake b/Source/cmake/WebKitMacros.cmake
-index 043e78e..8b3b642 100644
---- a/Source/cmake/WebKitMacros.cmake
-+++ b/Source/cmake/WebKitMacros.cmake
-@@ -224,7 +224,7 @@ endmacro()
-
- macro(WEBKIT_FRAMEWORK _target)
- include_directories(${${_target}_INCLUDE_DIRECTORIES})
-- include_directories(SYSTEM ${${_target}_SYSTEM_INCLUDE_DIRECTORIES})
-+ include_directories(${${_target}_SYSTEM_INCLUDE_DIRECTORIES})
- add_library(${_target} ${${_target}_LIBRARY_TYPE}
- ${${_target}_HEADERS}
- ${${_target}_SOURCES}
-diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt b/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
-index c431667..6dff244 100644
---- a/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
-+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
-@@ -42,7 +42,7 @@ set(WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES
- )
-
- include_directories(${WebKitTestNetscapePlugin_INCLUDE_DIRECTORIES})
--include_directories(SYSTEM ${WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES})
-+include_directories(${WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES})
-
- set(WebKitTestNetscapePlugin_LIBRARIES
- ${X11_LIBRARIES}
-diff --git a/Tools/ImageDiff/CMakeLists.txt b/Tools/ImageDiff/CMakeLists.txt
-index b15443f..87e03bf 100644
---- a/Tools/ImageDiff/CMakeLists.txt
-+++ b/Tools/ImageDiff/CMakeLists.txt
-@@ -14,6 +14,6 @@ set(IMAGE_DIFF_LIBRARIES
- WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
-
- include_directories(${IMAGE_DIFF_INCLUDE_DIRECTORIES})
--include_directories(SYSTEM ${IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES})
-+include_directories(${IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES})
- add_executable(ImageDiff ${IMAGE_DIFF_SOURCES})
- target_link_libraries(ImageDiff ${IMAGE_DIFF_LIBRARIES})
-diff --git a/Tools/MiniBrowser/gtk/CMakeLists.txt b/Tools/MiniBrowser/gtk/CMakeLists.txt
-index 0704bc6..619e5a5 100644
---- a/Tools/MiniBrowser/gtk/CMakeLists.txt
-+++ b/Tools/MiniBrowser/gtk/CMakeLists.txt
-@@ -58,7 +58,7 @@ endif ()
- add_definitions(-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_6)
-
- include_directories(${MiniBrowser_INCLUDE_DIRECTORIES})
--include_directories(SYSTEM ${MiniBrowser_SYSTEM_INCLUDE_DIRECTORIES})
-+include_directories(${MiniBrowser_SYSTEM_INCLUDE_DIRECTORIES})
- add_executable(MiniBrowser ${MiniBrowser_SOURCES})
- target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
-
-diff --git a/Tools/TestWebKitAPI/PlatformGTK.cmake b/Tools/TestWebKitAPI/PlatformGTK.cmake
-index 7552cc2..2eb44d5 100644
---- a/Tools/TestWebKitAPI/PlatformGTK.cmake
-+++ b/Tools/TestWebKitAPI/PlatformGTK.cmake
-@@ -20,7 +20,7 @@ include_directories(
- ${WEBKIT2_DIR}/UIProcess/API/gtk
- )
-
--include_directories(SYSTEM
-+include_directories(
- ${GDK3_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
- ${GTK3_INCLUDE_DIRS}
-diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
-index b0b4739..434e4ca 100644
---- a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
-+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
-@@ -23,7 +23,7 @@ include_directories(
- ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk
- )
-
--include_directories(SYSTEM
-+include_directories(
- ${ATSPI_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
- ${GSTREAMER_INCLUDE_DIRS}
-diff --git a/Tools/WebKitTestRunner/CMakeLists.txt b/Tools/WebKitTestRunner/CMakeLists.txt
-index 7db90f2..a4f917f 100644
---- a/Tools/WebKitTestRunner/CMakeLists.txt
-+++ b/Tools/WebKitTestRunner/CMakeLists.txt
-@@ -116,7 +116,7 @@ GENERATE_BINDINGS(WebKitTestRunner_SOURCES
- WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
-
- include_directories(${WebKitTestRunner_INCLUDE_DIRECTORIES})
--include_directories(SYSTEM ${WebKitTestRunner_SYSTEM_INCLUDE_DIRECTORIES})
-+include_directories(${WebKitTestRunner_SYSTEM_INCLUDE_DIRECTORIES})
-
- add_library(TestRunnerInjectedBundle SHARED ${WebKitTestRunnerInjectedBundle_SOURCES})
- target_link_libraries(TestRunnerInjectedBundle ${WebKitTestRunner_LIBRARIES})
---
-2.9.3
-
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.14.1.bb b/meta/recipes-sato/webkit/webkitgtk_2.14.1.bb
index a2586de..69c9f11 100644
--- a/meta/recipes-sato/webkit/webkitgtk_2.14.1.bb
+++ b/meta/recipes-sato/webkit/webkitgtk_2.14.1.bb
@@ -18,7 +18,6 @@ SRC_URI = "http://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
file://ppc-musl-fix.patch \
file://0001-Fix-racy-parallel-build-of-WebKit2-4.0.gir.patch \
file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \
- file://0001-WebKitMacros-Append-to-I-and-not-to-isystem.patch \
"
SRC_URI[md5sum] = "8d6c60dc41604d3bbd43165a674c07e5"
--
2.1.4
^ permalink raw reply related
* Re: [tegra:for-4.10/bus 4/4] drivers/bus/tegra-gmi.c:97:11: error: 'dev' undeclared
From: Thierry Reding @ 2016-11-08 18:02 UTC (permalink / raw)
To: Mirza Krak
Cc: kbuild test robot, kbuild-all-JC7UmRfGjtg,
linux-tegra-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <CALw8SCVXOqd=3B6tzE90TQa6S4BJSKmjV_Y3SrB6_Nc1_hsn+w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2538 bytes --]
On Tue, Nov 08, 2016 at 01:13:02PM +0100, Mirza Krak wrote:
> 2016-11-08 11:47 GMT+01:00 Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>:
> > On Tue, Nov 08, 2016 at 01:44:03AM +0800, kbuild test robot wrote:
> >> tree: https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git for-4.10/bus
> >> head: 4f95e6a5c9e433197244c91dd25102a85dbb7877
> >> commit: 4f95e6a5c9e433197244c91dd25102a85dbb7877 [4/4] bus: Add support for Tegra Generic Memory Interface
> >> config: arm-allmodconfig (attached as .config)
> >> compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
> >> reproduce:
> >> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> >> chmod +x ~/bin/make.cross
> >> git checkout 4f95e6a5c9e433197244c91dd25102a85dbb7877
> >> # save the attached .config to linux build tree
> >> make.cross ARCH=arm
> >>
> >> All errors (new ones prefixed by >>):
> >>
> >> drivers/bus/tegra-gmi.c: In function 'tegra_gmi_parse_dt':
> >> >> drivers/bus/tegra-gmi.c:97:11: error: 'dev' undeclared (first use in this function)
> >> dev_err(dev, "no child nodes found\n");
> >> ^~~
> >> drivers/bus/tegra-gmi.c:97:11: note: each undeclared identifier is reported only once for each function it appears in
> >>
> >> vim +/dev +97 drivers/bus/tegra-gmi.c
> >>
> >> 91 struct device_node *child;
> >> 92 u32 property, ranges[4];
> >> 93 int err;
> >> 94
> >> 95 child = of_get_next_available_child(gmi->dev->of_node, NULL);
> >> 96 if (!child) {
> >> > 97 dev_err(dev, "no child nodes found\n");
> >> 98 return -ENODEV;
> >> 99 }
> >> 100
> >
> > Sorry, this is my bad. I forgot to enable TEGRA_GMI in the default
> > configuration and that caused my build tests not to pick up the new
> > driver. Fixing it now.
>
> Yeah about that. It occurred to me that my patch series did include a
> patch that enables TEGRA_GMI in tegra_defconfig. Do not really know
> the policy on this, should there been a patch that enables it in
> tegra_defconfig? Or is usually managed later on?
It's usually a good idea to include such a patch in the series that adds
the driver, just so that it is more difficult to miss.
But no worries, it's all taken care of now.
Thanks,
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Re: [PATCH 2/2] clk: pxa: fix pxa2xx_determine_rate return
From: Robert Jarzmik @ 2016-11-08 18:01 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: Stephen Boyd, Michael Turquette, linux-clk, linux-kernel
In-Reply-To: <20161108144950.3472058-2-arnd@arndb.de>
Arnd Bergmann <arnd@arndb.de> writes:
> The new pxa2xx_determine_rate() function seems lacking in a few
> regards:
>
> - For an exact match or no match at all, the rate is uninitialized
> as reported by gcc -Wmaybe-unintialized:
> drivers/clk/pxa/clk-pxa.c: In function 'pxa2xx_determine_rate':
> drivers/clk/pxa/clk-pxa.c:243:5: error: 'rate' may be used uninitialized in
> this function
Euh I don't think that is true.
For an exact match, rate is assigned the exact value in the first line after the
for(xxx).
For no match at all, there are 2 cases :
- either a closest match is found, and rate is actually assigned (see below)
- or no match is found, and it's true rate remains uninitialized, but we have
ret = -EINVAL
> - If we get a non-exact match, the req->rate output is never set
> to the actual rate but remains at the requested rate.
Euh no, that doesn't seem correct to me.
If a non-exact match is found, either by closest_below or closest_above, rate is
set (rate = freqs[closest_xxx].cpll). And a couple of lines later after the
if/else, req->rate = rate is set as well, so I don't think this part of the
commit message is accurate.
> - We should not attempt to print a rate if none could be found
True.
> This rewrites the logic accordingly.
Unless I'm wrong in the analysis above, I'd rather have just "unsigned long rate
= 0" in the variable declaration, and keep the pr_debug() even if -EINVAL is
returned (it's better for bug tracking, with a rate == 0 in this case for example).
Cheers.
--
Robert
^ permalink raw reply
* Re: [PATCH] Avoid that SCSI device removal through sysfs triggers a deadlock
From: James Bottomley @ 2016-11-08 18:01 UTC (permalink / raw)
To: Bart Van Assche, Martin K. Petersen
Cc: Greg Kroah-Hartman, Eric Biederman, Hannes Reinecke,
Johannes Thumshirn, Sagi Grimberg, linux-scsi@vger.kernel.org
In-Reply-To: <eecdade1-2b35-b877-cb66-6d9c1dc02ddf@sandisk.com>
On Tue, 2016-11-08 at 08:52 -0800, Bart Van Assche wrote:
> On 11/08/2016 07:28 AM, James Bottomley wrote:
> > On Mon, 2016-11-07 at 16:32 -0800, Bart Van Assche wrote:
> > > diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
> > > index cf4c636..44ec536 100644
> > > --- a/fs/kernfs/dir.c
> > > +++ b/fs/kernfs/dir.c
> > > @@ -1410,7 +1410,7 @@ int kernfs_remove_by_name_ns(struct
> > > kernfs_node
> > > *parent, const char *name,
> > > mutex_lock(&kernfs_mutex);
> > >
> > > kn = kernfs_find_ns(parent, name, ns);
> > > - if (kn)
> > > + if (kn && !(kn->flags & KERNFS_SUICIDED))
> >
> > Actually, wrong flag, you need KERNFS_SUICIDAL. The reason is that
> > kernfs_mutex is actually dropped half way through __kernfs_remove,
> > so KERNFS_SUICIDED is not set atomically with this mutex.
>
> Hello James,
>
> Sorry but what you wrote is not correct.
I think you agree it is dropped. I don't need to add the bit about the
reacquisition because the race is mediated by the first acquisition not
the second one, if you mediate on KERNFS_SUICIDAL, you only need to
worry about this because the mediation is in the first acquisition. If
you mediate on KERNFS_SUICIDED, you need to explain that the final
thing that means the race can't happen is the unbreak in the sysfs
delete path re-acquiring s_active ... the explanation of what's going
on and why gets about 2x more complex.
James
> __kernfs_remove() calls kernfs_drain(). That last function not only
> drops but also reacquires kernfs_mutex. So both KERNFS_SUICIDAL and
> KERNFS_SUICIDED are set while holding kernfs_mutex.
^ permalink raw reply
* [U-Boot] U-Boot overlaps BSS and initrd on arm64
From: Will Deacon @ 2016-11-08 18:01 UTC (permalink / raw)
To: u-boot
In-Reply-To: <20161108175144.GC6637@bill-the-cat>
On Tue, Nov 08, 2016 at 12:51:44PM -0500, Tom Rini wrote:
> On Tue, Nov 08, 2016 at 09:41:13AM -0800, Dmitry Vyukov wrote:
> > Hello,
> >
> > We've got a boot problem on arm64 devices. Here is boot log:
> > https://storage.kernelci.org/mainline/v4.9-rc4/arm64-defconfig+CONFIG_KASAN=y/lab-baylibre-seattle/boot-juno-r2.txt
> > https://kernelci.org/boot/id/581ece5a59b514e448f03bd7/
> >
> > Here is some debugging that Andrey and Mark did:
> >
> > On Tue, Nov 8, 2016 at 2:00 AM, Andrey Ryabinin wrote:
> > > I've looked at juno-r2: https://kernelci.org/boot/id/581ece5a59b514e448f03bd7/
> > > So we have
> > > Dtb address 0x81f00000
> > > Load address 0x80000000
> > > Which gives us 31Mb for kernel.
> > >
> > > It says that Kernel image is 24.62 MiB, but that's without BSS.
> > > If bss is big enough it might overwrite dtb.
> > > And indeed, build details -
> > > https://kernelci.org/build/id/581e850959b514e564f03bdc/
> > > shows that bss is 8.5 Mb which is enough to overlap with dtb.
> >
> > On Tue, Nov 8, 2016 at 3:21 AM, Mark Rutland wrote:
> > > FWIW, since v3.17 we've had an image_size field in the arm64 Image
> > > header which describes the "real" size of the Image, BSS included. See
> > > [1,2].
> > > It should be possible to modify U-Boot to use that to automatically
> > > place the DTB and initrd at non-clashing locations (or at least to
> > > expose the value somehow).
> > > I had assumed U-Boot already did that, but it doesn't seem to be the
> > > case.
>
> Yes, we've supported the image_size field since v2016.07 and that board
> is running v2016.01. Unfortunately the booting.txt changes that added
> the image_size field weren't publicized widely so we didn't see it until
> someone else ran into the problem you're describing.
Hmm, that's a good point. If you like, I could add something to that file
asking for all changes to CC the u-boot list? We should probably do the
same for edk2.
Will
^ permalink raw reply
* Re: [PATCH v9 7/7] KVM: x86: virtualize cpuid faulting
From: Kyle Huey @ 2016-11-08 18:00 UTC (permalink / raw)
To: Thomas Gleixner
Cc: David Matlack, Robert O'Callahan, Andy Lutomirski,
Ingo Molnar, H. Peter Anvin, X86 ML, Paolo Bonzini,
Radim Krčmář, Jeff Dike, Richard Weinberger,
Alexander Viro, Shuah Khan, Dave Hansen, Borislav Petkov,
Peter Zijlstra, Boris Ostrovsky, Len Brown, Rafael J. Wysocki,
Dmitry Safonov
In-Reply-To: <alpine.DEB.2.20.1611081851380.3501@nanos>
On Tue, Nov 8, 2016 at 9:53 AM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Tue, 8 Nov 2016, Kyle Huey wrote:
>> > It will simplify the MSR get/set code, and make it easier to plumb
>> > support for new bits in these MSRs.
>>
>> I'm inclined to do this for MSR_PLATFORM_INFO but not
>> MSR_MISC_FEATURES_ENABLES. The former actually has other bits, and
>> isn't used outside the msr handling code (yet, anyways).
>> MSR_MISC_FEATURES_ENABLES doesn't have any other bits (it's actually
>> not documented by Intel at all outside of that virtualization paper)
>> and after masking bits in cpuid.c or adding a helper function the
>> complexity would be a wash at best.
>
> The feature MSR is also used for enabling ring3 MWAIT, which is obviously
> not documented either. So there is more stuff coming along....
>
> Thanks,
>
> tglx
>
Bah :) Ok.
- Kyle
^ permalink raw reply
* Re: [PATCH v9 7/7] KVM: x86: virtualize cpuid faulting
From: Kyle Huey @ 2016-11-08 18:00 UTC (permalink / raw)
To: Thomas Gleixner
Cc: David Matlack, Robert O'Callahan, Andy Lutomirski,
Ingo Molnar, H. Peter Anvin, X86 ML, Paolo Bonzini,
Radim Krčmář, Jeff Dike, Richard Weinberger,
Alexander Viro, Shuah Khan, Dave Hansen, Borislav Petkov,
Peter Zijlstra, Boris Ostrovsky, Len Brown, Rafael J. Wysocki,
Dmitry Safonov, linux-kernel@vger.kernel.org,
open list:USER-MODE LINUX (UML), open list:USER-MODE LINUX (UML),
open list:FILESYSTEMS (VFS and infrastructure),
open list:KERNEL SELFTEST FRAMEWORK, kvm list
In-Reply-To: <alpine.DEB.2.20.1611081851380.3501@nanos>
On Tue, Nov 8, 2016 at 9:53 AM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Tue, 8 Nov 2016, Kyle Huey wrote:
>> > It will simplify the MSR get/set code, and make it easier to plumb
>> > support for new bits in these MSRs.
>>
>> I'm inclined to do this for MSR_PLATFORM_INFO but not
>> MSR_MISC_FEATURES_ENABLES. The former actually has other bits, and
>> isn't used outside the msr handling code (yet, anyways).
>> MSR_MISC_FEATURES_ENABLES doesn't have any other bits (it's actually
>> not documented by Intel at all outside of that virtualization paper)
>> and after masking bits in cpuid.c or adding a helper function the
>> complexity would be a wash at best.
>
> The feature MSR is also used for enabling ring3 MWAIT, which is obviously
> not documented either. So there is more stuff coming along....
>
> Thanks,
>
> tglx
>
Bah :) Ok.
- Kyle
^ permalink raw reply
* [B.A.T.M.A.N.] [PATCH] batman-adv: Consume dropped packets with kfree_skb
From: Sven Eckelmann @ 2016-11-08 17:59 UTC (permalink / raw)
To: b.a.t.m.a.n
The dropped skbs were previously free'd using kfree_skb in
batadv_batman_skb_recv with kfree_skb. This has to be done again directly
in the functions which also consume the skb on success.
Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
Fixes: 83fef820ecdb ("batman-adv: Consume skb in receive handlers")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
net/batman-adv/bat_iv_ogm.c | 5 ++++-
net/batman-adv/bat_v_elp.c | 7 +++++--
net/batman-adv/bat_v_ogm.c | 5 ++++-
net/batman-adv/routing.c | 2 +-
4 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
index 36a1b3d..f00f666 100644
--- a/net/batman-adv/bat_iv_ogm.c
+++ b/net/batman-adv/bat_iv_ogm.c
@@ -1851,7 +1851,10 @@ static int batadv_iv_ogm_receive(struct sk_buff *skb,
ret = NET_RX_SUCCESS;
free_skb:
- consume_skb(skb);
+ if (ret == NET_RX_SUCCESS)
+ consume_skb(skb);
+ else
+ kfree_skb(skb);
return ret;
}
diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c
index 6376240..f2fb2f0 100644
--- a/net/batman-adv/bat_v_elp.c
+++ b/net/batman-adv/bat_v_elp.c
@@ -498,7 +498,7 @@ int batadv_v_elp_packet_recv(struct sk_buff *skb,
struct batadv_hard_iface *primary_if;
struct ethhdr *ethhdr = (struct ethhdr *)skb_mac_header(skb);
bool res;
- int ret;
+ int ret = NET_RX_DROP;
res = batadv_check_management_packet(skb, if_incoming, BATADV_ELP_HLEN);
if (!res)
@@ -531,7 +531,10 @@ int batadv_v_elp_packet_recv(struct sk_buff *skb,
batadv_hardif_put(primary_if);
free_skb:
- consume_skb(skb);
+ if (ret == NET_RX_SUCCESS)
+ consume_skb(skb);
+ else
+ kfree_skb(skb);
return ret;
}
diff --git a/net/batman-adv/bat_v_ogm.c b/net/batman-adv/bat_v_ogm.c
index ef3a88d..38b9aab 100644
--- a/net/batman-adv/bat_v_ogm.c
+++ b/net/batman-adv/bat_v_ogm.c
@@ -844,7 +844,10 @@ int batadv_v_ogm_packet_recv(struct sk_buff *skb,
ret = NET_RX_SUCCESS;
free_skb:
- consume_skb(skb);
+ if (ret == NET_RX_SUCCESS)
+ consume_skb(skb);
+ else
+ kfree_skb(skb);
return ret;
}
diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
index 7d9ae4b..6713bdf 100644
--- a/net/batman-adv/routing.c
+++ b/net/batman-adv/routing.c
@@ -1066,7 +1066,7 @@ int batadv_recv_unicast_tvlv(struct sk_buff *skb,
}
free_skb:
- consume_skb(skb);
+ kfree_skb(skb);
return ret;
}
--
2.10.2
^ permalink raw reply related
* [U-Boot] [PATCH 1/3] fsl/ddr: Revise erratum a009942 and clean related erratum
From: york sun @ 2016-11-08 17:58 UTC (permalink / raw)
To: u-boot
In-Reply-To: <f28a3ce1-865a-8e40-5edf-29c296cee1d3@nxp.com>
On 11/08/2016 09:03 AM, york.sun at nxp.com wrote:
> On 11/08/2016 02:39 AM, Shengzhou Liu wrote:
>>
>>> -----Original Message-----
>>> From: york sun
>>> Sent: Tuesday, November 08, 2016 1:04 AM
>>> To: Shengzhou Liu <shengzhou.liu@nxp.com>; u-boot at lists.denx.de
>>> Subject: Re: [PATCH 1/3] fsl/ddr: Revise erratum a009942 and clean
>>> related
>>> erratum
>>>>
>>>> York,
>>>>
>>>> This change(moving to ctrl_regs.c) has the same effect as read-modify-
>>>> write(done in fsl_ddr_gen4.c) before MEM_EN is enabled for DDRC.
>>>> As I commented in code with "the POR value of debug_29 register is
>>>> zero" for A009942 workaround when moving it to ctrl_regs.c, Actually
>>>> only A008378 changes debug_29[8:11] bits to 9 from original POR value 0
>>>> before the implementing of A009942, and A009942 overrides
>>>> debug_29[8:11] set by A008378.
>>>> So we can set debug_29 in ctrl_regs.c, it doesn't break anything.
>>>
>>> Shengzhou,
>>>
>>> The presumption of POR value is not safe. It is safe for this case
>>> for now.
>>> You may have other erratum workaround popping up later using the same
>>> register, or other registers. PBI can also change registers. This
>>> sets an
>>> example to preset those registers out the scope of hardware interaction,
>>> regardless which controller is in use, or its state.
>>>
>>
>> York
>> This change(move to common ctrl_regs.c for reuse on DDR4/DDR3) is only
>> for A009942,
>> For other erratum workaround popping up later using the same register,
>> or other registers,
>> we still can implement them in fsl_ddr_gen4.c or in other according to
>> actual specific sequence requirement.
>> I will add reading value of debug_29 register for A009942 in
>> ctrl_regs.c in next version, which will be safe regardless how POR
>> changes.
>
> You added A009942 and A008378. I don't think this is the right way. You
> break the isolation between calculating the register values and hardware
> interface. If you follow this path, you will add more and more hardware
> interaction into ctrl_regs.c file. Until your change you don't have to
> worry about any hardware condition in this file.
>
Another thought, if you are concerned about reusing the code for
workaround, how about you put the common code into util.c, or even add
an errata.c file?
York
^ permalink raw reply
* [PATCH v9 7/7] KVM: x86: virtualize cpuid faulting
From: Kyle Huey @ 2016-11-08 17:58 UTC (permalink / raw)
To: David Matlack
Cc: Robert O'Callahan, Thomas Gleixner, Andy Lutomirski,
Ingo Molnar, H. Peter Anvin, x86, Paolo Bonzini,
Radim Krčmář, Jeff Dike, Richard Weinberger,
Alexander Viro, Shuah Khan, Dave Hansen, Borislav Petkov,
Peter Zijlstra, Boris Ostrovsky, Len Brown, Rafael J. Wysocki,
Dmitry Safonov, linux-kernel
In-Reply-To: <20161108175824.3532-1-khuey@kylehuey.com>
Hardware support for faulting on the cpuid instruction is not required to
emulate it, because cpuid triggers a VM exit anyways. KVM handles the relevant
MSRs (MSR_PLATFORM_INFO and MSR_MISC_FEATURES_ENABLE) and upon a
cpuid-induced VM exit checks the cpuid faulting state and the CPL.
kvm_require_cpl is even kind enough to inject the GP fault for us.
Signed-off-by: Kyle Huey <khuey@kylehuey.com>
---
arch/x86/include/asm/kvm_host.h | 2 ++
arch/x86/kvm/cpuid.c | 3 +++
arch/x86/kvm/x86.c | 26 ++++++++++++++++++++++++++
3 files changed, 31 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index bdde807..4111b6a 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -592,16 +592,18 @@ struct kvm_vcpu_arch {
u64 pat;
unsigned switch_db_regs;
unsigned long db[KVM_NR_DB_REGS];
unsigned long dr6;
unsigned long dr7;
unsigned long eff_db[KVM_NR_DB_REGS];
unsigned long guest_debug_dr7;
+ u64 msr_platform_info;
+ bool cpuid_fault;
u64 mcg_cap;
u64 mcg_status;
u64 mcg_ctl;
u64 mcg_ext_ctl;
u64 *mce_banks;
/* Cache MMIO info */
diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index afa7bbb..ed8436a 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -862,16 +862,19 @@ void kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
trace_kvm_cpuid(function, *eax, *ebx, *ecx, *edx);
}
EXPORT_SYMBOL_GPL(kvm_cpuid);
void kvm_emulate_cpuid(struct kvm_vcpu *vcpu)
{
u32 function, eax, ebx, ecx, edx;
+ if (vcpu->arch.cpuid_fault && !kvm_require_cpl(vcpu, 0))
+ return;
+
function = eax = kvm_register_read(vcpu, VCPU_REGS_RAX);
ecx = kvm_register_read(vcpu, VCPU_REGS_RCX);
kvm_cpuid(vcpu, &eax, &ebx, &ecx, &edx);
kvm_register_write(vcpu, VCPU_REGS_RAX, eax);
kvm_register_write(vcpu, VCPU_REGS_RBX, ebx);
kvm_register_write(vcpu, VCPU_REGS_RCX, ecx);
kvm_register_write(vcpu, VCPU_REGS_RDX, edx);
kvm_x86_ops->skip_emulated_instruction(vcpu);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 3017de0..d116103 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -986,16 +986,18 @@ static u32 emulated_msrs[] = {
MSR_IA32_TSC_ADJUST,
MSR_IA32_TSCDEADLINE,
MSR_IA32_MISC_ENABLE,
MSR_IA32_MCG_STATUS,
MSR_IA32_MCG_CTL,
MSR_IA32_MCG_EXT_CTL,
MSR_IA32_SMBASE,
+ MSR_PLATFORM_INFO,
+ MSR_MISC_FEATURES_ENABLES,
};
static unsigned num_emulated_msrs;
bool kvm_valid_efer(struct kvm_vcpu *vcpu, u64 efer)
{
if (efer & efer_reserved_bits)
return false;
@@ -2269,16 +2271,29 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
return 1;
vcpu->arch.osvw.length = data;
break;
case MSR_AMD64_OSVW_STATUS:
if (!guest_cpuid_has_osvw(vcpu))
return 1;
vcpu->arch.osvw.status = data;
break;
+ case MSR_PLATFORM_INFO:
+ if (!msr_info->host_initiated ||
+ data & ~PLATINFO_CPUID_FAULT ||
+ (!(data & PLATINFO_CPUID_FAULT) && vcpu->arch.cpuid_fault))
+ return 1;
+ vcpu->arch.msr_platform_info = data;
+ break;
+ case MSR_MISC_FEATURES_ENABLES:
+ if (data & ~CPUID_FAULT_ENABLE ||
+ !(vcpu->arch.msr_platform_info & PLATINFO_CPUID_FAULT))
+ return 1;
+ vcpu->arch.cpuid_fault = data & CPUID_FAULT_ENABLE;
+ break;
default:
if (msr && (msr == vcpu->kvm->arch.xen_hvm_config.msr))
return xen_hvm_config(vcpu, data);
if (kvm_pmu_is_valid_msr(vcpu, msr))
return kvm_pmu_set_msr(vcpu, msr_info);
if (!ignore_msrs) {
vcpu_unimpl(vcpu, "unhandled wrmsr: 0x%x data 0x%llx\n",
msr, data);
@@ -2483,16 +2498,24 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
return 1;
msr_info->data = vcpu->arch.osvw.length;
break;
case MSR_AMD64_OSVW_STATUS:
if (!guest_cpuid_has_osvw(vcpu))
return 1;
msr_info->data = vcpu->arch.osvw.status;
break;
+ case MSR_PLATFORM_INFO:
+ msr_info->data = vcpu->arch.msr_platform_info;
+ break;
+ case MSR_MISC_FEATURES_ENABLES:
+ msr_info->data = 0;
+ if (vcpu->arch.cpuid_fault)
+ msr_info->data |= CPUID_FAULT_ENABLE;
+ break;
default:
if (kvm_pmu_is_valid_msr(vcpu, msr_info->index))
return kvm_pmu_get_msr(vcpu, msr_info->index, &msr_info->data);
if (!ignore_msrs) {
vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr_info->index);
return 1;
} else {
vcpu_unimpl(vcpu, "ignored rdmsr: 0x%x\n", msr_info->index);
@@ -7508,16 +7531,19 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
kvm_clear_async_pf_completion_queue(vcpu);
kvm_async_pf_hash_reset(vcpu);
vcpu->arch.apf.halted = false;
if (!init_event) {
kvm_pmu_reset(vcpu);
vcpu->arch.smbase = 0x30000;
+
+ vcpu->arch.msr_platform_info = PLATINFO_CPUID_FAULT;
+ vcpu->arch.cpuid_fault = false;
}
memset(vcpu->arch.regs, 0, sizeof(vcpu->arch.regs));
vcpu->arch.regs_avail = ~0;
vcpu->arch.regs_dirty = ~0;
kvm_x86_ops->vcpu_reset(vcpu, init_event);
}
--
2.10.2
^ permalink raw reply related
* [PATCH v9 7/7] KVM: x86: virtualize cpuid faulting
From: Kyle Huey @ 2016-11-08 17:58 UTC (permalink / raw)
To: David Matlack
Cc: Robert O'Callahan, Thomas Gleixner, Andy Lutomirski,
Ingo Molnar, H. Peter Anvin, x86, Paolo Bonzini,
Radim Krčmář, Jeff Dike, Richard Weinberger,
Alexander Viro, Shuah Khan, Dave Hansen, Borislav Petkov,
Peter Zijlstra, Boris Ostrovsky, Len Brown, Rafael J. Wysocki,
Dmitry Safonov, linux-kernel, user-mode-linux-devel,
user-mode-linux-user, linux-fsdevel, linux-kselftest, kvm
In-Reply-To: <20161108175824.3532-1-khuey@kylehuey.com>
Hardware support for faulting on the cpuid instruction is not required to
emulate it, because cpuid triggers a VM exit anyways. KVM handles the relevant
MSRs (MSR_PLATFORM_INFO and MSR_MISC_FEATURES_ENABLE) and upon a
cpuid-induced VM exit checks the cpuid faulting state and the CPL.
kvm_require_cpl is even kind enough to inject the GP fault for us.
Signed-off-by: Kyle Huey <khuey@kylehuey.com>
---
arch/x86/include/asm/kvm_host.h | 2 ++
arch/x86/kvm/cpuid.c | 3 +++
arch/x86/kvm/x86.c | 26 ++++++++++++++++++++++++++
3 files changed, 31 insertions(+)
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index bdde807..4111b6a 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -592,16 +592,18 @@ struct kvm_vcpu_arch {
u64 pat;
unsigned switch_db_regs;
unsigned long db[KVM_NR_DB_REGS];
unsigned long dr6;
unsigned long dr7;
unsigned long eff_db[KVM_NR_DB_REGS];
unsigned long guest_debug_dr7;
+ u64 msr_platform_info;
+ bool cpuid_fault;
u64 mcg_cap;
u64 mcg_status;
u64 mcg_ctl;
u64 mcg_ext_ctl;
u64 *mce_banks;
/* Cache MMIO info */
diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index afa7bbb..ed8436a 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -862,16 +862,19 @@ void kvm_cpuid(struct kvm_vcpu *vcpu, u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
trace_kvm_cpuid(function, *eax, *ebx, *ecx, *edx);
}
EXPORT_SYMBOL_GPL(kvm_cpuid);
void kvm_emulate_cpuid(struct kvm_vcpu *vcpu)
{
u32 function, eax, ebx, ecx, edx;
+ if (vcpu->arch.cpuid_fault && !kvm_require_cpl(vcpu, 0))
+ return;
+
function = eax = kvm_register_read(vcpu, VCPU_REGS_RAX);
ecx = kvm_register_read(vcpu, VCPU_REGS_RCX);
kvm_cpuid(vcpu, &eax, &ebx, &ecx, &edx);
kvm_register_write(vcpu, VCPU_REGS_RAX, eax);
kvm_register_write(vcpu, VCPU_REGS_RBX, ebx);
kvm_register_write(vcpu, VCPU_REGS_RCX, ecx);
kvm_register_write(vcpu, VCPU_REGS_RDX, edx);
kvm_x86_ops->skip_emulated_instruction(vcpu);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 3017de0..d116103 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -986,16 +986,18 @@ static u32 emulated_msrs[] = {
MSR_IA32_TSC_ADJUST,
MSR_IA32_TSCDEADLINE,
MSR_IA32_MISC_ENABLE,
MSR_IA32_MCG_STATUS,
MSR_IA32_MCG_CTL,
MSR_IA32_MCG_EXT_CTL,
MSR_IA32_SMBASE,
+ MSR_PLATFORM_INFO,
+ MSR_MISC_FEATURES_ENABLES,
};
static unsigned num_emulated_msrs;
bool kvm_valid_efer(struct kvm_vcpu *vcpu, u64 efer)
{
if (efer & efer_reserved_bits)
return false;
@@ -2269,16 +2271,29 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
return 1;
vcpu->arch.osvw.length = data;
break;
case MSR_AMD64_OSVW_STATUS:
if (!guest_cpuid_has_osvw(vcpu))
return 1;
vcpu->arch.osvw.status = data;
break;
+ case MSR_PLATFORM_INFO:
+ if (!msr_info->host_initiated ||
+ data & ~PLATINFO_CPUID_FAULT ||
+ (!(data & PLATINFO_CPUID_FAULT) && vcpu->arch.cpuid_fault))
+ return 1;
+ vcpu->arch.msr_platform_info = data;
+ break;
+ case MSR_MISC_FEATURES_ENABLES:
+ if (data & ~CPUID_FAULT_ENABLE ||
+ !(vcpu->arch.msr_platform_info & PLATINFO_CPUID_FAULT))
+ return 1;
+ vcpu->arch.cpuid_fault = data & CPUID_FAULT_ENABLE;
+ break;
default:
if (msr && (msr == vcpu->kvm->arch.xen_hvm_config.msr))
return xen_hvm_config(vcpu, data);
if (kvm_pmu_is_valid_msr(vcpu, msr))
return kvm_pmu_set_msr(vcpu, msr_info);
if (!ignore_msrs) {
vcpu_unimpl(vcpu, "unhandled wrmsr: 0x%x data 0x%llx\n",
msr, data);
@@ -2483,16 +2498,24 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
return 1;
msr_info->data = vcpu->arch.osvw.length;
break;
case MSR_AMD64_OSVW_STATUS:
if (!guest_cpuid_has_osvw(vcpu))
return 1;
msr_info->data = vcpu->arch.osvw.status;
break;
+ case MSR_PLATFORM_INFO:
+ msr_info->data = vcpu->arch.msr_platform_info;
+ break;
+ case MSR_MISC_FEATURES_ENABLES:
+ msr_info->data = 0;
+ if (vcpu->arch.cpuid_fault)
+ msr_info->data |= CPUID_FAULT_ENABLE;
+ break;
default:
if (kvm_pmu_is_valid_msr(vcpu, msr_info->index))
return kvm_pmu_get_msr(vcpu, msr_info->index, &msr_info->data);
if (!ignore_msrs) {
vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr_info->index);
return 1;
} else {
vcpu_unimpl(vcpu, "ignored rdmsr: 0x%x\n", msr_info->index);
@@ -7508,16 +7531,19 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
kvm_clear_async_pf_completion_queue(vcpu);
kvm_async_pf_hash_reset(vcpu);
vcpu->arch.apf.halted = false;
if (!init_event) {
kvm_pmu_reset(vcpu);
vcpu->arch.smbase = 0x30000;
+
+ vcpu->arch.msr_platform_info = PLATINFO_CPUID_FAULT;
+ vcpu->arch.cpuid_fault = false;
}
memset(vcpu->arch.regs, 0, sizeof(vcpu->arch.regs));
vcpu->arch.regs_avail = ~0;
vcpu->arch.regs_dirty = ~0;
kvm_x86_ops->vcpu_reset(vcpu, init_event);
}
--
2.10.2
^ permalink raw reply related
* [PATCH v9 7/7] KVM: x86: virtualize cpuid faulting
From: Kyle Huey @ 2016-11-08 17:58 UTC (permalink / raw)
To: David Matlack
Cc: Robert O'Callahan, Thomas Gleixner, Andy Lutomirski,
Ingo Molnar, H. Peter Anvin, x86, Paolo Bonzini,
Radim Krčmář, Jeff Dike, Richard Weinberger,
Alexander Viro, Shuah Khan, Dave Hansen, Borislav Petkov,
Peter Zijlstra, Boris Ostrovsky, Len Brown, Rafael J. Wysocki,
Dmitry Safonov, linux-kernel
In-Reply-To: <CAP045ApKtyuWUtOpiLPnvKqwBBugm6tN+CzPLgEWgaqSx0+BeQ@mail.gmail.com>
e.g. like this
^ permalink raw reply
* [PATCH v9 7/7] KVM: x86: virtualize cpuid faulting
From: Kyle Huey @ 2016-11-08 17:58 UTC (permalink / raw)
To: David Matlack
Cc: Robert O'Callahan, Thomas Gleixner, Andy Lutomirski,
Ingo Molnar, H. Peter Anvin, x86, Paolo Bonzini,
Radim Krčmář, Jeff Dike, Richard Weinberger,
Alexander Viro, Shuah Khan, Dave Hansen, Borislav Petkov,
Peter Zijlstra, Boris Ostrovsky, Len Brown, Rafael J. Wysocki,
Dmitry Safonov, linux-kernel, user-mode-linux-devel,
user-mode-linux-user, linux-fsdevel, linux-kselftest, kvm
In-Reply-To: <CAP045ApKtyuWUtOpiLPnvKqwBBugm6tN+CzPLgEWgaqSx0+BeQ@mail.gmail.com>
e.g. like this
^ permalink raw reply
* [PATCH 2/2] remoteproc: qcom: Add clock init and enable support if needed.
From: Avaneesh Kumar Dwivedi @ 2016-11-08 17:58 UTC (permalink / raw)
To: bjorn.andersson; +Cc: linux-arm-msm, Avaneesh Kumar Dwivedi
In-Reply-To: <1478627881-20073-1-git-send-email-akdwived@codeaurora.org>
To bring venus firmware module standalone on msm8996, it need
certain multimedia clocks to be enabled. Adding support for
initialization and enable disable of such clocks.
Signed-off-by: Avaneesh Kumar Dwivedi <akdwived@codeaurora.org>
---
drivers/remoteproc/qcom_venus_pil.c | 72 +++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/drivers/remoteproc/qcom_venus_pil.c b/drivers/remoteproc/qcom_venus_pil.c
index 5b4ea10..1a41a23 100644
--- a/drivers/remoteproc/qcom_venus_pil.c
+++ b/drivers/remoteproc/qcom_venus_pil.c
@@ -19,6 +19,7 @@
#include <linux/module.h>
#include <linux/of_reserved_mem.h>
#include <linux/platform_device.h>
+#include <linux/clk.h>
#include <linux/qcom_scm.h>
#include <linux/remoteproc.h>
#include <linux/of_device.h>
@@ -86,11 +87,47 @@ static int venus_load(struct rproc *rproc, const struct firmware *fw)
.load = venus_load,
};
+static int qcom_venus_clk_enable(struct qcom_venus *venus)
+{
+ int i, ret;
+
+ if (!venus->venus_clks)
+ return 0;
+
+ for (i = 0; i < venus->venus_rproc_res->venus_clk_cnt; i++) {
+ ret = clk_prepare_enable(venus->venus_clks[i]);
+ if (ret) {
+ for (; i > 0; i--) {
+ clk_disable_unprepare(venus->venus_clks[i]);
+ return ret;
+ }
+ }
+ }
+ return 0;
+}
+
+static void qcom_venus_clk_disable(struct qcom_venus *venus)
+{
+ int i;
+
+ if (!venus->venus_clks)
+ return;
+
+ for (i = venus->venus_rproc_res->venus_clk_cnt-1; i >= 0; i--)
+ clk_disable_unprepare(venus->venus_clks[i]);
+}
+
static int venus_start(struct rproc *rproc)
{
struct qcom_venus *venus = rproc->priv;
int ret;
+ ret = qcom_venus_clk_enable(venus);
+ if (ret) {
+ dev_err(venus->dev, "failed to enable venus_clk\n");
+ return ret;
+ }
+
ret = qcom_scm_pas_auth_and_reset(VENUS_PAS_ID);
if (ret)
dev_err(venus->dev,
@@ -109,6 +146,8 @@ static int venus_stop(struct rproc *rproc)
if (ret)
dev_err(venus->dev, "failed to shutdown: %d\n", ret);
+ qcom_venus_clk_disable(venus);
+
return ret;
}
@@ -131,6 +170,34 @@ static void *venus_da_to_va(struct rproc *rproc, u64 da, int len)
.da_to_va = venus_da_to_va,
};
+static int qcom_venus_init_clocks(struct qcom_venus *venus)
+{
+ struct clk **clk_arr;
+ int i;
+
+ if (venus->venus_rproc_res->venus_clk_cnt) {
+ clk_arr = devm_kzalloc(venus->dev,
+ sizeof(clk_arr) * venus->venus_rproc_res->venus_clk_cnt,
+ GFP_KERNEL);
+
+ for (i = 0; i < venus->venus_rproc_res->venus_clk_cnt; i++) {
+ clk_arr[i] = devm_clk_get(venus->dev,
+ venus->venus_rproc_res->venus_clks[i]);
+
+ if (IS_ERR(clk_arr[i])) {
+ dev_err(venus->dev, "failed to get %s clock\n",
+ venus->venus_rproc_res->venus_clks[i]);
+ return PTR_ERR(clk_arr[i]);
+ }
+ clk_set_rate(clk_arr[i], clk_round_rate(clk_arr[i],
+ venus->venus_rproc_res->venus_clk_rate[i]));
+ }
+ venus->venus_clks = clk_arr;
+ }
+ venus->venus_clks = NULL;
+ return 0;
+}
+
static int venus_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -172,6 +239,11 @@ static int venus_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, venus);
venus->venus_rproc_res = desc;
+
+ ret = qcom_venus_init_clocks(venus);
+ if (ret)
+ goto free_rproc;
+
venus->mem_va = dma_alloc_coherent(dev, venus->mem_size,
&venus->mem_phys, GFP_KERNEL);
if (!venus->mem_va) {
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* [PATCH 1/2] remoteproc: qcom: Private data support for venus rproc driver.
From: Avaneesh Kumar Dwivedi @ 2016-11-08 17:58 UTC (permalink / raw)
To: bjorn.andersson; +Cc: linux-arm-msm, Avaneesh Kumar Dwivedi
In-Reply-To: <1478627881-20073-1-git-send-email-akdwived@codeaurora.org>
venus remoteproc driver being able to boot standalone venus firmware,
need to initialize and enable clock resource. So providing private data
binding to device structure so that each new venus remoteproc driver
can manage its own clock.
Signed-off-by: Avaneesh Kumar Dwivedi <akdwived@codeaurora.org>
---
.../devicetree/bindings/remoteproc/qcom,venus.txt | 3 ++-
drivers/remoteproc/qcom_venus_pil.c | 31 +++++++++++++++++++++-
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,venus.txt b/Documentation/devicetree/bindings/remoteproc/qcom,venus.txt
index 2d73ba1..9d7865e 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,venus.txt
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,venus.txt
@@ -6,7 +6,8 @@ on the Qualcomm Venus remote processor core.
- compatible:
Usage: required
Value type: <string>
- Definition: must contain "qcom,venus-pil"
+ Definition: must contain "qcom,venus-pil" or
+ "qcom,venus-8996-pil"
- memory-region:
Usage: required
diff --git a/drivers/remoteproc/qcom_venus_pil.c b/drivers/remoteproc/qcom_venus_pil.c
index 6d4e55b..5b4ea10 100644
--- a/drivers/remoteproc/qcom_venus_pil.c
+++ b/drivers/remoteproc/qcom_venus_pil.c
@@ -21,6 +21,7 @@
#include <linux/platform_device.h>
#include <linux/qcom_scm.h>
#include <linux/remoteproc.h>
+#include <linux/of_device.h>
#include "qcom_mdt_loader.h"
#include "remoteproc_internal.h"
@@ -30,6 +31,11 @@
#define VENUS_PAS_ID 9
#define VENUS_FW_MEM_SIZE SZ_8M
+struct qcom_venus_rproc_res {
+ char **venus_clks;
+ int venus_clk_cnt;
+ int *venus_clk_rate;
+};
struct qcom_venus {
struct device *dev;
struct rproc *rproc;
@@ -37,6 +43,8 @@ struct qcom_venus {
phys_addr_t mem_phys;
void *mem_va;
size_t mem_size;
+ const struct qcom_venus_rproc_res *venus_rproc_res;
+ struct clk **venus_clks;
};
static int venus_load(struct rproc *rproc, const struct firmware *fw)
@@ -128,8 +136,13 @@ static int venus_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct qcom_venus *venus;
struct rproc *rproc;
+ const struct qcom_venus_rproc_res *desc;
int ret;
+ desc = of_device_get_match_data(&pdev->dev);
+ if (!desc)
+ return -EINVAL;
+
if (!qcom_scm_is_available())
return -EPROBE_DEFER;
@@ -158,6 +171,7 @@ static int venus_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, venus);
+ venus->venus_rproc_res = desc;
venus->mem_va = dma_alloc_coherent(dev, venus->mem_size,
&venus->mem_phys, GFP_KERNEL);
if (!venus->mem_va) {
@@ -194,8 +208,23 @@ static int venus_remove(struct platform_device *pdev)
return 0;
}
+char *venus_clk_str[] = {"core_clk", "iface_clk", "bus_clk", "maxi_clk"};
+int venus_clk_rate[] = {19200000, 19200000, 19200000, 80000000};
+static const struct qcom_venus_rproc_res venus_8996_res = {
+ .venus_clks = venus_clk_str,
+ .venus_clk_cnt = 4,
+ .venus_clk_rate = venus_clk_rate,
+};
+
+static const struct qcom_venus_rproc_res venus_8916_res = {
+ .venus_clks = NULL,
+ .venus_clk_cnt = 0,
+ .venus_clk_rate = NULL,
+};
+
static const struct of_device_id venus_of_match[] = {
- { .compatible = "qcom,venus-pil" },
+ { .compatible = "qcom,venus-8996-pil", .data = &venus_8996_res },
+ { .compatible = "qcom,venus-pil", .data = &venus_8916_res},
{ },
};
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply related
* Re: [PATCH] gpio: tegra186: Add support for T186 GPIO
From: Thierry Reding @ 2016-11-08 17:58 UTC (permalink / raw)
To: Stephen Warren
Cc: Olof Johansson, Linus Walleij, Suresh Mangipudi, Laxman Dewangan,
Alexandre Courbot, linux-kernel@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-tegra@vger.kernel.org
In-Reply-To: <08947785-2e7f-0117-2392-b6b1a774bbb8@wwwdotorg.org>
[-- Attachment #1: Type: text/plain, Size: 3925 bytes --]
On Tue, Nov 08, 2016 at 09:49:27AM -0700, Stephen Warren wrote:
> On 11/08/2016 08:55 AM, Thierry Reding wrote:
> > On Mon, Nov 07, 2016 at 05:42:33PM -0800, Olof Johansson wrote:
> > > On Mon, Nov 7, 2016 at 5:21 AM, Thierry Reding <thierry.reding@gmail.com> wrote:
> > > > On Mon, Nov 07, 2016 at 08:53:37AM +0100, Linus Walleij wrote:
> > > > > On Wed, Nov 2, 2016 at 11:48 AM, Suresh Mangipudi <smangipudi@nvidia.com> wrote:
> > > > >
> > > > > > Add GPIO driver for T186 based platforms.
> > > > > > Adds support for MAIN and AON GPIO's from T186.
> > > > > >
> > > > > > Signed-off-by: Suresh Mangipudi <smangipudi@nvidia.com>
> > > > >
> > > > > Stephen/Thierry/Alexandre:
> > > > > Can I get your review on this Tegra thing?
> > > >
> > > > Can we hold off on this for a bit? I've got my own implementation of
> > > > this in my Tegra186 tree because I thought nobody else was working on
> > > > it. From a brief look they seem mostly similar but there are a couple
> > > > of differences that I need to take a closer look at (and do some more
> > > > intensive testing on).
> > >
> > > Be careful about discouraging other developers internally from
> > > participating upstream, Thierry.
> >
> > That was certainly not my intention. I do welcome any contributions,
> > internal or external.
> >
> > > Please don't become a bottleneck for your company's contributions.
> > > Rewriting stuff on your own isn't a scalable model.
> >
> > Like I said, I didn't rewrite this, I merely wrote the GPIO driver
> > because there wasn't one at the time and I wasn't aware of anyone else
> > working on one. Waiting for a GPIO driver to emerge would've prevented
> > me from making progress on other fronts.
>
> One issue here is that there are lots of patches destined for upstream in
> your own personal tree, but they aren't actually upstream yet. I think
> pushing more of your work into linux-next (and further upstream) faster
> would help people out. linux-next and other "standard" repos should be
> easily discoverable by anyway following any upstreaming HOWTOs, but those
> HOWTOs aren't going to mention your personal trees, so patches there
> effectively don't exist. Making the already extant work more discoverable
> will help prevent people duplicating work.
I had assumed that I had properly communicated what the canonical
temporary location for Tegra186 patches would be, but you're right that
it's probably easy to miss, and linux-next would be a more obvious
target.
> Related to this, I've been waiting rather a while for the Tegra186 DT
> binding patches I sent to be applied. I'd love to see them go in ASAP even
> if there's no kernel driver behind them. The bindings have been reviewed,
> ack'd, and they're in use in U-Boot already.
It's true, I've been promising this for weeks now. I'll get around to it
within the week. Please do prod me in case I don't. I promise I won't
get mad =)
> A thought on Tegra186: For a older supported SoCs, we obviously don't want
> to push changes upstream that aren't too well baked. However, for a new SoC
> that doesn't work yet, I'm tend to prioritize getting as much early work
> upstream as fast as possible (to try and unblock people working in other
> areas) over getting those patches perfect first. Release early, release
> often will help unblock people and parallelize work. Pipeline your own work
> rather than batching it all up to release at once.
I'm always hesitant to merge code that isn't functional or tested, but
perhaps I'm being a little overzealous here, and I'm evidently not doing
so great, so let me try to be more aggressive.
> P.S. don't take this email too personally or anything; I'm not trying to be
> complaining/critical or anything like that. It's just a few mild thoughts.
No offense taken, thanks for being constructive about it.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* [PATCH 0/2] remoteproc: qcom: Venus firmware loader support for msm8996
From: Avaneesh Kumar Dwivedi @ 2016-11-08 17:57 UTC (permalink / raw)
To: bjorn.andersson; +Cc: linux-arm-msm, Avaneesh Kumar Dwivedi
This Patch Series is based on https://patchwork.kernel.org/patch/9415585/
This patch series add necessary routine and data structure to support standalone
venus firmware load on msm8996.
patch 1- It bind a private data structure to device structure so that there are minimal code
changes as new version of venus driver is supported.
patch 2- It provide clock initialization and enable/disable functionality.
below is console log on msm8996 platform with above change, this is standalone test log
without video driver enablement.
[ 2.612011] remoteproc0: soc:vidc_tzpil@0 is available
[ 2.616939] remoteproc0: Note: remoteproc is still under development and considered experimental.
[ 2.621963] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 2.631037] qcom-tz-pil soc:vidc_tzpil@0: Venus rproc probe done
[ 2.641463] remoteproc0: powering up soc:vidc_tzpil@0
[ 2.641468] remoteproc0: Booting fw image venus.mdt, size 6812
[ 2.698127] remoteproc0: remote processor soc:vidc_tzpil@0 is now up
Avaneesh Kumar Dwivedi (2):
remoteproc: qcom: Private data support for venus rproc driver.
remoteproc: qcom: Add clock init and enable support if needed.
.../devicetree/bindings/remoteproc/qcom,venus.txt | 3 +-
drivers/remoteproc/qcom_venus_pil.c | 103 ++++++++++++++++++++-
2 files changed, 104 insertions(+), 2 deletions(-)
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.